From 5fcba87c7217d9818a24f30d0ef352f475cfe876 Mon Sep 17 00:00:00 2001 From: TheSlize Date: Wed, 7 Feb 2024 21:57:28 +0300 Subject: [PATCH 1/3] Conveyor update --- .../api/hbm/block/IBlockSideRotation.java | 9 + .../java/api/hbm/block/IConveyorBelt.java | 13 + .../java/api/hbm/block/IConveyorItem.java | 8 + .../java/api/hbm/block/IEnterableBlock.java | 9 + src/main/java/api/hbm/block/IToolable.java | 1 + src/main/java/com/hbm/blocks/BlockBase.java | 8 +- src/main/java/com/hbm/blocks/ModBlocks.java | 170 +- .../com/hbm/blocks/bomb/NukeBalefire.java | 6 +- .../java/com/hbm/blocks/bomb/NukeBoy.java | 10 +- .../java/com/hbm/blocks/bomb/NukeCustom.java | 4 +- .../java/com/hbm/blocks/bomb/NukeFleija.java | 6 +- .../java/com/hbm/blocks/bomb/NukeGadget.java | 10 +- .../java/com/hbm/blocks/bomb/NukeMan.java | 10 +- .../java/com/hbm/blocks/bomb/NukeMike.java | 10 +- src/main/java/com/hbm/blocks/bomb/NukeN2.java | 8 +- .../java/com/hbm/blocks/bomb/NukeN45.java | 4 +- .../com/hbm/blocks/bomb/NukePrototype.java | 6 +- .../com/hbm/blocks/bomb/NukeSolinium.java | 10 +- .../java/com/hbm/blocks/bomb/NukeTsar.java | 10 +- .../com/hbm/blocks/bomb/RailgunPlasma.java | 3 +- .../hbm/blocks/generic/BlockBedrockOreTE.java | 16 +- .../hbm/blocks/generic/BlockControlPanel.java | 86 +- .../com/hbm/blocks/generic/BlockDepth.java | 12 +- .../hbm/blocks/generic/BlockDoorGeneric.java | 8 +- .../hbm/blocks/generic/BlockGenericSlab.java | 6 +- .../blocks/generic/BlockGenericStairs.java | 6 +- .../com/hbm/blocks/generic/BlockNTMGlass.java | 10 +- .../hbm/blocks/generic/BlockNetherCoal.java | 4 +- .../java/com/hbm/blocks/generic/BlockOre.java | 283 + .../com/hbm/blocks/generic/BlockOutgas.java | 11 +- .../hbm/blocks/generic/BlockRadResistant.java | 11 +- .../blocks/generic/BlockRotatablePillar.java | 4 +- .../BlockStorageCrateRadResistant.java | 6 +- .../com/hbm/blocks/machine/BlastDoor.java | 8 +- .../blocks/machine/BlockSlidingBlastDoor.java | 12 +- .../blocks/machine/DummyBlockFluidTank.java | 5 +- .../hbm/blocks/machine/MachineFluidTank.java | 2 +- .../blocks/machine/MachineFrackingTower.java | 1 + .../com/hbm/blocks/machine/VaultDoor.java | 8 +- .../com/hbm/blocks/network/BlockConveyor.java | 117 +- .../blocks/network/BlockConveyorDouble.java | 38 + .../blocks/network/BlockConveyorExpress.java | 17 + .../hbm/blocks/network/BlockCraneBase.java | 173 + .../hbm/blocks/network/BlockFluidDuct.java | 3 +- .../hbm/blocks/network/BlockFluidPipeMk2.java | 5 +- .../blocks/network/BlockFluidPipeSolid.java | 5 +- .../BlockFluidPipeSolidRadResistant.java | 6 +- .../hbm/blocks/network/CraneExtractor.java | 39 + .../com/hbm/blocks/network/CraneInserter.java | 143 + .../com/hbm/config/BedrockOreJsonConfig.java | 20 +- .../java/com/hbm/config/MachineConfig.java | 3 - .../item/EntityMovingConveyorObject.java | 176 + .../com/hbm/entity/item/EntityMovingItem.java | 102 +- .../com/hbm/entity/mob/EntityRADBeast.java | 46 +- .../java/com/hbm/handler/ArmorModHandler.java | 2 - src/main/java/com/hbm/handler/ArmorUtil.java | 6 +- src/main/java/com/hbm/handler/GuiHandler.java | 12 + .../com/hbm/handler/MultiblockHandler.java | 13 +- .../jei/AlloyFurnaceRecipeHandler.java | 3 +- .../hbm/handler/jei/AnvilRecipeHandler.java | 17 +- .../handler/jei/AssemblerRecipeHandler.java | 3 +- .../hbm/handler/jei/BoilerRecipeHandler.java | 3 +- .../hbm/handler/jei/BookRecipeHandler.java | 3 +- .../handler/jei/CMBFurnaceRecipeHandler.java | 3 +- .../handler/jei/CentrifugeRecipeHandler.java | 3 +- .../handler/jei/ChemplantRecipeHandler.java | 3 +- .../handler/jei/CrackingRecipeHandler.java | 3 +- .../jei/CrystallizerRecipeHandler.java | 3 +- .../handler/jei/CyclotronRecipeHandler.java | 3 +- .../com/hbm/handler/jei/DFCRecipeHandler.java | 3 +- .../hbm/handler/jei/FluidRecipeHandler.java | 3 +- .../handler/jei/FractioningRecipeHandler.java | 3 +- .../hbm/handler/jei/FusionRecipeHandler.java | 3 +- .../jei/GasCentrifugeRecipeHandler.java | 3 +- .../hbm/handler/jei/HadronRecipeHandler.java | 3 +- .../hbm/handler/jei/MixerRecipeHandler.java | 3 +- .../hbm/handler/jei/PressRecipeHandler.java | 3 +- .../jei/RBMKOutgasserRecipeHandler.java | 3 +- .../hbm/handler/jei/ReactorRecipeHandler.java | 3 +- .../handler/jei/RefineryRecipeHandler.java | 3 +- .../hbm/handler/jei/SAFERecipeHandler.java | 3 +- .../jei/SILEXDigammaRecipeHandler.java | 3 +- .../handler/jei/SILEXGammaRecipeHandler.java | 3 +- .../hbm/handler/jei/SILEXIrRecipeHandler.java | 3 +- .../handler/jei/SILEXMicroRecipeHandler.java | 3 +- .../handler/jei/SILEXRadioRecipeHandler.java | 3 +- .../hbm/handler/jei/SILEXRecipeHandler.java | 2 +- .../hbm/handler/jei/SILEXUVRecipeHandler.java | 3 +- .../jei/SILEXVisibleRecipeHandler.java | 3 +- .../handler/jei/SILEXXRayRecipeHandler.java | 3 +- .../handler/jei/ShredderRecipeHandler.java | 3 +- .../handler/jei/SmithingRecipeHandler.java | 5 +- .../handler/jei/StorageDrumRecipeHandler.java | 3 +- .../jei/TransmutationRecipeHandler.java | 3 +- .../handler/jei/WasteDrumRecipeHandler.java | 3 +- .../com/hbm/hazard/type/HazardTypeBase.java | 2 +- .../hbm/hazard/type/HazardTypeRadiation.java | 5 +- .../com/hbm/inventory/AssemblerRecipes.java | 2 +- .../com/hbm/inventory/BedrockOreRegistry.java | 17 +- .../java/com/hbm/inventory/DFCRecipes.java | 1 + .../java/com/hbm/inventory/SlotPattern.java | 39 + .../container/ContainerCraneExtractor.java | 123 + .../container/ContainerCraneInserter.java | 73 + .../control_panel/ContainerControlEdit.java | 6 +- .../hbm/inventory/control_panel/Control.java | 83 +- .../inventory/control_panel/ControlEvent.java | 7 +- .../control_panel/ControlEventSystem.java | 4 +- .../inventory/control_panel/ControlPanel.java | 96 +- .../control_panel/ControlRegistry.java | 38 +- .../control_panel/DataValueFloat.java | 6 +- .../control_panel/GuiControlEdit.java | 28 +- .../control_panel/IControllable.java | 13 +- .../control_panel/NodeConnection.java | 33 +- .../inventory/control_panel/NodeElement.java | 10 +- .../inventory/control_panel/NodeSystem.java | 123 +- .../hbm/inventory/control_panel/NodeType.java | 4 +- .../control_panel/SubElementEventEditor.java | 93 +- .../control_panel/SubElementItemChoice.java | 87 +- .../control_panel/SubElementLinker.java | 82 +- .../control_panel/SubElementNodeEditor.java | 120 +- .../control_panel/SubElementPlacement.java | 257 +- .../control_panel/controls/Button.java | 99 + .../inventory/control_panel/nodes/Node.java | 56 +- .../nodes/NodeEventBroadcast.java | 1 - .../control_panel/nodes/NodeGetVar.java | 7 - .../control_panel/nodes/NodeInput.java | 7 +- .../control_panel/nodes/NodeMath.java | 136 +- .../control_panel/nodes/NodeSetVar.java | 10 - .../hbm/inventory/gui/GUICraneExtractor.java | 94 + .../hbm/inventory/gui/GUICraneInserter.java | 44 + .../inventory/gui/GUIMachineUUCreator.java | 4 +- .../com/hbm/inventory/gui/GUINukeCustom.java | 14 +- src/main/java/com/hbm/items/ModItems.java | 11 +- .../com/hbm/items/armor/ItemModGasmask.java | 2 +- .../items/machine/ItemAssemblyTemplate.java | 8 +- .../com/hbm/items/machine/ItemBattery.java | 10 +- .../com/hbm/items/machine/ItemDrillbit.java | 12 +- .../hbm/items/machine/ItemFFFluidDuct.java | 3 +- .../com/hbm/items/machine/ItemFluidTank.java | 2 +- .../machine/ItemForgeFluidIdentifier.java | 2 +- .../com/hbm/items/machine/ItemFuelRod.java | 13 +- .../java/com/hbm/items/machine/ItemLens.java | 10 +- .../hbm/items/machine/ItemMachineUpgrade.java | 241 +- .../com/hbm/items/machine/ItemRBMKRod.java | 18 +- .../com/hbm/items/machine/ItemSatChip.java | 3 +- .../java/com/hbm/items/machine/ItemStamp.java | 3 +- .../hbm/items/machine/ItemTemplateFolder.java | 9 +- .../hbm/items/machine/ItemTurretBiometry.java | 4 +- .../com/hbm/items/special/ItemBedrockOre.java | 8 +- .../com/hbm/items/tool/ItemBombCaller.java | 22 +- .../com/hbm/items/tool/ItemCrateCaller.java | 5 +- .../com/hbm/items/tool/ItemDesignator.java | 8 +- .../hbm/items/tool/ItemDesignatorManual.java | 6 +- .../hbm/items/tool/ItemDesignatorRange.java | 8 +- .../com/hbm/items/tool/ItemDetonator.java | 12 +- .../com/hbm/items/tool/ItemFluidCanister.java | 2 +- .../com/hbm/items/tool/ItemSwordAbility.java | 3 +- .../com/hbm/items/tool/ItemToolAbility.java | 21 +- .../java/com/hbm/items/tool/ItemWand.java | 4 +- .../java/com/hbm/items/tool/ItemWandS.java | 3 +- .../java/com/hbm/items/weapon/ItemAmmo.java | 641 +- .../com/hbm/items/weapon/ItemGrenade.java | 19 +- .../com/hbm/items/weapon/ItemMissile.java | 93 +- .../java/com/hbm/main/CraftingManager.java | 27 + src/main/java/com/hbm/main/MainRegistry.java | 4 + .../java/com/hbm/main/ModEventHandler.java | 17 +- .../java/com/hbm/main/ResourceManager.java | 53 +- .../com/hbm/modules/ItemHazardModule.java | 25 +- .../com/hbm/modules/ModulePatternMatcher.java | 152 + .../hbm/packet/ControlPanelUpdatePacket.java | 15 +- .../java/com/hbm/packet/PacketDispatcher.java | 2 - .../hbm/render/item/ItemRenderLibrary.java | 22 +- .../render/tileentity/RenderControlPanel.java | 146 +- .../hbm/tileentity/TileEntityDoorGeneric.java | 19 +- .../hbm/tileentity/TileEntityMachineBase.java | 20 +- .../machine/TileEntityControlPanel.java | 251 +- .../tileentity/machine/TileEntityDummy.java | 3 +- .../machine/TileEntityMachineAssembler.java | 1 + .../TileEntityMachineBoilerElectric.java | 2 +- .../machine/TileEntityMachineFluidTank.java | 71 +- .../machine/rbmk/TileEntityRBMKBase.java | 57 +- .../machine/rbmk/TileEntityRBMKBoiler.java | 19 +- .../machine/rbmk/TileEntityRBMKConsole.java | 46 +- .../machine/rbmk/TileEntityRBMKControl.java | 21 - .../rbmk/TileEntityRBMKControlAuto.java | 8 - .../rbmk/TileEntityRBMKControlManual.java | 48 - .../machine/rbmk/TileEntityRBMKCooler.java | 18 - .../rbmk/TileEntityRBMKCraneConsole.java | 112 +- .../machine/rbmk/TileEntityRBMKHeater.java | 21 - .../machine/rbmk/TileEntityRBMKOutgasser.java | 20 - .../machine/rbmk/TileEntityRBMKRod.java | 28 - .../machine/rbmk/TileEntityRBMKStorage.java | 7 - .../network/TileEntityCraneBase.java | 145 + .../network/TileEntityCraneExtractor.java | 317 + .../network/TileEntityCraneInserter.java | 223 + .../hbm/blockstates/control_panel0.json | 8 + .../assets/hbm/blockstates/conveyor.json | 2 +- .../hbm/blockstates/conveyor_double.json | 16 + .../hbm/blockstates/conveyor_express.json | 16 + .../assets/hbm/blockstates/crane_ejector.json | 14 + .../hbm/blockstates/crane_inserter.json | 14 + src/main/resources/assets/hbm/lang/en_us.lang | 466 +- src/main/resources/assets/hbm/lang/ko_kr.lang | 8186 +++++++---------- src/main/resources/assets/hbm/lang/ru_ru.lang | 3387 ++++--- src/main/resources/assets/hbm/lang/zh_cn.lang | 954 +- .../hbm/models/block/control_panel0.json | 6 + .../assets/hbm/models/block/conveyor.mtl | 6 + .../assets/hbm/models/block/conveyor.obj | 50 + .../hbm/models/block/conveyor_express.mtl | 6 + .../hbm/models/block/conveyor_express.obj | 50 + .../hbm/models/block/crane_ejector.json | 12 + .../hbm/models/block/crane_inserter.json | 12 + .../hbm/models/item/control_panel0.json | 3 + .../assets/hbm/models/item/conveyor.json | 3 + .../hbm/models/item/conveyor_express.json | 3 + .../assets/hbm/models/item/crane_ejector.json | 3 + .../hbm/models/item/crane_inserter.json | 3 + .../hbm/models/item/piston_electro.json | 6 + .../hbm/models/item/piston_hydraulic.json | 6 + .../hbm/models/item/piston_pneumatic.json | 6 + .../hbm/models/item/upgrade_ejector_1.json | 6 + .../hbm/models/item/upgrade_ejector_2.json | 6 + .../hbm/models/item/upgrade_ejector_3.json | 6 + .../hbm/models/item/upgrade_stack_1.json | 6 + .../hbm/models/item/upgrade_stack_2.json | 6 + .../hbm/models/item/upgrade_stack_3.json | 6 + ...1\203\320\274\320\265\320\275\321\202.txt" | 0 .../assets/hbm/textures/blocks/conveyor.png | Bin 263 -> 364 bytes .../hbm/textures/blocks/conveyor.png.mcmeta | 4 +- .../hbm/textures/blocks/conveyor_express.png | Bin 0 -> 921 bytes .../blocks/conveyor_express.png.mcmeta | 5 + .../hbm/textures/blocks/conveyor_side.png | Bin 0 -> 242 bytes .../textures/blocks/conveyor_side.png.mcmeta | 5 + .../assets/hbm/textures/blocks/crane_in.png | Bin 0 -> 252 bytes .../textures/blocks/crane_in_side_down.png | Bin 0 -> 421 bytes .../blocks/crane_in_side_down_turn_left.png | Bin 0 -> 496 bytes .../blocks/crane_in_side_down_turn_right.png | Bin 0 -> 524 bytes .../blocks/crane_in_side_left_turn_down.png | Bin 0 -> 524 bytes .../blocks/crane_in_side_left_turn_up.png | Bin 0 -> 490 bytes .../blocks/crane_in_side_right_turn_down.png | Bin 0 -> 530 bytes .../blocks/crane_in_side_right_turn_up.png | Bin 0 -> 508 bytes .../blocks/crane_in_side_turn_left.png | Bin 0 -> 517 bytes .../blocks/crane_in_side_turn_right.png | Bin 0 -> 515 bytes .../hbm/textures/blocks/crane_in_side_up.png | Bin 0 -> 419 bytes .../blocks/crane_in_side_up_turn_left.png | Bin 0 -> 507 bytes .../blocks/crane_in_side_up_turn_right.png | Bin 0 -> 526 bytes .../hbm/textures/blocks/crane_in_top.png | Bin 0 -> 425 bytes .../hbm/textures/blocks/crane_in_top_left.png | Bin 0 -> 776 bytes .../textures/blocks/crane_in_top_right.png | Bin 0 -> 772 bytes .../assets/hbm/textures/blocks/crane_out.png | Bin 0 -> 305 bytes .../textures/blocks/crane_out_side_down.png | Bin 0 -> 415 bytes .../blocks/crane_out_side_down_turn_left.png | Bin 0 -> 513 bytes .../blocks/crane_out_side_down_turn_right.png | Bin 0 -> 519 bytes .../blocks/crane_out_side_left_turn_down.png | Bin 0 -> 519 bytes .../blocks/crane_out_side_left_turn_up.png | Bin 0 -> 500 bytes .../blocks/crane_out_side_right_turn_down.png | Bin 0 -> 515 bytes .../blocks/crane_out_side_right_turn_up.png | Bin 0 -> 502 bytes .../blocks/crane_out_side_turn_left.png | Bin 0 -> 519 bytes .../blocks/crane_out_side_turn_right.png | Bin 0 -> 515 bytes .../hbm/textures/blocks/crane_out_side_up.png | Bin 0 -> 412 bytes .../blocks/crane_out_side_up_turn_left.png | Bin 0 -> 500 bytes .../blocks/crane_out_side_up_turn_right.png | Bin 0 -> 525 bytes .../hbm/textures/blocks/crane_out_top.png | Bin 0 -> 420 bytes .../textures/blocks/difurnace_front_on.png | Bin 682 -> 2580 bytes .../blocks/difurnace_front_on.png.mcmeta | 5 + .../gui/control_panel/gui_control.png | Bin 0 -> 1756 bytes .../control_panel/gui_control_add_element.png | Bin 0 -> 1898 bytes .../gui/control_panel/gui_control_grid.png | Bin 0 -> 1811 bytes .../gui/control_panel/placement_grid.png | Bin 253 -> 1230 bytes .../gui/storage/gui_crane_ejector.png | Bin 0 -> 2756 bytes .../gui/storage/gui_crane_inserter.png | Bin 0 -> 1236 bytes .../hbm/textures/items/piston_electro.png | Bin 0 -> 370 bytes .../hbm/textures/items/piston_hydraulic.png | Bin 0 -> 380 bytes .../hbm/textures/items/piston_pneumatic.png | Bin 0 -> 375 bytes .../hbm/textures/items/upgrade_ejector_1.png | Bin 0 -> 403 bytes .../hbm/textures/items/upgrade_ejector_2.png | Bin 0 -> 409 bytes .../hbm/textures/items/upgrade_ejector_3.png | Bin 0 -> 373 bytes .../hbm/textures/items/upgrade_stack_1.png | Bin 0 -> 407 bytes .../hbm/textures/items/upgrade_stack_2.png | Bin 0 -> 405 bytes .../hbm/textures/items/upgrade_stack_3.png | Bin 0 -> 391 bytes .../textures/models/control_panel/button0.png | Bin 0 -> 1066 bytes .../models/control_panel/control0.png | Bin 0 -> 3990 bytes 282 files changed, 10588 insertions(+), 9521 deletions(-) create mode 100644 src/main/java/api/hbm/block/IBlockSideRotation.java create mode 100644 src/main/java/api/hbm/block/IConveyorBelt.java create mode 100644 src/main/java/api/hbm/block/IConveyorItem.java create mode 100644 src/main/java/api/hbm/block/IEnterableBlock.java create mode 100644 src/main/java/com/hbm/blocks/generic/BlockOre.java create mode 100644 src/main/java/com/hbm/blocks/network/BlockConveyorDouble.java create mode 100644 src/main/java/com/hbm/blocks/network/BlockConveyorExpress.java create mode 100644 src/main/java/com/hbm/blocks/network/BlockCraneBase.java create mode 100644 src/main/java/com/hbm/blocks/network/CraneExtractor.java create mode 100644 src/main/java/com/hbm/blocks/network/CraneInserter.java create mode 100644 src/main/java/com/hbm/entity/item/EntityMovingConveyorObject.java create mode 100644 src/main/java/com/hbm/inventory/SlotPattern.java create mode 100644 src/main/java/com/hbm/inventory/container/ContainerCraneExtractor.java create mode 100644 src/main/java/com/hbm/inventory/container/ContainerCraneInserter.java create mode 100644 src/main/java/com/hbm/inventory/control_panel/controls/Button.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUICraneExtractor.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUICraneInserter.java create mode 100644 src/main/java/com/hbm/modules/ModulePatternMatcher.java create mode 100644 src/main/java/com/hbm/tileentity/network/TileEntityCraneBase.java create mode 100644 src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java create mode 100644 src/main/java/com/hbm/tileentity/network/TileEntityCraneInserter.java create mode 100644 src/main/resources/assets/hbm/blockstates/control_panel0.json create mode 100644 src/main/resources/assets/hbm/blockstates/conveyor_double.json create mode 100644 src/main/resources/assets/hbm/blockstates/conveyor_express.json create mode 100644 src/main/resources/assets/hbm/blockstates/crane_ejector.json create mode 100644 src/main/resources/assets/hbm/blockstates/crane_inserter.json create mode 100644 src/main/resources/assets/hbm/models/block/control_panel0.json create mode 100644 src/main/resources/assets/hbm/models/block/conveyor.mtl create mode 100644 src/main/resources/assets/hbm/models/block/conveyor.obj create mode 100644 src/main/resources/assets/hbm/models/block/conveyor_express.mtl create mode 100644 src/main/resources/assets/hbm/models/block/conveyor_express.obj create mode 100644 src/main/resources/assets/hbm/models/block/crane_ejector.json create mode 100644 src/main/resources/assets/hbm/models/block/crane_inserter.json create mode 100644 src/main/resources/assets/hbm/models/item/control_panel0.json create mode 100644 src/main/resources/assets/hbm/models/item/conveyor.json create mode 100644 src/main/resources/assets/hbm/models/item/conveyor_express.json create mode 100644 src/main/resources/assets/hbm/models/item/crane_ejector.json create mode 100644 src/main/resources/assets/hbm/models/item/crane_inserter.json create mode 100644 src/main/resources/assets/hbm/models/item/piston_electro.json create mode 100644 src/main/resources/assets/hbm/models/item/piston_hydraulic.json create mode 100644 src/main/resources/assets/hbm/models/item/piston_pneumatic.json create mode 100644 src/main/resources/assets/hbm/models/item/upgrade_ejector_1.json create mode 100644 src/main/resources/assets/hbm/models/item/upgrade_ejector_2.json create mode 100644 src/main/resources/assets/hbm/models/item/upgrade_ejector_3.json create mode 100644 src/main/resources/assets/hbm/models/item/upgrade_stack_1.json create mode 100644 src/main/resources/assets/hbm/models/item/upgrade_stack_2.json create mode 100644 src/main/resources/assets/hbm/models/item/upgrade_stack_3.json create mode 100644 "src/main/resources/assets/hbm/models/item/\320\235\320\276\320\262\321\213\320\271 \321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271 \320\264\320\276\320\272\321\203\320\274\320\265\320\275\321\202.txt" create mode 100644 src/main/resources/assets/hbm/textures/blocks/conveyor_express.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/conveyor_express.png.mcmeta create mode 100644 src/main/resources/assets/hbm/textures/blocks/conveyor_side.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/conveyor_side.png.mcmeta create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_in.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_in_side_down.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_in_side_down_turn_left.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_in_side_down_turn_right.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_in_side_left_turn_down.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_in_side_left_turn_up.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_in_side_right_turn_down.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_in_side_right_turn_up.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_in_side_turn_left.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_in_side_turn_right.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_in_side_up.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_in_side_up_turn_left.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_in_side_up_turn_right.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_in_top.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_in_top_left.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_in_top_right.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_out.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_out_side_down.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_out_side_down_turn_left.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_out_side_down_turn_right.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_out_side_left_turn_down.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_out_side_left_turn_up.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_out_side_right_turn_down.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_out_side_right_turn_up.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_out_side_turn_left.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_out_side_turn_right.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_out_side_up.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_out_side_up_turn_left.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_out_side_up_turn_right.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_out_top.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/difurnace_front_on.png.mcmeta create mode 100644 src/main/resources/assets/hbm/textures/gui/control_panel/gui_control.png create mode 100644 src/main/resources/assets/hbm/textures/gui/control_panel/gui_control_add_element.png create mode 100644 src/main/resources/assets/hbm/textures/gui/control_panel/gui_control_grid.png create mode 100644 src/main/resources/assets/hbm/textures/gui/storage/gui_crane_ejector.png create mode 100644 src/main/resources/assets/hbm/textures/gui/storage/gui_crane_inserter.png create mode 100644 src/main/resources/assets/hbm/textures/items/piston_electro.png create mode 100644 src/main/resources/assets/hbm/textures/items/piston_hydraulic.png create mode 100644 src/main/resources/assets/hbm/textures/items/piston_pneumatic.png create mode 100644 src/main/resources/assets/hbm/textures/items/upgrade_ejector_1.png create mode 100644 src/main/resources/assets/hbm/textures/items/upgrade_ejector_2.png create mode 100644 src/main/resources/assets/hbm/textures/items/upgrade_ejector_3.png create mode 100644 src/main/resources/assets/hbm/textures/items/upgrade_stack_1.png create mode 100644 src/main/resources/assets/hbm/textures/items/upgrade_stack_2.png create mode 100644 src/main/resources/assets/hbm/textures/items/upgrade_stack_3.png create mode 100644 src/main/resources/assets/hbm/textures/models/control_panel/button0.png create mode 100644 src/main/resources/assets/hbm/textures/models/control_panel/control0.png diff --git a/src/main/java/api/hbm/block/IBlockSideRotation.java b/src/main/java/api/hbm/block/IBlockSideRotation.java new file mode 100644 index 0000000000..0e94d32cd0 --- /dev/null +++ b/src/main/java/api/hbm/block/IBlockSideRotation.java @@ -0,0 +1,9 @@ +package api.hbm.block; + +import net.minecraft.util.EnumFacing; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockAccess; + +public interface IBlockSideRotation { + public int getRotationFromSide(IBlockAccess world, BlockPos pos, EnumFacing side); +} diff --git a/src/main/java/api/hbm/block/IConveyorBelt.java b/src/main/java/api/hbm/block/IConveyorBelt.java new file mode 100644 index 0000000000..d4656716bc --- /dev/null +++ b/src/main/java/api/hbm/block/IConveyorBelt.java @@ -0,0 +1,13 @@ +package api.hbm.block; + +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.World; + +public interface IConveyorBelt { + + /** Returns true if the item should stay on the conveyor, false if the item should drop off */ + public boolean canItemStay(World world, int x, int y, int z, Vec3d itemPos); + public Vec3d getTravelLocation(World world, int x, int y, int z, Vec3d itemPos, double speed); + public Vec3d getClosestSnappingPosition(World world, BlockPos pos, Vec3d itemPos); +} \ No newline at end of file diff --git a/src/main/java/api/hbm/block/IConveyorItem.java b/src/main/java/api/hbm/block/IConveyorItem.java new file mode 100644 index 0000000000..16b63ce113 --- /dev/null +++ b/src/main/java/api/hbm/block/IConveyorItem.java @@ -0,0 +1,8 @@ +package api.hbm.block; + +import net.minecraft.item.ItemStack; + +public interface IConveyorItem { + + public ItemStack getItemStack(); +} diff --git a/src/main/java/api/hbm/block/IEnterableBlock.java b/src/main/java/api/hbm/block/IEnterableBlock.java new file mode 100644 index 0000000000..83da17af5a --- /dev/null +++ b/src/main/java/api/hbm/block/IEnterableBlock.java @@ -0,0 +1,9 @@ +package api.hbm.block; + +import net.minecraft.util.EnumFacing; +import net.minecraft.world.World; + +public interface IEnterableBlock { + public boolean canItemEnter(World world, int x, int y, int z, EnumFacing dir, IConveyorItem entity); + public void onItemEnter(World world, int x, int y, int z, EnumFacing dir, IConveyorItem entity); +} diff --git a/src/main/java/api/hbm/block/IToolable.java b/src/main/java/api/hbm/block/IToolable.java index 1efb7efe47..b77e269bfa 100644 --- a/src/main/java/api/hbm/block/IToolable.java +++ b/src/main/java/api/hbm/block/IToolable.java @@ -3,6 +3,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; +import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; public interface IToolable { diff --git a/src/main/java/com/hbm/blocks/BlockBase.java b/src/main/java/com/hbm/blocks/BlockBase.java index 2686d87197..9fe9180c16 100644 --- a/src/main/java/com/hbm/blocks/BlockBase.java +++ b/src/main/java/com/hbm/blocks/BlockBase.java @@ -4,6 +4,7 @@ import com.hbm.main.MainRegistry; +import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; @@ -13,6 +14,7 @@ import net.minecraft.client.util.ITooltipFlag; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; public class BlockBase extends Block { @@ -35,14 +37,14 @@ public BlockBase(Material m, SoundType sound, String s){ } @Override - public void addInformation(ItemStack stack, World player, List tooltip, ITooltipFlag advanced) { + public void addInformation(ItemStack stack, World player, List list, ITooltipFlag advanced) { if(stack.getItem() == Item.getItemFromBlock(ModBlocks.meteor_battery)){ - tooltip.add("Provides infinite charge to tesla coils"); + list.add(I18nUtil.resolveKey("desc.teslacoils")); } float hardness = this.getExplosionResistance(null); if(hardness > 50){ - tooltip.add("§6Blast Resistance: "+hardness+"§r"); + list.add(TextFormatting.GOLD + I18nUtil.resolveKey("trait.blastres") + " " + hardness); } } diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 854c64e4af..4f5d1212fa 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -92,7 +92,7 @@ import com.hbm.blocks.generic.BlockNetherCoal; import com.hbm.blocks.generic.BlockNoDrop; import com.hbm.blocks.generic.BlockNuclearWaste; -import com.hbm.blocks.generic.BlockNTMOre; +import com.hbm.blocks.generic.BlockOre; import com.hbm.blocks.generic.BlockOutgas; import com.hbm.blocks.generic.BlockPinkLog; import com.hbm.blocks.generic.BlockGenericSlab; @@ -154,13 +154,9 @@ import com.hbm.blocks.machine.rbmk.RBMKCooler; import com.hbm.blocks.machine.rbmk.RBMKHeater; import com.hbm.blocks.machine.rbmk.RBMKCraneConsole; +import com.hbm.blocks.network.*; import com.hbm.blocks.network.BlockConveyor; -import com.hbm.blocks.network.BlockFluidDuct; -import com.hbm.blocks.network.BlockFluidPipeMk2; -import com.hbm.blocks.network.BlockFluidPipeSolid; -import com.hbm.blocks.network.BlockFluidPipeSolidRadResistant; -import com.hbm.blocks.network.RadioTorchSender; -import com.hbm.blocks.network.RadioTorchReceiver; +import com.hbm.blocks.network.BlockConveyorExpress; import com.hbm.blocks.network.energy.BlockCable; import com.hbm.blocks.network.energy.CableSwitch; import com.hbm.blocks.network.energy.CableDiode; @@ -258,7 +254,7 @@ public SoundEvent getBreakSound() { public static final Block reinforced_brick = new BlockRadResistant(Material.ROCK, "reinforced_brick").setCreativeTab(MainRegistry.blockTab).setLightOpacity(15).setHardness(15.0F).setResistance(8000.0F); public static final Block brick_compound = new BlockRadResistant(Material.ROCK, "brick_compound").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(10000.0F); public static final Block brick_light = new BlockBase(Material.ROCK, "brick_light").setCreativeTab(MainRegistry.blockTab).setLightOpacity(15).setHardness(15.0F).setResistance(1000.0F); - public static final Block brick_asbestos = new BlockOutgas(true, 20, true, "brick_asbestos").addAsbestos(8).toBlock().setHardness(15.0F).setCreativeTab(MainRegistry.blockTab).setResistance(1000.0F); + public static final Block brick_asbestos = new BlockOutgas(Material.ROCK, true, 20, true, "brick_asbestos").addAsbestos(8).toBlock().setHardness(15.0F).setCreativeTab(MainRegistry.blockTab).setResistance(1000.0F); public static final Block reinforced_sand = new BlockBase(Material.ROCK, "reinforced_sand").setCreativeTab(MainRegistry.blockTab).setLightOpacity(15).setHardness(15.0F).setResistance(400.0F); public static final Block brick_obsidian = new BlockBase(Material.ROCK, "brick_obsidian").setCreativeTab(MainRegistry.blockTab).setLightOpacity(15).setHardness(15.0F).setResistance(8000.0F); public static final Block cmb_brick = new BlockBase(Material.ROCK, "cmb_brick").setCreativeTab(MainRegistry.blockTab).setHardness(25.0F).setResistance(6000.0F); @@ -283,7 +279,7 @@ public SoundEvent getBreakSound() { public static final Block concrete_red = new BlockBase(Material.ROCK, "concrete_red").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F); public static final Block concrete_black = new BlockBase(Material.ROCK, "concrete_black").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F); - public static final Block concrete_asbestos = new BlockOutgas(true, 20, true, "concrete_asbestos").addAsbestos(6).toBlock().setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F); + public static final Block concrete_asbestos = new BlockOutgas(Material.ROCK, true, 20, true, "concrete_asbestos").addAsbestos(6).toBlock().setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F); public static final Block concrete_pillar = new BlockRotatablePillar(Material.ROCK, "concrete_pillar").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F); public static final Block ducrete_smooth = new BlockRadResistant(Material.ROCK, "ducrete_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(20.0F).setResistance(8000.0F); @@ -292,7 +288,7 @@ public SoundEvent getBreakSound() { public static final Block ducrete_reinforced = new BlockRadResistant(Material.ROCK, "ducrete_reinforced").setCreativeTab(MainRegistry.blockTab).setHardness(20.0F).setResistance(24000.0F); public static final Block tile_lab = new BlockClean(Material.ROCK, "tile_lab").setSoundType(SoundType.GLASS).setCreativeTab(MainRegistry.blockTab).setHardness(1.0F).setResistance(20.0F); public static final Block tile_lab_cracked = new BlockClean(Material.ROCK, "tile_lab_cracked").setSoundType(SoundType.GLASS).setCreativeTab(MainRegistry.blockTab).setHardness(1.0F).setResistance(20.0F); - public static final Block tile_lab_broken = new BlockOutgas(true, 40, true, "tile_lab_broken").addAsbestos(6).toBlock().setCreativeTab(MainRegistry.blockTab).setHardness(1.0F).setResistance(20.0F); + public static final Block tile_lab_broken = new BlockOutgas(Material.ROCK, true, 40, true, "tile_lab_broken").addAsbestos(6).toBlock().setCreativeTab(MainRegistry.blockTab).setHardness(1.0F).setResistance(20.0F); //stairs public static final Block reinforced_stone_stairs = new BlockGenericStairs(reinforced_stone.getDefaultState(), "reinforced_stone_stairs").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(2250.0F); @@ -379,24 +375,24 @@ public SoundEvent getBreakSound() { public static final Block block_electrical_scrap = new BlockFallingBase(Material.IRON, "block_electrical_scrap", SoundType.METAL).setCreativeTab(MainRegistry.blockTab).setHardness(2.5F).setResistance(5.0F); //Ores - public static final Block ore_uranium = new BlockOutgas(true, 20, true, "ore_uranium").addRadiation(ItemHazard.ore * ItemHazard.u).toBlock().setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.resourceTab); - public static final Block ore_uranium_scorched = new BlockOutgas(true, 15, true, "ore_uranium_scorched").addRadiation(0.5F).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); - public static final Block ore_schrabidium = new BlockNTMOre("ore_schrabidium", 3, 300).addRadiation(ItemHazard.ore * ItemHazard.sa326).addBlinding().toBlock().setHardness(15.0F).setResistance(600.0F).setCreativeTab(MainRegistry.resourceTab); + public static final Block ore_uranium = new BlockOutgas(Material.ROCK, true, 20, true, "ore_uranium").addRadiation(ItemHazard.ore * ItemHazard.u).toBlock().setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.resourceTab); + public static final Block ore_uranium_scorched = new BlockOutgas(Material.ROCK, true, 15, true, "ore_uranium_scorched").addRadiation(0.5F).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block ore_schrabidium = new BlockOre(Material.ROCK, "ore_schrabidium", 3, 300).addRadiation(ItemHazard.ore * ItemHazard.sa326).addBlinding().toBlock().setHardness(15.0F).setResistance(600.0F).setCreativeTab(MainRegistry.resourceTab); - public static final Block ore_thorium = new BlockNTMOre("ore_thorium", 2).addRadiation(ItemHazard.ore * ItemHazard.th232).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); - public static final Block ore_titanium = new BlockNTMOre("ore_titanium", 2).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); - public static final Block ore_sulfur = new BlockNTMOre("ore_sulfur", 1).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); - public static final Block ore_niter = new BlockNTMOre("ore_niter", 1).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); - public static final Block ore_copper = new BlockNTMOre("ore_copper", 1).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); - public static final Block ore_tungsten = new BlockNTMOre("ore_tungsten", 2).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); - public static final Block ore_aluminium = new BlockNTMOre("ore_aluminium", 1).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); - public static final Block ore_fluorite = new BlockNTMOre("ore_fluorite", 1).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); - public static final Block ore_lead = new BlockNTMOre("ore_lead", 2).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); - public static final Block ore_beryllium = new BlockNTMOre("ore_beryllium", 2).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(15.0F); - public static final Block ore_lignite = new BlockNTMOre("ore_lignite", 0).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(15.0F); - public static final Block ore_asbestos = new BlockNTMOre("ore_asbestos", 1, 6).addAsbestos(5).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(15.0F); - public static final Block ore_rare = new BlockNTMOre("ore_rare", 2, 12).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block ore_thorium = new BlockOre(Material.ROCK, "ore_thorium", 2).addRadiation(ItemHazard.ore * ItemHazard.th232).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block ore_titanium = new BlockOre(Material.ROCK, "ore_titanium", 2).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block ore_sulfur = new BlockOre(Material.ROCK, "ore_sulfur", 1).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block ore_niter = new BlockOre(Material.ROCK, "ore_niter", 1).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block ore_copper = new BlockOre(Material.ROCK, "ore_copper", 1).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block ore_tungsten = new BlockOre(Material.ROCK, "ore_tungsten", 2).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block ore_aluminium = new BlockOre(Material.ROCK, "ore_aluminium", 1).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block ore_fluorite = new BlockOre(Material.ROCK, "ore_fluorite", 1).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block ore_lead = new BlockOre(Material.ROCK, "ore_lead", 2).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block ore_beryllium = new BlockOre(Material.ROCK, "ore_beryllium", 2).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(15.0F); + public static final Block ore_lignite = new BlockOre(Material.ROCK, "ore_lignite", 0).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(15.0F); + public static final Block ore_asbestos = new BlockOre(Material.ROCK, "ore_asbestos", 1, 6).addAsbestos(5).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(15.0F); + public static final Block ore_rare = new BlockOre(Material.ROCK, "ore_rare", 2, 12).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); public static final Block ore_coal_oil = new BlockCoalOil(Material.ROCK, "ore_coal_oil").setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(15.0F); public static final Block ore_coal_oil_burning = new BlockCoalBurning(Material.ROCK, "ore_coal_oil_burning").setCreativeTab(MainRegistry.resourceTab).setLightLevel(10F/15F).setHardness(5.0F).setResistance(15.0F); @@ -405,16 +401,16 @@ public SoundEvent getBreakSound() { public static final Block cluster_aluminium = new BlockCluster(Material.ROCK, "cluster_aluminium").setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(35.0F); public static final Block cluster_copper = new BlockCluster(Material.ROCK, "cluster_copper").setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(35.0F); - public static final Block ore_cobalt = new BlockNTMOre("ore_cobalt", 3, 15).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); - public static final Block ore_cinnebar = new BlockNTMOre("ore_cinnebar", 1).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); - public static final Block ore_coltan = new BlockNTMOre("ore_coltan", 3, 20).setCreativeTab(MainRegistry.resourceTab).setHardness(15.0F).setResistance(10.0F); + public static final Block ore_cobalt = new BlockOre(Material.ROCK, "ore_cobalt", 3, 15).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block ore_cinnebar = new BlockOre(Material.ROCK, "ore_cinnebar", 1).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block ore_coltan = new BlockOre(Material.ROCK, "ore_coltan", 3, 20).setCreativeTab(MainRegistry.resourceTab).setHardness(15.0F).setResistance(10.0F); - public static final Block ore_reiium = new BlockNTMOre("ore_reiium", 4, 100).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); - public static final Block ore_weidanium = new BlockNTMOre("ore_weidanium", 4, 100).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); - public static final Block ore_australium = new BlockNTMOre("ore_australium", 4, 100).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); - public static final Block ore_verticium = new BlockNTMOre("ore_verticium", 4, 100).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); - public static final Block ore_unobtainium = new BlockNTMOre("ore_unobtainium", 4, 100).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); - public static final Block ore_daffergon = new BlockNTMOre("ore_daffergon", 4, 100).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block ore_reiium = new BlockOre(Material.ROCK, "ore_reiium", 4, 100).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block ore_weidanium = new BlockOre(Material.ROCK, "ore_weidanium", 4, 100).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block ore_australium = new BlockOre(Material.ROCK, "ore_australium", 4, 100).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block ore_verticium = new BlockOre(Material.ROCK, "ore_verticium", 4, 100).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block ore_unobtainium = new BlockOre(Material.ROCK, "ore_unobtainium", 4, 100).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block ore_daffergon = new BlockOre(Material.ROCK, "ore_daffergon", 4, 100).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); public static final Block stone_depth = new BlockDepth("stone_depth").setCreativeTab(MainRegistry.resourceTab); public static final Block ore_depth_cinnebar = new BlockDepthOre("ore_depth_cinnebar").setCreativeTab(MainRegistry.resourceTab); public static final Block ore_depth_zirconium = new BlockDepthOre("ore_depth_zirconium").setCreativeTab(MainRegistry.resourceTab); @@ -427,53 +423,53 @@ public SoundEvent getBreakSound() { public static final Block ore_bedrock_oil = new BlockBase(Material.ROCK, "ore_bedrock_oil").setCreativeTab(MainRegistry.resourceTab).setBlockUnbreakable().setResistance(3_600_000); public static final Block ore_bedrock_block = new BlockBedrockOreTE("ore_bedrock_block").setCreativeTab(MainRegistry.resourceTab).setBlockUnbreakable().setResistance(3_600_000); - public static final Block ore_oil = new BlockNTMOre("ore_oil", 3).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block ore_oil = new BlockOre(Material.ROCK, "ore_oil", 3).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); public static final Block ore_oil_empty = new BlockBase(Material.ROCK, "ore_oil_empty").setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); public static final Block ore_oil_sand = new BlockFallingBase(Material.SAND, "ore_oil_sand", SoundType.SAND).setCreativeTab(MainRegistry.resourceTab).setHardness(0.5F).setResistance(1.0F); public static final Block stone_gneiss = new BlockBase(Material.ROCK, "stone_gneiss").setCreativeTab(MainRegistry.resourceTab).setHardness(1.5F).setResistance(10.0F); - public static final Block ore_gneiss_iron = new BlockNTMOre("ore_gneiss_iron", 1).setCreativeTab(MainRegistry.resourceTab).setHardness(1.5F).setResistance(10.0F); - public static final Block ore_gneiss_gold = new BlockNTMOre("ore_gneiss_gold", 2).setCreativeTab(MainRegistry.resourceTab).setHardness(1.5F).setResistance(10.0F); - public static final Block ore_gneiss_uranium = new BlockOutgas(true, 20, true, "ore_gneiss_uranium").addRadiation(ItemHazard.ore * ItemHazard.u).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(1.5F).setResistance(10.0F); - public static final Block ore_gneiss_uranium_scorched = new BlockOutgas(true, 20, true, "ore_gneiss_uranium_scorched").addRadiation(1.0F).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(1.5F).setResistance(10.0F); - public static final Block ore_gneiss_copper = new BlockNTMOre("ore_gneiss_copper", 1).setCreativeTab(MainRegistry.resourceTab).setHardness(1.5F).setResistance(10.0F); - public static final Block ore_gneiss_asbestos = new BlockNTMOre("ore_gneiss_asbestos", 2).addAsbestos(5).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(1.5F).setResistance(10.0F); - public static final Block ore_gneiss_lithium = new BlockNTMOre("ore_gneiss_lithium", 0).addHydroReactivity().toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(1.5F).setResistance(10.0F); - public static final Block ore_gneiss_schrabidium = new BlockNTMOre("ore_gneiss_schrabidium", 3).addRadiation(ItemHazard.ore * ItemHazard.sa326).addBlinding().toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(1.5F).setResistance(10.0F); - public static final Block ore_gneiss_rare = new BlockNTMOre("ore_gneiss_rare", 3).setCreativeTab(MainRegistry.resourceTab).setHardness(1.5F).setResistance(10.0F); - public static final Block ore_gneiss_gas = new BlockNTMOre("ore_gneiss_gas", 0).setCreativeTab(MainRegistry.resourceTab).setHardness(1.5F).setResistance(10.0F); - - public static final Block ore_tikite = new BlockNTMOre("ore_tikite", 4).addRadiation(6.0F).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); - - public static final Block ore_nether_coal = new BlockNetherCoal(false, 5, true, "ore_nether_coal").setCreativeTab(MainRegistry.resourceTab).setLightLevel(10F/15F).setHardness(0.4F).setResistance(10.0F); + public static final Block ore_gneiss_iron = new BlockOre(Material.ROCK, "ore_gneiss_iron", 1).setCreativeTab(MainRegistry.resourceTab).setHardness(1.5F).setResistance(10.0F); + public static final Block ore_gneiss_gold = new BlockOre(Material.ROCK, "ore_gneiss_gold", 2).setCreativeTab(MainRegistry.resourceTab).setHardness(1.5F).setResistance(10.0F); + public static final Block ore_gneiss_uranium = new BlockOutgas(Material.ROCK, true, 20, true, "ore_gneiss_uranium").addRadiation(ItemHazard.ore * ItemHazard.u).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(1.5F).setResistance(10.0F); + public static final Block ore_gneiss_uranium_scorched = new BlockOutgas(Material.ROCK, true, 20, true, "ore_gneiss_uranium_scorched").addRadiation(1.0F).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(1.5F).setResistance(10.0F); + public static final Block ore_gneiss_copper = new BlockOre(Material.ROCK, "ore_gneiss_copper", 1).setCreativeTab(MainRegistry.resourceTab).setHardness(1.5F).setResistance(10.0F); + public static final Block ore_gneiss_asbestos = new BlockOre(Material.ROCK, "ore_gneiss_asbestos", 2).addAsbestos(5).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(1.5F).setResistance(10.0F); + public static final Block ore_gneiss_lithium = new BlockOre(Material.ROCK, "ore_gneiss_lithium", 0).addHydroReactivity().toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(1.5F).setResistance(10.0F); + public static final Block ore_gneiss_schrabidium = new BlockOre(Material.ROCK, "ore_gneiss_schrabidium", 3).addRadiation(ItemHazard.ore * ItemHazard.sa326).addBlinding().toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(1.5F).setResistance(10.0F); + public static final Block ore_gneiss_rare = new BlockOre(Material.ROCK, "ore_gneiss_rare", 3).setCreativeTab(MainRegistry.resourceTab).setHardness(1.5F).setResistance(10.0F); + public static final Block ore_gneiss_gas = new BlockOre(Material.ROCK, "ore_gneiss_gas", 0).setCreativeTab(MainRegistry.resourceTab).setHardness(1.5F).setResistance(10.0F); + + public static final Block ore_tikite = new BlockOre(Material.ROCK, "ore_tikite", 4).addRadiation(6.0F).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + + public static final Block ore_nether_coal = new BlockNetherCoal(Material.ROCK, false, 5, true, "ore_nether_coal").setCreativeTab(MainRegistry.resourceTab).setLightLevel(10F/15F).setHardness(0.4F).setResistance(10.0F); public static final Block ore_nether_smoldering = new BlockSmolder(Material.ROCK, "ore_nether_smoldering").setCreativeTab(MainRegistry.resourceTab).setLightLevel(1F).setHardness(0.4F).setResistance(10.0F); - public static final Block ore_nether_cobalt = new BlockNTMOre("ore_nether_cobalt", 3).setCreativeTab(MainRegistry.resourceTab).setHardness(0.4F).setResistance(10.0F); - public static final Block ore_nether_tungsten = new BlockNTMOre("ore_nether_tungsten", 2).setCreativeTab(MainRegistry.resourceTab).setHardness(0.4F).setResistance(10.0F); - public static final Block ore_nether_sulfur = new BlockNTMOre("ore_nether_sulfur", 1).setCreativeTab(MainRegistry.resourceTab).setHardness(0.4F).setResistance(10.0F); - public static final Block ore_nether_fire = new BlockNTMOre("ore_nether_fire", 1).addFire(5).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(0.4F).setResistance(10.0F); - public static final Block ore_nether_uranium = new BlockOutgas(true, 20, true, "ore_nether_uranium").addRadiation(ItemHazard.ore * ItemHazard.u).toBlock().setHardness(0.4F).setResistance(10.0F).setCreativeTab(MainRegistry.resourceTab); - public static final Block ore_nether_uranium_scorched = new BlockOutgas(true, 20, true, "ore_nether_uranium_scorched").addRadiation(2.0F).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(0.4F).setResistance(10.0F); - public static final Block ore_nether_plutonium = new BlockNTMOre("ore_nether_plutonium", 3).addRadiation(ItemHazard.pu).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(0.4F).setResistance(10.0F); - public static final Block ore_nether_schrabidium = new BlockNTMOre("ore_nether_schrabidium", 3).addRadiation(ItemHazard.ore * ItemHazard.sa326).addBlinding().toBlock().setHardness(15.0F).setResistance(600.0F).setCreativeTab(MainRegistry.resourceTab); + public static final Block ore_nether_cobalt = new BlockOre(Material.ROCK, "ore_nether_cobalt", 3).setCreativeTab(MainRegistry.resourceTab).setHardness(0.4F).setResistance(10.0F); + public static final Block ore_nether_tungsten = new BlockOre(Material.ROCK, "ore_nether_tungsten", 2).setCreativeTab(MainRegistry.resourceTab).setHardness(0.4F).setResistance(10.0F); + public static final Block ore_nether_sulfur = new BlockOre(Material.ROCK, "ore_nether_sulfur", 1).setCreativeTab(MainRegistry.resourceTab).setHardness(0.4F).setResistance(10.0F); + public static final Block ore_nether_fire = new BlockOre(Material.ROCK, "ore_nether_fire", 1).addFire(5).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(0.4F).setResistance(10.0F); + public static final Block ore_nether_uranium = new BlockOutgas(Material.ROCK, true, 20, true, "ore_nether_uranium").addRadiation(ItemHazard.ore * ItemHazard.u).toBlock().setHardness(0.4F).setResistance(10.0F).setCreativeTab(MainRegistry.resourceTab); + public static final Block ore_nether_uranium_scorched = new BlockOutgas(Material.ROCK, true, 20, true, "ore_nether_uranium_scorched").addRadiation(2.0F).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(0.4F).setResistance(10.0F); + public static final Block ore_nether_plutonium = new BlockOre(Material.ROCK, "ore_nether_plutonium", 3).addRadiation(ItemHazard.pu).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(0.4F).setResistance(10.0F); + public static final Block ore_nether_schrabidium = new BlockOre(Material.ROCK, "ore_nether_schrabidium", 3).addRadiation(ItemHazard.ore * ItemHazard.sa326).addBlinding().toBlock().setHardness(15.0F).setResistance(600.0F).setCreativeTab(MainRegistry.resourceTab); public static final Block stone_depth_nether = new BlockDepth("stone_depth_nether").setCreativeTab(MainRegistry.resourceTab); public static final Block ore_depth_nether_neodymium = new BlockDepthOre("ore_depth_nether_neodymium").setCreativeTab(MainRegistry.resourceTab); public static final Block ore_depth_nether_nitan = new BlockDepthOre("ore_depth_nether_nitan").setCreativeTab(MainRegistry.resourceTab); - public static final Block block_meteor = new BlockNTMOre("block_meteor", 3).setCreativeTab(MainRegistry.resourceTab).setHardness(15.0F).setResistance(900.0F); - public static final Block block_meteor_cobble = new BlockNTMOre("block_meteor_cobble", 2).setCreativeTab(MainRegistry.resourceTab).setHardness(15.0F).setResistance(900.0F); - public static final Block block_meteor_broken = new BlockNTMOre("block_meteor_broken", 1).setCreativeTab(MainRegistry.resourceTab).setHardness(15.0F).setResistance(900.0F); + public static final Block block_meteor = new BlockOre(Material.ROCK, "block_meteor", 3).setCreativeTab(MainRegistry.resourceTab).setHardness(15.0F).setResistance(900.0F); + public static final Block block_meteor_cobble = new BlockOre(Material.ROCK, "block_meteor_cobble", 2).setCreativeTab(MainRegistry.resourceTab).setHardness(15.0F).setResistance(900.0F); + public static final Block block_meteor_broken = new BlockOre(Material.ROCK, "block_meteor_broken", 1).setCreativeTab(MainRegistry.resourceTab).setHardness(15.0F).setResistance(900.0F); public static final Block block_meteor_molten = new BlockHazard(Material.ROCK, "block_meteor_molten").addFire(3).toBlock().setTickRandomly(true).setLightLevel(0.75F).setCreativeTab(MainRegistry.resourceTab).setHardness(15.0F).setResistance(900.0F); - public static final Block block_meteor_treasure = new BlockNTMOre("block_meteor_treasure", 3).setCreativeTab(MainRegistry.resourceTab).setHardness(15.0F).setResistance(900.0F); - public static final Block ore_meteor_uranium = new BlockNTMOre("ore_meteor_uranium", 2, 30).addRadiation(0.25F).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); - public static final Block ore_meteor_thorium = new BlockNTMOre("ore_meteor_thorium", 2, 30).addRadiation(ItemHazard.th232).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); - public static final Block ore_meteor_titanium = new BlockNTMOre("ore_meteor_titanium", 1, 30).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); - public static final Block ore_meteor_sulfur = new BlockNTMOre("ore_meteor_sulfur", 1, 30).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); - public static final Block ore_meteor_copper = new BlockNTMOre("ore_meteor_copper", 1, 30).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); - public static final Block ore_meteor_tungsten = new BlockNTMOre("ore_meteor_tungsten", 2, 30).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); - public static final Block ore_meteor_aluminium = new BlockNTMOre("ore_meteor_aluminium", 1, 30).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); - public static final Block ore_meteor_lead = new BlockNTMOre("ore_meteor_lead", 2, 30).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); - public static final Block ore_meteor_lithium = new BlockNTMOre("ore_meteor_lithium", 0, 30).addHydroReactivity().toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); - public static final Block ore_meteor_starmetal = new BlockNTMOre("ore_meteor_starmetal", 3, 60).setCreativeTab(MainRegistry.resourceTab).setHardness(10.0F).setResistance(100.0F); + public static final Block block_meteor_treasure = new BlockOre(Material.ROCK, "block_meteor_treasure", 3).setCreativeTab(MainRegistry.resourceTab).setHardness(15.0F).setResistance(900.0F); + public static final Block ore_meteor_uranium = new BlockOre(Material.ROCK, "ore_meteor_uranium", 2, 30).addRadiation(0.25F).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block ore_meteor_thorium = new BlockOre(Material.ROCK, "ore_meteor_thorium", 2, 30).addRadiation(ItemHazard.th232).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block ore_meteor_titanium = new BlockOre(Material.ROCK, "ore_meteor_titanium", 1, 30).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block ore_meteor_sulfur = new BlockOre(Material.ROCK, "ore_meteor_sulfur", 1, 30).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block ore_meteor_copper = new BlockOre(Material.ROCK, "ore_meteor_copper", 1, 30).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block ore_meteor_tungsten = new BlockOre(Material.ROCK, "ore_meteor_tungsten", 2, 30).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block ore_meteor_aluminium = new BlockOre(Material.ROCK, "ore_meteor_aluminium", 1, 30).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block ore_meteor_lead = new BlockOre(Material.ROCK, "ore_meteor_lead", 2, 30).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block ore_meteor_lithium = new BlockOre(Material.ROCK, "ore_meteor_lithium", 0, 30).addHydroReactivity().toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block ore_meteor_starmetal = new BlockOre(Material.ROCK, "ore_meteor_starmetal", 3, 60).setCreativeTab(MainRegistry.resourceTab).setHardness(10.0F).setResistance(100.0F); public static final Block meteor_polished = new BlockBase(Material.ROCK, "meteor_polished").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F); public static final Block meteor_brick = new BlockBase(Material.ROCK, "meteor_brick").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F); @@ -561,7 +557,7 @@ public SoundEvent getBreakSound() { public static final Block deco_steel = new BlockBase(Material.IRON, "deco_steel").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); public static final Block deco_lead = new BlockBase(Material.IRON, "deco_lead").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); public static final Block deco_beryllium = new BlockBase(Material.IRON, "deco_beryllium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); - public static final Block deco_asbestos = new BlockOutgas(true, 40, true, "deco_asbestos").addAsbestos(2).toBlock().setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); + public static final Block deco_asbestos = new BlockOutgas(Material.IRON, true, 40, true, "deco_asbestos").addAsbestos(2).toBlock().setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); public static final Block deco_rbmk = new BlockClean(Material.IRON, "deco_rbmk").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); public static final Block deco_rbmk_smooth = new BlockClean(Material.IRON, "deco_rbmk_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); @@ -624,7 +620,7 @@ public SoundEvent getBreakSound() { public static final Block waste_sand_red = new WasteSand(Material.SAND, SoundType.SAND, "waste_sand_red").addRadiation(ItemHazard.trx*ItemHazard.nugget).toBlock().setHardness(0.5F).setResistance(1.0F).setCreativeTab(MainRegistry.resourceTab); public static final Block waste_trinitite_red = new WasteSand(Material.SAND, SoundType.SAND, "waste_trinitite_red").addRadiation(ItemHazard.trx).toBlock().setHardness(0.5F).setResistance(2.5F).setCreativeTab(MainRegistry.resourceTab); public static final Block waste_log = new WasteLog(Material.WOOD, SoundType.WOOD, "waste_log").addCoal(2).toBlock().setHardness(5.0F).setResistance(2.5F).setCreativeTab(MainRegistry.resourceTab); - public static final Block waste_planks = new BlockNTMOre(SoundType.WOOD, "waste_planks", 0).addCoal(1).toBlock().setHardness(0.5F).setResistance(2.5F).setCreativeTab(MainRegistry.resourceTab); + public static final Block waste_planks = new BlockOre(Material.WOOD, SoundType.WOOD, "waste_planks", 0).addCoal(1).toBlock().setHardness(0.5F).setResistance(2.5F).setCreativeTab(MainRegistry.resourceTab); public static final Block waste_leaves = new WasteLeaves("waste_leaves").addRadiation(0.15F).toBlock().setHardness(0.3F).setResistance(0.3F).setCreativeTab(MainRegistry.resourceTab); public static final Block waste_grass_tall = new WasteGrassTall(Material.PLANTS, "waste_grass_tall").setCreativeTab(MainRegistry.resourceTab); @@ -684,7 +680,7 @@ public SoundEvent getBreakSound() { public static final Block block_polymer = new BlockBeaconable(Material.ROCK, "block_polymer").setSoundType(SoundType.METAL).setCreativeTab(MainRegistry.blockTab).setHardness(3.0F).setResistance(10.0F); public static final Block block_bakelite = new BlockBeaconable(Material.ROCK, "block_bakelite").setCreativeTab(MainRegistry.blockTab).setHardness(3.0F).setResistance(10.0F); public static final Block block_rubber = new BlockBeaconable(Material.ROCK, "block_rubber").setCreativeTab(MainRegistry.blockTab).setHardness(3.0F).setResistance(10.0F); - public static final Block block_asbestos = new BlockOutgas(true, 4, true, "block_asbestos").addAsbestos(50).toBlock().setHardness(10.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab); + public static final Block block_asbestos = new BlockOutgas(Material.ROCK, true, 4, true, "block_asbestos").addAsbestos(50).toBlock().setHardness(10.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab); public static final Block block_cobalt = new BlockBase(Material.IRON, "block_cobalt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); public static final Block block_lithium = new BlockLithium(Material.IRON, "block_lithium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); public static final Block block_zirconium = new BlockBeaconable(Material.IRON, "block_zirconium").setSoundType(SoundType.METAL).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); @@ -724,9 +720,9 @@ public SoundEvent getBreakSound() { public static final Block stone_porous = new BlockPorous("stone_porous").setCreativeTab(MainRegistry.resourceTab); public static final Block basalt = new BlockBase(Material.ROCK, "basalt").setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); - public static final Block basalt_sulfur = new BlockNTMOre("basalt_sulfur", 1).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); - public static final Block basalt_fluorite = new BlockNTMOre("basalt_fluorite", 1).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); - public static final Block basalt_asbestos = new BlockOutgas(true, 5, true, "basalt_asbestos").addAsbestos(15).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block basalt_sulfur = new BlockOre(Material.ROCK, "basalt_sulfur", 1).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block basalt_fluorite = new BlockOre(Material.ROCK, "basalt_fluorite", 1).setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); + public static final Block basalt_asbestos = new BlockOutgas(Material.ROCK, true, 5, true, "basalt_asbestos").addAsbestos(15).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); public static final Block basalt_gem = new BlockCluster(Material.ROCK, "basalt_gem").setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); public static final Block basalt_smooth = new BlockBase(Material.ROCK, "basalt_smooth").setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); public static final Block basalt_brick = new BlockBase(Material.ROCK, "basalt_brick").setCreativeTab(MainRegistry.resourceTab).setHardness(5.0F).setResistance(10.0F); @@ -1095,7 +1091,7 @@ public SoundEvent getBreakSound() { public static final Block pribris_digamma = new RBMKDebrisDigamma("pribris_digamma").addDigamma(0.05F).addFire(300).toBlock().setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(6000.0F); public static final Block block_corium = new BlockHazard(Material.IRON, "block_corium").makeBeaconable().addRad3d(150000).addRadiation(10000F).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(100.0F).setResistance(9000.0F); - public static final Block block_corium_cobble = new BlockOutgas(true, 1, true, true, "block_corium_cobble").addRadiation(1000F).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(100.0F).setResistance(6000.0F); + public static final Block block_corium_cobble = new BlockOutgas(Material.IRON, true, 1, true, true, "block_corium_cobble").addRadiation(1000F).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(100.0F).setResistance(6000.0F); public static final Block machine_assembler = new MachineAssembler(Material.IRON, "machine_assembler").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(100.0F); public static final int guiID_machine_assembler = 48; @@ -1430,7 +1426,7 @@ public SoundEvent getBreakSound() { public static final Block gas_coal = new BlockGasCoal("gas_coal").setCreativeTab(MainRegistry.resourceTab); public static final Block gas_flammable = new BlockGasFlammable("gas_flammable").setCreativeTab(MainRegistry.resourceTab); public static final Block gas_explosive = new BlockGasExplosive("gas_explosive").setCreativeTab(MainRegistry.resourceTab); - public static final Block ancient_scrap = new BlockOutgas(true, 1, true, true, "ancient_scrap").addRadiation(150F).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(100.0F).setResistance(6000.0F); + public static final Block ancient_scrap = new BlockOutgas(Material.IRON, true, 1, true, true, "ancient_scrap").addRadiation(150F).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(100.0F).setResistance(6000.0F); public static final Block railgun_plasma = new RailgunPlasma(Material.IRON, "railgun_plasma").setSoundType(SoundType.METAL).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.weaponTab); @@ -1452,7 +1448,13 @@ public SoundEvent getBreakSound() { public static final Block fluid_duct_solid = new BlockFluidPipeSolid(Material.IRON, "fluid_duct_solid").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.templateTab); public static final Block fluid_duct_solid_sealed = new BlockFluidPipeSolidRadResistant(Material.IRON, "fluid_duct_solid_sealed").setHardness(15.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.templateTab); - public static final Block conveyor = new BlockConveyor(Material.IRON, "conveyor").setHardness(0.0F).setResistance(2.0F).setCreativeTab(null); + public static final Block conveyor = new BlockConveyor(Material.IRON, "conveyor").setHardness(0.0F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab); + public static final Block conveyor_double = new BlockConveyorDouble(Material.IRON, "conveyor_double").setHardness(3.0F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab); + public static final Block conveyor_express = new BlockConveyorExpress(Material.IRON, "conveyor_express").setHardness(3.0F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab); + public static final Block crane_ejector = new CraneExtractor(Material.IRON, "crane_ejector").setHardness(3.0F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab); + public static final int guiID_crane_ejector = 135; + public static final Block crane_inserter = new CraneInserter(Material.IRON, "crane_inserter").setHardness(3.0F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab); + public static final int guiID_crane_inserter = 136; public static final Block chain = new BlockChain(Material.IRON, "dungeon_chain").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab); public static final Block ladder_sturdy = new BlockNTMLadder("ladder_sturdy").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab); @@ -1477,10 +1479,8 @@ public SoundEvent getBreakSound() { //Control panel public static final int guiID_control_panel = 106; - public static final Block control_panel_custom = new BlockControlPanel(Material.IRON, "control_panel_custom").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab); - -// public static final Block control_panel_front = new BlockControlPanelFront("control_panel_front").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab); - + public static final Block control0 = new BlockControlPanel(Material.IRON, "control_panel0").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab); + //Fluids public static final Material fluidtoxic = new MaterialLiquid(MapColor.YELLOW).setReplaceable(); public static Block toxic_block; diff --git a/src/main/java/com/hbm/blocks/bomb/NukeBalefire.java b/src/main/java/com/hbm/blocks/bomb/NukeBalefire.java index 14ef5e1c00..d46877e5fc 100644 --- a/src/main/java/com/hbm/blocks/bomb/NukeBalefire.java +++ b/src/main/java/com/hbm/blocks/bomb/NukeBalefire.java @@ -6,6 +6,7 @@ import com.hbm.interfaces.IBomb; import com.hbm.tileentity.bomb.TileEntityNukeBalefire; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.block.Block; import net.minecraft.item.ItemStack; @@ -14,6 +15,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumBlockRenderType; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -82,7 +84,7 @@ public void explode(World world, BlockPos pos) { @Override public void addInformation(ItemStack stack, World player, List tooltip, ITooltipFlag advanced) { - tooltip.add("§a[Balefire Bomb]§r"); - tooltip.add(" §eRadius: 250m§r"); + tooltip.add(TextFormatting.GREEN+"["+ I18nUtil.resolveKey("trait.balefirebomb")+"]"+"§r"); + tooltip.add(TextFormatting.YELLOW+I18nUtil.resolveKey("desc.radius")+" 250m§r"); } } diff --git a/src/main/java/com/hbm/blocks/bomb/NukeBoy.java b/src/main/java/com/hbm/blocks/bomb/NukeBoy.java index 55241a83cb..fd4e84eef8 100644 --- a/src/main/java/com/hbm/blocks/bomb/NukeBoy.java +++ b/src/main/java/com/hbm/blocks/bomb/NukeBoy.java @@ -13,6 +13,7 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.bomb.TileEntityNukeBoy; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; @@ -34,6 +35,7 @@ import net.minecraft.util.Rotation; import net.minecraft.util.SoundCategory; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -190,11 +192,11 @@ public IBlockState withMirror(IBlockState state, Mirror mirrorIn) @Override public void addInformation(ItemStack stack, World player, List tooltip, ITooltipFlag advanced) { - tooltip.add("§2[Nuclear Bomb]§r"); - tooltip.add(" §eRadius: "+BombConfig.boyRadius+"m§r"); + tooltip.add(TextFormatting.DARK_GREEN+"["+ I18nUtil.resolveKey("trait.nuclearbomb")+"]"+"§r"); + tooltip.add(TextFormatting.YELLOW+I18nUtil.resolveKey("desc.radius")+" "+BombConfig.boyRadius+"m§r"); if(!BombConfig.disableNuclear){ - tooltip.add("§2[Fallout]§r"); - tooltip.add(" §aRadius: "+(int)BombConfig.boyRadius*(1+BombConfig.falloutRange/100)+"m§r"); + tooltip.add(TextFormatting.DARK_GREEN+"["+ I18nUtil.resolveKey("trait.fallout")+"]"+"§r"); + tooltip.add(TextFormatting.GREEN+I18nUtil.resolveKey("desc.radius")+" "+(int)BombConfig.boyRadius*(1+BombConfig.falloutRange/100)+"m§r"); } } } diff --git a/src/main/java/com/hbm/blocks/bomb/NukeCustom.java b/src/main/java/com/hbm/blocks/bomb/NukeCustom.java index bd0c1e77d3..3da50f4325 100644 --- a/src/main/java/com/hbm/blocks/bomb/NukeCustom.java +++ b/src/main/java/com/hbm/blocks/bomb/NukeCustom.java @@ -19,6 +19,7 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.bomb.TileEntityNukeCustom; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; @@ -38,6 +39,7 @@ import net.minecraft.util.Mirror; import net.minecraft.util.Rotation; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -271,6 +273,6 @@ public IBlockState withMirror(IBlockState state, Mirror mirrorIn) { @Override public void addInformation(ItemStack stack, World player, List tooltip, ITooltipFlag advanced) { - tooltip.add("§d[Modular Bomb]§r"); + tooltip.add(TextFormatting.LIGHT_PURPLE+"["+ I18nUtil.resolveKey("trait.modularbomb")+"]"+"§r"); } } diff --git a/src/main/java/com/hbm/blocks/bomb/NukeFleija.java b/src/main/java/com/hbm/blocks/bomb/NukeFleija.java index 9bcd849427..1c4c6d6a06 100644 --- a/src/main/java/com/hbm/blocks/bomb/NukeFleija.java +++ b/src/main/java/com/hbm/blocks/bomb/NukeFleija.java @@ -12,6 +12,7 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.bomb.TileEntityNukeFleija; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; @@ -32,6 +33,7 @@ import net.minecraft.util.SoundCategory; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -223,7 +225,7 @@ protected BlockStateContainer createBlockState() { @Override public void addInformation(ItemStack stack, World player, List tooltip, ITooltipFlag advanced) { - tooltip.add("§b[Schrabidium Bomb]§r"); - tooltip.add(" §eRadius: "+BombConfig.fleijaRadius+"m§r"); + tooltip.add(TextFormatting.AQUA+"["+ I18nUtil.resolveKey("trait.schrabbomb")+"]"+"§r"); + tooltip.add(TextFormatting.YELLOW+I18nUtil.resolveKey("desc.radius")+" "+BombConfig.fleijaRadius+"m§r"); } } diff --git a/src/main/java/com/hbm/blocks/bomb/NukeGadget.java b/src/main/java/com/hbm/blocks/bomb/NukeGadget.java index f271afe7c4..38306fb382 100644 --- a/src/main/java/com/hbm/blocks/bomb/NukeGadget.java +++ b/src/main/java/com/hbm/blocks/bomb/NukeGadget.java @@ -13,6 +13,7 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.bomb.TileEntityNukeGadget; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; @@ -34,6 +35,7 @@ import net.minecraft.util.Rotation; import net.minecraft.util.SoundCategory; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -198,11 +200,11 @@ public IBlockState withMirror(IBlockState state, Mirror mirrorIn) @Override public void addInformation(ItemStack stack, World player, List tooltip, ITooltipFlag advanced) { - tooltip.add("§2[Nuclear Bomb]§r"); - tooltip.add(" §eRadius: "+BombConfig.gadgetRadius+"m§r"); + tooltip.add(TextFormatting.DARK_GREEN+"["+ I18nUtil.resolveKey("trait.nuclearbomb")+"]"+"§r"); + tooltip.add(TextFormatting.YELLOW+I18nUtil.resolveKey("desc.radius")+" "+BombConfig.gadgetRadius+"m§r"); if(!BombConfig.disableNuclear){ - tooltip.add("§2[Fallout]§r"); - tooltip.add(" §aRadius: "+(int)BombConfig.gadgetRadius*(1+BombConfig.falloutRange/100)+"m§r"); + tooltip.add(TextFormatting.DARK_GREEN+"["+ I18nUtil.resolveKey("trait.fallout")+"]"+"§r"); + tooltip.add(TextFormatting.GREEN+I18nUtil.resolveKey("desc.radius")+" "+(int)BombConfig.gadgetRadius*(1+BombConfig.falloutRange/100)+"m§r"); } } } diff --git a/src/main/java/com/hbm/blocks/bomb/NukeMan.java b/src/main/java/com/hbm/blocks/bomb/NukeMan.java index 81f9576896..cb85d74d30 100644 --- a/src/main/java/com/hbm/blocks/bomb/NukeMan.java +++ b/src/main/java/com/hbm/blocks/bomb/NukeMan.java @@ -14,6 +14,7 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.bomb.TileEntityNukeMan; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; @@ -34,6 +35,7 @@ import net.minecraft.util.SoundCategory; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -228,11 +230,11 @@ public void explode(World world, BlockPos pos) { @Override public void addInformation(ItemStack stack, World player, List tooltip, ITooltipFlag advanced) { - tooltip.add("§2[Nuclear Bomb]§r"); - tooltip.add(" §eRadius: "+BombConfig.manRadius+"m§r"); + tooltip.add(TextFormatting.DARK_GREEN+"["+ I18nUtil.resolveKey("trait.nuclearbomb")+"]"+"§r"); + tooltip.add(TextFormatting.YELLOW+I18nUtil.resolveKey("desc.radius")+" "+BombConfig.manRadius+"m§r"); if(!BombConfig.disableNuclear){ - tooltip.add("§2[Fallout]§r"); - tooltip.add(" §aRadius: "+(int)BombConfig.manRadius*(1+BombConfig.falloutRange/100)+"m§r"); + tooltip.add(TextFormatting.DARK_GREEN+"["+ I18nUtil.resolveKey("trait.fallout")+"]"+"§r"); + tooltip.add(TextFormatting.GREEN+I18nUtil.resolveKey("desc.radius")+" "+(int)BombConfig.manRadius*(1+BombConfig.falloutRange/100)+"m§r"); } } } diff --git a/src/main/java/com/hbm/blocks/bomb/NukeMike.java b/src/main/java/com/hbm/blocks/bomb/NukeMike.java index e0e6b6a498..72ac7a0d2b 100644 --- a/src/main/java/com/hbm/blocks/bomb/NukeMike.java +++ b/src/main/java/com/hbm/blocks/bomb/NukeMike.java @@ -13,6 +13,7 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.bomb.TileEntityNukeMike; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; @@ -34,6 +35,7 @@ import net.minecraft.util.Rotation; import net.minecraft.util.SoundCategory; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -209,11 +211,11 @@ public IBlockState withMirror(IBlockState state, Mirror mirrorIn) @Override public void addInformation(ItemStack stack, World player, List tooltip, ITooltipFlag advanced) { - tooltip.add("§6[Thermonuclear Bomb]§r"); - tooltip.add(" §eRadius: "+BombConfig.mikeRadius+"m§r"); + tooltip.add(TextFormatting.GOLD+"["+ I18nUtil.resolveKey("trait.thermobomb")+"]"+"§r"); + tooltip.add(TextFormatting.YELLOW+I18nUtil.resolveKey("desc.radius")+" "+BombConfig.mikeRadius+"m§r"); if(!BombConfig.disableNuclear){ - tooltip.add("§2[Fallout]§r"); - tooltip.add(" §aRadius: "+(int)BombConfig.mikeRadius*(1+BombConfig.falloutRange/100)+"m§r"); + tooltip.add(TextFormatting.DARK_GREEN+"["+ I18nUtil.resolveKey("trait.fallout")+"]"+"§r"); + tooltip.add(TextFormatting.GREEN+ I18nUtil.resolveKey("desc.radius")+" "+(int)BombConfig.mikeRadius*(1+BombConfig.falloutRange/100)+"m§r"); } } } diff --git a/src/main/java/com/hbm/blocks/bomb/NukeN2.java b/src/main/java/com/hbm/blocks/bomb/NukeN2.java index 0be043934c..51397cdc51 100644 --- a/src/main/java/com/hbm/blocks/bomb/NukeN2.java +++ b/src/main/java/com/hbm/blocks/bomb/NukeN2.java @@ -11,6 +11,7 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.bomb.TileEntityNukeN2; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; @@ -32,6 +33,7 @@ import net.minecraft.util.Rotation; import net.minecraft.util.SoundCategory; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -188,10 +190,10 @@ public IBlockState withMirror(IBlockState state, Mirror mirrorIn) @Override public void addInformation(ItemStack stack, World player, List tooltip, ITooltipFlag advanced) { - tooltip.add("§c[Extreme Bomb]§r"); - tooltip.add(" §eRadius: "+BombConfig.n2Radius+"m§r"); + tooltip.add(TextFormatting.RED+"["+ I18nUtil.resolveKey("trait.extremebomb")+"]"+"§r"); + tooltip.add(TextFormatting.YELLOW+I18nUtil.resolveKey("desc.radius")+" "+BombConfig.n2Radius+"m§r"); tooltip.add(""); - tooltip.add("§eEach Charge Adds: "+(int)(BombConfig.n2Radius/12)+"m§r"); + tooltip.add(TextFormatting.YELLOW+I18nUtil.resolveKey("desc.chargeadds")+" "+(int)(BombConfig.n2Radius/12)+"m§r"); } } diff --git a/src/main/java/com/hbm/blocks/bomb/NukeN45.java b/src/main/java/com/hbm/blocks/bomb/NukeN45.java index a127252d85..86a79b1e80 100644 --- a/src/main/java/com/hbm/blocks/bomb/NukeN45.java +++ b/src/main/java/com/hbm/blocks/bomb/NukeN45.java @@ -8,6 +8,7 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.bomb.TileEntityNukeN45; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; @@ -19,6 +20,7 @@ import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -106,6 +108,6 @@ public boolean isFullCube(IBlockState state) { @Override public void addInformation(ItemStack stack, World player, List tooltip, ITooltipFlag advanced) { - tooltip.add("§d[Modular Bomb]§r"); + tooltip.add(TextFormatting.LIGHT_PURPLE+"["+ I18nUtil.resolveKey("trait.modularbomb")+"]"+"§r"); } } diff --git a/src/main/java/com/hbm/blocks/bomb/NukePrototype.java b/src/main/java/com/hbm/blocks/bomb/NukePrototype.java index d337aeaeaf..ced52c38a5 100644 --- a/src/main/java/com/hbm/blocks/bomb/NukePrototype.java +++ b/src/main/java/com/hbm/blocks/bomb/NukePrototype.java @@ -12,6 +12,7 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.bomb.TileEntityNukePrototype; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; @@ -33,6 +34,7 @@ import net.minecraft.util.Rotation; import net.minecraft.util.SoundCategory; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -218,7 +220,7 @@ public IBlockState withMirror(IBlockState state, Mirror mirrorIn) @Override public void addInformation(ItemStack stack, World player, List tooltip, ITooltipFlag advanced) { - tooltip.add("§b[Schrabidium Bomb]§r"); - tooltip.add(" §eRadius: "+BombConfig.prototypeRadius+"m§r"); + tooltip.add(TextFormatting.AQUA+"["+ I18nUtil.resolveKey("trait.schrabbomb")+"]"+"§r"); + tooltip.add(TextFormatting.YELLOW+I18nUtil.resolveKey("desc.radius")+" "+BombConfig.prototypeRadius+"m§r"); } } diff --git a/src/main/java/com/hbm/blocks/bomb/NukeSolinium.java b/src/main/java/com/hbm/blocks/bomb/NukeSolinium.java index b1b131537a..07fddc2db7 100644 --- a/src/main/java/com/hbm/blocks/bomb/NukeSolinium.java +++ b/src/main/java/com/hbm/blocks/bomb/NukeSolinium.java @@ -11,6 +11,7 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.bomb.TileEntityNukeSolinium; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; @@ -32,6 +33,7 @@ import net.minecraft.util.Rotation; import net.minecraft.util.SoundCategory; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -195,10 +197,10 @@ public IBlockState withMirror(IBlockState state, Mirror mirrorIn) @Override public void addInformation(ItemStack stack, World player, List tooltip, ITooltipFlag advanced) { - tooltip.add("§3[Solinium Bomb]§r"); - tooltip.add(" §eRadius: "+BombConfig.soliniumRadius+"m§r"); + tooltip.add(TextFormatting.DARK_AQUA+"["+ I18nUtil.resolveKey("trait.soliniumbomb")+"]"+"§r"); + tooltip.add(TextFormatting.YELLOW+I18nUtil.resolveKey("desc.radius")+" "+BombConfig.soliniumRadius+"m§r"); tooltip.add(""); - tooltip.add("§dThis Neutron Bomb is the weaponized daughter of the G.E.C.K.§r"); - tooltip.add("§dIt emits so much neutron radiation that it transmutates all radioactive elements in range via alpha decay until only non-radioactive elements remain.§r"); + tooltip.add(TextFormatting.LIGHT_PURPLE+I18nUtil.resolveKey("desc.nukesolinium1")+"§r"); + tooltip.add(TextFormatting.LIGHT_PURPLE+I18nUtil.resolveKey("desc.nukesolinium2")+"§r"); } } diff --git a/src/main/java/com/hbm/blocks/bomb/NukeTsar.java b/src/main/java/com/hbm/blocks/bomb/NukeTsar.java index be01f552bf..e2701fada4 100644 --- a/src/main/java/com/hbm/blocks/bomb/NukeTsar.java +++ b/src/main/java/com/hbm/blocks/bomb/NukeTsar.java @@ -11,6 +11,7 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.bomb.TileEntityNukeTsar; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; @@ -32,6 +33,7 @@ import net.minecraft.util.Rotation; import net.minecraft.util.SoundCategory; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -215,11 +217,11 @@ public IBlockState withMirror(IBlockState state, Mirror mirrorIn) @Override public void addInformation(ItemStack stack, World player, List tooltip, ITooltipFlag advanced) { - tooltip.add("§6[Thermonuclear Bomb]§r"); - tooltip.add(" §eRadius: "+BombConfig.tsarRadius+"m§r"); + tooltip.add(TextFormatting.GOLD+"["+ I18nUtil.resolveKey("trait.thermobomb")+"]"+"§r"); + tooltip.add(TextFormatting.YELLOW+I18nUtil.resolveKey("desc.radius")+" "+BombConfig.tsarRadius+"m§r"); if(!BombConfig.disableNuclear){ - tooltip.add("§2[Fallout]§r"); - tooltip.add(" §aRadius: "+(int)BombConfig.tsarRadius*(1+BombConfig.falloutRange/100)+"m§r"); + tooltip.add(TextFormatting.DARK_GREEN+"["+ I18nUtil.resolveKey("trait.fallout")+"]"+"§r"); + tooltip.add(TextFormatting.GREEN+ I18nUtil.resolveKey("desc.radius")+" "+(int)BombConfig.tsarRadius*(1+BombConfig.falloutRange/100)+"m§r"); } } } diff --git a/src/main/java/com/hbm/blocks/bomb/RailgunPlasma.java b/src/main/java/com/hbm/blocks/bomb/RailgunPlasma.java index deec3ef641..65118d952e 100644 --- a/src/main/java/com/hbm/blocks/bomb/RailgunPlasma.java +++ b/src/main/java/com/hbm/blocks/bomb/RailgunPlasma.java @@ -7,6 +7,7 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.bomb.TileEntityRailgun; +import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.SoundType; @@ -35,7 +36,7 @@ public RailgunPlasma(Material p_i45386_1_, String s) { @Override public void addInformation(ItemStack stack, World player, List tooltip, ITooltipFlag advanced) { - tooltip.add("Uses Deuterium Plasma Capsules"); + tooltip.add(I18nUtil.resolveKey("desc.usesdpc")); } @Override diff --git a/src/main/java/com/hbm/blocks/generic/BlockBedrockOreTE.java b/src/main/java/com/hbm/blocks/generic/BlockBedrockOreTE.java index 2f4a077af3..438e2f42b1 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockBedrockOreTE.java +++ b/src/main/java/com/hbm/blocks/generic/BlockBedrockOreTE.java @@ -51,32 +51,29 @@ public void onEntityWalk(World worldIn, BlockPos pos, Entity entityIn) { public void printHook(Pre event, World world, int x, int y, int z) { TileEntity te = world.getTileEntity(new BlockPos(x, y, z)); - + if(!(te instanceof TileEntityBedrockOre)) return; TileEntityBedrockOre ore = (TileEntityBedrockOre) te; List text = new ArrayList(); - text.add("Ore: "+BedrockOreRegistry.getOreName(ore.oreName)); - text.add("Tier: " + ore.tier); + text.add(I18nUtil.resolveKey("desc.ore")+" "+(I18nUtil.resolveKey("desc.bedrock_ore."+BedrockOreRegistry.getOreName(ore.oreName)))); + text.add(I18nUtil.resolveKey("desc.tier")+" " + ore.tier); if(ore.acidRequirement != null) { - text.add("Requires: " + ore.acidRequirement.amount + "mB " + ore.acidRequirement.getFluid().getLocalizedName(ore.acidRequirement)); + text.add(I18nUtil.resolveKey("desc.requires")+" " + ore.acidRequirement.amount + "mB " + ore.acidRequirement.getFluid().getLocalizedName(ore.acidRequirement)); } ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } - + public static class TileEntityBedrockOre extends TileEntity { - + public String oreName; public int color; public int tier; public FluidStack acidRequirement; - - public TileEntityBedrockOre() { - } public TileEntityBedrockOre(String oreName) { this.oreName = oreName; @@ -93,6 +90,7 @@ public TileEntityBedrockOre setOre(String oreName){ this.markDirty(); return this; } + @Override public void readFromNBT(NBTTagCompound nbt) { diff --git a/src/main/java/com/hbm/blocks/generic/BlockControlPanel.java b/src/main/java/com/hbm/blocks/generic/BlockControlPanel.java index acfa096cfd..2e5e71618a 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockControlPanel.java +++ b/src/main/java/com/hbm/blocks/generic/BlockControlPanel.java @@ -1,12 +1,13 @@ package com.hbm.blocks.generic; -import java.util.Map; import java.util.Random; -import com.hbm.blocks.BlockControlPanelType; +import org.lwjgl.opengl.GL11; + import com.hbm.blocks.ModBlocks; import com.hbm.interfaces.ICustomSelectionBox; -import com.hbm.inventory.control_panel.*; +import com.hbm.inventory.control_panel.Control; +import com.hbm.inventory.control_panel.ControlEvent; import com.hbm.items.ModItems; import com.hbm.main.ClientProxy; import com.hbm.main.MainRegistry; @@ -18,8 +19,6 @@ import net.minecraft.block.BlockHorizontal; import net.minecraft.block.material.Material; import net.minecraft.block.properties.IProperty; -import net.minecraft.block.properties.PropertyBool; -import net.minecraft.block.properties.PropertyDirection; import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.state.BlockFaceShape; import net.minecraft.block.state.BlockStateContainer; @@ -42,16 +41,11 @@ import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -import org.lwjgl.opengl.GL11; - -import javax.annotation.Nonnull; public class BlockControlPanel extends BlockContainer implements ICustomSelectionBox { - public static final PropertyBool UP = PropertyBool.create("up"); - public static final PropertyBool DOWN = PropertyBool.create("down"); - public static final PropertyDirection FACING = PropertyDirection.create("facing", EnumFacing.Plane.HORIZONTAL); - + public static final PropertyEnum FACING = BlockHorizontal.FACING; + public BlockControlPanel(Material materialIn, String s) { super(materialIn); this.setUnlocalizedName(s); @@ -59,16 +53,16 @@ public BlockControlPanel(Material materialIn, String s) { ModBlocks.ALL_BLOCKS.add(this); } - + @Override public TileEntity createNewTileEntity(World worldIn, int meta) { - TileEntityControlPanel te = new TileEntityControlPanel(); - te.panel = new ControlPanel(te, 0.25F, (float) Math.toRadians(20), 0, 0, 0.25F, 0); - return te; + return new TileEntityControlPanel(); } @Override public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { + if(playerIn.isSneaking()) + return false; if(!worldIn.isRemote){ if(playerIn.getHeldItem(hand).getItem() == ModItems.screwdriver || playerIn.getHeldItem(hand).getItem() == ModItems.screwdriver_desh) playerIn.openGui(MainRegistry.instance, ModBlocks.guiID_control_panel, worldIn, pos.getX(), pos.getY(), pos.getZ()); @@ -76,9 +70,7 @@ public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, TileEntityControlPanel control = (TileEntityControlPanel)worldIn.getTileEntity(pos); Control ctrl = control.panel.getSelectedControl(playerIn.getPositionEyes(1), playerIn.getLook(1)); if(ctrl != null){ - ControlEvent evt = ControlEvent.newEvent("ctrl_press"); - evt.setVar("isSneaking", new DataValueFloat(playerIn.isSneaking())); - NBTTagCompound dat = evt.writeToNBT(new NBTTagCompound()); + NBTTagCompound dat = ControlEvent.newEvent("ctrl_button_press").writeToNBT(new NBTTagCompound()); dat.setInteger("click_control", ctrl.panel.controls.indexOf(ctrl)); PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(dat, pos)); return true; @@ -86,20 +78,23 @@ public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, } return true; } - - @Nonnull + @Override public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) { - TileEntity te = source.getTileEntity(pos); - if (te instanceof TileEntityControlPanel) { - AxisAlignedBB ret = ((TileEntityControlPanel) te).getBoundingBox(state.getValue(UP), state.getValue(DOWN), state.getValue(FACING)); - if (ret != null) { - return ret; - } + switch(state.getValue(FACING)){ + case WEST: + return new AxisAlignedBB(0.5, 0, 0, 1, 0.3, 1); + case EAST: + return new AxisAlignedBB(0, 0, 0, 0.5, 0.3, 1); + case NORTH: + return new AxisAlignedBB(0, 0, 0.5, 1, 0.3, 1); + case SOUTH: + return new AxisAlignedBB(0, 0, 0, 1, 0.3, 0.5); + default: + return new AxisAlignedBB(0, 0, 0, 0, 0, 0); } - return super.getBoundingBox(state, source, pos); } - + @Override public BlockFaceShape getBlockFaceShape(IBlockAccess worldIn, IBlockState state, BlockPos pos, EnumFacing face){ return BlockFaceShape.UNDEFINED; @@ -107,10 +102,7 @@ public BlockFaceShape getBlockFaceShape(IBlockAccess worldIn, IBlockState state, @Override public IBlockState getStateForPlacement(World world, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer, EnumHand hand){ - return this.getDefaultState() - .withProperty(FACING, placer.getHorizontalFacing().getOpposite()) - .withProperty(UP, facing.getIndex() == 1) - .withProperty(DOWN, facing.getIndex() == 0); + return this.getDefaultState().withProperty(FACING, placer.getHorizontalFacing().getOpposite()); } @Override @@ -122,11 +114,6 @@ public EnumBlockRenderType getRenderType(IBlockState state) { public Item getItemDropped(IBlockState state, Random rand, int fortune) { return Items.AIR; } - - @Override - public boolean isFullCube(IBlockState state) { - return false; - } @Override public boolean isOpaqueCube(IBlockState state) { @@ -165,9 +152,7 @@ public boolean renderBox(World world, EntityPlayer player, IBlockState state, Bl control.panel.transform.store(ClientProxy.AUX_GL_BUFFER); ClientProxy.AUX_GL_BUFFER.rewind(); GL11.glMultMatrix(ClientProxy.AUX_GL_BUFFER); - if (ctrl.getBoundingBox() != null) - // offset to bury bottom lines - RenderGlobal.drawSelectionBoundingBox(ctrl.getBoundingBox().offset(0, -.01F, 0), 0, 0, 0, 0.4F); + RenderGlobal.drawSelectionBoundingBox(ctrl.getBoundingBox(), 0, 0, 0, 0.4F); GL11.glPopMatrix(); return true; } @@ -176,23 +161,24 @@ public boolean renderBox(World world, EntityPlayer player, IBlockState state, Bl @Override protected BlockStateContainer createBlockState() { - return new BlockStateContainer(this, UP, DOWN, FACING); + return new BlockStateContainer(this, new IProperty[]{FACING}); } @Override public int getMetaFromState(IBlockState state) { - int up = state.getValue(UP) ? 1 : 0; - int down = state.getValue(DOWN) ? 1 : 0; - int facing = state.getValue(FACING).getIndex(); - return (up << 3) | (down << 2) | (facing - 2); + return ((EnumFacing)state.getValue(FACING)).getIndex(); } @Override public IBlockState getStateFromMeta(int meta) { - return this.getDefaultState() - .withProperty(UP, ((meta >> 3) & 1) > 0) - .withProperty(DOWN, ((meta >> 2) & 1) > 0) - .withProperty(FACING, EnumFacing.getFront((meta & 3) + 2)); + EnumFacing enumfacing = EnumFacing.getFront(meta); + + if (enumfacing.getAxis() == EnumFacing.Axis.Y) + { + enumfacing = EnumFacing.NORTH; + } + + return this.getDefaultState().withProperty(FACING, enumfacing); } @Override diff --git a/src/main/java/com/hbm/blocks/generic/BlockDepth.java b/src/main/java/com/hbm/blocks/generic/BlockDepth.java index a316039721..fc48430948 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockDepth.java +++ b/src/main/java/com/hbm/blocks/generic/BlockDepth.java @@ -2,6 +2,7 @@ import java.util.List; import com.hbm.blocks.ModBlocks; +import com.hbm.util.I18nUtil; import api.hbm.item.IDepthRockTool; import net.minecraft.block.Block; @@ -11,6 +12,7 @@ import net.minecraft.client.util.ITooltipFlag; import net.minecraft.util.math.BlockPos; import net.minecraft.item.ItemStack; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; public class BlockDepth extends Block { @@ -37,13 +39,13 @@ public float getPlayerRelativeBlockHardness(IBlockState state, EntityPlayer play } @Override - public void addInformation(ItemStack stack, World player, List tooltip, ITooltipFlag advanced) { - super.addInformation(stack, player, tooltip, advanced); + public void addInformation(ItemStack stack, World world, List list, ITooltipFlag flagIn) { + super.addInformation(stack, world, list, flagIn); float hardness = this.getExplosionResistance(null); - tooltip.add("§d[Unmineable]§r"); - tooltip.add("§eCan only be destroyed by explosions§r"); + list.add(TextFormatting.LIGHT_PURPLE + "[" + I18nUtil.resolveKey("trait.unmineable") + "]"); + list.add(TextFormatting.YELLOW + I18nUtil.resolveKey("trait.destroybyexplosion")); if(hardness > 50){ - tooltip.add("§6Blast Resistance: "+hardness+"§r"); + list.add(TextFormatting.GOLD + I18nUtil.resolveKey("trait.blastres") + " " + hardness); } } } \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java b/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java index e05cbc114b..c3323db87e 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java +++ b/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java @@ -11,6 +11,7 @@ import com.hbm.tileentity.DoorDecl; import com.hbm.tileentity.TileEntityDoorGeneric; +import com.hbm.util.I18nUtil; import net.minecraft.item.ItemStack; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.block.Block; @@ -26,6 +27,7 @@ import net.minecraft.util.Rotation; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -180,13 +182,13 @@ public boolean isRadResistant(World worldIn, BlockPos blockPos){ } @Override - public void addInformation(ItemStack stack, World player, List tooltip, ITooltipFlag advanced) { + public void addInformation(ItemStack stack, World player, List list, ITooltipFlag advanced) { float hardness = this.getExplosionResistance(null); if(this.isRadResistant){ - tooltip.add("§2[Radiation Shielding]§r"); + list.add(TextFormatting.DARK_GREEN + "[" + I18nUtil.resolveKey("trait.radshield") + "]"); } if(hardness > 50){ - tooltip.add("§6Blast Resistance: "+hardness+"§r"); + list.add(TextFormatting.GOLD + I18nUtil.resolveKey("trait.blastres") + " " + hardness); } } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockGenericSlab.java b/src/main/java/com/hbm/blocks/generic/BlockGenericSlab.java index c8c2c3cd50..f037bc53dd 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockGenericSlab.java +++ b/src/main/java/com/hbm/blocks/generic/BlockGenericSlab.java @@ -5,6 +5,7 @@ import com.hbm.blocks.ModBlocks; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.block.Block; import net.minecraft.block.BlockSlab; @@ -17,6 +18,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IStringSerializable; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; public class BlockGenericSlab extends BlockSlab { @@ -35,10 +37,10 @@ public BlockGenericSlab(Material materialIn, boolean isDouble, String s) { } @Override - public void addInformation(ItemStack stack, World player, List tooltip, ITooltipFlag advanced) { + public void addInformation(ItemStack stack, World player, List list, ITooltipFlag advanced) { float hardness = this.getExplosionResistance(null); if(hardness > 50){ - tooltip.add("§6Blast Resistance: "+hardness+"§r"); + list.add(TextFormatting.GOLD + I18nUtil.resolveKey("trait.blastres") + " " + hardness); } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockGenericStairs.java b/src/main/java/com/hbm/blocks/generic/BlockGenericStairs.java index 4fb1757ef0..cb6c0b3905 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockGenericStairs.java +++ b/src/main/java/com/hbm/blocks/generic/BlockGenericStairs.java @@ -4,12 +4,14 @@ import com.hbm.blocks.ModBlocks; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.block.Block; import net.minecraft.block.BlockStairs; import net.minecraft.block.SoundType; import net.minecraft.block.state.IBlockState; import net.minecraft.item.ItemStack; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; public class BlockGenericStairs extends BlockStairs { @@ -23,10 +25,10 @@ public BlockGenericStairs(IBlockState modelState, String s) { } @Override - public void addInformation(ItemStack stack, World player, List tooltip, ITooltipFlag advanced) { + public void addInformation(ItemStack stack, World player, List list, ITooltipFlag advanced) { float hardness = this.getExplosionResistance(null); if(hardness > 50){ - tooltip.add("§6Blast Resistance: "+hardness+"§r"); + list.add(TextFormatting.GOLD + I18nUtil.resolveKey("trait.blastres") + " " + hardness); } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockNTMGlass.java b/src/main/java/com/hbm/blocks/generic/BlockNTMGlass.java index 9d36cd117c..d5de6cb331 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockNTMGlass.java +++ b/src/main/java/com/hbm/blocks/generic/BlockNTMGlass.java @@ -7,6 +7,7 @@ import com.hbm.handler.RadiationSystemNT; import com.hbm.interfaces.IRadResistantBlock; +import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.block.BlockBreakable; import net.minecraft.block.SoundType; @@ -16,6 +17,7 @@ import net.minecraft.util.BlockRenderLayer; import net.minecraft.util.math.BlockPos; import net.minecraft.item.ItemStack; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; public class BlockNTMGlass extends BlockBreakable implements IRadResistantBlock { @@ -97,14 +99,14 @@ public boolean isRadResistant(World worldIn, BlockPos blockPos){ } @Override - public void addInformation(ItemStack stack, World player, List tooltip, ITooltipFlag advanced) { - super.addInformation(stack, player, tooltip, advanced); + public void addInformation(ItemStack stack, World world, List list, ITooltipFlag flagIn) { + super.addInformation(stack, world, list, flagIn); float hardness = this.getExplosionResistance(null); if(this.isRadResistant){ - tooltip.add("§2[Radiation Shielding]§r"); + list.add(TextFormatting.DARK_GREEN + "[" + I18nUtil.resolveKey("trait.radshield") + "]"); } if(hardness > 50){ - tooltip.add("§6Blast Resistance: "+hardness+"§r"); + list.add(TextFormatting.GOLD + I18nUtil.resolveKey("trait.blastres") + " " + hardness); } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockNetherCoal.java b/src/main/java/com/hbm/blocks/generic/BlockNetherCoal.java index c38c7bf3ec..4fc5bd2208 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockNetherCoal.java +++ b/src/main/java/com/hbm/blocks/generic/BlockNetherCoal.java @@ -17,8 +17,8 @@ public class BlockNetherCoal extends BlockOutgas { - public BlockNetherCoal(boolean randomTick, int rate, boolean onBreak, String s) { - super(randomTick, rate, onBreak, s); + public BlockNetherCoal(Material mat, boolean randomTick, int rate, boolean onBreak, String s) { + super(mat, randomTick, rate, onBreak, s); } @Override diff --git a/src/main/java/com/hbm/blocks/generic/BlockOre.java b/src/main/java/com/hbm/blocks/generic/BlockOre.java new file mode 100644 index 0000000000..f951a8ee6f --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockOre.java @@ -0,0 +1,283 @@ +package com.hbm.blocks.generic; + +import java.util.List; +import java.util.Random; + +import com.hbm.blocks.ModBlocks; +import com.hbm.items.ModItems; +import com.hbm.main.MainRegistry; +import com.hbm.potion.HbmPotion; +import com.hbm.interfaces.IItemHazard; +import com.hbm.modules.ItemHazardModule; +import com.hbm.saveddata.RadiationSavedData; + +import net.minecraft.block.Block; +import net.minecraft.block.SoundType; +import net.minecraft.block.material.Material; +import net.minecraft.block.state.IBlockState; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.util.EnumHand; +import net.minecraft.init.MobEffects; +import net.minecraft.init.SoundEvents; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.EnumParticleTypes; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +public class BlockOre extends Block implements IItemHazard { + + ItemHazardModule module; + public static int xp; + + public BlockOre(Material materialIn, String name, int harvestLvl, int xp) { + super(materialIn); + this.xp = xp; + this.setUnlocalizedName(name); + this.setRegistryName(name); + this.setCreativeTab(MainRegistry.controlTab); + this.setTickRandomly(false); + this.setHarvestLevel("pickaxe", harvestLvl); + this.module = new ItemHazardModule(); + ModBlocks.ALL_BLOCKS.add(this); + } + + public BlockOre(Material materialIn, String name, int harvestLvl) { + this(materialIn, name, harvestLvl, 2); + } + + public BlockOre(Material mat, SoundType sound, String name, int harvestLvl){ + this(mat, name, harvestLvl); + super.setSoundType(sound); + } + + @Override + public ItemHazardModule getModule() { + return module; + } + + @Override + public int getExpDrop(IBlockState state, IBlockAccess world, BlockPos pos, int fortune){ + return xp; + } + + @Override + public Item getItemDropped(IBlockState state, Random rand, int fortune) { + if(this == ModBlocks.waste_planks) { + return Items.COAL; + } + if(this == ModBlocks.ore_asbestos || this == ModBlocks.ore_gneiss_asbestos || this == ModBlocks.basalt_asbestos) + { + return ModItems.ingot_asbestos; + } + if(this == ModBlocks.ore_nether_fire){ + return rand.nextInt(10) == 0 ? ModItems.ingot_phosphorus : ModItems.powder_fire; + } + if(this == ModBlocks.ore_sulfur || this == ModBlocks.ore_nether_sulfur || this == ModBlocks.ore_meteor_sulfur || this == ModBlocks.basalt_sulfur){ + return ModItems.sulfur; + } + if(this == ModBlocks.ore_niter){ + return ModItems.niter; + } + if(this == ModBlocks.ore_fluorite){ + return ModItems.fluorite; + } + if(this == ModBlocks.ore_lignite){ + return ModItems.lignite; + } + if(this == ModBlocks.ore_rare || this == ModBlocks.ore_gneiss_rare) + { + switch(rand.nextInt(7)) { + case 0: return ModItems.fragment_boron; + case 1: return ModItems.fragment_cerium; + case 2: return ModItems.fragment_cobalt; + case 3: return ModItems.fragment_lanthanium; + case 4: return ModItems.fragment_neodymium; + case 5: return ModItems.fragment_niobium; + case 6: return ModItems.fragment_actinium; + } + } + if(this == ModBlocks.block_meteor) + { + return rand.nextInt(10) == 0 ? ModItems.plate_dalekanium : Item.getItemFromBlock(ModBlocks.block_meteor); + } + if(this == ModBlocks.block_meteor_cobble) + { + return ModItems.fragment_meteorite; + } + if(this == ModBlocks.block_meteor_broken) + { + return ModItems.fragment_meteorite; + } + if(this == ModBlocks.block_meteor_treasure) + { + switch(rand.nextInt(35)) { + case 0: return ModItems.coil_advanced_alloy; + case 1: return ModItems.plate_advanced_alloy; + case 2: return ModItems.powder_desh_mix; + case 3: return ModItems.ingot_desh; + case 4: return ModItems.battery_advanced; + case 5: return ModItems.battery_lithium_cell; + case 6: return ModItems.battery_advanced_cell; + case 7: return ModItems.nugget_schrabidium; + case 8: return ModItems.ingot_plutonium; + case 9: return ModItems.ingot_thorium_fuel; + case 10: return ModItems.ingot_u233; + case 11: return ModItems.turbine_tungsten; + case 12: return ModItems.ingot_dura_steel; + case 13: return ModItems.ingot_polymer; + case 14: return ModItems.ingot_tungsten; + case 15: return ModItems.ingot_combine_steel; + case 16: return ModItems.ingot_lanthanium; + case 17: return ModItems.ingot_actinium; + case 18: return Item.getItemFromBlock(ModBlocks.block_meteor); + case 19: return Item.getItemFromBlock(ModBlocks.fusion_heater); + case 20: return Item.getItemFromBlock(ModBlocks.fusion_core); + case 21: return Item.getItemFromBlock(ModBlocks.watz_element); + case 22: return Item.getItemFromBlock(ModBlocks.ore_rare); + case 23: return Item.getItemFromBlock(ModBlocks.fusion_conductor); + case 24: return Item.getItemFromBlock(ModBlocks.reactor_computer); + case 25: return Item.getItemFromBlock(ModBlocks.machine_diesel); + case 26: return Item.getItemFromBlock(ModBlocks.machine_rtg_grey); + case 27: return ModItems.pellet_rtg; + case 28: return ModItems.pellet_rtg_weak; + case 29: return ModItems.rtg_unit; + case 30: return ModItems.gun_spark_ammo; + case 31: return ModItems.gun_fatman_ammo; + case 32: return ModItems.gun_mirv_ammo; + case 33: return ModItems.gun_defabricator_ammo; + case 34: return ModItems.gun_osipr_ammo2; + } + } + if(this == ModBlocks.deco_aluminium) + { + return ModItems.ingot_aluminium; + } + if(this == ModBlocks.deco_beryllium) + { + return ModItems.ingot_beryllium; + } + if(this == ModBlocks.deco_lead) + { + return ModItems.ingot_lead; + } + if(this == ModBlocks.deco_red_copper) + { + return ModItems.ingot_red_copper; + } + if(this == ModBlocks.deco_steel) + { + return ModItems.ingot_steel; + } + if(this == ModBlocks.deco_titanium) + { + return ModItems.ingot_titanium; + } + if(this == ModBlocks.deco_tungsten) + { + return ModItems.ingot_tungsten; + } + if(this == ModBlocks.deco_asbestos) + { + return ModItems.ingot_asbestos; + } + if(this == ModBlocks.ore_cinnebar) { + return ModItems.cinnebar; + } + if(this == ModBlocks.ore_coltan) { + return ModItems.fragment_coltan; + } + if(this == ModBlocks.ore_cobalt || this == ModBlocks.ore_nether_cobalt) { + return ModItems.fragment_cobalt; + } + return super.getItemDropped(state, rand, fortune); + } + + @Override + public int quantityDropped(IBlockState state, int fortune, Random rand) { + if(this == ModBlocks.ore_sulfur || this == ModBlocks.ore_nether_sulfur || this == ModBlocks.ore_meteor_sulfur || this == ModBlocks.basalt_sulfur){ + return 2 + rand.nextInt(3) * fortune; + } + if(this == ModBlocks.block_niter){ + return 4 + rand.nextInt(3); + } + if(this == ModBlocks.ore_niter){ + return 1 + rand.nextInt(2) * fortune; + } + if(this == ModBlocks.ore_fluorite){ + return 2 + rand.nextInt(3) * fortune; + } + if(this == ModBlocks.ore_rare || this == ModBlocks.ore_gneiss_rare){ + return 4 + rand.nextInt(8); + } + if(this == ModBlocks.block_meteor_broken) + { + return 1 + rand.nextInt(3); + } + if(this == ModBlocks.block_meteor_treasure) + { + return 1 + rand.nextInt(3); + } + if(this == ModBlocks.ore_cobalt) { + return 4 + rand.nextInt(6); + } + if(this == ModBlocks.ore_nether_cobalt) { + return 5 + rand.nextInt(8); + } + return super.quantityDropped(state, fortune, rand); + } + + @Override + public int damageDropped(IBlockState state) { + return this == ModBlocks.waste_planks ? 1 : 0; + } + + + @Override + public void neighborChanged(IBlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos) { + if (world.getBlockState(pos.down()).getBlock() == ModBlocks.ore_oil_empty) { + world.setBlockState(pos, ModBlocks.ore_oil_empty.getDefaultState()); + world.setBlockState(pos.down(), ModBlocks.ore_oil.getDefaultState()); + } + } + + @Override + public void addInformation(ItemStack stack, World player, List tooltip, ITooltipFlag advanced) { + if(stack.getItem() == Item.getItemFromBlock(ModBlocks.ore_uranium) || stack.getItem() == Item.getItemFromBlock(ModBlocks.ore_gneiss_uranium) || stack.getItem() == Item.getItemFromBlock(ModBlocks.ore_nether_uranium)){ + tooltip.add("High-Radiation creates medium amounts of schrabidium inside this block"); + } + if(stack.getItem() == Item.getItemFromBlock(ModBlocks.ore_schrabidium) || stack.getItem() == Item.getItemFromBlock(ModBlocks.ore_gneiss_schrabidium) || stack.getItem() == Item.getItemFromBlock(ModBlocks.ore_nether_schrabidium)){ + tooltip.add("High-Radiation has created medium amounts of schrabidium inside this block"); + } + if(stack.getItem() == Item.getItemFromBlock(ModBlocks.ore_oil)){ + tooltip.add("You weren't supposed to mine that."); + tooltip.add("Come on, get a derrick you doofus."); + } + } + + @Override + public void onEntityWalk(World worldIn, BlockPos pos, Entity entity) { + if(entity instanceof EntityLivingBase) + this.module.applyEffects((EntityLivingBase)entity, 0.5F, 0, false, EnumHand.MAIN_HAND); + } + + @Override + public void onEntityCollidedWithBlock(World worldIn, BlockPos pos, IBlockState state, Entity entity){ + if(entity instanceof EntityLivingBase) + this.module.applyEffects((EntityLivingBase)entity, 0.5F, 0, false, EnumHand.MAIN_HAND); + } + + @Override + public Block setSoundType(SoundType sound) { + return super.setSoundType(sound); + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockOutgas.java b/src/main/java/com/hbm/blocks/generic/BlockOutgas.java index b7b0d7032b..cb10c4ad2e 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockOutgas.java +++ b/src/main/java/com/hbm/blocks/generic/BlockOutgas.java @@ -10,6 +10,7 @@ import com.hbm.modules.ItemHazardModule; import net.minecraft.block.Block; +import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.Entity; import net.minecraft.init.Blocks; @@ -17,7 +18,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -public class BlockOutgas extends BlockNTMOre implements IItemHazard { +public class BlockOutgas extends BlockOre implements IItemHazard { boolean randomTick; int rate; @@ -26,8 +27,8 @@ public class BlockOutgas extends BlockNTMOre implements IItemHazard { ItemHazardModule module; - public BlockOutgas(boolean randomTick, int rate, boolean onBreak, String s) { - super(s, 1); + public BlockOutgas(Material mat, boolean randomTick, int rate, boolean onBreak, String s) { + super(mat, s, 1); this.module = new ItemHazardModule(); this.setTickRandomly(randomTick); this.randomTick = randomTick; @@ -36,8 +37,8 @@ public BlockOutgas(boolean randomTick, int rate, boolean onBreak, String s) { this.onNeighbour = false; } - public BlockOutgas(boolean randomTick, int rate, boolean onBreak, boolean onNeighbour, String s) { - this(randomTick, rate, onBreak, s); + public BlockOutgas(Material mat, boolean randomTick, int rate, boolean onBreak, boolean onNeighbour, String s) { + this(mat, randomTick, rate, onBreak, s); this.module = new ItemHazardModule(); this.onNeighbour = onNeighbour; } diff --git a/src/main/java/com/hbm/blocks/generic/BlockRadResistant.java b/src/main/java/com/hbm/blocks/generic/BlockRadResistant.java index 451717c84d..fb49e286c2 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockRadResistant.java +++ b/src/main/java/com/hbm/blocks/generic/BlockRadResistant.java @@ -1,10 +1,10 @@ package com.hbm.blocks.generic; import java.util.List; - import com.hbm.blocks.ModBlocks; import com.hbm.handler.RadiationSystemNT; import com.hbm.interfaces.IRadResistantBlock; +import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.block.SoundType; @@ -13,6 +13,7 @@ import net.minecraft.client.util.ITooltipFlag; import net.minecraft.util.math.BlockPos; import net.minecraft.item.ItemStack; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; public class BlockRadResistant extends Block implements IRadResistantBlock { @@ -48,12 +49,12 @@ public Block setSoundType(SoundType sound) { } @Override - public void addInformation(ItemStack stack, World player, List tooltip, ITooltipFlag advanced) { - super.addInformation(stack, player, tooltip, advanced); - tooltip.add("§2[Radiation Shielding]§r"); + public void addInformation(ItemStack stack, World world, List list, ITooltipFlag flagIn) { + super.addInformation(stack, world, list, flagIn); float hardness = this.getExplosionResistance(null); + list.add(TextFormatting.DARK_GREEN + "[" + I18nUtil.resolveKey("trait.radshield") + "]"); if(hardness > 50){ - tooltip.add("§6Blast Resistance: "+hardness+"§r"); + list.add(TextFormatting.GOLD + I18nUtil.resolveKey("trait.blastres") + " " + hardness); } } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockRotatablePillar.java b/src/main/java/com/hbm/blocks/generic/BlockRotatablePillar.java index fa963e4561..516a007fd9 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockRotatablePillar.java +++ b/src/main/java/com/hbm/blocks/generic/BlockRotatablePillar.java @@ -3,6 +3,7 @@ import java.util.List; import com.hbm.blocks.ModBlocks; +import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.block.BlockRotatedPillar; import net.minecraft.client.util.ITooltipFlag; @@ -10,6 +11,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.Item; import net.minecraft.block.material.Material; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; public class BlockRotatablePillar extends BlockRotatedPillar { @@ -37,7 +39,7 @@ public void addInformation(ItemStack stack, World player, List tooltip, } float hardness = this.getExplosionResistance(null); if(hardness > 50){ - tooltip.add("§6Blast Resistance: "+hardness+"§r"); + tooltip.add(TextFormatting.GOLD + I18nUtil.resolveKey("trait.blastres") + " " + hardness); } } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockStorageCrateRadResistant.java b/src/main/java/com/hbm/blocks/generic/BlockStorageCrateRadResistant.java index 23759bf4ce..8895eb2e7b 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockStorageCrateRadResistant.java +++ b/src/main/java/com/hbm/blocks/generic/BlockStorageCrateRadResistant.java @@ -5,11 +5,13 @@ import com.hbm.handler.RadiationSystemNT; import com.hbm.interfaces.IRadResistantBlock; +import com.hbm.util.I18nUtil; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.util.math.BlockPos; import net.minecraft.item.ItemStack; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; public class BlockStorageCrateRadResistant extends BlockStorageCrate implements IRadResistantBlock { @@ -38,10 +40,10 @@ public boolean isRadResistant(World worldIn, BlockPos blockPos){ @Override public void addInformation(ItemStack stack, World player, List tooltip, ITooltipFlag advanced) { super.addInformation(stack, player, tooltip, advanced); - tooltip.add("§2[Radiation Shielding]§r"); + tooltip.add(TextFormatting.DARK_GREEN + "[" + I18nUtil.resolveKey("trait.radshield") + "]"); float hardness = this.getExplosionResistance(null); if(hardness > 50){ - tooltip.add("§6Blast Resistance: "+hardness+"§r"); + tooltip.add(TextFormatting.GOLD + I18nUtil.resolveKey("trait.blastres") + " " + hardness); } } } diff --git a/src/main/java/com/hbm/blocks/machine/BlastDoor.java b/src/main/java/com/hbm/blocks/machine/BlastDoor.java index 70ccab2a9e..d9558b231d 100644 --- a/src/main/java/com/hbm/blocks/machine/BlastDoor.java +++ b/src/main/java/com/hbm/blocks/machine/BlastDoor.java @@ -9,6 +9,7 @@ import com.hbm.items.tool.ItemLock; import com.hbm.tileentity.machine.TileEntityBlastDoor; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockHorizontal; @@ -25,6 +26,7 @@ import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -148,11 +150,11 @@ public IBlockState getStateFromMeta(int meta) { } @Override - public void addInformation(ItemStack stack, World player, List tooltip, ITooltipFlag advanced) { + public void addInformation(ItemStack stack, World player, List list, ITooltipFlag advanced) { float hardness = this.getExplosionResistance(null); - tooltip.add("§2[Radiation Shielding]§r"); + list.add(TextFormatting.DARK_GREEN + "[" + I18nUtil.resolveKey("trait.radshield") + "]"); if(hardness > 50){ - tooltip.add("§6Blast Resistance: "+hardness+"§r"); + list.add(TextFormatting.GOLD + I18nUtil.resolveKey("trait.blastres") + " " + hardness); } } } diff --git a/src/main/java/com/hbm/blocks/machine/BlockSlidingBlastDoor.java b/src/main/java/com/hbm/blocks/machine/BlockSlidingBlastDoor.java index 704e36d09d..55c0c86c7d 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockSlidingBlastDoor.java +++ b/src/main/java/com/hbm/blocks/machine/BlockSlidingBlastDoor.java @@ -13,6 +13,7 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntitySlidingBlastDoorKeypad; import com.hbm.tileentity.machine.TileEntitySlidingBlastDoor; +import com.hbm.util.I18nUtil; import com.hbm.util.KeypadClient; import net.minecraft.block.material.Material; @@ -26,6 +27,7 @@ import net.minecraft.util.EnumHand; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; @@ -48,16 +50,16 @@ public TileEntity createNewTileEntity(World worldIn, int meta) { } @Override - public void addInformation(ItemStack stack, World player, List tooltip, ITooltipFlag advanced) { + public void addInformation(ItemStack stack, World player, List list, ITooltipFlag advanced) { float hardness = this.getExplosionResistance(null); - tooltip.add("§2[Radiation Shielding]§r"); + list.add(TextFormatting.DARK_GREEN + "[" + I18nUtil.resolveKey("trait.radshield") + "]"); if(hardness > 50){ - tooltip.add("§6Blast Resistance: "+hardness+"§r"); + list.add(TextFormatting.GOLD + I18nUtil.resolveKey("trait.blastres") + " " + hardness); } if(this == ModBlocks.sliding_blast_door){ - tooltip.add("Variant: Window"); + list.add(TextFormatting.GRAY + I18nUtil.resolveKey("desc.varwin") + " " + hardness); } else if(this == ModBlocks.sliding_blast_door_2){ - tooltip.add("Variant: Keypad"); + list.add(TextFormatting.GRAY + I18nUtil.resolveKey("desc.varkey") + " " + hardness); } } diff --git a/src/main/java/com/hbm/blocks/machine/DummyBlockFluidTank.java b/src/main/java/com/hbm/blocks/machine/DummyBlockFluidTank.java index 27c0c677d8..39b2797698 100644 --- a/src/main/java/com/hbm/blocks/machine/DummyBlockFluidTank.java +++ b/src/main/java/com/hbm/blocks/machine/DummyBlockFluidTank.java @@ -95,10 +95,11 @@ public Item getItemDropped(IBlockState state, Random rand, int fortune) { public ItemStack getPickBlock(IBlockState state, RayTraceResult target, World world, BlockPos pos, EntityPlayer player) { return new ItemStack(ModBlocks.machine_fluidtank); } - + @Override public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { - if(world.isRemote) { + if(world.isRemote) + { return true; } else if(!player.isSneaking()) { diff --git a/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java b/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java index 9c339ca24b..9d21f18fdd 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java +++ b/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java @@ -141,7 +141,7 @@ public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, Entity world.setBlockState(pos, world.getBlockState(pos).withProperty(FACING, EnumFacing.EAST), 2); if(MultiblockHandler.checkSpace(world, pos, MultiblockHandler.fluidTankDimensionEW)) { MultiblockHandler.fillUp(world, pos, MultiblockHandler.fluidTankDimensionEW, ModBlocks.dummy_block_fluidtank); - + // DummyBlockFluidTank.safeBreak = true; world.setBlockState(pos.add(1, 0, 1), ModBlocks.dummy_port_fluidtank.getDefaultState()); diff --git a/src/main/java/com/hbm/blocks/machine/MachineFrackingTower.java b/src/main/java/com/hbm/blocks/machine/MachineFrackingTower.java index 06e756e369..4d1c797416 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineFrackingTower.java +++ b/src/main/java/com/hbm/blocks/machine/MachineFrackingTower.java @@ -4,6 +4,7 @@ import com.hbm.blocks.ModBlocks; import com.hbm.handler.MultiblockHandler; import com.hbm.handler.MultiblockHandlerXR; +import com.hbm.interfaces.IMultiBlock; import com.hbm.lib.InventoryHelper; import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntityProxyCombo; diff --git a/src/main/java/com/hbm/blocks/machine/VaultDoor.java b/src/main/java/com/hbm/blocks/machine/VaultDoor.java index 7e7c772ec1..c2d50119cc 100644 --- a/src/main/java/com/hbm/blocks/machine/VaultDoor.java +++ b/src/main/java/com/hbm/blocks/machine/VaultDoor.java @@ -12,6 +12,7 @@ import com.hbm.items.tool.ItemLock; import com.hbm.tileentity.machine.TileEntityVaultDoor; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockHorizontal; @@ -29,6 +30,7 @@ import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -337,11 +339,11 @@ public boolean isRadResistant(World worldIn, BlockPos blockPos) { } @Override - public void addInformation(ItemStack stack, World player, List tooltip, ITooltipFlag advanced) { + public void addInformation(ItemStack stack, World player, List list, ITooltipFlag advanced) { float hardness = this.getExplosionResistance(null); - tooltip.add("§2[Radiation Shielding]§r"); + list.add(TextFormatting.DARK_GREEN + "[" + I18nUtil.resolveKey("trait.radshield") + "]"); if(hardness > 50){ - tooltip.add("§6Blast Resistance: "+hardness+"§r"); + list.add(TextFormatting.GOLD + I18nUtil.resolveKey("trait.blastres") + " " + hardness); } } } diff --git a/src/main/java/com/hbm/blocks/network/BlockConveyor.java b/src/main/java/com/hbm/blocks/network/BlockConveyor.java index 88ad11e259..7c3294ad3e 100644 --- a/src/main/java/com/hbm/blocks/network/BlockConveyor.java +++ b/src/main/java/com/hbm/blocks/network/BlockConveyor.java @@ -1,7 +1,9 @@ package com.hbm.blocks.network; +import api.hbm.block.IToolable; import com.hbm.blocks.ModBlocks; import com.hbm.entity.item.EntityMovingItem; +import api.hbm.block.IConveyorBelt; import net.minecraft.block.Block; import net.minecraft.block.BlockHorizontal; @@ -13,44 +15,98 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumBlockRenderType; -import net.minecraft.util.EnumFacing; -import net.minecraft.util.Mirror; -import net.minecraft.util.Rotation; +import net.minecraft.util.*; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; -public class BlockConveyor extends Block { +public class BlockConveyor extends Block implements IConveyorBelt, IToolable { public static final PropertyDirection FACING = BlockHorizontal.FACING; - public static final AxisAlignedBB CONVEYOR_BB = new AxisAlignedBB(0.0F, 0.0F, 0.0F, 1.0F, 0.125F, 1.0F); - + public static final AxisAlignedBB CONVEYOR_BB = new AxisAlignedBB(0.0F, 0.0F, 0.0F, 1.0F, 0.25F, 1.0F); + public BlockConveyor(Material materialIn, String s) { super(materialIn); this.setUnlocalizedName(s); this.setRegistryName(s); - + ModBlocks.ALL_BLOCKS.add(this); } - + @Override + public boolean canItemStay(World world, int x, int y, int z, Vec3d itemPos) { + return true; + } + + @Override + public Vec3d getTravelLocation(World world, int x, int y, int z, Vec3d itemPos, double speed) { + BlockPos pos = new BlockPos(x, y, z); + EnumFacing dir = this.getTravelDirection(world, pos); + Vec3d snap = this.getClosestSnappingPosition(world, pos, itemPos); + Vec3d dest = new Vec3d( + snap.x - dir.getFrontOffsetX() * speed, + snap.y - dir.getFrontOffsetY() * speed, + snap.z - dir.getFrontOffsetZ() * speed); + Vec3d motion = new Vec3d( + dest.x - itemPos.x, + dest.y - itemPos.y, + dest.z - itemPos.z); + double len = motion.lengthVector(); + Vec3d ret = new Vec3d( + itemPos.x + motion.x / len * speed, + itemPos.y + motion.y / len * speed, + itemPos.z + motion.z / len * speed); + return ret; + } + + + public EnumFacing getTravelDirection(World world, BlockPos pos) { + return EnumFacing.getFront(world.getBlockState(pos).getBlock().getMetaFromState(world.getBlockState(pos))); + } + + @Override + public Vec3d getClosestSnappingPosition(World world, BlockPos pos, Vec3d itemPos) { + EnumFacing dir = this.getTravelDirection(world, pos); + + double posX = MathHelper.clamp(itemPos.x, pos.getX(), pos.getX() + 1); + double posZ = MathHelper.clamp(itemPos.z, pos.getZ(), pos.getZ() + 1); + + double x = pos.getX() + 0.5; + double z = pos.getZ() + 0.5; + double y = pos.getY() + 0.25; + + if (dir.getAxis() == EnumFacing.Axis.X) { + x = posX; + } else if (dir.getAxis() == EnumFacing.Axis.Z) { + z = posZ; + } + + return new Vec3d(x, y, z); + } + @Override public void onEntityCollidedWithBlock(World world, BlockPos pos, IBlockState state, Entity entity) { if(!world.isRemote) { - + if(entity instanceof EntityItem && entity.ticksExisted > 10 && !entity.isDead) { - + EntityMovingItem item = new EntityMovingItem(world); item.setItemStack(((EntityItem)entity).getItem()); - item.setPositionAndRotation(pos.getX() + 0.5, pos.getY() + 0.125, pos.getZ() + 0.5, 0, 0); + Vec3d entityPos = new Vec3d(entity.posX, entity.posY, entity.posZ); + Vec3d snap = this.getClosestSnappingPosition(world, pos, entityPos); + item.setPositionAndRotation(snap.x, snap.y, snap.z, 0, 0); world.spawnEntity(item); entity.setDead(); } } } + + @Override public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) { @@ -98,6 +154,43 @@ public IBlockState getStateFromMeta(int meta) { return this.getDefaultState().withProperty(FACING, enumfacing); } + + protected int getPathDirection(int meta) { + + if(meta >= 6 && meta <= 9) return 1; + if(meta >= 10 && meta <= 13) return 2; + return 0; + } + + public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, EnumFacing side, float fX, float fY, float fZ, EnumHand hand, IToolable.ToolType tool) { + if(tool != IToolable.ToolType.SCREWDRIVER) + return false; + BlockPos pos = new BlockPos(x, y, z); + IBlockState state = world.getBlockState(pos); + + int meta = getMetaFromState(state); + int newMeta = meta; + + int dir = getPathDirection(meta); + + if(!player.isSneaking()) { + if(meta > 9) meta -= 8; + if(meta > 5) meta -= 4; + + EnumFacing facing = EnumFacing.getFront(meta & 7); + newMeta = facing.rotateY().getIndex() + dir * 4; + } else { + if(dir < 2) + newMeta += 4; + else + newMeta -= 8; + } + + IBlockState newState = getStateFromMeta(newMeta); + world.setBlockState(pos, newState, 3); + + return true; + } diff --git a/src/main/java/com/hbm/blocks/network/BlockConveyorDouble.java b/src/main/java/com/hbm/blocks/network/BlockConveyorDouble.java new file mode 100644 index 0000000000..4dde551244 --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/BlockConveyorDouble.java @@ -0,0 +1,38 @@ +package com.hbm.blocks.network; + +import net.minecraft.block.material.Material; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.World; + +public class BlockConveyorDouble extends BlockConveyor { + + public BlockConveyorDouble(Material materialIn, String s) { + super(materialIn, s); + } + + @Override + public Vec3d getClosestSnappingPosition(World world, BlockPos pos, Vec3d itemPos) { + + EnumFacing dir = this.getTravelDirection(world, pos); + + double posX = MathHelper.clamp(itemPos.x, pos.getX(), pos.getX() + 1); + double posZ = MathHelper.clamp(itemPos.z, pos.getZ(), pos.getZ() + 1); + + double xCenter = pos.getX() + 0.5; + double zCenter = pos.getZ() + 0.5; + + if(dir.getAxis() == EnumFacing.Axis.X) { + xCenter = posX; + zCenter += itemPos.z > zCenter ? 0.25 : -0.25; + } + if(dir.getAxis() == EnumFacing.Axis.Z) { + zCenter = posZ; + xCenter += itemPos.x > xCenter ? 0.25 : -0.25; + } + + return new Vec3d(posX, pos.getY() + 0.25, posZ); + } +} diff --git a/src/main/java/com/hbm/blocks/network/BlockConveyorExpress.java b/src/main/java/com/hbm/blocks/network/BlockConveyorExpress.java new file mode 100644 index 0000000000..ab6b473134 --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/BlockConveyorExpress.java @@ -0,0 +1,17 @@ +package com.hbm.blocks.network; + +import net.minecraft.block.material.Material; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.World; + +public class BlockConveyorExpress extends BlockConveyor { + + public BlockConveyorExpress(Material materialIn, String s) { + super(materialIn, s); + } + + @Override + public Vec3d getTravelLocation(World world, int x, int y, int z, Vec3d itemPos, double speed) { + return super.getTravelLocation(world, x, y, z, itemPos, speed * 3); + } +} diff --git a/src/main/java/com/hbm/blocks/network/BlockCraneBase.java b/src/main/java/com/hbm/blocks/network/BlockCraneBase.java new file mode 100644 index 0000000000..441582844d --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/BlockCraneBase.java @@ -0,0 +1,173 @@ +package com.hbm.blocks.network; + +import api.hbm.block.IBlockSideRotation; +import api.hbm.block.IToolable; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.items.tool.ItemTooling; +import com.hbm.lib.ForgeDirection; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.network.TileEntityCraneBase; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.BlockHorizontal; +import net.minecraft.block.material.Material; +import net.minecraft.block.properties.IProperty; +import net.minecraft.block.properties.PropertyDirection; +import net.minecraft.block.state.BlockStateContainer; +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.inventory.InventoryHelper; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.*; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +import java.util.Random; + +public abstract class BlockCraneBase extends BlockContainer implements ITooltipProvider { + public static final PropertyDirection FACING = BlockHorizontal.FACING; + public BlockCraneBase(Material mat) { + super(mat); + } + + @Override + public abstract TileEntityCraneBase createNewTileEntity(World worldIn, int meta); + + @Override + public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { + if(playerIn.getHeldItem(hand).getItem() instanceof ItemTooling) { + return false; + } else if(worldIn.isRemote) { + return true; + } else if(!playerIn.isSneaking()) { + playerIn.openGui(MainRegistry.instance, 0, worldIn, pos.getX(), pos.getY(), pos.getZ()); + return true; + } else { + return false; + } + } + + @Override + public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) { + worldIn.setBlockState(pos, state.withProperty(FACING, placer.getHorizontalFacing().getOpposite()), 2); + } + + @Override + public void breakBlock(World worldIn, BlockPos pos, IBlockState state) { + TileEntity tileentity = worldIn.getTileEntity(pos); + + if (tileentity instanceof IInventory) { + InventoryHelper.dropInventoryItems(worldIn, pos, (IInventory)tileentity); + worldIn.updateComparatorOutputLevel(pos, this); + } + + super.breakBlock(worldIn, pos, state); + } + + public static EnumFacing getInputSide(IBlockAccess world, BlockPos pos) { + return EnumFacing.values()[world.getBlockState(pos).getBlock().getMetaFromState(world.getBlockState(pos))]; + } + + protected final EnumFacing getOutputSideOverride(IBlockAccess world, BlockPos pos) { + TileEntity te = world.getTileEntity(pos); + if (!(te instanceof TileEntityCraneBase)) return EnumFacing.NORTH; // Replace with a default EnumFacing, if necessary + TileEntityCraneBase craneTileEntity = (TileEntityCraneBase) te; + + return craneTileEntity.getOutputOverride(); + } + + public EnumFacing getOutputSide(IBlockAccess world, BlockPos pos) { + TileEntity te = world.getTileEntity(pos); + if (!(te instanceof TileEntityCraneBase)) return EnumFacing.NORTH; // Replace with a default EnumFacing, if necessary + TileEntityCraneBase craneTileEntity = (TileEntityCraneBase) te; + + return craneTileEntity.getOutputSide(); + } + + private final Random rand = new Random(); + public void dropContents(World world, BlockPos pos, IBlockState state, int start, int end) { + TileEntity tileEntity = world.getTileEntity(pos); + if(tileEntity instanceof ISidedInventory) { + ISidedInventory tileentityfurnace = (ISidedInventory) tileEntity; + if(tileentityfurnace != null) { + + for(int i1 = start; i1 < end; ++i1) { + ItemStack itemstack = tileentityfurnace.getStackInSlot(i1); + + if(itemstack != null) { + float f = this.rand.nextFloat() * 0.8F + 0.1F; + float f1 = this.rand.nextFloat() * 0.8F + 0.1F; + float f2 = this.rand.nextFloat() * 0.8F + 0.1F; + + while(itemstack.getCount() > 0) { + int j1 = this.rand.nextInt(21) + 10; + + if(j1 > itemstack.getCount()) { + j1 = itemstack.getCount(); + } + + itemstack.shrink(j1); + EntityItem entityitem = new EntityItem(world, pos.getX() + f, pos.getY() + f1, pos.getZ() + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); + + if(itemstack.hasTagCompound()) { + entityitem.getItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy()); + } + + float f3 = 0.05F; + entityitem.motionX = (float) this.rand.nextGaussian() * f3; + entityitem.motionY = (float) this.rand.nextGaussian() * f3 + 0.2F; + entityitem.motionZ = (float) this.rand.nextGaussian() * f3; + world.spawnEntity(entityitem); + } + } + } + + world.notifyNeighborsOfStateChange(pos, state.getBlock(), true); + } + } + + super.breakBlock(world, pos, state); + } + + @Override + public EnumBlockRenderType getRenderType(IBlockState state) { + return EnumBlockRenderType.MODEL; + } + + @Override + public IBlockState getStateForPlacement(World world, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer, EnumHand hand) { + return this.getDefaultState().withProperty(FACING, placer.getHorizontalFacing().getOpposite()); + } + @Override + public IBlockState withRotation(IBlockState state, Rotation rot) { + return state.withProperty(FACING, rot.rotate((EnumFacing)state.getValue(FACING))); + } + + @Override + public IBlockState withMirror(IBlockState state, Mirror mirrorIn) + { + return state.withRotation(mirrorIn.toRotation((EnumFacing)state.getValue(FACING))); + } + + @Override + protected BlockStateContainer createBlockState() { + return new BlockStateContainer(this, FACING); + } + + @Override + public IBlockState getStateFromMeta(int meta) { + EnumFacing enumfacing = EnumFacing.getHorizontal(meta); + return this.getDefaultState().withProperty(FACING, enumfacing); + } + + @Override + public int getMetaFromState(IBlockState state) { + return state.getValue(BlockHorizontal.FACING).getHorizontalIndex(); + } +} diff --git a/src/main/java/com/hbm/blocks/network/BlockFluidDuct.java b/src/main/java/com/hbm/blocks/network/BlockFluidDuct.java index 50cdc1cdfb..bb445c8b5e 100644 --- a/src/main/java/com/hbm/blocks/network/BlockFluidDuct.java +++ b/src/main/java/com/hbm/blocks/network/BlockFluidDuct.java @@ -8,6 +8,7 @@ import com.hbm.tileentity.conductor.TileEntityFFDuctBase; import com.hbm.tileentity.conductor.TileEntityFFFluidDuct; +import com.hbm.util.I18nUtil; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; @@ -62,7 +63,7 @@ public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess world, Block @Override public void addInformation(ItemStack stack, World player, List tooltip, ITooltipFlag advanced) { - tooltip.add("Don't use this, it may break your game"); + tooltip.add(I18nUtil.resolveKey("desc.breakgame")); } @Override diff --git a/src/main/java/com/hbm/blocks/network/BlockFluidPipeMk2.java b/src/main/java/com/hbm/blocks/network/BlockFluidPipeMk2.java index 00cef75283..3fa508f27f 100644 --- a/src/main/java/com/hbm/blocks/network/BlockFluidPipeMk2.java +++ b/src/main/java/com/hbm/blocks/network/BlockFluidPipeMk2.java @@ -30,6 +30,7 @@ import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.fluids.Fluid; @@ -63,7 +64,7 @@ public TileEntity createNewTileEntity(World worldIn, int meta) { @Override public void addInformation(ItemStack stack, World player, List tooltip, ITooltipFlag advanced) { - tooltip.add("Right click with screwdriver to toggle extraction"); + tooltip.add(I18nUtil.resolveKey("desc.extraction")); } @Override @@ -236,7 +237,7 @@ public void printHook(Pre event, World world, int x, int y, int z) { List text = new ArrayList(); if(ductFluid == null){ - text.add("§7None"); + text.add(TextFormatting.GRAY + I18nUtil.resolveKey("desc.none")); } else{ int color = ModForgeFluids.getFluidColor(ductFluid); text.add("&[" + color + "&]" +I18nUtil.resolveKey(ductFluid.getUnlocalizedName())); diff --git a/src/main/java/com/hbm/blocks/network/BlockFluidPipeSolid.java b/src/main/java/com/hbm/blocks/network/BlockFluidPipeSolid.java index 703ac81acd..19d97f9ffd 100644 --- a/src/main/java/com/hbm/blocks/network/BlockFluidPipeSolid.java +++ b/src/main/java/com/hbm/blocks/network/BlockFluidPipeSolid.java @@ -27,6 +27,7 @@ import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.fluids.Fluid; @@ -58,7 +59,7 @@ public TileEntity createNewTileEntity(World worldIn, int meta) { @Override public void addInformation(ItemStack stack, World player, List tooltip, ITooltipFlag advanced) { - tooltip.add("Right click with screwdriver to toggle extraction"); + tooltip.add(I18nUtil.resolveKey("desc.extraction")); } @Override @@ -153,7 +154,7 @@ public void printHook(Pre event, World world, int x, int y, int z) { List text = new ArrayList(); if(ductFluid == null){ - text.add("§7None"); + text.add(TextFormatting.GRAY + I18nUtil.resolveKey("desc.none")); } else{ int color = ModForgeFluids.getFluidColor(ductFluid); text.add("&[" + color + "&]" +I18nUtil.resolveKey(ductFluid.getUnlocalizedName())); diff --git a/src/main/java/com/hbm/blocks/network/BlockFluidPipeSolidRadResistant.java b/src/main/java/com/hbm/blocks/network/BlockFluidPipeSolidRadResistant.java index 286de0b137..625b3f628c 100644 --- a/src/main/java/com/hbm/blocks/network/BlockFluidPipeSolidRadResistant.java +++ b/src/main/java/com/hbm/blocks/network/BlockFluidPipeSolidRadResistant.java @@ -5,11 +5,13 @@ import com.hbm.handler.RadiationSystemNT; import com.hbm.interfaces.IRadResistantBlock; +import com.hbm.util.I18nUtil; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.util.math.BlockPos; import net.minecraft.item.ItemStack; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; public class BlockFluidPipeSolidRadResistant extends BlockFluidPipeSolid implements IRadResistantBlock { @@ -38,10 +40,10 @@ public boolean isRadResistant(World worldIn, BlockPos blockPos){ @Override public void addInformation(ItemStack stack, World player, List tooltip, ITooltipFlag advanced) { super.addInformation(stack, player, tooltip, advanced); - tooltip.add("§2[Radiation Shielding]§r"); + tooltip.add(TextFormatting.DARK_GREEN + "[" + I18nUtil.resolveKey("trait.radshield") + "]"); float hardness = this.getExplosionResistance(null); if(hardness > 50){ - tooltip.add("§6Blast Resistance: "+hardness+"§r"); + tooltip.add(TextFormatting.GOLD + I18nUtil.resolveKey("trait.blastres") + " " + hardness); } } } diff --git a/src/main/java/com/hbm/blocks/network/CraneExtractor.java b/src/main/java/com/hbm/blocks/network/CraneExtractor.java new file mode 100644 index 0000000000..2cf47aab39 --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/CraneExtractor.java @@ -0,0 +1,39 @@ +package com.hbm.blocks.network; + +import com.hbm.blocks.ModBlocks; +import com.hbm.lib.ForgeDirection; +import com.hbm.tileentity.network.TileEntityCraneBase; +import com.hbm.tileentity.network.TileEntityCraneExtractor; +import net.minecraft.block.BlockHorizontal; +import net.minecraft.block.material.Material; +import net.minecraft.block.state.IBlockState; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +public class CraneExtractor extends BlockCraneBase { + public CraneExtractor(Material materialIn, String s) { + super(materialIn); + this.setUnlocalizedName(s); + this.setRegistryName(s); + ModBlocks.ALL_BLOCKS.add(this); + } + + @Override + public TileEntityCraneBase createNewTileEntity(World world, int meta) { + return new TileEntityCraneExtractor(); + } + + @Override + public boolean canConnectRedstone(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing side) { + return true; + } + + @Override + public void breakBlock(World world, BlockPos pos, IBlockState state) { + this.dropContents(world, pos, state, 9, 20); + super.breakBlock(world, pos, state); + } + +} diff --git a/src/main/java/com/hbm/blocks/network/CraneInserter.java b/src/main/java/com/hbm/blocks/network/CraneInserter.java new file mode 100644 index 0000000000..45d7441a9c --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/CraneInserter.java @@ -0,0 +1,143 @@ +package com.hbm.blocks.network; + +import api.hbm.block.IConveyorItem; +import api.hbm.block.IEnterableBlock; +import com.hbm.blocks.ModBlocks; +import com.hbm.lib.ForgeDirection; +import com.hbm.tileentity.network.TileEntityCraneBase; +import com.hbm.tileentity.network.TileEntityCraneInserter; +import net.minecraft.block.BlockHorizontal; +import net.minecraft.block.material.Material; +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.tileentity.TileEntityFurnace; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +public class CraneInserter extends BlockCraneBase implements IEnterableBlock { + public CraneInserter(Material materialIn, String s) { + super(materialIn); + this.setUnlocalizedName(s); + this.setRegistryName(s); + ModBlocks.ALL_BLOCKS.add(this); + } + + @Override + public TileEntityCraneBase createNewTileEntity(World world, int meta) { + return new TileEntityCraneInserter(); + } + + @Override + public boolean canItemEnter(World world, int x, int y, int z, EnumFacing dir, IConveyorItem entity) { + BlockPos pos = new BlockPos(x, y, z); + IBlockState state = world.getBlockState(pos); + EnumFacing orientation = state.getValue(BlockHorizontal.FACING); + return dir == orientation; + } + + @Override + public void onItemEnter(World world, int x, int y, int z, EnumFacing dir, IConveyorItem entity) { + BlockPos pos = new BlockPos(x, y, z); + EnumFacing outputDirection = getOutputSide(world, pos); + TileEntity te = world.getTileEntity(pos.offset(outputDirection)); + + if (entity == null || entity.getItemStack() == ItemStack.EMPTY || entity.getItemStack().getCount() <= 0) { + return; + } + + ItemStack toAdd = entity.getItemStack().copy(); + + int[] access = null; + if(te!=null){ + if (te instanceof ISidedInventory) { + ISidedInventory sided = (ISidedInventory) te; + access = masquerade(sided, EnumFacing.getFront(outputDirection.getOpposite().ordinal())); + } + + if (te instanceof IInventory) { + IInventory inv = (IInventory) te; + + addToInventory(inv, access, toAdd, outputDirection.getOpposite().ordinal()); + } + } + + if(toAdd.getCount() > 0) { + addToInventory( (TileEntityCraneInserter) world.getTileEntity(pos), null, toAdd, outputDirection.getOpposite().ordinal()); + } + if(toAdd.getCount() > 0) { + EntityItem drop = new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, toAdd.copy()); + world.spawnEntity(drop); + } + } + + public static int[] masquerade(ISidedInventory sided, EnumFacing side) { + if(sided instanceof TileEntityFurnace) { + return new int[] {1, 0}; + } + + return sided.getSlotsForFace(side); + } + + public static ItemStack addToInventory(IInventory inv, int[] access, ItemStack toAdd, int side) { + + ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null; + int limit = inv.getInventoryStackLimit(); + + int size = access == null ? inv.getSizeInventory() : access.length; + + for(int i = 0; i < size; i++) { + int index = access == null ? i : access[i]; + ItemStack stack = inv.getStackInSlot(index); + + if(!stack.isEmpty() && toAdd.isItemEqual(stack) && ItemStack.areItemStackTagsEqual(toAdd, stack) && stack.getCount() < Math.min(stack.getMaxStackSize(), limit) + && ((sided == null || sided.canInsertItem(index, toAdd, EnumFacing.values()[side])) && inv.isItemValidForSlot(index, toAdd))) { + + int stackLimit = Math.min(stack.getMaxStackSize(), limit); + int amount = Math.min(toAdd.getCount(), stackLimit - stack.getCount()); + + stack.grow(amount); + toAdd.shrink(amount); + inv.markDirty(); + + if(toAdd.getCount() == 0) { + return ItemStack.EMPTY; + } + } + } + + for(int i = 0; i < size; i++) { + int index = access == null ? i : access[i]; + ItemStack stack = inv.getStackInSlot(index); + + if(stack.isEmpty() && ((sided == null || sided.canInsertItem(index, toAdd, EnumFacing.values()[side])) && inv.isItemValidForSlot(index, toAdd))) { + + int amount = Math.min(toAdd.getCount(), limit); + + ItemStack newStack = toAdd.copy(); + newStack.setCount(amount); + inv.setInventorySlotContents(index, newStack); + toAdd.shrink(amount); + inv.markDirty(); + + if(toAdd.getCount() == 0) { + return ItemStack.EMPTY; + } + } + } + + return toAdd; + } + + + @Override + public void breakBlock(World world, BlockPos pos, IBlockState state) { + this.dropContents(world, pos, state, 9, 20); + super.breakBlock(world, pos, state); + } + +} diff --git a/src/main/java/com/hbm/config/BedrockOreJsonConfig.java b/src/main/java/com/hbm/config/BedrockOreJsonConfig.java index e79bd715f8..256b3a9907 100644 --- a/src/main/java/com/hbm/config/BedrockOreJsonConfig.java +++ b/src/main/java/com/hbm/config/BedrockOreJsonConfig.java @@ -44,24 +44,8 @@ public static boolean isOreAllowed(int dimID, String ore){ } public static void setDefaults() { - addEntry(0, 30, Arrays.asList( - "orePlutonium", - "oreQuartz", - "oreInfernalCoal", - "oreRedPhosphorus", - "oreSchrabidium", - "oreNeodymium", - "oreNitanium" - ), false); - addEntry(-1, 60, Arrays.asList( - "orePlutonium", - "oreQuartz", - "oreInfernalCoal", - "oreRedPhosphorus", - "oreSchrabidium", - "oreNeodymium", - "oreNitanium" - ), true); + addEntry(0, 30, Arrays.asList("orePlutonium", "oreQuartz", "oreInfernalCoal", "oreRedPhosphorus", "oreSchrabidium", "oreNeodymium", "oreNitanium"), false); + addEntry(-1, 60, Arrays.asList("orePlutonium", "oreQuartz", "oreInfernalCoal", "oreRedPhosphorus", "oreSchrabidium", "oreNeodymium", "oreNitanium"), true); } public static void addEntry(int dimID, int rarity, List ores, Boolean isWhiteList){ diff --git a/src/main/java/com/hbm/config/MachineConfig.java b/src/main/java/com/hbm/config/MachineConfig.java index 908a984c10..e6f2d43644 100644 --- a/src/main/java/com/hbm/config/MachineConfig.java +++ b/src/main/java/com/hbm/config/MachineConfig.java @@ -45,8 +45,6 @@ public class MachineConfig { public static int crateByteSize = 8; - public static int rbmkJumpTemp = 1250; - public static boolean isFluidAllowed(Fluid f){ boolean isInList = blacklistedMixerFluids.contains(f.getName()); if(uuMixerFluidListIsWhitelist) return isInList; @@ -99,6 +97,5 @@ public static void loadFromConfig(Configuration config) { blacklistedMixerFluids = CommonConfig.createConfigHashSet(config, CATEGORY_MACHINE, generateConfigName(26, "blacklistedUUMixerFluids"), "List of fluids that can not be made by UU Mixer. - (String)", "String", new String[]{ "liquid_osmiridium" }); crateByteSize = CommonConfig.createConfigInt(config, CATEGORY_MACHINE, generateConfigName(27, "crateMaxByteSize"), "Controls how big the maximum storage size of mined crates can be. Warning going beond 32kb can cause freezing/crashes. - (int)", 8); - rbmkJumpTemp = CommonConfig.createConfigInt(config, CATEGORY_MACHINE, generateConfigName(28, "rbmkJumpTemp"), "Controls at which rbmk column temperature the lid jumping begins. Can not be < 20°C. Set to > 1500°C to turn off. Default is 1250°C - (int)", 1250); } } diff --git a/src/main/java/com/hbm/entity/item/EntityMovingConveyorObject.java b/src/main/java/com/hbm/entity/item/EntityMovingConveyorObject.java new file mode 100644 index 0000000000..37b055ea3a --- /dev/null +++ b/src/main/java/com/hbm/entity/item/EntityMovingConveyorObject.java @@ -0,0 +1,176 @@ +package com.hbm.entity.item; + +import api.hbm.block.IConveyorBelt; +import api.hbm.block.IEnterableBlock; +import com.hbm.lib.ForgeDirection; +import com.hbm.lib.Library; +import com.hbm.tileentity.network.TileEntityCraneBase; +import net.minecraft.block.Block; +import net.minecraft.entity.Entity; +import net.minecraft.entity.MoverType; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +public abstract class EntityMovingConveyorObject extends Entity { + protected int turnProgress; + protected double syncPosX; + protected double syncPosY; + protected double syncPosZ; + @SideOnly(Side.CLIENT) protected double velocityX; + @SideOnly(Side.CLIENT) protected double velocityY; + @SideOnly(Side.CLIENT) protected double velocityZ; + + public EntityMovingConveyorObject(World p_i1582_1_) { + super(p_i1582_1_); + this.noClip = true; + } + + @Override + public boolean canBeCollidedWith() { + return true; + } + + + public boolean canAttackWithItem() { + return true; + } + + @Override + public boolean hitByEntity(Entity attacker) { + + if(attacker instanceof EntityPlayer) { + this.setDead(); + } + + return false; + } + + @Override + protected boolean canTriggerWalking() { + return true; + } + + @Override + public void onUpdate() { + if(world.isRemote) { + if(this.turnProgress > 0) { + double interpX = this.posX + (this.syncPosX - this.posX) / (double) this.turnProgress; + double interpY = this.posY + (this.syncPosY - this.posY) / (double) this.turnProgress; + double interpZ = this.posZ + (this.syncPosZ - this.posZ) / (double) this.turnProgress; + --this.turnProgress; + this.setPosition(interpX, interpY, interpZ); + } else { + this.setPosition(this.posX, this.posY, this.posZ); + } + } + + if(!world.isRemote) { + ticksExisted++; + + if(this.ticksExisted <= 5) { + return; + } + + int blockX = (int) Math.floor(posX); + int blockY = (int) Math.floor(posY); + int blockZ = (int) Math.floor(posZ); + BlockPos blockPos = new BlockPos(blockX, blockY, blockZ); + Block b = world.getBlockState(blockPos).getBlock(); + boolean isOnConveyor = b instanceof IConveyorBelt && ((IConveyorBelt) b).canItemStay(world, blockX, blockY, blockZ, new Vec3d(posX, posY, posZ)); + + if(!isOnConveyor) { + if(onLeaveConveyor()) { + return; + } + } else { + Vec3d target = ((IConveyorBelt) b).getTravelLocation(world, blockX, blockY, blockZ, new Vec3d(posX, posY, posZ), getMoveSpeed()); + this.motionX = target.x - posX; + this.motionY = target.y - posY; + this.motionZ = target.z - posZ; + } + + BlockPos lastPos = new BlockPos(posX, posY, posZ); + this.move(MoverType.SELF, motionX, motionY, motionZ); + BlockPos newPos = new BlockPos(posX, posY, posZ); + + if(!lastPos.equals(newPos)) { + Block newBlock = world.getBlockState(newPos).getBlock(); + + if(newBlock instanceof IEnterableBlock) { + IEnterableBlock enterable = (IEnterableBlock) newBlock; + TileEntity tileEntity = world.getTileEntity(newPos); + if(tileEntity instanceof TileEntityCraneBase) { + TileEntityCraneBase craneBase = (TileEntityCraneBase) tileEntity; + EnumFacing inputSide = craneBase.getInputSide(); + + EnumFacing dir = null; + + if (lastPos.getX() > newPos.getX() && lastPos.getY() == newPos.getY() && lastPos.getZ() == newPos.getZ()) + dir = EnumFacing.EAST; + else if (lastPos.getX() < newPos.getX() && lastPos.getY() == newPos.getY() && lastPos.getZ() == newPos.getZ()) + dir = EnumFacing.WEST; + else if (lastPos.getX() == newPos.getX() && lastPos.getY() > newPos.getY() && lastPos.getZ() == newPos.getZ()) + dir = EnumFacing.UP; + else if (lastPos.getX() == newPos.getX() && lastPos.getY() < newPos.getY() && lastPos.getZ() == newPos.getZ()) + dir = EnumFacing.DOWN; + else if (lastPos.getX() == newPos.getX() && lastPos.getY() == newPos.getY() && lastPos.getZ() > newPos.getZ()) + dir = EnumFacing.SOUTH; + else if (lastPos.getX() == newPos.getX() && lastPos.getY() == newPos.getY() && lastPos.getZ() < newPos.getZ()) + dir = EnumFacing.NORTH; + + if (dir == inputSide) { + enterBlock(enterable, newPos, dir); + } + } + + } else { + if(!newBlock.getMaterial(world.getBlockState(newPos)).isSolid()) { + newBlock = world.getBlockState(newPos.down()).getBlock(); + + if(newBlock instanceof IEnterableBlock) { + IEnterableBlock enterable = (IEnterableBlock) newBlock; + enterBlockFalling(enterable, newPos); + } + } + } + } + } + } + + public abstract void enterBlock(IEnterableBlock enterable, BlockPos pos, EnumFacing dir); + + public void enterBlockFalling(IEnterableBlock enterable, BlockPos pos) { + this.enterBlock(enterable, pos.add(0, -1, 0), EnumFacing.UP); + } + + public abstract boolean onLeaveConveyor(); + + public double getMoveSpeed() { + return 0.0625D; + } + + @SideOnly(Side.CLIENT) + public void setVelocity(double motionX, double motionY, double motionZ) { + this.velocityX = this.motionX = motionX; + this.velocityY = this.motionY = motionY; + this.velocityZ = this.motionZ = motionZ; + } + + @SideOnly(Side.CLIENT) + public void setPositionAndRotation2(double x, double y, double z, float yaw, float pitch, int theNumberThree) { + this.syncPosX = x; + this.syncPosY = y; + this.syncPosZ = z; + this.turnProgress = theNumberThree + 2; //use 4-ply for extra smoothness + this.motionX = this.velocityX; + this.motionY = this.velocityY; + this.motionZ = this.velocityZ; + } + +} diff --git a/src/main/java/com/hbm/entity/item/EntityMovingItem.java b/src/main/java/com/hbm/entity/item/EntityMovingItem.java index e2e1bbdddd..882068ada9 100644 --- a/src/main/java/com/hbm/entity/item/EntityMovingItem.java +++ b/src/main/java/com/hbm/entity/item/EntityMovingItem.java @@ -1,11 +1,9 @@ package com.hbm.entity.item; -import com.hbm.blocks.ModBlocks; +import api.hbm.block.IConveyorItem; +import api.hbm.block.IEnterableBlock; -import net.minecraft.block.BlockHorizontal; -import net.minecraft.block.state.IBlockState; -import net.minecraft.entity.Entity; -import net.minecraft.entity.MoverType; +import com.hbm.lib.ForgeDirection; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; @@ -16,17 +14,17 @@ import net.minecraft.network.datasync.EntityDataManager; import net.minecraft.util.DamageSource; import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -public class EntityMovingItem extends Entity { +public class EntityMovingItem extends EntityMovingConveyorObject implements IConveyorItem { public static final DataParameter STACK = EntityDataManager.createKey(EntityMovingItem.class, DataSerializers.ITEM_STACK); - + public EntityMovingItem(World p_i1582_1_) { super(p_i1582_1_); - this.setSize(0.5F, 0.25F); - this.noClip = true; + this.setSize(0.375F, 0.375F); } public void setItemStack(ItemStack stack) { @@ -43,14 +41,13 @@ public boolean canBeCollidedWith() { return true; } - public boolean interactFirst(EntityPlayer player) { - + @Override + public boolean processInitialInteract(EntityPlayer player, EnumHand hand) { if(!world.isRemote && player.inventory.addItemStackToInventory(this.getItemStack().copy())) { this.setDead(); } - return false; - } + } public boolean attackEntityFrom(DamageSource source, float amount) { @@ -61,64 +58,8 @@ public boolean attackEntityFrom(DamageSource source, float amount) { return true; } - public boolean canAttackWithItem() { - return true; - } - - public boolean hitByEntity(Entity attacker) { - - if(attacker instanceof EntityPlayer) { - } - - this.setDead(); - - return false; - } - - protected boolean canTriggerWalking() { - return true; - } - private int schedule = 0; - public void onUpdate() { - - if(!world.isRemote) { - - if(world.getBlockState(new BlockPos((int)Math.floor(posX), (int)Math.floor(posY), (int)Math.floor(posZ))).getBlock() != ModBlocks.conveyor) { - this.setDead(); - world.spawnEntity(new EntityItem(world, posX, posY, posZ, this.getItemStack())); - return; - } - } - - IBlockState b = world.getBlockState(new BlockPos((int)Math.floor(posX), (int)Math.floor(posY), (int)Math.floor(posZ))); - if(b.getBlock() == ModBlocks.conveyor) { - - if(schedule <= 0) { - EnumFacing dir = b.getValue(BlockHorizontal.FACING); - - if(world.getBlockState(new BlockPos((int)Math.floor(posX), (int)Math.floor(posY) + 1, (int)Math.floor(posZ))).getBlock() == ModBlocks.conveyor && motionY >= 0) { - dir = EnumFacing.DOWN; - } - - if(world.getBlockState(new BlockPos((int)Math.floor(posX), (int)Math.floor(posY) - 1, (int)Math.floor(posZ))).getBlock() == ModBlocks.conveyor && motionY <= 0) { - dir = EnumFacing.UP; - } - - double speed = 0.1; - - schedule = (int) (1 / speed); - motionX = -speed * dir.getFrontOffsetX(); - motionY = -speed * dir.getFrontOffsetY(); - motionZ = -speed * dir.getFrontOffsetZ(); - } - - this.move(MoverType.SELF, motionX, motionY, motionZ); - schedule--; - } - } - @Override protected void entityInit() { this.getDataManager().register(STACK, ItemStack.EMPTY); @@ -147,4 +88,27 @@ protected void writeEntityToNBT(NBTTagCompound nbt) { nbt.setInteger("schedule", schedule); } + @Override + public void enterBlock(IEnterableBlock enterable, BlockPos pos, EnumFacing dir) { + + if(enterable.canItemEnter(world, pos.getX(), pos.getY(), pos.getZ(), dir, this)) { + enterable.onItemEnter(world, pos.getX(), pos.getY(), pos.getZ(), dir, this); + this.setDead(); + } + } + + @Override + public boolean onLeaveConveyor() { + + this.setDead(); + EntityItem item = new EntityItem(world, posX + motionX * 2, posY + motionY * 2, posZ + motionZ * 2, this.getItemStack()); + item.motionX = this.motionX * 2; + item.motionY = 0.1; + item.motionZ = this.motionZ * 2; + item.velocityChanged = true; + world.spawnEntity(item); + + return true; + } + } \ No newline at end of file diff --git a/src/main/java/com/hbm/entity/mob/EntityRADBeast.java b/src/main/java/com/hbm/entity/mob/EntityRADBeast.java index edc106d9ed..1ff48acc75 100644 --- a/src/main/java/com/hbm/entity/mob/EntityRADBeast.java +++ b/src/main/java/com/hbm/entity/mob/EntityRADBeast.java @@ -208,28 +208,32 @@ protected Item getDropItem() { } @Override - protected void dropLoot(boolean wasRecentlyHit, int looting, DamageSource source) { - super.dropLoot(wasRecentlyHit, looting, source); - if(looting > 0) { + protected void dropFewItems(boolean beenHit, int looting) { + if(beenHit) { + + if(looting > 0) { this.dropItem(ModItems.nugget_polonium, looting); - } - - int count = this.rand.nextInt(3) + 1; - - for(int i = 0; i < count; i++) { - - int r = this.rand.nextInt(3); - - if(r == 0) { - this.dropItem(this.isWet() ? ModItems.waste_uranium : ModItems.rod_uranium_fuel_depleted, 1); - - } else if(r == 1) { - this.dropItem(this.isWet() ? ModItems.waste_mox : ModItems.rod_mox_fuel_depleted, 1); - - } else if(r == 2) { - this.dropItem(this.isWet() ? ModItems.waste_plutonium : ModItems.rod_plutonium_fuel_depleted, 1); - - } + } + + int count = this.rand.nextInt(3) + 1; + + for(int i = 0; i < count; i++) { + + int r = this.rand.nextInt(3); + + if(r == 0) { + this.dropItem(this.isWet() ? ModItems.waste_uranium : ModItems.rod_uranium_fuel_depleted, 1); + + } else if(r == 1) { + this.dropItem(this.isWet() ? ModItems.waste_mox : ModItems.rod_mox_fuel_depleted, 1); + + } else if(r == 2) { + this.dropItem(this.isWet() ? ModItems.waste_plutonium : ModItems.rod_plutonium_fuel_depleted, 1); + + } + } } } + + } diff --git a/src/main/java/com/hbm/handler/ArmorModHandler.java b/src/main/java/com/hbm/handler/ArmorModHandler.java index dc27463430..b412a14d0a 100644 --- a/src/main/java/com/hbm/handler/ArmorModHandler.java +++ b/src/main/java/com/hbm/handler/ArmorModHandler.java @@ -73,8 +73,6 @@ public static boolean isApplicable(ItemStack armor, ItemStack mod) { * @param mod */ public static void applyMod(ItemStack armor, ItemStack mod) { - - if(mod == null | mod.isEmpty()) return; if(!armor.hasTagCompound()) armor.setTagCompound(new NBTTagCompound()); diff --git a/src/main/java/com/hbm/handler/ArmorUtil.java b/src/main/java/com/hbm/handler/ArmorUtil.java index 73801e62dd..4130b11df7 100644 --- a/src/main/java/com/hbm/handler/ArmorUtil.java +++ b/src/main/java/com/hbm/handler/ArmorUtil.java @@ -11,6 +11,7 @@ import com.hbm.util.Compat; import api.hbm.item.IGasMask; +import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -21,6 +22,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.NetHandlerPlayServer; import net.minecraft.util.NonNullList; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; import net.minecraftforge.event.ForgeEventFactory; import net.minecraftforge.fml.relauncher.ReflectionHelper; @@ -441,11 +443,11 @@ public static void addGasMaskTooltip(ItemStack mask, World world, List l ItemStack filter = ((IGasMask)mask.getItem()).getFilter(mask); if(filter == null) { - list.add("§cNo filter installed!"); + list.add(TextFormatting.RED + I18nUtil.resolveKey("desc.nofilter")); return; } - list.add("§6Installed filter:"); + list.add(TextFormatting.GOLD + I18nUtil.resolveKey("desc.infilter")); int meta = filter.getItemDamage(); int max = filter.getMaxDamage(); diff --git a/src/main/java/com/hbm/handler/GuiHandler.java b/src/main/java/com/hbm/handler/GuiHandler.java index 4df34bc5ee..a2b44f75dd 100644 --- a/src/main/java/com/hbm/handler/GuiHandler.java +++ b/src/main/java/com/hbm/handler/GuiHandler.java @@ -115,6 +115,8 @@ import com.hbm.tileentity.machine.rbmk.TileEntityRBMKRod; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKStorage; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKHeater; +import com.hbm.tileentity.network.TileEntityCraneExtractor; +import com.hbm.tileentity.network.TileEntityCraneInserter; import com.hbm.tileentity.turret.TileEntityTurretChekhov; import com.hbm.tileentity.turret.TileEntityTurretFriendly; import com.hbm.tileentity.turret.TileEntityTurretFritz; @@ -179,6 +181,16 @@ public Object getServerGuiElement(int ID, EntityPlayer player, World world, int return new ContainerMachineAssembler(player.inventory, (TileEntityMachineAssembler) entity); } return null; + case ModBlocks.guiID_crane_ejector: + if(entity instanceof TileEntityCraneExtractor){ + return new ContainerCraneExtractor(player.inventory, (TileEntityCraneExtractor) entity); + } + return null; + case ModBlocks.guiID_crane_inserter: + if(entity instanceof TileEntityCraneInserter){ + return new ContainerCraneInserter(player.inventory, (TileEntityCraneInserter) entity); + } + return null; case ModBlocks.guiID_machine_chemplant: if(entity instanceof TileEntityMachineChemplant) { return new ContainerMachineChemplant(player.inventory, (TileEntityMachineChemplant) entity); diff --git a/src/main/java/com/hbm/handler/MultiblockHandler.java b/src/main/java/com/hbm/handler/MultiblockHandler.java index 407615b8b6..61ddc5284d 100644 --- a/src/main/java/com/hbm/handler/MultiblockHandler.java +++ b/src/main/java/com/hbm/handler/MultiblockHandler.java @@ -1,25 +1,15 @@ package com.hbm.handler; import com.hbm.interfaces.IDummy; -import com.hbm.main.MainRegistry; -import com.hbm.packet.NBTPacket; -import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.machine.TileEntityDummy; import net.minecraft.block.Block; -import net.minecraft.block.state.IBlockState; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.play.server.SPacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos.MutableBlockPos; import net.minecraft.world.World; -import net.minecraftforge.fml.common.network.NetworkRegistry; -import net.minecraftforge.fml.common.network.simpleimpl.IMessage; public class MultiblockHandler { @@ -138,7 +128,8 @@ public static boolean fillUp(World world, BlockPos pos, int[] i, Block block) { for(int b = y - i[3]; b <= y + i[2]; b++) { for(int c = z - i[5]; c <= z + i[4]; c++) { if(!(a == x && b == y && c == z)) { - world.setBlockState(replace.setPos(a, b, c), block.getDefaultState()); + if(!world.isRemote) + world.setBlockState(replace.setPos(a, b, c), block.getDefaultState()); TileEntity te = world.getTileEntity(replace.setPos(a, b, c)); if(te instanceof TileEntityDummy) { TileEntityDummy dummy = (TileEntityDummy)te; diff --git a/src/main/java/com/hbm/handler/jei/AlloyFurnaceRecipeHandler.java b/src/main/java/com/hbm/handler/jei/AlloyFurnaceRecipeHandler.java index ff8e9f14e4..9bde83ab9d 100644 --- a/src/main/java/com/hbm/handler/jei/AlloyFurnaceRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/AlloyFurnaceRecipeHandler.java @@ -5,6 +5,7 @@ import com.hbm.handler.jei.JeiRecipes.AlloyFurnaceRecipe; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IDrawableAnimated; @@ -54,7 +55,7 @@ public String getUid() { @Override public String getTitle() { - return "Blast Furnace"; + return I18nUtil.resolveKey("tile.machine_difurnace_off.name"); } @Override diff --git a/src/main/java/com/hbm/handler/jei/AnvilRecipeHandler.java b/src/main/java/com/hbm/handler/jei/AnvilRecipeHandler.java index 01d9a9b23f..d05ff8ab9e 100644 --- a/src/main/java/com/hbm/handler/jei/AnvilRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/AnvilRecipeHandler.java @@ -1,5 +1,6 @@ package com.hbm.handler.jei; +import com.hbm.util.I18nUtil; import org.lwjgl.opengl.GL11; import com.hbm.handler.jei.JeiRecipes.AnvilRecipe; @@ -34,7 +35,7 @@ public String getUid(){ @Override public String getTitle(){ - return "Anvil"; + return I18nUtil.resolveKey("hbm.achievement.progress_anvil"); } @Override @@ -51,25 +52,25 @@ public IDrawable getBackground(){ public void drawExtras(Minecraft minecraft){ if(currentDrawHack != null){ if(currentDrawHack.tierUpper == -1){ - minecraft.fontRenderer.drawString("Tier: " + currentDrawHack.tierLower, 84, 40, 0x40404040); + minecraft.fontRenderer.drawString(I18nUtil.resolveKey("desc.tier") + " " + currentDrawHack.tierLower, 84, 40, 0x40404040); } else { - minecraft.fontRenderer.drawString("Min Tier: " + currentDrawHack.tierLower, 74, 40, 0x40404040); - minecraft.fontRenderer.drawString("Max Tier: " + currentDrawHack.tierUpper, 73, 50, 0x40404040); + minecraft.fontRenderer.drawString(I18nUtil.resolveKey("desc.mintier") + " " + currentDrawHack.tierLower, 74, 40, 0x40404040); + minecraft.fontRenderer.drawString(I18nUtil.resolveKey("desc.maxtier") + " " + currentDrawHack.tierUpper, 73, 50, 0x40404040); } GL11.glPushMatrix(); GL11.glScaled(0.5, 0.5, 1); switch(currentDrawHack.overlay){ case CONSTRUCTION: - minecraft.fontRenderer.drawString("Construction", 83*2, 82*2, 0x40404040); + minecraft.fontRenderer.drawString(I18nUtil.resolveKey("jei.construction"), 83*2, 82*2, 0x40404040); break; case SMITHING: - minecraft.fontRenderer.drawString("Smithing", 89*2, 82*2, 0x40404040); + minecraft.fontRenderer.drawString(I18nUtil.resolveKey("jei.smithing"), 89*2, 82*2, 0x40404040); break; case RECYCLING: - minecraft.fontRenderer.drawString("Recycling", 87*2, 82*2, 0x40404040); + minecraft.fontRenderer.drawString(I18nUtil.resolveKey("jei.recycling"), 87*2, 82*2, 0x40404040); break; case NONE: - minecraft.fontRenderer.drawString("Conversion", 85*2, 82*2, 0x40404040); + minecraft.fontRenderer.drawString(I18nUtil.resolveKey("jei.conversion"), 85*2, 82*2, 0x40404040); break; } GL11.glPopMatrix(); diff --git a/src/main/java/com/hbm/handler/jei/AssemblerRecipeHandler.java b/src/main/java/com/hbm/handler/jei/AssemblerRecipeHandler.java index e18759b4a1..4e7230b8ed 100644 --- a/src/main/java/com/hbm/handler/jei/AssemblerRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/AssemblerRecipeHandler.java @@ -3,6 +3,7 @@ import com.hbm.handler.jei.JeiRecipes.AssemblerRecipeWrapper; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IDrawableAnimated; @@ -44,7 +45,7 @@ public String getUid() { @Override public String getTitle() { - return "Assembly Machine"; + return I18nUtil.resolveKey("tile.machine_assembler.name"); } @Override diff --git a/src/main/java/com/hbm/handler/jei/BoilerRecipeHandler.java b/src/main/java/com/hbm/handler/jei/BoilerRecipeHandler.java index 3f0c629663..df0055bad9 100644 --- a/src/main/java/com/hbm/handler/jei/BoilerRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/BoilerRecipeHandler.java @@ -3,6 +3,7 @@ import com.hbm.handler.jei.JeiRecipes.BoilerRecipe; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IDrawableAnimated; @@ -36,7 +37,7 @@ public String getUid() { @Override public String getTitle() { - return "Boiler"; + return I18nUtil.resolveKey("tile.machine_boiler_off.name"); } @Override diff --git a/src/main/java/com/hbm/handler/jei/BookRecipeHandler.java b/src/main/java/com/hbm/handler/jei/BookRecipeHandler.java index 6774da6609..3dc0324cec 100644 --- a/src/main/java/com/hbm/handler/jei/BookRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/BookRecipeHandler.java @@ -3,6 +3,7 @@ import com.hbm.handler.jei.JeiRecipes.BookRecipe; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IGuiItemStackGroup; @@ -28,7 +29,7 @@ public String getUid() { @Override public String getTitle() { - return "Black Book"; + return I18nUtil.resolveKey("jei.blackbook"); } @Override diff --git a/src/main/java/com/hbm/handler/jei/CMBFurnaceRecipeHandler.java b/src/main/java/com/hbm/handler/jei/CMBFurnaceRecipeHandler.java index e1327088ca..e15f0e733e 100644 --- a/src/main/java/com/hbm/handler/jei/CMBFurnaceRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/CMBFurnaceRecipeHandler.java @@ -3,6 +3,7 @@ import com.hbm.handler.jei.JeiRecipes.CMBFurnaceRecipe; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IDrawableAnimated; @@ -47,7 +48,7 @@ public String getUid() { @Override public String getTitle() { - return "CMB Steel Furnace"; + return I18nUtil.resolveKey("tile.machine_combine_factory.name"); } @Override diff --git a/src/main/java/com/hbm/handler/jei/CentrifugeRecipeHandler.java b/src/main/java/com/hbm/handler/jei/CentrifugeRecipeHandler.java index 85e2c9106a..7e3b1d978a 100644 --- a/src/main/java/com/hbm/handler/jei/CentrifugeRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/CentrifugeRecipeHandler.java @@ -3,6 +3,7 @@ import com.hbm.inventory.CentrifugeRecipes.CentrifugeRecipe; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IDrawableAnimated; @@ -47,7 +48,7 @@ public String getUid() { @Override public String getTitle() { - return "Centrifuge"; + return I18nUtil.resolveKey("tile.machine_centrifuge.name"); } @Override diff --git a/src/main/java/com/hbm/handler/jei/ChemplantRecipeHandler.java b/src/main/java/com/hbm/handler/jei/ChemplantRecipeHandler.java index fd120c279d..86f912bcf9 100644 --- a/src/main/java/com/hbm/handler/jei/ChemplantRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/ChemplantRecipeHandler.java @@ -3,6 +3,7 @@ import com.hbm.handler.jei.JeiRecipes.ChemRecipe; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IDrawableAnimated; @@ -40,7 +41,7 @@ public String getUid() { @Override public String getTitle() { - return "Chemical Plant"; + return I18nUtil.resolveKey("tile.machine_chemplant.name"); } @Override diff --git a/src/main/java/com/hbm/handler/jei/CrackingRecipeHandler.java b/src/main/java/com/hbm/handler/jei/CrackingRecipeHandler.java index 5a19646a0a..d6f05e748b 100644 --- a/src/main/java/com/hbm/handler/jei/CrackingRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/CrackingRecipeHandler.java @@ -3,6 +3,7 @@ import com.hbm.handler.jei.JeiRecipes.CrackingRecipe; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IGuiItemStackGroup; @@ -28,7 +29,7 @@ public String getUid() { @Override public String getTitle() { - return "Catalytic Cracker"; + return I18nUtil.resolveKey("tile.machine_catalytic_cracker.name"); } @Override diff --git a/src/main/java/com/hbm/handler/jei/CrystallizerRecipeHandler.java b/src/main/java/com/hbm/handler/jei/CrystallizerRecipeHandler.java index e3bd658afd..80171f503a 100644 --- a/src/main/java/com/hbm/handler/jei/CrystallizerRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/CrystallizerRecipeHandler.java @@ -5,6 +5,7 @@ import com.hbm.items.machine.ItemFluidIcon; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IDrawableAnimated; @@ -44,7 +45,7 @@ public String getUid() { @Override public String getTitle() { - return "Ore Acidizer"; + return I18nUtil.resolveKey("tile.machine_crystallizer.name"); } @Override diff --git a/src/main/java/com/hbm/handler/jei/CyclotronRecipeHandler.java b/src/main/java/com/hbm/handler/jei/CyclotronRecipeHandler.java index 74b0f83287..6a58eabb9d 100644 --- a/src/main/java/com/hbm/handler/jei/CyclotronRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/CyclotronRecipeHandler.java @@ -3,6 +3,7 @@ import com.hbm.handler.jei.JeiRecipes.CyclotronRecipe; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IDrawableAnimated; @@ -37,7 +38,7 @@ public String getUid() { @Override public String getTitle() { - return "Cyclotron"; + return I18nUtil.resolveKey("tile.machine_cyclotron.name"); } @Override diff --git a/src/main/java/com/hbm/handler/jei/DFCRecipeHandler.java b/src/main/java/com/hbm/handler/jei/DFCRecipeHandler.java index 0de813908d..1513e4fb9c 100644 --- a/src/main/java/com/hbm/handler/jei/DFCRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/DFCRecipeHandler.java @@ -3,6 +3,7 @@ import com.hbm.inventory.DFCRecipes.DFCRecipe; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IDrawableAnimated; @@ -32,7 +33,7 @@ public String getUid() { @Override public String getTitle() { - return "DFC Crate Recipe"; + return I18nUtil.resolveKey("jei.dfc"); } @Override diff --git a/src/main/java/com/hbm/handler/jei/FluidRecipeHandler.java b/src/main/java/com/hbm/handler/jei/FluidRecipeHandler.java index 0458e0a74f..b737f78e9b 100644 --- a/src/main/java/com/hbm/handler/jei/FluidRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/FluidRecipeHandler.java @@ -4,6 +4,7 @@ import com.hbm.handler.jei.JeiRecipes.FluidRecipeInverse; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IGuiFluidStackGroup; @@ -30,7 +31,7 @@ public String getUid() { @Override public String getTitle() { - return "Fluids"; + return I18nUtil.resolveKey("jei.fluids"); } @Override diff --git a/src/main/java/com/hbm/handler/jei/FractioningRecipeHandler.java b/src/main/java/com/hbm/handler/jei/FractioningRecipeHandler.java index 65a7eef357..f1ffd83fee 100644 --- a/src/main/java/com/hbm/handler/jei/FractioningRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/FractioningRecipeHandler.java @@ -3,6 +3,7 @@ import com.hbm.handler.jei.JeiRecipes.FractioningRecipe; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IGuiItemStackGroup; @@ -28,7 +29,7 @@ public String getUid() { @Override public String getTitle() { - return "Fractioning Tower"; + return I18nUtil.resolveKey("tile.machine_fraction_tower.name"); } @Override diff --git a/src/main/java/com/hbm/handler/jei/FusionRecipeHandler.java b/src/main/java/com/hbm/handler/jei/FusionRecipeHandler.java index 01a1626b8d..483df5ed2c 100644 --- a/src/main/java/com/hbm/handler/jei/FusionRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/FusionRecipeHandler.java @@ -3,6 +3,7 @@ import com.hbm.handler.jei.JeiRecipes.FusionRecipe; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IGuiItemStackGroup; @@ -28,7 +29,7 @@ public String getUid() { @Override public String getTitle() { - return "Fusion Reactor"; + return I18nUtil.resolveKey("container.machineITER"); } @Override diff --git a/src/main/java/com/hbm/handler/jei/GasCentrifugeRecipeHandler.java b/src/main/java/com/hbm/handler/jei/GasCentrifugeRecipeHandler.java index fd3bc84465..a12fd25a8b 100644 --- a/src/main/java/com/hbm/handler/jei/GasCentrifugeRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/GasCentrifugeRecipeHandler.java @@ -3,6 +3,7 @@ import com.hbm.handler.jei.JeiRecipes.GasCentRecipe; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IDrawableAnimated; @@ -42,7 +43,7 @@ public String getUid() { @Override public String getTitle() { - return "Gas Centrifuge"; + return I18nUtil.resolveKey("tile.machine_gascent.name"); } @Override diff --git a/src/main/java/com/hbm/handler/jei/HadronRecipeHandler.java b/src/main/java/com/hbm/handler/jei/HadronRecipeHandler.java index f03abaf73a..8b02be9cff 100644 --- a/src/main/java/com/hbm/handler/jei/HadronRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/HadronRecipeHandler.java @@ -3,6 +3,7 @@ import com.hbm.handler.jei.JeiRecipes.HadronRecipe; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IDrawableAnimated; @@ -40,7 +41,7 @@ public String getUid() { @Override public String getTitle() { - return "Particle Accelerator"; + return I18nUtil.resolveKey("container.hadron"); } @Override diff --git a/src/main/java/com/hbm/handler/jei/MixerRecipeHandler.java b/src/main/java/com/hbm/handler/jei/MixerRecipeHandler.java index 18073e82f0..1ed0282d21 100644 --- a/src/main/java/com/hbm/handler/jei/MixerRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/MixerRecipeHandler.java @@ -3,6 +3,7 @@ import com.hbm.handler.jei.JeiRecipes.MixerRecipe; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IGuiItemStackGroup; @@ -28,7 +29,7 @@ public String getUid() { @Override public String getTitle() { - return "Mixer"; + return I18nUtil.resolveKey("container.machineMixer"); } @Override diff --git a/src/main/java/com/hbm/handler/jei/PressRecipeHandler.java b/src/main/java/com/hbm/handler/jei/PressRecipeHandler.java index c2e7252732..8a253373e1 100644 --- a/src/main/java/com/hbm/handler/jei/PressRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/PressRecipeHandler.java @@ -3,6 +3,7 @@ import com.hbm.handler.jei.JeiRecipes.PressRecipe; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IDrawableAnimated; @@ -36,7 +37,7 @@ public String getUid() { @Override public String getTitle() { - return "Press"; + return I18nUtil.resolveKey("desc.machine_press"); } @Override diff --git a/src/main/java/com/hbm/handler/jei/RBMKOutgasserRecipeHandler.java b/src/main/java/com/hbm/handler/jei/RBMKOutgasserRecipeHandler.java index bfda54f8bd..8452f3d0f4 100644 --- a/src/main/java/com/hbm/handler/jei/RBMKOutgasserRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/RBMKOutgasserRecipeHandler.java @@ -3,6 +3,7 @@ import com.hbm.inventory.RBMKOutgasserRecipes.RBMKOutgasserRecipe; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IDrawableAnimated; @@ -36,7 +37,7 @@ public String getUid() { @Override public String getTitle() { - return "RBMK Irradiation Channel"; + return I18nUtil.resolveKey("container.rbmkOutgasser"); } @Override diff --git a/src/main/java/com/hbm/handler/jei/ReactorRecipeHandler.java b/src/main/java/com/hbm/handler/jei/ReactorRecipeHandler.java index 805b2dcd28..ebc1ccd033 100644 --- a/src/main/java/com/hbm/handler/jei/ReactorRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/ReactorRecipeHandler.java @@ -3,6 +3,7 @@ import com.hbm.handler.jei.JeiRecipes.ReactorRecipe; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IDrawableAnimated; @@ -48,7 +49,7 @@ public String getUid() { @Override public String getTitle() { - return "Breeding Reactor"; + return I18nUtil.resolveKey("tile.machine_reactor.name"); } @Override diff --git a/src/main/java/com/hbm/handler/jei/RefineryRecipeHandler.java b/src/main/java/com/hbm/handler/jei/RefineryRecipeHandler.java index 03f7c800d7..28ae5f2673 100644 --- a/src/main/java/com/hbm/handler/jei/RefineryRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/RefineryRecipeHandler.java @@ -3,6 +3,7 @@ import com.hbm.handler.jei.JeiRecipes.RefineryRecipe; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IDrawableAnimated; @@ -42,7 +43,7 @@ public String getUid() { @Override public String getTitle() { - return "Refinery"; + return I18nUtil.resolveKey("tile.machine_refinery.name"); } @Override diff --git a/src/main/java/com/hbm/handler/jei/SAFERecipeHandler.java b/src/main/java/com/hbm/handler/jei/SAFERecipeHandler.java index d05707a4cd..33fb02a0ca 100644 --- a/src/main/java/com/hbm/handler/jei/SAFERecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/SAFERecipeHandler.java @@ -3,6 +3,7 @@ import com.hbm.handler.jei.JeiRecipes.SAFERecipe; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IGuiItemStackGroup; @@ -28,7 +29,7 @@ public String getUid() { @Override public String getTitle() { - return "S.A.F.E Singlarity Breeding"; + return I18nUtil.resolveKey("tile.fwatz_core.name"); } @Override diff --git a/src/main/java/com/hbm/handler/jei/SILEXDigammaRecipeHandler.java b/src/main/java/com/hbm/handler/jei/SILEXDigammaRecipeHandler.java index 295d4ccd82..22c8d08c50 100644 --- a/src/main/java/com/hbm/handler/jei/SILEXDigammaRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/SILEXDigammaRecipeHandler.java @@ -2,6 +2,7 @@ import com.hbm.handler.jei.SILEXRecipeHandler; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; public class SILEXDigammaRecipeHandler extends SILEXRecipeHandler { @@ -17,6 +18,6 @@ public String getUid(){ @Override public String getTitle(){ - return "SILEX Digamma Recipes"; + return I18nUtil.resolveKey("jei.silexdigamma"); } } diff --git a/src/main/java/com/hbm/handler/jei/SILEXGammaRecipeHandler.java b/src/main/java/com/hbm/handler/jei/SILEXGammaRecipeHandler.java index 2680582ddc..e65da4f149 100644 --- a/src/main/java/com/hbm/handler/jei/SILEXGammaRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/SILEXGammaRecipeHandler.java @@ -2,6 +2,7 @@ import com.hbm.handler.jei.SILEXRecipeHandler; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; public class SILEXGammaRecipeHandler extends SILEXRecipeHandler { @@ -17,6 +18,6 @@ public String getUid(){ @Override public String getTitle(){ - return "SILEX Gamma Recipes"; + return I18nUtil.resolveKey("jei.silexgamma"); } } diff --git a/src/main/java/com/hbm/handler/jei/SILEXIrRecipeHandler.java b/src/main/java/com/hbm/handler/jei/SILEXIrRecipeHandler.java index 224530b118..695b1167c1 100644 --- a/src/main/java/com/hbm/handler/jei/SILEXIrRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/SILEXIrRecipeHandler.java @@ -2,6 +2,7 @@ import com.hbm.handler.jei.SILEXRecipeHandler; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; public class SILEXIrRecipeHandler extends SILEXRecipeHandler { @@ -17,6 +18,6 @@ public String getUid(){ @Override public String getTitle(){ - return "SILEX Infrared Recipes"; + return I18nUtil.resolveKey("jei.silexinfr"); } } diff --git a/src/main/java/com/hbm/handler/jei/SILEXMicroRecipeHandler.java b/src/main/java/com/hbm/handler/jei/SILEXMicroRecipeHandler.java index 3b4f649062..49b5bb44c2 100644 --- a/src/main/java/com/hbm/handler/jei/SILEXMicroRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/SILEXMicroRecipeHandler.java @@ -2,6 +2,7 @@ import com.hbm.handler.jei.SILEXRecipeHandler; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; public class SILEXMicroRecipeHandler extends SILEXRecipeHandler { @@ -17,6 +18,6 @@ public String getUid(){ @Override public String getTitle(){ - return "SILEX Micro Recipes"; + return I18nUtil.resolveKey("jei.silexmicro"); } } diff --git a/src/main/java/com/hbm/handler/jei/SILEXRadioRecipeHandler.java b/src/main/java/com/hbm/handler/jei/SILEXRadioRecipeHandler.java index 128960d40d..b5f2fc712b 100644 --- a/src/main/java/com/hbm/handler/jei/SILEXRadioRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/SILEXRadioRecipeHandler.java @@ -2,6 +2,7 @@ import com.hbm.handler.jei.SILEXRecipeHandler; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; public class SILEXRadioRecipeHandler extends SILEXRecipeHandler { @@ -17,6 +18,6 @@ public String getUid(){ @Override public String getTitle(){ - return "SILEX Radio Recipes"; + return I18nUtil.resolveKey("jei.silexradio"); } } diff --git a/src/main/java/com/hbm/handler/jei/SILEXRecipeHandler.java b/src/main/java/com/hbm/handler/jei/SILEXRecipeHandler.java index 4be99b2fb9..0cfe25be1e 100644 --- a/src/main/java/com/hbm/handler/jei/SILEXRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/SILEXRecipeHandler.java @@ -35,7 +35,7 @@ public String getUid(){ @Override public String getTitle(){ - return "SILEX"; + return I18nUtil.resolveKey("container.machineSILEX"); } @Override diff --git a/src/main/java/com/hbm/handler/jei/SILEXUVRecipeHandler.java b/src/main/java/com/hbm/handler/jei/SILEXUVRecipeHandler.java index 8f13c8e663..ed5fdf49f7 100644 --- a/src/main/java/com/hbm/handler/jei/SILEXUVRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/SILEXUVRecipeHandler.java @@ -2,6 +2,7 @@ import com.hbm.handler.jei.SILEXRecipeHandler; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; public class SILEXUVRecipeHandler extends SILEXRecipeHandler { @@ -17,6 +18,6 @@ public String getUid(){ @Override public String getTitle(){ - return "SILEX UV Recipes"; + return I18nUtil.resolveKey("jei.silexuv"); } } diff --git a/src/main/java/com/hbm/handler/jei/SILEXVisibleRecipeHandler.java b/src/main/java/com/hbm/handler/jei/SILEXVisibleRecipeHandler.java index 2ad3d1b821..7a1b02b28d 100644 --- a/src/main/java/com/hbm/handler/jei/SILEXVisibleRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/SILEXVisibleRecipeHandler.java @@ -2,6 +2,7 @@ import com.hbm.handler.jei.SILEXRecipeHandler; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; public class SILEXVisibleRecipeHandler extends SILEXRecipeHandler { @@ -17,6 +18,6 @@ public String getUid(){ @Override public String getTitle(){ - return "SILEX Visible Recipes"; + return I18nUtil.resolveKey("jei.silexvisible"); } } diff --git a/src/main/java/com/hbm/handler/jei/SILEXXRayRecipeHandler.java b/src/main/java/com/hbm/handler/jei/SILEXXRayRecipeHandler.java index 74908e8757..28da0262a4 100644 --- a/src/main/java/com/hbm/handler/jei/SILEXXRayRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/SILEXXRayRecipeHandler.java @@ -2,6 +2,7 @@ import com.hbm.handler.jei.SILEXRecipeHandler; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; public class SILEXXRayRecipeHandler extends SILEXRecipeHandler { @@ -17,6 +18,6 @@ public String getUid(){ @Override public String getTitle(){ - return "SILEX X-Ray Recipes"; + return I18nUtil.resolveKey("jei.silexxray"); } } diff --git a/src/main/java/com/hbm/handler/jei/ShredderRecipeHandler.java b/src/main/java/com/hbm/handler/jei/ShredderRecipeHandler.java index 397525fae9..36c46e652b 100644 --- a/src/main/java/com/hbm/handler/jei/ShredderRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/ShredderRecipeHandler.java @@ -3,6 +3,7 @@ import com.hbm.inventory.ShredderRecipes.ShredderRecipe; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IDrawableAnimated; @@ -42,7 +43,7 @@ public String getUid() { @Override public String getTitle() { - return "Shredder"; + return I18nUtil.resolveKey("tile.machine_shredder.name"); } @Override diff --git a/src/main/java/com/hbm/handler/jei/SmithingRecipeHandler.java b/src/main/java/com/hbm/handler/jei/SmithingRecipeHandler.java index 0f414627da..b4c3c10468 100644 --- a/src/main/java/com/hbm/handler/jei/SmithingRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/SmithingRecipeHandler.java @@ -4,6 +4,7 @@ import com.hbm.handler.jei.JeiRecipes.SmithingRecipe; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IGuiItemStackGroup; @@ -32,7 +33,7 @@ public String getUid(){ @Override public String getTitle(){ - return "Anvil"; + return I18nUtil.resolveKey("hbm.achievement.progress_anvil"); } @Override @@ -48,7 +49,7 @@ public IDrawable getBackground(){ @Override public void drawExtras(Minecraft minecraft){ if(currentDrawHack != null){ - minecraft.fontRenderer.drawString("Tier " + currentDrawHack.tier, 30, -12, 0x40404040); + minecraft.fontRenderer.drawString(I18nUtil.resolveKey("desc.tier") + " " + currentDrawHack.tier, 30, -12, 0x40404040); } } diff --git a/src/main/java/com/hbm/handler/jei/StorageDrumRecipeHandler.java b/src/main/java/com/hbm/handler/jei/StorageDrumRecipeHandler.java index d133a520f1..fc93a1576a 100644 --- a/src/main/java/com/hbm/handler/jei/StorageDrumRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/StorageDrumRecipeHandler.java @@ -3,6 +3,7 @@ import com.hbm.handler.jei.JeiRecipes.StorageDrumRecipe; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IGuiItemStackGroup; @@ -28,7 +29,7 @@ public String getUid() { @Override public String getTitle() { - return "Nuclear Waste Drum"; + return I18nUtil.resolveKey("container.storageDrum"); } @Override diff --git a/src/main/java/com/hbm/handler/jei/TransmutationRecipeHandler.java b/src/main/java/com/hbm/handler/jei/TransmutationRecipeHandler.java index 7c2fc5e157..632820402a 100644 --- a/src/main/java/com/hbm/handler/jei/TransmutationRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/TransmutationRecipeHandler.java @@ -3,6 +3,7 @@ import com.hbm.handler.jei.JeiRecipes.TransmutationRecipe; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IGuiItemStackGroup; @@ -28,7 +29,7 @@ public String getUid() { @Override public String getTitle() { - return "Nuclear Transmutation"; + return I18nUtil.resolveKey("tile.machine_schrabidium_transmutator.name"); } @Override diff --git a/src/main/java/com/hbm/handler/jei/WasteDrumRecipeHandler.java b/src/main/java/com/hbm/handler/jei/WasteDrumRecipeHandler.java index 28aaecb883..eede8a8b12 100644 --- a/src/main/java/com/hbm/handler/jei/WasteDrumRecipeHandler.java +++ b/src/main/java/com/hbm/handler/jei/WasteDrumRecipeHandler.java @@ -3,6 +3,7 @@ import com.hbm.handler.jei.JeiRecipes.WasteDrumRecipe; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IGuiItemStackGroup; @@ -28,7 +29,7 @@ public String getUid() { @Override public String getTitle() { - return "Waste Drum"; + return I18nUtil.resolveKey("jei.wastedrum"); } @Override diff --git a/src/main/java/com/hbm/hazard/type/HazardTypeBase.java b/src/main/java/com/hbm/hazard/type/HazardTypeBase.java index fbf2e8ada5..3659cf89e0 100644 --- a/src/main/java/com/hbm/hazard/type/HazardTypeBase.java +++ b/src/main/java/com/hbm/hazard/type/HazardTypeBase.java @@ -17,7 +17,7 @@ public abstract class HazardTypeBase { * Does the thing. Called by HazardEntry.applyHazard * @param target the holder * @param level the final level after calculating all the modifiers - * @param the stack that is being updated + * @param stack the stack that is being updated */ public abstract void onUpdate(EntityLivingBase target, float level, ItemStack stack); diff --git a/src/main/java/com/hbm/hazard/type/HazardTypeRadiation.java b/src/main/java/com/hbm/hazard/type/HazardTypeRadiation.java index 35f988b129..4bf8386bc7 100644 --- a/src/main/java/com/hbm/hazard/type/HazardTypeRadiation.java +++ b/src/main/java/com/hbm/hazard/type/HazardTypeRadiation.java @@ -50,10 +50,11 @@ public void addHazardInformation(EntityPlayer player, List list, float l list.add(TextFormatting.GREEN + "[" + I18nUtil.resolveKey("trait.radioactive") + "]"); String rad = "" + (Math.floor(level* 1000) / 1000); - list.add(TextFormatting.YELLOW + (rad + " RAD/s")); + String radS = " " + I18nUtil.resolveKey("desc.rads"); + list.add(TextFormatting.YELLOW + rad + radS); if(stack.getCount() > 1) { - list.add(TextFormatting.YELLOW + "Stack: " + ((Math.floor(level * 1000 * stack.getCount()) / 1000) + " RAD/s")); + list.add(TextFormatting.YELLOW + I18nUtil.resolveKey("desc.stack") + " " + (Math.floor(level * 1000 * stack.getCount()) / 1000) + radS); } } diff --git a/src/main/java/com/hbm/inventory/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/AssemblerRecipes.java index 827467f1db..4ab297b74a 100644 --- a/src/main/java/com/hbm/inventory/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/AssemblerRecipes.java @@ -1023,7 +1023,7 @@ private static void registerDefaults() { makeRecipe(new ComparableStack(ModBlocks.sliding_gate_door, 1), new AStack[]{new OreDictStack(PB.plate(), 4), new OreDictStack(STEEL.plate(), 12), new OreDictStack(ALLOY.plate(), 4), new ComparableStack(ModItems.plate_polymer, 2), new OreDictStack(STEEL.block(), 1), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.bolt_dura_steel, 2), new OreDictStack(KEY_WHITE, 2)}, 500); makeRecipe(new ComparableStack(ModBlocks.transition_seal, 1), new AStack[]{new ComparableStack(ModBlocks.cmb_brick_reinforced, 16), new OreDictStack(STEEL.plate(), 64), new OreDictStack(ALLOY.plate(), 40), new ComparableStack(ModItems.plate_polymer, 36), new OreDictStack(STEEL.block(), 24), new ComparableStack(ModItems.motor_desh, 16), new ComparableStack(ModItems.bolt_dura_steel, 12), new OreDictStack(KEY_YELLOW, 4)}, 5000); - makeRecipe(new ComparableStack(ModBlocks.control_panel_custom, 1), new AStack[]{new ComparableStack(ModItems.circuit_targeting_tier5), new OreDictStack(STEEL.block(), 1), new ComparableStack(ModItems.wire_copper, 24), new ComparableStack(ModBlocks.pole_top)}, 100); + makeRecipe(new ComparableStack(ModBlocks.control0, 1), new AStack[]{new ComparableStack(ModItems.circuit_targeting_tier5), new OreDictStack(STEEL.block(), 1), new ComparableStack(ModItems.wire_copper, 24), new ComparableStack(ModBlocks.pole_top)}, 100); makeRecipe(new ComparableStack(ModBlocks.railgun_plasma, 1), new AStack[]{new OreDictStack(STEEL.plate(), 24), new ComparableStack(ModItems.hull_big_steel, 2), new ComparableStack(ModItems.hull_small_steel, 6), new ComparableStack(ModItems.pipes_steel, 2), new ComparableStack(ModBlocks.machine_desh_battery, 4), new ComparableStack(ModItems.coil_copper, 16), new ComparableStack(ModItems.coil_copper_torus, 8), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.circuit_targeting_tier4, 4), new ComparableStack(ModItems.circuit_targeting_tier3, 2), new OreDictStack(ANY_PLASTIC.ingot(), 4)}, 500); /// HIDDEN /// diff --git a/src/main/java/com/hbm/inventory/BedrockOreRegistry.java b/src/main/java/com/hbm/inventory/BedrockOreRegistry.java index 3dcb623bd9..42f8f13392 100644 --- a/src/main/java/com/hbm/inventory/BedrockOreRegistry.java +++ b/src/main/java/com/hbm/inventory/BedrockOreRegistry.java @@ -16,7 +16,6 @@ import net.minecraft.init.Blocks; import net.minecraft.block.Block; import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemBlock; import net.minecraft.util.WeightedRandom; import net.minecraftforge.oredict.OreDictionary; import net.minecraftforge.fluids.FluidStack; @@ -30,7 +29,6 @@ public class BedrockOreRegistry { public static HashMap oreResults = new HashMap(); public static HashMap oreColors = new HashMap(); - public static HashMap oreNames = new HashMap(); public static HashMap oreTiers = new HashMap(); public static HashMap> oreCasino = new HashMap(); @@ -40,19 +38,10 @@ public static void registerBedrockOres(){ fillOreCasino(); } - public static boolean is3DBlock(String ore){ - boolean isBlock = false; - for(ItemStack item: OreDictionary.getOres(ore)) - isBlock |= item.getItem() instanceof ItemBlock; - if(isBlock) return true; - return false; - } - public static void collectBedrockOres(){ int index = 0; for(String oreName : OreDictionary.getOreNames()){ - if(oreName.startsWith("ore") && is3DBlock(oreName)){ - + if(oreName.startsWith("ore")){ String resourceName = oreName.substring(3); String oreGem = "gem"+resourceName; @@ -82,7 +71,6 @@ public static void collectBedrockOres(){ index++; oreResults.put(oreName, oreIngot); oreTiers.put(oreName, Math.max(1, 1+getDirectOreTier(oreName))); - continue; } } } @@ -158,7 +146,7 @@ public static int getDirectOreTier(String oreName){ } public static String getOreName(String oreName){ - return oreName.substring(3).replaceAll("([A-Z])", " $1").trim(); + return oreName.substring(3).replaceAll("([A-Z])", "$1").trim(); } public static void registerOreColors(){ @@ -184,6 +172,7 @@ public static void registerScannerOreColors(){ } } + public static int getOreScanColor(String ore){ Integer x = oreScanColors.get(ore); if(x == null) return 0; diff --git a/src/main/java/com/hbm/inventory/DFCRecipes.java b/src/main/java/com/hbm/inventory/DFCRecipes.java index a6408d2572..6dfd61db56 100644 --- a/src/main/java/com/hbm/inventory/DFCRecipes.java +++ b/src/main/java/com/hbm/inventory/DFCRecipes.java @@ -84,6 +84,7 @@ public static void register() { DFCRecipes.setRecipe(690000000000L, ModItems.gun_uboinik, new ItemStack(ModItems.gun_supershotgun)); DFCRecipes.setRecipe(1000000000000L, ModItems.undefined, new ItemStack(ModItems.glitch)); + DFCRecipes.setRecipe(10000000000000L, ModItems.rod_of_discord, new ItemStack(ModItems.wand)); DFCRecipes.setRecipe(12000000000000L, ModItems.battery_spark_cell_power, new ItemStack(ModItems.battery_creative)); DFCRecipes.setRecipe(69000000000000L, Items.WRITABLE_BOOK, new ItemStack(ModItems.book_of_)); } diff --git a/src/main/java/com/hbm/inventory/SlotPattern.java b/src/main/java/com/hbm/inventory/SlotPattern.java new file mode 100644 index 0000000000..d4bd562e98 --- /dev/null +++ b/src/main/java/com/hbm/inventory/SlotPattern.java @@ -0,0 +1,39 @@ +package com.hbm.inventory; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.SlotItemHandler; + +public class SlotPattern extends SlotItemHandler { + + protected boolean canHover = true; + + public SlotPattern(IItemHandler inv, int index, int x, int y) { + super(inv, index, x, y); + } + + @Override + public boolean canTakeStack(EntityPlayer player) { + return false; + } + + @Override + public int getSlotStackLimit() { + return 1; + } + + public SlotPattern disableHover() { + this.canHover = false; + return this; + } + + @Override + @SideOnly(Side.CLIENT) + public boolean isEnabled() { + return canHover; + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerCraneExtractor.java b/src/main/java/com/hbm/inventory/container/ContainerCraneExtractor.java new file mode 100644 index 0000000000..8193e51b75 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerCraneExtractor.java @@ -0,0 +1,123 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotPattern; +import com.hbm.inventory.SlotUpgrade; +import com.hbm.items.ModItems; +import com.hbm.tileentity.network.TileEntityCraneExtractor; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.ClickType; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; +import net.minecraftforge.items.SlotItemHandler; + +public class ContainerCraneExtractor extends Container { + protected TileEntityCraneExtractor extractor; + + public ContainerCraneExtractor(InventoryPlayer invPlayer, TileEntityCraneExtractor extractor) { + this.extractor = extractor; + + //filter + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 3; j++) { + this.addSlotToContainer(new SlotPattern(extractor, j + i * 3, 71 + j * 18, 17 + i * 18)); + } + } + + //buffer + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 3; j++) { + this.addSlotToContainer(new SlotItemHandler(extractor, 9 + j + i * 3, 8 + j * 18, 17 + i * 18)); + } + } + + //upgrades + this.addSlotToContainer(new SlotUpgrade(extractor, 18, 152, 23)); + this.addSlotToContainer(new SlotUpgrade(extractor, 19, 152, 47)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 103 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 161)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int slot) { + ItemStack var3 = ItemStack.EMPTY; + Slot var4 = (Slot) this.inventorySlots.get(slot); + + if(var4 != null && var4.getHasStack()) { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if(slot < 9) { //filters + return ItemStack.EMPTY; + } + + if(slot <= this.inventorySlots.size() - 1) { + if(!this.mergeItemStack(var5, this.inventorySlots.size(), this.inventorySlots.size(), true)) { + return ItemStack.EMPTY; + } + } + + if (var5.isEmpty()) + { + var4.putStack(ItemStack.EMPTY); + } + else { + var4.onSlotChanged(); + } + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return extractor.isUseableByPlayer(player); + } + + + public ItemStack slotClick(int index, int button, ClickType mode, EntityPlayer player) { + + //L/R: 0 + //M3: 3 + //SHIFT: 1 + //DRAG: 5 + + if(index < 0 || index > 8) { + return super.slotClick(index, button, mode, player); + } + + Slot slot = this.getSlot(index); + + ItemStack ret = ItemStack.EMPTY; + ItemStack held = player.inventory.getItemStack(); + + if(slot.getHasStack()) + ret = slot.getStack().copy(); + + if(button == 1 && mode == ClickType.PICKUP && slot.getHasStack()) { + extractor.nextMode(index); + return ret; + + } else { + slot.putStack(held != ItemStack.EMPTY ? held.copy() : ItemStack.EMPTY); + + if(slot.getHasStack()) { + slot.getStack().setCount(1); + } + + slot.onSlotChanged(); + extractor.matcher.initPatternStandard(extractor.getWorld(), slot.getStack(), index); + + return ret; + } + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerCraneInserter.java b/src/main/java/com/hbm/inventory/container/ContainerCraneInserter.java new file mode 100644 index 0000000000..a0b685ec04 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerCraneInserter.java @@ -0,0 +1,73 @@ +package com.hbm.inventory.container; + +import com.hbm.tileentity.network.TileEntityCraneInserter; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerCraneInserter extends Container { + protected TileEntityCraneInserter inserter; + + public ContainerCraneInserter(InventoryPlayer invPlayer, TileEntityCraneInserter inserter) { + this.inserter = inserter; + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 7; j++) { + this.addSlotToContainer(new Slot(inserter, j + i * 7, 26 + j * 18, 17 + i * 18)); + } + } + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 103 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 161)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) + { + ItemStack var3 = ItemStack.EMPTY; + Slot var4 = (Slot) this.inventorySlots.get(par2); + + if (var4 != null && var4.getHasStack()) + { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if (par2 <= 3) { + if (!this.mergeItemStack(var5, 4, this.inventorySlots.size(), true)) + { + return ItemStack.EMPTY; + } + } + else if (!this.mergeItemStack(var5, 0, 3, false)) + { + return ItemStack.EMPTY; + } + + if (var5.getCount() == 0) + { + var4.putStack(ItemStack.EMPTY); + } + else + { + var4.onSlotChanged(); + } + } + + return var3; + } + + + @Override + public boolean canInteractWith(EntityPlayer player) { + return inserter.isUseableByPlayer(player); + } +} diff --git a/src/main/java/com/hbm/inventory/control_panel/ContainerControlEdit.java b/src/main/java/com/hbm/inventory/control_panel/ContainerControlEdit.java index edab00ee01..9ce84d5fe0 100644 --- a/src/main/java/com/hbm/inventory/control_panel/ContainerControlEdit.java +++ b/src/main/java/com/hbm/inventory/control_panel/ContainerControlEdit.java @@ -24,19 +24,19 @@ public class ContainerControlEdit extends Container { public ContainerControlEdit(InventoryPlayer invPlayer, TileEntityControlPanel te) { control = te; - input = this.addSlotToContainer(new SlotItemHandlerDisableable(te.inventory, 0, 8, 13)); + input = this.addSlotToContainer(new SlotItemHandlerDisableable(te.inventory, 0, 5, 51)); for(int i = 0; i < 3; i++) { for(int j = 0; j < 9; j++) { - invSlots.add((SlotDisableable)this.addSlotToContainer(new SlotDisableable(invPlayer, j + i * 9 + 9, 73 + j * 18, 162 + i * 18))); + invSlots.add((SlotDisableable)this.addSlotToContainer(new SlotDisableable(invPlayer, j + i * 9 + 9, 48 + j * 18, 152 + i * 18))); } } for(int i = 0; i < 9; i++) { - invSlots.add((SlotDisableable)this.addSlotToContainer(new SlotDisableable(invPlayer, i, 73 + i * 18, 220))); + invSlots.add((SlotDisableable)this.addSlotToContainer(new SlotDisableable(invPlayer, i, 48 + i * 18, 210))); } } diff --git a/src/main/java/com/hbm/inventory/control_panel/Control.java b/src/main/java/com/hbm/inventory/control_panel/Control.java index 12e6ee9630..67d0e3d74a 100644 --- a/src/main/java/com/hbm/inventory/control_panel/Control.java +++ b/src/main/java/com/hbm/inventory/control_panel/Control.java @@ -10,7 +10,6 @@ import java.util.Map.Entry; import java.util.Set; -import com.hbm.inventory.control_panel.controls.ControlType; import com.hbm.render.amlfrom1710.IModelCustom; import net.minecraft.nbt.NBTBase; @@ -36,28 +35,14 @@ public abstract class Control { public Map varsPrev = new HashMap<>(); //A set of the custom variables the user is allowed to remove public Set customVarNames = new HashSet<>(); - // map of (static) initial configurations for a control e.g. color, size - public Map configMap = new HashMap<>(); public float posX; public float posY; - - + public Control(String name, ControlPanel panel){ this.name = name; this.panel = panel; } - - public abstract ControlType getControlType(); - - public abstract float[] getSize(); - - public Map getConfigs() { - return configMap; - } - public void applyConfigs(Map configs) { - configMap = configs; - } - + public void renderBatched(){}; public void render(){}; public List getOutEvents(){return Collections.emptyList();}; @@ -66,27 +51,10 @@ public void applyConfigs(Map configs) { public abstract IModelCustom getModel(); @SideOnly(Side.CLIENT) public abstract ResourceLocation getGuiTexture(); - - public AxisAlignedBB getBoundingBox() { - float width = getSize()[0]; - float length = getSize()[1]; - float height = getSize()[2]; - // offset to fix placement position error for controls not 1x1. - return new AxisAlignedBB(-width/2, 0, -length/2, width/2, height, length/2).offset(posX+((width>1?Math.abs(1-width)/2:(width-1)/2)), 0, posY+((length>1)? Math.abs(1-length)/2 : (length-1)/2)); -// .offset(posX+((width>1)?Math.abs(1-width/2):0), 0, posY+Math.abs(1-length)/2); -// GlStateManager.translate((width>1)? Math.abs(1-width)/2 : (width-1)/2, 0, (length>1)? Math.abs(1-length)/2 : 0); - } - - public float[] getBox() { - float width = getSize()[0]; - float length = getSize()[1]; - return new float[] {posX, posY, posX + width, posY + length}; - } - + public abstract AxisAlignedBB getBoundingBox(); + public abstract float[] getBox(); public abstract Control newControl(ControlPanel panel); - public abstract void populateDefaultNodes(List receiveEvents); - public void receiveEvent(ControlEvent evt){ NodeSystem sys = receiveNodeMap.get(evt.name); if(sys != null){ @@ -102,7 +70,7 @@ public DataValue getVar(String name){ public DataValue getGlobalVar(String name){ return panel.getVar(name); } - + public NBTTagCompound writeToNBT(NBTTagCompound tag){ tag.setString("name", ControlRegistry.getName(this.getClass())); tag.setString("myName", name); @@ -114,16 +82,15 @@ public NBTTagCompound writeToNBT(NBTTagCompound tag){ NBTTagCompound sendNodes = new NBTTagCompound(); for(Entry e : sendNodeMap.entrySet()){ - NBTTagCompound eventNodeMap = e.getValue().writeToNBT(new NBTTagCompound()); - sendNodes.setTag(e.getKey(), eventNodeMap); + sendNodes.setTag(e.getKey(), e.getValue().writeToNBT(new NBTTagCompound())); } - tag.setTag("SN", sendNodes); + tag.setTag("sendNodes", sendNodes); NBTTagCompound receiveNodes = new NBTTagCompound(); for(Entry e : receiveNodeMap.entrySet()){ receiveNodes.setTag(e.getKey(), e.getValue().writeToNBT(new NBTTagCompound())); } - tag.setTag("RN", receiveNodes); + tag.setTag("receiveNodes", receiveNodes); NBTTagCompound customVarNames = new NBTTagCompound(); int i = 0; @@ -131,7 +98,7 @@ public NBTTagCompound writeToNBT(NBTTagCompound tag){ customVarNames.setString("var" + i, s); i++; } - tag.setTag("customvars", customVarNames); + tag.setTag("customvarnames", customVarNames); NBTTagCompound connectedSet = new NBTTagCompound(); for(i = 0; i < this.connectedSet.size(); i ++){ @@ -139,17 +106,10 @@ public NBTTagCompound writeToNBT(NBTTagCompound tag){ connectedSet.setInteger("py"+i, this.connectedSet.get(i).getY()); connectedSet.setInteger("pz"+i, this.connectedSet.get(i).getZ()); } - tag.setTag("conset", connectedSet); + tag.setTag("connectedset", connectedSet); - tag.setFloat("X", posX); - tag.setFloat("Y", posY); - - NBTTagCompound configs = new NBTTagCompound(); - for (Entry e : configMap.entrySet()) { - configs.setTag(e.getKey(), e.getValue().writeToNBT()); - } - tag.setTag("configs", configs); - + tag.setFloat("posX", posX); + tag.setFloat("posY", posY); return tag; } @@ -166,25 +126,25 @@ public void readFromNBT(NBTTagCompound tag){ sendNodeMap.clear(); receiveNodeMap.clear(); - NBTTagCompound sendNodes = tag.getCompoundTag("SN"); + NBTTagCompound sendNodes = tag.getCompoundTag("sendNodes"); for(String s : sendNodes.getKeySet()){ NodeSystem sys = new NodeSystem(this); sendNodeMap.put(s, sys); sys.readFromNBT(sendNodes.getCompoundTag(s)); } - NBTTagCompound receiveNodes = tag.getCompoundTag("RN"); + NBTTagCompound receiveNodes = tag.getCompoundTag("receiveNodes"); for(String s : receiveNodes.getKeySet()){ NodeSystem sys = new NodeSystem(this); receiveNodeMap.put(s, sys); sys.readFromNBT(receiveNodes.getCompoundTag(s)); } - NBTTagCompound customVarNames = tag.getCompoundTag("custonvars"); + NBTTagCompound customVarNames = tag.getCompoundTag("customvarnames"); for(int i = 0; i < customVarNames.getKeySet().size(); i ++){ this.customVarNames.add(customVarNames.getString("var"+i)); } - NBTTagCompound connectedSet = tag.getCompoundTag("conset"); + NBTTagCompound connectedSet = tag.getCompoundTag("connectedset"); for(int i = 0; i < connectedSet.getKeySet().size()/3; i ++){ int x = connectedSet.getInteger("px"+i); int y = connectedSet.getInteger("py"+i); @@ -192,14 +152,7 @@ public void readFromNBT(NBTTagCompound tag){ this.connectedSet.add(new BlockPos(x, y, z)); } - this.posX = tag.getFloat("X"); - this.posY = tag.getFloat("Y"); - - NBTTagCompound configs = tag.getCompoundTag("configs"); - for (String e : configs.getKeySet()) { - configMap.put(e, DataValue.newFromNBT(configs.getTag(e))); - } + this.posX = tag.getFloat("posX"); + this.posY = tag.getFloat("posY"); } - - } diff --git a/src/main/java/com/hbm/inventory/control_panel/ControlEvent.java b/src/main/java/com/hbm/inventory/control_panel/ControlEvent.java index 21279dc587..c87a85cd80 100644 --- a/src/main/java/com/hbm/inventory/control_panel/ControlEvent.java +++ b/src/main/java/com/hbm/inventory/control_panel/ControlEvent.java @@ -96,12 +96,7 @@ public static void init(){ register(new ControlEvent("lever_toggle").setVar("isOn", false)); register(new ControlEvent("spinny_light_power").setVar("isOn", false)); register(new ControlEvent("siren_set_state").setVar("isOn", false)); - register(new ControlEvent("tank_set_mode").setVar("mode", 0)); - register(new ControlEvent("rbmk_ctrl_set_color").setVar("color", 0)); - register(new ControlEvent("rbmk_ctrl_set_level").setVar("level", 0)); - register(new ControlEvent("rbmk_crane_move").setVar("up", 0).setVar("down", 0).setVar("left", 0).setVar("right", 0)); - register(new ControlEvent("rbmk_crane_load")); - register(new ControlEvent("ctrl_press").setVar("isSneaking", false)); + register(new ControlEvent("ctrl_button_press")); register(new ControlEvent("initialize")); } } diff --git a/src/main/java/com/hbm/inventory/control_panel/ControlEventSystem.java b/src/main/java/com/hbm/inventory/control_panel/ControlEventSystem.java index 6809f00c8b..66c4c82658 100644 --- a/src/main/java/com/hbm/inventory/control_panel/ControlEventSystem.java +++ b/src/main/java/com/hbm/inventory/control_panel/ControlEventSystem.java @@ -8,7 +8,6 @@ import com.hbm.lib.RefStrings; -import com.hbm.main.MainRegistry; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.event.world.WorldEvent; @@ -94,9 +93,8 @@ public void broadcastEvent(BlockPos from, ControlEvent evt, BlockPos pos){ if(map == null) return; IControllable c = map.get(pos); - if(c != null) { + if(c != null) c.receiveEvent(from, evt); - } } public void broadcastEvent(BlockPos from, ControlEvent evt, Collection positions){ diff --git a/src/main/java/com/hbm/inventory/control_panel/ControlPanel.java b/src/main/java/com/hbm/inventory/control_panel/ControlPanel.java index 50d7779f0c..d747db0bd7 100644 --- a/src/main/java/com/hbm/inventory/control_panel/ControlPanel.java +++ b/src/main/java/com/hbm/inventory/control_panel/ControlPanel.java @@ -1,14 +1,12 @@ package com.hbm.inventory.control_panel; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.Map.Entry; -import com.hbm.main.MainRegistry; -import net.minecraft.client.renderer.GlStateManager; -import net.minecraft.client.renderer.OpenGlHelper; -import org.lwjgl.opengl.GL11; import org.lwjgl.util.vector.Matrix4f; -import org.lwjgl.util.vector.Vector3f; import org.lwjgl.util.vector.Vector4f; import com.hbm.packet.ControlPanelUpdatePacket.VarUpdate; @@ -29,30 +27,20 @@ public class ControlPanel { //Variables that were changed in the last tick public List changedVars = new ArrayList<>(); //Global variables, accessible by every control as well as the owner tile entity for state like redstone - public Map globalVars = new LinkedHashMap<>(); - public Map globalVarsPrev = new LinkedHashMap<>(); + public Map globalVars = new HashMap<>(); + public Map globalVarsPrev = new HashMap<>(); //Client only transform for getting from panel local space to block space. Used for both rendering and figuring out which control a player clicks @SideOnly(Side.CLIENT) public Matrix4f transform; @SideOnly(Side.CLIENT) public Matrix4f inv_transform; - + public float width; public float height; - public float angle; // RADIANS - public float a_off; - public float b_off; - public float c_off; - public float d_off; - public ControlPanel(IControllable parent, float height, float angle, float a_off, float b_off, float c_off, float d_off) { + public ControlPanel(IControllable parent, float width, float height){ this.parent = parent; + this.width = width; this.height = height; - this.angle = angle; - this.a_off = a_off; - this.b_off = b_off; - this.c_off = c_off; - this.d_off = d_off; - } @SideOnly(Side.CLIENT) @@ -65,12 +53,7 @@ public ControlPanel setTransform(Matrix4f transform){ public void render(){ for(Control c : controls) { - float width = c.getSize()[0]; - float length = c.getSize()[1]; - GlStateManager.pushMatrix(); - GlStateManager.translate(((width>1?Math.abs(1-width)/2:(width-1)/2)), 0, ((length>1)? Math.abs(1-length)/2 : (length-1)/2)); - c.render(); - GlStateManager.popMatrix(); + c.render(); } } @@ -91,10 +74,10 @@ public void crossCheckVars(int idx, Map vars, Map configs = new HashMap<>(); - NBTTagCompound config_tag = ct.getCompoundTag("configs"); - for (String s : config_tag.getKeySet()) { - configs.put(s, DataValue.newFromNBT(config_tag.getTag(s))); - } - c.applyConfigs(configs); - this.controls.add(c); c.readFromNBT(ct); } - - height = tag.getFloat("height"); - angle = tag.getFloat("angle"); - a_off = tag.getFloat("a_offset"); - b_off = tag.getFloat("b_offset"); - c_off = tag.getFloat("c_offset"); - d_off = tag.getFloat("d_offset"); + } public void receiveEvent(BlockPos from, ControlEvent evt){ @@ -170,6 +133,12 @@ public void receiveEvent(BlockPos from, ControlEvent evt){ } } + public float[] getBox(){ + float wHalf = width * 0.5F; + float hHalf = height * 0.5F; + return new float[] { -wHalf, -hHalf, wHalf, hHalf }; + } + public DataValue getVar(String name){ return globalVars.getOrDefault(name, new DataValueFloat(0)); } @@ -188,25 +157,16 @@ public Control getSelectedControl(Vec3d pos, Vec3d direction){ double dist = Double.MAX_VALUE; Control ctrl = null; for(Control c : controls) { - if (c.getBoundingBox() != null) { - RayTraceResult r = c.getBoundingBox().calculateIntercept(start, end); - - if (r != null && r.typeOfHit != Type.MISS) { - double newDist = r.hitVec.squareDistanceTo(start); - if (newDist < dist) { - dist = newDist; - ctrl = c; - } + RayTraceResult r = c.getBoundingBox().calculateIntercept(start, end); + + if(r != null && r.typeOfHit != Type.MISS) { + double newDist = r.hitVec.squareDistanceTo(start); + if(newDist < dist) { + dist = newDist; + ctrl = c; } } } return ctrl; } - - public static float getSlopeHeightFromZ(float z, float height, float angle) { - double halfH = 0.5 * Math.tan(angle); - - return (float) ((height - halfH) + Math.tan(angle) * z); - } - } diff --git a/src/main/java/com/hbm/inventory/control_panel/ControlRegistry.java b/src/main/java/com/hbm/inventory/control_panel/ControlRegistry.java index 69fa8f2985..bbd6850fd2 100644 --- a/src/main/java/com/hbm/inventory/control_panel/ControlRegistry.java +++ b/src/main/java/com/hbm/inventory/control_panel/ControlRegistry.java @@ -6,38 +6,19 @@ import java.util.Map; import java.util.Map.Entry; -import com.hbm.inventory.control_panel.controls.*; +import com.hbm.inventory.control_panel.controls.Button; public class ControlRegistry { - public static Map registry = new HashMap<>(); + private static Map registry = new HashMap<>(); private static Map, String> classToName = new HashMap<>(); - + private ControlRegistry(){ } public static void init(){ - registry.put("button_push", new ButtonPush("Push Button", null)); - registry.put("button_emergency_push", new ButtonEmergencyPush("Emergency Push Button", null)); - registry.put("button_encased_push", new ButtonEncasedPush("Encased Push Button", null)); - - registry.put("switch_toggle", new SwitchToggle("Toggle Switch", null)); - registry.put("switch_rotary_toggle", new SwitchRotaryToggle("Rotary Toggle Switch", null)); - - registry.put("slider_vertical", new SliderVertical("Vertical Slider", null)); - - registry.put("knob_control", new KnobControl("Control Knob", null)); - - registry.put("display_7seg", new DisplaySevenSeg("7-seg Display", null)); - registry.put("display_text", new DisplayText("Text Display", null)); - - registry.put("dial_square", new DialSquare("Square Dial", null)); - registry.put("dial_large", new DialLarge("Large Dial", null)); - - registry.put("indicator_lamp", new IndicatorLamp("Indicator Lamp", null)); - - registry.put("label", new Label("Label", null)); - + registry.put("button", new Button("Button", null)); + for(Entry e : registry.entrySet()){ classToName.put(e.getValue().getClass(), e.getKey()); } @@ -50,15 +31,6 @@ public static List getAllControls(){ return l; } - public static List getAllControlsOfType(ControlType type) { - List l = new ArrayList<>(); - for (Entry c : registry.entrySet()) - if (c.getValue().getControlType() == type) { - l.add(c.getKey()); - } - return l; - } - public static Control getNew(String name, ControlPanel panel){ return registry.get(name).newControl(panel); } diff --git a/src/main/java/com/hbm/inventory/control_panel/DataValueFloat.java b/src/main/java/com/hbm/inventory/control_panel/DataValueFloat.java index ff478a898c..671bca98d4 100644 --- a/src/main/java/com/hbm/inventory/control_panel/DataValueFloat.java +++ b/src/main/java/com/hbm/inventory/control_panel/DataValueFloat.java @@ -10,11 +10,7 @@ public class DataValueFloat extends DataValue { public DataValueFloat(float f) { num = f; } - - public DataValueFloat(boolean b) { - num = (b)? 1.0F : 0.0F; - } - + @Override public float getNumber() { return num; diff --git a/src/main/java/com/hbm/inventory/control_panel/GuiControlEdit.java b/src/main/java/com/hbm/inventory/control_panel/GuiControlEdit.java index ec1af2ec41..04502b5cb0 100644 --- a/src/main/java/com/hbm/inventory/control_panel/GuiControlEdit.java +++ b/src/main/java/com/hbm/inventory/control_panel/GuiControlEdit.java @@ -24,7 +24,7 @@ public class GuiControlEdit extends GuiContainer { - public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/control_panel/gui_placement_back.png"); + public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/control_panel/gui_control.png"); public float mouseX, mouseY; @@ -37,22 +37,17 @@ public class GuiControlEdit extends GuiContainer { public SubElementLinker linker; public SubElementEventEditor eventEditor; public SubElementNodeEditor nodeEditor; - public SubElementPanelResize panelResize; - public SubElementItemConfig itemConfig; - public SubElementVariables variables; public Control currentEditControl; - + public ScaledResolution res; - - public boolean isEditMode = false; // when editing an existing control public GuiControlEdit(InventoryPlayer i, TileEntityControlPanel te) { super(new ContainerControlEdit(i, te)); container = (ContainerControlEdit)this.inventorySlots; control = te; - this.xSize = 256; - this.ySize = 256; + this.xSize = 216; + this.ySize = 234; res = new ScaledResolution(Minecraft.getMinecraft()); } @@ -63,15 +58,10 @@ public void onGuiClosed(){ linker.onClose(); eventEditor.onClose(); nodeEditor.onClose(); - panelResize.onClose(); - itemConfig.onClose(); - variables.onClose(); NBTTagCompound tag = new NBTTagCompound(); control.panel.writeToNBT(tag); tag.setString("full_set", ""); PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(tag, control.getPos())); - control.updateTransform(); - isEditMode = false; } @Override @@ -88,18 +78,12 @@ public void initGui() { linker = new SubElementLinker(this); eventEditor = new SubElementEventEditor(this); nodeEditor = new SubElementNodeEditor(this); - panelResize = new SubElementPanelResize(this); - itemConfig = new SubElementItemConfig(this); - variables = new SubElementVariables(this); placement.initGui(); choice.initGui(); linker.initGui(); eventEditor.initGui(); nodeEditor.initGui(); - panelResize.initGui(); - itemConfig.initGui(); - variables.initGui(); - + subElementStack.addFirst(placement); placement.enableButtons(true); } @@ -112,7 +96,7 @@ public FontRenderer getFontRenderer(){ public T addButton(T buttonIn) { return super.addButton(buttonIn); } - + public int currentButtonId(){ return this.buttonList.size(); } diff --git a/src/main/java/com/hbm/inventory/control_panel/IControllable.java b/src/main/java/com/hbm/inventory/control_panel/IControllable.java index 5c30ac2ba7..92d6b004a1 100644 --- a/src/main/java/com/hbm/inventory/control_panel/IControllable.java +++ b/src/main/java/com/hbm/inventory/control_panel/IControllable.java @@ -2,21 +2,16 @@ import java.util.Collections; import java.util.List; -import java.util.Map; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; public interface IControllable { - default List getInEvents(){return Collections.emptyList();} - default List getOutEvents(){return Collections.emptyList();} - - default Map getQueryData(){return Collections.emptyMap();} - - // here most things respond by sending the out event back - // -- a lazy fix for other controls that share a panel not receiving the broadcast event too. - default void receiveEvent(BlockPos from, ControlEvent e) {} + public default List getInEvents(){return Collections.emptyList();} + public default List getOutEvents(){return Collections.emptyList();} + + public void receiveEvent(BlockPos from, ControlEvent e); public BlockPos getControlPos(); public World getControlWorld(); diff --git a/src/main/java/com/hbm/inventory/control_panel/NodeConnection.java b/src/main/java/com/hbm/inventory/control_panel/NodeConnection.java index 24a6876474..44db623e62 100644 --- a/src/main/java/com/hbm/inventory/control_panel/NodeConnection.java +++ b/src/main/java/com/hbm/inventory/control_panel/NodeConnection.java @@ -48,35 +48,35 @@ public NodeConnection(String name, Node p, int idx, boolean isInput, DataType ty public NBTTagCompound writeToNBT(NBTTagCompound tag, NodeSystem sys){ super.writeToNBT(tag, sys); -// tag.setString("eleType", "connection"); + tag.setString("eleType", "connection"); tag.setString("name", name); - tag.setInteger("Ci", connectionIndex); - tag.setInteger("Ni", sys.nodes.indexOf(connection)); - tag.setBoolean("in", isInput); - tag.setInteger("T", type.ordinal()); - tag.setTag("D", defaultValue.writeToNBT()); - tag.setBoolean("DL", drawsLine); + tag.setInteger("connectionIdx", connectionIndex); + tag.setInteger("nodeIdx", sys.nodes.indexOf(connection)); + tag.setBoolean("isInput", isInput); + tag.setInteger("type", type.ordinal()); + tag.setTag("default", defaultValue.writeToNBT()); + tag.setBoolean("drawLine", drawsLine); return tag; } public void readFromNBT(NBTTagCompound tag, NodeSystem sys){ super.readFromNBT(tag, sys); name = tag.getString("name"); - connectionIndex = tag.getInteger("Ci"); - int nodeIdx = tag.getInteger("Ni"); + connectionIndex = tag.getInteger("connectionIdx"); + int nodeIdx = tag.getInteger("nodeIdx"); if(nodeIdx == -1){ connection = null; } else { connection = sys.nodes.get(nodeIdx); } - isInput = tag.getBoolean("in"); - type = DataType.values()[tag.getInteger("T") % DataType.values().length]; - defaultValue = DataValue.newFromNBT(tag.getTag("D")); + isInput = tag.getBoolean("isInput"); + type = DataType.values()[tag.getInteger("type") % DataType.values().length]; + defaultValue = DataValue.newFromNBT(tag.getTag("default")); if(defaultValue == null){ type = DataType.NUMBER; defaultValue = new DataValueFloat(0); } - drawsLine = tag.getBoolean("DL"); + drawsLine = tag.getBoolean("drawLine"); builder = null; isTyping = false; } @@ -116,13 +116,6 @@ public NodeConnection removeConnection(){ } return null; } - - public NodeConnection setData(Node connection, int connectionIndex, boolean drawsLine) { - this.connection = connection; - this.connectionIndex = connectionIndex; - this.drawsLine = drawsLine; - return this; - } @Override public void resetOffset(){ diff --git a/src/main/java/com/hbm/inventory/control_panel/NodeElement.java b/src/main/java/com/hbm/inventory/control_panel/NodeElement.java index d7b80865d4..69cd377b46 100644 --- a/src/main/java/com/hbm/inventory/control_panel/NodeElement.java +++ b/src/main/java/com/hbm/inventory/control_panel/NodeElement.java @@ -6,7 +6,6 @@ public class NodeElement { - public String name = "default"; public Node parent; public int index; public float offsetX; @@ -17,14 +16,7 @@ public NodeElement(Node parent, int idx){ this.index = idx; resetOffset(); } - - public NodeElement(String name, Node parent, int idx){ - this.name = name; - this.parent = parent; - this.index = idx; - resetOffset(); - } - + public void render(float mX, float mY){ } diff --git a/src/main/java/com/hbm/inventory/control_panel/NodeSystem.java b/src/main/java/com/hbm/inventory/control_panel/NodeSystem.java index da1f9e3c73..660c29c751 100644 --- a/src/main/java/com/hbm/inventory/control_panel/NodeSystem.java +++ b/src/main/java/com/hbm/inventory/control_panel/NodeSystem.java @@ -1,10 +1,11 @@ package com.hbm.inventory.control_panel; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.Map.Entry; -import com.hbm.inventory.control_panel.nodes.NodeFunction; -import com.hbm.main.MainRegistry; import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; @@ -47,16 +48,12 @@ public class NodeSystem { protected float lastMouseX; @SideOnly(Side.CLIENT) protected float lastMouseY; - + public Control parent; public List nodes = new ArrayList<>(); public List outputNodes = new ArrayList<>(); private Map vars = new HashMap<>(); - - // an array of subsystems owned by the various nodes sharing a system layer (sublayering is then done recursively) - // ○| ̄|_ <-- me - public Map subSystems = new HashMap<>(); - + public NodeSystem(Control parent){ this.parent = parent; } @@ -82,62 +79,46 @@ public DataValue getVar(String name){ return val; } - public NBTTagCompound writeToNBT(NBTTagCompound tag) { + public NBTTagCompound writeToNBT(NBTTagCompound tag){ NBTTagCompound nodes = new NBTTagCompound(); - - for (int i = 0; i < this.nodes.size(); i ++) { - Node node = this.nodes.get(i); - NBTTagCompound nodeTag = node.writeToNBT(new NBTTagCompound(), this); - if (node instanceof NodeFunction) { - nodeTag.setTag("SS", subSystems.get(node).writeToNBT(new NBTTagCompound())); - } - nodes.setTag("n"+i, nodeTag); + for(int i = 0; i < this.nodes.size(); i ++){ + nodes.setTag("node"+i, this.nodes.get(i).writeToNBT(new NBTTagCompound(), this)); } - tag.setTag("N", nodes); - + tag.setTag("nodes", nodes); + NBTTagCompound vars = new NBTTagCompound(); - for (Entry e : this.vars.entrySet()) { + for(Entry e : this.vars.entrySet()) { vars.setTag(e.getKey(), e.getValue().writeToNBT()); } - tag.setTag("V", vars); - + tag.setTag("vars", vars); + return tag; } - - public void readFromNBT(NBTTagCompound tag) { + + public void readFromNBT(NBTTagCompound tag){ this.nodes.clear(); this.outputNodes.clear(); - this.subSystems.clear(); - - NBTTagCompound nodes = tag.getCompoundTag("N"); - for (int i = 0; i < nodes.getKeySet().size(); i ++) { - NBTTagCompound nodeTag = nodes.getCompoundTag("n"+i); - Node node = Node.nodeFromNBT(nodeTag, this); - - if (node instanceof NodeOutput) { - outputNodes.add((NodeOutput) node); - } - if (node instanceof NodeFunction && nodeTag.hasKey("SS")) { - NodeSystem subsystem = new NodeSystem(parent); - subsystem.readFromNBT(nodeTag.getCompoundTag("SS")); - subSystems.put(node, subsystem); - } + NBTTagCompound nodes = tag.getCompoundTag("nodes"); + for(int i = 0; i < nodes.getKeySet().size(); i ++){ + Node node = Node.nodeFromNBT(nodes.getCompoundTag("node"+i), this); this.nodes.add(node); + if(node instanceof NodeOutput) + outputNodes.add((NodeOutput)node); } - for (int i = 0; i < this.nodes.size(); i ++) { - this.nodes.get(i).readFromNBT(nodes.getCompoundTag("n"+i), this); + for(int i = 0; i < this.nodes.size(); i ++){ + this.nodes.get(i).readFromNBT(nodes.getCompoundTag("node"+i), this); } - - NBTTagCompound vars = tag.getCompoundTag("V"); - for (String k : vars.getKeySet()) { + + NBTTagCompound vars = tag.getCompoundTag("vars"); + for(String k : vars.getKeySet()) { NBTBase base = vars.getTag(k); DataValue val = DataValue.newFromNBT(base); - if (val != null) { + if(val != null) { this.vars.put(k, val); } } } - + @SideOnly(Side.CLIENT) public void removeClientData(){ nodeEditor = null; @@ -147,7 +128,7 @@ public void removeClientData(){ connectionInProgress = null; currentTypingBox = null; } - + @SideOnly(Side.CLIENT) public void render(float mX, float mY){ if(drag && !Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)){ @@ -157,9 +138,6 @@ public void render(float mX, float mY){ for(Node n : selectedNodes){ n.setPosition(n.posX+(gui.mouseX-lastMouseX)*nodeEditor.gridScale, n.posY+(gui.mouseY-lastMouseY)*nodeEditor.gridScale); } - for (Node n : nodes) { - n.setPosition(n.posX, n.posY); // to fix elements not rendering in edit mode - } lastMouseX = gui.mouseX; lastMouseY = gui.mouseY; } @@ -200,13 +178,8 @@ public void render(float mX, float mY){ public void addNode(Node n){ nodes.add(n); - - if (n instanceof NodeFunction && !subSystems.containsKey(n)) { - subSystems.put(n, new NodeSystem(parent)); - } - if (n instanceof NodeOutput) { - outputNodes.add((NodeOutput) n); - } + if(n instanceof NodeOutput) + outputNodes.add((NodeOutput)n); } public void removeNode(Node n){ @@ -216,24 +189,6 @@ public void removeNode(Node n){ outputNodes.remove(n); nodes.remove(n); } - - @SideOnly(Side.CLIENT) - public NodeElement getNodeElementPressed(float x, float y) { - lastMouseX = gui.mouseX; - lastMouseY = gui.mouseY; - float gridMX = (gui.mouseX-gui.getGuiLeft())*nodeEditor.gridScale + gui.getGuiLeft() + nodeEditor.gridX; - float gridMY = (gui.mouseY-gui.getGuiTop())*nodeEditor.gridScale + gui.getGuiTop() - nodeEditor.gridY; - for (int i = nodes.size()-1; i >= 0; i--) { - for (NodeElement e : nodes.get(i).otherElements) { - if (e instanceof NodeButton) { - if (e.onClick(gridMX, gridMY)) { - return e; - } - } - } - } - return null; - } @SideOnly(Side.CLIENT) public void onClick(float x, float y){ @@ -320,7 +275,7 @@ public void onClick(float x, float y){ activeNode = null; } } - + @SideOnly(Side.CLIENT) public void clickReleased(float x, float y){ float gridMX = (gui.mouseX-gui.getGuiLeft())*nodeEditor.gridScale + gui.getGuiLeft() + nodeEditor.gridX; @@ -380,19 +335,13 @@ public void resetCachedValues(){ } } - public void receiveEvent(ControlPanel panel, Control ctrl, ControlEvent evt) { - resetCachedValues(); - for (Node n : nodes) { - if (n instanceof NodeInput) { + public void receiveEvent(ControlPanel panel, Control ctrl, ControlEvent evt){ + for(Node n : nodes){ + if(n instanceof NodeInput){ ((NodeInput)n).setOutputFromVars(evt.vars); } - if (n instanceof NodeFunction) { - if (n.evaluate(0).getBoolean()) { - subSystems.get(n).receiveEvent(panel, ctrl, evt); - } - } } - for (NodeOutput o : outputNodes) { + for(NodeOutput o : outputNodes){ o.doOutput(panel.parent, ctrl.sendNodeMap, ctrl.connectedSet); } } diff --git a/src/main/java/com/hbm/inventory/control_panel/NodeType.java b/src/main/java/com/hbm/inventory/control_panel/NodeType.java index 1951b10984..8abe9de56f 100644 --- a/src/main/java/com/hbm/inventory/control_panel/NodeType.java +++ b/src/main/java/com/hbm/inventory/control_panel/NodeType.java @@ -5,10 +5,8 @@ public enum NodeType { INPUT(new float[]{0, 1, 0}), //Intermediate node for math. Has a drop down menu for operations like add, multiply, sin, abs, etc. MATH(new float[]{1, 1, 0}), - //for boolean functions: and, not, xor etc. - BOOLEAN(new float[]{1, 0, 1}), //Intermediate nodes for logic such as for loops and if statements. Each contains child node systems, which possibly produce outputs. - LOGIC(new float[]{.4F, .4F, 1}), + LOGIC(new float[]{0, 0, 1}), //The outputs that get evaluated, such as broadcasting a new event or setting an arbitrary variable OUTPUT(new float[]{1, 0, 0}); diff --git a/src/main/java/com/hbm/inventory/control_panel/SubElementEventEditor.java b/src/main/java/com/hbm/inventory/control_panel/SubElementEventEditor.java index bf44023b12..48a8dd8327 100644 --- a/src/main/java/com/hbm/inventory/control_panel/SubElementEventEditor.java +++ b/src/main/java/com/hbm/inventory/control_panel/SubElementEventEditor.java @@ -4,10 +4,7 @@ import java.util.Iterator; import java.util.List; -import akka.Main; -import com.hbm.main.MainRegistry; import net.minecraft.client.gui.GuiButton; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.math.MathHelper; public class SubElementEventEditor extends SubElement { @@ -27,8 +24,7 @@ public class SubElementEventEditor extends SubElement { public GuiButton sendPageLeft; public GuiButton sendPageRight; public GuiButton done; - public GuiButton back; - + public SubElementEventEditor(GuiControlEdit gui){ super(gui); } @@ -37,12 +33,11 @@ public SubElementEventEditor(GuiControlEdit gui){ protected void initGui(){ int cX = gui.width/2; int cY = gui.height/2; - receivePageLeft = gui.addButton(new GuiButton(gui.currentButtonId(), cX-62, cY-29, 20, 20, "<")); - receivePageRight = gui.addButton(new GuiButton(gui.currentButtonId(), cX+88, cY-29, 20, 20, ">")); - sendPageLeft = gui.addButton(new GuiButton(gui.currentButtonId(), cX-62, cY+70, 20, 20, "<")); - sendPageRight = gui.addButton(new GuiButton(gui.currentButtonId(), cX+88, cY+70, 20, 20, ">")); - done = gui.addButton(new GuiButton(gui.currentButtonId(), cX-62, cY+92, 170, 20, "Done")); - back = gui.addButton(new GuiButton(gui.currentButtonId(), gui.getGuiLeft()+7, gui.getGuiTop()+13, 30, 20, "Back")); + receivePageLeft = gui.addButton(new GuiButton(gui.currentButtonId(), cX-74, cY-29, 20, 20, "<")); + receivePageRight = gui.addButton(new GuiButton(gui.currentButtonId(), cX+76, cY-29, 20, 20, ">")); + sendPageLeft = gui.addButton(new GuiButton(gui.currentButtonId(), cX-74, cY+70, 20, 20, "<")); + sendPageRight = gui.addButton(new GuiButton(gui.currentButtonId(), cX+76, cY+70, 20, 20, ">")); + done = gui.addButton(new GuiButton(gui.currentButtonId(), cX-74, cY+92, 170, 20, "Done")); super.initGui(); } @@ -53,17 +48,6 @@ protected void accumulateEventTypes(List list){ sendButtons.clear(); receiveEvents.clear(); sendEvents.clear(); - // these at top cus more consistent when u need to employ fuckery when getting an EventData node by indexing receivable[]. - for(String name : gui.currentEditControl.getOutEvents()){ - ControlEvent evt = ControlEvent.getRegisteredEvent(name); - if(!receiveEvents.contains(evt)) - receiveEvents.add(ControlEvent.getRegisteredEvent(name)); - } - for(String name : gui.currentEditControl.getInEvents()){ - ControlEvent evt = ControlEvent.getRegisteredEvent(name); - if(!receiveEvents.contains(evt)) - receiveEvents.add(ControlEvent.getRegisteredEvent(name)); - } for(IControllable c : list){ for(String name : c.getOutEvents()){ ControlEvent evt = ControlEvent.getRegisteredEvent(name); @@ -76,29 +60,33 @@ protected void accumulateEventTypes(List list){ sendEvents.add(ControlEvent.getRegisteredEvent(name)); } } + for(String name : gui.currentEditControl.getOutEvents()){ + ControlEvent evt = ControlEvent.getRegisteredEvent(name); + if(!receiveEvents.contains(evt)) + receiveEvents.add(ControlEvent.getRegisteredEvent(name)); + } + for(String name : gui.currentEditControl.getInEvents()){ + ControlEvent evt = ControlEvent.getRegisteredEvent(name); + if(!receiveEvents.contains(evt)) + receiveEvents.add(ControlEvent.getRegisteredEvent(name)); + } int cX = gui.width/2; int cY = gui.height/2; numReceivePages = (receiveEvents.size()+2)/3; for(int i = 0; i < receiveEvents.size(); i ++){ int offset = (i%3)*25; - receiveButtons.add(gui.addButton(new ButtonHoverText(i+1000, cX-62, cY-100+offset, 170, 20, receiveEvents.get(i).name, ""))); + receiveButtons.add(gui.addButton(new ButtonHoverText(i+1000, cX-74, cY-100+offset, 170, 20, receiveEvents.get(i).name, ""))); } currentReceivePage = MathHelper.clamp(currentReceivePage, 1, numReceivePages); numSendPages = (sendEvents.size()+2)/3; for(int i = 0; i < sendEvents.size(); i ++){ int offset = (i%3)*25; - sendButtons.add(gui.addButton(new ButtonHoverText(i+2000, cX-62, cY+5+offset, 170, 20, sendEvents.get(i).name, ""))); + sendButtons.add(gui.addButton(new ButtonHoverText(i+2000, cX-74, cY+5+offset, 170, 20, sendEvents.get(i).name, ""))); } currentSendPage = MathHelper.clamp(currentSendPage, 1, numSendPages); } - - public void populateDefaultNodes() { - if (!gui.isEditMode) { - gui.currentEditControl.populateDefaultNodes(receiveEvents); - } - } private void recalculateVisibleButtons(){ for(GuiButton b : receiveButtons){ @@ -132,20 +120,18 @@ protected void drawScreen(){ int cX = gui.width/2; int cY = gui.height/2; String text = currentReceivePage + "/" + numReceivePages; - gui.getFontRenderer().drawString(text, cX+12, cY-21, 0xFF777777, false); + gui.getFontRenderer().drawString(text, cX, cY-20, 0xFF777777, false); text = currentSendPage + "/" + numSendPages; - gui.getFontRenderer().drawString(text, cX+12, cY+76, 0xFF777777, false); + gui.getFontRenderer().drawString(text, cX, cY+82, 0xFF777777, false); text = "Receivable Events"; - gui.getFontRenderer().drawString(text, cX - gui.getFontRenderer().getStringWidth(text) / 2F + 22, cY-112, 0xFF777777, false); + gui.getFontRenderer().drawString(text, cX - gui.getFontRenderer().getStringWidth(text) / 2 + 10, cY-110, 0xFF777777, false); text = "Sendable Events"; - gui.getFontRenderer().drawString(text, cX - gui.getFontRenderer().getStringWidth(text) / 2F + 22, cY-5, 0xFF777777, false); + gui.getFontRenderer().drawString(text, cX - gui.getFontRenderer().getStringWidth(text) / 2 + 10, cY-5, 0xFF777777, false); } @Override protected void actionPerformed(GuiButton button){ - if (button == back) { - gui.popElement(); - } else if(button == receivePageLeft){ + if(button == receivePageLeft){ if(numReceivePages != 0){ currentReceivePage = Math.max(1, currentReceivePage - 1); recalculateVisibleButtons(); @@ -162,20 +148,27 @@ protected void actionPerformed(GuiButton button){ currentSendPage = Math.min(numSendPages, currentSendPage + 1); recalculateVisibleButtons(); } else if(button == done){ - for(IControllable c : gui.linker.linked) { - if (!gui.currentEditControl.connectedSet.contains(c.getControlPos())) - gui.currentEditControl.connectedSet.add(c.getControlPos()); + Iterator itr = gui.currentEditControl.receiveNodeMap.values().iterator(); + while(itr.hasNext()){ + NodeSystem sys = itr.next(); + if(sys.outputNodes.isEmpty()) + itr.remove(); } - gui.currentEditControl.receiveEvent(ControlEvent.newEvent("initialize")); - if (!gui.isEditMode) { - float[] gridMouse = gui.placement.convertToGridSpace(gui.mouseX, gui.mouseY); - gui.currentEditControl.posX = gridMouse[0]; - gui.currentEditControl.posY = gridMouse[1]; - gui.placement.resetPrevPos(); - } - else { - gui.currentEditControl = null; + itr = gui.currentEditControl.sendNodeMap.values().iterator(); + while(itr.hasNext()){ + NodeSystem sys = itr.next(); + if(sys.outputNodes.isEmpty()) + itr.remove(); } + for(IControllable c : gui.linker.linked) + if(!gui.currentEditControl.connectedSet.contains(c.getControlPos())) + gui.currentEditControl.connectedSet.add(c.getControlPos()); + + float[] gridMouse = gui.placement.convertToGridSpace(gui.mouseX, gui.mouseY); + gui.currentEditControl.receiveEvent(ControlEvent.newEvent("initialize")); + gui.currentEditControl.posX = gridMouse[0]; + gui.currentEditControl.posY = gridMouse[1]; + gui.placement.resetPrevPos(); gui.resetStack(); } else { int i = receiveButtons.indexOf(button); @@ -217,8 +210,6 @@ protected void enableButtons(boolean enable){ sendPageRight.enabled = enable; done.visible = enable; done.enabled = enable; - back.visible = enable; - back.enabled = enable; } } diff --git a/src/main/java/com/hbm/inventory/control_panel/SubElementItemChoice.java b/src/main/java/com/hbm/inventory/control_panel/SubElementItemChoice.java index 941e5f975e..6a0ed5f1b8 100644 --- a/src/main/java/com/hbm/inventory/control_panel/SubElementItemChoice.java +++ b/src/main/java/com/hbm/inventory/control_panel/SubElementItemChoice.java @@ -3,13 +3,9 @@ import java.util.ArrayList; import java.util.List; -import com.hbm.lib.RefStrings; -import com.hbm.main.MainRegistry; import net.minecraft.client.gui.GuiButton; -import net.minecraft.util.ResourceLocation; public class SubElementItemChoice extends SubElement { - public static ResourceLocation bg_tex = new ResourceLocation(RefStrings.MODID + ":textures/gui/control_panel/gui_base.png"); public GuiButton pageLeft; public GuiButton pageRight; @@ -25,18 +21,13 @@ public SubElementItemChoice(GuiControlEdit gui){ protected void initGui(){ int cX = gui.width/2; int cY = gui.height/2; - pageLeft = gui.addButton(new GuiButton(gui.currentButtonId(), cX-80, cY+92, 15, 20, "<")); - pageRight = gui.addButton(new GuiButton(gui.currentButtonId(), cX+65, cY+92, 15, 20, ">")); - - buttons.add(gui.addButton(new GuiButton(1000, cX-80, (cY-90) + (0%7)*25, 160, 20, "Button"))); - buttons.add(gui.addButton(new GuiButton(1001, cX-80, (cY-90) + (1%7)*25, 160, 20, "Switch"))); - buttons.add(gui.addButton(new GuiButton(1002, cX-80, (cY-90) + (2%7)*25, 160, 20, "Display"))); - buttons.add(gui.addButton(new GuiButton(1003, cX-80, (cY-90) + (3%7)*25, 160, 20, "Indicator"))); - buttons.add(gui.addButton(new GuiButton(1004, cX-80, (cY-90) + (4%7)*25, 160, 20, "Knob"))); - buttons.add(gui.addButton(new GuiButton(1005, cX-80, (cY-90) + (5%7)*25, 160, 20, "Dial"))); - buttons.add(gui.addButton(new GuiButton(1006, cX-80, (cY-90) + (6%7)*25, 160, 20, "Label"))); - buttons.add(gui.addButton(new GuiButton(1007, cX-80, (cY-90) + (7%7)*25, 160, 20, "Slider"))); - + pageLeft = gui.addButton(new GuiButton(gui.currentButtonId(), cX-75, cY+92, 20, 20, "<")); + pageRight = gui.addButton(new GuiButton(gui.currentButtonId(), cX+75, cY+92, 20, 20, ">")); + List controls = ControlRegistry.getAllControls(); + for(int i = 0; i < controls.size(); i ++){ + int offset = (i%7)*25; + buttons.add(gui.addButton(new GuiButton(i+1000, cX-70, cY-90 + offset, 160, 20, controls.get(i).name))); + } numPages = (buttons.size()+6)/7; super.initGui(); } @@ -46,15 +37,9 @@ protected void drawScreen(){ int cX = gui.width/2; int cY = gui.height/2; String text = currentPage + "/" + numPages; - gui.getFontRenderer().drawString(text, cX - gui.getFontRenderer().getStringWidth(text) / 2F, cY+98, 0xFF777777, false); - text = "Select Control Type"; - gui.getFontRenderer().drawString(text, cX - gui.getFontRenderer().getStringWidth(text) / 2F, cY-110, 0xFF777777, false); - } - - @Override - protected void renderBackground() { - gui.mc.getTextureManager().bindTexture(bg_tex); - gui.drawTexturedModalRect(gui.getGuiLeft(), gui.getGuiTop(), 0, 0, gui.getXSize(), gui.getYSize()); + gui.getFontRenderer().drawString(text, cX, cY+100, 0xFF777777, false); + text = "Select item to add"; + gui.getFontRenderer().drawString(text, cX - gui.getFontRenderer().getStringWidth(text) / 2, cY-110, 0xFF777777, false); } private void recalculateVisibleButtons(){ @@ -70,7 +55,7 @@ private void recalculateVisibleButtons(){ buttons.get(i).enabled = true; } } - + @Override protected void actionPerformed(GuiButton button){ if(button == pageLeft){ @@ -80,55 +65,21 @@ protected void actionPerformed(GuiButton button){ currentPage = Math.min(numPages, currentPage + 1); recalculateVisibleButtons(); } else { - switch (button.id) { //TODO: clean - case 1000: - gui.currentEditControl = ControlRegistry.getNew("button_push", gui.control.panel); - gui.itemConfig.variants = ControlRegistry.getAllControlsOfType(gui.currentEditControl.getControlType()); - gui.pushElement(gui.itemConfig); - break; - case 1001: - gui.currentEditControl = ControlRegistry.getNew("switch_toggle", gui.control.panel); - gui.itemConfig.variants = ControlRegistry.getAllControlsOfType(gui.currentEditControl.getControlType()); - gui.pushElement(gui.itemConfig); - break; - case 1002: - gui.currentEditControl = ControlRegistry.getNew("display_7seg", gui.control.panel); - gui.itemConfig.variants = ControlRegistry.getAllControlsOfType(gui.currentEditControl.getControlType()); - gui.pushElement(gui.itemConfig); - break; - case 1003: - gui.currentEditControl = ControlRegistry.getNew("indicator_lamp", gui.control.panel); - gui.pushElement(gui.linker); - break; - case 1004: - gui.currentEditControl = ControlRegistry.getNew("knob_control", gui.control.panel); - gui.itemConfig.variants = ControlRegistry.getAllControlsOfType(gui.currentEditControl.getControlType()); - gui.pushElement(gui.itemConfig); - break; - case 1005: - gui.currentEditControl = ControlRegistry.getNew("dial_square", gui.control.panel); - gui.itemConfig.variants = ControlRegistry.getAllControlsOfType(gui.currentEditControl.getControlType()); - gui.pushElement(gui.itemConfig); - break; - case 1006: - gui.currentEditControl = ControlRegistry.getNew("label", gui.control.panel); - gui.itemConfig.variants = ControlRegistry.getAllControlsOfType(gui.currentEditControl.getControlType()); - gui.pushElement(gui.itemConfig); - break; - case 1007: - gui.currentEditControl = ControlRegistry.getNew("slider_vertical", gui.control.panel); - gui.pushElement(gui.linker); - break; + switch(button.id){ + case 1000: + gui.currentEditControl = ControlRegistry.getNew("button", gui.control.panel); + gui.pushElement(gui.linker); + break; } } } @Override - protected void enableButtons(boolean enable) { - if (enable) { + protected void enableButtons(boolean enable){ + if(enable){ recalculateVisibleButtons(); } else { - for (GuiButton b : buttons) { + for(GuiButton b : buttons){ b.visible = false; b.enabled = false; } diff --git a/src/main/java/com/hbm/inventory/control_panel/SubElementLinker.java b/src/main/java/com/hbm/inventory/control_panel/SubElementLinker.java index 3ec43d79d1..b5748ccd44 100644 --- a/src/main/java/com/hbm/inventory/control_panel/SubElementLinker.java +++ b/src/main/java/com/hbm/inventory/control_panel/SubElementLinker.java @@ -9,10 +9,7 @@ import com.hbm.items.tool.ItemMultiDetonator; import com.hbm.lib.RefStrings; -import com.hbm.main.MainRegistry; -import com.hbm.tileentity.machine.TileEntityDummy; import net.minecraft.block.Block; -import net.minecraft.block.state.IBlockState; import net.minecraft.client.gui.GuiButton; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; @@ -20,19 +17,16 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; -import net.minecraft.world.WorldServer; public class SubElementLinker extends SubElement { - public static ResourceLocation inv_tex = new ResourceLocation(RefStrings.MODID + ":textures/gui/control_panel/gui_linker_add_element.png"); + public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/control_panel/gui_control_add_element.png"); public GuiButton clear; public GuiButton accept; public GuiButton pageLeft; public GuiButton pageRight; public GuiButton cont; - public GuiButton back; - public List linked = new ArrayList<>(); public List linkedButtons = new ArrayList<>(); public int numPages = 1; @@ -46,32 +40,28 @@ public SubElementLinker(GuiControlEdit gui){ protected void initGui() { int cX = gui.width/2; int cY = gui.height/2; - clear = gui.addButton(new GuiButton(gui.currentButtonId(), cX-121, cY-93, 40, 20, "Clear")); - accept = gui.addButton(new GuiButton(gui.currentButtonId(), cX-101, cY-116, 20, 20, ">")); - pageLeft = gui.addButton(new GuiButton(gui.currentButtonId(), cX-60, cY-16, 20, 20, "<")); - pageRight = gui.addButton(new GuiButton(gui.currentButtonId(), cX+90, cY-16, 20, 20, ">")); - cont = gui.addButton(new GuiButton(gui.currentButtonId(), cX-60, cY+6, 170, 20, "Continue")); - + clear = gui.addButton(new GuiButton(gui.currentButtonId(), cX-104, cY-112, 20, 20, "C")); + accept = gui.addButton(new GuiButton(gui.currentButtonId(), cX-104, cY-90, 20, 20, ">")); + pageLeft = gui.addButton(new GuiButton(gui.currentButtonId(), cX-73, cY-16, 20, 20, "<")); + pageRight = gui.addButton(new GuiButton(gui.currentButtonId(), cX+77, cY-16, 20, 20, ">")); + cont = gui.addButton(new GuiButton(gui.currentButtonId(), cX-73, cY+6, 170, 20, "Continue")); super.initGui(); } @Override - protected void drawScreen() { - int cX = gui.width / 2; - int cY = gui.height / 2; - - ItemStack stack = gui.container.inventorySlots.get(0).getStack(); - accept.enabled = !stack.isEmpty() && stack.getItem() instanceof ItemMultiDetonator; - + protected void drawScreen(){ + int cX = gui.width/2; + int cY = gui.height/2; String text = currentPage + "/" + numPages; - gui.getFontRenderer().drawString(text, cX + 16, cY - 10, 0xFF777777, false); - text = "Create Links"; - gui.getFontRenderer().drawString(text, cX - gui.getFontRenderer().getStringWidth(text) / 2F + 10, cY - 110, 0xFF777777, false); + gui.getFontRenderer().drawString(text, cX+4, cY-6, 0xFF777777, false); + text = "Creating links for new " + gui.currentEditControl.name; + gui.getFontRenderer().drawString(text, cX - gui.getFontRenderer().getStringWidth(text) / 2 + 10, cY-110, 0xFF777777, false); } @Override protected void renderBackground() { - gui.mc.getTextureManager().bindTexture(inv_tex); + gui.mc.getTextureManager().bindTexture(texture); + gui.drawTexturedModalRect(gui.getGuiLeft(), gui.getGuiTop(), 0, 0, gui.getXSize(), gui.getYSize()); } @@ -81,8 +71,8 @@ private void recalculateVisibleButtons(){ b.enabled = false; } int idx = (currentPage-1)*3; - for(int i = idx; i < idx+3; i ++) { - if(i >= linkedButtons.size() || i < 1) //TODO: when block gone, remove from linked + for(int i = idx; i < idx+3; i ++){ + if(i >= linkedButtons.size()) break; linkedButtons.get(i).visible = true; linkedButtons.get(i).enabled = true; @@ -92,47 +82,33 @@ private void recalculateVisibleButtons(){ @Override protected void actionPerformed(GuiButton button){ World world = gui.control.getWorld(); - if(button == accept){ ItemStack stack = gui.container.inventorySlots.get(0).getStack(); if(!stack.isEmpty()){ if(stack.getItem() instanceof ItemMultiDetonator){ int[][] locs = ItemMultiDetonator.getLocations(stack); - if (locs != null) { - for (int i = 0; i < locs[0].length; i++) { - BlockPos pos = new BlockPos(locs[0][i], locs[1][i], locs[2][i]); - Block b = world.getBlockState(pos).getBlock(); - if (b instanceof BlockDummyable) { - int[] core = ((BlockDummyable) b).findCore(world, pos.getX(), pos.getY(), pos.getZ()); - if (core != null) { - pos = new BlockPos(core[0], core[1], core[2]); - } - } - TileEntity te = world.getTileEntity(pos); - if (te instanceof TileEntityDummy) { - BlockPos bpos = ((TileEntityDummy) te).target; - if (bpos != null) - te = world.getTileEntity(((TileEntityDummy) te).target); - } - if (te instanceof IControllable && !linked.contains(te)) { - linked.add((IControllable) te); + for (int i = 0; i < locs[0].length; i++) { + BlockPos pos = new BlockPos(locs[0][i], locs[1][i], locs[2][i]); + Block b = world.getBlockState(pos).getBlock(); + if(b instanceof BlockDummyable){ + int[] core = ((BlockDummyable)b).findCore(world, pos.getX(), pos.getY(), pos.getZ()); + if(core != null){ + pos = new BlockPos(core[0], core[1], core[2]); } } - refreshButtons(); + TileEntity te = world.getTileEntity(pos); + if(te instanceof IControllable && !linked.contains(te)){ + linked.add((IControllable)te); + } } } + refreshButtons(); } } else if(button == clear){ linked.clear(); - gui.currentEditControl.connectedSet.clear(); refreshButtons(); } else if(button == cont){ gui.eventEditor.accumulateEventTypes(linked); - gui.eventEditor.populateDefaultNodes(); - for(IControllable c : gui.linker.linked) { - if (!gui.currentEditControl.connectedSet.contains(c.getControlPos())) - gui.currentEditControl.connectedSet.add(c.getControlPos()); - } gui.pushElement(gui.eventEditor); } else if(button == pageLeft){ currentPage = Math.max(1, currentPage - 1); @@ -142,7 +118,6 @@ protected void actionPerformed(GuiButton button){ recalculateVisibleButtons(); } else if(linkedButtons.contains(button)){ int idx = linkedButtons.indexOf(button); - gui.currentEditControl.connectedSet.remove(linked.get(idx).getControlPos()); linked.remove(idx); refreshButtons(); } @@ -154,7 +129,6 @@ protected void refreshButtons(){ int i = 0; int cX = gui.width/2; int cY = gui.height/2; - for(IControllable c : linked){ BlockPos pos = c.getControlPos(); linkedButtons.add(new ButtonHoverText(gui.currentButtonId(), cX-73, cY-90 + i*22, 170, 20, "(" + pos.getX() + ", " + pos.getY() + ", " + pos.getZ() + ")", "")); diff --git a/src/main/java/com/hbm/inventory/control_panel/SubElementNodeEditor.java b/src/main/java/com/hbm/inventory/control_panel/SubElementNodeEditor.java index 36edf28493..285dbf0a92 100644 --- a/src/main/java/com/hbm/inventory/control_panel/SubElementNodeEditor.java +++ b/src/main/java/com/hbm/inventory/control_panel/SubElementNodeEditor.java @@ -1,13 +1,22 @@ package com.hbm.inventory.control_panel; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; -import com.hbm.inventory.control_panel.nodes.*; import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; import org.lwjgl.opengl.GL11; import org.lwjgl.util.vector.Matrix4f; +import com.hbm.inventory.control_panel.nodes.Node; +import com.hbm.inventory.control_panel.nodes.NodeCancelEvent; +import com.hbm.inventory.control_panel.nodes.NodeEventBroadcast; +import com.hbm.inventory.control_panel.nodes.NodeGetVar; +import com.hbm.inventory.control_panel.nodes.NodeInput; +import com.hbm.inventory.control_panel.nodes.NodeMath; +import com.hbm.inventory.control_panel.nodes.NodeSetVar; import com.hbm.lib.RefStrings; import com.hbm.main.ClientProxy; import com.hbm.render.RenderHelper; @@ -19,17 +28,14 @@ public class SubElementNodeEditor extends SubElement { - public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/control_panel/gui_placement_front.png"); + public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/control_panel/gui_control_grid.png"); public static ResourceLocation grid = new ResourceLocation(RefStrings.MODID + ":textures/gui/control_panel/grid.png"); - public GuiButton btn_back; - public GuiButton btn_variables; - + public GuiButton back; + public ItemList addMenu; private NodeSystem currentSystem; - private Deque systemHistoryStack = new ArrayDeque<>(); - private ControlEvent currentEvent; private List sendEvents; private boolean gridGrabbed = false; @@ -58,25 +64,12 @@ protected void setData(Map map, ControlEvent c, List(); - currentSystem.drag = false; - currentSystem.dragDist = 0; - } @Override protected void initGui(){ int cX = gui.width/2; int cY = gui.height/2; - btn_back = gui.addButton(new GuiButton(gui.currentButtonId(), gui.getGuiLeft()+7, gui.getGuiTop()+13, 30, 20, "Back")); - btn_variables = gui.addButton(new GuiButton(gui.currentButtonId(), gui.getGuiLeft()+54, gui.getGuiTop()+13, 58, 20, "Variables")); + back = gui.addButton(new GuiButton(gui.currentButtonId(), cX-104, cY-112, 20, 20, "<")); super.initGui(); } @@ -98,8 +91,6 @@ protected void keyTyped(char typedChar, int code){ node = new NodeInput(x, y, "Event Data").setVars(vars); } else if(s2.equals("Get Variable")){ node = new NodeGetVar(x, y, gui.currentEditControl); - } else if (s2.equals("Query Block")) { - node = new NodeQueryBlock(x, y, gui.currentEditControl); } if(node != null){ addMenu.close(); @@ -111,7 +102,6 @@ protected void keyTyped(char typedChar, int code){ }); list.addItems("Event Data"); list.addItems("Get Variable"); - list.addItems("Query Block"); return list; } else if(s.endsWith("Math")){ ItemList list = new ItemList(0, 0, 32, s2 -> { @@ -131,50 +121,6 @@ protected void keyTyped(char typedChar, int code){ }); list.addItems("Math Node"); return list; - } else if(s.endsWith("Boolean")){ - ItemList list = new ItemList(0, 0, 32, s2 -> { - final float x = (gui.mouseX-gui.getGuiLeft())*gridScale + gui.getGuiLeft() + gridX; - final float y = (gui.mouseY-gui.getGuiTop())*gridScale + gui.getGuiTop() - gridY; - Node node = null; - if(s2.equals("Boolean Node")){ - node = new NodeBoolean(x, y); - } - if(node != null){ - addMenu.close(); - addMenu = null; - currentSystem.addNode(node); - currentSystem.activeNode = node; - } - return null; - }); - list.addItems("Boolean Node"); - return list; - } else if(s.endsWith("Logic")){ - ItemList list = new ItemList(0, 0, 32, s2 -> { - final float x = (gui.mouseX-gui.getGuiLeft())*gridScale + gui.getGuiLeft() + gridX; - final float y = (gui.mouseY-gui.getGuiTop())*gridScale + gui.getGuiTop() - gridY; - Node node = null; - if (s2.equals("Function")) { - node = new NodeFunction(x, y); - } - else if (s2.equals("Buffer")) { - node = new NodeBuffer(x, y); - } - else if (s2.equals("Conditional")) { - node = new NodeConditional(x, y); - } - if (node != null) { - addMenu.close(); - addMenu = null; - currentSystem.addNode(node); - currentSystem.activeNode = node; - } - return null; - }); - list.addItems("Function"); - list.addItems("Buffer"); - list.addItems("Conditional"); - return list; } else if(s.endsWith("Output")){ ItemList list = new ItemList(0, 0, 32, s2 -> { final float x = (gui.mouseX-gui.getGuiLeft())*gridScale + gui.getGuiLeft() + gridX; @@ -206,7 +152,7 @@ else if (s2.equals("Conditional")) { } return null; }); - addMenu.addItems("{expandable}Input", "{expandable}Output", "{expandable}Math", "{expandable}Boolean", "{expandable}Logic"); + addMenu.addItems("{expandable}Input", "{expandable}Output", "{expandable}Math", "{expandable}Logic"); } if(code == Keyboard.KEY_DELETE || code == Keyboard.KEY_X){ List selected = new ArrayList<>(currentSystem.selectedNodes); @@ -251,10 +197,10 @@ protected void drawScreen(){ GL11.glEnable(GL11.GL_SCISSOR_TEST); int cX = gui.width/2; int cY = gui.height/2; - int minX = (cX-72)*gui.res.getScaleFactor(); - int minY = (cY-114)*gui.res.getScaleFactor(); - int maxX = (cX+120)*gui.res.getScaleFactor(); - int maxY = (cY+78)*gui.res.getScaleFactor(); + int minX = (cX-78)*gui.res.getScaleFactor(); + int minY = (cY-111)*gui.res.getScaleFactor(); + int maxX = (cX+102)*gui.res.getScaleFactor(); + int maxY = (cY+69)*gui.res.getScaleFactor(); //System.out.println(cY); //System.out.println(Minecraft.getMinecraft().displayHeight/2); GL11.glScissor(minX, minY, maxX-minX, maxY-minY); @@ -306,15 +252,6 @@ protected void mouseClicked(int mouseX, int mouseY, int button){ addMenu = null; } } else if(button == 0){ - // doing this here for now cus i want buttons to be able to make gui changes - NodeElement pressed = currentSystem.getNodeElementPressed(mouseX, mouseY); - if (pressed != null) { - switch (pressed.name) { - case "Edit Body": { - descendSubsystem(pressed.parent); - } - } - } currentSystem.onClick(mouseX, mouseY); } if(button == 2){ @@ -336,22 +273,13 @@ protected void mouseReleased(int mouseX, int mouseY, int state){ @Override protected void actionPerformed(GuiButton button){ - if(button == btn_back){ + if(button == back){ if(currentSystem != null){ currentSystem.removeClientData(); currentSystem = null; - - if (!systemHistoryStack.isEmpty()) { - currentSystem = systemHistoryStack.getFirst(); - systemHistoryStack.pop(); - return; - } } gui.popElement(); } - if (button == btn_variables) { - gui.pushElement(gui.variables); - } } @Override @@ -364,10 +292,8 @@ public void onClose(){ @Override protected void enableButtons(boolean enable){ - btn_back.enabled = enable; - btn_back.visible = enable; - btn_variables.enabled = enable; - btn_variables.visible = enable; + back.enabled = enable; + back.visible = enable; } } diff --git a/src/main/java/com/hbm/inventory/control_panel/SubElementPlacement.java b/src/main/java/com/hbm/inventory/control_panel/SubElementPlacement.java index 762d393ddf..34b92e1cd4 100644 --- a/src/main/java/com/hbm/inventory/control_panel/SubElementPlacement.java +++ b/src/main/java/com/hbm/inventory/control_panel/SubElementPlacement.java @@ -1,11 +1,5 @@ package com.hbm.inventory.control_panel; -import com.hbm.inventory.control_panel.controls.DialLarge; -import com.hbm.inventory.control_panel.controls.DisplaySevenSeg; -import com.hbm.inventory.control_panel.controls.DisplayText; -import com.hbm.inventory.control_panel.controls.Label; -import com.hbm.main.ResourceManager; -import net.minecraft.item.EnumDyeColor; import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; import org.lwjgl.opengl.GL11; @@ -13,6 +7,7 @@ import com.hbm.lib.RefStrings; import com.hbm.main.ClientProxy; +import com.hbm.main.ResourceManager; import com.hbm.render.RenderHelper; import net.minecraft.client.Minecraft; @@ -26,30 +21,22 @@ public class SubElementPlacement extends SubElement { - public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/control_panel/gui_placement_front.png"); + public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/control_panel/gui_control_grid.png"); public static ResourceLocation grid = new ResourceLocation(RefStrings.MODID + ":textures/gui/control_panel/placement_grid.png"); public float ogPosX; public float ogPosY; public Control selectedControl; public boolean controlGrabbed = false; - - public GuiButton btn_panelResize; - public GuiButton btn_security; - public GuiButton btn_connections; - public GuiButton btn_variables; - public GuiButton btn_newControl; - public GuiButton btn_editControl; - public GuiButton btn_deleteControl; - + + public GuiButton deleteElement; + public GuiButton newElement; private boolean gridGrabbed = false; protected float gridX = 0; protected float gridY = 0; protected float gridScale = 0.1F; private float prevMouseX; private float prevMouseY; - - private int ctrl_index = 0; public SubElementPlacement(GuiControlEdit gui){ super(gui); @@ -59,13 +46,8 @@ public SubElementPlacement(GuiControlEdit gui){ protected void initGui() { int cX = gui.width/2; int cY = gui.height/2; - btn_panelResize = gui.addButton(new GuiButton(gui.currentButtonId(), gui.getGuiLeft()+7, gui.getGuiTop()+13, 43, 20, "Resize")); - btn_variables = gui.addButton(new GuiButton(gui.currentButtonId(), gui.getGuiLeft()+54, gui.getGuiTop()+13, 58, 20, "Variables")); - btn_security = gui.addButton(new GuiButton(gui.currentButtonId(), gui.getGuiLeft()+117, gui.getGuiTop()+13, 58, 20, "Security")); - btn_connections = gui.addButton(new GuiButton(gui.currentButtonId(), gui.getGuiLeft()+180, gui.getGuiTop()+13, 70, 20, "Connections")); - btn_newControl = gui.addButton(new GuiButton(gui.currentButtonId(), gui.getGuiLeft()+7, gui.getGuiTop()+47, 43, 20, "New")); - btn_editControl = gui.addButton(new GuiButton(gui.currentButtonId(), gui.getGuiLeft()+7, gui.getGuiTop()+69, 43, 20, "Edit")); - btn_deleteControl = gui.addButton(new GuiButton(gui.currentButtonId(), gui.getGuiLeft()+7, gui.getGuiTop()+91, 43, 20, "Delete")); + newElement = gui.addButton(new GuiButton(gui.currentButtonId(), cX-103, cY-76, 20, 20, "+")); + deleteElement = gui.addButton(new GuiButton(gui.currentButtonId(), cX-103, cY-98, 20, 20, "-")); float[] cGrid = convertToGridSpace(cX+10, cY+20); gridX = -cGrid[0]; gridY = cGrid[1]; @@ -87,15 +69,12 @@ public void resetPrevPos(){ prevMouseX = gui.mouseX; prevMouseY = gui.mouseY; } - + @Override protected void drawScreen() { float dWheel = Mouse.getDWheel(); float dScale = dWheel*gridScale*0.00075F; - - btn_editControl.enabled = selectedControl != null; - btn_deleteControl.enabled = selectedControl != null; - + //Correction so we scale around mouse position float prevX = (gui.mouseX-gui.getGuiLeft())*gridScale; float prevY = (gui.mouseY-gui.getGuiTop())*gridScale; @@ -104,25 +83,23 @@ protected void drawScreen() { float currentY = (gui.mouseY-gui.getGuiTop())*gridScale; gridX += prevX-currentX; gridY -= prevY-currentY; - + if(gridGrabbed || gui.currentEditControl != null){ float dX = (gui.mouseX-prevMouseX)*gridScale; float dY = (gui.mouseY-prevMouseY)*gridScale; if(gridGrabbed){ gridX -= dX; gridY += dY; - } else if(!gui.isEditMode) { + } else if(gui.currentEditControl != null){ gui.currentEditControl.posX += dX; gui.currentEditControl.posY += dY; } } if((prevMouseX != gui.mouseX || prevMouseY != gui.mouseY) && controlGrabbed){ - ctrl_index = gui.control.panel.controls.indexOf(selectedControl); gui.control.panel.controls.remove(selectedControl); gui.currentEditControl = selectedControl; selectedControl = null; controlGrabbed = false; - gui.control.markDirty(); } prevMouseX = gui.mouseX; prevMouseY = gui.mouseY; @@ -130,33 +107,23 @@ protected void drawScreen() { GL11.glEnable(GL11.GL_SCISSOR_TEST); int cX = gui.width/2; int cY = gui.height/2; - int minX = (cX-72)*gui.res.getScaleFactor(); - int minY = (cY-114)*gui.res.getScaleFactor(); - int maxX = (cX+120)*gui.res.getScaleFactor(); - int maxY = (cY+78)*gui.res.getScaleFactor(); + int minX = (cX-78)*gui.res.getScaleFactor(); + int minY = (cY-111)*gui.res.getScaleFactor(); + int maxX = (cX+102)*gui.res.getScaleFactor(); + int maxY = (cY+69)*gui.res.getScaleFactor(); GL11.glScissor(minX, minY, Math.max(maxX-minX, 0), Math.max(maxY-minY, 0)); gui.mc.getTextureManager().bindTexture(grid); - - float baseSizeX = (1-(gui.control.panel.b_off+gui.control.panel.d_off)); - float baseSizeY = (1-(gui.control.panel.a_off+gui.control.panel.c_off)); - float panel_hyp = (float) (baseSizeY/Math.cos(Math.abs(gui.control.panel.angle))); - - float[] box = gui.control.getBox(); + //float x = gridX/gui.getXSize(); + //float y = -gridY/gui.getYSize(); + //RenderHelper.drawGuiRectColor(gui.getGuiLeft(), gui.getGuiTop(), x, y, gui.getXSize(), gui.getYSize(), gridScale+x, gridScale+y, 0.2F, 0.2F, 0.2F, 1); + float[] box = gui.control.panel.getBox(); float[] pos1 = convertFromGridSpace(box[0]-0.03125F, box[1]-0.03125F); float[] pos2 = convertFromGridSpace(box[2]+0.03125F, box[3]+0.03125F); - - float uScale = (baseSizeX*10)/4; - float vScale = (panel_hyp*10)/4; + float uScale = gui.control.panel.width/4; + float vScale = gui.control.panel.height/4; RenderHelper.drawGuiRect(pos1[0], pos1[1], 0, 0, pos2[0]-pos1[0], pos2[1]-pos1[1], uScale+0.015625F, vScale+0.015625F); - - // bottom,right lines to close the grid, cus somehow scaling the grid looks worse - GlStateManager.disableTexture2D(); - GlStateManager.color(.4F, .4F, .4F, 1); - RenderHelper.drawGuiRect(pos1[0], pos2[1]-(1/(gridScale*15)), 0, 0, pos2[0]-pos1[0], 1/(gridScale*15), uScale+0.015625F, 0.015625F); - RenderHelper.drawGuiRect(pos2[0]-(1/(gridScale*15)), pos1[1], 0, 0, 1/(gridScale*15), pos2[1]-pos1[1], 0.015625F, vScale+0.015625F); - GlStateManager.enableTexture2D(); - + GL11.glPushMatrix(); float spX = gui.getGuiLeft(); @@ -172,13 +139,8 @@ protected void drawScreen() { float gridMX = (gui.mouseX-gui.getGuiLeft())*gridScale + gui.getGuiLeft() + gridX; float gridMY = (gui.mouseY-gui.getGuiTop())*gridScale + gui.getGuiTop() - gridY; renderItems(gridMX, gridMY); - GL11.glPopMatrix(); GL11.glDisable(GL11.GL_SCISSOR_TEST); - - if (selectedControl != null) { - gui.getFontRenderer().drawString("ID: " + selectedControl.panel.controls.indexOf(selectedControl), gui.getGuiLeft()+58, gui.getGuiTop()+230, 0x333333); - } } public void renderItems(float mx, float my){ @@ -189,17 +151,15 @@ public void renderItems(float mx, float my){ boolean ctrl = Keyboard.isKeyDown(Keyboard.KEY_LCONTROL); float prevX = gui.currentEditControl.posX; float prevY = gui.currentEditControl.posY; - - if (!ctrl) { - gui.currentEditControl.posX = (float) Math.round(prevX*10)*.1F; - gui.currentEditControl.posY = (float) Math.round(prevY*10)*.1F; + if(ctrl){ + gui.currentEditControl.posX = (float)Math.round(prevX*4F)*0.25F; + gui.currentEditControl.posY = (float)Math.round(prevY*4F)*0.25F; } - boolean canPlace = canPlace(); if(!canPlace) GlStateManager.colorMask(true, false, false, true); renderControl(gui.currentEditControl); - if (!ctrl) { + if(ctrl){ gui.currentEditControl.posX = prevX; gui.currentEditControl.posY = prevY; } @@ -207,90 +167,19 @@ public void renderItems(float mx, float my){ GlStateManager.colorMask(true, true, true, true); } } - + public void renderControl(Control c){ Tessellator tes = Tessellator.getInstance(); BufferBuilder buf = tes.getBuffer(); Minecraft.getMinecraft().getTextureManager().bindTexture(c.getGuiTexture()); - - if (c instanceof DisplaySevenSeg) { - for (int i = 0; i < c.getConfigs().get("digitCount").getNumber(); i++) { - buf.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX_COLOR); - float[] box = c.getBox(); - float cock = (box[2] - box[0]) / c.getConfigs().get("digitCount").getNumber(); - box[0] += cock * i; - box[2] = box[0] + cock; - float[] rgb = new float[]{1, (c == selectedControl) ? .8F : 1F, 1F}; - buf.pos(box[0], box[1], 0).tex(0, 0).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); - buf.pos(box[0], box[3], 0).tex(0, 1).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); - buf.pos(box[2], box[3], 0).tex(1, 1).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); - buf.pos(box[2], box[1], 0).tex(1, 0).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); - tes.draw(); - } - } - else if (c instanceof Label) { - Label label = (Label) c; - String text = label.getConfigs().get("text").toString(); - float scale = label.getConfigs().get("scale").getNumber()/500F; - - int r = (int) (label.getConfigs().get("colorR").getNumber()*255); - int g = (int) (label.getConfigs().get("colorG").getNumber()*255 * ((c == selectedControl) ? .5F : 1F)); - int b = (int) (label.getConfigs().get("colorB").getNumber()*255); - int rgb2 = (r << 16) | (g << 8) | b; - - GL11.glPushMatrix(); - GL11.glTranslated(c.posX, c.posY, 0); - GL11.glScalef(scale, scale, scale); - GL11.glTranslated(-c.posX, -c.posY, 0); - gui.getFontRenderer().drawString(text, c.posX, c.posY, rgb2, false); - GL11.glPopMatrix(); - } - else if (c instanceof DisplayText) { - DisplayText thing = (DisplayText) c; - - String text = thing.getVar("text").toString(); - float scale = thing.getConfigs().get("scale").getNumber()/500F; - - Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.white); - buf.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX_COLOR); - float[] box = c.getBox(); - float[] rgb = new float[]{.2F, (c == selectedControl) ? .1F : .2F, .2F}; - buf.pos(box[0], box[1], 0).tex(0, 0).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); - buf.pos(box[0], box[3], 0).tex(0, 1).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); - buf.pos(box[2], box[3], 0).tex(1, 1).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); - buf.pos(box[2], box[1], 0).tex(1, 0).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); - tes.draw(); - - EnumDyeColor dyeColor = thing.getVar("color").getEnum(EnumDyeColor.class); - int color = dyeColor.getColorValue(); - - GL11.glPushMatrix(); - GL11.glTranslated(c.posX, c.posY, 0); - GL11.glScalef(scale, scale, scale); - GL11.glTranslated(-c.posX, -c.posY, 0); - gui.getFontRenderer().drawString(text, c.posX, c.posY, color, false); - GL11.glPopMatrix(); - } - else if (c instanceof DialLarge) { - buf.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX_COLOR); - float[] box = c.getBox(); - float[] rgb = new float[]{1, (c == selectedControl) ? .8F : 1F, 1F}; - buf.pos(box[0], box[1], 0).tex(0, 0).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); - buf.pos(box[0], box[3], 0).tex(0, .5).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); - buf.pos(box[2], box[3], 0).tex(1, .5).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); - buf.pos(box[2], box[1], 0).tex(1, 0).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); - tes.draw(); - } - else { - buf.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX_COLOR); - float[] box = c.getBox(); - float[] rgb = new float[]{1, (c == selectedControl) ? .8F : 1F, 1F}; - buf.pos(box[0], box[1], 0).tex(0, 0).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); - buf.pos(box[0], box[3], 0).tex(0, 1).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); - buf.pos(box[2], box[3], 0).tex(1, 1).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); - buf.pos(box[2], box[1], 0).tex(1, 0).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); - tes.draw(); - } + buf.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX_COLOR); + float[] box = c.getBox(); + float rgb = c == selectedControl ? 1 : 0.9F; + buf.pos(box[0], box[1], 0).tex(0, 0).color(rgb, rgb, rgb, 1).endVertex(); + buf.pos(box[0], box[3], 0).tex(0, 1).color(rgb, rgb, rgb, 1).endVertex(); + buf.pos(box[2], box[3], 0).tex(1, 1).color(rgb, rgb, rgb, 1).endVertex(); + buf.pos(box[2], box[1], 0).tex(1, 0).color(rgb, rgb, rgb, 1).endVertex(); + tes.draw(); } @Override @@ -299,38 +188,25 @@ protected void renderBackground() { gui.drawTexturedModalRect(gui.getGuiLeft(), gui.getGuiTop(), 0, 0, gui.getXSize(), gui.getYSize()); } - + + @Override + protected void enableButtons(boolean enable) { + newElement.enabled = enable; + newElement.visible = enable; + deleteElement.enabled = enable; + deleteElement.visible = enable; + } + @Override protected void actionPerformed(GuiButton button) { - if (button == btn_panelResize) { - gui.pushElement(gui.panelResize); - } - else if (button == btn_variables) { - gui.currentEditControl = selectedControl; // allows access to a selected control's local vars - gui.variables.isGlobalScope = true; - gui.pushElement(gui.variables); - } - else if (button == btn_newControl) { - gui.isEditMode = false; + if(button == newElement){ gui.pushElement(gui.choice); - } - else if (button == btn_editControl) { - if (selectedControl != null) { - gui.currentEditControl = selectedControl; - gui.itemConfig.last_control = null; - gui.itemConfig.variants = ControlRegistry.getAllControlsOfType(gui.currentEditControl.getControlType()); - gui.pushElement(gui.itemConfig); - gui.isEditMode = true; - selectedControl = null; - } - } - else if (button == btn_deleteControl) { - gui.isEditMode = false; + } else if(button == deleteElement){ gui.control.panel.controls.remove(selectedControl); selectedControl = null; } } - + protected boolean canPlace(){ if(gui.currentEditControl == null) return false; @@ -339,7 +215,7 @@ protected boolean canPlace(){ return false; } } - if(!RenderHelper.boxContainsOther(gui.control.getBox(), gui.currentEditControl.getBox())) + if(!RenderHelper.boxContainsOther(gui.control.panel.getBox(), gui.currentEditControl.getBox())) return false; return true; } @@ -349,14 +225,15 @@ protected void mouseClicked(int mouseX, int mouseY, int button){ float gridMX = (gui.mouseX-gui.getGuiLeft())*gridScale + gui.getGuiLeft() + gridX; float gridMY = (gui.mouseY-gui.getGuiTop())*gridScale + gui.getGuiTop() - gridY; if(button == 0){ - if(gui.currentEditControl != null) { + if(gui.currentEditControl != null){ float prevX = gui.currentEditControl.posX; float prevY = gui.currentEditControl.posY; - if(!Keyboard.isKeyDown(Keyboard.KEY_LCONTROL)){ - gui.currentEditControl.posX = (float) Math.round(prevX*10)*.1F; - gui.currentEditControl.posY = (float) Math.round(prevY*10)*.1F; + if(Keyboard.isKeyDown(Keyboard.KEY_LCONTROL)){ + gui.currentEditControl.posX = (float)Math.round(gui.currentEditControl.posX*4F)*0.25F; + gui.currentEditControl.posY = (float)Math.round(gui.currentEditControl.posY*4F)*0.25F; } if(canPlace()){ + gui.control.panel.controls.add(gui.currentEditControl); gui.currentEditControl = null; } else { @@ -389,35 +266,17 @@ protected void mouseReleased(int mouseX, int mouseY, int state){ } if(state == 0){ if(canPlace()){ - if(!Keyboard.isKeyDown(Keyboard.KEY_LCONTROL)){ - gui.currentEditControl.posX = (float)Math.round(gui.currentEditControl.posX*10)*.1F; - gui.currentEditControl.posY = (float)Math.round(gui.currentEditControl.posY*10)*.1F; + if(Keyboard.isKeyDown(Keyboard.KEY_LCONTROL)){ + gui.currentEditControl.posX = (float)Math.round(gui.currentEditControl.posX*4F)*0.25F; + gui.currentEditControl.posY = (float)Math.round(gui.currentEditControl.posY*4F)*0.25F; } - gui.control.panel.controls.add(ctrl_index, gui.currentEditControl); + gui.control.panel.controls.add(gui.currentEditControl); gui.currentEditControl = null; } controlGrabbed = false; } } - - @Override - protected void enableButtons(boolean enable) { - btn_panelResize.enabled = enable; - btn_panelResize.visible = enable; - btn_variables.enabled = enable; - btn_variables.visible = enable; - btn_security.enabled = false; - btn_security.visible = enable; - btn_connections.enabled = false; - btn_connections.visible = enable; - btn_newControl.enabled = enable; - btn_newControl.visible = enable; - btn_editControl.enabled = enable; - btn_editControl.visible = enable; - btn_deleteControl.enabled = enable; - btn_deleteControl.visible = enable; - } - + protected float[] convertToGridSpace(float x, float y){ float gridMX = (x-gui.getGuiLeft())*gridScale + gui.getGuiLeft() + gridX; float gridMY = (y-gui.getGuiTop())*gridScale + gui.getGuiTop() - gridY; diff --git a/src/main/java/com/hbm/inventory/control_panel/controls/Button.java b/src/main/java/com/hbm/inventory/control_panel/controls/Button.java new file mode 100644 index 0000000000..7bfd7a73c8 --- /dev/null +++ b/src/main/java/com/hbm/inventory/control_panel/controls/Button.java @@ -0,0 +1,99 @@ +package com.hbm.inventory.control_panel.controls; + +import java.util.Arrays; +import java.util.List; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.control_panel.Control; +import com.hbm.inventory.control_panel.ControlPanel; +import com.hbm.inventory.control_panel.DataValueEnum; +import com.hbm.inventory.control_panel.DataValueFloat; +import com.hbm.main.ResourceManager; +import com.hbm.render.amlfrom1710.IModelCustom; +import com.hbm.render.amlfrom1710.Tessellator; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.vertex.DefaultVertexFormats; +import net.minecraft.item.EnumDyeColor; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +public class Button extends Control { + + public Button(String name, ControlPanel panel){ + super(name, panel); + vars.put("color", new DataValueEnum<>(EnumDyeColor.RED)); + vars.put("isLit", new DataValueFloat(0)); + } + + @Override + public void render(){ + GlStateManager.shadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.ctrl_button0_tex); + boolean lit = getVar("isLit").getBoolean(); + float lX = OpenGlHelper.lastBrightnessX; + float lY = OpenGlHelper.lastBrightnessY; + if(lit){ + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240, 240); + } + Tessellator tes = Tessellator.instance; + //tes.startDrawingQuads(); + tes.startDrawing(GL11.GL_TRIANGLES, DefaultVertexFormats.POSITION_TEX_COLOR_NORMAL); + tes.setTranslation(posX, 0, posY); + float[] color = getVar("color").getEnum(EnumDyeColor.class).getColorComponentValues(); + float cMul = 0.6F; + if(lit) + cMul = 1; + tes.setColorRGBA_F(color[0]*cMul, color[1]*cMul, color[2]*cMul, 1F); + IModelCustom model = getModel(); + model.tessellatePart(tes, "button0_base"); + tes.draw(); + if(lit){ + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, lX, lY); + } + tes.startDrawing(GL11.GL_TRIANGLES, DefaultVertexFormats.POSITION_TEX_COLOR_NORMAL); + tes.setTranslation(posX, 0, posY); + tes.setColorRGBA_F(0.4F, 0.4F, 0.4F, 1F); + model.tessellatePart(tes, "button0"); + tes.draw(); + GlStateManager.shadeModel(GL11.GL_FLAT); + } + + @Override + @SideOnly(Side.CLIENT) + public IModelCustom getModel(){ + return ResourceManager.ctrl_button0; + } + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getGuiTexture(){ + return ResourceManager.ctrl_button0_gui_tex; + } + + @Override + public List getOutEvents(){ + return Arrays.asList("ctrl_button_press"); + } + + @Override + public AxisAlignedBB getBoundingBox(){ + return new AxisAlignedBB(-0.5, 0, -0.5, 0.5, 0.5, 0.5).offset(posX, 0, posY); + } + + @Override + public float[] getBox(){ + return new float[]{posX, posY, posX + 1, posY + 1}; + } + + @Override + public Control newControl(ControlPanel panel){ + return new Button(name, panel); + } + +} diff --git a/src/main/java/com/hbm/inventory/control_panel/nodes/Node.java b/src/main/java/com/hbm/inventory/control_panel/nodes/Node.java index 1decc54fbd..4f42bbac4f 100644 --- a/src/main/java/com/hbm/inventory/control_panel/nodes/Node.java +++ b/src/main/java/com/hbm/inventory/control_panel/nodes/Node.java @@ -3,11 +3,15 @@ import java.util.ArrayList; import java.util.List; -import com.hbm.inventory.control_panel.*; -import com.hbm.main.MainRegistry; -import net.minecraft.util.math.BlockPos; import org.lwjgl.opengl.GL11; +import com.hbm.inventory.control_panel.ControlEvent; +import com.hbm.inventory.control_panel.DataValue; +import com.hbm.inventory.control_panel.DataValueFloat; +import com.hbm.inventory.control_panel.NodeConnection; +import com.hbm.inventory.control_panel.NodeElement; +import com.hbm.inventory.control_panel.NodeSystem; +import com.hbm.inventory.control_panel.NodeType; import com.hbm.render.RenderHelper; import net.minecraft.client.Minecraft; @@ -25,7 +29,7 @@ public abstract class Node { public List otherElements = new ArrayList<>(); public List inputs = new ArrayList<>(); public List outputs = new ArrayList<>(); - + public boolean cacheValid = false; public DataValue[] evalCache = null; @@ -42,41 +46,41 @@ public NBTTagCompound writeToNBT(NBTTagCompound tag, NodeSystem sys){ for(int i = 0; i < this.inputs.size(); i ++){ inputs.setTag("con"+i, this.inputs.get(i).writeToNBT(new NBTTagCompound(), sys)); } - tag.setTag("in", inputs); + tag.setTag("inputs", inputs); NBTTagCompound outputs = new NBTTagCompound(); for(int i = 0; i < this.outputs.size(); i ++){ outputs.setTag("con"+i, this.outputs.get(i).writeToNBT(new NBTTagCompound(), sys)); } - tag.setTag("out", outputs); + tag.setTag("outputs", outputs); - tag.setInteger("T", getType().ordinal()); - tag.setFloat("X", posX); - tag.setFloat("Y", posY); - tag.setFloat("S", size); + tag.setInteger("type", getType().ordinal()); + tag.setFloat("posX", posX); + tag.setFloat("posY", posY); + tag.setFloat("size", size); return tag; } public void readFromNBT(NBTTagCompound tag, NodeSystem sys){ this.inputs.clear(); this.outputs.clear(); - NBTTagCompound inputs = tag.getCompoundTag("in"); + NBTTagCompound inputs = tag.getCompoundTag("inputs"); for(int i = 0; i < inputs.getKeySet().size(); i ++){ NodeConnection c = new NodeConnection(null, this, 0, false, null, new DataValueFloat(0)); c.readFromNBT(inputs.getCompoundTag("con"+i), sys); this.inputs.add(c); } - NBTTagCompound outputs = tag.getCompoundTag("out"); + NBTTagCompound outputs = tag.getCompoundTag("outputs"); for(int i = 0; i < outputs.getKeySet().size(); i ++){ NodeConnection c = new NodeConnection(null, this, 0, false, null, new DataValueFloat(0)); c.readFromNBT(outputs.getCompoundTag("con"+i), sys); this.outputs.add(c); } - this.posX = tag.getFloat("X"); - this.posY = tag.getFloat("Y"); - this.size = tag.getFloat("S"); + this.posX = tag.getFloat("posX"); + this.posY = tag.getFloat("posY"); + this.size = tag.getFloat("size"); cacheValid = false; } @@ -98,25 +102,9 @@ public static Node nodeFromNBT(NBTTagCompound tag, NodeSystem sys){ int ctrlIdx = tag.getInteger("controlIdx"); node = new NodeGetVar(0, 0, sys.parent.panel.controls.get(ctrlIdx)); break; - case "queryBlock": - ctrlIdx = tag.getInteger("controlIdx"); - node = new NodeQueryBlock(0, 0, sys.parent.panel.controls.get(ctrlIdx)); - break; - case "math": + case "math": node = new NodeMath(0, 0); break; - case "boolean": - node = new NodeBoolean(0, 0); - break; - case "function": - node = new NodeFunction(0, 0); - break; - case "buffer": - node = new NodeBuffer(0, 0); - break; - case "conditional": - node = new NodeConditional(0, 0); - break; case "setVar": int ctrlIdx2 = tag.getInteger("controlIdx"); node = new NodeSetVar(0, 0, sys.parent.panel.controls.get(ctrlIdx2)); @@ -165,7 +153,7 @@ public void render(float mX, float mY, boolean isActive, boolean isSelected){ outputs.get(i).render(mX, mY); for(int i = otherElements.size()-1; i >= 0; i --) otherElements.get(i).render(mX, mY); - + FontRenderer font = Minecraft.getMinecraft().fontRenderer; GL11.glPushMatrix(); GL11.glTranslated(posX, posY, 0); @@ -194,7 +182,7 @@ public boolean onClick(float x, float y){ } return false; } - + public float[] getBoundingBox(){ return new float[]{posX, posY, posX+40, posY+6+size}; } diff --git a/src/main/java/com/hbm/inventory/control_panel/nodes/NodeEventBroadcast.java b/src/main/java/com/hbm/inventory/control_panel/nodes/NodeEventBroadcast.java index 1f84727fd7..b3baa1d8df 100644 --- a/src/main/java/com/hbm/inventory/control_panel/nodes/NodeEventBroadcast.java +++ b/src/main/java/com/hbm/inventory/control_panel/nodes/NodeEventBroadcast.java @@ -15,7 +15,6 @@ import com.hbm.inventory.control_panel.NodeSystem; import com.hbm.inventory.control_panel.NodeType; -import com.hbm.main.MainRegistry; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.util.math.BlockPos; diff --git a/src/main/java/com/hbm/inventory/control_panel/nodes/NodeGetVar.java b/src/main/java/com/hbm/inventory/control_panel/nodes/NodeGetVar.java index 74af5b84b0..66995c7920 100644 --- a/src/main/java/com/hbm/inventory/control_panel/nodes/NodeGetVar.java +++ b/src/main/java/com/hbm/inventory/control_panel/nodes/NodeGetVar.java @@ -88,13 +88,6 @@ public DataValue evaluate(int idx){ } } - public NodeGetVar setData(String varName, boolean isGlobal) { - this.varName = varName; - this.global = isGlobal; - this.outputs.get(0).type = evaluate(0).getType(); - return this; - } - @Override public NodeType getType(){ return NodeType.INPUT; diff --git a/src/main/java/com/hbm/inventory/control_panel/nodes/NodeInput.java b/src/main/java/com/hbm/inventory/control_panel/nodes/NodeInput.java index 6da9ba8226..ed2d28ae4d 100644 --- a/src/main/java/com/hbm/inventory/control_panel/nodes/NodeInput.java +++ b/src/main/java/com/hbm/inventory/control_panel/nodes/NodeInput.java @@ -2,7 +2,6 @@ import java.util.Map; import java.util.Map.Entry; -import java.util.Objects; import com.hbm.inventory.control_panel.DataValue; import com.hbm.inventory.control_panel.NodeConnection; @@ -19,7 +18,7 @@ public NodeInput(float x, float y, String name){ super(x, y); this.name = name; } - + @Override public DataValue evaluate(int idx){ return outputs.get(idx).defaultValue; @@ -60,10 +59,6 @@ public NodeInput setVars(Map vars){ public NodeInput setOutputFromVars(Map vars){ for(NodeConnection c : outputs){ - if (Objects.equals(c.name, "from index")) { - c.enumSelector = null; - continue; - } c.setDefault(vars.get(c.name)); } return this; diff --git a/src/main/java/com/hbm/inventory/control_panel/nodes/NodeMath.java b/src/main/java/com/hbm/inventory/control_panel/nodes/NodeMath.java index 9d16c6a859..b005ed6bb4 100644 --- a/src/main/java/com/hbm/inventory/control_panel/nodes/NodeMath.java +++ b/src/main/java/com/hbm/inventory/control_panel/nodes/NodeMath.java @@ -9,7 +9,6 @@ import com.hbm.inventory.control_panel.DataValue.DataType; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.math.MathHelper; public class NodeMath extends Node { @@ -57,48 +56,39 @@ public DataValue evaluate(int idx){ if(evals[i] == null) return null; } - switch(op) { - case ADD: - return evalCache[0] = new DataValueFloat(evals[0].getNumber()+evals[1].getNumber()); - case SUB: - return evalCache[0] = new DataValueFloat(evals[0].getNumber()-evals[1].getNumber()); - case MULT: - return evalCache[0] = new DataValueFloat(evals[0].getNumber()*evals[1].getNumber()); - case DIV: - return evalCache[0] = new DataValueFloat(evals[0].getNumber()/evals[1].getNumber()); - case MOD: - return evalCache[0] = new DataValueFloat(evals[0].getNumber()%evals[1].getNumber()); - case POW: - return evalCache[0] = new DataValueFloat((float)Math.pow(evals[0].getNumber(), evals[1].getNumber())); - case LOG: - return evalCache[0] = new DataValueFloat((float)(Math.log(evals[0].getNumber())/Math.log(evals[1].getNumber()))); - case EXP: - return evalCache[0] = new DataValueFloat((float)Math.exp(evals[0].getNumber())); - case SQRT: - return evalCache[0] = new DataValueFloat((float)Math.sqrt(evals[0].getNumber())); - case ABS: - return evalCache[0] = new DataValueFloat(Math.abs(evals[0].getNumber())); - case EQUAL: - return evalCache[0] = new DataValueFloat(evals[0].getNumber() == evals[1].getNumber() ? 1 : 0); - case GREATER: - return evalCache[0] = new DataValueFloat(evals[0].getNumber() > evals[1].getNumber() ? 1 : 0); - case LESS: - return evalCache[0] = new DataValueFloat(evals[0].getNumber() < evals[1].getNumber() ? 1 : 0); - case GEQUAL: - return evalCache[0] = new DataValueFloat(evals[0].getNumber() >= evals[1].getNumber() ? 1 : 0); - case LEQUAL: - return evalCache[0] = new DataValueFloat(evals[0].getNumber() <= evals[1].getNumber() ? 1 : 0); - case CLAMP: - return evalCache[0] = new DataValueFloat(MathHelper.clamp(evals[0].getNumber(), evals[1].getNumber(), evals[2].getNumber())); + switch(op){ + case ADD: + return evalCache[0] = new DataValueFloat(evals[0].getNumber()+evals[1].getNumber()); + case SUB: + return evalCache[0] = new DataValueFloat(evals[0].getNumber()-evals[1].getNumber()); + case MULT: + return evalCache[0] = new DataValueFloat(evals[0].getNumber()*evals[1].getNumber()); + case DIV: + return evalCache[0] = new DataValueFloat(evals[0].getNumber()/evals[1].getNumber()); + case POW: + return evalCache[0] = new DataValueFloat((float)Math.pow(evals[0].getNumber(), evals[1].getNumber())); + case LOG: + return evalCache[0] = new DataValueFloat((float)(Math.log(evals[0].getNumber())/Math.log(evals[1].getNumber()))); + case EXP: + return evalCache[0] = new DataValueFloat((float)Math.exp(evals[0].getNumber())); + case SQRT: + return evalCache[0] = new DataValueFloat((float)Math.sqrt(evals[0].getNumber())); + case ABS: + return evalCache[0] = new DataValueFloat(Math.abs(evals[0].getNumber())); + case EQUAL: + return evalCache[0] = new DataValueFloat(evals[0].getNumber() == evals[1].getNumber() ? 1 : 0); + case GREATER: + return evalCache[0] = new DataValueFloat(evals[0].getNumber() > evals[1].getNumber() ? 1 : 0); + case LESS: + return evalCache[0] = new DataValueFloat(evals[0].getNumber() < evals[1].getNumber() ? 1 : 0); + case GEQUAL: + return evalCache[0] = new DataValueFloat(evals[0].getNumber() >= evals[1].getNumber() ? 1 : 0); + case LEQUAL: + return evalCache[0] = new DataValueFloat(evals[0].getNumber() <= evals[1].getNumber() ? 1 : 0); } return evalCache[0] = null; } - - public NodeMath setData(Operation op) { - setOperation(op); - return this; - } - + public void setOperation(Operation op){ this.op = op; for(NodeConnection c : inputs){ @@ -107,39 +97,33 @@ public void setOperation(Operation op){ this.inputs.clear(); String s1 = "Input 1"; String s2 = "Input 2"; - switch(op) { - case EQUAL: - case GREATER: - case LESS: - case GEQUAL: - case LEQUAL: - case ADD: - case SUB: - case MULT: - case DIV: - case MOD: - case POW: - case LOG: - if(op == Operation.POW){ - s1 = "Base"; - s2 = "Exponent"; - } else if(op == Operation.LOG){ - s1 = "Value"; - s2 = "Base"; - } - inputs.add(new NodeConnection(s1, this, inputs.size(), true, DataType.NUMBER, new DataValueFloat(0))); - inputs.add(new NodeConnection(s2, this, inputs.size(), true, DataType.NUMBER, new DataValueFloat(0))); - break; - case EXP: - case SQRT: - case ABS: - inputs.add(new NodeConnection("Input", this, inputs.size(), true, DataType.NUMBER, new DataValueFloat(0))); - break; - case CLAMP: - inputs.add(new NodeConnection("Value", this, inputs.size(), true, DataType.NUMBER, new DataValueFloat(0))); - inputs.add(new NodeConnection("Min", this, inputs.size(), true, DataType.NUMBER, new DataValueFloat(0))); - inputs.add(new NodeConnection("Max", this, inputs.size(), true, DataType.NUMBER, new DataValueFloat(0))); - break; + switch(op){ + case EQUAL: + case GREATER: + case LESS: + case GEQUAL: + case LEQUAL: + case ADD: + case SUB: + case MULT: + case DIV: + case POW: + case LOG: + if(op == Operation.POW){ + s1 = "Base"; + s2 = "Exponent"; + } else if(op == Operation.LOG){ + s1 = "Value"; + s2 = "Base"; + } + inputs.add(new NodeConnection(s1, this, inputs.size(), true, DataType.NUMBER, new DataValueFloat(0))); + inputs.add(new NodeConnection(s2, this, inputs.size(), true, DataType.NUMBER, new DataValueFloat(0))); + break; + case EXP: + case SQRT: + case ABS: + inputs.add(new NodeConnection("Input", this, inputs.size(), true, DataType.NUMBER, new DataValueFloat(0))); + break; } recalcSize(); } @@ -159,7 +143,6 @@ public static enum Operation { SUB("Subtract"), MULT("Multiply"), DIV("Divide"), - MOD("Modulo"), POW("Power"), LOG("Logarithm"), EXP("Exponent"), @@ -169,9 +152,8 @@ public static enum Operation { GREATER("Greater"), LESS("Less"), GEQUAL("Greater/equal"), - LEQUAL("Less/equal"), - CLAMP("Clamp"); - + LEQUAL("Less/equal"); + public String name; private Operation(String name){ this.name = name; diff --git a/src/main/java/com/hbm/inventory/control_panel/nodes/NodeSetVar.java b/src/main/java/com/hbm/inventory/control_panel/nodes/NodeSetVar.java index 549bc6482a..95b89b7695 100644 --- a/src/main/java/com/hbm/inventory/control_panel/nodes/NodeSetVar.java +++ b/src/main/java/com/hbm/inventory/control_panel/nodes/NodeSetVar.java @@ -97,16 +97,6 @@ public boolean doOutput(IControllable from, Map sendNodeMap, return false; } - public NodeSetVar setData(String varName, boolean isGlobal) { - this.varName = varName; - this.global = isGlobal; - DataValue val = global ? ctrl.getGlobalVar(varName) : ctrl.getVar(varName); - this.inputs.get(0).type = val.getType(); - this.inputs.get(0).setDefault(val); - return this; - } - - @Override public NodeType getType(){ return NodeType.OUTPUT; diff --git a/src/main/java/com/hbm/inventory/gui/GUICraneExtractor.java b/src/main/java/com/hbm/inventory/gui/GUICraneExtractor.java new file mode 100644 index 0000000000..ada2c59cab --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUICraneExtractor.java @@ -0,0 +1,94 @@ +package com.hbm.inventory.gui; + +import com.hbm.inventory.container.ContainerCraneExtractor; +import com.hbm.lib.RefStrings; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.network.TileEntityCraneExtractor; +import com.hbm.util.I18nUtil; +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.init.SoundEvents; +import net.minecraft.inventory.Slot; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.text.TextFormatting; +import org.lwjgl.opengl.GL11; + +import java.io.IOException; +import java.util.Arrays; + +public class GUICraneExtractor extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/storage/gui_crane_ejector.png"); + public TileEntityCraneExtractor ejector; + + public GUICraneExtractor(InventoryPlayer invPlayer, TileEntityCraneExtractor tedf) { + super(new ContainerCraneExtractor(invPlayer, tedf)); + ejector = tedf; + + this.xSize = 176; + this.ySize = 185; + } + + @Override + public void drawScreen(int x, int y, float interp) { + super.drawScreen(x, y, interp); + this.renderHoveredToolTip(x, y); + + if(this.mc.player.getHeldItemMainhand().isEmpty()) { + for(int i = 0; i < 9; ++i) { + Slot slot = (Slot) this.inventorySlots.inventorySlots.get(i); + + if(this.isMouseOverSlot(slot, x, y) && ejector.matcher.modes[i] != null) { + + String label = TextFormatting.YELLOW + ""; + + switch(ejector.matcher.modes[i]) { + case "exact": label += I18nUtil.resolveKey("desc.exact"); break; + case "wildcard": label += I18nUtil.resolveKey("desc.wildcard"); break; + default: label += I18nUtil.resolveKey("desc.oredictmatch")+" " + ejector.matcher.modes[i]; break; + } + + this.drawHoveringText(Arrays.asList(new String[] { TextFormatting.RED + I18nUtil.resolveKey("desc.rcchange"), label }), x, y - 30); + } + } + } + } + + @Override + protected void mouseClicked(int x, int y, int i) throws IOException { + super.mouseClicked(x, y, i); + + if(guiLeft + 128 <= x && guiLeft + 128 + 14 > x && guiTop + 30 < y && guiTop + 30 + 26 >= y) { + + mc.getSoundHandler().playSound(PositionedSoundRecord.getMasterRecord(SoundEvents.UI_BUTTON_CLICK, 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("isWhitelist", true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, ejector.getPos())); + } + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.ejector.hasCustomInventoryName() ? this.ejector.getInventoryName() : I18n.format(this.ejector.getInventoryName()); + this.fontRenderer.drawString(name, this.xSize / 2 - this.fontRenderer.getStringWidth(name) / 2, 6, 4210752); + this.fontRenderer.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + super.drawDefaultBackground(); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + if(ejector.isWhitelist) { + drawTexturedModalRect(guiLeft + 139, guiTop + 33, 176, 0, 3, 6); + } else { + drawTexturedModalRect(guiLeft + 139, guiTop + 47, 176, 0, 3, 6); + } + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUICraneInserter.java b/src/main/java/com/hbm/inventory/gui/GUICraneInserter.java new file mode 100644 index 0000000000..b6a22b4c91 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUICraneInserter.java @@ -0,0 +1,44 @@ +package com.hbm.inventory.gui; + +import com.hbm.inventory.container.ContainerCraneInserter; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.network.TileEntityCraneInserter; +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; + +public class GUICraneInserter extends GuiInfoContainer { + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/storage/gui_crane_inserter.png"); + private TileEntityCraneInserter inserter; + + public GUICraneInserter(InventoryPlayer invPlayer, TileEntityCraneInserter tedf) { + super(new ContainerCraneInserter(invPlayer, tedf)); + inserter = tedf; + + this.xSize = 176; + this.ySize = 185; + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.inserter.getDisplayName().getUnformattedText(); + this.fontRenderer.drawString(name, this.xSize / 2 - this.fontRenderer.getStringWidth(name) / 2, 6, 4210752); + this.fontRenderer.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + public void drawScreen(int x, int y, float interp) { + super.drawScreen(x, y, interp); + this.renderHoveredToolTip(x, y); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + super.drawDefaultBackground(); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineUUCreator.java b/src/main/java/com/hbm/inventory/gui/GUIMachineUUCreator.java index 626950eac6..31a4200d46 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineUUCreator.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineUUCreator.java @@ -62,9 +62,9 @@ protected void drawGuiContainerForegroundLayer( int i, int j) { String producedmb = ""; if(this.uu_creator.producedmb * 20 > 1000) - producedmb = Library.getShortNumber((long)this.uu_creator.producedmb * 20) + " mB/s"; + producedmb = Library.getShortNumber((long)this.uu_creator.producedmb * 20) + " mb/s"; else - producedmb = this.uu_creator.producedmb * 20 + " mB/s"; + producedmb = this.uu_creator.producedmb * 20 + " mb/s"; this.fontRenderer.drawString(producedmb, 123 - this.fontRenderer.getStringWidth(producedmb), 40, 0xE700FF); diff --git a/src/main/java/com/hbm/inventory/gui/GUINukeCustom.java b/src/main/java/com/hbm/inventory/gui/GUINukeCustom.java index 65c8c852f8..aa7d1513de 100644 --- a/src/main/java/com/hbm/inventory/gui/GUINukeCustom.java +++ b/src/main/java/com/hbm/inventory/gui/GUINukeCustom.java @@ -40,20 +40,20 @@ public void drawScreen(int mouseX, int mouseY, float partialTicks) { super.drawScreen(mouseX, mouseY, partialTicks); String[] text; - text = new String[] { TextFormatting.YELLOW + "Conventional Explosives (Radius " + testNuke.tnt + "/" + BombConfig.maxCustomTNTRadius + ")", + text = new String[] { TextFormatting.YELLOW + "Conventional Explosives (Level " + testNuke.tnt + "/" + BombConfig.maxCustomTNTRadius + ")", "Caps at " + BombConfig.maxCustomTNTRadius, "N²-like above level 75", TextFormatting.ITALIC + "\"Goes boom\"" }; this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 16, guiTop + 88, 18, 18, mouseX, mouseY, text); - text = new String[] { TextFormatting.YELLOW + "Nuclear (Radius " + testNuke.nuke + "(" + testNuke.getNukeAdj() + ")/"+ BombConfig.maxCustomNukeRadius + ")", + text = new String[] { TextFormatting.YELLOW + "Nuclear (Level " + testNuke.nuke + "(" + testNuke.getNukeAdj() + ")/"+ BombConfig.maxCustomNukeRadius + ")", "Requires TNT level 16", "Caps at " + BombConfig.maxCustomNukeRadius, "Has fallout", TextFormatting.ITALIC + "\"Now I am become death, destroyer of worlds.\"" }; this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 34, guiTop + 88, 18, 18, mouseX, mouseY, text); - text = new String[] { TextFormatting.YELLOW + "Thermonuclear (Radius " + testNuke.hydro + "(" + testNuke.getHydroAdj() + ")/" + BombConfig.maxCustomHydroRadius + ")", + text = new String[] { TextFormatting.YELLOW + "Thermonuclear (Level " + testNuke.hydro + "(" + testNuke.getHydroAdj() + ")/" + BombConfig.maxCustomHydroRadius + ")", "Requires nuclear level 100", "Caps at " + BombConfig.maxCustomHydroRadius, "Reduces added fallout by salted stage by 75%", @@ -61,13 +61,13 @@ public void drawScreen(int mouseX, int mouseY, float partialTicks) { TextFormatting.ITALIC + "the island of Elugelab disappear!\"" }; this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 52, guiTop + 88, 18, 18, mouseX, mouseY, text); - text = new String[] { TextFormatting.YELLOW + "Balefire (Radius " + testNuke.bale + "/(" + testNuke.getBaleAdj() + ")/" + BombConfig.maxCustomBaleRadius + ")", + text = new String[] { TextFormatting.YELLOW + "Balefire (Level " + testNuke.bale + "/(" + testNuke.getBaleAdj() + ")/" + BombConfig.maxCustomBaleRadius + ")", "Requires nuclear level 50", "Caps at " + BombConfig.maxCustomBaleRadius, TextFormatting.ITALIC + "\"Antimatter, Balefire, whatever.\"" }; this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 70, guiTop + 88, 18, 18, mouseX, mouseY, text); - text = new String[] { TextFormatting.YELLOW + "Salted (Radius " + testNuke.dirty + "/" + BombConfig.maxCustomDirtyRadius + ")", + text = new String[] { TextFormatting.YELLOW + "Salted (Level " + testNuke.dirty + "/" + BombConfig.maxCustomDirtyRadius + ")", "Extends fallout of nuclear and", "thermonuclear stages", "Caps at " + BombConfig.maxCustomDirtyRadius, @@ -75,14 +75,14 @@ public void drawScreen(int mouseX, int mouseY, float partialTicks) { this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 53, guiTop + 83, 25, 5, mouseX, mouseY, text); this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 53, guiTop + 106, 25, 5, mouseX, mouseY, text); - text = new String[] { TextFormatting.YELLOW + "Schrabidium (Radius " + testNuke.schrab + "(" + testNuke.getSchrabAdj() + ")/" + BombConfig.maxCustomSchrabRadius + ")", + text = new String[] { TextFormatting.YELLOW + "Schrabidium (Level " + testNuke.schrab + "(" + testNuke.getSchrabAdj() + ")/" + BombConfig.maxCustomSchrabRadius + ")", "Requires nuclear level 50", "Caps at " + BombConfig.maxCustomSchrabRadius, TextFormatting.ITALIC + "\"For the hundredth time,", TextFormatting.ITALIC + "you can't bypass these caps!\"" }; this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 88, guiTop + 88, 18, 18, mouseX, mouseY, text); - text = new String[] { TextFormatting.YELLOW + "Solinium (Radius " + testNuke.sol + "(" + testNuke.getSolAdj() + ")/" + BombConfig.maxCustomSolRadius + ")", + text = new String[] { TextFormatting.YELLOW + "Solinium (Level " + testNuke.sol + "(" + testNuke.getSolAdj() + ")/" + BombConfig.maxCustomSolRadius + ")", "Requires nuclear level 25", "Caps at " + BombConfig.maxCustomSolRadius, TextFormatting.ITALIC + "\"For the hundredth time,", diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index a825521c3c..546a4bbcc2 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -642,6 +642,12 @@ public class ModItems { public static final Item upgrade_crystallizer = new ItemMachineUpgrade("upgrade_crystallizer").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab); public static final Item upgrade_nullifier = new ItemMachineUpgrade("upgrade_nullifier", UpgradeType.NULLIFIER, 1).setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab); public static final Item upgrade_screm = new ItemMachineUpgrade("upgrade_screm", UpgradeType.SCREAM, 1).setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab); + public static final Item upgrade_ejector_1 = new ItemMachineUpgrade("upgrade_ejector_1").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab); + public static final Item upgrade_ejector_2 = new ItemMachineUpgrade("upgrade_ejector_2").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab); + public static final Item upgrade_ejector_3 = new ItemMachineUpgrade("upgrade_ejector_3").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab); + public static final Item upgrade_stack_1 = new ItemMachineUpgrade("upgrade_stack_1", UpgradeType.SPEED, 1).setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab); + public static final Item upgrade_stack_2 = new ItemMachineUpgrade("upgrade_stack_2", UpgradeType.SPEED, 1).setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab); + public static final Item upgrade_stack_3 = new ItemMachineUpgrade("upgrade_stack_3", UpgradeType.SPEED, 1).setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab); //Fluid handling items @@ -706,7 +712,7 @@ public class ModItems { public static final Item hazmat_paa_legs = new ArmorHazmat(MainRegistry.enumArmorMaterialPaa, -1, EntityEquipmentSlot.LEGS, "hazmat_paa_legs").setMaxStackSize(1); public static final Item hazmat_paa_boots = new ArmorHazmat(MainRegistry.enumArmorMaterialPaa, -1, EntityEquipmentSlot.FEET, "hazmat_paa_boots").setMaxStackSize(1); - public static final Item paa_helmet = new ArmorFSB(MainRegistry.enumArmorMaterialPaa, -1, EntityEquipmentSlot.HEAD, RefStrings.MODID + ":textures/armor/paa_1.png", "paa_helmet").setCap(4F).setMod(0.2F).setBlastProtection(0.5F).addEffect(new PotionEffect(MobEffects.HASTE, 30, 0)).addEffect(new PotionEffect(MobEffects.SPEED, 30, 0)).addEffect(new PotionEffect(MobEffects.WATER_BREATHING, 30, 0)).setFireproof(true).setMaxStackSize(1); + public static final Item paa_helmet = new ArmorFSB(MainRegistry.enumArmorMaterialPaa, -1, EntityEquipmentSlot.HEAD, RefStrings.MODID + ":textures/armor/paa_1.png", "paa_helmet").setCap(4F).setMod(0.2F).setBlastProtection(0.5F).addEffect(new PotionEffect(MobEffects.HASTE, 20, 0)).addEffect(new PotionEffect(MobEffects.SPEED, 20, 0)).addEffect(new PotionEffect(MobEffects.WATER_BREATHING, 20, 0)).setFireproof(true).setMaxStackSize(1); public static final Item paa_plate = new ArmorFSB(MainRegistry.enumArmorMaterialPaa, -1, EntityEquipmentSlot.CHEST, RefStrings.MODID + ":textures/armor/paa_1.png", "paa_plate").cloneStats((ArmorFSB) paa_helmet).setMaxStackSize(1); public static final Item paa_legs = new ArmorFSB(MainRegistry.enumArmorMaterialPaa, -1, EntityEquipmentSlot.LEGS, RefStrings.MODID + ":textures/armor/paa_2.png", "paa_legs").cloneStats((ArmorFSB) paa_helmet).setMaxStackSize(1); public static final Item paa_boots = new ArmorFSB(MainRegistry.enumArmorMaterialPaa, -1, EntityEquipmentSlot.FEET, RefStrings.MODID + ":textures/armor/paa_1.png", "paa_boots").cloneStats((ArmorFSB) paa_helmet).setMaxStackSize(1); @@ -1680,6 +1686,9 @@ public class ModItems { public static final Item ball_dynamite = new ItemHazard("ball_dynamite").addExplosive(2).toItem().setCreativeTab(MainRegistry.partsTab); public static final Item ball_tnt = new ItemHazard("ball_tnt").addExplosive(3).toItem().setCreativeTab(MainRegistry.partsTab); public static final Item ball_fireclay = new ItemBase("ball_fireclay").setCreativeTab(MainRegistry.partsTab); + public static final Item piston_pneumatic = new ItemBase("piston_pneumatic").setCreativeTab(MainRegistry.partsTab); + public static final Item piston_hydraulic = new ItemBase("piston_hydraulic").setCreativeTab(MainRegistry.partsTab); + public static final Item piston_electro = new ItemBase("piston_electro").setCreativeTab(MainRegistry.partsTab); //BedrockOres public static final Item ore_bedrock = new ItemBedrockOre("ore_bedrock").setCreativeTab(MainRegistry.partsTab); diff --git a/src/main/java/com/hbm/items/armor/ItemModGasmask.java b/src/main/java/com/hbm/items/armor/ItemModGasmask.java index b42efaf3d2..a55fd36f4d 100644 --- a/src/main/java/com/hbm/items/armor/ItemModGasmask.java +++ b/src/main/java/com/hbm/items/armor/ItemModGasmask.java @@ -57,7 +57,7 @@ public void addInformation(ItemStack stack, World worldIn, List list, IT List haz = getBlacklist(stack); if(!haz.isEmpty()) { - list.add("§cWill never protect against:"); + list.add(TextFormatting.RED + I18nUtil.resolveKey("hazard.neverProtects")); for(HazardClass clazz : haz) { list.add("§4 -" + I18nUtil.resolveKey(clazz.lang)); diff --git a/src/main/java/com/hbm/items/machine/ItemAssemblyTemplate.java b/src/main/java/com/hbm/items/machine/ItemAssemblyTemplate.java index e0af9e6385..d58dfcac64 100644 --- a/src/main/java/com/hbm/items/machine/ItemAssemblyTemplate.java +++ b/src/main/java/com/hbm/items/machine/ItemAssemblyTemplate.java @@ -120,14 +120,14 @@ public void addInformation(ItemStack stack, World worldIn, List list, IT ItemStack output = out.toStack(); list.add("§l" + I18nUtil.resolveKey("info.template_out")); - list.add(" §a"+ output.getCount() + "x " + output.getDisplayName()); + list.add("§a"+ output.getCount() + "x " + output.getDisplayName()); list.add("§l" + I18nUtil.resolveKey("info.template_in_p")); for(Object o : in) { if(o instanceof ComparableStack) { ItemStack input = ((ComparableStack)o).toStack(); - list.add(" §c"+ input.getCount() + "x " + input.getDisplayName()); + list.add("§c"+ input.getCount() + "x " + input.getDisplayName()); } else if(o instanceof OreDictStack) { OreDictStack input = (OreDictStack) o; @@ -135,7 +135,7 @@ public void addInformation(ItemStack stack, World worldIn, List list, IT if(ores.size() > 0) { ItemStack inStack = ores.get((int) (Math.abs(System.currentTimeMillis() / 1000) % ores.size())); - list.add(" §c"+ input.count() + "x " + inStack.getDisplayName()); + list.add("§c"+ input.count() + "x " + inStack.getDisplayName()); } else { list.add("I AM ERROR - No OrdDict match found for "+o.toString()); } @@ -143,7 +143,7 @@ public void addInformation(ItemStack stack, World worldIn, List list, IT } list.add("§l" + I18nUtil.resolveKey("info.template_time")); - list.add(" §3" + Math.floor((float)(getProcessTime(stack)) / 20 * 100) / 100 + " " + I18nUtil.resolveKey("info.template_seconds")); + list.add("§3" + Math.floor((float)(getProcessTime(stack)) / 20 * 100) / 100 + " " + I18nUtil.resolveKey("info.template_seconds")); } public static int getProcessTime(ItemStack stack) { diff --git a/src/main/java/com/hbm/items/machine/ItemBattery.java b/src/main/java/com/hbm/items/machine/ItemBattery.java index 8415de77c1..d4a4b7ce42 100644 --- a/src/main/java/com/hbm/items/machine/ItemBattery.java +++ b/src/main/java/com/hbm/items/machine/ItemBattery.java @@ -7,11 +7,13 @@ import com.hbm.main.MainRegistry; import api.hbm.energy.IBatteryItem; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.item.EnumRarity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; public class ItemBattery extends Item implements IBatteryItem { @@ -46,14 +48,14 @@ public void addInformation(ItemStack stack, World worldIn, List list, IT stack.getItem() != ModItems.energy_core) { - list.add("§6Energy stored: " + Library.getShortNumber(charge) + "/" + Library.getShortNumber(maxCharge) + "HE§r"); + list.add(TextFormatting.GOLD + I18nUtil.resolveKey("desc.energystore") + " " + Library.getShortNumber(charge) + "/" + Library.getShortNumber(maxCharge) + "HE§r"); } else { String charge1 = Library.getShortNumber((charge * 100) / this.maxCharge); - list.add("§2Charge: " + charge1 + "%§r"); + list.add(TextFormatting.DARK_GREEN + I18nUtil.resolveKey("desc.energychargecur") + " " + charge1 + "%§r"); list.add("(" + Library.getShortNumber(charge) + "/" + Library.getShortNumber(maxCharge) + "HE)"); } - list.add("§aCharge rate: " + Library.getShortNumber(chargeRate * 20) + "HE/s§r"); - list.add("§cDischarge rate: " + Library.getShortNumber(dischargeRate * 20) + "HE/s§r"); + list.add(TextFormatting.GREEN + I18nUtil.resolveKey("desc.energychargerate") + " " + Library.getShortNumber(chargeRate * 20) + "HE/" + I18nUtil.resolveKey("desc.second") + "§r"); + list.add(TextFormatting.RED + I18nUtil.resolveKey("desc.energydchargerate") + " " + Library.getShortNumber(dischargeRate * 20) + "HE/" + I18nUtil.resolveKey("desc.second") + "§r"); } @Override diff --git a/src/main/java/com/hbm/items/machine/ItemDrillbit.java b/src/main/java/com/hbm/items/machine/ItemDrillbit.java index aa419a6b7c..b85732cf71 100644 --- a/src/main/java/com/hbm/items/machine/ItemDrillbit.java +++ b/src/main/java/com/hbm/items/machine/ItemDrillbit.java @@ -4,9 +4,11 @@ import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; public class ItemDrillbit extends Item { @@ -27,11 +29,11 @@ public ItemDrillbit(EnumDrillType drillType, String s) { public void addInformation(ItemStack stack, World worldIn, List list, ITooltipFlag flagIn) { EnumDrillType type = ((ItemDrillbit)stack.getItem()).drillType; if(type == null) return; - list.add("§eSpeed: " + ((int) (type.speed * 100)) + "%"); - list.add("§eTier: " + type.tier); - if(type.fortune > 0) list.add("§dFortune " + type.fortune); - if(type.vein) list.add("§aVein miner"); - if(type.silk) list.add("§aSilk touch"); + list.add(TextFormatting.YELLOW + I18nUtil.resolveKey("desc.speed") + " " + ((int) (type.speed * 100)) + "%"); + list.add(TextFormatting.YELLOW + I18nUtil.resolveKey("desc.tier") + " " + type.tier); + if(type.fortune > 0) list.add(TextFormatting.LIGHT_PURPLE + I18nUtil.resolveKey("desc.fortune") + " " + type.fortune); + if(type.vein) list.add(TextFormatting.GREEN + I18nUtil.resolveKey("desc.veinminer")); + if(type.silk) list.add(TextFormatting.GREEN + I18nUtil.resolveKey("desc.silktouch")); } public static enum EnumDrillType { diff --git a/src/main/java/com/hbm/items/machine/ItemFFFluidDuct.java b/src/main/java/com/hbm/items/machine/ItemFFFluidDuct.java index 95d4f12903..7b7c852539 100644 --- a/src/main/java/com/hbm/items/machine/ItemFFFluidDuct.java +++ b/src/main/java/com/hbm/items/machine/ItemFFFluidDuct.java @@ -7,6 +7,7 @@ import com.hbm.config.GeneralConfig; import com.hbm.tileentity.conductor.TileEntityFFFluidDuctMk2; +import com.hbm.util.I18nUtil; import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.creativetab.CreativeTabs; @@ -93,7 +94,7 @@ public EnumActionResult onItemUse(EntityPlayer player, World world, BlockPos pos @Override public void addInformation(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) { - tooltip.add("Right click with screwdriver to toggle extraction"); + tooltip.add(I18nUtil.resolveKey("desc.extraction")); } public static Fluid getFluidFromStack(ItemStack stack){ diff --git a/src/main/java/com/hbm/items/machine/ItemFluidTank.java b/src/main/java/com/hbm/items/machine/ItemFluidTank.java index 48c2d2e571..c008d5de43 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidTank.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidTank.java @@ -117,7 +117,7 @@ else if(this == ModItems.fluid_barrel_full) public void addInformation(ItemStack stack, World worldIn, List list, ITooltipFlag flagIn) { FluidStack f = FluidUtil.getFluidContained(stack); - String s = (f == null ? "0" : f.amount) + "/" + cap + " mB"; + String s = (f == null ? "0" : f.amount) + "/" + cap + " mb"; if(stack.getCount() > 1) s = stack.getCount() + "x " + s; list.add(s); diff --git a/src/main/java/com/hbm/items/machine/ItemForgeFluidIdentifier.java b/src/main/java/com/hbm/items/machine/ItemForgeFluidIdentifier.java index 7febbee803..a62b70568f 100644 --- a/src/main/java/com/hbm/items/machine/ItemForgeFluidIdentifier.java +++ b/src/main/java/com/hbm/items/machine/ItemForgeFluidIdentifier.java @@ -79,7 +79,7 @@ public void addInformation(ItemStack stack, World worldIn, List list, IT } list.add(TextFormatting.YELLOW + I18nUtil.resolveKey("info.templatefolder")); list.add(""); - list.add("Universal fluid identifier for:"); + list.add(I18nUtil.resolveKey("desc.unfluidid")); if (f != null) list.add(" " + f.getLocalizedName(new FluidStack(f, 1000))); else diff --git a/src/main/java/com/hbm/items/machine/ItemFuelRod.java b/src/main/java/com/hbm/items/machine/ItemFuelRod.java index d5443ae029..37134b8b59 100644 --- a/src/main/java/com/hbm/items/machine/ItemFuelRod.java +++ b/src/main/java/com/hbm/items/machine/ItemFuelRod.java @@ -5,6 +5,7 @@ import com.hbm.items.special.ItemHazard; import com.hbm.lib.Library; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -31,15 +32,15 @@ public ItemFuelRod(float radiation, boolean blinding, int life, int heat, String @Override public void addInformation(ItemStack stack, World world, List tooltip, ITooltipFlag flagIn) { - tooltip.add(TextFormatting.GREEN + "[Radioactive]"); - tooltip.add(TextFormatting.YELLOW + "" + this.irad + " RAD/s"); + tooltip.add(TextFormatting.GREEN + "["+ I18nUtil.resolveKey("trait.radioactive") +"]"); + tooltip.add(TextFormatting.YELLOW + "" + this.irad + " "+I18nUtil.resolveKey("desc.rads")); if(this.iblind){ - tooltip.add(TextFormatting.DARK_AQUA + "[Blinding]"); + tooltip.add(TextFormatting.DARK_AQUA + "["+I18nUtil.resolveKey("trait.blinding")+"]"); } - tooltip.add(TextFormatting.GOLD + "[Reactor Fuel Rod]"); + tooltip.add(TextFormatting.GOLD + "["+I18nUtil.resolveKey("trait.reactorrod")+"]"); - tooltip.add(TextFormatting.DARK_AQUA + " Generates " + heat + " heat per tick"); - tooltip.add(TextFormatting.DARK_AQUA + " Lasts " + Library.getShortNumber(lifeTime) + " ticks"); + tooltip.add(TextFormatting.DARK_AQUA + " "+I18nUtil.resolveKey("desc.generates")+" " + heat + " "+I18nUtil.resolveKey("desc.heatpt")); + tooltip.add(TextFormatting.DARK_AQUA + " "+I18nUtil.resolveKey("desc.lasts")+" " + Library.getShortNumber(lifeTime) + " "+I18nUtil.resolveKey("desc.ticks")); } @Override diff --git a/src/main/java/com/hbm/items/machine/ItemLens.java b/src/main/java/com/hbm/items/machine/ItemLens.java index 04abc24b42..eadf89b011 100644 --- a/src/main/java/com/hbm/items/machine/ItemLens.java +++ b/src/main/java/com/hbm/items/machine/ItemLens.java @@ -5,10 +5,12 @@ import com.hbm.items.ModItems; import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; public class ItemLens extends Item { @@ -33,11 +35,11 @@ public void addInformation(ItemStack stack, World worldIn, List tooltip, double percent = (int)((maxDamage - damage) * 100000000D / maxDamage) / 1000000D; - tooltip.add("§3Durability in ticks: " + (maxDamage - damage) + " / " + maxDamage); - tooltip.add("§3Durability in Percent: " + percent + "%"); + tooltip.add(TextFormatting.DARK_AQUA+I18nUtil.resolveKey("desc.durticks")+" " + (maxDamage - damage) + " / " + maxDamage); + tooltip.add(TextFormatting.DARK_AQUA+I18nUtil.resolveKey("desc.durpercents")+" " + percent + "%"); - tooltip.add("§eForce Field Modifier: " + (fieldMod >= 1 ? "§a+" : "§c") + (Math.round(fieldMod * 1000) * .10 - 100) + "%"); - tooltip.add("§ePower Drain Modifier: " + (drainMod >= 1 ? "§c+" : "§a") + (Math.round(drainMod * 1000) * .10 - 100) + "%"); + tooltip.add(TextFormatting.YELLOW+I18nUtil.resolveKey("desc.fieldmodifier")+" " + (fieldMod >= 1 ? "§a+" : "§c") + (Math.round(fieldMod * 1000) * .10 - 100) + "%"); + tooltip.add(TextFormatting.YELLOW+I18nUtil.resolveKey("desc.powdrainmodifier")+" " + (drainMod >= 1 ? "§c+" : "§a") + (Math.round(drainMod * 1000) * .10 - 100) + "%"); } @Override diff --git a/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java b/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java index b289fe0b78..90d9a41dc6 100644 --- a/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java +++ b/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java @@ -7,11 +7,13 @@ import com.hbm.blocks.ModBlocks; import com.google.common.collect.Sets; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; public class ItemMachineUpgrade extends Item { @@ -64,222 +66,257 @@ public static int getSpeed(ItemStack stack){ public void addInformation(ItemStack stack, World worldIn, List list, ITooltipFlag flagIn) { if(this == ModItems.upgrade_speed_1) { - list.add("Mining Drill:"); - list.add(" Delay -15 / Consumption +300"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade1")); + list.add(I18nUtil.resolveKey("desc.upgradesp11")); list.add(""); - list.add("Assembly Machine:"); - list.add(" Delay -25% / Consumption +200%"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade2")); + list.add(I18nUtil.resolveKey("desc.upgradesp12")); list.add(""); - list.add("Chemical Plant:"); - list.add(" Delay -25% / Consumption +200%"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade3")); + list.add(I18nUtil.resolveKey("desc.upgradesp13")); list.add(""); - list.add("Crystallizer"); - list.add(" Delay -10% / Consumption +1000"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade4")); + list.add(I18nUtil.resolveKey("desc.upgradesp14")); list.add(""); - list.add("Cyclotron"); - list.add(" Speed x2"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade5")); + list.add(I18nUtil.resolveKey("desc.upgradesp15")); } - + if(this == ModItems.upgrade_speed_2) { - list.add("Mining Drill:"); - list.add(" Delay -30 / Consumption +600"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade1")); + list.add(I18nUtil.resolveKey("desc.upgradesp21")); list.add(""); - list.add("Assembly Machine:"); - list.add(" Delay -50% / Consumption +500%"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade2")); + list.add(I18nUtil.resolveKey("desc.upgradesp22")); list.add(""); - list.add("Chemical Plant:"); - list.add(" Delay -50% / Consumption +500%"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade3")); + list.add(I18nUtil.resolveKey("desc.upgradesp23")); list.add(""); - list.add("Crystallizer"); - list.add(" Delay -20% / Consumption +2000"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade4")); + list.add(I18nUtil.resolveKey("desc.upgradesp24")); list.add(""); - list.add("Cyclotron"); - list.add(" Speed x3"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade5")); + list.add(I18nUtil.resolveKey("desc.upgradesp25")); } if(this == ModItems.upgrade_speed_3) { - list.add("Mining Drill:"); - list.add(" Delay -45 / Consumption +900"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade1")); + list.add(I18nUtil.resolveKey("desc.upgradesp31")); list.add(""); - list.add("Assembly Machine:"); - list.add(" Delay -75% / Consumption +800%"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade2")); + list.add(I18nUtil.resolveKey("desc.upgradesp32")); list.add(""); - list.add("Chemical Plant:"); - list.add(" Delay -75% / Consumption +800%"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade3")); + list.add(I18nUtil.resolveKey("desc.upgradesp33")); list.add(""); - list.add("Crystallizer"); - list.add(" Speed Delay -30% / Consumption +3000"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade4")); + list.add(I18nUtil.resolveKey("desc.upgradesp34")); list.add(""); - list.add("Cyclotron"); - list.add(" Speed x4"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade5")); + list.add(I18nUtil.resolveKey("desc.upgradesp35")); } if(this == ModItems.upgrade_effect_1) { - list.add("Mining Drill:"); - list.add(" Radius +1 / Consumption +80"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade1")); + list.add(I18nUtil.resolveKey("desc.upgradeef11")); list.add(""); - list.add("Crystallizer"); - list.add(" +5% chance of not consuming an item / Acid consumption +1000mB"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade4")); + list.add(I18nUtil.resolveKey("desc.upgradeef12")); list.add(""); - list.add("Cyclotron"); - list.add(" -50% chance of incrementing overheat counter"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade5")); + list.add(I18nUtil.resolveKey("desc.upgradeef13")); } if(this == ModItems.upgrade_effect_2) { - list.add("Mining Drill:"); - list.add(" Radius +2 / Consumption +160"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade1")); + list.add(I18nUtil.resolveKey("desc.upgradeef21")); list.add(""); - list.add("Crystallizer"); - list.add(" +10% chance of not consuming an item / Acid consumption +2000mB"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade4")); + list.add(I18nUtil.resolveKey("desc.upgradeef22")); list.add(""); - list.add("Cyclotron"); - list.add(" -66% chance of incrementing overheat counter"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade5")); + list.add(I18nUtil.resolveKey("desc.upgradeef23")); } if(this == ModItems.upgrade_effect_3) { - list.add("Mining Drill:"); - list.add(" Radius +3 / Consumption +240"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade1")); + list.add(I18nUtil.resolveKey("desc.upgradeef31")); list.add(""); - list.add("Crystallizer"); - list.add(" +15% chance of not consuming an item / Acid consumption +3000mB"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade4")); + list.add(I18nUtil.resolveKey("desc.upgradeef32")); list.add(""); - list.add("Cyclotron"); - list.add(" -75% chance of incrementing overheat counter"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade5")); + list.add(I18nUtil.resolveKey("desc.upgradeef33")); } if(this == ModItems.upgrade_power_1) { - list.add("Assembly Machine:"); - list.add(" Consumption -20% / Delay +25%"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade2")); + list.add(I18nUtil.resolveKey("desc.upgradecs11")); list.add(""); - list.add("Chemical Plant:"); - list.add(" Consumption -20% / Delay +25%"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade3")); + list.add(I18nUtil.resolveKey("desc.upgradecs11")); list.add(""); - list.add("Cyclotron"); - list.add(" Consumption -100k"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade5")); + list.add(I18nUtil.resolveKey("desc.upgradecs12")); } if(this == ModItems.upgrade_power_2) { - list.add("Assembly Machine:"); - list.add(" Consumption -60% / Delay +50%"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade2")); + list.add(I18nUtil.resolveKey("desc.upgradecs21")); list.add(""); - list.add("Chemical Plant:"); - list.add(" Consumption -60% / Delay +50%"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade3")); + list.add(I18nUtil.resolveKey("desc.upgradecs21")); list.add(""); - list.add("Cyclotron"); - list.add(" Consumption -200k"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade5")); + list.add(I18nUtil.resolveKey("desc.upgradecs22")); } if(this == ModItems.upgrade_power_3) { - list.add("Assembly Machine:"); - list.add(" Consumption -80% / Delay +100%"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade2")); + list.add(I18nUtil.resolveKey("desc.upgradecs31")); list.add(""); - list.add("Chemical Plant:"); - list.add(" Consumption -80% / Delay +100%"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade3")); + list.add(I18nUtil.resolveKey("desc.upgradecs31")); list.add(""); - list.add("Cyclotron"); - list.add(" Consumption -300k"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade5")); + list.add(I18nUtil.resolveKey("desc.upgradecs32")); } if(this == ModItems.upgrade_fortune_1) { - list.add("Mining Drill:"); - list.add(" Fortune +1 / Delay +15"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade1")); + list.add(I18nUtil.resolveKey("desc.upgradeft1")); } if(this == ModItems.upgrade_fortune_2) { - list.add("Mining Drill:"); - list.add(" Fortune +2 / Delay +30"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade1")); + list.add(I18nUtil.resolveKey("desc.upgradeft2")); } if(this == ModItems.upgrade_fortune_3) { - list.add("Mining Drill:"); - list.add(" Fortune +3 / Delay +45"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade1")); + list.add(I18nUtil.resolveKey("desc.upgradeft3")); } if(this == ModItems.upgrade_afterburn_1) { - list.add("Turbofan:"); - list.add(" Production x2 / Consumption x2.5"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade6")); + list.add(I18nUtil.resolveKey("desc.upgradeaf1")); } if(this == ModItems.upgrade_afterburn_2) { - list.add("Turbofan:"); - list.add(" Production x3 / Consumption x5"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade6")); + list.add(I18nUtil.resolveKey("desc.upgradeaf2")); } if(this == ModItems.upgrade_afterburn_3) { - list.add("Turbofan:"); - list.add(" Production x4 / Consumption x7.5"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade6")); + list.add(I18nUtil.resolveKey("desc.upgradeaf3")); } if(this == ModItems.upgrade_radius) { - list.add("Forcefield Range Upgrade"); - list.add(" Radius +16 / Consumption +500"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade7")); + list.add(I18nUtil.resolveKey("desc.upgraderd")); list.add(""); - list.add("Stacks to 16"); + list.add(I18nUtil.resolveKey("desc.upgradestack")); } if(this == ModItems.upgrade_health) { - list.add("Forcefield Health Upgrade"); - list.add(" Max. Health +50 / Consumption +250"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade8")); + list.add(I18nUtil.resolveKey("desc.upgradeht")); list.add(""); - list.add("Stacks to 16"); + list.add(I18nUtil.resolveKey("desc.upgradestack")); } if(this == ModItems.upgrade_smelter) { - list.add("Mining Laser Upgrade"); - list.add(" Smelts blocks. Easy enough."); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade9")); + list.add(I18nUtil.resolveKey("desc.upgrade12")); } if(this == ModItems.upgrade_shredder) { - list.add("Mining Laser Upgrade"); - list.add(" Crunches ores"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade9")); + list.add(I18nUtil.resolveKey("desc.upgrade13")); } if(this == ModItems.upgrade_centrifuge) { - list.add("Mining Laser Upgrade"); - list.add(" Hopefully self-explanatory"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade9")); + list.add(I18nUtil.resolveKey("desc.upgrade21")); } if(this == ModItems.upgrade_crystallizer) { - list.add("Mining Laser Upgrade"); - list.add(" Your new best friend"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade9")); + list.add(I18nUtil.resolveKey("desc.upgrade14")); } if(this == ModItems.upgrade_screm) { - list.add("Mining Laser Upgrade"); - list.add(" It's like in Super Mario where all blocks are"); - list.add(" actually Toads, but here it's Half-Life scientists"); - list.add(" and they scream. A lot."); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade9")); + list.add(I18nUtil.resolveKey("desc.upgrade15")); + list.add(I18nUtil.resolveKey("desc.upgrade16")); + list.add(I18nUtil.resolveKey("desc.upgrade17")); list.add(""); - list.add("Mixer Upgrade"); - list.add(" Allows for UU-Matter processing."); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade11")); + list.add(I18nUtil.resolveKey("desc.upgrade18")); } if(this == ModItems.upgrade_nullifier) { - list.add("Mining Upgrade"); - list.add(" 50% chance to override worthless items with /dev/zero"); - list.add(" 50% chance to move worthless items to /dev/null"); + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade10")); + list.add(I18nUtil.resolveKey("desc.upgrade19")); + } + + if(this == ModItems.upgrade_ejector_1) + { + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade22")); + list.add(I18nUtil.resolveKey("desc.upgradeej1")); + } + + if(this == ModItems.upgrade_ejector_2) + { + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade22")); + list.add(I18nUtil.resolveKey("desc.upgradeej2")); + } + + if(this == ModItems.upgrade_ejector_3) + { + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade22")); + list.add(I18nUtil.resolveKey("desc.upgradeej3")); + } + + if(this == ModItems.upgrade_stack_1) + { + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade22")); + list.add(I18nUtil.resolveKey("desc.upgradeej4")); + } + + if(this == ModItems.upgrade_stack_2) + { + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade22")); + list.add(I18nUtil.resolveKey("desc.upgradeej5")); + } + + if(this == ModItems.upgrade_stack_3) + { + list.add(TextFormatting.GOLD+I18nUtil.resolveKey("desc.upgrade22")); + list.add(I18nUtil.resolveKey("desc.upgradeej6")); } } diff --git a/src/main/java/com/hbm/items/machine/ItemRBMKRod.java b/src/main/java/com/hbm/items/machine/ItemRBMKRod.java index a969c67a70..7a2a9e66fb 100644 --- a/src/main/java/com/hbm/items/machine/ItemRBMKRod.java +++ b/src/main/java/com/hbm/items/machine/ItemRBMKRod.java @@ -268,15 +268,15 @@ public double provideHeat(World world, ItemStack stack, double heat, double mod) } public static enum EnumBurnFunc { - PASSIVE(TextFormatting.DARK_GREEN + "SAFE / PASSIVE"), //const, no reactivity - PLATEU(TextFormatting.GREEN + "SAFE / EULER"), //(1 - e^(-x/25)) * reactivity * 100 - SIGMOID(TextFormatting.GREEN + "SAFE / SIGMOID"), //100 / (1 + e^(-(x - 50) / 10)) <- tiny amount of reactivity at x=0 ! - LOG_TEN(TextFormatting.YELLOW + "MEDIUM / LOGARITHMIC"), //log10(x + 1) * reactivity * 50 - SQUARE_ROOT(TextFormatting.YELLOW + "MEDIUM / SQUARE ROOT"), //sqrt(x) * 10 * reactivity - ARCH(TextFormatting.GOLD + "RISKY / NEGATIVE-QUADRATIC"), //x-(x²/archLength) * reactivity - LINEAR(TextFormatting.RED + "DANGEROUS / LINEAR"), //x * reactivity - QUADRATIC(TextFormatting.DARK_RED + "DANGEROUS / QUADRATIC"), //x^2 / 100 * reactivity - EXPERIMENTAL(TextFormatting.WHITE + "EXPERIMENTAL / SINE SLOPE"); //x * (sin(x) + 1) + PASSIVE(TextFormatting.DARK_GREEN + I18nUtil.resolveKey("trait.rbmx.safe1")), //const, no reactivity + PLATEU(TextFormatting.GREEN + I18nUtil.resolveKey("trait.rbmx.safe2")), //(1 - e^(-x/25)) * reactivity * 100 + SIGMOID(TextFormatting.GREEN + I18nUtil.resolveKey("trait.rbmx.safe3")), //100 / (1 + e^(-(x - 50) / 10)) <- tiny amount of reactivity at x=0 ! + LOG_TEN(TextFormatting.YELLOW + I18nUtil.resolveKey("trait.rbmx.medium1")), //log10(x + 1) * reactivity * 50 + SQUARE_ROOT(TextFormatting.YELLOW + I18nUtil.resolveKey("trait.rbmx.medium2")), //sqrt(x) * 10 * reactivity + ARCH(TextFormatting.GOLD + I18nUtil.resolveKey("trait.rbmx.risky")), //x-(x²/archLength) * reactivity + LINEAR(TextFormatting.RED + I18nUtil.resolveKey("trait.rbmx.dangerous1")), //x * reactivity + QUADRATIC(TextFormatting.DARK_RED + I18nUtil.resolveKey("trait.rbmx.dangerous2")), //x^2 / 100 * reactivity + EXPERIMENTAL(TextFormatting.WHITE + I18nUtil.resolveKey("trait.rbmx.experimental")); //x * (sin(x) + 1) public String title = ""; diff --git a/src/main/java/com/hbm/items/machine/ItemSatChip.java b/src/main/java/com/hbm/items/machine/ItemSatChip.java index f3185b7ef1..da35857bcb 100644 --- a/src/main/java/com/hbm/items/machine/ItemSatChip.java +++ b/src/main/java/com/hbm/items/machine/ItemSatChip.java @@ -4,6 +4,7 @@ import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -21,7 +22,7 @@ public ItemSatChip(String s) { @Override public void addInformation(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) { - tooltip.add("Satellite frequency: " + getFreq(stack)); + tooltip.add(I18nUtil.resolveKey("desc.satellitefr") +" " + getFreq(stack)); } public static int getFreq(ItemStack stack) { diff --git a/src/main/java/com/hbm/items/machine/ItemStamp.java b/src/main/java/com/hbm/items/machine/ItemStamp.java index b52fcaf405..9d4710f4f6 100644 --- a/src/main/java/com/hbm/items/machine/ItemStamp.java +++ b/src/main/java/com/hbm/items/machine/ItemStamp.java @@ -5,6 +5,7 @@ import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -45,6 +46,6 @@ public void addInformation(ItemStack stack, World worldIn, List tooltip, this == ModItems.stamp_stone_circuit || this == ModItems.stamp_stone_plate || this == ModItems.stamp_stone_wire) - tooltip.add("[CREATED USING TEMPLATE FOLDER]"); + tooltip.add("§e" + I18nUtil.resolveKey("info.templatefolder")); } } diff --git a/src/main/java/com/hbm/items/machine/ItemTemplateFolder.java b/src/main/java/com/hbm/items/machine/ItemTemplateFolder.java index 985156f43a..80863d0643 100644 --- a/src/main/java/com/hbm/items/machine/ItemTemplateFolder.java +++ b/src/main/java/com/hbm/items/machine/ItemTemplateFolder.java @@ -5,6 +5,7 @@ import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -24,10 +25,10 @@ public ItemTemplateFolder(String s) { @Override public void addInformation(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) { - tooltip.add("Machine Templates: Paper + Dye"); - tooltip.add("Fluid IDs: Iron Plate + Dye"); - tooltip.add("Press Stamps: Flat Stamp"); - tooltip.add("Siren Tracks: Insulator + Steel Plate"); + tooltip.add(I18nUtil.resolveKey("desc.templfolder1")); + tooltip.add(I18nUtil.resolveKey("desc.templfolder2")); + tooltip.add(I18nUtil.resolveKey("desc.templfolder3")); + tooltip.add(I18nUtil.resolveKey("desc.templfolder4")); } @Override diff --git a/src/main/java/com/hbm/items/machine/ItemTurretBiometry.java b/src/main/java/com/hbm/items/machine/ItemTurretBiometry.java index f9ff2c9c68..1df403028d 100644 --- a/src/main/java/com/hbm/items/machine/ItemTurretBiometry.java +++ b/src/main/java/com/hbm/items/machine/ItemTurretBiometry.java @@ -7,6 +7,7 @@ import com.hbm.lib.HBMSoundHandler; import com.hbm.main.MainRegistry; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -15,6 +16,7 @@ import net.minecraft.util.ActionResult; import net.minecraft.util.EnumHand; import net.minecraft.util.SoundCategory; +import net.minecraft.util.text.TextComponentString; import net.minecraft.util.text.TextComponentTranslation; import net.minecraft.world.World; @@ -42,7 +44,7 @@ public ActionResult onItemRightClick(World world, EntityPlayer player addName(stack, player.getDisplayName().getUnformattedText()); if(world.isRemote) - player.sendMessage(new TextComponentTranslation("Added player data!")); + player.sendMessage(new TextComponentString(I18nUtil.resolveKey("chat.addpldata"))); world.playSound(player.posX, player.posY, player.posZ, HBMSoundHandler.techBleep, SoundCategory.PLAYERS, 1.0F, 1.0F, true); diff --git a/src/main/java/com/hbm/items/special/ItemBedrockOre.java b/src/main/java/com/hbm/items/special/ItemBedrockOre.java index f27f13c4a5..9bcea90fd2 100644 --- a/src/main/java/com/hbm/items/special/ItemBedrockOre.java +++ b/src/main/java/com/hbm/items/special/ItemBedrockOre.java @@ -9,6 +9,7 @@ import com.hbm.lib.RefStrings; import com.hbm.blocks.generic.BlockBedrockOreTE.TileEntityBedrockOre; +import com.hbm.util.I18nUtil; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.resources.I18n; @@ -23,6 +24,7 @@ import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fml.relauncher.Side; @@ -61,7 +63,7 @@ public static String getOreTag(ItemStack stack){ @Override @SideOnly(Side.CLIENT) public String getItemStackDisplayName(ItemStack stack) { - return I18n.format(this.getUnlocalizedName() + ".name", BedrockOreRegistry.getOreName(getOreTag(stack))); + return I18n.format(this.getUnlocalizedName() + ".name", I18nUtil.resolveKey("desc.item_bedrock_ore."+BedrockOreRegistry.getOreName(getOreTag(stack)))); } public static int getColor(ItemStack stack){ @@ -82,9 +84,9 @@ public void addInformation(ItemStack stack, World world, List list, IToo if(stack.getItem() == ModItems.ore_bedrock){ String oreName = BedrockOreRegistry.oreIndexes.get(stack.getMetadata()); int tier = BedrockOreRegistry.getOreTier(oreName); - list.add("§6Tier: "+tier); + list.add(TextFormatting.GOLD + I18nUtil.resolveKey("desc.tier")+" " +tier); FluidStack req = BedrockOreRegistry.getFluidRequirement(tier); - list.add("§eRequired: " + req.amount + "mB " + req.getFluid().getLocalizedName(req)); + list.add(TextFormatting.YELLOW+I18nUtil.resolveKey("desc.requires")+" " + req.amount + "mB " + req.getFluid().getLocalizedName(req)); } super.addInformation(stack, world, list, flagIn); } diff --git a/src/main/java/com/hbm/items/tool/ItemBombCaller.java b/src/main/java/com/hbm/items/tool/ItemBombCaller.java index 1a58f2a9b7..60b4d7e7eb 100644 --- a/src/main/java/com/hbm/items/tool/ItemBombCaller.java +++ b/src/main/java/com/hbm/items/tool/ItemBombCaller.java @@ -7,6 +7,7 @@ import com.hbm.lib.HBMSoundHandler; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.creativetab.CreativeTabs; @@ -22,6 +23,7 @@ import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.RayTraceResult.Type; import net.minecraft.util.text.TextComponentTranslation; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; public class ItemBombCaller extends Item { @@ -37,32 +39,32 @@ public ItemBombCaller(String s) { @Override public void addInformation(ItemStack stack, World worldIn, List list, ITooltipFlag flagIn) { - list.add("Aim & click to call an airstrike!"); + list.add(TextFormatting.GRAY + I18nUtil.resolveKey("desc.airstrike")); switch (getTypeFromStack(stack)) { case CARPET: - list.add("Type: Carpet bombing"); + list.add(TextFormatting.GRAY + I18nUtil.resolveKey("desc.type") + " " + TextFormatting.YELLOW + I18nUtil.resolveKey("type.carpet")); break; case NAPALM: - list.add("Type: Napalm"); + list.add(TextFormatting.GRAY + I18nUtil.resolveKey("desc.type") + " " + TextFormatting.GOLD + I18nUtil.resolveKey("type.napalm")); break; case POISON: - list.add("Type: Poison gas"); + list.add(TextFormatting.GRAY + I18nUtil.resolveKey("desc.type") + " " + TextFormatting.GREEN + I18nUtil.resolveKey("type.poison")); break; case ORANGE: - list.add("Type: Agent orange"); + list.add(TextFormatting.GRAY + I18nUtil.resolveKey("desc.type") + " " + TextFormatting.GOLD + I18nUtil.resolveKey("type.orange")); break; case ATOMIC: - list.add("Type: Atomic bomb"); + list.add(TextFormatting.GRAY + I18nUtil.resolveKey("desc.type") + " " + TextFormatting.DARK_RED + TextFormatting.BOLD + I18nUtil.resolveKey("type.atomic")); break; case STINGER: - list.add("Type: VT stinger rockets"); + list.add(TextFormatting.GRAY + I18nUtil.resolveKey("desc.type") + " " + TextFormatting.AQUA + I18nUtil.resolveKey("type.stinger")); break; case PIP: - list.add("Type: PIP OH GOD"); + list.add(TextFormatting.GRAY + I18nUtil.resolveKey("desc.type") + " " + TextFormatting.AQUA + I18nUtil.resolveKey("type.pip")); break; case CLOUD: - list.add("Type: Cloud the cloud oh god the cloud"); + list.add(TextFormatting.GRAY + I18nUtil.resolveKey("desc.type") + " " + TextFormatting.AQUA + I18nUtil.resolveKey("type.cloud")); break; default: break; @@ -117,7 +119,7 @@ public ActionResult onItemRightClick(World world, EntityPlayer player break; } if (b) { - playerIn.sendMessage(new TextComponentTranslation("Called in airstrike!")); + playerIn.sendMessage(new TextComponentTranslation("chat.callas")); if (!playerIn.capabilities.isCreativeMode) stack.shrink(1); } diff --git a/src/main/java/com/hbm/items/tool/ItemCrateCaller.java b/src/main/java/com/hbm/items/tool/ItemCrateCaller.java index b59dcf8f62..a66985561a 100644 --- a/src/main/java/com/hbm/items/tool/ItemCrateCaller.java +++ b/src/main/java/com/hbm/items/tool/ItemCrateCaller.java @@ -7,6 +7,7 @@ import com.hbm.items.ModItems; import com.hbm.lib.HBMSoundHandler; +import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.EntityPlayer; @@ -36,7 +37,7 @@ public ItemCrateCaller(String s) { @Override public void addInformation(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) { - tooltip.add("Right click to request supply drop!"); + tooltip.add(I18nUtil.resolveKey("desc.callsp")); } @Override @@ -67,7 +68,7 @@ public ActionResult onItemRightClick(World world, EntityPlayer player } if(world.isRemote) { - player.sendMessage(new TextComponentTranslation("Called in supply drop!")); + player.sendMessage(new TextComponentTranslation("chat.callsp")); } world.playSound(null, player.posX, player.posY, player.posZ, HBMSoundHandler.techBleep, SoundCategory.PLAYERS, 1.0F, 1.0F); diff --git a/src/main/java/com/hbm/items/tool/ItemDesignator.java b/src/main/java/com/hbm/items/tool/ItemDesignator.java index 29e7ac03cf..48a5f675e6 100644 --- a/src/main/java/com/hbm/items/tool/ItemDesignator.java +++ b/src/main/java/com/hbm/items/tool/ItemDesignator.java @@ -7,6 +7,7 @@ import com.hbm.lib.HBMSoundHandler; import com.hbm.main.MainRegistry; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -18,6 +19,7 @@ import net.minecraft.util.SoundCategory; import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.TextComponentTranslation; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; public class ItemDesignator extends Item { @@ -41,11 +43,11 @@ public void onCreated(ItemStack stack, World worldIn, EntityPlayer playerIn) { public void addInformation(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) { if(stack.getTagCompound() != null) { - tooltip.add("§aTarget Coordinates§r"); + tooltip.add(TextFormatting.GREEN + I18nUtil.resolveKey("desc.targetcoord")+"§r"); tooltip.add("§aX: " + String.valueOf(stack.getTagCompound().getInteger("xCoord")) + "§r"); tooltip.add("§aZ: " + String.valueOf(stack.getTagCompound().getInteger("zCoord")) + "§r"); } else { - tooltip.add("§ePlease select a target.§r"); + tooltip.add(TextFormatting.YELLOW + I18nUtil.resolveKey("desc.choosetarget1")); } } @@ -65,7 +67,7 @@ public EnumActionResult onItemUse(EntityPlayer player, World world, BlockPos pos } if(world.isRemote) { - player.sendMessage(new TextComponentTranslation("§a[Position set]§r")); + player.sendMessage(new TextComponentTranslation(TextFormatting.GREEN + "[" + I18nUtil.resolveKey("chat.posset") + "]")); } world.playSound(player.posX, player.posY, player.posZ, HBMSoundHandler.techBleep, SoundCategory.PLAYERS, 1.0F, 1.0F, true); diff --git a/src/main/java/com/hbm/items/tool/ItemDesignatorManual.java b/src/main/java/com/hbm/items/tool/ItemDesignatorManual.java index 55c3402ed5..2ff7330c25 100644 --- a/src/main/java/com/hbm/items/tool/ItemDesignatorManual.java +++ b/src/main/java/com/hbm/items/tool/ItemDesignatorManual.java @@ -5,6 +5,7 @@ import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -12,6 +13,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ActionResult; import net.minecraft.util.EnumHand; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; public class ItemDesignatorManual extends Item { @@ -35,11 +37,11 @@ public void onCreated(ItemStack stack, World worldIn, EntityPlayer playerIn) { public void addInformation(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) { if(stack.getTagCompound() != null) { - tooltip.add("§aTarget Coordinates§r"); + tooltip.add(TextFormatting.GREEN + I18nUtil.resolveKey("desc.targetcoord")+"§r"); tooltip.add("§aX: " + String.valueOf(stack.getTagCompound().getInteger("xCoord"))+"§r"); tooltip.add("§aZ: " + String.valueOf(stack.getTagCompound().getInteger("zCoord"))+"§r"); } else { - tooltip.add("§ePlease select a target.§r"); + tooltip.add(TextFormatting.YELLOW + I18nUtil.resolveKey("desc.choosetarget2")); } } diff --git a/src/main/java/com/hbm/items/tool/ItemDesignatorRange.java b/src/main/java/com/hbm/items/tool/ItemDesignatorRange.java index 86a0458e9d..a324cce31a 100644 --- a/src/main/java/com/hbm/items/tool/ItemDesignatorRange.java +++ b/src/main/java/com/hbm/items/tool/ItemDesignatorRange.java @@ -8,6 +8,7 @@ import com.hbm.lib.Library; import com.hbm.main.MainRegistry; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -20,6 +21,7 @@ import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.RayTraceResult.Type; import net.minecraft.util.text.TextComponentTranslation; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; public class ItemDesignatorRange extends Item { @@ -43,11 +45,11 @@ public void onCreated(ItemStack stack, World worldIn, EntityPlayer playerIn) { public void addInformation(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) { if(stack.getTagCompound() != null) { - tooltip.add("§aTarget Coordinates:§r"); + tooltip.add(TextFormatting.GREEN + I18nUtil.resolveKey("desc.targetcoord")+"§r"); tooltip.add("§aX: " + String.valueOf(stack.getTagCompound().getInteger("xCoord"))+"§r"); tooltip.add("§aZ: " + String.valueOf(stack.getTagCompound().getInteger("zCoord"))+"§r"); } else { - tooltip.add("§ePlease select a target.§r"); + tooltip.add(TextFormatting.YELLOW + I18nUtil.resolveKey("desc.choosetarget3")); } } @@ -71,7 +73,7 @@ public ActionResult onItemRightClick(World world, EntityPlayer player if(world.isRemote) { - player.sendMessage(new TextComponentTranslation("§aPosition set to X:" + x + ", Z:" + z+"§r")); + player.sendMessage(new TextComponentTranslation(TextFormatting.GREEN + I18nUtil.resolveKey("chat.possetx") + " " + x + ", " + I18nUtil.resolveKey("chat.possetz") + " " + z)); } world.playSound(player.posX, player.posY, player.posZ, HBMSoundHandler.techBleep, SoundCategory.PLAYERS, 1.0F, 1.0F, true); diff --git a/src/main/java/com/hbm/items/tool/ItemDetonator.java b/src/main/java/com/hbm/items/tool/ItemDetonator.java index d77bbb77bd..742e08ef0f 100644 --- a/src/main/java/com/hbm/items/tool/ItemDetonator.java +++ b/src/main/java/com/hbm/items/tool/ItemDetonator.java @@ -2,6 +2,8 @@ import java.util.List; +import com.hbm.util.I18nUtil; +import net.minecraft.util.text.TextFormatting; import org.apache.logging.log4j.Level; import com.hbm.config.GeneralConfig; @@ -35,13 +37,13 @@ public ItemDetonator(String s) { @Override public void addInformation(ItemStack stack, World worldIn, List list, ITooltipFlag flagIn) { - list.add("Shift right-click to set position,"); - list.add("right-click to detonate!"); + list.add(I18nUtil.resolveKey("desc.calldet1")); + list.add(I18nUtil.resolveKey("desc.calldet2")); if(stack.getTagCompound() == null) { list.add("§eNo position set§r"); } else { - list.add("§aPos set to " + stack.getTagCompound().getInteger("x") + ", " + stack.getTagCompound().getInteger("y") + ", " + stack.getTagCompound().getInteger("z")+"§r"); + list.add(TextFormatting.GREEN + I18nUtil.resolveKey("chat.possetx") + " " + stack.getTagCompound().getInteger("x") + ", Y: " + stack.getTagCompound().getInteger("y") + ", Z: " + stack.getTagCompound().getInteger("z")+"§r"); } } @@ -61,7 +63,7 @@ public EnumActionResult onItemUse(EntityPlayer player, World world, BlockPos pos if(world.isRemote) { - player.sendMessage(new TextComponentTranslation("§a[Position set]§r")); + player.sendMessage(new TextComponentTranslation(TextFormatting.GREEN + "[" + I18nUtil.resolveKey("chat.posset") + "]"+"§r")); } world.playSound(null, player.posX, player.posY, player.posZ, HBMSoundHandler.techBoop, SoundCategory.AMBIENT, 1.0F, 1.0F); @@ -96,7 +98,7 @@ public ActionResult onItemRightClick(World world, EntityPlayer player } if(world.isRemote) { - player.sendMessage(new TextComponentTranslation("§2[Detonated]§r")); + player.sendMessage(new TextComponentTranslation(TextFormatting.DARK_GREEN+"["+I18nUtil.resolveKey("chat.detonated")+"]"+"§r")); } } else { if(world.isRemote) diff --git a/src/main/java/com/hbm/items/tool/ItemFluidCanister.java b/src/main/java/com/hbm/items/tool/ItemFluidCanister.java index a9facdc34e..2a99a0d0a4 100644 --- a/src/main/java/com/hbm/items/tool/ItemFluidCanister.java +++ b/src/main/java/com/hbm/items/tool/ItemFluidCanister.java @@ -71,7 +71,7 @@ public void addInformation(ItemStack stack, World worldIn, List tooltip, if (this == ModItems.canister_generic && f != null && f.getFluid() == ModForgeFluids.diesel) { tooltip.add("All hail the spout!"); } - String s = (f == null ? "0" : f.amount) + "/" + cap + " mb"; + String s = (f == null ? "0" : f.amount) + "/" + cap + " mB"; if(stack.getCount() > 1) s = stack.getCount() + "x " + s; tooltip.add(s); diff --git a/src/main/java/com/hbm/items/tool/ItemSwordAbility.java b/src/main/java/com/hbm/items/tool/ItemSwordAbility.java index d7944fd3d7..cb351a2b7d 100644 --- a/src/main/java/com/hbm/items/tool/ItemSwordAbility.java +++ b/src/main/java/com/hbm/items/tool/ItemSwordAbility.java @@ -9,6 +9,7 @@ import com.hbm.handler.WeaponAbility; import com.hbm.items.ModItems; import com.hbm.lib.HBMSoundHandler; +import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; @@ -170,7 +171,7 @@ public void breakExtraBlock(World world, int x, int y, int z, EntityPlayer playe public void addInformation(ItemStack stack, World worldIn, List list, ITooltipFlag flagIn) { if(!this.hitAbility.isEmpty()) { - list.add("Weapon modifiers: "); + list.add(TextFormatting.GRAY + I18nUtil.resolveKey("tool.ability.weaponlist")); for(WeaponAbility ability : this.hitAbility) { list.add(" " + TextFormatting.RED + ability.getFullName()); diff --git a/src/main/java/com/hbm/items/tool/ItemToolAbility.java b/src/main/java/com/hbm/items/tool/ItemToolAbility.java index 0b24cf94c9..e42daaec5c 100644 --- a/src/main/java/com/hbm/items/tool/ItemToolAbility.java +++ b/src/main/java/com/hbm/items/tool/ItemToolAbility.java @@ -17,6 +17,7 @@ import com.hbm.blocks.generic.BlockBedrockOre; import api.hbm.item.IDepthRockTool; +import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; @@ -283,7 +284,7 @@ public boolean hasEffect(ItemStack stack) { @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, World worldIn, List list, ITooltipFlag flagIn) { if(this.breakAbility.size() > 1) { - list.add("Abilities: "); + list.add(TextFormatting.GRAY + I18nUtil.resolveKey("tool.ability.list")); for(ToolAbility ability : this.breakAbility) { @@ -296,13 +297,13 @@ public void addInformation(ItemStack stack, World worldIn, List list, IT } } - list.add("Right click to cycle through abilities!"); - list.add("Sneak-click to turn abilitty off!"); + list.add(TextFormatting.GRAY + I18nUtil.resolveKey("tool.ability.rightclick")); + list.add(TextFormatting.GRAY + I18nUtil.resolveKey("tool.ability.shiftclick")); } if(!this.hitAbility.isEmpty()) { - - list.add("Weapon modifiers: "); + + list.add(TextFormatting.GRAY + I18nUtil.resolveKey("tool.ability.weaponlist")); for(WeaponAbility ability : this.hitAbility) { list.add(" " + TextFormatting.RED + ability.getFullName()); @@ -310,7 +311,7 @@ public void addInformation(ItemStack stack, World worldIn, List list, IT } if(this.rockBreaker){ - list.add("§d[Unmineable]§5 can be mined"); + list.add(TextFormatting.LIGHT_PURPLE + "[" + I18nUtil.resolveKey("trait.unmineable") + "]" + TextFormatting.GRAY + I18nUtil.resolveKey("tool.ability.canmine")); } } @@ -349,9 +350,9 @@ private void switchMode(EntityPlayer player, ItemStack stack){ while(getCurrentAbility(stack) != null && !getCurrentAbility(stack).isAllowed()) { player.sendMessage( - new TextComponentString("[Ability ") + new TextComponentString("[" + I18nUtil.resolveKey("chat.ability") + " ") .appendSibling(new TextComponentTranslation(getCurrentAbility(stack).getName(), new Object[0])) - .appendSibling(new TextComponentString(getCurrentAbility(stack).getExtension() + " is blacklisted!]")) + .appendSibling(new TextComponentString(getCurrentAbility(stack).getExtension() + " " + I18nUtil.resolveKey("chat.blacklist") +"]")) .setStyle(new Style().setColor(TextFormatting.RED))); i++; @@ -360,12 +361,12 @@ private void switchMode(EntityPlayer player, ItemStack stack){ if(getCurrentAbility(stack) != null) { player.sendMessage( - new TextComponentString("[Enabled ") + new TextComponentString("[" + I18nUtil.resolveKey("chat.abilenabled") + " ") .appendSibling(new TextComponentTranslation(getCurrentAbility(stack).getName())) .appendSibling(new TextComponentString(getCurrentAbility(stack).getExtension() + "]")) .setStyle(new Style().setColor(TextFormatting.YELLOW))); } else { - player.sendMessage(new TextComponentString(TextFormatting.GOLD + "[Tool ability deactivated]")); + player.sendMessage(new TextComponentString(TextFormatting.GOLD + "[" + I18nUtil.resolveKey("chat.abildisabled") + "]")); } //Drillgon200: I hope "random.orb" referred to the experience orb sound diff --git a/src/main/java/com/hbm/items/tool/ItemWand.java b/src/main/java/com/hbm/items/tool/ItemWand.java index f798f55f36..481ea9e8d3 100644 --- a/src/main/java/com/hbm/items/tool/ItemWand.java +++ b/src/main/java/com/hbm/items/tool/ItemWand.java @@ -4,6 +4,7 @@ import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.client.util.ITooltipFlag; @@ -18,6 +19,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos.MutableBlockPos; import net.minecraft.util.text.TextComponentTranslation; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; public class ItemWand extends Item { @@ -31,7 +33,7 @@ public ItemWand(String s) { @Override public void addInformation(ItemStack itemstack, World worldIn, List list, ITooltipFlag flagIn) { - list.add("Creative-only item"); + list.add(I18nUtil.resolveKey("desc.creative")); list.add("\"Destruction brings creation\""); list.add("(Set positions with right click,"); list.add("set block with shift-right click!)"); diff --git a/src/main/java/com/hbm/items/tool/ItemWandS.java b/src/main/java/com/hbm/items/tool/ItemWandS.java index 785354d42c..b8efb83914 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandS.java +++ b/src/main/java/com/hbm/items/tool/ItemWandS.java @@ -4,6 +4,7 @@ import java.util.Random; import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; import com.hbm.world.FWatz; import com.hbm.world.FactoryAdvanced; import com.hbm.world.FactoryTitanium; @@ -35,7 +36,7 @@ public ItemWandS(String s) { @Override public void addInformation(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) { - tooltip.add("Creative-only item"); + tooltip.add(I18nUtil.resolveKey("desc.creative")); tooltip.add("\"Instant structures for everyone!\""); tooltip.add("(Cycle with shift-right click,"); tooltip.add("spawn structures with right click!)"); diff --git a/src/main/java/com/hbm/items/weapon/ItemAmmo.java b/src/main/java/com/hbm/items/weapon/ItemAmmo.java index 908ca4430b..4c9baaa21b 100644 --- a/src/main/java/com/hbm/items/weapon/ItemAmmo.java +++ b/src/main/java/com/hbm/items/weapon/ItemAmmo.java @@ -5,6 +5,7 @@ import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -26,571 +27,571 @@ public void addInformation(ItemStack stack, World worldIn, List list, IT //BOLTS if(this == ModItems.ammo_75bolt) { - list.add(TextFormatting.YELLOW + "Gyro-stabilized armor-piercing"); - list.add(TextFormatting.YELLOW + "DU round with tandem charge"); + list.add(TextFormatting.YELLOW + I18nUtil.resolveKey("ammo.trait.75b1")); + list.add(TextFormatting.YELLOW + I18nUtil.resolveKey("ammo.trait.75b2")); } if(this == ModItems.ammo_75bolt_incendiary) { - list.add(TextFormatting.YELLOW + "Armor-piercing explosive round"); - list.add(TextFormatting.YELLOW + "filled with oxy-phosphorous gel"); + list.add(TextFormatting.YELLOW + I18nUtil.resolveKey("ammo.trait.75b3")); + list.add(TextFormatting.YELLOW + I18nUtil.resolveKey("ammo.trait.75b4")); } if(this == ModItems.ammo_75bolt_he) { - list.add(TextFormatting.YELLOW + "Armor-piercing penetrator filled"); - list.add(TextFormatting.YELLOW + "with a powerful explosive charge"); + list.add(TextFormatting.YELLOW + I18nUtil.resolveKey("ammo.trait.75b5")); + list.add(TextFormatting.YELLOW + I18nUtil.resolveKey("ammo.trait.75b6")); } //NUKES if(this == ModItems.ammo_nuke_low) { - list.add(TextFormatting.RED + "- Decreased blast radius"); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.dblast")); } if(this == ModItems.ammo_nuke_high) { - list.add(TextFormatting.BLUE + "+ Increased blast radius"); - list.add(TextFormatting.BLUE + "+ Fallout"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.blast")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.fallout")); } if(this == ModItems.ammo_nuke_tots) { - list.add(TextFormatting.BLUE + "+ Increased bomb count"); - list.add(TextFormatting.YELLOW + "* Fun for the whole family!"); - list.add(TextFormatting.RED + "- Highly decreased accuracy"); - list.add(TextFormatting.RED + "- Decreased blast radius"); - list.add(TextFormatting.RED + "- Not recommended for the Proto MIRV"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.incbomb")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.fun")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.daccuracy")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.dblast")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.noprotomirv")); } if(this == ModItems.ammo_nuke_safe) { - list.add(TextFormatting.RED + "- Decreased blast radius"); - list.add(TextFormatting.RED + "- No block damage"); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.dblast")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.noblock")); } if(this == ModItems.ammo_nuke_pumpkin) { - list.add(TextFormatting.RED + "- Not even a nuke"); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.nonuke")); } //MIRV if(this == ModItems.ammo_mirv_low) { - list.add(TextFormatting.RED + "- Decreased blast radius"); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.dblast")); } if(this == ModItems.ammo_mirv_high) { - list.add(TextFormatting.BLUE + "+ Increased blast radius"); - list.add(TextFormatting.BLUE + "+ Fallout"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.blast")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.fallout")); } if(this == ModItems.ammo_mirv_safe) { - list.add(TextFormatting.RED + "- Decreased blast radius"); - list.add(TextFormatting.RED + "- No block damage"); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.dblast")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.noblock")); } if(this == ModItems.ammo_mirv_special) { - list.add(TextFormatting.BLUE + "+ 6 Low-yield mini nukes"); - list.add(TextFormatting.BLUE + "+ 6 Mini nukes"); - list.add(TextFormatting.BLUE + "+ 6 Tiny tots"); - list.add(TextFormatting.BLUE + "+ 6 Balefire shells"); - list.add(TextFormatting.WHITE + "* Sticky!"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.mirv1")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.mirv2")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.mirv3")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.mirv4")); + list.add(TextFormatting.WHITE + "* " + I18nUtil.resolveKey("ammo.trait.mirv5")); } // FUEL if(this == ModItems.ammo_fuel_napalm) { - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.BLUE + "+ Increased range"); - list.add(TextFormatting.RED + "- Highly increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.range")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.highwear")); } if(this == ModItems.ammo_fuel_phosphorus) { - list.add(TextFormatting.BLUE + "+ Phosphorus splash"); - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.BLUE + "+ Increased range"); - list.add(TextFormatting.BLUE + "+ Increased accuracy"); - list.add(TextFormatting.YELLOW + "* Technically a warcrime"); - list.add(TextFormatting.RED + "- Single projectile"); - list.add(TextFormatting.RED + "- Highly increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.phosphor")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.range")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.accuracy")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.warcrime")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.single")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.highwear")); } if(this == ModItems.ammo_fuel_gas) { - list.add(TextFormatting.BLUE + "+ No gravity"); - list.add(TextFormatting.BLUE + "+ Poison splash"); - list.add(TextFormatting.RED + "- No damage"); - list.add(TextFormatting.RED + "- Not incendiary"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.nograv")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.poison")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.nodamage")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.noinc")); } if(this == ModItems.ammo_fuel_vaporizer) { - list.add(TextFormatting.BLUE + "+ Induces phosphorus burns"); - list.add(TextFormatting.BLUE + "+ Increased flame count"); - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.YELLOW + "* For removing big mistakes"); - list.add(TextFormatting.RED + "- Highly decreased accuracy"); - list.add(TextFormatting.RED + "- Highly decreased range"); - list.add(TextFormatting.RED + "- Highly increased wear"); - list.add(TextFormatting.RED + "- No lingering fire"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.phosphorburn")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.vapor1")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.vapor2")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.daccuracy")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.vapor3")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.highwear")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.vapor4")); } // 12 GAUGE if(this == ModItems.ammo_44_phosphorus) { - list.add(TextFormatting.BLUE + "+ Induces phosphorus burns"); - list.add(TextFormatting.YELLOW + "* Technically a warcrime"); - list.add(TextFormatting.RED + "- Increased wear"); - list.add(TextFormatting.RED + "- Not penetrating"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.phosphorburn")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.warcrime")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.wear")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.nopen")); } if(this == ModItems.ammo_50bmg) { - list.add(TextFormatting.YELLOW + "12.7mm anti-materiel round"); - list.add(TextFormatting.YELLOW + "You shoot down planes with these, using"); - list.add(TextFormatting.YELLOW + "them against people would be nasty."); + list.add(TextFormatting.YELLOW + I18nUtil.resolveKey("ammo.trait.bmg1")); + list.add(TextFormatting.YELLOW + I18nUtil.resolveKey("ammo.trait.bmg2")); + list.add(TextFormatting.YELLOW + I18nUtil.resolveKey("ammo.trait.bmg3")); } if(this == ModItems.ammo_50bmg_phosphorus) { - list.add(TextFormatting.BLUE + "+ Induces phosphorus burns"); - list.add(TextFormatting.YELLOW + "* Technically a warcrime"); - list.add(TextFormatting.RED + "- Increased wear"); - list.add(TextFormatting.RED + "- Not penetrating"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.phosphorburn")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.warcrime")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.wear")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.nopen")); } if(this == ModItems.ammo_50bmg_ap) { - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.RED + "- Increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.wear")); } if(this == ModItems.ammo_rocket_phosphorus) { - list.add(TextFormatting.BLUE + "+ Phosphorus splash"); - list.add(TextFormatting.YELLOW + "* Technically a warcrime"); - list.add(TextFormatting.RED + "- Increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.phosphor")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.warcrime")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.wear")); } if(this == ModItems.ammo_grenade_phosphorus) { - list.add(TextFormatting.BLUE + "+ Phosphorus splash"); - list.add(TextFormatting.YELLOW + "* Technically a warcrime"); - list.add(TextFormatting.RED + "- Increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.phosphor")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.warcrime")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.wear")); } if(this == ModItems.ammo_grenade_kampf) { - list.add(TextFormatting.BLUE + "+ Rocket Propelled"); - list.add(TextFormatting.BLUE + "+ Increased blast radius"); - list.add(TextFormatting.BLUE + "+ Increased accuracy"); - list.add(TextFormatting.RED + "- Increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.rocketprop")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.blast")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.accuracy")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.wear")); } if(this == ModItems.ammo_12gauge_incendiary) { - list.add(TextFormatting.BLUE + "+ Incendiary"); - list.add(TextFormatting.RED + "- Increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.inc")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.wear")); } if(this == ModItems.ammo_12gauge_shrapnel) { - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.YELLOW + "* Extra bouncy"); - list.add(TextFormatting.RED + "- Increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.bounce")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.wear")); } if(this == ModItems.ammo_12gauge_du) { - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.BLUE + "+ Penetrating"); - list.add(TextFormatting.YELLOW + "* Heavy Metal"); - list.add(TextFormatting.RED + "- Highly increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.pen")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.heavymetal")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.highwear")); } if(this == ModItems.ammo_12gauge_marauder) { - list.add(TextFormatting.BLUE + "+ Instantly removes annoying and unbalanced enemies"); - list.add(TextFormatting.YELLOW + "* No drawbacks lole"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.12gm1")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.12gm2")); } if(this == ModItems.ammo_12gauge_sleek) { - list.add(TextFormatting.YELLOW + "* Fires a tracer which summons a storm of DU-flechettes"); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.gaugesleek")); } // 20 GAUGE if(this == ModItems.ammo_20gauge_flechette) { - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.YELLOW + "* Less bouncy"); - list.add(TextFormatting.RED + "- Increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.dbounce")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.wear")); } if(this == ModItems.ammo_20gauge_slug) { - list.add(TextFormatting.BLUE + "+ Near-perfect accuracy"); - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.BLUE + "+ Decreased wear"); - list.add(TextFormatting.RED + "- Single projectile"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.highaccuracy")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.dwear")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.single")); } if(this == ModItems.ammo_20gauge_incendiary) { - list.add(TextFormatting.BLUE + "+ Incendiary"); - list.add(TextFormatting.RED + "- Increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.inc")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.wear")); } if(this == ModItems.ammo_20gauge_shrapnel) { - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.YELLOW + "* Extra bouncy"); - list.add(TextFormatting.RED + "- Increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.bounce")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.wear")); } if(this == ModItems.ammo_20gauge_explosive) { - list.add(TextFormatting.BLUE + "+ Explosive"); - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.RED + "- Highly increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.explosive")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.highwear")); } if(this == ModItems.ammo_20gauge_caustic) { - list.add(TextFormatting.BLUE + "+ Toxic"); - list.add(TextFormatting.BLUE + "+ Caustic"); - list.add(TextFormatting.YELLOW + "* Not bouncy"); - list.add(TextFormatting.RED + "- Highly increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.toxic")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.1")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.nobounce")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.highwear")); } if(this == ModItems.ammo_20gauge_shock) { - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.BLUE + "+ Stunning"); - list.add(TextFormatting.BLUE + "+ EMP"); - list.add(TextFormatting.YELLOW + "* Not bouncy"); - list.add(TextFormatting.RED + "- Highly increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.2")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.emp")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.nobounce")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.highwear")); } if(this == ModItems.ammo_20gauge_wither) { - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.BLUE + "+ Withering"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.wither")); } if(this == ModItems.ammo_20gauge_sleek) { - list.add(TextFormatting.YELLOW + "* Fires a tracer which summons a storm of DU-flechettes"); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.gaugesleek")); } // .357 MAGNUM if(this == ModItems.ammo_357_desh) { - list.add(TextFormatting.BLUE + "+ Fits every .357 model"); - list.add(TextFormatting.BLUE + "+ Above-average damage"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.357d1")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.357d2")); } // .44 MAGNUM if(this == ModItems.ammo_44_ap) { - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.RED + "- Increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.wear")); } if(this == ModItems.ammo_44_du) { - list.add(TextFormatting.BLUE + "+ Highly increased damage"); - list.add(TextFormatting.YELLOW + "* Heavy metal"); - list.add(TextFormatting.RED + "- Highly increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.highdamage")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.heavymetal")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.highwear")); } if(this == ModItems.ammo_44_pip) { - list.add(TextFormatting.BLUE + "+ Boxcar"); - list.add(TextFormatting.RED + "- Highly decreased damage"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.3")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.ddamage")); } if(this == ModItems.ammo_44_bj) { - list.add(TextFormatting.BLUE + "+ Boat"); - list.add(TextFormatting.RED + "- Highly decreased damage"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.4")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.ddamage")); } if(this == ModItems.ammo_44_silver) { - list.add(TextFormatting.BLUE + "+ Building"); - list.add(TextFormatting.RED + "- Highly decreased damage"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.5")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.ddamage")); } if(this == ModItems.ammo_44_rocket) { - list.add(TextFormatting.BLUE + "+ Rocket"); - list.add(TextFormatting.YELLOW + "* Uhhhh"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.rocket")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.uhhh")); } if(this == ModItems.ammo_44_star) { - list.add(TextFormatting.BLUE + "+ Highly increased damage"); - list.add(TextFormatting.YELLOW + "* Starmetal"); - list.add(TextFormatting.RED + "- Highly increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.highdamage")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.starmetal")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.highwear")); } // 5mm if(this == ModItems.ammo_5mm_explosive) { - list.add(TextFormatting.BLUE + "+ Explosive"); - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.RED + "- Highly increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.explosive")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.highwear")); } if(this == ModItems.ammo_5mm_du) { - list.add(TextFormatting.BLUE + "+ Highly increased damage"); - list.add(TextFormatting.YELLOW + "* Heavy metal"); - list.add(TextFormatting.RED + "- Highly increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.highdamage")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.heavymetal")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.highwear")); } if(this == ModItems.ammo_5mm_star) { - list.add(TextFormatting.BLUE + "+ Highly increased damage"); - list.add(TextFormatting.YELLOW + "* Starmetal"); - list.add(TextFormatting.RED + "- Highly increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.highdamage")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.starmetal")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.highwear")); } // 9mm if(this == ModItems.ammo_9mm_ap) { - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.RED + "- Increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.wear")); } if(this == ModItems.ammo_9mm_du) { - list.add(TextFormatting.BLUE + "+ Highly increased damage"); - list.add(TextFormatting.YELLOW + "* Heavy metal"); - list.add(TextFormatting.RED + "- Highly increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.highdamage")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.heavymetal")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.highwear")); } if(this == ModItems.ammo_9mm_rocket) { - list.add(TextFormatting.BLUE + "+ Rocket"); - list.add(TextFormatting.YELLOW + "* Uhhhh"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.rocket")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.uhhh")); } // .22LR if(this == ModItems.ammo_22lr_ap) { - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.RED + "- Increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.wear")); } // .50 BMG if(this == ModItems.ammo_50bmg_incendiary) { - list.add(TextFormatting.BLUE + "+ Incendiary"); - list.add(TextFormatting.RED + "- Increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.inc")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.wear")); } if(this == ModItems.ammo_50bmg_explosive) { - list.add(TextFormatting.BLUE + "+ Explosive"); - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.RED + "- Highly increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.explosive")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.highwear")); } if(this == ModItems.ammo_50bmg_du) { - list.add(TextFormatting.BLUE + "+ Highly increased damage"); - list.add(TextFormatting.YELLOW + "* Heavy metal"); - list.add(TextFormatting.RED + "- Highly increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.highdamage")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.heavymetal")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.highwear")); } if(this == ModItems.ammo_50bmg_star) { - list.add(TextFormatting.BLUE + "+ Highly increased damage"); - list.add(TextFormatting.YELLOW + "* Starmetal"); - list.add(TextFormatting.RED + "- Highly increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.highdamage")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.starmetal")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.highwear")); } if(this == ModItems.ammo_50bmg_sleek) { - list.add(TextFormatting.YELLOW + "* Fires a high-damage round that summons a small meteorite"); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.meteorite")); } // .50 AE if(this == ModItems.ammo_50ae_ap) { - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.RED + "- Increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.wear")); } if(this == ModItems.ammo_50ae_du) { - list.add(TextFormatting.BLUE + "+ Highly increased damage"); - list.add(TextFormatting.YELLOW + "* Heavy metal"); - list.add(TextFormatting.RED + "- Highly increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.highdamage")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.heavymetal")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.highwear")); } if(this == ModItems.ammo_50ae_star) { - list.add(TextFormatting.BLUE + "+ Highly increased damage"); - list.add(TextFormatting.YELLOW + "* Starmetal"); - list.add(TextFormatting.RED + "- Highly increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.highdamage")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.starmetal")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.highwear")); } // 84mm ROCKETS if(this == ModItems.ammo_rocket_he) { - list.add(TextFormatting.BLUE + "+ Increased blast radius"); - list.add(TextFormatting.RED + "- Increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.blast")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.wear")); } if(this == ModItems.ammo_rocket_incendiary) { - list.add(TextFormatting.BLUE + "+ Incendiary explosion"); - list.add(TextFormatting.RED + "- Increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.incexplosive")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.wear")); } if(this == ModItems.ammo_rocket_shrapnel) { - list.add(TextFormatting.BLUE + "+ Shrapnel"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.sharpnel")); } if(this == ModItems.ammo_rocket_emp) { - list.add(TextFormatting.BLUE + "+ EMP"); - list.add(TextFormatting.RED + "- Decreased blast radius"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.emp")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.dblast")); } if(this == ModItems.ammo_rocket_glare) { - list.add(TextFormatting.BLUE + "+ Increased projectile speed"); - list.add(TextFormatting.BLUE + "+ Incendiary explosion"); - list.add(TextFormatting.RED + "- Increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.9")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.incexplosive")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.wear")); } if(this == ModItems.ammo_rocket_toxic) { - list.add(TextFormatting.BLUE + "+ Chlorine gas"); - list.add(TextFormatting.RED + "- No explosion"); - list.add(TextFormatting.RED + "- Decreased projectile speed"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.8")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.noexplosive")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.dspeed")); } if(this == ModItems.ammo_rocket_sleek) { - list.add(TextFormatting.BLUE + "+ Highly increased blast radius"); - list.add(TextFormatting.BLUE + "+ Not affected by gravity"); - list.add(TextFormatting.YELLOW + "* Jolt"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.10")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.nograv")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.jolt")); } if(this == ModItems.ammo_rocket_nuclear) { - list.add(TextFormatting.BLUE + "+ Nuclear"); - list.add(TextFormatting.RED + "- Very highly increased wear"); - list.add(TextFormatting.RED + "- Decreased projectile speed"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.nuclear")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.hhighwear")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.dspeed")); } if(this == ModItems.ammo_rocket_rpc) { - list.add(TextFormatting.BLUE + "+ Chainsaw"); - list.add(TextFormatting.BLUE + "+ Penetrating"); - list.add(TextFormatting.BLUE + "+ Not affected by gravity"); - list.add(TextFormatting.RED + "- Increased wear"); - list.add(TextFormatting.RED + "- Non-explosive"); - list.add(TextFormatting.YELLOW + "* Uhhhh"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.6")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.pen")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.nograv")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.wear")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.noexplosive")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.uhhh")); } // 40mm GRENADES if(this == ModItems.ammo_grenade_he) { - list.add(TextFormatting.BLUE + "+ Increased blast radius"); - list.add(TextFormatting.RED + "- Increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.blast")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.wear")); } if(this == ModItems.ammo_grenade_incendiary) { - list.add(TextFormatting.BLUE + "+ Incendiary explosion"); - list.add(TextFormatting.RED + "- Increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.incexplosive")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.wear")); } if(this == ModItems.ammo_grenade_toxic) { - list.add(TextFormatting.BLUE + "+ Chlorine gas"); - list.add(TextFormatting.RED + "- No explosion"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.8")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.noexplosive")); } if(this == ModItems.ammo_grenade_concussion) { - list.add(TextFormatting.BLUE + "+ Increased blast radius"); - list.add(TextFormatting.RED + "- No block damage"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.blast")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.noblock")); } if(this == ModItems.ammo_grenade_finned) { - list.add(TextFormatting.BLUE + "+ Decreased gravity"); - list.add(TextFormatting.RED + "- Decreased blast radius"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.11")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.dblast")); } if(this == ModItems.ammo_grenade_sleek) { - list.add(TextFormatting.BLUE + "+ Increased blast radius"); - list.add(TextFormatting.YELLOW + "* Jolt"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.blast")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.jolt")); } if(this == ModItems.ammo_grenade_nuclear) { - list.add(TextFormatting.BLUE + "+ Nuclear"); - list.add(TextFormatting.BLUE + "+ Increased range"); - list.add(TextFormatting.RED + "- Highly increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.nuclear")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.range")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.highwear")); } // FOLLY if(this == ModItems.ammo_folly) { - list.add(TextFormatting.BLUE + "+ Focused starmetal reaction blast"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.folly1")); } if(this == ModItems.ammo_folly_nuclear) { - list.add(TextFormatting.BLUE + "+ Howitzer mini nuke shell"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.folly2")); } if(this == ModItems.ammo_folly_du) { - list.add(TextFormatting.BLUE + "+ Howitzer 17kg U238 shell"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.folly3")); } // 23mm if(this == ModItems.ammo_4gauge_slug) { - list.add(TextFormatting.BLUE + "+ Near-perfect accuracy"); - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.BLUE + "+ Decreased wear"); - list.add(TextFormatting.RED + "- Single projectile"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.highaccuracy")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.dwear")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.single")); } if(this == ModItems.ammo_4gauge_explosive) { - list.add(TextFormatting.BLUE + "+ Explosive"); - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.YELLOW + "* It's a 40mm grenade that we squeezed to fit the barrel!"); - list.add(TextFormatting.RED + "- Highly increased wear"); - list.add(TextFormatting.RED + "- Single projectile"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.explosive")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.12")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.highwear")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.single")); } if(this == ModItems.ammo_4gauge_semtex) { - list.add(TextFormatting.BLUE + "+ Explosive"); - list.add(TextFormatting.BLUE + "+ Explosion drops all blocks"); - list.add(TextFormatting.RED + "- No splash damage"); - list.add(TextFormatting.RED + "- Highly increased wear"); - list.add(TextFormatting.RED + "- Single projectile"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.explosive")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.7")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.13")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.highwear")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.single")); } if(this == ModItems.ammo_4gauge_balefire) { - list.add(TextFormatting.BLUE + "+ Explosive"); - list.add(TextFormatting.BLUE + "+ Balefire"); - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.RED + "- Highly increased wear"); - list.add(TextFormatting.RED + "- Single projectile"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.explosive")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.balefire")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.highwear")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.single")); } if(this == ModItems.ammo_4gauge_kampf) { - list.add(TextFormatting.BLUE + "+ Explosive"); - list.add(TextFormatting.BLUE + "+ Rocket Propelled"); - list.add(TextFormatting.BLUE + "+ Increased accuracy"); - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.RED + "- Increased wear"); - list.add(TextFormatting.RED + "- Single projectile"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.explosive")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.rocketprop")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.accuracy")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.wear")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.single")); } if(this == ModItems.ammo_4gauge_sleek) { - list.add(TextFormatting.YELLOW + "* Fires a tracer which summons a storm of DU-flechettes"); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.gaugesleek")); } if(this == ModItems.ammo_4gauge_flechette) { - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.YELLOW + "* Less bouncy"); - list.add(TextFormatting.RED + "- Increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.dbounce")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.wear")); } if(this == ModItems.ammo_4gauge_flechette_phosphorus) { - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.BLUE + "+ Induces phosphorus burns"); - list.add(TextFormatting.YELLOW + "* Twice the warcrime in a single round!"); - list.add(TextFormatting.YELLOW + "* Less bouncy"); - list.add(TextFormatting.RED + "- Increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.phosphorburn")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.highwarcrime")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.dbounce")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.wear")); } // 5.56mm if(this == ModItems.ammo_556_phosphorus) { - list.add(TextFormatting.BLUE + "+ Induces phosphorus burns"); - list.add(TextFormatting.YELLOW + "* Technically a warcrime"); - list.add(TextFormatting.RED + "- Increased wear"); - list.add(TextFormatting.RED + "- Not penetrating"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.phosphorburn")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.warcrime")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.wear")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.nopen")); } if(this == ModItems.ammo_556_ap) { - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.RED + "- Increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.wear")); } if(this == ModItems.ammo_556_du) { - list.add(TextFormatting.BLUE + "+ Highly increased damage"); - list.add(TextFormatting.YELLOW + "* Heavy metal"); - list.add(TextFormatting.RED + "- Highly increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.highdamage")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.heavymetal")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.highwear")); } if(this == ModItems.ammo_556_star) { - list.add(TextFormatting.BLUE + "+ Highly increased damage"); - list.add(TextFormatting.YELLOW + "* Starmetal"); - list.add(TextFormatting.RED + "- Highly increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.highdamage")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.starmetal")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.highwear")); } if(this == ModItems.ammo_556_sleek) { - list.add(TextFormatting.YELLOW + "* Fires a high-damage round that summons a small meteorite"); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.meteorite")); } if(this == ModItems.ammo_556_flechette) { - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.YELLOW + "* Less bouncy"); - list.add(TextFormatting.RED + "- Increased wear"); - list.add(TextFormatting.RED + "- Not penetrating"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.dbounce")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.wear")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.nopen")); } if(this == ModItems.ammo_556_flechette_incendiary) { - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.BLUE + "+ Incendiary"); - list.add(TextFormatting.YELLOW + "* Less bouncy"); - list.add(TextFormatting.RED + "- Increased wear"); - list.add(TextFormatting.RED + "- Not penetrating"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.inc")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.dbounce")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.wear")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.nopen")); } if(this == ModItems.ammo_556_flechette_phosphorus) { - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.BLUE + "+ Induces phosphorus burns"); - list.add(TextFormatting.YELLOW + "* Twice the warcrime in a single round!"); - list.add(TextFormatting.YELLOW + "* Less bouncy"); - list.add(TextFormatting.RED + "- Increased wear"); - list.add(TextFormatting.RED + "- Not penetrating"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.phosphorburn")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.highwarcrime")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.dbounce")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.wear")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.nopen")); } if(this == ModItems.ammo_556_flechette_du) { - list.add(TextFormatting.BLUE + "+ Highly increased damage"); - list.add(TextFormatting.BLUE + "+ Penetrating"); - list.add(TextFormatting.YELLOW + "* Heavy metal"); - list.add(TextFormatting.YELLOW + "* Less bouncy"); - list.add(TextFormatting.RED + "- Highly increased wear"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.highdamage")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.pen")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.heavymetal")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.dbounce")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.highwear")); } if(this == ModItems.ammo_556_flechette_sleek) { - list.add(TextFormatting.YELLOW + "* Fires a high-damage round that summons a small meteorite"); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.meteorite")); } if(this == ModItems.ammo_556_tracer) { - list.add(TextFormatting.YELLOW + "* Tracer"); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.tracer")); } if(this == ModItems.ammo_556_k) { - list.add(TextFormatting.YELLOW + "* It's a blank"); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.blank")); } //Drillgon200: New stuff (organization? Whatever) if(this == ModItems.ammo_44_chlorophyte) { - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.BLUE + "+ Decreased wear"); - list.add(TextFormatting.DARK_GREEN + "* Chlorophyte"); - list.add(TextFormatting.YELLOW + "* Homing"); - list.add(TextFormatting.RED + "- Not penetrating"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.dwear")); + list.add(TextFormatting.DARK_GREEN + "* " + I18nUtil.resolveKey("ammo.trait.chlorophyte")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.homing")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.nopen")); } if(this == ModItems.ammo_5mm_chlorophyte) { - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.BLUE + "+ Decreased wear"); - list.add(TextFormatting.DARK_GREEN + "* Chlorophyte"); - list.add(TextFormatting.YELLOW + "* Homing"); - list.add(TextFormatting.RED + "- Not penetrating"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.dwear")); + list.add(TextFormatting.DARK_GREEN + "* " + I18nUtil.resolveKey("ammo.trait.chlorophyte")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.homing")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.nopen")); } if(this == ModItems.ammo_9mm_chlorophyte) { - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.BLUE + "+ Decreased wear"); - list.add(TextFormatting.DARK_GREEN + "* Chlorophyte"); - list.add(TextFormatting.YELLOW + "* Homing"); - list.add(TextFormatting.RED + "- Not penetrating"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.dwear")); + list.add(TextFormatting.DARK_GREEN + "* " + I18nUtil.resolveKey("ammo.trait.chlorophyte")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.homing")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.nopen")); } if(this == ModItems.ammo_22lr_chlorophyte) { - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.BLUE + "+ Decreased wear"); - list.add(TextFormatting.DARK_GREEN + "* Chlorophyte"); - list.add(TextFormatting.YELLOW + "* Homing"); - list.add(TextFormatting.RED + "- Not penetrating"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.dwear")); + list.add(TextFormatting.DARK_GREEN + "* " + I18nUtil.resolveKey("ammo.trait.chlorophyte")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.homing")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.nopen")); } if(this == ModItems.ammo_50bmg_chlorophyte) { - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.BLUE + "+ Decreased wear"); - list.add(TextFormatting.DARK_GREEN + "* Chlorophyte"); - list.add(TextFormatting.YELLOW + "* Homing"); - list.add(TextFormatting.RED + "- Not penetrating"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.dwear")); + list.add(TextFormatting.DARK_GREEN + "* " + I18nUtil.resolveKey("ammo.trait.chlorophyte")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.homing")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.nopen")); } if(this == ModItems.ammo_50ae_chlorophyte) { - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.BLUE + "+ Decreased wear"); - list.add(TextFormatting.DARK_GREEN + "* Chlorophyte"); - list.add(TextFormatting.YELLOW + "* Homing"); - list.add(TextFormatting.RED + "- Not penetrating"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.dwear")); + list.add(TextFormatting.DARK_GREEN + "* " + I18nUtil.resolveKey("ammo.trait.chlorophyte")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.homing")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.nopen")); } if(this == ModItems.ammo_556_chlorophyte) { - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.BLUE + "+ Decreased wear"); - list.add(TextFormatting.DARK_GREEN + "* Chlorophyte"); - list.add(TextFormatting.YELLOW + "* Homing"); - list.add(TextFormatting.RED + "- Not penetrating"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.dwear")); + list.add(TextFormatting.DARK_GREEN + "* " + I18nUtil.resolveKey("ammo.trait.chlorophyte")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.homing")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.nopen")); } if(this == ModItems.ammo_556_flechette_chlorophyte) { - list.add(TextFormatting.BLUE + "+ Increased damage"); - list.add(TextFormatting.BLUE + "+ Decreased wear"); - list.add(TextFormatting.DARK_GREEN + "* Chlorophyte"); - list.add(TextFormatting.YELLOW + "* Homing"); - list.add(TextFormatting.RED + "- Not penetrating"); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.damage")); + list.add(TextFormatting.BLUE + "+ " + I18nUtil.resolveKey("ammo.trait.dwear")); + list.add(TextFormatting.DARK_GREEN + "* " + I18nUtil.resolveKey("ammo.trait.chlorophyte")); + list.add(TextFormatting.YELLOW + "* " + I18nUtil.resolveKey("ammo.trait.homing")); + list.add(TextFormatting.RED + "- " + I18nUtil.resolveKey("ammo.trait.nopen")); } } } diff --git a/src/main/java/com/hbm/items/weapon/ItemGrenade.java b/src/main/java/com/hbm/items/weapon/ItemGrenade.java index 49c48fe642..a033d6dce9 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGrenade.java +++ b/src/main/java/com/hbm/items/weapon/ItemGrenade.java @@ -47,6 +47,7 @@ import com.hbm.items.ModItems; import com.hbm.config.BombConfig; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.SoundEvents; @@ -235,17 +236,17 @@ public EnumRarity getRarity(ItemStack stack) { private String translateFuse() { if(fuse == -1) - return "Impact"; + return I18nUtil.resolveKey("fuse.impact"); if(fuse == 0) - return "Instant"; + return I18nUtil.resolveKey("fuse.instant"); return fuse + "s"; } @Override public void addInformation(ItemStack stack, World worldIn, List list, ITooltipFlag flagIn) { - list.add("Fuse: " + translateFuse()); + list.add(I18nUtil.resolveKey("desc.fuse") + " " + translateFuse()); if (this == ModItems.grenade_if_generic) { list.add(""); @@ -306,14 +307,14 @@ public void addInformation(ItemStack stack, World worldIn, List list, IT list.add(TextFormatting.ITALIC + "If it didn't blow up it means it worked."); } if (this == ModItems.grenade_solinium) { - list.add("§3[Solinium Grenade]§r"); - list.add(" §eRadius: "+(int)BombConfig.soliniumRadius/10+"m§r"); + list.add(TextFormatting.DARK_AQUA + "[" + I18nUtil.resolveKey("trait.soliniumgrenade") + "]"); + list.add(TextFormatting.YELLOW + I18nUtil.resolveKey("desc.radius") + " "+(int)BombConfig.soliniumRadius/10+"m§r"); } if (this == ModItems.grenade_nuclear) { - list.add("§2[Nuclear Grenade]§r"); - list.add(" §eRadius: "+(int)BombConfig.fatmanRadius/2+"m§r"); - list.add("§2[Fallout]§r"); - list.add(" §aRadius: "+(int)(BombConfig.fatmanRadius/2*(1+BombConfig.falloutRange/100))+"m§r"); + list.add(TextFormatting.DARK_GREEN + "[" + I18nUtil.resolveKey("trait.nucleargrenade") + "]"); + list.add(TextFormatting.YELLOW + I18nUtil.resolveKey("desc.radius") + " "+(int)BombConfig.fatmanRadius/2+"m§r"); + list.add(TextFormatting.DARK_GREEN + "[" + I18nUtil.resolveKey("trait.fallout") + "]"); + list.add(TextFormatting.YELLOW + I18nUtil.resolveKey("desc.radius") + " "+(int)(BombConfig.fatmanRadius/2*(1+BombConfig.falloutRange/100))+"m§r"); } } diff --git a/src/main/java/com/hbm/items/weapon/ItemMissile.java b/src/main/java/com/hbm/items/weapon/ItemMissile.java index 80feb7d5cc..c2973c9cef 100644 --- a/src/main/java/com/hbm/items/weapon/ItemMissile.java +++ b/src/main/java/com/hbm/items/weapon/ItemMissile.java @@ -6,6 +6,7 @@ import com.hbm.items.ModItems; import com.hbm.items.special.ItemLootCrate; import com.hbm.main.MainRegistry; +import com.hbm.util.I18nUtil; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.item.Item; @@ -106,12 +107,12 @@ public enum FuelType { public enum Rarity { - COMMON(TextFormatting.GRAY + "Common"), - UNCOMMON(TextFormatting.YELLOW + "Uncommon"), - RARE(TextFormatting.GREEN + "Rare"), - EPIC(TextFormatting.AQUA + "Epic"), - LEGENDARY(TextFormatting.LIGHT_PURPLE + "Legendary"), - SEWS_CLOTHES_AND_SUCKS_HORSE_COCK(TextFormatting.DARK_AQUA + "Strange"); + COMMON(TextFormatting.GRAY + I18nUtil.resolveKey("rarity.common")), + UNCOMMON(TextFormatting.YELLOW + I18nUtil.resolveKey("rarity.uncommon")), + RARE(TextFormatting.GREEN + I18nUtil.resolveKey("rarity.rare")), + EPIC(TextFormatting.AQUA + I18nUtil.resolveKey("rarity.epic")), + LEGENDARY(TextFormatting.LIGHT_PURPLE + I18nUtil.resolveKey("rarity.legendary")), + SEWS_CLOTHES_AND_SUCKS_HORSE_COCK(TextFormatting.DARK_AQUA + I18nUtil.resolveKey("rarity.strange")); String name; @@ -192,29 +193,29 @@ public void addInformation(ItemStack stack, World worldIn, List list, IT try { switch(type) { case CHIP: - list.add(TextFormatting.BOLD + "Inaccuracy: " + TextFormatting.GRAY + (Float)attributes[0] * 100 + "%"); + list.add(TextFormatting.BOLD + I18nUtil.resolveKey("desc.inaccuracy") + " " + TextFormatting.GRAY + (Float)attributes[0] * 100 + "%"); break; case WARHEAD: - list.add(TextFormatting.BOLD + "Size: " + TextFormatting.GRAY + getSize(bottom)); - list.add(TextFormatting.BOLD + "Type: " + TextFormatting.GRAY + getWarhead((WarheadType)attributes[0])); - list.add(TextFormatting.BOLD + "Strength: " + TextFormatting.RED + (Float)attributes[1]); - list.add(TextFormatting.BOLD + "Weight: " + TextFormatting.GRAY + (Float)attributes[2] + "t"); + list.add(TextFormatting.BOLD + I18nUtil.resolveKey("desc.size") + " " + TextFormatting.GRAY + getSize(bottom)); + list.add(TextFormatting.BOLD + I18nUtil.resolveKey("desc.type") + " " + TextFormatting.GRAY + getWarhead((WarheadType)attributes[0])); + list.add(TextFormatting.BOLD + I18nUtil.resolveKey("desc.strength") + " " + TextFormatting.RED + (Float)attributes[1]); + list.add(TextFormatting.BOLD + I18nUtil.resolveKey("desc.weight") + " " + TextFormatting.GRAY + (Float)attributes[2] + "t"); break; case FUSELAGE: - list.add(TextFormatting.BOLD + "Top size: " + TextFormatting.GRAY + getSize(top)); - list.add(TextFormatting.BOLD + "Bottom size: " + TextFormatting.GRAY + getSize(bottom)); - list.add(TextFormatting.BOLD + "Fuel type: " + TextFormatting.GRAY + getFuel((FuelType)attributes[0])); - list.add(TextFormatting.BOLD + "Fuel amount: " + TextFormatting.GRAY + (Float)attributes[1] + "l"); + list.add(TextFormatting.BOLD + I18nUtil.resolveKey("desc.topsize") + " " + TextFormatting.GRAY + getSize(top)); + list.add(TextFormatting.BOLD + I18nUtil.resolveKey("desc.botsize") + " " + TextFormatting.GRAY + getSize(bottom)); + list.add(TextFormatting.BOLD + I18nUtil.resolveKey("desc.fueltype") + " " + TextFormatting.GRAY + getFuel((FuelType)attributes[0])); + list.add(TextFormatting.BOLD + I18nUtil.resolveKey("desc.fuelamnt") + " " + TextFormatting.GRAY + (Float)attributes[1] + "l"); break; case FINS: - list.add(TextFormatting.BOLD + "Size: " + TextFormatting.GRAY + getSize(top)); - list.add(TextFormatting.BOLD + "Inaccuracy: " + TextFormatting.GRAY + (Float)attributes[0] * 100 + "%"); + list.add(TextFormatting.BOLD + I18nUtil.resolveKey("desc.size") + " " + TextFormatting.GRAY + getSize(top)); + list.add(TextFormatting.BOLD + I18nUtil.resolveKey("desc.inaccuracy") + " " + TextFormatting.GRAY + (Float)attributes[0] * 100 + "%"); break; case THRUSTER: - list.add(TextFormatting.BOLD + "Size: " + TextFormatting.GRAY + getSize(top)); - list.add(TextFormatting.BOLD + "Fuel type: " + TextFormatting.GRAY + getFuel((FuelType)attributes[0])); - list.add(TextFormatting.BOLD + "Fuel consumption: " + TextFormatting.GRAY + (Float)attributes[1] + "l/tick"); - list.add(TextFormatting.BOLD + "Max. payload: " + TextFormatting.GRAY + (Float)attributes[2] + "t"); + list.add(TextFormatting.BOLD + I18nUtil.resolveKey("desc.size") + " " + TextFormatting.GRAY + getSize(top)); + list.add(TextFormatting.BOLD + I18nUtil.resolveKey("desc.fuelamnt") + " " + TextFormatting.GRAY + getFuel((FuelType)attributes[0])); + list.add(TextFormatting.BOLD + I18nUtil.resolveKey("desc.fuelcon") + " " + TextFormatting.GRAY + (Float)attributes[1] + "l/tick"); + list.add(TextFormatting.BOLD + I18nUtil.resolveKey("desc.payload") + " " + TextFormatting.GRAY + (Float)attributes[2] + "t"); break; } } catch(Exception ex) { @@ -222,12 +223,12 @@ public void addInformation(ItemStack stack, World worldIn, List list, IT } if(type != PartType.CHIP) - list.add(TextFormatting.BOLD + "Health: " + TextFormatting.GREEN + health + "HP"); + list.add(TextFormatting.BOLD + I18nUtil.resolveKey("desc.health") + " " + TextFormatting.GREEN + health + "HP"); if(this.rarity != null) - list.add(TextFormatting.BOLD + "Rarity: " + TextFormatting.GRAY + this.rarity.name); + list.add(TextFormatting.BOLD + I18nUtil.resolveKey("desc.rarity") + " " + TextFormatting.GRAY + this.rarity.name); if(author != null) - list.add(TextFormatting.WHITE + " by " + author); + list.add(TextFormatting.WHITE + " " + I18nUtil.resolveKey("desc.author") + " " + author); if(witty != null) list.add(TextFormatting.GOLD + " " + TextFormatting.ITALIC + "\"" + witty + "\""); } @@ -236,7 +237,7 @@ public String getSize(PartSize size) { switch(size) { case ANY: - return "Any"; + return I18nUtil.resolveKey("desc.any"); case SIZE_10: return "§e1.0m"; case SIZE_15: @@ -244,7 +245,7 @@ public String getSize(PartSize size) { case SIZE_20: return "§c2.0m"; default: - return "None"; + return I18nUtil.resolveKey("desc.none"); } } @@ -252,33 +253,33 @@ public String getWarhead(WarheadType type) { switch(type) { case HE: - return TextFormatting.YELLOW + "HE"; + return TextFormatting.YELLOW + I18nUtil.resolveKey("warhead.he"); case INC: - return TextFormatting.GOLD + "Incendiary"; + return TextFormatting.GOLD + I18nUtil.resolveKey("warhead.inc"); case CLUSTER: - return TextFormatting.GRAY + "Cluster"; + return TextFormatting.GRAY + I18nUtil.resolveKey("warhead.cluster"); case BUSTER: - return TextFormatting.WHITE + "Bunker Buster"; + return TextFormatting.WHITE + I18nUtil.resolveKey("warhead.buster"); case NUCLEAR: - return TextFormatting.DARK_GREEN + "Nuclear"; + return TextFormatting.DARK_GREEN + I18nUtil.resolveKey("warhead.nuclear"); case TX: - return TextFormatting.DARK_PURPLE + "Thermonuclear (TX)"; + return TextFormatting.DARK_PURPLE + I18nUtil.resolveKey("warhead.tx"); case N2: - return TextFormatting.RED + "N²"; + return TextFormatting.RED + I18nUtil.resolveKey("warhead.n2"); case BALEFIRE: - return TextFormatting.GREEN + "BF"; + return TextFormatting.GREEN + I18nUtil.resolveKey("warhead.balefire"); case SCHRAB: - return TextFormatting.AQUA + "Schrabidium"; + return TextFormatting.AQUA + I18nUtil.resolveKey("warhead.schrab"); case TAINT: - return TextFormatting.DARK_PURPLE + "Taint"; + return TextFormatting.DARK_PURPLE + I18nUtil.resolveKey("warhead.taint"); case CLOUD: - return TextFormatting.LIGHT_PURPLE + "Cloud"; + return TextFormatting.LIGHT_PURPLE + I18nUtil.resolveKey("warhead.cloud"); case VOLCANO: - return TextFormatting.DARK_RED + "Volcano"; + return TextFormatting.DARK_RED + I18nUtil.resolveKey("warhead.volcano"); case MIRV: - return TextFormatting.DARK_PURPLE + "MIRV"; + return TextFormatting.DARK_PURPLE + I18nUtil.resolveKey("warhead.mirv"); default: - return TextFormatting.BOLD + "N/A"; + return TextFormatting.BOLD + I18nUtil.resolveKey("desc.na"); } } @@ -286,17 +287,17 @@ public String getFuel(FuelType type) { switch(type) { case KEROSENE: - return TextFormatting.LIGHT_PURPLE + "Kerosene / Peroxide"; + return TextFormatting.LIGHT_PURPLE + I18nUtil.resolveKey("fuel.kerosene"); case SOLID: - return TextFormatting.GOLD + "Solid Fuel"; + return TextFormatting.GOLD + I18nUtil.resolveKey("fuel.solid"); case HYDROGEN: - return TextFormatting.DARK_AQUA + "Hydrogen / Oxygen"; + return TextFormatting.DARK_AQUA + I18nUtil.resolveKey("fuel.hydrogen"); case XENON: - return TextFormatting.DARK_PURPLE + "Xenon Gas"; + return TextFormatting.DARK_PURPLE + I18nUtil.resolveKey("fuel.xenon"); case BALEFIRE: - return TextFormatting.GREEN + "BF Rocket Fuel / Peroxide"; + return TextFormatting.GREEN + I18nUtil.resolveKey("fuel.balefire"); default: - return TextFormatting.BOLD + "N/A"; + return TextFormatting.BOLD + I18nUtil.resolveKey("desc.na"); } } diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 8bb9f7ff0e..68140232d5 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -92,6 +92,23 @@ public static void addCrafting(){ addRecipeAuto(new ItemStack(ModBlocks.marker_structure, 1), new Object[] { "L", "G", "R", 'L', LAPIS.dust(), 'G', Items.GLOWSTONE_DUST, 'R', Blocks.REDSTONE_TORCH }); + addRecipeAuto(new ItemStack(ModBlocks.conveyor, 16), new Object[] { "LLL", "I I", "LLL", 'L', Items.LEATHER, 'I', IRON.ingot() }); + addRecipeAuto(new ItemStack(ModBlocks.conveyor, 64), new Object[] { "LLL", "I I", "LLL", 'L', RUBBER.ingot(), 'I', IRON.ingot() }); + addRecipeAuto(new ItemStack(ModBlocks.conveyor_express, 8), new Object[] { "CCC", "CLC", "CCC", 'C', ModBlocks.conveyor, 'L', new IngredientContainsTag(ItemFluidCanister.getFullCanister(ModForgeFluids.lubricant)) }); + + Object[] craneCasing = new Object[] { + Blocks.STONEBRICK, 1, + IRON.ingot(), 2, + STEEL.ingot(), 4 + }; + + for(int i = 0; i < craneCasing.length / 2; i++) { + Object casing = craneCasing[i * 2]; + int amount = (int) craneCasing[i * 2 + 1]; + addRecipeAuto(new ItemStack(ModBlocks.crane_inserter, amount), new Object[] { "CCC", "C C", "CBC", 'C', casing, 'B', ModBlocks.conveyor }); + addRecipeAuto(new ItemStack(ModBlocks.crane_ejector, amount), new Object[] { "CCC", "CPC", "CBC", 'C', casing, 'B', ModBlocks.conveyor, 'P', ModItems.piston_pneumatic }); + } + addRecipeAuto(new ItemStack(ModItems.circuit_raw, 1), new Object[] { "A", "R", "S", 'S', STEEL.plate(), 'R', REDSTONE.dust(), 'A', ModItems.wire_aluminium }); addRecipeAuto(new ItemStack(ModItems.circuit_targeting_tier1, 1), new Object[] { "CPC", 'C', ModItems.circuit_aluminium, 'P', REDSTONE.dust() }); addRecipeAuto(new ItemStack(ModItems.circuit_targeting_tier2, 1), new Object[] { "CPC", 'C', ModItems.circuit_copper, 'P', NETHERQUARTZ.dust() }); @@ -2281,6 +2298,16 @@ public static void reg3(){ addRecipeAuto(new ItemStack(ModItems.upgrade_centrifuge, 1), new Object[] { "PHP", "PUP", "DTD", 'P', ModItems.centrifuge_element, 'H', Blocks.HOPPER, 'U', ModItems.upgrade_shredder, 'D', ANY_PLASTIC.ingot(), 'T', ModBlocks.machine_transformer }); addRecipeAuto(new ItemStack(ModItems.upgrade_crystallizer, 1), new Object[] { "PHP", "CUC", "DTD", 'P', new IngredientContainsTag(ItemFluidTank.getFullBarrel(ModForgeFluids.acid)), 'H', ModItems.circuit_targeting_tier4, 'C', ModBlocks.barrel_steel, 'U', ModItems.upgrade_centrifuge, 'D', ModItems.motor, 'T', ModBlocks.machine_transformer }); addRecipeAuto(new ItemStack(ModItems.upgrade_screm, 1), new Object[] { "SUS", "SCS", "SUS", 'S', STEEL.plate(), 'U', ModItems.upgrade_overdrive_3, 'C', ModItems.crystal_xen }); + addRecipeAuto(new ItemStack(ModItems.upgrade_stack_1, 1), new Object[] { " C ", "PUP", " C ", 'C', ModItems.circuit_aluminium, 'P', ModItems.piston_pneumatic, 'U', ModItems.upgrade_template }); + addRecipeAuto(new ItemStack(ModItems.upgrade_stack_2, 1), new Object[] { " C ", "PUP", " C ", 'C', ModItems.circuit_copper, 'P', ModItems.piston_hydraulic, 'U', new ItemStack(ModItems.upgrade_stack_1) }); + addRecipeAuto(new ItemStack(ModItems.upgrade_stack_3, 1), new Object[] { " C ", "PUP", " C ", 'C', ModItems.circuit_red_copper, 'P', ModItems.piston_electro, 'U', new ItemStack(ModItems.upgrade_stack_2) }); + addRecipeAuto(new ItemStack(ModItems.upgrade_ejector_1, 1), new Object[] { " C ", "PUP", " C ", 'C', ModItems.plate_copper, 'P', ModItems.motor, 'U', ModItems.upgrade_template }); + addRecipeAuto(new ItemStack(ModItems.upgrade_ejector_2, 1), new Object[] { " C ", "PUP", " C ", 'C', ModItems.plate_gold, 'P', ModItems.motor, 'U', new ItemStack(ModItems.upgrade_ejector_1) }); + addRecipeAuto(new ItemStack(ModItems.upgrade_ejector_3, 1), new Object[] { " C ", "PUP", " C ", 'C', ModItems.plate_saturnite, 'P', ModItems.motor, 'U', new ItemStack(ModItems.upgrade_ejector_2) }); + + addRecipeAuto(new ItemStack(ModItems.piston_pneumatic, 4), new Object[] { " I ", "CPC", " I ", 'I', IRON.ingot(), 'C', CU.ingot(), 'P', IRON.plate() }); + addRecipeAuto(new ItemStack(ModItems.piston_hydraulic, 4), new Object[] { " I ", "CPC", " I ", 'I', STEEL.ingot(), 'C', TI.ingot(), 'P', new IngredientContainsTag(ItemFluidCanister.getFullCanister(ModForgeFluids.lubricant)) }); + addRecipeAuto(new ItemStack(ModItems.piston_electro, 4), new Object[] { " I ", "CPC", " I ", 'I', ANY_RESISTANTALLOY.ingot(), 'C', ANY_PLASTIC.ingot(), 'P', ModItems.motor }); addRecipeAuto(new ItemStack(ModItems.charge_railgun), new Object[] { "PDP", "DDD", "PDP", 'P', STEEL.plate(), 'D', new IngredientContainsTag(ItemFluidTank.getFullTank(ModForgeFluids.deuterium)) }); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index f1d18c30d9..b8eae63041 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -7,6 +7,8 @@ import java.util.List; import java.util.Random; +import com.hbm.tileentity.network.TileEntityCraneExtractor; +import com.hbm.tileentity.network.TileEntityCraneInserter; import org.apache.logging.log4j.Logger; import com.hbm.blocks.ModBlocks; @@ -603,6 +605,8 @@ public void preInit(FMLPreInitializationEvent event) { aMatDNS.setRepairItem(new ItemStack(ModItems.plate_armor_dnt)); NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiHandler()); + GameRegistry.registerTileEntity(TileEntityCraneExtractor.class, new ResourceLocation(RefStrings.MODID, "tileentity_craneejector")); + GameRegistry.registerTileEntity(TileEntityCraneInserter.class, new ResourceLocation(RefStrings.MODID, "tileentity_craneinserter")); GameRegistry.registerTileEntity(TileEntityDummy.class, new ResourceLocation(RefStrings.MODID, "tileentity_dummy")); GameRegistry.registerTileEntity(TileEntityMachineAssembler.class, new ResourceLocation(RefStrings.MODID, "tileentity_machine_assembler")); GameRegistry.registerTileEntity(TileEntityDiFurnace.class, new ResourceLocation(RefStrings.MODID, "tileentity_machine_difurnace")); diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 3b8dc55029..f4826d8f7c 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -16,6 +16,7 @@ import java.util.Map.Entry; import java.util.Random; +import com.hbm.util.I18nUtil; import org.apache.commons.lang3.math.NumberUtils; import org.apache.logging.log4j.Level; @@ -761,6 +762,12 @@ public void onLivingDeath(LivingDeathEvent event) { } if(event.getEntity().getUniqueID().toString().equals(Library.Alcater)) { + if(event.getSource() instanceof EntityDamageSource){ + if(((EntityDamageSource)event.getSource()).getImmediateSource() instanceof EntityLivingBase){ + EntityLivingBase attacker = (EntityLivingBase) ((EntityDamageSource)event.getSource()).getImmediateSource(); + ContaminationUtil.contaminate(attacker, HazardType.RADIATION, ContaminationType.CREATIVE, 690F); + } + } event.getEntity().entityDropItem(new ItemStack(ModItems.bottle_rad).setStackDisplayName("§aAlcater's §2Neo §aNuka§r"), 0.5F); } @@ -1021,15 +1028,15 @@ public void clientJoinServer(PlayerLoggedInEvent e) { PacketDispatcher.sendTo(new KeybindPacket(EnumKeybind.TOGGLE_JETPACK, props.getEnableBackpack()), playerMP); if (GeneralConfig.enableWelcomeMessage) { - e.player.sendMessage(new TextComponentTranslation("§3Welcome back§r")); + e.player.sendMessage(new TextComponentTranslation(TextFormatting.DARK_AQUA + I18nUtil.resolveKey("chat.welcome")+"§r")); } if(HTTPHandler.newVersion && GeneralConfig.changelog) { - e.player.sendMessage(new TextComponentString("§aNew§e version §3" + HTTPHandler.versionNumber + "§e is available§r")); - e.player.sendMessage(new TextComponentString("§ePlaying on version §7" + RefStrings.VERSION + "§e right now§r")); + e.player.sendMessage(new TextComponentString(TextFormatting.GREEN + I18nUtil.resolveKey("chat.newver1") + TextFormatting.YELLOW + I18nUtil.resolveKey("chat.newver2") + "§3" + HTTPHandler.versionNumber + TextFormatting.YELLOW + I18nUtil.resolveKey("chat.newver3")+"§r")); + e.player.sendMessage(new TextComponentString(TextFormatting.YELLOW + I18nUtil.resolveKey("chat.curver1") +"§7" + RefStrings.VERSION + TextFormatting.YELLOW + I18nUtil.resolveKey("chat.curver2")+"§r")); if(HTTPHandler.changes != ""){ String[] lines = HTTPHandler.changes.split("\\$"); - e.player.sendMessage(new TextComponentString("§6[New Features]§r"));//RefStrings.CHANGELOG + e.player.sendMessage(new TextComponentString(TextFormatting.GOLD + "["+I18nUtil.resolveKey("chat.newfeat")+"]"+"§r"));//RefStrings.CHANGELOG for(String w: lines){ e.player.sendMessage(new TextComponentString(w));//RefStrings.CHANGELOG } @@ -1041,7 +1048,7 @@ public void clientJoinServer(PlayerLoggedInEvent e) { } if(GeneralConfig.duckButton){ if(e.player instanceof EntityPlayerMP && !e.player.getEntityData().getCompoundTag(EntityPlayer.PERSISTED_NBT_TAG).getBoolean("hasDucked")){ - PacketDispatcher.sendTo(new PlayerInformPacket("Press O to Duck!"), (EntityPlayerMP)e.player); + PacketDispatcher.sendTo(new PlayerInformPacket(I18nUtil.resolveKey("chat.duck")), (EntityPlayerMP)e.player); } } } diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index e4331524a4..984ddfc76e 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -535,50 +535,17 @@ public class ResourceManager { public static final IModelCustom stopsign = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/weapons/stopsign.obj")); public static final IModelCustom gavel = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/gavel.obj")); public static final IModelCustom crucible = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/crucible.obj")); - - // Control panel - public static final IModelCustom control_panel_custom = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/control_panel/control_panel_custom.obj")); - public static final IModelCustom control_panel_front = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/control_panel/control_panel_front.obj")); - - public static final ResourceLocation control_panel_custom_tex = new ResourceLocation(RefStrings.MODID, "textures/models/misc/control_panel.png"); - - // Controls - public static final IModelCustom ctrl_button_push = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/control_panel/button_push.obj")); - public static final IModelCustom ctrl_button_emergency_push = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/control_panel/button_emergency_push.obj")); - public static final IModelCustom ctrl_button_encased_push = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/control_panel/button_encased_push.obj")); - public static final IModelCustom ctrl_switch_toggle = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/control_panel/switch_toggle.obj")); - public static final IModelCustom ctrl_switch_rotary_toggle = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/control_panel/switch_rotary_toggle.obj")); - public static final IModelCustom ctrl_display_seven_seg = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/control_panel/display_seven_seg.obj")); - public static final IModelCustom ctrl_indicator_lamp = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/control_panel/indicator_lamp.obj")); - public static final IModelCustom ctrl_slider_vertical = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/control_panel/slider_vertical.obj")); - public static final IModelCustom ctrl_knob_control = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/control_panel/knob_control.obj")); - public static final IModelCustom ctrl_dial_square = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/control_panel/dial_square.obj")); - public static final IModelCustom ctrl_dial_large = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/control_panel/dial_large.obj")); - - public static final ResourceLocation ctrl_button_push_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/button_push.png"); - public static final ResourceLocation ctrl_button_emergency_push_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/button_emergency_push.png"); - public static final ResourceLocation ctrl_button_encased_push_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/button_encased_push.png"); - public static final ResourceLocation ctrl_switch_toggle_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/switch_toggle.png"); - public static final ResourceLocation ctrl_switch_rotary_toggle_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/switch_rotary_toggle.png"); - public static final ResourceLocation ctrl_display_seven_seg_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/display_7seg.png"); - public static final ResourceLocation ctrl_slider_vertical_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/slider_vertical.png"); - public static final ResourceLocation ctrl_knob_control_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/knob_control.png"); - public static final ResourceLocation ctrl_dial_square_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/dial_square.png"); - public static final ResourceLocation ctrl_dial_large_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/dial_large.png"); - - public static final ResourceLocation ctrl_button_push_gui_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/button_push_gui.png"); - public static final ResourceLocation ctrl_button_emergency_push_gui_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/button_emergency_push_gui.png"); - public static final ResourceLocation ctrl_button_encased_push_gui_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/button_encased_push_gui.png"); - public static final ResourceLocation ctrl_switch_toggle_gui_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/switch_toggle_gui.png"); - public static final ResourceLocation ctrl_switch_rotary_toggle_gui_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/switch_rotary_toggle_gui.png"); - public static final ResourceLocation ctrl_display_seven_seg_gui_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/display_7seg_gui.png"); - public static final ResourceLocation ctrl_indicator_lamp_gui_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/indicator_lamp_gui.png"); - public static final ResourceLocation ctrl_slider_vertical_gui_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/slider_vertical_gui.png"); - public static final ResourceLocation ctrl_knob_control_gui_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/knob_control_gui.png"); - public static final ResourceLocation ctrl_dial_square_gui_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/dial_square_gui.png"); - public static final ResourceLocation ctrl_dial_large_gui_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/dial_large_gui.png"); - + + + //Control panel + public static final IModelCustom control_panel0 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/control_panel/control0.obj")); + public static final IModelCustom ctrl_button0 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/control_panel/button0.obj")); + public static final ResourceLocation control_panel0_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/control0.png"); + public static final ResourceLocation ctrl_button0_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/button0.png"); + public static final ResourceLocation ctrl_button0_gui_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/button0_gui.png"); + //Textures TEs + public static final ResourceLocation universal = new ResourceLocation(RefStrings.MODID, "textures/models/TheGadget3_.png"); //Freons Turrets Textures diff --git a/src/main/java/com/hbm/modules/ItemHazardModule.java b/src/main/java/com/hbm/modules/ItemHazardModule.java index ed582e7cae..6ee6a871dc 100644 --- a/src/main/java/com/hbm/modules/ItemHazardModule.java +++ b/src/main/java/com/hbm/modules/ItemHazardModule.java @@ -214,9 +214,11 @@ public void applyEffects(EntityLivingBase entity, float mod, int slot, boolean c } public static float getNewValue(float radiation){ - if(radiation < 1000000){ + if(radiation < 1000){ return radiation; - } else if(radiation < 1000000000){ + } else if (radiation<1000000){ + return radiation * 0.001F; + }else if(radiation < 1000000000){ return radiation * 0.000001F; } else{ return radiation * 0.000000001F; @@ -224,25 +226,28 @@ public static float getNewValue(float radiation){ } public static String getSuffix(float radiation){ - if(radiation < 1000000){ + if(radiation < 1000){ return ""; - } else if(radiation < 1000000000){ - return "M"; + } else if(radiation < 1000000){ + return I18nUtil.resolveKey("desc.thd"); + }else if(radiation < 1000000000){ + return I18nUtil.resolveKey("desc.mil"); } else{ - return "G"; + return I18nUtil.resolveKey("desc.bil"); } } + public void addInformation(ItemStack stack, List list, ITooltipFlag flagIn) { if(this.radiation * tempMod > 0) { list.add(TextFormatting.GREEN + "[" + I18nUtil.resolveKey("trait.radioactive") + "]"); float itemRad = radiation * tempMod; - list.add(TextFormatting.YELLOW + (Library.roundFloat(getNewValue(itemRad), 3)+ getSuffix(itemRad) + " RAD/s")); + list.add(TextFormatting.YELLOW + (Library.roundFloat(getNewValue(itemRad), 3)+ getSuffix(itemRad) + " " + I18nUtil.resolveKey("desc.rads"))); if(stack.getCount() > 1) { float stackRad = radiation * tempMod * stack.getCount(); - list.add(TextFormatting.YELLOW + ("Stack: " + Library.roundFloat(getNewValue(stackRad), 3) + getSuffix(stackRad) + " RAD/s")); + list.add(TextFormatting.YELLOW + (I18nUtil.resolveKey("desc.stack") + " " + Library.roundFloat(getNewValue(stackRad), 3) + getSuffix(stackRad) + " " + I18nUtil.resolveKey("desc.rads"))); } } @@ -289,9 +294,9 @@ else if(this.toxic > 2) if(this.digamma * tempMod > 0) { list.add(TextFormatting.RED + "[" + I18nUtil.resolveKey("trait.digamma") + "]"); - list.add(TextFormatting.DARK_RED + "" + Library.roundFloat(digamma * tempMod * 1000F, 2) + " mDRX/s"); + list.add(TextFormatting.DARK_RED + "" + Library.roundFloat(digamma * tempMod * 1000F, 2) + " " + I18nUtil.resolveKey("desc.digammaed")); if(stack.getCount() > 1) { - list.add(TextFormatting.DARK_RED + ("Stack: " + Library.roundFloat(digamma * tempMod * stack.getCount() * 1000F, 2) + " mDRX/s")); + list.add(TextFormatting.DARK_RED + I18nUtil.resolveKey("desc.stack") + " " + Library.roundFloat(digamma * tempMod * stack.getCount() * 1000F, 2) + " " + I18nUtil.resolveKey("desc.digamma;ed")); } } diff --git a/src/main/java/com/hbm/modules/ModulePatternMatcher.java b/src/main/java/com/hbm/modules/ModulePatternMatcher.java new file mode 100644 index 0000000000..1c4c7d807b --- /dev/null +++ b/src/main/java/com/hbm/modules/ModulePatternMatcher.java @@ -0,0 +1,152 @@ +package com.hbm.modules; + +import com.hbm.util.ItemStackUtil; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +import java.util.List; + +public class ModulePatternMatcher { + public static final String MODE_EXACT = "exact"; + public static final String MODE_WILDCARD = "wildcard"; + public String[] modes; + + public ModulePatternMatcher() { + this.modes = new String[1]; + } + + public ModulePatternMatcher(int count) { + this.modes = new String[count]; + } + + public void initPatternSmart(World world, ItemStack stack, int i) { + + if(world.isRemote) return; + + if(stack == null) { + modes[i] = null; + return; + } + + List names = ItemStackUtil.getOreDictNames(stack); + + if(iterateAndCheck(names, i ,"ingot")) return; + if(iterateAndCheck(names, i ,"block")) return; + if(iterateAndCheck(names, i ,"dust")) return; + if(iterateAndCheck(names, i ,"nugget")) return; + if(iterateAndCheck(names, i ,"plate")) return; + + if(stack.getHasSubtypes()) { + modes[i] = MODE_EXACT; + } else { + modes[i] = MODE_WILDCARD; + } + } + + private boolean iterateAndCheck(List names, int i, String prefix) { + + for(String s : names) { + if(s.startsWith(prefix)) { + modes[i] = s; + return true; + } + } + + return false; + } + + public void initPatternStandard(World world, ItemStack stack, int i) { + + if(world.isRemote) return; + + if(stack == null) { + modes[i] = null; + return; + } + + if(stack.getHasSubtypes()) { + modes[i] = MODE_EXACT; + } else { + modes[i] = MODE_WILDCARD; + } + } + + public void nextMode(World world, ItemStack pattern, int i) { + + if(world.isRemote) return; + + if(pattern == null) { + modes[i] = null; + return; + } + + if(modes[i] == null) { + modes[i] = MODE_EXACT; + } else if(MODE_EXACT.equals(modes[i])) { + modes[i] = MODE_WILDCARD; + } else if(MODE_WILDCARD.equals(modes[i])) { + + List names = ItemStackUtil.getOreDictNames(pattern); + + if(names.isEmpty()) { + modes[i] = MODE_EXACT; + } else { + modes[i] = names.get(0); + } + } else { + + List names = ItemStackUtil.getOreDictNames(pattern); + + if(names.size() < 2 || modes[i].equals(names.get(names.size() - 1))) { + modes[i] = MODE_EXACT; + } else { + + for(int j = 0; j < names.size() - 1; j++) { + + if(modes[i].equals(names.get(j))) { + modes[i] = names.get(j + 1); + return; + } + } + } + } + } + + public boolean isValidForFilter(ItemStack filter, int index, ItemStack input) { + + String mode = modes[index]; + + if(mode == null) { + modes[index] = mode = MODE_EXACT; + } + + switch(mode) { + case MODE_EXACT: return input.isItemEqual(filter) && ItemStack.areItemStackTagsEqual(input, filter); + case MODE_WILDCARD: return input.getItem() == filter.getItem() && ItemStack.areItemStackTagsEqual(input, filter); + default: + List keys = ItemStackUtil.getOreDictNames(input); + return keys.contains(mode); + } + } + + public void readFromNBT(NBTTagCompound nbt) { + + for(int i = 0; i < modes.length; i++) { + if(nbt.hasKey("mode" + i)) { + modes[i] = nbt.getString("mode" + i); + } else { + modes[i] = null; + } + } + } + + public void writeToNBT(NBTTagCompound nbt) { + + for(int i = 0; i < modes.length; i++) { + if(modes[i] != null) { + nbt.setString("mode" + i, modes[i]); + } + } + } +} diff --git a/src/main/java/com/hbm/packet/ControlPanelUpdatePacket.java b/src/main/java/com/hbm/packet/ControlPanelUpdatePacket.java index 686d2d214b..47458dfeef 100644 --- a/src/main/java/com/hbm/packet/ControlPanelUpdatePacket.java +++ b/src/main/java/com/hbm/packet/ControlPanelUpdatePacket.java @@ -94,12 +94,9 @@ public void toBytes(ByteBuf buf){ NBTTagCompound tag = new NBTTagCompound(); int i = 0; for(VarUpdate u : toUpdate) { - if (u != null) { - buffer.writeInt(u.varListIdx); - buffer.writeString(u.varName); - if (u.data != null) - tag.setTag("" + i, u.data.writeToNBT()); - } + buffer.writeInt(u.varListIdx); + buffer.writeString(u.varName); + tag.setTag("" + i, u.data.writeToNBT()); i++; } buffer.writeCompoundTag(tag); @@ -125,9 +122,9 @@ public IMessage onMessage(ControlPanelUpdatePacket m, MessageContext ctx){ } } else { for(VarUpdate u : m.toUpdate) { - if(u.varName != null) { + if(u.data != null) { if(u.varListIdx == -1){ - if(u.data == null){ + if(u.varName == null){ control.globalVars.remove(u.varName); } else { control.globalVars.put(u.varName, u.data); @@ -135,7 +132,7 @@ public IMessage onMessage(ControlPanelUpdatePacket m, MessageContext ctx){ } else { if(u.varListIdx >= control.controls.size()) continue; - if(u.data == null){ + if(u.varName == null){ control.controls.get(u.varListIdx).vars.remove(u.varName); } else { control.controls.get(u.varListIdx).vars.put(u.varName, u.data); diff --git a/src/main/java/com/hbm/packet/PacketDispatcher.java b/src/main/java/com/hbm/packet/PacketDispatcher.java index e2fa1076f9..4cadd2a70f 100644 --- a/src/main/java/com/hbm/packet/PacketDispatcher.java +++ b/src/main/java/com/hbm/packet/PacketDispatcher.java @@ -142,8 +142,6 @@ public static final void registerPackets(){ wrapper.registerMessage(NBTControlPacket.Handler.class, NBTControlPacket.class, i++, Side.SERVER); wrapper.registerMessage(AnvilCraftPacket.Handler.class, AnvilCraftPacket.class, i++, Side.SERVER); wrapper.registerMessage(ControlPanelUpdatePacket.Handler.class, ControlPanelUpdatePacket.class, i++, Side.CLIENT); -// wrapper.registerMessage(ControlPanelLinkerServerPacket.Handler.class, ControlPanelUpdatePacket.class, i++, Side.SERVER); -// wrapper.registerMessage(ControlPanelLinkerClientPacket.Handler.class, ControlPanelUpdatePacket.class, i++, Side.CLIENT); } public static void sendTo(IMessage message, EntityPlayerMP player){ diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index b5f455699e..ba4ef41bb5 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -1509,38 +1509,22 @@ public void renderCommon() { bindTexture(ResourceManager.fel_tex); ResourceManager.fel.renderAll(); GlStateManager.shadeModel(GL11.GL_FLAT); }}); - renderers.put(Item.getItemFromBlock(ModBlocks.control_panel_custom), new ItemRenderBase() { + renderers.put(Item.getItemFromBlock(ModBlocks.control0), new ItemRenderBase() { public void renderInventory() { GL11.glTranslated(-2.5, -1, 0); GL11.glScaled(12, 12, 12); } public void renderCommon() { GL11.glTranslated(1.5, 1, -1); - bindTexture(ResourceManager.control_panel_custom_tex); + bindTexture(ResourceManager.control_panel0_tex); GlStateManager.shadeModel(GL11.GL_SMOOTH); - ResourceManager.control_panel_custom.renderAll(); + ResourceManager.control_panel0.renderAll(); GlStateManager.shadeModel(GL11.GL_FLAT); } public boolean doNullTransform(){ return true; } }); -// renderers.put(Item.getItemFromBlock(ModBlocks.control_panel_front), new ItemRenderBase() { -// public void renderInventory() { -// GL11.glTranslated(-1, -2, 0); -// GL11.glScaled(5, 5, 5); -// } -// public void renderCommon() { -// GL11.glTranslated(1.5, .5, -1); -// bindTexture(ResourceManager.white); -// GlStateManager.shadeModel(GL11.GL_SMOOTH); -// ResourceManager.control_panel_front.renderAll(); -// GlStateManager.shadeModel(GL11.GL_FLAT); -// } -// public boolean doNullTransform(){ -// return true; -// } -// }); renderers.put(Item.getItemFromBlock(ModBlocks.large_vehicle_door), new ItemRenderBase(){ public void renderInventory() { GL11.glTranslated(0, -4, 0); diff --git a/src/main/java/com/hbm/render/tileentity/RenderControlPanel.java b/src/main/java/com/hbm/render/tileentity/RenderControlPanel.java index c0b78cca9a..336b2aa3ae 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderControlPanel.java +++ b/src/main/java/com/hbm/render/tileentity/RenderControlPanel.java @@ -1,12 +1,5 @@ package com.hbm.render.tileentity; -import com.hbm.inventory.control_panel.ControlPanel; -import com.hbm.lib.RefStrings; -import com.hbm.main.MainRegistry; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.BufferBuilder; -import net.minecraft.client.renderer.vertex.DefaultVertexFormats; -import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; import com.hbm.main.ClientProxy; @@ -21,133 +14,28 @@ public class RenderControlPanel extends TileEntitySpecialRenderer> 2) == 1); - boolean isDown = ((te.getBlockMetadata() >> 3) == 1); - - if (isUp) { - GL11.glRotatef(-180, 1, 0, 0); - GL11.glRotatef(-90, 0, 0, 1); - GL11.glTranslated(0, -1, 0); - } else if (isDown) { - GL11.glRotatef(90, 0, 0, 1); - } else { - GL11.glTranslated(-.5, -.5, 0); + switch(te.getBlockMetadata()){ + case 4: + GL11.glRotatef(180, 0F, 1F, 0F); break; + case 2: + GL11.glRotatef(90, 0F, 1F, 0F); break; + case 5: + GL11.glRotatef(0, 0F, 1F, 0F); break; + case 3: + GL11.glRotatef(270, 0F, 1F, 0F); break; } - GlStateManager.enableRescaleNormal(); -// bindTexture(ResourceManager.control_panel_custom_tex); - - GL11.glPushMatrix(); + bindTexture(ResourceManager.control_panel0_tex); + ResourceManager.control_panel0.renderAll(); + GL11.glPopMatrix(); GL11.glTranslated(-0.5, 0, -0.5); - - float a_off = te.panel.a_off; - float b_off = te.panel.b_off; - float c_off = te.panel.c_off; - float d_off = te.panel.d_off; - float height = te.panel.height; - float angle = te.panel.angle; - - float height1 = ControlPanel.getSlopeHeightFromZ(1-c_off, height, -angle); - float height0 = ControlPanel.getSlopeHeightFromZ(a_off, height, -angle); - - if (height != 0) { - GlStateManager.disableLighting(); - ResourceLocation texxy = new ResourceLocation(RefStrings.MODID + ":textures/models/misc/control_panel.png"); - bindTexture(texxy); - net.minecraft.client.renderer.Tessellator tess = net.minecraft.client.renderer.Tessellator.getInstance(); - BufferBuilder buf = tess.getBuffer(); - // back - buf.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); - buf.pos(a_off, 0, 1 - d_off).tex(1, 1).endVertex(); - buf.pos(a_off, height0, 1 - d_off).tex(1, 0).endVertex(); - buf.pos(a_off, height0, b_off).tex(0, 0).endVertex(); - buf.pos(a_off, 0, b_off).tex(0, 1).endVertex(); - // left - buf.pos(1 - c_off, 0, 1 - d_off).tex(1, 1).endVertex(); - buf.pos(1 - c_off, height1, 1 - d_off).tex(1, 0).endVertex(); - buf.pos(a_off, height0, 1 - d_off).tex(0, 0).endVertex(); - buf.pos(a_off, 0, 1 - d_off).tex(0, 1).endVertex(); - // right - buf.pos(a_off, 0, b_off).tex(1, 1).endVertex(); - buf.pos(a_off, height0, b_off).tex(1, 0).endVertex(); - buf.pos(1 - c_off, height1, b_off).tex(0, 0).endVertex(); - buf.pos(1 - c_off, 0, b_off).tex(0, 1).endVertex(); - // front - buf.pos(1 - c_off, 0, b_off).tex(1, 1).endVertex(); - buf.pos(1 - c_off, height1, b_off).tex(1, 0).endVertex(); - buf.pos(1 - c_off, height1, 1 - d_off).tex(0, 0).endVertex(); - buf.pos(1 - c_off, 0, 1 - d_off).tex(0, 1).endVertex(); -// // top - buf.pos(1 - c_off, height1, b_off).tex(1, 1).endVertex(); - buf.pos(a_off, height0, b_off).tex(1, 0).endVertex(); - buf.pos(a_off, height0, 1 - d_off).tex(0, 0).endVertex(); - buf.pos(1 - c_off, height1, 1 - d_off).tex(0, 1).endVertex(); - // bottom - buf.pos(1 - c_off, 0, 1 - d_off).tex(0, 1).endVertex(); - buf.pos(a_off, 0, 1 - d_off).tex(0, 0).endVertex(); - buf.pos(a_off, 0, b_off).tex(1, 0).endVertex(); - buf.pos(1 - c_off, 0, b_off).tex(1, 1).endVertex(); - tess.draw(); - } - - GlStateManager.enableLighting(); + te.panel.transform.store(ClientProxy.AUX_GL_BUFFER); + ClientProxy.AUX_GL_BUFFER.rewind(); + GL11.glMultMatrix(ClientProxy.AUX_GL_BUFFER); + te.panel.render(); GlStateManager.disableRescaleNormal(); GL11.glPopMatrix(); - GL11.glPopMatrix(); } - - public void renderFrontPanel(TileEntityControlPanel te, double x, double y, double z, float partialTicks, int destroyStage, float alpha) { - GL11.glTranslated(x+.5F, y, z+.5F); - GL11.glPushMatrix(); - - switch(te.getBlockMetadata()) { - case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; - case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; - case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; - case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; - } - - GL11.glPushMatrix(); - bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/models/control_panel/control_panel_front.png")); - ResourceManager.control_panel_front.renderAll(); - GL11.glPopMatrix(); - - GL11.glPopMatrix(); - } - } diff --git a/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java b/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java index 6395313b6f..28da0c2452 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java +++ b/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java @@ -49,12 +49,9 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase implements ITi private AudioWrapper audio; private AudioWrapper audio2; - // if a control panel sends a toggle from 0->1, it masters the door until toggled again. - private boolean toggledByPanel = false; - public TileEntityDoorGeneric(){ } - + @Override public void update(){ if(doorType == null) @@ -163,10 +160,6 @@ public void update(){ if(redstonePower == -1){ redstonePower = 0; } - - if (toggledByPanel) { - tryOpen(-1); - } } } @@ -242,8 +235,6 @@ public boolean tryToggle(int passcode){ } public boolean tryClose(int passcode){ - if (toggledByPanel) - return false; if(isLocked() && passcode != lock) return false; if(state == DoorState.OPEN) { @@ -385,11 +376,9 @@ public void broadcastControlEvt(){ } @Override - public void receiveEvent(BlockPos from, ControlEvent e) { - if (e.name.equals("door_toggle")) { - if (!isLocked() || (isLocked() && e.vars.get("passcode").getNumber() == lock)) { - toggledByPanel = !toggledByPanel; - } + public void receiveEvent(BlockPos from, ControlEvent e){ + if(e.name.equals("door_toggle")){ + tryToggle((int)e.vars.get("passcode").getNumber()); } } diff --git a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java index 89f117bdf2..566ca0c8a1 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java @@ -2,8 +2,6 @@ import com.hbm.blocks.ModBlocks; import com.hbm.interfaces.Spaghetti; -import com.hbm.inventory.control_panel.ControlEventSystem; -import com.hbm.inventory.control_panel.IControllable; import com.hbm.lib.ItemStackHandlerWrapper; import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; @@ -12,8 +10,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumFacing; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.fluids.FluidTank; import net.minecraftforge.fml.common.network.NetworkRegistry.TargetPoint; @@ -24,6 +20,7 @@ public abstract class TileEntityMachineBase extends TileEntityLoadedBase implements INBTPacketReceiver { public ItemStackHandler inventory; + public ItemStack slots[]; private String customName; @@ -72,6 +69,20 @@ public boolean isUseableByPlayer(EntityPlayer player) { public int[] getAccessibleSlotsFromSide(EnumFacing e) { return new int[] {}; } + + + public void setInventorySlotContents(int i, ItemStack itemStack) { + slots[i] = itemStack; + if(itemStack != ItemStack.EMPTY && itemStack.getCount() > getInventoryStackLimit()) + { + itemStack.setCount(getInventoryStackLimit()); + } + } + + + public int getInventoryStackLimit() { + return 64; + } public int getGaugeScaled(int i, FluidTank tank) { return tank.getFluidAmount() * i / tank.getCapacity(); @@ -158,4 +169,5 @@ public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { public boolean hasCapability(Capability capability, EnumFacing facing) { return (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY && inventory != null) || super.hasCapability(capability, facing); } + } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityControlPanel.java b/src/main/java/com/hbm/tileentity/machine/TileEntityControlPanel.java index 125a215517..2d511dd35b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityControlPanel.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityControlPanel.java @@ -1,30 +1,18 @@ package com.hbm.tileentity.machine; -import java.util.*; +import java.util.Arrays; +import java.util.List; -import com.hbm.blocks.BlockControlPanelType; -import com.hbm.inventory.control_panel.*; -import com.hbm.lib.Library; -import com.hbm.main.MainRegistry; -import com.hbm.packet.NBTControlPacket; -import li.cil.oc.api.machine.Arguments; -import li.cil.oc.api.machine.Callback; -import li.cil.oc.api.machine.Context; -import li.cil.oc.api.network.SimpleComponent; -import net.minecraft.block.state.IBlockState; -import net.minecraft.item.EnumDyeColor; -import net.minecraft.item.ItemBlock; -import net.minecraft.util.EnumFacing; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.Vec3d; -import net.minecraft.world.IBlockAccess; -import net.minecraftforge.fml.common.Optional; import org.lwjgl.opengl.GL11; import org.lwjgl.util.vector.Matrix4f; import org.lwjgl.util.vector.Vector3f; import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.control_panel.Control; +import com.hbm.inventory.control_panel.ControlEvent; +import com.hbm.inventory.control_panel.ControlEventSystem; +import com.hbm.inventory.control_panel.ControlPanel; +import com.hbm.inventory.control_panel.IControllable; import com.hbm.packet.ControlPanelUpdatePacket; import com.hbm.packet.PacketDispatcher; @@ -41,21 +29,19 @@ import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.items.ItemStackHandler; -@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityControlPanel extends TileEntity implements ITickable, IControllable, IControlReceiver, SimpleComponent { +public class TileEntityControlPanel extends TileEntity implements ITickable, IControllable, IControlReceiver { public ItemStackHandler inventory; public ControlPanel panel; - public BlockControlPanelType panelType = BlockControlPanelType.CUSTOM_PANEL; - public TileEntityControlPanel() { + public TileEntityControlPanel(){ inventory = new ItemStackHandler(1){ @Override protected void onContentsChanged(int slot){ markDirty(); } }; - this.panel = new ControlPanel(this, 0.25F, (float) Math.toRadians(20), 0, 0, 0.25F, 0); + panel = new ControlPanel(this, 8, 4); } @Override @@ -72,59 +58,30 @@ public void onLoad(){ } @SideOnly(Side.CLIENT) - public void updateTransform() { + public void loadClient(){ Matrix4f mat = new Matrix4f(); - - boolean isDown = ((getBlockMetadata() >> 2) == 1); - boolean isUp = ((getBlockMetadata() >> 3) == 1); - - // ○| ̄|_ - // it works, ignore - if (isUp) { - mat.translate(new Vector3f(0.5F, panel.height, 0.5F)); - rotateByMetadata(mat, getBlockMetadata()); - mat.rotate(-panel.angle, new Vector3f(0, 0, 1)); - mat.rotate((float) Math.toRadians(90), new Vector3f(0, 1, 0)); - } else if (isDown) { - mat.translate(new Vector3f(0.5F, 1-panel.height, 0.5F)); - rotateByMetadata(mat, getBlockMetadata()); - mat.rotate((float) Math.toRadians(180), new Vector3f(1, 0, 0)); - mat.rotate(-panel.angle, new Vector3f(0, 0, 1)); - mat.rotate((float) Math.toRadians(90), new Vector3f(0, 1, 0)); - } else { - mat.translate(new Vector3f(0.5F, 0, 0.5F)); - rotateByMetadata(mat, getBlockMetadata()); - mat.rotate((float) Math.toRadians(-90), new Vector3f(1, 0, 0)); - mat.rotate((float) Math.toRadians(-90), new Vector3f(0, 0, 1)); - mat.translate(new Vector3f(0, panel.height-0.5F, 0.5F)); - mat.rotate((float) Math.toRadians(-180), new Vector3f(0, 1, 0)); - mat.rotate(panel.angle, new Vector3f(1, 0, 0)); + mat.translate(new Vector3f(0.5F, 0, 0.5F)); + switch(getBlockMetadata()){ + case 4: + mat.rotate((float)Math.toRadians(180), new Vector3f(0, 1, 0)); + break; + case 2: + mat.rotate((float)Math.toRadians(90), new Vector3f(0, 1, 0)); + break; + case 5: + break; + case 3: + mat.rotate((float)Math.toRadians(270), new Vector3f(0, 1, 0)); + break; } - + mat.translate(new Vector3f(-0.15F, 0.15F, -0.1F)); + mat.rotate(-0.528131795589244F, new Vector3f(0, 0, 1)); + mat.rotate((float)Math.toRadians(90), new Vector3f(0, 1, 0)); mat.scale(new Vector3f(0.1F, 0.1F, 0.1F)); - mat.translate(new Vector3f(0.5F, 0, 0.5F)); + panel.setTransform(mat); } - private void rotateByMetadata(Matrix4f mat, int meta) { - switch ((meta & 3) + 2) { - case 4: - mat.rotate((float) Math.toRadians(180), new Vector3f(0, 1, 0)); - break; - case 2: - mat.rotate((float) Math.toRadians(90), new Vector3f(0, 1, 0)); - break; - case 3: - mat.rotate((float) Math.toRadians(270), new Vector3f(0, 1, 0)); - break; - } - } - - @SideOnly(Side.CLIENT) - public void loadClient(){ - updateTransform(); - } - @Override public void update(){ panel.update(); @@ -206,8 +163,8 @@ public void receiveControl(NBTTagCompound data){ ControlEvent evt = ControlEvent.readFromNBT(data); panel.controls.get(data.getInteger("click_control")).receiveEvent(evt); } - } + } public void validate() { super.validate(); ControlEventSystem.get(this.world).addControllable(this); @@ -217,154 +174,4 @@ public void invalidate() { super.invalidate(); ControlEventSystem.get(this.world).removeControllable(this); } - - public float[] getBox() { - float baseSizeX = 1-(panel.b_off+panel.d_off); - float baseSizeY = 1-(panel.a_off+panel.c_off); - - double base_hyp = 1/Math.cos(Math.abs(panel.angle)); - double panel_hyp = baseSizeY/Math.cos(Math.abs(panel.angle)); - - float box_width = 10; - float box_height = (float) (base_hyp*10); - float minX = (-box_width/2) + (panel.d_off*box_width); - float minY = (-box_height/2) + (panel.a_off*box_height); - - return new float[] { minX, minY, minX+baseSizeX*10, (float) (minY+panel_hyp*10)}; - } - - public AxisAlignedBB getBoundingBox(boolean isUp, boolean isDown, EnumFacing facing) { - AxisAlignedBB defAABB = null; - float height1 = ControlPanel.getSlopeHeightFromZ(1-panel.c_off, panel.height, -panel.angle); - float height0 = ControlPanel.getSlopeHeightFromZ(panel.a_off, panel.height, -panel.angle); - - if (isUp) { - defAABB = new AxisAlignedBB(panel.d_off, 0, panel.a_off, 1 - panel.b_off, Math.max(height0, height1), 1 - panel.c_off); - } else if (isDown) { - defAABB = new AxisAlignedBB(1-panel.d_off, 1, panel.a_off, panel.b_off, 1-Math.max(height0, height1), 1-panel.c_off); - } else { - defAABB = new AxisAlignedBB(panel.d_off, 1-panel.a_off, 0, 1-panel.b_off, panel.c_off, Math.max(height0, height1)); - } - defAABB = rotateAABB(defAABB, facing); - - return defAABB; - } - - public static AxisAlignedBB rotateAABB(AxisAlignedBB box, EnumFacing facing){ - switch(facing){ - case NORTH: - return new AxisAlignedBB(1-box.minX, box.minY, 1-box.maxZ, 1-box.maxX, box.maxY, 1-box.minZ); - case SOUTH: - return box; - case EAST: - return new AxisAlignedBB(box.minZ, box.minY, 1-box.minX, box.maxZ, box.maxY, 1-box.maxX); - case WEST: - return new AxisAlignedBB(1-box.minZ, box.minY, box.minX, 1-box.maxZ, box.maxY, box.maxX); - default: - return box; - } - } - - // opencomputers interface - - @Override - public String getComponentName() { - return "control_panel"; - } - - @Callback() - public Object[] listControls(Context context, Arguments args) { - List ctrlList = new ArrayList<>(); - for (int i=0; i < panel.controls.size(); i++) { - ctrlList.add(panel.controls.get(i).name + " ("+i+")"); - } - return new Object[]{ctrlList}; - } - - @Callback() - public Object[] listGlobalVars(Context context, Arguments args) { - return new Object[]{panel.globalVars}; - } - - @Callback(doc = "getGlobalVar(name:str);") - public Object[] getGlobalVar(Context context, Arguments args) { - String name = args.checkString(0); - DataValue value = panel.getVar(name); - if (Objects.requireNonNull(value.getType()) == DataValue.DataType.NUMBER) { - return new Object[]{value.getNumber()}; - } - return new Object[]{value.toString()}; - } - - @Callback(doc = "setGlobalVar(name:str, value:[bool,str,double,int]);") - public Object[] setGlobalVar(Context context, Arguments args) { - String name = args.checkString(0); - - if (args.isBoolean(1)) - panel.globalVars.put(name, new DataValueFloat(args.checkBoolean(1))); - else if (args.isString(1)) - panel.globalVars.put(name, new DataValueString(args.checkString(1))); - else if (args.isDouble(1)) - panel.globalVars.put(name, new DataValueFloat((float) args.checkDouble(1))); - else if (args.isInteger(1)) - panel.globalVars.put(name, new DataValueFloat((float) args.checkInteger(1))); - else - return new Object[]{"ERROR: unsupported value type"}; - - return new Object[]{}; - } - - @Callback(doc = "listLocalVars(ID:int); list local vars for control ID.") - public Object[] listLocalVars(Context context, Arguments args) { - return new Object[]{panel.controls.get(args.checkInteger(0)).vars}; - } - - @Callback(doc = "getLocalVar(ID:int, name:str); get var for control ID.") - public Object[] getLocalVar(Context context, Arguments args) { - int index = args.checkInteger(0); - String name = args.checkString(1); - DataValue value = panel.controls.get(index).getVar(name); - if (Objects.requireNonNull(value.getType()) == DataValue.DataType.NUMBER) { - return new Object[]{value.getNumber()}; - } - return new Object[]{value.toString()}; - } - - @Callback(doc = "getLocalVar(ID:int, name:str, value:[bool,str,double,int]); set var for control ID.") - public Object[] setLocalVar(Context context, Arguments args) { - int index = args.checkInteger(0); - String name = args.checkString(1); - - if (args.isBoolean(2)) - panel.controls.get(index).vars.put(name, new DataValueFloat(args.checkBoolean(2))); - else if (args.isString(2)) { - DataValue value = panel.controls.get(index).vars.get(name); - String newValue = args.checkString(2); - - if (value.getType().equals(DataValue.DataType.ENUM)) { - if (((DataValueEnum) value).enumClass.equals(EnumDyeColor.class)) { - for (EnumDyeColor c : EnumDyeColor.values()) { - if (c.getName().equals(newValue)) { - panel.controls.get(index).vars.put(name, new DataValueEnum<>(EnumDyeColor.valueOf(newValue.toUpperCase()))); - return new Object[]{}; - } - } - return new Object[]{"ERROR: '" + newValue + "' not found for EnumDyeColor"}; - } - return new Object[]{"ERROR: unsupported enum class"}; - } - else { - panel.controls.get(index).vars.put(name, new DataValueString(newValue)); - } - } - else if (args.isDouble(2)) - panel.controls.get(index).vars.put(name, new DataValueFloat((float) args.checkDouble(2))); - else if (args.isInteger(2)) - panel.controls.get(index).vars.put(name, new DataValueFloat(args.checkInteger(2))); - else - return new Object[]{"ERROR: unsupported value type"}; - - return new Object[]{}; - } - } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityDummy.java b/src/main/java/com/hbm/tileentity/machine/TileEntityDummy.java index 0039120d4e..aad8d59085 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityDummy.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityDummy.java @@ -2,8 +2,6 @@ import com.hbm.interfaces.IMultiBlock; -import com.hbm.main.MainRegistry; -import com.hbm.tileentity.INBTPacketReceiver; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.play.server.SPacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; @@ -61,4 +59,5 @@ public SPacketUpdateTileEntity getUpdatePacket() { public NBTTagCompound getUpdateTag() { return this.writeToNBT(new NBTTagCompound()); } + } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java index 05c70d7cd1..4bd0bcad90 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java @@ -69,6 +69,7 @@ protected void onContentsChanged(int slot){ }; } + public void OnContentsChanged(int slot){ this.needsProcess = true; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java index fd7456dcee..a28c6e3326 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java @@ -153,8 +153,8 @@ public void update() { } if(power > 0) { + power -= 150; heat += Math.min(((double) power / (double) maxPower * 300), 150); - power = Math.max(power-150, 0); } else { heat -= 100; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFluidTank.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFluidTank.java index df22d1b733..d05ef34de2 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFluidTank.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFluidTank.java @@ -3,8 +3,6 @@ import com.hbm.forgefluid.FFUtils; import com.hbm.forgefluid.ModForgeFluids; import com.hbm.interfaces.ITankPacketAcceptor; -import com.hbm.inventory.control_panel.*; -import com.hbm.main.MainRegistry; import com.hbm.packet.FluidTankPacket; import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.TileEntityMachineBase; @@ -14,8 +12,6 @@ import net.minecraft.util.EnumFacing; import net.minecraft.util.ITickable; import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; @@ -27,11 +23,8 @@ import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.items.CapabilityItemHandler; -import scala.actors.threadpool.Arrays; -import java.util.*; - -public class TileEntityMachineFluidTank extends TileEntityMachineBase implements ITickable, IFluidHandler, ITankPacketAcceptor, IControllable { +public class TileEntityMachineFluidTank extends TileEntityMachineBase implements ITickable, IFluidHandler, ITankPacketAcceptor { public FluidTank tank; @@ -104,9 +97,6 @@ public void networkUnpack(NBTTagCompound nbt) { @Override public void handleButtonPacket(int value, int meta) { mode = (short) ((mode + 1) % modes); - if (!world.isRemote) { - broadcastControlEvt(); - } markDirty(); } @@ -222,63 +212,4 @@ public boolean hasCapability(Capability capability, EnumFacing facing) { } } - // control panel - - @Override - public Map getQueryData() { - Map data = new HashMap<>(); - - if (tank.getFluid() != null) { - data.put("t0_fluidType", new DataValueString(tank.getFluid().getLocalizedName())); - } - data.put("t0_fluidAmount", new DataValueFloat(tank.getFluidAmount())); - data.put("mode", new DataValueFloat(mode)); - - return data; - } - - @Override - public void receiveEvent(BlockPos from, ControlEvent e) { - if (e.name.equals("tank_set_mode")) { - mode = (short) (e.vars.get("mode").getNumber() % modes); - broadcastControlEvt(); - } - } - - public void broadcastControlEvt() { - ControlEventSystem.get(world).broadcastToSubscribed(this, ControlEvent.newEvent("tank_set_mode").setVar("mode", new DataValueFloat(mode))); - } - - @Override - public List getInEvents() { - return Collections.singletonList("tank_set_mode"); - } - - @Override - public List getOutEvents() { - return Collections.singletonList("tank_set_mode"); - } - - @Override - public void validate() { - super.validate(); - ControlEventSystem.get(world).addControllable(this); - } - - @Override - public void invalidate() { - super.invalidate(); - ControlEventSystem.get(world).removeControllable(this); - } - - @Override - public BlockPos getControlPos() { - return getPos(); - } - - @Override - public World getControlWorld() { - return getWorld(); - } - } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java index 0a1538fb42..bfde1e07bc 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java @@ -1,8 +1,11 @@ package com.hbm.tileentity.machine.rbmk; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; -import com.hbm.inventory.control_panel.*; import org.lwjgl.opengl.GL11; import com.hbm.blocks.ModBlocks; @@ -11,7 +14,6 @@ import com.hbm.entity.projectile.EntityRBMKDebris; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; import com.hbm.items.machine.ItemRBMKRod; -import com.hbm.config.MachineConfig; import com.hbm.lib.ForgeDirection; import com.hbm.lib.HBMSoundHandler; import com.hbm.main.MainRegistry; @@ -46,7 +48,7 @@ import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -public abstract class TileEntityRBMKBase extends TileEntity implements INBTPacketReceiver, ITickable, IControllable { +public abstract class TileEntityRBMKBase extends TileEntity implements INBTPacketReceiver, ITickable { public static int rbmkHeight = 4; @@ -54,6 +56,7 @@ public abstract class TileEntityRBMKBase extends TileEntity implements INBTPacke public double jumpheight = 0.0D; public float downwardSpeed = 0.0F; public boolean falling = false; + public static final int jumpTemp = 1000; public static final byte gravity = 5; //in blocks per s^2 public int water; @@ -118,14 +121,14 @@ public void update() { } private void jump(){ - if(this.heat <= MachineConfig.rbmkJumpTemp && !falling) + if(this.heat <= jumpTemp && !falling) return; if(!falling){ // linear rise - if(this.heat > MachineConfig.rbmkJumpTemp){ - if(this.jumpheight > 0 || world.rand.nextInt((int)(25D*maxHeat()/(this.heat-MachineConfig.rbmkJumpTemp+200D))) == 0){ - double change = (this.heat-MachineConfig.rbmkJumpTemp)*0.0002D; - double heightLimit = (this.heat-MachineConfig.rbmkJumpTemp)*0.002D; + if(this.heat > jumpTemp){ + if(this.jumpheight > 0 || world.rand.nextInt((int)(25D*maxHeat()/(this.heat-jumpTemp+200D))) == 0){ + double change = (this.heat-jumpTemp)*0.0002D; + double heightLimit = (this.heat-jumpTemp)*0.002D; this.jumpheight = this.jumpheight + change; @@ -556,40 +559,4 @@ public static List getFancyStats(NBTTagCompound nbt) { public AxisAlignedBB getRenderBoundingBox() { return new AxisAlignedBB(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + 1, pos.getY() + 17, pos.getZ() + 1); } - - // control panel - - @Override - public Map getQueryData() { - Map data = new HashMap<>(); - - data.put("heat", new DataValueFloat((float) heat)); - data.put("RSIM_feed", new DataValueFloat(water)); - data.put("RSIM_steam", new DataValueFloat(steam)); - - return data; - } - - @Override - public void validate() { - super.validate(); - ControlEventSystem.get(world).addControllable(this); - } - - @Override - public void invalidate() { - super.invalidate(); - ControlEventSystem.get(world).removeControllable(this); - } - - @Override - public BlockPos getControlPos() { - return getPos(); - } - - @Override - public World getControlWorld() { - return getWorld(); - } - } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java index 36be2d4dd3..4035c52b2a 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.machine.rbmk; -import java.util.*; +import java.util.ArrayList; +import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; @@ -8,8 +9,6 @@ import com.hbm.forgefluid.ModForgeFluids; import com.hbm.interfaces.IControlReceiver; import com.hbm.interfaces.ITankPacketAcceptor; -import com.hbm.inventory.control_panel.*; -import com.hbm.main.MainRegistry; import com.hbm.packet.FluidTankPacket; import com.hbm.packet.PacketDispatcher; import com.hbm.render.amlfrom1710.Vec3; @@ -302,18 +301,4 @@ public T getCapability(Capability capability, EnumFacing facing){ return CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY.cast(this); return super.getCapability(capability, facing); } - - // control panel - - @Override - public Map getQueryData() { - Map data = super.getQueryData(); - - data.put("feed", new DataValueFloat((float) feed.getFluidAmount())); - data.put("steam", new DataValueFloat((float) steam.getFluidAmount())); - data.put("steamType", new DataValueString(steamType.getName())); - - return data; - } - } \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java index f6bdb7b451..0291c3b6b5 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java @@ -633,48 +633,48 @@ public Object[] getColumnData(Context context, Arguments args) { TileEntityRBMKBase column = (TileEntityRBMKBase) te; NBTTagCompound column_data = columns[i].data; - LinkedHashMap data_table = new LinkedHashMap<>(); + LinkedHashMap data_table = new LinkedHashMap<>(); data_table.put("type", column.getConsoleType().name()); - data_table.put("hullTemp", column_data.getDouble("heat")); - data_table.put("realSimWater", column_data.getDouble("water")); - data_table.put("realSimSteam", column_data.getDouble("steam")); - data_table.put("moderated", column_data.getBoolean("moderated")); - data_table.put("level", column_data.getDouble("level")); - data_table.put("color", column_data.getShort("color")); - data_table.put("enrichment", column_data.getDouble("enrichment")); - data_table.put("xenon", column_data.getDouble("xenon")); - data_table.put("coreSkinTemp", column_data.getDouble("c_heat")); - data_table.put("coreTemp", column_data.getDouble("c_coreHeat")); - data_table.put("coreMaxTemp", column_data.getDouble("c_maxHeat")); + data_table.put("hullTemp", String.valueOf(column_data.getDouble("heat"))); + data_table.put("realSimWater", String.valueOf(column_data.getDouble("water"))); + data_table.put("realSimSteam", String.valueOf(column_data.getDouble("steam"))); + data_table.put("moderated", String.valueOf(column_data.getBoolean("moderated"))); + data_table.put("level", String.valueOf(column_data.getDouble("level"))); + data_table.put("color", String.valueOf(column_data.getShort("color"))); + data_table.put("enrichment", String.valueOf(column_data.getDouble("enrichment"))); + data_table.put("xenon", String.valueOf(column_data.getDouble("xenon"))); + data_table.put("coreSkinTemp", String.valueOf(column_data.getDouble("c_heat"))); + data_table.put("coreTemp", String.valueOf(column_data.getDouble("c_coreHeat"))); + data_table.put("coreMaxTemp", String.valueOf(column_data.getDouble("c_maxHeat"))); if(te instanceof TileEntityRBMKRod){ TileEntityRBMKRod fuelChannel = (TileEntityRBMKRod)te; - data_table.put("fluxSlow", fuelChannel.fluxSlow); - data_table.put("fluxFast", fuelChannel.fluxFast); + data_table.put("fluxSlow", String.valueOf(fuelChannel.fluxSlow)); + data_table.put("fluxFast", String.valueOf(fuelChannel.fluxFast)); } if(te instanceof TileEntityRBMKBoiler){ TileEntityRBMKBoiler boiler = (TileEntityRBMKBoiler)te; - data_table.put("water", boiler.feed.getFluidAmount()); - data_table.put("steam", boiler.steam.getFluidAmount()); + data_table.put("water", String.valueOf(boiler.feed.getFluidAmount())); + data_table.put("steam", String.valueOf(boiler.steam.getFluidAmount())); } if(te instanceof TileEntityRBMKOutgasser){ TileEntityRBMKOutgasser irradiationChannel = (TileEntityRBMKOutgasser)te; - data_table.put("fluxProgress", irradiationChannel.progress); - data_table.put("requiredFlux", irradiationChannel.duration); + data_table.put("fluxProgress", String.valueOf(irradiationChannel.progress)); + data_table.put("requiredFlux", String.valueOf(irradiationChannel.duration)); } if(te instanceof TileEntityRBMKCooler){ TileEntityRBMKCooler coolingChannel = (TileEntityRBMKCooler)te; - data_table.put("degreesCooledPerTick", coolingChannel.lastCooled); - data_table.put("cryogel", coolingChannel.tank.getFluidAmount()); + data_table.put("degreesCooledPerTick", String.valueOf(coolingChannel.lastCooled)); + data_table.put("cryogel", String.valueOf(coolingChannel.tank.getFluidAmount())); } if(te instanceof TileEntityRBMKHeater){ TileEntityRBMKHeater heaterChannel = (TileEntityRBMKHeater)te; - data_table.put("coolant", heaterChannel.tanks[0].getFluidAmount()); - data_table.put("hotcoolant", heaterChannel.tanks[1].getFluidAmount()); + data_table.put("coolant", String.valueOf(heaterChannel.tanks[0].getFluidAmount())); + data_table.put("hotcoolant", String.valueOf(heaterChannel.tanks[1].getFluidAmount())); } return new Object[] {data_table}; @@ -692,7 +692,7 @@ public Object[] getRBMKPos(Context context, Arguments args) { return new Object[] {data_table}; } - return new Object[] {null};//return null, its better to use this to tell there is nothing rather than a string saying so + return new Object[] {"No rbmkrod linked"}; } @Callback(doc = "setLevel(level:double); set retraction of all control rods given 0≤level≤1") diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java index 851c4da349..fea0c7322a 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java @@ -1,20 +1,11 @@ package com.hbm.tileentity.machine.rbmk; -import com.google.common.collect.Lists; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; -import com.hbm.inventory.control_panel.ControlEvent; -import com.hbm.inventory.control_panel.DataValue; -import com.hbm.inventory.control_panel.DataValueFloat; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.math.BlockPos; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -import java.util.Collections; -import java.util.List; -import java.util.Map; - public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase { @SideOnly(Side.CLIENT) @@ -124,16 +115,4 @@ public NBTTagCompound getNBTForConsole() { data.setDouble("level", this.level); return data; } - - // control panel - - @Override - public Map getQueryData() { - Map data = super.getQueryData(); - - data.put("level", new DataValueFloat((float) this.level*100)); - - return data; - } - } \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlAuto.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlAuto.java index 5843659e2f..93ee187d43 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlAuto.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlAuto.java @@ -1,21 +1,14 @@ package com.hbm.tileentity.machine.rbmk; import com.hbm.interfaces.IControlReceiver; -import com.hbm.inventory.control_panel.ControlEvent; -import com.hbm.inventory.control_panel.DataValue; import com.hbm.render.amlfrom1710.Vec3; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlManual.RBMKColor; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; -import java.util.Collections; -import java.util.List; -import java.util.Map; - public class TileEntityRBMKControlAuto extends TileEntityRBMKControl implements IControlReceiver { public RBMKFunction function = RBMKFunction.LINEAR; @@ -135,5 +128,4 @@ public static enum RBMKFunction { public ColumnType getConsoleType() { return ColumnType.CONTROL_AUTO; } - } \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java index b8841829c3..bee2226c26 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java @@ -1,24 +1,12 @@ package com.hbm.tileentity.machine.rbmk; -import com.google.common.collect.Lists; import com.hbm.blocks.machine.rbmk.RBMKControl; import com.hbm.interfaces.IControlReceiver; -import com.hbm.inventory.control_panel.ControlEvent; -import com.hbm.inventory.control_panel.ControlEventSystem; -import com.hbm.inventory.control_panel.DataValue; -import com.hbm.inventory.control_panel.DataValueFloat; -import com.hbm.main.MainRegistry; import com.hbm.render.amlfrom1710.Vec3; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.math.BlockPos; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; public class TileEntityRBMKControlManual extends TileEntityRBMKControl implements IControlReceiver { @@ -142,40 +130,4 @@ public NBTTagCompound getNBTForConsole() { return data; } - - // control panel - - @Override - public Map getQueryData() { - Map data = super.getQueryData(); - - if (this.color != null) { - data.put("color", new DataValueFloat(this.color.ordinal())); - } - - return data; - } - - @Override - public void receiveEvent(BlockPos from, ControlEvent e) { - super.receiveEvent(from, e); - - if (e.name.equals("rbmk_ctrl_set_level")) { - this.startingLevel = this.level; - setTarget(Math.min(1, Math.max(0, e.vars.get("level").getNumber()/100))); - markDirty(); - } - if (e.name.equals("rbmk_ctrl_set_color")) { - this.color = RBMKColor.values()[(int) (e.vars.get("color").getNumber()) % RBMKColor.values().length - 1]; - } - } - - @Override - public List getInEvents() { - List events = new ArrayList<>(super.getInEvents()); - events.add("rbmk_ctrl_set_level"); - events.add("rbmk_ctrl_set_color"); - return events; - } - } \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java index 0c0e735059..5a977df387 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java @@ -1,8 +1,5 @@ package com.hbm.tileentity.machine.rbmk; -import com.hbm.inventory.control_panel.ControlEvent; -import com.hbm.inventory.control_panel.DataValue; -import com.hbm.inventory.control_panel.DataValueFloat; import com.hbm.lib.Library; import com.hbm.lib.HBMSoundHandler; import com.hbm.forgefluid.ModForgeFluids; @@ -17,7 +14,6 @@ import net.minecraft.util.EnumParticleTypes; import net.minecraft.init.SoundEvents; import net.minecraft.util.SoundCategory; -import net.minecraft.util.math.BlockPos; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTank; @@ -26,9 +22,7 @@ import net.minecraftforge.fluids.capability.CapabilityFluidHandler; import net.minecraftforge.common.capabilities.Capability; -import java.util.Collections; import java.util.List; -import java.util.Map; public class TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidHandler, ITankPacketAcceptor { @@ -196,16 +190,4 @@ public T getCapability(Capability capability, EnumFacing facing){ return CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY.cast(this); return super.getCapability(capability, facing); } - - // control panel - - @Override - public Map getQueryData() { - Map data = super.getQueryData(); - - data.put("coolant", new DataValueFloat(tank.getFluidAmount())); - - return data; - } - } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCraneConsole.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCraneConsole.java index 1f47eace2c..d896a7fee9 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCraneConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCraneConsole.java @@ -1,15 +1,13 @@ package com.hbm.tileentity.machine.rbmk; -import java.util.*; +import java.util.List; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.machine.rbmk.RBMKBase; import com.hbm.capability.HbmCapability; import com.hbm.capability.HbmCapability.IHBMData; import com.hbm.handler.HbmKeybinds.EnumKeybind; -import com.hbm.inventory.control_panel.*; import com.hbm.items.machine.ItemRBMKRod; -import com.hbm.main.MainRegistry; import com.hbm.packet.NBTPacket; import com.hbm.lib.ForgeDirection; import com.hbm.packet.PacketDispatcher; @@ -27,7 +25,6 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.MathHelper; -import net.minecraft.world.World; import net.minecraftforge.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @@ -39,7 +36,7 @@ import li.cil.oc.api.network.SimpleComponent; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityRBMKCraneConsole extends TileEntityMachineBase implements ITickable, INBTPacketReceiver, SimpleComponent, IControllable { +public class TileEntityRBMKCraneConsole extends TileEntityMachineBase implements ITickable, INBTPacketReceiver, SimpleComponent { public int centerX; public int centerY; @@ -112,21 +109,19 @@ public void update() { progress = 0; goesDown = false; - if(!world.isRemote) { - ControlEventSystem.get(world).broadcastToSubscribed(this, ControlEvent.newEvent("rbmk_crane_load")); - - if (this.canTargetInteract()) { - if (inventory.getStackInSlot(0).isEmpty()) { - IRBMKLoadable column = getColumnAtPos(); - inventory.setStackInSlot(0, column.provideNext()); - column.unload(); - } else { - getColumnAtPos().load(inventory.getStackInSlot(0)); - inventory.setStackInSlot(0, ItemStack.EMPTY); - } - this.markDirty(); + if(!world.isRemote && this.canTargetInteract()) { + if(inventory.getStackInSlot(0).isEmpty()) { + IRBMKLoadable column = getColumnAtPos(); + inventory.setStackInSlot(0, column.provideNext()); + column.unload(); + } else { + getColumnAtPos().load(inventory.getStackInSlot(0)); + inventory.setStackInSlot(0, ItemStack.EMPTY); } + + this.markDirty(); } + } } else if(progress != 1) { @@ -208,7 +203,7 @@ else if(craneUp || craneDown || craneLeft || craneRight) //activating cooldown posLeft = MathHelper.clamp(posLeft, -spanR, spanL); if(!world.isRemote) { - + if(!inventory.getStackInSlot(0).isEmpty() && inventory.getStackInSlot(0).getItem() instanceof ItemRBMKRod) { this.loadedHeat = ItemRBMKRod.getHullHeat(inventory.getStackInSlot(0)); this.loadedEnrichment = ItemRBMKRod.getEnrichment(inventory.getStackInSlot(0)); @@ -234,7 +229,6 @@ else if(craneUp || craneDown || craneLeft || craneRight) //activating cooldown nbt.setBoolean("loaded", this.hasItemLoaded()); nbt.setDouble("loadedHeat", loadedHeat); nbt.setDouble("loadedEnrichment", loadedEnrichment); - nbt.setBoolean("goesDown", goesDown); } PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(nbt, pos), new TargetPoint(world.provider.getDimension(), pos.getX(), pos.getY(), pos.getZ(), 250)); } @@ -266,13 +260,6 @@ public void processInput(boolean inputUP, boolean inputDOWN, boolean inputLEFT, tiltLeft = -30; } } - - if (!world.isRemote && (up || down || left || right)) { - ControlEventSystem.get(world).broadcastToSubscribed(this, ControlEvent.newEvent("rbmk_crane_move") - .setVar("up", new DataValueFloat(up)).setVar("down", new DataValueFloat(down)) - .setVar("left", new DataValueFloat(left)).setVar("right", new DataValueFloat(right))); - } - } public boolean hasItemLoaded() { @@ -352,7 +339,6 @@ public void networkUnpack(NBTTagCompound nbt) { this.posLeft = nbt.getDouble("posLeft"); this.loadedHeat = nbt.getDouble("loadedHeat"); this.loadedEnrichment = nbt.getDouble("loadedEnrichment"); - this.goesDown = nbt.getBoolean("goesDown"); } public void setTarget(int x, int y, int z) { @@ -385,7 +371,7 @@ public void readFromNBT(NBTTagCompound nbt) { this.height = nbt.getInteger("height"); this.posFront = nbt.getDouble("posFront"); this.posLeft = nbt.getDouble("posLeft"); - + if(nbt.hasKey("inventory")) inventory.deserializeNBT(nbt.getCompoundTag("inventory")); super.readFromNBT(nbt); @@ -556,72 +542,4 @@ public Object[] getPos(Context context, Arguments args) { return new Object[] {-posLeft, posFront}; return new Object[] {"No crane found"}; } - - // control panel - - @Override - public Map getQueryData() { - Map data = new HashMap<>(); - if (setUpCrane) { - data.put("posX", new DataValueFloat((float) -posLeft)); - data.put("posY", new DataValueFloat((float) posFront)); - } - return data; - } - - @Override - public void receiveEvent(BlockPos from, ControlEvent e) { - switch (e.name) { - case "rbmk_crane_move": { - boolean up = e.vars.get("up").getBoolean(); - boolean down = e.vars.get("down").getBoolean(); - boolean left = e.vars.get("left").getBoolean(); - boolean right = e.vars.get("right").getBoolean(); - - if (setUpCrane && !isCraneLoading()) { - processInput(up, down, left, right); - } - break; - } - case "rbmk_crane_load": { - if (setUpCrane && !isCraneLoading()) { - goesDown = true; - } - break; - } - } - } - - @Override - public List getInEvents() { - return Arrays.asList("rbmk_crane_move", "rbmk_crane_load"); - } - - @Override - public List getOutEvents() { - return Arrays.asList("rbmk_crane_move", "rbmk_crane_load"); - } - - @Override - public void validate() { - super.validate(); - ControlEventSystem.get(world).addControllable(this); - } - - @Override - public void invalidate() { - super.invalidate(); - ControlEventSystem.get(world).removeControllable(this); - } - - @Override - public BlockPos getControlPos() { - return getPos(); - } - - @Override - public World getControlWorld() { - return getWorld(); - } - } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java index 1124f96015..e664d8b390 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java @@ -1,10 +1,6 @@ package com.hbm.tileentity.machine.rbmk; import com.hbm.blocks.ModBlocks; -import com.hbm.inventory.control_panel.ControlEvent; -import com.hbm.inventory.control_panel.DataValue; -import com.hbm.inventory.control_panel.DataValueFloat; -import com.hbm.inventory.control_panel.DataValueString; import com.hbm.items.ModItems; import com.hbm.blocks.BlockDummyable; import com.hbm.items.machine.ItemForgeFluidIdentifier; @@ -36,9 +32,7 @@ import net.minecraftforge.fml.common.network.NetworkRegistry.TargetPoint; import java.util.ArrayList; -import java.util.Collections; import java.util.List; -import java.util.Map; public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements IFluidHandler, ITankPacketAcceptor { @@ -266,19 +260,4 @@ public T getCapability(Capability capability, EnumFacing facing){ return CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY.cast(this); return super.getCapability(capability, facing); } - - // control panel - - @Override - public Map getQueryData() { - Map data = super.getQueryData(); - - data.put("t0_fluidType", new DataValueString(tankTypes[0].getName())); - data.put("t0_fluidAmount", new DataValueFloat((float) tanks[0].getFluidAmount())); - data.put("t1_fluidType", new DataValueString(tankTypes[1].getName())); - data.put("t1_fluidAmount", new DataValueFloat((float) tanks[1].getFluidAmount())); - - return data; - } - } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java index 331e877162..b2dd18d150 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java @@ -1,9 +1,6 @@ package com.hbm.tileentity.machine.rbmk; -import java.util.Collections; import java.util.HashMap; -import java.util.List; -import java.util.Map; import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; @@ -12,9 +9,6 @@ import com.hbm.interfaces.ITankPacketAcceptor; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RBMKOutgasserRecipes; -import com.hbm.inventory.control_panel.ControlEvent; -import com.hbm.inventory.control_panel.DataValue; -import com.hbm.inventory.control_panel.DataValueFloat; import com.hbm.util.ContaminationUtil; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFluidIcon; @@ -302,18 +296,4 @@ public void unload() { inventory.setStackInSlot(1, ItemStack.EMPTY); this.markDirty(); } - - // control panel - - @Override - public Map getQueryData() { - Map data = super.getQueryData(); - - data.put("gas", new DataValueFloat(this.gas.getFluidAmount())); - data.put("progress", new DataValueFloat((float) this.progress)); - data.put("maxProgress", new DataValueFloat((float) this.duration)); - - return data; - } - } \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java index bc704d8910..b48a9be2c7 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -1,18 +1,12 @@ package com.hbm.tileentity.machine.rbmk; -import java.util.Collections; import java.util.List; -import java.util.Map; import com.hbm.config.MobConfig; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.rbmk.RBMKBase; import com.hbm.blocks.machine.rbmk.RBMKRod; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; -import com.hbm.inventory.control_panel.ControlEvent; -import com.hbm.inventory.control_panel.DataValue; -import com.hbm.inventory.control_panel.DataValueFloat; -import com.hbm.inventory.control_panel.DataValueString; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemRBMKRod; import com.hbm.lib.ForgeDirection; @@ -415,26 +409,4 @@ public void unload() { inventory.setStackInSlot(0, ItemStack.EMPTY); this.markDirty(); } - - // control panel - - @Override - public Map getQueryData() { - Map data = super.getQueryData(); - - if (inventory.getStackInSlot(0).getItem() instanceof ItemRBMKRod) { - ItemRBMKRod rod = ((ItemRBMKRod)inventory.getStackInSlot(0).getItem()); - data.put("rod_name", new DataValueString(rod.getUnlocalizedName())); - data.put("enrichment", new DataValueFloat((float) ItemRBMKRod.getEnrichment(inventory.getStackInSlot(0)))); - data.put("xenon", new DataValueFloat((float) ItemRBMKRod.getPoison(inventory.getStackInSlot(0)))); - data.put("c_heat", new DataValueFloat((float) ItemRBMKRod.getHullHeat(inventory.getStackInSlot(0)))); - data.put("c_coreHeat", new DataValueFloat((float) ItemRBMKRod.getCoreHeat(inventory.getStackInSlot(0)))); - data.put("c_maxHeat", new DataValueFloat((float) rod.meltingPoint)); - data.put("meltdown", new DataValueFloat((float) ItemRBMKRod.getMeltdownPercent(inventory.getStackInSlot(0)))); - } - data.put("flux", new DataValueFloat((float) this.fluxOut)); - - return data; - } - } \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java index c067ad37fb..1bca67df25 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java @@ -1,18 +1,11 @@ package com.hbm.tileentity.machine.rbmk; -import com.hbm.inventory.control_panel.ControlEvent; -import com.hbm.inventory.control_panel.DataValue; import com.hbm.items.machine.ItemRBMKRod; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import net.minecraft.util.EnumFacing; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; - -import java.util.Collections; -import java.util.List; -import java.util.Map; public class TileEntityRBMKStorage extends TileEntityRBMKSlottedBase implements IRBMKLoadable { diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneBase.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneBase.java new file mode 100644 index 0000000000..8135f431a1 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneBase.java @@ -0,0 +1,145 @@ +package com.hbm.tileentity.network; + +import com.hbm.tileentity.TileEntityMachineBase; +import net.minecraft.block.BlockHorizontal; +import net.minecraft.block.state.IBlockState; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.play.server.SPacketUpdateTileEntity; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.ITickable; +import net.minecraftforge.common.util.Constants; + +public abstract class TileEntityCraneBase extends TileEntityMachineBase implements ITickable { + + public TileEntityCraneBase(int scount) { + super(scount); + } + + public TileEntityCraneBase(int scount, int slotlimit) { + super(scount, slotlimit); + } + + // extension to the meta system + // for compatibility purposes, normal meta values are still used by default + private EnumFacing outputOverride = null; + + // for extra stability in case the screwdriver action doesn't get synced to + // other clients + private EnumFacing cachedOutputOverride = null; + @Override + public void update() { + if(hasWorld() && world.isRemote) { + if(cachedOutputOverride != outputOverride) { + world.markBlockRangeForRenderUpdate(pos, pos); + cachedOutputOverride = outputOverride; + } + } + } + + public EnumFacing getInputSide() { + IBlockState state = world.getBlockState(pos); + EnumFacing currentFacing = state.getValue(BlockHorizontal.FACING); + switch (currentFacing) { + case NORTH: + return EnumFacing.NORTH; + case SOUTH: + return EnumFacing.SOUTH; + case EAST: + return EnumFacing.EAST; + case WEST: + return EnumFacing.WEST; + default: + return EnumFacing.SOUTH; + } + } + + public EnumFacing getOutputSide() { + EnumFacing override = getOutputOverride(); + if (override != null) { + return override; + } + IBlockState state = world.getBlockState(pos); + EnumFacing currentFacing = state.getValue(BlockHorizontal.FACING); + + switch (currentFacing) { + case NORTH: + return EnumFacing.SOUTH; + case SOUTH: + return EnumFacing.NORTH; + case EAST: + return EnumFacing.WEST; + case WEST: + return EnumFacing.EAST; + default: + return EnumFacing.NORTH; + } + } + + public EnumFacing getOutputOverride() { + return outputOverride; + } + + public void setOutputOverride(EnumFacing direction) { + EnumFacing oldSide = getOutputSide(); + if(oldSide == direction) direction = direction.getOpposite(); + + outputOverride = direction; + + if(direction == getInputSide()) + setInput(oldSide); + else + onBlockChanged(); + } + + public void setInput(EnumFacing direction) { + outputOverride = getOutputSide(); // save the current output, if it isn't saved yet + + EnumFacing oldSide = getInputSide(); + if(oldSide == direction) direction = direction.getOpposite(); + + boolean needSwapOutput = direction == getOutputSide(); + world.setBlockState(pos, getBlockType().getDefaultState(), needSwapOutput ? 4 : 3); + + if(needSwapOutput) + setOutputOverride(oldSide); + } + + protected void onBlockChanged() { + if(!hasWorld()) return; + world.markBlockRangeForRenderUpdate(pos, pos); + world.notifyBlockUpdate(pos, getBlockType().getDefaultState(), getBlockType().getDefaultState(), 3); + markDirty(); + } + + @Override + public SPacketUpdateTileEntity getUpdatePacket() { + NBTTagCompound nbt = new NBTTagCompound(); + writeToNBT(nbt); + return new SPacketUpdateTileEntity(pos, 0, nbt); + } + + @Override + public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) { + readFromNBT(pkt.getNbtCompound()); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + if(nbt.hasKey("CraneOutputOverride", Constants.NBT.TAG_BYTE)) { + outputOverride = EnumFacing.values()[nbt.getByte("CraneOutputOverride")]; + } else { + outputOverride = null; + } + } + + @Override + public NBTTagCompound writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + if (outputOverride != null) { + nbt.setByte("CraneOutputOverride", (byte) outputOverride.ordinal()); + } + return nbt; + } +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java new file mode 100644 index 0000000000..86281afbfd --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java @@ -0,0 +1,317 @@ +package com.hbm.tileentity.network; + +import api.hbm.block.IConveyorBelt; +import com.hbm.entity.item.EntityMovingItem; +import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.container.ContainerCraneExtractor; +import com.hbm.inventory.gui.GUICraneExtractor; +import com.hbm.items.ModItems; +import com.hbm.modules.ModulePatternMatcher; +import com.hbm.tileentity.IGUIProvider; +import net.minecraft.block.Block; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.tileentity.TileEntityFurnace; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +import net.minecraftforge.items.IItemHandlerModifiable; + +import javax.annotation.Nonnull; + +public class TileEntityCraneExtractor extends TileEntityCraneBase implements IGUIProvider, IControlReceiver, IItemHandlerModifiable { + public boolean isWhitelist = false; + private ItemStack[] slots; + + private int tickCounter = 0; + public ModulePatternMatcher matcher; + + public TileEntityCraneExtractor() { + super(20); + this.matcher = new ModulePatternMatcher(9); + this.slots = new ItemStack[20]; + for (int i = 0; i < this.slots.length; i++) { + this.slots[i] = ItemStack.EMPTY; + } + + } + + @Override + public void setStackInSlot(int slot, @Nonnull ItemStack stack) { + if (slot >= 0 && slot < slots.length) { + slots[slot] = stack; + } + } + + @Override + public String getName() { + return "container.craneExtractor"; + } + + @Override + public void setInventorySlotContents(int i, ItemStack stack) { + super.setInventorySlotContents(i, stack); + } + + @Override + public int getSlots() { + return this.slots.length; + } + @Override + public ItemStack getStackInSlot(int slot) { + return this.slots[slot]; + } + @Override + public int getSlotLimit(int slot) { + return 64; // Максимальное количество предметов в слоте, обычно 64 + } + + @Override + public void update() { + super.update(); + if(!world.isRemote) { + tickCounter++; + + int xCoord = pos.getX(); + int yCoord = pos.getY(); + int zCoord = pos.getZ(); + int delay = 20; + if(slots[19] != null && slots[19] != ItemStack.EMPTY){ + if(slots[19].getItem() == ModItems.upgrade_ejector_1) { + delay = 10; + } else if(slots[19].getItem() == ModItems.upgrade_ejector_2){ + delay = 5; + } else if(slots[19].getItem() == ModItems.upgrade_ejector_3){ + delay = 2; + } + } + + if(tickCounter >= delay && !this.world.isBlockPowered(pos)) { + tickCounter = 0; + int amount = 1; + + if(slots[18]!=null && slots[18] != ItemStack.EMPTY){ + if(slots[18].getItem() == ModItems.upgrade_stack_1) { + amount = 4; + } else if(slots[18].getItem() == ModItems.upgrade_stack_2){ + amount = 16; + } else if(slots[18].getItem() == ModItems.upgrade_stack_3){ + amount = 64; + } + } + + EnumFacing inputSide = getInputSide(); // note the switcheroo! + EnumFacing outputSide = getOutputSide(); + TileEntity te1 = world.getTileEntity(pos); + TileEntity te = world.getTileEntity(pos.offset(inputSide)); + Block b = world.getBlockState(pos.offset(outputSide)).getBlock(); + + int[] access = null; + ISidedInventory sided = null; + + if(te instanceof ISidedInventory && !(te instanceof TileEntityCraneExtractor)) { + sided = (ISidedInventory) te; + access = masquerade(sided, EnumFacing.getFront(inputSide.getOpposite().ordinal())); + } + + boolean hasSent = false; + + if(b instanceof IConveyorBelt) { + + IConveyorBelt belt = (IConveyorBelt) b; + + /* try to send items from a connected inv, if present */ + if(te instanceof IInventory) { + + IInventory inv = (IInventory) te; + int size = access == null ? inv.getSizeInventory() : access.length; + + for(int i = 0; i < size; i++) { + int index = access == null ? i : access[i]; + ItemStack stack = inv.getStackInSlot(index); + + if(stack != ItemStack.EMPTY && (sided == null || sided.canExtractItem(index, stack, EnumFacing.getFront(inputSide.getOpposite().ordinal())))){ + + boolean match = this.matchesFilter(stack); + + if((isWhitelist && match) || (!isWhitelist && !match)) { + stack = stack.copy(); + int toSend = Math.min(amount, stack.getCount()); + inv.decrStackSize(index, toSend); + stack.setCount(toSend); + + EntityMovingItem moving = new EntityMovingItem(world); + Vec3d pos = new Vec3d(xCoord + 0.5 + outputSide.getDirectionVec().getX() * 0.55, yCoord + 0.5 + outputSide.getDirectionVec().getY() * 0.55, zCoord + 0.5 + outputSide.getDirectionVec().getZ() * 0.55); + Vec3d snap = belt.getClosestSnappingPosition(world, new BlockPos(xCoord + outputSide.getDirectionVec().getX(), yCoord + outputSide.getDirectionVec().getY(), zCoord + outputSide.getDirectionVec().getZ()), pos); + moving.setPosition(snap.x, snap.y, snap.z); + moving.setItemStack(stack); + world.spawnEntity(moving); + hasSent = true; + break; + } + } + } + } + + /* if no item has been sent, send buffered items while ignoring the filter */ + if(!hasSent) { + + for(int i = 9; i < 18; i++) { + ItemStack stack = slots[i]; + + if(stack != null & stack != ItemStack.EMPTY){ + stack = stack.copy(); + int toSend = Math.min(amount, stack.getCount()); + IItemHandlerModifiable inv = (IItemHandlerModifiable) te1; + inv.extractItem(i, toSend, false); + stack.setCount(toSend); + + EntityMovingItem moving = new EntityMovingItem(world); + Vec3d pos = new Vec3d(xCoord + 0.5 + outputSide.getDirectionVec().getX() * 0.55, yCoord + 0.5 + outputSide.getDirectionVec().getY() * 0.55, zCoord + 0.5 + outputSide.getDirectionVec().getZ() * 0.55); + Vec3d snap = belt.getClosestSnappingPosition(world, new BlockPos(xCoord + outputSide.getDirectionVec().getX(), yCoord + outputSide.getDirectionVec().getY(), zCoord + outputSide.getDirectionVec().getZ()), pos); + moving.setPosition(snap.x, snap.y, snap.z); + moving.setItemStack(stack); + world.spawnEntity(moving); + break; + } + } + } + } + } + + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("isWhitelist", isWhitelist); + this.matcher.writeToNBT(data); + this.networkPack(data, 15); + } + } + + public static int[] masquerade(ISidedInventory sided, EnumFacing side) { + + if(sided instanceof TileEntityFurnace) { + return new int[] {2}; + } + + return sided.getSlotsForFace(side); + } + + public void networkUnpack(NBTTagCompound nbt) { + this.isWhitelist = nbt.getBoolean("isWhitelist"); + this.matcher.modes = new String[this.matcher.modes.length]; + this.matcher.readFromNBT(nbt); + } + + public boolean matchesFilter(ItemStack stack) { + + for(int i = 0; i < 9; i++) { + ItemStack filter = slots[i]; + + if(filter != null && this.matcher.isValidForFilter(filter, i, stack)) { + return true; + } + } + return false; + } + + @Override + public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { + if (this.isItemValidForSlot(slot, stack)) { + if (!simulate) { + this.slots[slot] = stack; + this.markDirty(); + } + return ItemStack.EMPTY; + } else { + return stack; + } + } + + @Override + public ItemStack extractItem(int slot, int amount, boolean simulate) { + if (this.canExtractItem(slot, this.slots[slot], amount)) { + if (!simulate) { + ItemStack stack = this.slots[slot].splitStack(amount); + if (this.slots[slot].getCount() <= 0) { + this.slots[slot] = ItemStack.EMPTY; + } + this.markDirty(); + return stack; + } else { + ItemStack stack = this.slots[slot].copy(); + stack.setCount(amount); + return stack; + } + } else { + return ItemStack.EMPTY; + } + } + + public void nextMode(int i) { + this.matcher.nextMode(world, slots[i], i); + } + + public int[] getAccessibleSlotsFromSide(int p_94128_1_) { + return new int[] { 9, 10, 11, 12, 13, 14, 15, 16, 17 }; + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack itemStack) { + return i > 8 && i < 20; + } + + @Override + public boolean canExtractItem(int i, ItemStack itemStack, int j) { + return i > 8 && i < 20; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + + return new ContainerCraneExtractor(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUICraneExtractor(player.inventory, this); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.isWhitelist = nbt.getBoolean("isWhitelist"); + this.matcher.readFromNBT(nbt); + } + + @Override + public NBTTagCompound writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setBoolean("isWhitelist", this.isWhitelist); + this.matcher.writeToNBT(nbt); + return nbt; + } + + @Override + public boolean hasPermission(EntityPlayer player) { + int xCoord = pos.getX(); + int yCoord = pos.getY(); + int zCoord = pos.getZ(); + return new Vec3d(xCoord - player.posX, yCoord - player.posY, zCoord - player.posZ).lengthVector() < 20; + } + + @Override + public void receiveControl(NBTTagCompound data) { + if(data.hasKey("isWhitelist")) { + this.isWhitelist = !this.isWhitelist; + } + } +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneInserter.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneInserter.java new file mode 100644 index 0000000000..7c31dd678a --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneInserter.java @@ -0,0 +1,223 @@ +package com.hbm.tileentity.network; + +import com.hbm.blocks.network.CraneInserter; +import com.hbm.inventory.container.ContainerCraneInserter; +import com.hbm.inventory.gui.GUICraneInserter; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.tileentity.machine.TileEntityLockableBase; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.TextComponentString; +import net.minecraft.util.text.TextComponentTranslation; +import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import java.util.Arrays; + +public class TileEntityCraneInserter extends TileEntityCraneBase implements IGUIProvider, IInventory { + public static final int[] access = new int[21]; + private ItemStack[] inventory; + public TileEntityCraneInserter() { + super(21); + this.inventory = new ItemStack[21]; + for (int i = 0; i < this.inventory.length; i++) { + this.inventory[i] = ItemStack.EMPTY; + } + } + + @Override + public String getName() { + return "container.craneInserter"; + } + + @Override + public ITextComponent getDisplayName() { + return (this.hasCustomName() ? new TextComponentString(this.getName()) : new TextComponentTranslation(this.getName())); + } + + @Override + public void setInventorySlotContents(int index, ItemStack stack) { + this.inventory[index] = stack; + if (stack != ItemStack.EMPTY && stack.getCount() > this.getInventoryStackLimit()) { + stack.setCount(this.getInventoryStackLimit()); + } + this.markDirty(); + } + + @Override + public void update() { + super.update(); + if(!world.isRemote) { + + int posX = pos.getX(); + int posY = pos.getY(); + int posZ = pos.getZ(); + + EnumFacing outputSide = getOutputSide(); + BlockPos pos = new BlockPos(posX, posY, posZ); + TileEntity te = world.getTileEntity(pos.offset(outputSide)); + + int[] access = null; + + if(te instanceof ISidedInventory) { + ISidedInventory sided = (ISidedInventory) te; + //access = sided.getSlotsForFace(dir.getOpposite()); + access = CraneInserter.masquerade(sided, EnumFacing.getFront(outputSide.getOpposite().ordinal())); + } + + if(te instanceof IInventory) { + for(int i = 0; i < inventory.length; i++) { + + ItemStack stack = inventory[i]; + + if(!stack.isEmpty()) { + ItemStack ret = CraneInserter.addToInventory((IInventory) te, access, stack.copy(), outputSide.getOpposite().ordinal()); + + if(ret == ItemStack.EMPTY || ret.getCount() != stack.getCount()) { + inventory[i] = ret; + this.markDirty(); + return; + } + } + } + + //if the previous operation fails, repeat but use single items instead of the whole stack instead + //this should fix cases where the inserter can't insert into something that has a stack size limitation + for(int i = 0; i < inventory.length; i++) { + + ItemStack stack = inventory[i]; + + if(!stack.isEmpty()) { + stack = stack.copy(); + stack.setCount(1); + ItemStack ret = CraneInserter.addToInventory((IInventory) te, access, stack.copy(), outputSide.getOpposite().ordinal()); + + if(ret == ItemStack.EMPTY || ret.getCount() != stack.getCount()) { + this.decrStackSize(i, 1); + this.markDirty(); + return; + } + } + } + } + } + } + + @Override + public int getSizeInventory() { + return this.inventory.length; + } + + @Override + public int getInventoryStackLimit() { + return 64; + } + + @Override + public boolean isEmpty() { + for (ItemStack stack : this.inventory) { + if (!stack.isEmpty()) { + return false; + } + } + return true; + } + @Override + public ItemStack getStackInSlot(int index) { + return this.inventory[index]; + } + + @Override + public ItemStack decrStackSize(int index, int count) { + ItemStack stack = getStackInSlot(index); + if (stack != ItemStack.EMPTY) { + if (stack.getCount() > count) { + stack = stack.splitStack(count); + this.markDirty(); + } else { + this.setInventorySlotContents(index, ItemStack.EMPTY); + } + } + return stack; + } + + @Override + public ItemStack removeStackFromSlot(int index) { + ItemStack stack = getStackInSlot(index); + if (!stack.isEmpty()) { + setInventorySlotContents(index, ItemStack.EMPTY); + } + return stack; + } + @Override + public boolean isUsableByPlayer(EntityPlayer player) { + return this.world.getTileEntity(this.pos) == this && player.getDistanceSq(this.pos.add(0.5D, 0.5D, 0.5D)) <= 64.0D; + } + + @Override + public int getField(int id) { + return 0; + } + + @Override + public void setField(int id, int value) {} + + @Override + public int getFieldCount() { + return 0; + } + + @Override + public void clear() { + for (int i = 0; i < this.inventory.length; ++i) { + this.inventory[i] = null; + } + } + + @Override + public boolean hasCustomName() { + return false; + } + + @Override + public void openInventory(EntityPlayer player) {} + + @Override + public void closeInventory(EntityPlayer player) {} + + public int[] getAccessibleSlotsFromSide(int side) { + return access; + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack itemStack) { + return true; + } + + @Override + public boolean canExtractItem(int i, ItemStack itemStack, int j) { + return true; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerCraneInserter(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUICraneInserter(player.inventory, this); + } + +} diff --git a/src/main/resources/assets/hbm/blockstates/control_panel0.json b/src/main/resources/assets/hbm/blockstates/control_panel0.json new file mode 100644 index 0000000000..d6e58781b6 --- /dev/null +++ b/src/main/resources/assets/hbm/blockstates/control_panel0.json @@ -0,0 +1,8 @@ +{ + "variants": { + "facing=north": { "model": "hbm:control_panel0" }, + "facing=south": { "model": "hbm:control_panel0" }, + "facing=east": { "model": "hbm:control_panel0" }, + "facing=west": { "model": "hbm:control_panel0" } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/blockstates/conveyor.json b/src/main/resources/assets/hbm/blockstates/conveyor.json index 3cae8d3e7c..510d65b5db 100644 --- a/src/main/resources/assets/hbm/blockstates/conveyor.json +++ b/src/main/resources/assets/hbm/blockstates/conveyor.json @@ -2,7 +2,7 @@ "forge_marker": 1, "defaults": { "textures": {}, - "model": "hbm:arrow.obj" + "model": "hbm:conveyor.obj" }, "variants": { "facing": { diff --git a/src/main/resources/assets/hbm/blockstates/conveyor_double.json b/src/main/resources/assets/hbm/blockstates/conveyor_double.json new file mode 100644 index 0000000000..510d65b5db --- /dev/null +++ b/src/main/resources/assets/hbm/blockstates/conveyor_double.json @@ -0,0 +1,16 @@ +{ + "forge_marker": 1, + "defaults": { + "textures": {}, + "model": "hbm:conveyor.obj" + }, + "variants": { + "facing": { + "north": { }, + "south": { "y": 180 }, + "west": { "y": 270 }, + "east": { "y": 90 } + }, + "inventory": [{ "transform": "forge:default-block" }] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/blockstates/conveyor_express.json b/src/main/resources/assets/hbm/blockstates/conveyor_express.json new file mode 100644 index 0000000000..9f627d0b73 --- /dev/null +++ b/src/main/resources/assets/hbm/blockstates/conveyor_express.json @@ -0,0 +1,16 @@ +{ + "forge_marker": 1, + "defaults": { + "textures": {}, + "model": "hbm:conveyor_express.obj" + }, + "variants": { + "facing": { + "north": { }, + "south": { "y": 180 }, + "west": { "y": 270 }, + "east": { "y": 90 } + }, + "inventory": [{ "transform": "forge:default-block" }] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/blockstates/crane_ejector.json b/src/main/resources/assets/hbm/blockstates/crane_ejector.json new file mode 100644 index 0000000000..b7d59b51a1 --- /dev/null +++ b/src/main/resources/assets/hbm/blockstates/crane_ejector.json @@ -0,0 +1,14 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "hbm:crane_ejector" + }, + "variants": { + "facing": { + "north": {}, + "south": { "y": 180 }, + "west": { "y": 270 }, + "east": { "y": 90 } + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/blockstates/crane_inserter.json b/src/main/resources/assets/hbm/blockstates/crane_inserter.json new file mode 100644 index 0000000000..7c64078880 --- /dev/null +++ b/src/main/resources/assets/hbm/blockstates/crane_inserter.json @@ -0,0 +1,14 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "hbm:crane_inserter" + }, + "variants": { + "facing": { + "north": {}, + "south": { "y": 180 }, + "west": { "y": 270 }, + "east": { "y": 90 } + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/lang/en_us.lang b/src/main/resources/assets/hbm/lang/en_us.lang index 07f30df845..4100eae87c 100644 --- a/src/main/resources/assets/hbm/lang/en_us.lang +++ b/src/main/resources/assets/hbm/lang/en_us.lang @@ -1,3 +1,438 @@ +item.upgrade_ejector_1.name=Ejection Speed Upgrade Mk.I +item.upgrade_ejector_2.name=Ejection Speed Upgrade Mk.II +item.upgrade_ejector_3.name=Ejection Speed Upgrade Mk.III +item.upgrade_stack_1.name=Stack Ejection Upgrade Mk.I +item.upgrade_stack_2.name=Stack Ejection Upgrade Mk.II +item.upgrade_stack_3.name=Stack Ejection Upgrade Mk.III +tile.conveyor.name=Conveyor Belt +tile.express_conveyor.name=Express Conveyor Belt +tile.crane_ejector.name=Crane Ejector +container.craneExtractor=Crane Ejector +tile.crane_inserter.name=Crane Inserter +container.craneInserter=Crane Inserter +item.piston_electro.name=Electric Piston +item.piston_hydraulic.name=Hydraulic Piston +item.piston_pneumatic.name=Pneumatic Piston + +entity.entity_c_item_name=Moving Item + +jei.construction=Construction +jei.smithing=Smithing +jei.recycling=Recycling +jei.conversion=Conversion +jei.blackbook=Black Book +jei.dfc=DFC Crate Recipe +jei.fluids=Fluids +jei.silexdigamma=SILEX Digamma Recipes +jei.silexgamma=SILEX Gamma Recipes +jei.silexinfr=SILEX Infrared Recipes +jei.silexmicro=SILEX Micro Recipes +jei.silexradio=SILEX Radio Recipes +jei.silexuv=SILEX UV Recipes +jei.silexvisible=SILEX Visible Recipes +jei.silexxray=SILEX X-Ray Recipes +jei.wastedrum=Waste Drum + +ammo.trait.1=Caustic +ammo.trait.2=Stunning +ammo.trait.3=Boxcar +ammo.trait.4=Boat +ammo.trait.5=Building +ammo.trait.6=Chainsaw +ammo.trait.7=Explosion drops all blocks +ammo.trait.8=Chlorine gas +ammo.trait.9=Increased projectile speed +ammo.trait.10=Highly increased blast radius +ammo.trait.11=Decreased gravity +ammo.trait.12=It's a 40mm grenade that we squeezed to fit the barrel! +ammo.trait.13=No splash damage +ammo.trait.explosive=Explosive +ammo.trait.noexplosive=Non-explosive +ammo.trait.incexplosive=Incendiary explosion +ammo.trait.wither=Withering +ammo.trait.nodamage=No damage +ammo.trait.warcrime=Technically a warcrime +ammo.trait.highwarcrime=Twice the warcrime in a single round! +ammo.trait.heavymetal=Heavy metal +ammo.trait.chlorophyte=Chlorophyte +ammo.trait.homing=Homing +ammo.trait.nuclear=Nuclear +ammo.trait.fallout=Fallout +ammo.trait.incbomb=Increased bomb count +ammo.trait.nograv=Not affected by gravity +ammo.trait.emp=EMP +ammo.trait.toxic=Toxic +ammo.trait.poison=Poison splash +ammo.trait.rocketprop=Rocket Propelled +ammo.trait.blank=It's a blank +ammo.trait.gaugesleek=Fires a tracer which summons a storm of DU-flechettes +ammo.trait.balefire=Balefire +ammo.trait.jolt=Jolt +ammo.trait.vapor1=Increased flame count +ammo.trait.vapor2=For removing big mistakes +ammo.trait.vapor3=Highly decreased range +ammo.trait.vapor4=No lingering fire +ammo.trait.bmg1=12.7mm anti-materiel round +ammo.trait.bmg2=You shoot down planes with these, using +ammo.trait.bmg3=them against people would be nasty. +ammo.trait.75b1=Gyro-stabilized armor-piercing +ammo.trait.75b2=DU round with tandem charge +ammo.trait.75b3=Armor-piercing explosive round +ammo.trait.75b4=filled with oxy-phosphorous gel +ammo.trait.75b5=Armor-piercing penetrator filled +ammo.trait.75b6=with a powerful explosive charge +ammo.trait.12gm1=Instantly removes annoying and unbalanced enemies +ammo.trait.12gm2=No drawbacks lol +ammo.trait.mirv1=6 Low-yield mini nukes +ammo.trait.mirv2=6 Mini nukes +ammo.trait.mirv3=6 Tiny tots +ammo.trait.mirv4=6 Balefire shells +ammo.trait.mirv5=Sticky! +ammo.trait.357d1=Fits every .357 model +ammo.trait.357d2=Above-average damage +ammo.trait.rocket=Rocket +ammo.trait.uhhh=Uhhhh +ammo.trait.fun=Fun for the whole family! +ammo.trait.noprotomirv=Not recommended for the Proto MIRV +ammo.trait.tracer=Tracer +ammo.trait.meteorite=Fires a high-damage round that summons a small meteorite +ammo.trait.starmetal=Starmetal +ammo.trait.shrapnel=Shrapnel +ammo.trait.phosphor=Phosphorus splash +ammo.trait.phosphorburn=Induces phosphorus burns +ammo.trait.single=Single projectile +ammo.trait.folly1=Focused starmetal reaction blast +ammo.trait.folly2=Howitzer mini nuke shell +ammo.trait.folly3=Howitzer 17kg U238 shell +ammo.trait.inc=Incendiary +ammo.trait.noinc=Not incendiary +ammo.trait.bounce=Extra bouncy +ammo.trait.dbounce=Less bouncy +ammo.trait.nobounce=Not bouncy +ammo.trait.damage=Increased damage +ammo.trait.highdamage=Highly increased damage +ammo.trait.ddamage=Highly decreased damage +ammo.trait.wear=Increased wear +ammo.trait.highwear=Highly increased wear +ammo.trait.hhighwear=Very highly increased wear +ammo.trait.dwear=Decreased wear +ammo.trait.accuracy=Increased accuracy +ammo.trait.highaccuracy=Near-perfect accuracy +ammo.trait.daccuracy=Highly decreased accuracy +ammo.trait.range=Increased range +ammo.trait.dspeed=Decreased projectile speed +ammo.trait.nopen=Not penetrating +ammo.trait.pen=Penetrating +ammo.trait.dblast=Decreased blast radius +ammo.trait.blast=Increased blast radius +ammo.trait.nonuke=Not even a nuke +ammo.trait.noblock=No block damage + +fuse.impact=Impact +fuse.instant=Instant + +fuel.kerosene=Kerosene / Peroxide +fuel.solid=Solid Fuel +fuel.hydrogen=Hydrogen / Oxygen +fuel.xenon=Xenon Gas +fuel.balefire=BF Rocket Fuel / Peroxide + +warhead.he=HE +warhead.inc=Incendiary +warhead.cluster=Cluster +warhead.buster=Bunker Buster +warhead.nuclear=Nuclear +warhead.tx=Thermonuclear (TX) +warhead.n2=N² +warhead.balefire=BF +warhead.schrab=Schrabidium +warhead.taint=Taint +warhead.cloud=Cloud +warhead.volcano=Volcano +warhead.mirv=MIRV + +rarity.common=Common +rarity.uncommon=Uncommon +rarity.rare=Rare +rarity.epic=Epic +rarity.legendary=Legendary +rarity.strange=Strange + +type.carpet=Carpet bombing +type.napalm=Napalm +type.poison=Poison gas +type.orange=Agent orange +type.atomic=Atomic bomb +type.stinger=VT stinger rockets +type.pip=PIP OH GOD +type.cloud=Cloud the cloud oh god the cloud + +desc.varwin=Variant: Window +desc.varkey=Variant: Keypad +desc.airstrike=Aim & click to call an airstrike! +desc.type=Type: +desc.inaccuracy=Inaccuracy: +desc.size=Size: +desc.strength=Strength: +desc.weight=Weight: +desc.topsize=Top size: +desc.botsize=Bottom size: +desc.fueltype=Fuel type: +desc.fuelamnt=Fuel amount: +desc.fuelcon=Fuel consumption: +desc.payload=Max. payload: +desc.health=Health: +desc.author=by +desc.rarity=Rarity: +desc.any=Any +desc.na=N/A +desc.none=None +desc.fuse=Fuse: +desc.radius=Radius: +desc.ore=Ore: +desc.requires=Requires: +desc.creative=Creative-only item +desc.targetcoord=Target Coordinates: +desc.choosetarget1=Please select a target by clicking on block next to you. +desc.choosetarget2=Please select a target by manually setting coordinates. +desc.choosetarget3=Please select a target by clicking on any place in the render distance. +desc.templfolder1=Machine Templates: Paper + Dye +desc.templfolder2=Fluid IDs: Iron Plate + Dye +desc.templfolder3=Press Stamps: Flat Stamp +desc.templfolder4=Siren Tracks: Insulator + Steel Plate +desc.speed=Speed: +desc.tier=Tier: +desc.mintier=Min Tier: +desc.maxtier=Max Tier: +desc.fortune=Fortune +desc.veinminer=Vein miner +desc.silktouch=Silk touch +desc.unfluidid=Universal fluid identifier for: +desc.machine_press=Press +desc.nofilter=No filter installed! +desc.infilter=Installed filter: +desc.breakgame=Don't use this, it may break your game +desc.extraction=Right click with screwdriver to toggle extraction +desc.digammaed=mDRX/s +desc.stack=Stack: +desc.teslacoils=Provides infinite charge to tesla coils +desc.rads=RAD/s +desc.thd=K +desc.mil=M +desc.bil=G +desc.energystore=Energy stored: +desc.energychargecur=Charge: +desc.energychargerate=Charge rate: +desc.energydchargerate=Discharge rate: +desc.second=s +desc.satellitefr=Satellite frequency: +desc.generates=Generates +desc.heatpt=heat per tick +desc.lasts=Lasts +desc.ticks=ticks +desc.nukesolinium1=This Neutron Bomb is the weaponized daughter of the G.E.C.K. +desc.nukesolinium2=It emits so much neutron radiation that it transmutates all radioactive elements in range via alpha decay until only non-radioactive elements remain. +desc.usesdpc=Uses Deuterium Plasma Capsules +desc.chargeadds=Each Charge Adds: +desc.durticks=Durability in ticks: +desc.durpercents=Durability in percents: +desc.fieldmodifier=Force Field Modifier: +desc.powdrainmodifier=Power Drain Modifier: +desc.callsp=Right click to request supply drop! +desc.calldet1=Shift right-click to set position, +desc.calldet2=right-click to detonate! +desc.exact=Item and meta match +desc.wildcard=Item matches +desc.rcchange=Right click to change +desc.oredictmatch=Ore dict key matches: +desc.upgrade1=Mining Drill: +desc.upgrade2=Assembly Machine: +desc.upgrade3=Chemical Plant: +desc.upgrade4=Crystallizer: +desc.upgrade5=Cyclotron: +desc.upgrade6=Turbofan: +desc.upgrade7=Forcefield Range Upgrade: +desc.upgrade8=Forcefield Health Upgrade: +desc.upgrade9=Mining Laser Upgrade: +desc.upgrade10=Mining Upgrade: +desc.upgrade11=Mixer Upgrade: +desc.upgradesp11=Delay -15 / Consumption +300 +desc.upgradesp12=Delay -25% / Consumption +200% +desc.upgradesp13=Delay -25% / Consumption +200% +desc.upgradesp14=Delay -10% / Consumption +1000 +desc.upgradesp15=Speed x2 +desc.upgradesp21=Delay -30 / Consumption +600 +desc.upgradesp22=Delay -50% / Consumption +500% +desc.upgradesp23=Delay -50% / Consumption +500% +desc.upgradesp24=Delay -20% / Consumption +2000 +desc.upgradesp25=Speed x3 +desc.upgradesp31=Delay -45 / Consumption +900 +desc.upgradesp32=Delay -75% / Consumption +800% +desc.upgradesp33=Delay -75% / Consumption +800% +desc.upgradesp34=Delay -30% / Consumption +3000 +desc.upgradesp35=Speed x4 +desc.upgradeef11=Radius +1 / Consumption +80 +desc.upgradeef12=+5% chance of not consuming an item / Acid consumption +1000mB +desc.upgradeef13=-50% chance of incrementing overheat counter +desc.upgradeef21=Radius +2 / Consumption +160 +desc.upgradeef22=+10% chance of not consuming an item / Acid consumption +2000mB +desc.upgradeef23=-66% chance of incrementing overheat counter +desc.upgradeef31=Radius +3 / Consumption +240 +desc.upgradeef32=+15% chance of not consuming an item / Acid consumption +3000mB +desc.upgradeef33=-75% chance of incrementing overheat counter +desc.upgradecs11=Consumption -20% / Delay +25% +desc.upgradecs12=Consumption -100k +desc.upgradecs21=Consumption -60% / Delay +50% +desc.upgradecs22=Consumption -200k +desc.upgradecs31=Consumption -80% / Delay +100% +desc.upgradecs32=Consumption -300k +desc.upgradeft1=Fortune I / Delay +15 +desc.upgradeft2=Fortune II / Delay +30 +desc.upgradeft3=Fortune III / Delay +45 +desc.upgradeaf1=Production x2 / Consumption x2.5 +desc.upgradeaf2=Production x3 / Consumption x5 +desc.upgradeaf3=Production x4 / Consumption x7.5 +desc.upgraderd=Radius +16 / Consumption +500 +desc.upgradestack=Stacks to 16 +desc.upgradeht=Max. Health +50 / Consumption +250 +desc.upgrade12=Smelts blocks. Easy enough. +desc.upgrade13=Crunches ores +desc.upgrade14=Your new best friend +desc.upgrade15=It's like in Super Mario where all blocks are +desc.upgrade16=actually Toads, but here it's Half-Life scientists +desc.upgrade17=and they scream. A lot. +desc.upgrade18=Allows for UU-Matter processing. +desc.upgrade19=50% chance to override worthless items with /dev/zero +desc.upgrade20=50% chance to override worthless items with /dev/zero +desc.upgrade21=Hopefully the name says everything itself +desc.upgrade22=Ejector Upgrade: +desc.upgradeej1=Speed x2 +desc.upgradeej2=Speed x4 +desc.upgradeej3=Speed x10 +desc.upgradeej4=Can eject 4 items at a time +desc.upgradeej5=Can eject 16 items at a time +desc.upgradeej6=Can eject 64 items at a time +desc.bedrock_ore.Copper=Copper +desc.bedrock_ore.Iron=Iron +desc.bedrock_ore.Gold=Gold +desc.bedrock_ore.Lapis=Lapis +desc.bedrock_ore.Diamond=Diamond +desc.bedrock_ore.Redstone=Redstone +desc.bedrock_ore.Emerald=Emerald +desc.bedrock_ore.Quartz=Quartz +desc.bedrock_ore.Coal=Coal +desc.bedrock_ore.Tin=Tin +desc.bedrock_ore.Silver=Silver +desc.bedrock_ore.Lead=Lead +desc.bedrock_ore.Aluminum=Aluminium +desc.bedrock_ore.Nickel=Nickel +desc.bedrock_ore.Platinum=Platinum +desc.bedrock_ore.Iridium=Iridium +desc.bedrock_ore.Mithril=Mythril +desc.bedrock_ore.Uranium=Uranium +desc.bedrock_ore.Titanium=Titanium +desc.bedrock_ore.Tungsten=Tungsten +desc.bedrock_ore.Coltan=Coltan +desc.bedrock_ore.Beryllium=Beryllium +desc.bedrock_ore.Zirconium=Zirconium +desc.bedrock_ore.Neodymium=Neodymium +desc.bedrock_ore.Lithium=Lithium +desc.bedrock_ore.RedPhosphorus=Red Phosphorus +desc.bedrock_ore.Sulfur=Sulfur +desc.bedrock_ore.Saltpeter=Niter +desc.bedrock_ore.Fluorite=Fluorite +desc.bedrock_ore.InfernalCoal=Infernal Coal +desc.bedrock_ore.RareEarth=Rare Earth +desc.bedrock_ore.Nitanium=Nitanium +desc.bedrock_ore.Starmetal=Starmetal +desc.bedrock_ore.Asbestos=Asbestos +desc.bedrock_ore.Thorium232=Thorium-232 +desc.bedrock_ore.Th232=Thorium-232 +desc.bedrock_ore.Thorium=Thorium +desc.bedrock_ore.Plutonium=Plutonium +desc.bedrock_ore.Schrabidium=Schrabidium +desc.bedrock_ore.Cobalt=Cobalt +desc.bedrock_ore.Australium=Australium +desc.bedrock_ore.Reiium=Reiium +desc.bedrock_ore.Weidanium=Weidanium +desc.bedrock_ore.Unobtainium=Unobtainium +desc.bedrock_ore.Verticium=Verticium +desc.bedrock_ore.Daffergon=Daffergon +desc.bedrock_ore.Lignite=Lignite +desc.bedrock_ore.Cinnabar=Cinnabar +desc.bedrock_ore.Borax=Borax +desc.bedrock_ore.Volcanic=Volcanic +desc.item_bedrock_ore.Copper=Copper +desc.item_bedrock_ore.Iron=Iron +desc.item_bedrock_ore.Gold=Gold +desc.item_bedrock_ore.Lapis=Lapis +desc.item_bedrock_ore.Diamond=Diamond +desc.item_bedrock_ore.Redstone=Redstone +desc.item_bedrock_ore.Emerald=Emerald +desc.item_bedrock_ore.Quartz=Quartz +desc.item_bedrock_ore.Coal=Coal +desc.item_bedrock_ore.Tin=Tin +desc.item_bedrock_ore.Silver=Silver +desc.item_bedrock_ore.Lead=Lead +desc.item_bedrock_ore.Aluminum=Aluminium +desc.item_bedrock_ore.Nickel=Nickel +desc.item_bedrock_ore.Platinum=Platinum +desc.item_bedrock_ore.Iridium=Iridium +desc.item_bedrock_ore.Mithril=Mythril +desc.item_bedrock_ore.Uranium=Uranium +desc.item_bedrock_ore.Titanium=Titanium +desc.item_bedrock_ore.Tungsten=Tungsten +desc.item_bedrock_ore.Coltan=Coltan +desc.item_bedrock_ore.Beryllium=Beryllium +desc.item_bedrock_ore.Zirconium=Zirconium +desc.item_bedrock_ore.Neodymium=Neodymium +desc.item_bedrock_ore.Lithium=Lithium +desc.item_bedrock_ore.RedPhosphorus=Red Phosphorus +desc.item_bedrock_ore.Sulfur=Sulfur +desc.item_bedrock_ore.Saltpeter=Niter +desc.item_bedrock_ore.Fluorite=Fluorite +desc.item_bedrock_ore.InfernalCoal=Infernal Coal +desc.item_bedrock_ore.RareEarth=Rare Earth +desc.item_bedrock_ore.Nitanium=Nitanium +desc.item_bedrock_ore.Starmetal=Starmetal +desc.item_bedrock_ore.Asbestos=Asbestos +desc.item_bedrock_ore.Thorium232=Thorium-232 +desc.item_bedrock_ore.Th232=Thorium-232 +desc.item_bedrock_ore.Thorium=Thorium +desc.item_bedrock_ore.Plutonium=Plutonium +desc.item_bedrock_ore.Schrabidium=Schrabidium +desc.item_bedrock_ore.Cobalt=Cobalt +desc.item_bedrock_ore.Australium=Australium +desc.item_bedrock_ore.Reiium=Reiium +desc.item_bedrock_ore.Weidanium=Weidanium +desc.item_bedrock_ore.Unobtainium=Unobtainium +desc.item_bedrock_ore.Verticium=Verticium +desc.item_bedrock_ore.Daffergon=Daffergon +desc.item_bedrock_ore.Lignite=Lignite +desc.item_bedrock_ore.Cinnabar=Cinnabar +desc.item_bedrock_ore.Borax=Borax +desc.item_bedrock_ore.Volcanic=Volcanic + +chat.detonated=Detonated +chat.posset=Position set +chat.possetx=Position set to X: +chat.possetz=Z: +chat.abilenabled=Enabled +chat.abildisabled=Tool ability deactivated +chat.ability=Ability +chat.blacklist=is blacklisted! +chat.welcome=Welcome back +chat.duck=Press O to duck! +chat.newver1=New +chat.newver2=version +chat.newver3=is available +chat.curver1=Playing on version +chat.curver2=right now +chat.newfeat=New Features +chat.addpldata=Added player data! +chat.callas=Called in airstrike! +chat.callsp=Called in supply drop! + key.categories.hbm=Hbm's Nuclear Tech Mod key.jetpack_activate=Toggle Jetpack key.jetpack_hover=Toggle Jetpack Hover Mode @@ -497,6 +932,21 @@ trait.explosive=Explosive trait.unstable=Unstable trait.coal=Coal Dust trait.contaminating=Contaminating Drop +trait.unmineable=Unmineable +trait.destroybyexplosion=Can only be destroyed by explosions +trait.blastres=Blast Resistance +trait.radshield=Radiation Shielding +trait.soliniumgrenade=Solinium Grenade +trait.nucleargrenade=Nuclear Grenade +trait.fallout=Fallout +trait.reactorrod=Reactor Fuel Rod +trait.nuclearbomb=Nuclear Bomb +trait.balefirebomb=Balefire Bomb +trait.schrabbomb=Schrabidium Bomb +trait.modularbomb=Modular Bomb +trait.thermobomb=Thermonuclear Bomb +trait.extremebomb=Extreme Bomb +trait.soliniumbomb=Solinium Bomb trait.contaminating.radius=Radius: %sm trait.cleanroom=Clean @@ -535,6 +985,15 @@ trait.rbmk.xenon=Xenon poison: %s trait.rbmk.xenonBurn=Xenon burn function: %s trait.rbmk.xenonGen=Xenon gen function: %s +trait.rbmx.safe1=SAFE / PASSIVE +trait.rbmx.safe2=SAFE / EULER +trait.rbmx.safe3=SAFE / SIGMOID +trait.rbmx.medium1=MEDIUM / LOGARITHMIC +trait.rbmx.medium2=MEDIUM / SQUARE ROOT +trait.rbmx.risky=RISKY / NEGATIVE-QUADRATIC +trait.rbmx.dangerous1=DANGEROUS / LINEAR +trait.rbmx.dangerous2=DANGEROUS / QUADRATIC +trait.rbmx.experimental=EXPERIMENTAL / SINE SLOPE trait.rbmx.coreTemp=Core entropy: %s trait.rbmx.depletion=Crustyness: %s trait.rbmx.diffusion=Flow: %s @@ -594,6 +1053,11 @@ hadron.stats_coord=Erroring position: %s / %s / %s hadron.stats_momentum=Momentum: %s hadron.success=Completed! +tool.ability.list=Abilities: +tool.ability.rightclick=Right click to cycle through abilities! +tool.ability.shiftclick=Sneak-click to turn abilitty off! +tool.ability.weaponlist=Weapon modifiers: +tool.ability.canmine=can be mined tool.ability.centrifuge=Auto-Centrifuge tool.ability.crystallizer=Auto-Crystallizer tool.ability.explosion=Explosion @@ -1485,7 +1949,7 @@ tile.railgun_plasma.name=Railgun container.railgun=Railgun tile.machine_catalytic_cracker.name=Catalytic Cracking Tower -tile.control_panel_custom.name=Custom Control Panel [WIP] +tile.control_panel0.name=Control Panel item.turret_control.name=Turret Controller item.turret_chip.name=Turret AI-Chip diff --git a/src/main/resources/assets/hbm/lang/ko_kr.lang b/src/main/resources/assets/hbm/lang/ko_kr.lang index 099e2cf8b1..b8a68e0be7 100644 --- a/src/main/resources/assets/hbm/lang/ko_kr.lang +++ b/src/main/resources/assets/hbm/lang/ko_kr.lang @@ -1,4775 +1,3749 @@ -#한국어 번역일수도 - -key.categories.hbm=Hbm의 핵 기술 모드 -key.jetpack_activate=제트팩 전환 -key.jetpack_hover=Jetpack 호버 모드 전환 -key.jetpack_hud=Jetpack HUD 모드 전환 -key.fsb_flashlight=FSB 손전등 전환 - -turret.animals=Target Passive: %s -turret.machines=Target Machines: %s -turret.mobs=Target Mobs: %s -turret.none=없음 -turret.off=끄다 -turret.on=에 -turret.players=Target Players: %s - -item.drillbit_dnt.name=디뉴트로늄 드릴비트 -item.drillbit_dnt_diamond.name=디뉴트로늄 드릴비트(다이아몬드 팁) -item.drillbit_desh.name=데쉬 드릴비트 -item.drillbit_desh_diamond.name=Desh 드릴비트(다이아몬드 팁) -item.drillbit_ferro.name=페로라늄 드릴비트 -item.drillbit_ferro_diamond.name=페로라늄 드릴비트(다이아몬드 팁) -item.drillbit_hss.name=고속 강철 드릴비트 -item.drillbit_hss_diamond.name=고속 강철 드릴비트(다이아몬드 팁) -item.drillbit_steel.name=강철 드릴비트 -item.drillbit_steel_diamond.name=강철 드릴비트(다이아몬드 팁) -item.drillbit_tcalloy.name=테크네튬 강철 드릴비트 -item.drillbit_tcalloy_diamond.name=테크네티움 강철 드릴비트(다이아몬드 팁) -item.solid_fuel_presto.name=프레스토 로그 -item.solid_fuel_presto_triplet.name=향상된 Presto 로그 - -container.machineMixer=산업용 믹서 -container.machineUUMixer=산업용 UU 믹서 -tile.machine_mixer.name=산업용 믹서 - -item.deuterium_filter.name=중수소 필터 -tile.machine_deuterium_extractor.name=중수소 추출기 -tile.machine_deuterium_tower.name=중수소 추출탑 - -tile.ore_bedrock_block.name=기반암 광석 -item.ingot_cadmium.name=카드뮴 주괴 -item.nugget_cadmium.name=카드뮴 덩어리 -item.powder_cadmium.name=카드뮴 가루 -tile.block_cadmium.name=카드뮴 블록 -item.euphemium_capacitor.name=유페늄 커패시터 -item.ingot_cdalloy.name=카드뮴 강철 주괴 -item.powder_cdalloy.name=카드뮴 강철 가루 -item.powder_borax.name=붕사 가루 -tile.ore_depth_borax.name=깊이 붕사 광석 - -item.ingot_ferrouranium.name=페로라늄 주괴 -itemGroup.tabTest=핵 기술 모드 테스트 탭 -itemGroup.tabParts=NTM 리소스 및 부품 -itemGroup.tabControl=NTM 기계 품목 및 연료 -itemGroup.tabTemplate=NTM 템플릿 -itemGroup.tabResource=NTM 리소스 -itemGroup.tabBlocks=NTM 블록 -itemGroup.tabMachine=NTM 기계 -itemGroup.tabNuke=NTM 폭탄 -itemGroup.tabMissile=NTM 미사일 및 위성 -itemGroup.tabWeapon=NTM 무기 및 포탑 -itemGroup.tabConsumable=NTM 소모품 및 장비 -item.meteor_charm.name=유성 부적 -item.protection_charm.name=보호의 부적 -fluid.plasma_put=플루토늄-트리튬 플라즈마 -fluid.experience=XP 주스 -fluid.ic2uu_matter=UU 물질 -hbmfluid.ic2uu_matter=UU 물질 -fluid.tile.water=물 -fluid.tile.lava=용암 -tile.uu_gigafactory.name=UU-물질 기가팩토리 -container.uuCreator=UU 콘덴서 -hbmfluid.plasma_put=플루토늄-트리튬 플라즈마 -hbmfluid.experience=XP 주스 -container.rbmkHeater=RBMK 유체 히터 -tile.machine_excavator.name=굴착기 - -hbmfluid.heavywater=중수 -fluid.heavywater=중수 -hbmfluid.nitric_acid=질산 -fluid.nitric_acid=질산 -hbmfluid.solvent=용제 -fluid.solvent=용제 -hbmfluid.radiosolvent=고성능 용매 -fluid.radiosolvent=고성능 용매 - - -tile.heater_rt.name=방사성동위원소 열히터 -tile.heater_rt.desc=RTG 펠릿에서 열 생성 -container.heaterRadioThermal=방사성동위원소 열히터 - -hazard.prot=위험으로부터 보호합니다: -hazard.noprot=다음으로부터 보호하지 않습니다: -hazard.bacteria=박테리아/에어로졸 -hazard.corrosive=부식성 연기 -hazard.gasChlorine=화학가스 -hazard.gasInert=불활성 가스 / 질식제 -hazard.gasMonoxide=일산화탄소 -hazard.light=밝은 빛 -hazard.nerveAgent=신경작용제 -hazard.neverProtects=다음으로부터 보호하지 않습니다. -hazard.particleCoarse=공중 입자 -hazard.particleFine=미립자 -hazard.sand=눈 자극제 -hazard.radGas=방사성 가스 - -adjective.little=낮은 -adjective.medium=중간 -adjective.high=높은 -adjective.veryhigh=매우 높음 -adjective.extreme=극심한 - -book.msword.cover=$운석검를 얻는 방법에 대한 가이드$ -book.msword.title0=설명 -book.msword.page0=페이지 1-8: 운석 검을 얻는 방법. 페이지 9-25: 운석 검을 업그레이드하는 방법 -book.msword.title1=운석 블록 -book.msword.page1=운석 조각은 때때로 비가 내리는 운석을 채굴하여 얻을 수 있습니다. -book.msword.title2=운석 주괴 -book.msword.page2=§l기계 = 용광로§r -book.msword.title3=뜨거운 주괴 -book.msword.page3=§l기게 = 화로§r -book.msword.title4=단조된 주괴 -book.msword.page4=§l기계 = 모루§r Tier 3: 뜨거울 때만 제작할 수 있으므로 서두르세요. -book.msword.title5=열간 단조 주괴 -book.msword.page5=§l기계 = 화로§r -book.msword.title6=운석 칼날 -book.msword.page6=§l기계 = 모루§r: 잘 해냈어요! 이제 두 번째 칼을 제작하면 나만의 운석 검을 갖게 됩니다. -book.msword.title7=운석 -book.msword.page7=§l기계 = 작업대§r -book.msword.title8=업그레이드 1: 그을린 -book.msword.page8=§l기게 = 화로§r -book.msword.title9=업그레이드 2: 리포지드 -book.msword.page9=§l기계 = 모루§r -book.msword.title10=업그레이드 3: 강화 -book.msword.page10=§l기계 = 납작한 스탬프로 누릅니다§r -book.msword.title11=업그레이드 4: 합금 -book.msword.page11=§l기계 = 용광로§r -book.msword.title12=업그레이드 5: 가공 -book.msword.page12=§l기계 = 어셈블러§r -book.msword.page13=검이 배터리 슬롯 안에 있는 동안 어셈블러 내부에서 무언가를 만드세요. -book.msword.title14=업그레이드 6: 치료됨 -book.msword.page14=§l기게 = 화학 공장§r -book.msword.page15=검이 배터리 슬롯 안에 있는 동안 화학 공장 내부에서 무언가를 제작하세요. -book.msword.title16=업그레이드 7: 에칭 -book.msword.page16=§l기게 = 광석 산화제§r -book.msword.title17=업그레이드 8: 열 -book.msword.page17=§l기게 = 열이 있는 반응로§r 4 -book.msword.title18=업그레이드 9: 조사됨 -book.msword.page18=§l기계 = RBMK 조사 채널§r -book.msword.page19=엄청난 양의 방사선을 검에 쏟아부으세요. -book.msword.title20=업그레이드 10: 융합 -book.msword.page20=§l기계 = 플라즈마가 있는 융합 반응기§r: 조사된 검을 증식 슬롯에 놓습니다. -book.msword.title21=업그레이드 11: 불길한 -book.msword.page21=§l기계 = 베일파이어 플라즈마가 포함된 융합 반응기: 융합된 검을 증식 슬롯에 놓습니다. -book.msword.title22=업그레이드 12: 뒤틀린 -book.msword.page22=§l기계 = S.A.F.E Reactor§r : 검을 특이점 반응기에 던지기 -book.msword.page23=발전이 시작되고 플라즈마가 보이면 원자로의 핵심을 해로운 검으로 교체하십시오. -book.msword.title24=업그레이드 13: 악마 -book.msword.page24=§l기계 = DFC§r: §4수정됨 - +#book.rbmk.cover=HOW 2 RBMK:$원자로$건설의 기초$ +#book.rbmk.page1=§lRBMK§r은 완전한 모듈식 원자로입니다. 대부분의 다른 리액터와 달리 "코어"가 없고 크기 제한이 없으며 리액터의 동작과 효율성은 리액터가 구축된 방식과 서로 다른 부분이 서로 상호 작용하는 방식에서 비롯됩니다. +#book.rbmk.page10=§lgraphite 감속재§r는 통과하는 빠른 중성자를 느린 중성자로 변환합니다. 대부분의 연료는 빠른 중성자로 분열되지만 느린 중성자는 분리되어야 하므로 감속재를 사용하는 것이 좋습니다. +#book.rbmk.page11=§구조 기둥§r은 중성자와 간섭하지 않으며 특별한 용도도 없습니다. 구조 기둥은 열을 전달할 수 있기 때문에 다른 부품이 없는 구조 기둥으로 반응기를 채우는 것이 좋습니다. +#book.rbmk.page12=§lRBMK 콘솔§r을 사용하면 멀리서도 원자로를 제어할 수 있습니다. RBMK 부품에 §lRBMK§r §l콘솔 연결 장치§r를 사용하면 콘솔이 리액터를 콘솔에 연결합니다. 콘솔은 15x15 부품만 관리할 수 있으며, 더 큰 원자로의 경우 여러 콘솔을 사용할 수 있습니다. +#book.rbmk.page13=부품을 클릭하면 해당 부품이 선택 및 선택 해제됩니다. 컬러 버튼을 사용하여 해당 컬러 그룹의 모든 컨트롤 로드를 빠르게 선택할 수 있습니다. 버튼 'A'는 모든 제어봉을 선택하고 'X'는 모두 선택을 해제합니다. +#book.rbmk.page14=녹색 상자에 0-100의 숫자를 입력한 다음 옆에 있는 버튼을 누르면 선택한 모든 제어봉이 이 위치로 설정됩니다. 'AZ-5' 버튼을 누르면 모든 제어봉이 완전히 삽입됩니다. +#book.rbmk.page15=§lfuel§r의 반응성은 여러 요소를 기반으로 합니다. 주요한 것은 §농축§r, §l크세논 독§r 및 들어오는 §l중성자§r의 양입니다. 크세논은 연료가 중성자를 거의 받지 못하고 정상 작동 중에 연소될 때 축적됩니다. 중성자의 유효성은 유형에 따라 다르며 대부분의 연료는 §l느린 중성자와 가장 잘 분리§r합니다. +#book.rbmk.page16=§4§l 피하십시오. +#book.rbmk.page2=원자로가 작동하면 §lheat§r이 생성됩니다. 열은 부품 사이로 퍼지며 그 과정에서 서서히 감소합니다. 목표는 반응기를 녹이지 않고 가능한 한 많은 열을 생산하고 그 열을 반응기를 냉각하고 증기를 생성하는 §ls증기 채널§r로 이동시키는 것입니다. +#book.rbmk.page3=§l연료봉§r은 중성자 플럭스를 포착하여 연료봉 내부의 연료를 반응시켜 그 과정에서 중성자를 방출합니다. 중성자는 최대 범위가 5개 블록인 4개 기본 방향 모두에서 방출됩니다. 방출되는 중성자의 양은 사용된 §l연료§r에 따라 다릅니다. +#book.rbmk.page4=§l제어봉§r은 통과하는 중성자의 양을 줄입니다. 완전히 삽입하면 모든 중성자를 차단하고 절반만 삽입하면 절반만 차단합니다. 제어봉은 원자로의 활동을 조절하고 끄는 데 사용됩니다. +#book.rbmk.page5=GUI 중앙에 현재 막대 삽입이 표시됩니다. 왼쪽에 있는 색상 버튼은 컨트롤 막대를 색상 그룹에 추가하여 §lRBMK 콘솔§r에서 그룹화된 막대를 빠르게 선택하는 데 유용합니다. 오른쪽에 있는 버튼을 사용하면 25%%씩 수동으로 삽입할 수 있습니다. +#book.rbmk.page6=§l자동 제어봉§r 기능은 일반 제어봉과 거의 동일하지만 수동으로 구성할 수 없으며 대신 현재 온도에 따라 막대 위치를 조정합니다. 어떤 기능을 사용할 것인지, 어떤 온도에서 얼마나 깊이 삽입할 것인지를 먼저 정의해야 합니다. +#book.rbmk.page7=§l스팀 채널§r은 원자로의 열 수준을 적극적으로 줄이는 유일한 부분입니다. 구성 요소의 온도가 설정된 증기 유형의 끓는점을 초과하면 끓는점 아래로 다시 냉각하는 데 필요한 만큼의 물을 소비하고 필요한 만큼의 증기를 생성하려고 합니다. +#book.rbmk.page8=§l중성자 반사체§r는 중성자가 통과하는 것을 차단하는 대신 중성자가 나온 연료봉에서 다시 반사됩니다. 이것은 단순히 원자로를 나가서 낭비되는 중성자를 활용하는 데 유용합니다. +#book.rbmk.page9=§l중성자 흡수체§r는 단순히 중성자를 차단합니다. 흡수된 중성자는 열을 발생시키지 않고 효과적으로 보이드됩니다. 이는 연료봉이 반응하지 않으면 범위 내에 있을 수 있는 반응을 방지하는 데 유용합니다. +#book.rbmk.title1=소개 +#book.rbmk.title10=흑연 중재자 +#book.rbmk.title11=구조 기둥 +#book.rbmk.title12=콘솔 +#book.rbmk.title13=콘솔 사용 +#book.rbmk.title15=연료 +#book.rbmk.title16=멜트다운 +#book.rbmk.title2=열 +#book.rbmk.title3=연료봉 +#book.rbmk.title4=제어봉 +#book.rbmk.title5=제어봉 - 사용법 +#book.rbmk.title6=자동제어봉 +#book.rbmk.title7=스팀 채널 +#book.rbmk.title8=중성자 반사경 +#book.rbmk.title9=중성자 흡수기 +achievement.bossUFO=아이 르마오 +achievement.bossUFO.desc=Yo, 여기 뭐가 있지? 거대한 우주선이 블록쉽을 끌어당긴다? armor.blastProtection=폭발에 대한 %s의 데미지 수정자 -armor.explosionImmune=폭발에 면역 armor.cap=하드 데미지 상한선 %s armor.damageModifier=%s에 대한 %s의 데미지 수정자 +armor.electricJetpack=전기 제트팩 +armor.fastFall=빠른 가을 armor.fireproof=방화 armor.fullSetBonus=풀 세트 보너스: armor.geigerHUD=내장형 가이거 계수기 HUD armor.geigerSound=청각 가이거 계수기 +armor.glider=글라이더 armor.gravity=%s의 중력 수정자 armor.hardLanding=경착륙 -armor.modifier=%s의 일반 손상 수정자 -armor.nullDamage=%s의 모든 손상을 무효화합니다 -armor.thermal=열상 시력 -armor.threshold=%s의 손상 임계값 -armor.vats=적 HUD -armor.ignoreLimit=한도 무시 +armor.ignoreLimit=제한 무시 +armor.modifier=%s의 일반 피해 수정자 +armor.nullDamage=%s의 모든 피해 무효화 armor.rocketBoots=로켓 부츠 -armor.fastFall=빠른 가을 armor.sprintBoost=스프린트 부스트 -armor.electricJetpack=전기 제트팩 -armor.glider=글라이더 - -key.categories.hbm.craneLoad=RBMK 크레인 하중 -key.categories.hbm.craneMoveDown=RBMK 크레인 아래로 이동 -key.categories.hbm.craneMoveLeft=RBMK 크레인 왼쪽으로 이동 -key.categories.hbm.craneMoveRight=RBMK 크레인 오른쪽으로 이동 -key.categories.hbm.craneMoveUp=RBMK 크레인 위로 이동 -key.categories.hbm.reload=새로고침 -key.categories.hbm.toggleBack=뒤로 전환 -key.categories.hbm.toggleHUD=토글 허드 - -item.ore_bedrock.name=%s 배드락 광석 -item.ore_bedrock_centrifuged.name=원심 분리 된 %s 광석 -item.ore_bedrock_cleaned.name=청소된 %s 광석 -item.ore_bedrock_deepcleaned.name=깊게 청소된 %s 광석 -item.ore_bedrock_enriched.name=농축된 %s 광석 -item.ore_bedrock_nitrated.name=질화된 %s 광석 -item.ore_bedrock_nitrocrystalline.name=니트로크리스탈린 %s 광석 -item.ore_bedrock_purified.name=정제된 %s 광석 -item.ore_bedrock_seared.name=그을린 %s 광석 -item.ore_bedrock_separated.name=분리된 %s 광석 -item.ore_bedrock_exquisite.name=절묘한 %s 광석 -item.ore_bedrock_perfect.name=완벽한 %s 광석 - -item.nugget_unobtainium_greater.name=언옵테이늄-440 조각 -item.nugget_unobtainium_lesser.name=언옵테이늄-439 조각 - -tile.waste_leaves.name=폐기물 잎 -tile.fluid_duct_solid.name=밀봉된 유체 덕트 -tile.fluid_duct_solid_sealed.name=방사능 밀봉 유체 덕트 -tile.field_disturber.name=고에너지 필드 방해기 - -tile.radio_torch_sender.name=레드스톤-오버-라디오 발신자 -tile.radio_torch_receiver.name=레드스톤 오버 라디오 수신기 -container.rttySender=레드스톤-오버-라디오 발신자 -container.rttyReceiver=레드스톤 오버 라디오 수신기 - -tile.reinforced_brick_slab.name=강화된 벽돌 슬라브 -tile.reinforced_brick_stairs.name=강화된 벽돌 계단 -tile.reinforced_sand_slab.name=강화된 모래 석판 -tile.reinforced_sand_stairs.name=강화된 모래 계단 -tile.reinforced_stone_slab.name=강화된 석판 -tile.reinforced_stone_stairs.name=강화된 돌 계단 -tile.brick_concrete_slab.name=콘크리트 벽돌 슬라브 -tile.brick_concrete_stairs.name=콘크리트 벽돌 계단 -tile.brick_concrete_mossy_slab.name=이끼 낀 콘크리트 반블럭 -tile.brick_concrete_mossy_stairs.name=이끼 낀 콘크리트 계단 -tile.brick_concrete_cracked_slab.name=깨진 콘크리트 반블럭 -tile.brick_concrete_cracked_stairs.name=깨진 콘크리트 계단 -tile.brick_concrete_broken_slab.name=부서진 콘크리트 반블럭 -tile.brick_concrete_broken_stairs.name=깨진 콘크리트 계단 -tile.brick_compound_slab.name=복합 메쉬 반블럭 -tile.brick_compound_stairs.name=복합 메쉬 계단 -tile.brick_asbestos_slab.name=석면 벽돌 반블럭 -tile.brick_asbestos_stairs.name=석면 벽돌 계단 -tile.brick_obsidian_slab.name=흑요석 벽돌 반블럭 -tile.brick_obsidian_stairs.name=흑요석 벽돌 계단 -tile.cmb_brick_reinforced_slab.name=강화된 CMB 벽돌 반블럭 -tile.cmb_brick_reinforced_stairs.name=강화된 CMB 벽돌 계단 -tile.concrete_slab.name=콘크리트 타일 반블럭 -tile.concrete_stairs.name=콘크리트 타일 계단 -tile.concrete_smooth_slab.name=콘크리트 반블럭 -tile.concrete_smooth_stairs.name=콘크리트 계단 -tile.concrete_white_slab.name=흰색 콘크리트 반브럭 -tile.concrete_white_stairs.name=흰색 콘크리트 계단 -tile.concrete_orange_slab.name=주황색 콘크리트 반블럭 -tile.concrete_orange_stairs.name=주황색 콘크리트 계단 -tile.concrete_magenta_slab.name=마젠타 콘크리트 반블럭 -tile.concrete_magenta_stairs.name=마젠타색 콘크리트 계단 -tile.concrete_light_blue_slab.name=하늘색 콘크리트 반블럭 -tile.concrete_light_blue_stairs.name=하늘색 콘크리트 계단 -tile.concrete_yellow_slab.name=노란색 콘크리트 반블럭 -tile.concrete_yellow_stairs.name=노란색 콘크리트 계단 -tile.concrete_lime_slab.name=라임 콘크리트 반블럭 -tile.concrete_lime_stairs.name=라임 콘크리트 계단 -tile.concrete_pink_slab.name=핑크 콘크리트 반블럭 -tile.concrete_pink_stairs.name=핑크 콘크리트 계단 -tile.concrete_gray_slab.name=회색 콘크리트 반블럭 -tile.concrete_gray_stairs.name=회색 콘크리트 계단 -tile.concrete_silver_slab.name=실버 콘크리트 반블럭 -tile.concrete_silver_stairs.name=실버 콘크리트 계단 -tile.concrete_cyan_slab.name=청록색 콘크리트 반블럭 -tile.concrete_cyan_stairs.name=청록색 콘크리트 계단 -tile.concrete_purple_slab.name=보라색 콘크리트 반블럭 -tile.concrete_purple_stairs.name=보라색 콘크리트 계단 -tile.concrete_blue_slab.name=파란색 콘크리트 반블럭 -tile.concrete_blue_stairs.name=파란색 콘크리트 계단 -tile.concrete_brown_slab.name=갈색 콘크리트 반블럭 -tile.concrete_brown_stairs.name=갈색 콘크리트 계단 -tile.concrete_green_slab.name=녹색 콘크리트 반블럭 -tile.concrete_green_stairs.name=녹색 콘크리트 계단 -tile.concrete_red_slab.name=빨간색 콘크리트 반블럭 -tile.concrete_red_stairs.name=빨간 콘크리트 계단 -tile.concrete_black_slab.name=검은색 콘크리트 반블럭 -tile.concrete_black_stairs.name=검은색 콘크리트 계단 -tile.concrete_asbestos_slab.name=석면 콘크리트 반블럭 -tile.concrete_asbestos_stairs.name=석면 콘크리트 계단 -tile.ducrete_smooth_slab.name=매끄러운 듀크리트 반블럭 -tile.ducrete_smooth_stairs.name=부드러운 듀크리트 계단 -tile.ducrete_slab.name=듀크리트 반블럭 -tile.ducrete_stairs.name=듀크리트 계단 -tile.ducrete_brick_slab.name=듀크리트 벽돌 반블럭 -tile.ducrete_brick_stairs.name=듀크리트 벽돌 계단 -tile.ducrete_reinforced_slab.name=강화된 듀크리트 반블럭 -tile.ducrete_reinforced_stairs.name=강화된 듀크리트 계단 -tile.tile_lab_slab.name=실험실 타일 반블럭 -tile.tile_lab_stairs.name=실험실 타일 계단 -tile.tile_lab_cracked_slab.name=깨진 실험실 타일 반블럭 -tile.tile_lab_cracked_stairs.name=깨진 실험실 타일 계단 -tile.tile_lab_broken_slab.name=깨진 실험실 타일 반블럭 -tile.tile_lab_broken_stairs.name=깨진 실험실 타일 계단 - -item.grenade_solinium.name=솔리늄 수류탄 - -tile.radsensor.name=방사선 센서 -tile.waste_grass_tall.name=오염된 잔디 - -item.mp_warhead_15_volcano.name=크기 15 화산 탄두 -fluid.radwater_fluid=방사수 - -tile.rbmk_crane_console.name=RBMK 크레인 콘솔 +armor.thermal=열 시력 +armor.threshold=손상 임계값 %s +armor.vats=적 HUD +book.rbmk.cover=나의 첫 번째 RBMK:$기본 $빌딩 $리액터 +book.rbmk.page1=§lRBMK§r은 완전한 모듈식 원자로입니다. 대부분의 다른 리액터와 달리 "코어"가 없고 크기 제한이 없으며 리액터의 동작과 효율성은 리액터가 구축된 방식과 다양한 부품이 서로 어떻게 상호 작용하는지에 따라 달라집니다. +book.rbmk.page10=§l흑연 감속재§r는 통과하는 빠른 중성자를 느린 중성자로 변환합니다. 대부분의 연료는 빠른 중성자로 분리되는 반면 느린 중성자는 핵분열에 필요하므로 감속재를 사용하는 것이 좋습니다. +book.rbmk.page11=§l구조 기둥§r은 어떤 식으로든 중성자에 영향을 미치지 않으며 특별한 적용이 없습니다. 구조화된 기둥은 열을 전달할 수 있기 때문에 다른 부품이 없는 경우 구조화된 기둥으로 반응기를 채우는 것이 좋습니다. +book.rbmk.page12=§lRBMK 콘솔§r을 사용하면 멀리서도 원자로를 제어할 수 있습니다. §l 장치를 사용하여 RBMK 부분에서 콘솔 RBMK§r를 연결한 다음 콘솔에서 리액터와 콘솔을 연결합니다. 콘솔은 15x15 부품만 제어할 수 있으며 대형 반응기의 경우 여러 콘솔을 사용할 수 있습니다. +book.rbmk.page13=부품을 클릭하면 해당 부품이 선택 및 선택 해제됩니다. 색상 버튼을 사용하여 해당 색상 그룹의 모든 제어봉을 빠르게 선택할 수 있습니다. 버튼 "A"는 모든 컨트롤 로드를 선택하고 "X"는 모두 선택을 해제합니다. +book.rbmk.page14=녹색 상자에 0~100 사이의 숫자를 입력하고 옆에 있는 버튼을 누르면 선택한 모든 제어봉이 해당 위치로 설정됩니다. "AZ-5" 버튼을 누르면 모든 제어봉이 완전히 삽입됩니다. +book.rbmk.page15=§lfuel§r 응답은 여러 요인에 따라 달라집니다. 주된 것은 §l강화§r, §l크세논 중독§r 및 들어오는 §l중성자§r의 수입니다. 크세논은 연료 중성자가 부족할 때 축적되며 정상 작동 중에 소진됩니다. 중성자의 효율은 유형에 따라 다르며, 대부분의 연료는 §가장 좋은 분할은 §r §저속 중성자§r입니다. +book.rbmk.page16=§4§l 피하십시오. +book.rbmk.page2=리액터가 작동하면 §lheat§r이 생성됩니다. 열은 부품 사이로 퍼지며 그 과정에서 서서히 감소합니다. 목표는 원자로를 녹이지 않고 가능한 한 많은 열을 생성하고 원자로를 냉각하고 증기를 생성하는 증기 통로로 열을 전달하는 것입니다. +book.rbmk.page3=§l연료 막대§r는 중성자 플럭스를 포착하여 막대 내부의 연료가 반응하도록 하고 그 과정에서 중성자를 방출합니다. 중성자는 최대 범위가 5개 블록인 네 가지 주요 방향 모두에서 방출됩니다. 방출된 중성자의 양은 사용된 연료에 따라 다릅니다. +book.rbmk.page4=§l제어봉§r은 통과하는 중성자의 수를 줄입니다. 완전히 삽입되면 모든 중성자를 차단합니다. 중간에 삽입하면 절반만 차단됩니다. 제어봉은 원자로의 활동을 조절하고 정지시키는 데 사용됩니다. +book.rbmk.page5=현재 막대 삽입이 GUI 중앙에 표시됩니다. 왼쪽의 컬러 버튼은 색상 그룹에 제어 막대를 추가하며 §lRBMK§r 콘솔에서 그룹화된 막대를 빠르게 선택하는 데 유용합니다. 오른쪽에 있는 버튼을 사용하면 25%%씩 수동으로 삽입할 수 있습니다. +book.rbmk.page6=§L자동 제어봉§r은 일반 제어봉과 거의 동일하지만 수동으로 조정할 수 없으며 대신 현재 온도에 따라 막대의 위치를 ​​조정합니다. 어떤 기능을 사용할 것인지, 얼마나 깊이 삽입할 것인지, 어떤 온도에서 사용할 것인지를 먼저 결정해야 합니다. +book.rbmk.page7=§l스팀 채널§r은 원자로 열 수준을 능동적으로 낮추는 유일한 부분입니다. 구성 요소가 주어진 유형의 증기의 끓는점보다 높으면 끓는점 아래로 냉각하는 데 필요한 만큼의 물을 소비하고 필요한 만큼의 증기를 생성하려고 합니다. +book.rbmk.page8=§l중성자 반사체§r는 중성자의 통과를 차단하고, 대신 중성자는 그들이 나온 연료봉에 다시 반사됩니다. 이는 단순히 원자로를 떠나서 낭비되는 중성자를 사용하는 데 유용합니다. +book.rbmk.page9=§l중성자 흡수체§r는 단순히 중성자를 차단합니다. 흡수된 중성자는 열을 발생시키지 않고 효과적으로 파괴됩니다. 이는 연료봉이 닿을 수 있는 범위 내에서 반응하는 것을 방지하는 데 유용합니다. +book.rbmk.title1=소개 +book.rbmk.title10=흑연 지연제 +book.rbmk.title11=구조 기둥 +book.rbmk.title12=콘솔 +book.rbmk.title13=콘솔 사용 +book.rbmk.title15=연료 +book.rbmk.title16=녹는 +book.rbmk.title2=열 +book.rbmk.title3=연료봉 +book.rbmk.title4=조절 막대 +book.rbmk.title5=조절봉 - 사용법 +book.rbmk.title5.scale=0.9 +book.rbmk.title6=자동 제어봉 +book.rbmk.title7=스팀 채널 +book.rbmk.title8=중성자 반사경 +book.rbmk.title9=중성자 흡수기 +chem.ASPHALT=아스팔트 생산 +chem.BALEFIRE=BF 로켓 연료 혼합 +chem.BP_BIOFUEL=바이오연료 트랜스에스테르화 +chem.BP_BIOGAS=바이오가스 생산 +chem.CC_HEATING=고급 석탄 액화 +chem.CC_HEAVY=기본 석탄 액화 +chem.CC_I=향상된 석탄 액화 +chem.CC_NAPHTHA=나프타 석탄 액화 +chem.CC_OIL=석탄 액화 +chem.CIRCUIT_4=오버클럭 회로 생산 +chem.CIRCUIT_5=고성능 회로 생산 +chem.COLTAN_CLEANING=콜탄 퓨리파잉 +chem.COLTAN_CRYSTAL=탄탈륨 결정화 +chem.COLTAN_PAIN=판데모니움(III) 탄탈라이트 생산 +chem.CONCRETE=콘크리트 생산 +chem.CONCRETE_ASBESTOS=석면 콘크리트 생산 +chem.COOLANT=냉각수 혼합 +chem.CORDITE=코다이트 생산 +chem.CRYOGEL=크라이오겔 믹싱 +chem.DESH=요리 생산 +chem.DEUTERIUM=중수소 추출 +chem.DUCRETE=듀크레타이즈화 +chem.DYN_DNT=다이뉴트로늄 다이노합성 +chem.DYN_EUPH=Euphhemium Dynosynthesis +chem.DYN_SCHRAB=Schrabidium 다이노합성 +chem.ELECTROLYSIS=극저온 전기분해 +chem.FC_BITUMEN=구두약 크래킹 +chem.FC_DIESEL_KEROSENE=디젤 크래킹 +chem.FC_GAS_PETROLEUM=가스 크래킹 +chem.FC_I_NAPHTHA=산업용 오일 크래킹 +chem.FC_KEROSENE_PETROLEUM=등유 크래킹 +chem.FP_HEAVYOIL=중유 가공 +chem.FP_LIGHTOIL=경유 가공 +chem.FP_NAPHTHA=나프타 처리 +chem.FP_SMEAR=산업용 석유 처리 +chem.FR_PETROIL=석유 혼합 +chem.FR_REOIL=오일 재처리 +chem.KEVLAR=케블라 컴파운드 생산 +chem.NITAN=NITAN 슈퍼 연료 혼합 +chem.OIL_SAND=역청 추출 +chem.PEROXIDE=과산화수소 생산 +chem.POLYMER=고분자 합성 +chem.PUF6=플루토늄 헥사플루오라이드 생산 +chem.SAS3=Schrabidium Trisulfide 생산 +chem.SATURN=토성 생산 +chem.SCHRABIDATE=Ferric Schrabidate 생산 +chem.SCHRABIDIC=슈라비딕산 혼합 +chem.SF_BIOFUEL=바이오 연료 고형화 +chem.SF_BIOGAS=바이오가스 응고 +chem.SF_DIESEL=디젤 응고 +chem.SF_GAS=천연가스 응고 +chem.SF_HEATINGOIL=난방유 응고 +chem.SF_HEAVYOIL=중유 응고 +chem.SF_KEROSENE=등유 응고 +chem.SF_LIGHTOIL=경유 응고 +chem.SF_LUBRICANT=윤활유 응고 +chem.SF_NAPHTHA=나프타 응고 +chem.SF_OIL=원유 응고 +chem.SF_PETROIL=석유 응고 +chem.SF_PETROLEUM=석유 가스 응고 +chem.SF_RECLAIMED=매립유 응고 +chem.SF_SMEAR=산업용 오일 응고 +chem.SOLID_FUEL=고체 로켓 연료 생산 +chem.STEAM=끓는 물 +chem.TEL=TEL 믹싱 +chem.TEST=테스트 +chem.UF6=육불화 우라늄 생산 +chem.VIT_GAS=기체 핵폐기물 유리화 +chem.VIT_LIQUID=액체 핵폐기물 유리화 +chem.XENON=린데 제논 사이클 +chem.YELLOWCAKE=옐로케이크 생산 +container.amsBase=AMS 베이스 [WIP] +container.amsEmitter=AMS 이미터 [WIP] +container.amsLimiter=AMS 안정기 [WIP] +container.anvil=티어 %s 모루 +container.arcFurnace=아크로 +container.armorTable=갑옷 수정 표 +container.assembler=조립 기계 +container.barrel=통 +container.bat9000=큰 엉덩이 탱크 9000 +container.battery=에너지 저장 +container.bombMulti=다목적 폭탄 +container.centrifuge=원심분리기 +container.chemplant=화학 공장 +container.compactLauncher=소형 발사대 +container.crateDesh=접시 상자 +container.crateIron=철 상자 +container.crateSteel=강철 상자 +container.crateTungsten=텅스텐 상자 +container.crystallizer=광석 산성화제 +container.cyclotron=사이클로트론 +container.dfcCore=다크 퓨전 코어 +container.dfcEmitter=DFC 이미 터 +container.dfcInjector=DFC 연료 분사 장치 +container.dfcReceiver=DFC 수신기 +container.dfcStabilizer=DFC 안정제 +container.diFurnace=고로 +container.electricFurnace=전기로 +container.epress=전기 프레스 +container.factoryAdvanced=고급 공장 +container.factoryTitanium=기본 공장 +container.fluidtank=탱크 +container.forceField=포스필드 이미터 +container.fusionMultiblock=빅 퓨전 리액터 +container.fusionaryWatzPlant=퓨전 와츠 공장 +container.gasCentrifuge=가스 원심 분리기 +container.gasFlare=가스 플레어 +container.generator=원자로 +container.hadron=입자 가속기 +container.iGenerator=산업용 발전기 +container.keyForge=자물쇠 제조공 테이블 +container.launchPad=미사일 발사대 +container.launchTable=대형 발사대 +container.machineBoiler=보일러 +container.machineCMB=CMB 강철로 +container.machineCoal=연소 발전기 +container.machineDiesel=디젤 발전기 +container.machineElectricBoiler=전기 보일러 +container.machineFEL=지옥 +container.machineITER=핵융합로 +container.machineLargeTurbine=산업용 증기 터빈 +container.machineRTGBoiler=RTG 보일러 +container.machineRefinery=정유 공장 +container.machineSILEX=사일렉스 +container.machineSelenium=방사형 성능 엔진 +container.machineShredder=슈레더 +container.machineTurbine=증기 터빈 +container.machineTurbofan=터보팬 +container.machine_deuterium=중수소 추출기 +container.machine_schrabidium_transmutator=슈라비디움 변환 장치 +container.microwave=마이크로파 +container.miningDrill=자동 채광 드릴 +container.miningLaser=마이닝 레이저 +container.missileAssembly=미사일 조립소 +container.nukeBoy=어린 소년 +container.nukeCustom=커스텀 핵무기 +container.nukeFleija=F.L.E.I.J.A. +container.nukeFstbmb=베일파이어 폭탄 +container.nukeFurnace=원자력로 +container.nukeGadget=가제트 +container.nukeMan=뚱뚱한 남자 +container.nukeMike=아이비 마이크 +container.nukeN2=N² 광산 +container.nukeN45=N45 해군 광산 +container.nukePrototype=프로토타입 +container.nukeSolinium=더 블루 린스 +container.nukeTsar=차르 봄바 +container.oilWell=유정탑 +container.orbus=무거운 반물질 저장소 +container.plasmaHeater=플라즈마 히터 +container.press=버너 프레스 +container.puf6_tank=PuF6 탱크 +container.pumpjack=펌프잭 +container.radGen=방사선 동력 엔진 +container.radar=레이더 +container.radiobox=FM 송신기 +container.radiorec=FM 라디오 +container.railgun=레일건 +container.rbmkBoiler=RBMK 스팀 채널 +container.rbmkControl=RBMK 제어봉 +container.rbmkControlAuto=RBMK 자동 제어봉 +container.rbmkOutgasser=RBMK 조사 채널 +container.rbmkReaSim=RBMK 연료봉(ReaSim) +container.rbmkRod=RBMK 연료봉 container.rbmkStorage=RBMK 스토리지 - -chem.HEAVY_ELECTROLYSIS=중수 극저온 전기분해 -chem.SOLVENT=유기용제 혼합 -chem.RADIOSOLVENT=고성능 용매 혼합 -chem.NITRIC_ACID=질산 생산 -chem.DUCRETE=양핵화 -chem.TNT=TNT 합성 -chem.C4=C-4 합성 -chem.DYNAMITE=다이너마이트 합성 -item.ball_tnt.name=TNT -item.ball_dynamite.name=다이너마이트 -item.ingot_c4.name=C-4 바 - -tile.ducrete.name=듀크리트 -tile.ducrete_smooth.name=부드러운 듀크리트 -tile.ducrete_brick.name=듀크리트 벽돌 -tile.ducrete_reinforced.name=강화된 듀크리트 -tile.block_niter_reinforced.name=강화된 나이터 - -tile.deco_rbmk.name=RBMK 장식 -tile.deco_rbmk_smooth.name=RBMK 부드러운 장식 - -item.ingot_astatine.name=아스타틴 주괴 - -item.ingot_radspice.name=네오벨린 주괴 -item.nugget_radspice.name=네오벨린 조각 -item.powder_radspice.name=네오벨린 가루 - -item.lung_diagnostic.name=폐 진단 -lung_scanner.title=폐 진단 -lung_scanner.player_asbestos_health=폐 건강[석면]: -lung_scanner.player_coal_health=페 건강[석탄]: -lung_scanner.player_total_health=폐 건강 합계: - -tile.waste_dirt.name=오염된 흙 -tile.waste_sand.name=오염된 모래 -tile.waste_sand_red.name=오염된 붉은 모래 -tile.waste_gravel.name=오염된 자갈 -item.rod_cobalt.name=코발트 막대 -item.rod_co60.name=코발트-60 막대 -item.rod_rgp.name=원자로급 플루토늄 막대 -item.rod_ac227.name=악티늄-227 막대 -item.rod_ra226.name=라듐-226 막대 - -item.rod_dual_cobalt.name=코발트 이중 막대 -item.rod_dual_co60.name=코발트-60 이중 막대 -item.rod_dual_rgp.name=원자로급 플루토늄 이중 막대 -item.rod_dual_ac227.name=악티늄-227 이중 막대 -item.rod_dual_ra226.name=라듐-226 이중 막대 - -item.rod_quad_cobalt.name=코발트 사중 막대 -item.rod_quad_co60.name=코발트-60 사중 막대 -item.rod_quad_rgp.name=원자로급 플루토늄 사중 막대 -item.rod_quad_ac227.name=악티늄-227 사중 막대 -item.rod_quad_ra226.name=라듐-226 사중 막대 - -battery.priority.high=충전 우선순위: 높음 -battery.priority.high.desc=항상 가득 차 있어야 하는 비상 버퍼 -battery.priority.low=충전 우선순위: 낮음 -battery.priority.low.desc=기계 성능에 영향을 주지 않고 잉여 에너지를 저장해야 하는 대부분의 사용 사례 -battery.priority.normal=충전 우선순위: 일반 -battery.priority.normal.desc=우선순위가 중요하지 않은 소규모 전력망 -battery.priority.recommended=권장 대상: - -item.battery_sc_lead.name=자체 충전 리드-209 배터리 -item.ingot_ac227.name=악티늄-227 주괴 -item.ingot_gh336.name=기오르슘-336 주괴 -item.ingot_pb209.name=리드-209 주괴 -item.ingot_niobium.name=니오브 주괴 -item.ingot_sr90.name=스트론튬-90 주괴 -item.ingot_bromine.name=브롬 주괴 -item.ingot_caesium.name=세슘 주괴 -item.ingot_cerium.name=세륨 주괴 -item.ingot_iodine.name=요오드 주괴 -item.ingot_i131.name=요오드-131 주괴 -item.ingot_neodymium.name=네오디뮴 주괴 -item.ingot_pb209.name=Lead-209 주괴 -item.ingot_ra226.name=라듐-226 주괴 -item.ingot_strontium.name=스트론튬 주괴 -item.ingot_sr90.name=스트론튬-90 주괴 -item.ingot_tennessine.name=테네신-294 주괴 -item.ingot_gh336.name=기오르슘-336 주괴 - -item.billet_unobtainium.name=언옵테이늄 중성자 빌렛 -item.billet_flashlead.name=플래쉬리드 빌렛 -item.billet_ac227.name=악티늄-227 빌렛 -item.billet_nuclear_waste.name=핵폐기물 빌렛 -item.billet_pb209.name=Lead-209 빌렛 -item.billet_ra226.name=라듐-226 빌렛 -item.billet_sr90.name=스트론튬-90 빌렛 -item.billet_beryllium.name=베릴륨 빌렛 -item.billet_bismuth.name=비스무트-209 빌렛 -item.billet_zirconium.name=지르코늄 빌렛 -item.billet_zfb_bismuth.name=비스무트-209 ZFB 빌렛 -item.billet_zfb_pu241.name=Pu-241 ZFB 빌렛 -item.billet_zfb_am_mix.name=아메리슘 ZFB 빌렛 -item.billet_gh336.name=기오르슘-336 빌렛 -item.bio_wafer.name=바이오 웨이퍼 - -item.nugget_actinium.name=악티늄 조각 -item.nugget_ac227.name=악티늄-227 조각 -item.nugget_cobalt.name=코발트 조각 -item.nugget_strontium.name=스트론튬 조각 -item.nugget_sr90.name=스트론튬-90 조각 -item.nugget_u238m2.name=준안정 U238-2 조각 -item.nugget_pb209.name=Lead-209 조각 -item.nugget_gh336.name=기오르슘-336 조각 - -item.powder_pb209.name=납-209 가루 -item.powder_ac227.name=악티늄-227 가루 -item.powder_ra226.name=라듐-226 가루 -item.powder_sr90.name=스트론튬-90 가루 -item.powder_sr90_tiny.name=작은 스트론튬-90 가루 더미 -item.powder_co60_tiny.name=코발트-60 가루의 작은 더미 -item.powder_iodine_tiny.name=작은 요오드 가루 더미 - -item.blades_aluminum.name=알루미늄 슈레더 블레이드 -item.decontamination_module.name=오염 제거 모듈 - -item.pellet_rtg_radium.name=라듐-226 RTG 펠릿 -item.pellet_rtg_weak.name=우라늄-238 RTG 펠릿 -item.pellet_rtg.name=플루토늄-238 RTG 펠릿 -item.pellet_rtg_strontium.name=스트론튬-90 RTG 펠릿 -item.pellet_rtg_cobalt.name=코발트-60 RTG 펠릿 -item.pellet_rtg_actinium.name=악티늄-227 RTG 펠릿 -item.pellet_rtg_americium.name=아메리슘-241 RTG 펠릿 -item.pellet_rtg_polonium.name=폴로늄-210 RTG 펠릿 -item.pellet_rtg_gold.name=Gold-198 RTG 펠릿 -item.pellet_rtg_lead.name=Lead-209 RTG 펠릿 -item.pellet_rtg_balefire.name=Balefire-XXX RTG 펠릿 -item.pellet_rtg_depleted_bismuth.name=고갈된 비스무트-209 RTG 펠릿 -item.pellet_rtg_depleted_lead.name=고갈된 납 RTG 펠릿 -item.pellet_rtg_depleted_mercury.name=고갈된 수은 RTG 펠릿 -item.pellet_rtg_depleted_neptunium.name=고갈된 넵투늄 RTG 펠릿 -item.pellet_rtg_depleted_zirconium.name=고갈된 지르코늄 RTG 펠릿 - -item.pellet_rtg_radium.desc=천연 라듐으로 만든 훌륭한 스타터 펠릿! -item.pellet_rtg_weak.desc=더 저렴하고 더 약한 펠릿, 이제 더 많은 U238이 추가되었습니다! -item.pellet_rtg_strontium.desc=캘리포니아 주에 알려진... -item.pellet_rtg_cobalt.desc=RTG로는 최고는 아니지만 감마선에는 좋습니다! -item.pellet_rtg_actinium.desc=푸른 빛과 베타선의 빛. -item.pellet_rtg_americium.desc=희귀하고 믿을 수 있는 오래된 아메리슘! -item.pellet_rtg_polonium.desc=최고급 폴로늄으로 제작되어 더욱 강력해진 RTG 펠릿! -item.pellet_rtg_gold.desc=희귀하고 매우 불안정한 금 동위원소로 만들어졌습니다. -item.pellet_rtg_lead.desc=노출되면 즉시 사망하게 됩니다. -item.pellet_rtg_balefire.desc=핵지옥... - -item.rbmk_pellet_flashlead.name=플래쉬리드 연료 펠릿 -item.rbmk_pellet_zfb_am_mix.name=연료 등급 아메리슘 ZFB 펠릿 -item.rbmk_pellet_zfb_bismuth.name=비스무트-209 ZFB 펠릿 -item.rbmk_pellet_zfb_pu241.name=Pu-241 ZFB 펠릿 - -item.rbmk_fuel_flashlead.name=플래쉬리드 RBMK 연료봉 -item.rbmk_fuel_zfb_am_mix.name=연료 등급 아메리슘 RBMK ZFB 연료봉 -item.rbmk_fuel_zfb_bismuth.name=비스무트-209 RBMK ZFB 연료봉 -item.rbmk_fuel_zfb_pu241.name=Pu-241 RBMK ZFB 연료봉 -item.rbmk_fuel_unobtainium.name=언옵테이늄 RBMK 중성자 연료봉 - -item.rbmk_pellet_unobtainium.name=언옵테이늄 중성자 막대 - -tile.concrete_white.name=흰색 콘크리트 -tile.concrete_orange.name=주황색 콘크리트 -tile.concrete_magenta.name=마젠타 콘크리트 -tile.concrete_light_blue.name=하늘색 콘크리트 -tile.concrete_yellow.name=노란색 콘크리트 -tile.concrete_lime.name=연두 콘크리트 -tile.concrete_pink.name=분홍 콘크리트 -tile.concrete_gray.name=회색 콘크리트 -tile.concrete_silver.name=밝은 회색 콘크리트 -tile.concrete_cyan.name=청록색 콘크리트 -tile.concrete_purple.name=보라색 콘크리트 -tile.concrete_blue.name=파란 콘크리트 -tile.concrete_brown.name=갈색 콘크리트 -tile.concrete_green.name=초록 콘크리트 -tile.concrete_red.name=빨간 콘크리트 -tile.concrete_black.name=검은 콘크리트 - -desc.item.rtgDecay=붕괴량: %s -desc.item.rtgHeat=열: %s - -trait.blinding=실명 -trait.breeding=증식 원자로에서 %s 작업 가치 -trait.digamma=디감마 방사선 -trait.drop=위험한 방울 -trait.furnace=원자로 화로 내 %s 작업 가치 -trait.heat=%s 열을 제공합니다 -trait.hlParticle=입자 반감기: %s -trait.hlPlayer=플레이어 반감기: %s -trait.hot=자연발화성/뜨거움 -trait.cryogenic=극저온 / 저온 -trait.toxic=독성 -trait.radioactive=방사성 -trait.radResistance=방사선 저항: %s -trait.asbestos=석면 -trait.hydro=수압폭발물 -trait.explosive=폭발물 -trait.unstable=불안정한 -trait.coal=석탄 먼지 -trait.contaminating=오염시키는 방울 - -trait.contaminating.radius=반지름: %sm -trait.cleanroom=깨끗함 -trait.cleanroom.desc=떨어뜨린 오염 아이템은 사라지지 않습니다. - -trait.flammable=가연성 -trait.flammable.desc=버킷 §e당 §6%sTU§f를 §e제공합니다. -trait.coolable=냉각 가능 -trait.coolable.desc=버킷 §c당 §4%sTU§f를 §c제공합니다. -trait.boilable=가열 가능 -trait.boilable.desc=버킷 §b당 §3%sTU§f를 §b를 제공합니다. -trait.hotfluid=더운 -trait.antimatter=전멸 -trait.corrosivePlastic=신랄한 -trait.corrosiveIron=부식성이 강함 - -trait.dfcFuel=DFC 연료 -trait.dfcFuel.desc=§d전력 출력 §5%s%% - -trait.rbmk.coreTemp=코어 온도량: %s -trait.rbmk.depletion=고갈량: %s -trait.rbmk.diffusion=확산량: %s -trait.rbmk.fluxFunc=플럭스 함수량: %s -trait.rbmk.funcType=기능 타입: %s -trait.rbmk.heat=출력 플럭스당 열: %s -trait.rbmk.melt=녹는점: %s -trait.rbmk.meltdown=내부 노심용융: %s -trait.rbmk.neutron.any=모든 중성자 -trait.rbmk.neutron.fast=고속 중성자 -trait.rbmk.neutron.slow=느린 중성자 -trait.rbmk.skinTemp=피부 온도: %s -trait.rbmk.source=자체 점화 -trait.rbmk.splitsInto=갈라짐: %s -trait.rbmk.splitsWith=분할 대상: %s -trait.rbmk.xenon=제논 축적량: %s -trait.rbmk.xenonBurn=제논 연소 기능: %s -trait.rbmk.xenonGen=제논 생성 기능: %s - -trait.rbmx.coreTemp=노심 엔트로피: %s -trait.rbmx.depletion=딱딱함: %s -trait.rbmx.diffusion=흐름: %s -trait.rbmx.fluxFunc=둠 함수: %s -trait.rbmx.funcType=기능 사양: %s -trait.rbmx.heat=방출된 엔트로피 당 크러스트: %s -trait.rbmx.melt=파쇄 깊이: %s -trait.rbmx.meltdown=현실 붕괴: %s -trait.rbmk.neutron.any.x=모든 비유클리드 형태 -trait.rbmk.neutron.fast.x=타원 비유클리드 형태 -trait.rbmk.neutron.slow.x=쌍곡선 비유클리드 형태 -trait.rbmx.skinTemp=피부 엔트로피: %s -trait.rbmx.source=자가 연소 -trait.rbmx.splitsInto=출발지: %s -trait.rbmx.splitsWith=도착지: %s -trait.rbmx.xenon=납 독: %s -trait.rbmx.xenonBurn=납 파괴 기능: %s -trait.rbmx.xenonGen=납 생성 기능: %s - -trait.tile.cluster=플레이어에 의해 파손된 경우에만 드롭됩니다. -trait.tile.depth=폭발로만 파괴 가능 - -info.coil=코일 강도 -info.templatefolder=템플릿 폴더로 생성됨 -info.template_in=입력: -info.template_in_p=입력: -info.template_out=산출: -info.template_out_p=출력: -info.template_seconds=초 -info.template_time=생산 시간: - -hadron.analysis=분석하는... -hadron.buttonOn=분석 챔버(있는 경우)가 켜져 있습니다. -hadron.buttonOff=분석실이 꺼져 있습니다 -hadron.error_generic=오류! -hadron.error_no_charge=오류 0x01 [NC] -hadron.error_no_analysis=오류 0x02 [NA] -hadron.error_obstructed_channel=오류 0x03 [OC] -hadron.error_expected_coil=오류 0x04 [EC] -hadron.error_malformed_segment=오류 0x05 [MS] -hadron.error_analysis_too_long=오류 0x06 [ATL] -hadron.error_analysis_too_short=오류 0x07 [ATS] -hadron.error_diode_collision=오류 0x08 [DC] -hadron.error_branching_turn=오류 0x09 [BT] -hadron.hopper0=§eNormal Mode:$모든 항목이 사용됩니다. -hadron.hopper1=§eHopper Mode:$하나의 항목은 항상 남아 있습니다. -hadron.idle=유휴 상태 -hadron.modeCircular=§e원형 가속기 모드: $자석은 코어로 루프백해야 합니다. $더 많은 조리법의 잠금을 해제합니다. -hadron.modeLine=§e선형 가속기 모드: $가속기는 분석 챔버로 끝납니다. $레시피가 적습니다. -hadron.noresult=결과가 없다. -hadron.noresult_too_slow=충분하다. 기세! -hadron.noresult_wrong_ingredient=잘못된 레시피입니다! -hadron.noresult_wrong_mode=모드가 잘못되었습니다! -hadron.progress=진행 중... -hadron.stats=이전 결과: -hadron.stats_coord=오류 위치: %s / %s / %s -hadron.stats_momentum=운동량: %s -hadron.success=성공 - -tool.ability.centrifuge=자동 원심분리기 -tool.ability.crystallizer=자동 결정화 장치 -tool.ability.explosion=폭발 -tool.ability.hammer=범위 -tool.ability.luck=행운 -tool.ability.mercury=머큐리 터치 -tool.ability.midas=마이다스의 손 -tool.ability.recursion=정맥 광부 -tool.ability.shredder=자동 파쇄기 -tool.ability.silktouch=섬세한 손길 -tool.ability.smelter=자동 제련소 -weapon.ability.radiation=방사성 칼날 -weapon.ability.vampire=흡혈귀 -weapon.ability.stun=굉장히 멋진 -weapon.ability.phosphorus=인 팁 -weapon.ability.beheader=참수기 -weapon.ability.chainsaw=고통톱 -weapon.ability.fire=불타는 -# Should rhyme with the translation for "chainsaw" - -hbm.advancement.root=NTM 확장 -hbm.advancement.root.desc=그리고 핵 모험이 시작됩니다 - -hbm.achievement.progress_dosimeter=선량계 -hbm.achievement.progress_dosimeter.desc=당신의 새로운 가장 친한 친구 - -hbm.achievement.progress_mask=더 이상 석탄 먼지가 없습니다 -hbm.achievement.progress_mask.desc=말려도 상관없어 - -hbm.achievement.progress_omega_filter=모두를 위한 하나 -hbm.achievement.progress_omega_filter.desc=이제 아무것도 날 막을 수 없어 - -hbm.achievement.progress_excavator=빅 보이 드릴 -hbm.achievement.progress_excavator.desc=부로 가는 관문 - -hbm.achievement.progress_bedrock_ore=무한한 광석 -hbm.achievement.progress_bedrock_ore.desc=어쩌면 언옵테이늄 장소를 찾을 수도 있을 것 같아요 - -hbm.achievement.progress_geiger=가이거 계수관 -hbm.achievement.progress_geiger.desc=업그레이드된 당신의 베스트 프렌드 - -hbm.achievement.progress_modtable=수정 테이블 -hbm.achievement.progress_modtable.desc=업그레이드 사람들 업그레이드 - -hbm.achievement.progress_anvil=모루 -hbm.achievement.progress_anvil.desc=수동이지만 효율적 - -hbm.achievement.aa_progress_burnerpress=압박감 속에서 -hbm.achievement.aa_progress_burnerpress.desc=나, 당신을 짓누르는 압박감 - -hbm.achievement.progress_folder=좋은 지혜를 가지고 있어요 -hbm.achievement.progress_folder.desc=어떻게 폴더에 인류의 모든 기계가 포함될 수 있습니까?? - -hbm.achievement.progress_assembler=공장이 성장하다 -hbm.achievement.progress_assembler.desc=잠깐만 벌써 새벽 1시야? - -hbm.achievement.progress_difurnace=석탄과 철 -hbm.achievement.progress_difurnace.desc=그들은 익스플로러 1호를 위해 침몰한 드레드노트를 인양했습니다. - -hbm.achievement.progress_steel=강철 -hbm.achievement.progress_steel.desc=우리 제국의 기초 - -hbm.achievement.progress_adv=고급 합금 -hbm.achievement.progress_adv.desc=우리 제국을 가능하게 하는 합금 - -hbm.achievement.progress_starmetal=XVIII 달 -hbm.achievement.progress_starmetal.desc=응. - -hbm.achievement.progress_book=The Book of §kboxcars -hbm.achievement.progress_book.desc=§kThe most secret secret - -hbm.achievement.progress_chemplant=공장은 성장한다 Pt. 2 -hbm.achievement.progress_chemplant.desc=이제 당신은 화학 물질로 생각하고 있습니다! - -hbm.achievement.progress_polymer=테프론 -hbm.achievement.progress_polymer.desc=맛있고 맛있는 미세플라스틱. - -hbm.achievement.progress_potatos=불량 AI -hbm.achievement.progress_potatos.desc=당신이 나를 찔렀어요! yo-WOOOAAH에 무슨 문제가 있나요? - -hbm.achievement.progress_concrete=오래되고 신뢰할 수 있는 -hbm.achievement.progress_concrete.desc=볼셰비키가 가장 좋아하는 인물. - -hbm.achievement.progress_rbmk=3.6 뢴테겐? -hbm.achievement.progress_rbmk.desc=그 사람은 망상에 빠졌어요. 의무실로 데려가세요. - -hbm.achievement.progress_rbmk_boom=15,000입니다. -hbm.achievement.progress_rbmk_boom.desc=거짓말의 대가는 얼마인가? - -hbm.achievement.progress_centrifuge_1=구심력 -hbm.achievement.progress_centrifuge_1.desc=원심력은 가짜입니다. @하지 마세요. - -hbm.achievement.progress_centrifuge_2=산업용 핵가스 토네이도 -hbm.achievement.progress_centrifuge_2.desc=FBI로부터 숨겨라 - -hbm.achievement.progress_u235=무기급 우라늄 -hbm.achievement.progress_u235.desc=당신의 선택: 평화인가 전쟁인가 - -hbm.achievement.progress_pu239=무기등급 플루토늄 -hbm.achievement.progress_pu239.desc=하하 웃긴 공 고 붐 - -hbm.achievement.progress_au198=가장 뜨거운 금 -hbm.achievement.progress_au198.desc=쥬얼리를 만들어보자 - -hbm.achievement.progress_radspice=체르노빌 주괴 -hbm.achievement.progress_radspice.desc=아아아아아아아아아아아아아아아아아아아아아아아아아아아아아아아아아아아아아아 - -hbm.achievement.progress_osmiridium=오스뮴-이리듐 합금 -hbm.achievement.progress_osmiridium.desc=Digamma-Star 시스템에서 발생한 소행성에서 채굴됨 - -hbm.achievement.progress_dfc=태양 켜기 -hbm.achievement.progress_dfc.desc=별빛 캠프파이어 - -hbm.achievement.progress_creative=공인 DFC 전문가 -hbm.achievement.progress_creative.desc=이제 당신은 DFC에 능숙해졌습니다. - -hbm.achievement.progress_schrabidium=안정의 섬 -hbm.achievement.progress_schrabidium.desc=어쨌든 나는 그것을 너무 오랫동안 보지 않을 것입니다. - -hbm.achievement.progress_hadron=대형 강입자 충돌기 -hbm.achievement.progress_hadron.desc=당신은 인류의 최전선에 도달했습니다 - -hbm.achievement.progress_radium=최초의 원자력 -hbm.achievement.progress_radium.desc=물에 던져 - -hbm.achievement.progress_pile=항해사는 신세계에 착륙했다 -hbm.achievement.progress_pile.desc="원주민들은 어땠어요?" / "매우 친절해요." - -hbm.achievement.progress_desh=르베리에 -hbm.achievement.progress_desh.desc="자, 여러분. 갈 곳이요!" - -hbm.achievement.progress_crystalizer=산성 -hbm.achievement.progress_crystalizer.desc=으악 내 피부야 - -hbm.achievement.progress_silex=동위원소 분리 -hbm.achievement.progress_silex.desc=그러면 더 시원할 것 같아요. 약속해요. - -hbm.achievement.progress_bismuth=비스무트-209 -hbm.achievement.progress_bismuth.desc=사람들이 한 달 동안 이에 대해 불평했던 것을 기억하시나요? 그래요. - -hbm.achievement.progress_am241=아메리슘 -hbm.achievement.progress_am241.desc='Murrica아 씨발 그래 - -hbm.achievement.progress_cyclotron=사이클로트로닉 -hbm.achievement.progress_cyclotron.desc=이제 새로운 요소를 만들 수 있습니다 - -hbm.achievement.progress_fusion=퓨전 -hbm.achievement.progress_fusion.desc=듀테론, 트리톤, 에너지의 춤. - -hbm.achievement.progress_oil_1=우리는 석유를 쳤다 -hbm.achievement.progress_oil_1.desc=지구를 오염시키는 첫걸음 - -hbm.achievement.progress_oil_2=우리는 더 필요합니다! 더!! -hbm.achievement.progress_oil_2.desc=차세대 오일 펌핑 - -hbm.achievement.progress_oil_3=이 기반암을 파쇄하세요 -hbm.achievement.progress_oil_3.desc=무한한 오일! - -hbm.achievement.progress_refinery=석유를 가공했습니다 -hbm.achievement.progress_refinery.desc=지구를 오염시키는 두 번째 단계 - -hbm.achievement.progress_fraction=분별 -hbm.achievement.progress_fraction.desc=차세대 석유 처리 - -hbm.achievement.progress_crack=크랙을 해보자 -hbm.achievement.progress_crack.desc=더 많은 물건을 위한 크래킹 오일 - -hbm.achievement.progress_dineutronium=맙소사 DNT -hbm.achievement.progress_dineutronium.desc=세상에 우리가 해냈어 - -hbm.achievement.progress_singularity_spark=우주의 주인 -hbm.achievement.progress_singularity_spark.desc=포켓 퀘이사를 만들어 보세요 - -hbm.achievement.progress_fensu=내면의 평화 -hbm.achievement.progress_fensu.desc=더 말할 것이 없어요 - -hbm.achievement.progress_cladding_electronium=최고의 클래딩 -hbm.achievement.progress_cladding_electronium.desc=방사선에 대한 방사선 주괴 - -hbm.achievement.sacrifice=소로리사이드 -hbm.achievement.sacrifice.desc=불을 마주하고 살아라. -hbm.achievement.impossible=말 그대로 불가능 -hbm.achievement.impossible.desc=이 hbm.achievement를 얻을 수 없습니다. -hbm.achievement.tasteofblood=피의 맛 -hbm.achievement.tasteofblood.desc=테스트 프로토콜의 일부가 아닙니다. -hbm.achievement.freytag=프라이탁 -hbm.achievement.freytag.desc=헤롤드의 인명 구조원 -hbm.achievement.selenium=XVIII 달 -hbm.achievement.selenium.desc=응. -hbm.achievement.potato=불량 AI -hbm.achievement.potato.desc=당신이 나를 찔렀어요! yo-WOOOAAH에 무슨 문제가 있나요? -hbm.achievement.c44=제44장 -hbm.achievement.c44.desc=아연 도금! 내 말은, 아연! -hbm.achievement.c20_5=챕터 [20점에 5점] -hbm.achievement.c20_5.desc=??? -hbm.achievement.space=최후의 전선-아 잊어버려 -hbm.achievement.space.desc=가능한 모든 방법으로 실패하고 조랑말을 우주로 보내 9천만 달러 상당의 자금을 낭비하세요. -hbm.achievement.foeq=페가시와 미사일 사일로 -hbm.achievement.foeq.desc=화성으로 중계를 보내세요...두나안 궤도를 말하는 거죠. -hbm.achievement.fiend=체납자 -hbm.achievement.fiend.desc=심술 궂다. -hbm.achievement.fiend2=불량자 2: 불량자 더 세게 -hbm.achievement.fiend2.desc=더 심술궂어지세요. - -hbm.achievement.bobmetalworks=금속 작품 -hbm.achievement.bobmetalworks.desc=Vault-tec 지원 레벨 1(Minecraft 등급 구리) -hbm.achievement.bobassembly=제작 -hbm.achievement.bobassembly.desc=Vault-tec 지원 레벨 2(향상된 회로) -hbm.achievement.bobchemistry=화학 -hbm.achievement.bobchemistry.desc=Vault-tec 지원 레벨 3(고무) -hbm.achievement.boboil=석유 -hbm.achievement.boboil.desc=Vault-tec 지원 레벨 4(오일 타르) -hbm.achievement.bobnuclear=원자과학 -hbm.achievement.bobnuclear.desc=Vault-tec 지원 레벨 5(Pu-241 주괴) -hbm.achievement.bobhidden=숨겨진 카탈로그 -hbm.achievement.bobhidden.desc=떨어지는 유개화차로 오염된 크리퍼를 처치하세요. - -hbm.achievement.horizonsStart=최고점 -hbm.achievement.horizonsStart.desc=소년을 달에 보내세요. -hbm.achievement.horizonsEnd=호라이즌스 -hbm.achievement.horizonsEnd.desc=톰을 집으로 보내세요. -hbm.achievement.horizonsBonus=슬램덩크 설사 -hbm.achievement.horizonsBonus.desc=신예 솔직하게 말하면 대체 너한테 무슨 문제가 있는 거야? - -hbm.achievement.soyuz=구운 감자 -hbm.achievement.soyuz.desc=소유즈가 널 구워줄게 - -hbm.achievement.radPoison=응, 방사선! -hbm.achievement.radPoison.desc=방사선 중독의 영향을 받습니다. -hbm.achievement.radDeath=아야, 방사선! -hbm.achievement.radDeath.desc=마리 퀴리는 방사능 이론, 방사능 치료, 방사능 소멸 이론을 창안했습니다. - -hbm.achievement.stratum.desc=브레이크를 밟아, 미츠. -hbm.achievement.stratum=지층 - -hbm.achievement.meltdown.desc=여기까지 왔는데 어떻게 이걸 엉망으로 만들 수 있니? -hbm.achievement.meltdown=신속한 예정되지 않은 분해 -hbm.achievement.omega12.desc=이 비참한 행성에서 생명이 계속되는 문제를 해결하십시오. -hbm.achievement.omega12=오메가-12 입자 가속기 - -hbm.achievement.bossCreeper.desc='핵크리퍼가 있다? 그게 별거야?!' +container.reactor=번식 반응기 +container.reactorControl=반응기 원격 제어 블록 +container.reactorLarge=큰 원자로 +container.reactorSmall=원자로 +container.reix=Rei-X 메인프레임 +container.rtg=RTG 생성기 +container.rtgFurnace=RTG로 +container.safe=안전한 +container.satDock=화물 랜딩 패드 +container.satLinker=SatLink 장치 +container.siren=사이렌 +container.soyuzCapsule=화물 착륙 캡슐 +container.soyuzLauncher=소유즈 런칭 플랫폼 +container.storageDrum=핵 폐기물 처리 드럼 +container.teleLinker=텔링크 장치 +container.teleporter=텔레포터 +container.turretChekhov=체호프의 총 +container.turretFriendly=미스터 프렌들리 +container.turretFritz=프리츠 +container.turretHoward=하워드 +container.turretJeremy=제레미 +container.turretMaxwell=맥스웰 +container.turretRichard=리차드 +container.turretTauon=타우온 +container.uf6_tank=UF6 탱크 +container.wasteDrum=사용후 연료 풀 드럼 +container.watzPowerplant=와츠 발전소 +death.attack.acid=%1$s는 산성에 빠졌습니다. +death.attack.ams=%1$s은(는) 인간 과학에 의해 아직 이름이 지정되지 않은 치명적인 입자에 휩싸였습니다. +death.attack.amsCore=%1$s은(는) 특이점의 불길 속에서 증발했습니다. +death.attack.asbestos=%1$s은(는) 금전적 보상을 받을 자격이 있습니다. +death.attack.bang=%1$s은(는) 한 입 크기의 조각으로 폭발했습니다. +death.attack.blackhole=%1$s이(가) 스파게티되었습니다. +death.attack.blacklung=%1$s는 탄광에 목숨을 바쳤습니다. +death.attack.blender=%1$s은(는) 한입 크기로 잘게 잘랐습니다. +death.attack.boat=%1$s이(가) 보트에 치였습니다. +death.attack.boxcar=%1$s은(는) 떨어지는 화차에 깔렸습니다. 오 잘. +death.attack.broadcast=%1$s은(는) 머리가 녹았습니다. +death.attack.building=%1$s은(는) 떨어지는 건물에 치였습니다. +death.attack.cheater=%1$s의 내장이 귀리로 변했습니다. (???) +death.attack.chopperBullet=%1$s은(는) %2$s에 의해 요청되었습니다. +death.attack.cloud=%1$s은(는) 햇볕에 아이스크림처럼 녹았습니다. +death.attack.cmb=%1$s은(는) %2$s에 의해 피즐링되었습니다. +death.attack.crucible=%1$s은(는) 순수한 은빛 은빛 에너지의 칼날에 의해 양분되었습니다. +death.attack.digamma=%1$s이(가) 심연으로 들어갔습니다. +death.attack.electricity=%1$s이(가) 감전사했습니다. +death.attack.electrified=%1$s은(는) %2$s에 의해 전기가 통했습니다. +death.attack.euthanized=%1$s는 %2$s에 의해 안락사되었습니다. +death.attack.euthanizedSelf=%1$s는 스스로를 안락사시켰습니다. +death.attack.euthanizedSelf2=%1$s이(가) Darwin Award를 수상했습니다. +death.attack.exhaust=%1$s는 시작 로켓에 의해 시시 케밥으로 바뀌었습니다. +death.attack.flamethrower=%1$s는 %2$s에 의해 화장되었습니다. +death.attack.gluon=%1$s은(는) 농축된 글루온 흐름에 의해 원자가 제거되었습니다. +death.attack.gunGib=%1$s은(는) %2$s에 의해 조각났습니다. +death.attack.ice=%1$s은(는) %2$s에 의해 아이스크림으로 바뀌었습니다. +death.attack.laser=%1$s는 %2$s에 의해 재로 변했습니다. +death.attack.lead=%1$s 납 중독으로 사망했습니다. +death.attack.lunar=%1$s이 중요한 장기를 충전하는 것을 잊었습니다. +death.attack.meteorite=%1$s은(는) 우주에서 떨어지는 돌에 맞았습니다. +death.attack.mku=%1$s가 알 수 없는 원인으로 사망했습니다. +death.attack.monoxide=%1$s님이 일산화탄소 감지기의 배터리를 교체하는 것을 잊었습니다. +death.attack.mudPoisoning=%1$s는 유독성 진흙에서 사망했습니다. +death.attack.nuclearBlast=%1$s은(는) 핵폭발로 날아갔습니다. +death.attack.pc=%1$s은(는) 분홍색 구름 속의 웅덩이로 축소되었습니다. +death.attack.plasma=%1$s는 %2$s에 의해 희생되었습니다. +death.attack.radiation=%1$s은(는) 방사능 중독으로 사망했습니다. +death.attack.revolverBullet=%1$s은(는) %2$s에 의해 머리에 총을 맞았습니다. +death.attack.rubble=%1$s이(가) 잔해에 짓눌렸습니다. +death.attack.shrapnel=%1$s에 파편이 박혔습니다. +death.attack.slicer=%1$s이(가) 반으로 잘렸습니다. +death.attack.spikes=%1$s이(가) 찔렸습니다. +death.attack.subAtomic=%1$s의 원자가 %2$s에 의해 파괴되었습니다. +death.attack.subAtomic2=%1$s은(는) %2$s가 사실상의 속도를 변조했기 때문에 QPU가 잘못 정렬되었습니다. +death.attack.subAtomic3=%1$s의 다이버전스는 %2$s 때문에 1% 미만으로 떨어졌습니다. +death.attack.subAtomic4=%1$s를 0으로 %2$s로 나누었습니다. +death.attack.subAtomic5=%1$s은(는) %2$s에 의해 무효화되었습니다. +death.attack.suicide=%1$s이(가) 머리를 날려버렸습니다. +death.attack.taint=%1$s이 플럭스 종양으로 사망했습니다. +death.attack.tau=%1$s는 음전하 타우온을 사용하여 %2$s에 의해 수수께끼를 냈습니다. +death.attack.tauBlast=%1$s이(가) XVL1456을 너무 오래 충전하여 산산조각이 났습니다. +death.attack.teleporter=%1$s은(는) 무 상태로 텔레포트되었습니다. +desc.item.rtgDecay=다음으로 소멸: %s +desc.item.rtgHeat=더위: %s +digamma.playerDigamma=플레이어 오염: +digamma.playerHealth=플레이어 고갈: +digamma.title=디감마 진단 +dosimeter.title=선량계 +entity.entity_balls_o_tron.name=볼오트론 프라임 +entity.entity_balls_o_tron_seg.name=Balls-O-Tron 세그먼트 +entity.entity_bullet.name=총알 +entity.entity_bullet_mk2.name=총알 +entity.entity_cyber_crab.name=사이버 크랩 +entity.entity_elder_one.name=콰코스 더 엘더 원 +entity.entity_fucc_a_ducc.name=오리 +entity.entity_hunter_chopper.name=헌터 헬기 +entity.entity_mask_man.name=마스크맨 +entity.entity_ntm_fbi.name=FBI 요원 +entity.entity_ntm_radiation_blaze.name=멜트다운 엘리멘탈 +entity.entity_ntm_ufo.name=화성 침공선 +entity.entity_nuclear_creeper.name=핵 크리퍼 +entity.entity_rbmk_debris.name=방사성 RBMK 파편 +entity.entity_rocket.name=로켓 +entity.entity_schrabnel.name=슈라브넬 +entity.entity_taint_crab.name=테인트 크랩 +entity.entity_tainted_creeper.name=오염된 크리퍼 +entity.entity_tesla_crab.name=테슬라 크랩 +fluid.acid=과산화수소 +fluid.acid_fluid=산 +fluid.amat=반물질 +fluid.aschrab=안티스크라비디움 +fluid.balefire=BF 로켓 연료 +fluid.biofuel=바이오 연료 +fluid.biogas=바이오가스 +fluid.bitumen=역청 +fluid.coolant=냉각수 +fluid.corium_fluid=진피 +fluid.cryogel=크리오겔 +fluid.deuterium=중수소 +fluid.diesel=디젤 +fluid.gas=천연 가스 +fluid.gasoline=유연 휘발유 +fluid.heatingoil=난방유 +fluid.heavyoil=중유 +fluid.hotoil=뜨거운 원유 +fluid.hotsteam=짙은 증기 +fluid.hydrogen=액체 수소 +fluid.kerosene=둥유 +fluid.lightoil=경유 +fluid.lubircant=엔진 윤활유 +fluid.lubricant=엔진 윤활유 +fluid.mercury=수은 +fluid.mud_fluid=유독한 진흙 +fluid.naphtha=나프타 +fluid.nitan=NITAN© 100 옥탄 슈퍼 연료 +fluid.oil=원유 +fluid.oxygen=액체 산소 +fluid.pain=판데모니움(III) 탄탈라이트 용액 +fluid.petroil=휘발유 +fluid.petroleum=석유 가스 +fluid.plasma_bf=베일파이어 플라즈마 +fluid.plasma_dt=중수소-삼중수소 플라즈마 +fluid.plasma_hd=수소-중수소 플라즈마 +fluid.plasma_ht=수소-삼중수소 플라즈마 +fluid.plasma_xm=크세논-수은 플라즈마 +fluid.puf6=플루토늄 헥사플루오라이드 +fluid.radwater_fluid=방사능수 +fluid.reclaimed=재생 산업용 오일 +fluid.sas3=슈라비디움 트리설파이드 +fluid.schrabidic=슈라비딕산 +fluid.smear=산업용 오일 +fluid.spentsteam=저압 증기 +fluid.steam=증기 +fluid.superhotsteam=초고밀도 증기 +fluid.toxic_fluid=셀라린 +fluid.tritium=삼중 수소 +fluid.uf6=육불화 우라늄 +fluid.ultrahotsteam=초고밀도 증기 +fluid.volcanic_lava_fluid=화산 용암 +fluid.wastefluid=액체 핵폐기물 +fluid.wastegas=기체 핵폐기물 +fluid.watz=유독한 진흙 +fluid.xenon=크세논 가스 +geiger.chunkRad=현재 청크 방사선: +geiger.envRad=총 환경 방사선: +geiger.playerRad=플레이어 오염: +geiger.playerRes=플레이어 저항: +geiger.recievedRad=총 수신 방사선: +geiger.title=가이거 계수관 +hadron.analysis=분석하는... +hadron.buttonOff=분석 챔버가 꺼져 있습니다. +hadron.buttonOn=분석 챔버(있는 경우)가 켜져 있습니다. +hadron.error=오류! +hadron.hopper0=§e일반 모드:$모든 항목이 사용됩니다. +hadron.hopper1=§eHopper Mode:$항상 하나의 아이템이 남습니다. +hadron.idle=게으른 +hadron.modeCircular=§eCircular Accelerator Mode:$자석이 코어로 돌아가야 합니다.$더 많은 레시피를 잠금 해제합니다. +hadron.modeLine=§eLinear Accelerator Mode:$Accelerator는 분석실과 함께 끝납니다.$Fewer Recipes. +hadron.noresult=결과가 없다. +hadron.progress=진행 중... +hadron.success=완전한! +hbm.achievement.assembly=제작 +hbm.achievement.assembly.desc=Vault-tec 지원 레벨 2(조립 기계) hbm.achievement.bossCreeper=네 다리에 폭탄 -hbm.achievement.bossMaskman.desc=큰 소년을 봉크하십시오. -hbm.achievement.bossMaskman=6개월의 의무복무, 내가 받은 건 형편없는 티셔츠뿐 -hbm.achievement.bossMeltdown.desc=위대한 것보다 더 끔찍하지만 얻을 수 있는 것은 취합니다. +hbm.achievement.bossCreeper.desc='핵 크리퍼가 있다? 그게 말이 돼?!' +hbm.achievement.bossMaskman=6개월 의무 복무하고 형편없는 티셔츠 하나 +hbm.achievement.bossMaskman.desc=큰 소년을 봉크. hbm.achievement.bossMeltdown=3.6 뢴트겐 +hbm.achievement.bossMeltdown.desc=위대한 것보다 끔찍한 것이지 만 내가 얻을 수있는 것을 가져갑니다. +hbm.achievement.bossWorm=Balls-O-Tron 분해 hbm.achievement.bossWorm.desc=팹스태프. 내 엉덩이. 당신은 수학을합니다. -hbm.achievement.bossWorm=Balls-O-Tron 분해하기 -hbm.achievement.bossUFO.desc=야, 여기 뭐가 있지? 거대한 우주선이 블록십을 향해 다가오고 있나요? -hbm.achievement.bossUFO=에이 라마오 - -hbm.achievement.digammaFeel.desc=속이 빈. -hbm.achievement.digammaFeel=감정의 공포 -hbm.achievement.digammaKauaiMoho.desc=모든 게 끔찍해요. 여기 핫초코가 있어요. -hbm.achievement.digammaKauaiMoho=노래해, 나예 카우아이 모호의 노래를 불러줘 -hbm.achievement.digammaKnow.desc=이 세상은 무엇에 관한 것입니까? -hbm.achievement.digammaKnow=아는 것의 공포 -hbm.achievement.digammaSee.desc=심연 속으로. -hbm.achievement.digammaSee=보는 것의 공포 +hbm.achievement.c20_5=장 [20점 5] +hbm.achievement.c20_5.desc=??? +hbm.achievement.c44=제44장 +hbm.achievement.c44.desc=아연 도금! 내 말은, 아연! +hbm.achievement.chemistry=화학 +hbm.achievement.chemistry.desc=Vault-tec 지원 레벨 3(콘크리트 벽돌) +hbm.achievement.digammaFeel=느낌의 공포 +hbm.achievement.digammaFeel.desc=그 안의 공허함. +hbm.achievement.digammaKauaiMoho=카우아이 모호호의 노래를 불러줘 +hbm.achievement.digammaKauaiMoho.desc=모든 것이 끔찍합니다. 여기 뜨거운 choccy가 있습니다. +hbm.achievement.digammaKnow=앎의 공포 +hbm.achievement.digammaKnow.desc=이 세상이 무엇에 관한 것인지. +hbm.achievement.digammaSee=보는 공포 +hbm.achievement.digammaSee.desc=심연으로. +hbm.achievement.digammaUpOnTop=나를 존경하라, 나의 집을 존경하라 hbm.achievement.digammaUpOnTop.desc=나는 내가 원하는 것을 하지만 무책임하게 한다. -hbm.achievement.digammaUpOnTop=나를 존경해, 내 집을 존경해 - +hbm.achievement.fiend=체납 +hbm.achievement.fiend.desc=심술 궂다. +hbm.achievement.fiend2=연체자 2: 연체자 심화 +hbm.achievement.fiend2.desc=더 비열해지세요. +hbm.achievement.foeq=페가시 및 미사일 사일로 +hbm.achievement.foeq.desc=화성으로 중계를 보내...두나이안 궤도를 의미합니다. +hbm.achievement.freytag=프레이탁 +hbm.achievement.freytag.desc=헤롤드의 인명 구조원 +hbm.achievement.hidden=숨겨진 카탈로그 +hbm.achievement.hidden.desc=떨어지는 화차로 오염된 크리퍼를 처치하십시오. +hbm.achievement.horizonsBonus=슬램덩크 설사 +hbm.achievement.horizonsBonus.desc=도대체 당신에게 무슨 문제가 있는 건지 하나님께 솔직하게 +hbm.achievement.horizonsEnd=지평선 +hbm.achievement.horizonsEnd.desc=톰을 집으로 보내십시오. +hbm.achievement.horizonsStart=최고점 +hbm.achievement.horizonsStart.desc=달에 소년을 보내십시오. +hbm.achievement.impossible=말 그대로 불가능 +hbm.achievement.impossible.desc=이 hbm.achievement를 얻을 수 없습니다. +hbm.achievement.meltdown=예정되지 않은 신속한 분해 +hbm.achievement.meltdown.desc=여기까지 왔는데 어떻게 엉망으로 만들 수 있니? +hbm.achievement.metalworks=금속 작품 +hbm.achievement.metalworks.desc=Vault-tec 지원 레벨 1(용광로) +hbm.achievement.nuclear=원자력 과학 +hbm.achievement.nuclear.desc=Vault-tec 지원 레벨 5(우라늄 연료) +hbm.achievement.oil=석유 +hbm.achievement.oil.desc=Vault-tec 지원 레벨 4(전기 보일러) +hbm.achievement.omega12=오메가-12 입자 가속기 +hbm.achievement.omega12.desc=이 비참한 행성에서 계속되는 삶의 문제를 해결하십시오. +hbm.achievement.potato=불량 AI +hbm.achievement.potato.desc=날 찔렀어! 당신에게 잘못된 것은 무엇입니까-WOAH +hbm.achievement.radDeath=아야, 방사선! +hbm.achievement.radDeath.desc=마리 퀴리는 방사능 이론, 방사능 치료, 방사능으로 죽는 이론을 발명했습니다. +hbm.achievement.radPoison=예, 방사선! +hbm.achievement.radPoison.desc=방사선 중독의 영향을 받습니다. +hbm.achievement.sacrifice=소로리사이드 +hbm.achievement.sacrifice.desc=불을 마주하고 살아라. +hbm.achievement.selenium=XVIII 더 문 +hbm.achievement.selenium.desc=응. +hbm.achievement.someWounds=어떤 상처는 절대 치유되지 않는다 hbm.achievement.someWounds.desc=준비해 -hbm.achievement.someWounds=어떤 상처는 결코 치유되지 않는다 - -potion.hbm_taint=더럽혀진 -potion.hbm_mutation=구울화된 -potion.hbm_radiation=더럽히는 -potion.hbm_bang=! ! ! -potion.hbm_radx=래드-X -potion.hbm_lead=납 중독 -potion.hbm_radaway=라다웨이 -potion.hbm_telekinesis=격동 -potion.hbm_phosphorus=인 화상 -potion.hbm_stability=안정 -potion.hbm_potionsickness=포션 멀미 - -potion.effect.potion.hbm_taint=오염의 물약 -potion.effect.potion.hbm_mutation=구울화의 물약 -potion.effect.potion.hbm_radiation=오염의 물약 -potion.effect.potion.hbm_bang=의 물약! ! ! -potion.effect.potion.hbm_radx=Rad-X의 물약 -potion.effect.potion.hbm_lead=납중독의 물약 -potion.effect.potion.hbm_radaway=라다웨이의 물약 -potion.effect.potion.hbm_telekinesis=염동력의 물약 -potion.effect.potion.hbm_phosphorus=인 화상 물약 -potion.effect.potion.hbm_stability=안정의 물약 - -splash_potion.effect.potion.hbm_taint=오염의 투척용 물약 -splash_potion.effect.potion.hbm_mutation=구울화의 투척용 물약 -splash_potion.effect.potion.hbm_radiation=투척용 오염 물약 -splash_potion.effect.potion.hbm_bang=투척용 물약! ! ! -splash_potion.effect.potion.hbm_radx=Rad-X의 투척용 물약 -splash_potion.effect.potion.hbm_lead=납중독 투척용 물약 -splash_potion.effect.potion.hbm_radaway=라다웨이의 투척용 물약 -splash_potion.effect.potion.hbm_telekinesis=염동력의 투척용 물약 -splash_potion.effect.potion.hbm_phosphorus=인 화상 투척용 물약 -splash_potion.effect.potion.hbm_stability=투척용 안정 물약 - -lingering_potion.effect.potion.hbm_taint=오래 지속되는 오염 물약 -lingering_potion.effect.potion.hbm_mutation=지속되는 구울화의 물약 -lingering_potion.effect.potion.hbm_radiation=잔류하는 오염 물약 -lingering_potion.effect.potion.hbm_bang=의 잔류 물약! ! ! -lingering_potion.effect.potion.hbm_radx=Rad-X의 잔류 물약 -lingering_potion.effect.potion.hbm_lead=납 중독의 잔류 물약 -lingering_potion.effect.potion.hbm_radaway=라다웨이의 잔류 물약 -lingering_potion.effect.potion.hbm_telekinesis=염동력의 지속 물약 -lingering_potion.effect.potion.hbm_phosphorus=인 화상의 잔류 물약 -lingering_potion.effect.potion.hbm_stability=지속되는 안정의 물약 - -tipped_arrow.effect.potion.hbm_taint=오염의 화살 -tipped_arrow.effect.potion.hbm_mutation=구울화의 화살 -tipped_arrow.effect.potion.hbm_radiation=오염의 화살 -tipped_arrow.effect.potion.hbm_bang=의 화살표! ! ! -tipped_arrow.effect.potion.hbm_radx=Rad-X의 화살 -tipped_arrow.effect.potion.hbm_lead=납중독의 화살 -tipped_arrow.effect.potion.hbm_radaway=라다웨이의 화살 -tipped_arrow.effect.potion.hbm_telekinesis=염동력의 화살 -tipped_arrow.effect.potion.hbm_phosphorus=인화살 화상 -tipped_arrow.effect.potion.hbm_stability=안정의 화살 - -rbmk.heat=열 온도: %s -rbmk.outgasser.eta=ETA: %s -rbmk.outgasser.flux=유입 플럭스: %s -rbmk.outgasser.progress=진행상황: %s / %s §b(%s%%) -rbmk.outgasser.gas=삼중 수소: %s / %smB -rbmk.boiler.water=공급수: %s / %smB -rbmk.boiler.steam=증기: %s / %smB -rbmk.boiler.type=압축기: %s -rbmk.cooler.cooling=-%s°C/s -rbmk.cooler.cryo=크라이오지: %s / 16000mB -rbmk.console.assign=화면에 선택한 열 할당 #%s -rbmk.console.assignG=선택한 열을 그래프에 할당 -rbmk.console.none=끄다 -rbmk.console.col_temp=평균 컬럼 온도 모니터링 -rbmk.console.rod_extraction=평균 제어봉 추출 모니터링 -rbmk.console.fuel_depletion=평균 연료 고갈 모니터링 -rbmk.console.fuel_poison=평균 크세논 중독 모니터링 -rbmk.console.fuel_temp=평균 연료 온도 모니터링 -rbmk.console.flux=평균 방출 플럭스 모니터링 -rbmk.control.level=확대: %s -rbmk.control.red=§c레드 그룹 -rbmk.control.yellow=§e엘로우 그룹 -rbmk.control.green=§a그린 그룹 -rbmk.control.blue=§1블루 그룹 -rbmk.control.purple=§5퍼플 그룹 -rbmk.moderated=검토됨 -rbmk.rod.name=막대 유형: -rbmk.rod.flux=총 방출 플럭스: %s -rbmk.rod.depletion=고갈량: %s -rbmk.rod.xenon=제논 독: %s -rbmk.rod.coreTemp=노심 온도: %s -rbmk.rod.skinTemp=피부 온도: %s / %s -rbmk.heater.fluid=%s: %s / %smB -rbmk.screen.core=노심: %s -rbmk.screen.depletion=고갈량: %s -rbmk.screen.rod=컨트롤: %s -rbmk.screen.temp=온도: %s -rbmk.screen.xenon=제논: %s -rbmk.screen.flux=플럭스: %s -rbmk.graph.fuel_temp=노심: %s°C -rbmk.graph.fuel_depletion=고갈량: %s%% -rbmk.graph.rod_extraction=컨트롤: %s%% -rbmk.graph.col_temp=온도: %s°C -rbmk.graph.fuel_poison=제논: %s%% -rbmk.graph.flux=플럭스: %s -rbmk.graph.none=없음 - -hbmfluid.none=없음 -hbmfluid.water=물 -hbmfluid.steam=증기 -hbmfluid.hotsteam=짙은 증기 -hbmfluid.superhotsteam=초고밀도 증기 -hbmfluid.ultrahotsteam=초고밀도 증기 -hbmfluid.lava=용암 -hbmfluid.uf6=육불화우라늄 -hbmfluid.puf6=육불화플루토늄 -hbmfluid.deuterium=중수소 -hbmfluid.tritium=삼중 수소 -hbmfluid.oil=원유 -hbmfluid.hotoil=뜨거운 원유 -hbmfluid.crackoil=갈라진 기름 -hbmfluid.hotcrackoil=뜨겁게 갈라진 기름 -hbmfluid.aromatics=방향족 탄화수소 -hbmfluid.unsaturateds=불포화 탄화수소 -hbmfluid.smear=산업용유 -hbmfluid.reclaimed=재생산업유 -hbmfluid.petroil=석유 -hbmfluid.lubricant=엔진 윤활유 -hbmfluid.diesel=디젤 -hbmfluid.kerosene=둥유 -hbmfluid.gas=천연 가스 -hbmfluid.coolant=냉각수 -hbmfluid.hotcoolant=뜨거운 절삭유 +hbm.achievement.soyuz=구운 감자 +hbm.achievement.soyuz.desc=바삭바삭해지세요. +hbm.achievement.space=The Final Front-아 잊어버려 +hbm.achievement.space.desc=가능한 모든 방법으로 실패하고 9천만 달러 상당의 자금을 낭비하십시오. +hbm.achievement.stratum=지층 +hbm.achievement.stratum.desc=브레이크를 밟아라, 미츠. +hbm.achievement.tasteofblood=피의 맛 +hbm.achievement.tasteofblood.desc=테스트 프로토콜의 일부가 아닙니다. +hbm.advancement.root=NTM의 발전 +hbm.advancement.root.desc=Hbm의 원자력 기술을 위한 발전. +hbmfluid.acid=과산화수소 hbmfluid.amat=반물질 hbmfluid.aschrab=안티스크라비디움 -hbmfluid.heavyoil=중유 +hbmfluid.balefire=BF 로켓 연료 +hbmfluid.biofuel=바이오 연료 +hbmfluid.biogas=바이오가스 hbmfluid.bitumen=역청 +hbmfluid.coolant=냉각수 +hbmfluid.cryogel=크리오겔 +hbmfluid.deuterium=중수소 +hbmfluid.diesel=디젤 +hbmfluid.gas=천연 가스 +hbmfluid.gasoline=유연 휘발유 hbmfluid.heatingoil=난방유 -hbmfluid.naphtha=나프타 +hbmfluid.heavyoil=중유 +hbmfluid.hotoil=뜨거운 원유 +hbmfluid.hotsteam=짙은 증기 +hbmfluid.hydrogen=액체 수소 +hbmfluid.kerosene=둥유 +hbmfluid.lava=용암 hbmfluid.lightoil=경유 -hbmfluid.petroleum=석유가스 -hbmfluid.acid=과산화수소 -hbmfluid.watz=와츠 머드 -hbmfluid.biogas=바이오가스 -hbmfluid.biofuel=바이오 연료 -hbmfluid.sas3=슈라비듐 삼황화물 -hbmfluid.nitan=NITAN© 100 옥탄 슈퍼 연료 -hbmfluid.cryogel=크리오겔 -hbmfluid.hydrogen=액체수소 -hbmfluid.oxygen=액체산소 -hbmfluid.xenon=크세논 가스 -hbmfluid.balefire=베일파이어 로켓 연료 +hbmfluid.lubricant=엔진 윤활유 hbmfluid.mercury=수은 +hbmfluid.naphtha=나프타 +hbmfluid.nitan=NITAN© 100 옥탄 슈퍼 연료 +hbmfluid.none=없음 +hbmfluid.oil=원유 +hbmfluid.oxygen=액체 산소 +hbmfluid.pain=판데모니움(III) 탄탈라이트 용액 +hbmfluid.petroil=휘발유 +hbmfluid.petroleum=석유 가스 +hbmfluid.plasma_bf=베일파이어 플라즈마 hbmfluid.plasma_dt=중수소-삼중수소 플라즈마 hbmfluid.plasma_hd=수소-중수소 플라즈마 hbmfluid.plasma_ht=수소-삼중수소 플라즈마 hbmfluid.plasma_xm=크세논-수은 플라즈마 -hbmfluid.plasma_bf=베일파이어 플라즈마 +hbmfluid.puf6=플루토늄 헥사플루오라이드 +hbmfluid.reclaimed=재생 산업용 오일 +hbmfluid.sas3=슈라비디움 트리설파이드 hbmfluid.schrabidic_fluid=슈라비딕산 -hbmfluid.pain=판데모니움(III)탄탈라이트 용액 +hbmfluid.smear=산업용 오일 hbmfluid.spentsteam=저압 증기 -hbmfluid.wastefluid=액체핵폐기물 +hbmfluid.steam=증기 +hbmfluid.superhotsteam=초고밀도 증기 +hbmfluid.tritium=삼중 수소 +hbmfluid.uf6=육불화 우라늄 +hbmfluid.ultrahotsteam=초고밀도 증기 +hbmfluid.wastefluid=액체 핵폐기물 hbmfluid.wastegas=기체 핵폐기물 -hbmfluid.gasoline=유연 가솔린 -hbmfluid.sulfuric_acid=황산 -hbmfluid.liquid_osmiridium=오스미리딕 용액 - -fluid.sulfuric_acid=황산 -fluid.steam=증기 -fluid.hotsteam=짙은 증기 -fluid.superhotsteam=초고밀도 증기 -fluid.ultrahotsteam=초고밀도 증기 -fluid.uf6=육불화우라늄 -fluid.puf6=육불화플루토늄 -fluid.deuterium=중수소 -fluid.tritium=삼중 수소 -fluid.oil=원유 -fluid.hotoil=뜨거운 원유 -fluid.crackoil=갈라진 기름 -fluid.hotcrackoil=뜨겁게 갈라진 기름 -fluid.aromatics=방향족 탄화수소 -fluid.unsaturateds=불포화 탄화수소 -fluid.smear=산업용유 -fluid.reclaimed=재생산업유 -fluid.petroil=석유 -fluid.lubricant=엔진 윤활유 -fluid.lubircant=엔진 윤활유 -fluid.diesel=디젤 -fluid.kerosene=둥유 -fluid.gas=천연 가스 -fluid.coolant=냉각수 -fluid.hotcoolant=뜨거운 절삭유 -fluid.amat=반물질 -fluid.aschrab=안티스크라비디움 -fluid.heavyoil=중유 -fluid.bitumen=역청 -fluid.heatingoil=난방유 -fluid.naphtha=나프타 -fluid.lightoil=경유 -fluid.petroleum=석유가스 -fluid.acid=과산화수소 -fluid.watz=와츠 머드 -fluid.biogas=바이오가스 -fluid.biofuel=바이오 연료 -fluid.sas3=슈라비듐 삼황화물 -fluid.nitan=NITAN© 100 옥탄 슈퍼 연료 -fluid.cryogel=크리오겔 -fluid.hydrogen=액체수소 -fluid.oxygen=액체산소 -fluid.xenon=크세논 가스 -fluid.balefire=베일파이어 로켓 연료 -fluid.mercury=수은 -fluid.plasma_dt=중수소-삼중수소 플라즈마 -fluid.plasma_hd=수소-중수소 플라즈마 -fluid.plasma_ht=수소-삼중수소 플라즈마 -fluid.plasma_xm=크세논-수은 플라즈마 -fluid.plasma_bf=베일파이어 플라즈마 -fluid.schrabidic=슈라비딕산 -fluid.corium_fluid=코륨 -fluid.volcanic_lava_fluid=화산 용암 -fluid.pain=판데모니움(III)탄탈라이트 용액 -fluid.spentsteam=저압 증기 -fluid.wastefluid=액체핵폐기물 -fluid.wastegas=기체 핵폐기물 -fluid.gasoline=유연 가솔린 -fluid.liquid_osmiridium=오스미리딕 용액 - -item.crystal_osmiridium.name=오스미리듐 결정 -item.ingot_osmiridium.name=오스미리듐 주괴 -item.nugget_osmiridium.name=오스미리듐 덩어리 -item.powder_impure_osmiridium.name=불순한 오스미리듐 가루 -item.powder_osmiridium.name=오스미리듐 가루 -item.powder_tektite.name=텍타이트 가루 -item.powder_paleogenite.name=고생석 가루 -item.powder_paleogenite_tiny.name=작은 고생석 가루 더미 - -tile.anvil_osmiridium.name=오스미리듐 모루 - -tile.volcanic_lava_block.name=화산 용암 -tile.corium_block.name=액체 진피 -tile.schrabidic_block.name=슈라비딕산 - -book.rbmk.cover=방법 2 RBMK:$원자로$기본$구성 -book.rbmk.title1=소개 -book.rbmk.page1=The §lRBMK§r is a fully modular nuclear reactor. Unlike most other reactors, there is no "core", and no size limitations, rather, the behavior and efficiency of the reactor comes from how it is built and how the different pieces interact with each other. - -book.rbmk.title_schematic=개요 -book.rbmk.page_schematic=원자로에서 핵분열은 물을 증기로 변환시키는 열을 생성합니다. 그 증기는 파이프를 통해 증기 터빈으로 흘러 전기를 생산하고 증기를 더 낮은 단계의 증기로 변환합니다. 저압 증기는 응축기로 흘러 다시 물로 변환됩니다. 입력/출력 모드의 탱크는 백업 물 저장소 역할을 합니다. - -book.rbmk.title2=열 -book.rbmk.page2=원자로가 작동하면서 §l열§r이 발생할 것입니다. 열은 부품 사이로 퍼져서, 그 과정에서 천천히 감소할 것입니다. 목표는 원자로를 녹이지 않고 가능한 한 많은 열을 생산하고, 그 열을 원자로를 식히고 증기를 생산하는 §l증기 채널§r로 옮기는 것입니다. -book.rbmk.title3=연료봉 -book.rbmk.page3=핵연료가 핵분열할 때 중성자가 방출됩니다. 다른 연료봉에 부딪힐 때 더 많은 핵분열을 일으키고 최대 범위가 5 블록인 네 가지 기본 방향으로 방출됩니다. 발생하는 열의 양은 방출되는 중성자의 양에 따라 달라집니다. RBMK 펠릿을 얻기 위해서는 연료봉 표피와 중심부 온도가 50°C 미만이어야 합니다. -book.rbmk.title4=제어봉 -book.rbmk.page4=§l제어봉§r은 통과하는 중성자의 양을 감소시킬 것입니다. 완전히 삽입하면 모든 중성자를 차단하고 반만 삽입하면 절반만 차단합니다. 제어봉은 원자로의 활동을 조절하고 끄는데 사용됩니다. 너무 많은 플럭스는 과열과 노심용융을 유발합니다. -book.rbmk.title5=제어봉 - 사용법 -book.rbmk.page5= GUI 중앙에 현재 로드 삽입이 표시됩니다. 왼쪽의 색상 버튼은 색상 그룹에 제어 로드를 추가하여 §lRBMK 콘솔§r에서 그룹화된 로드를 빠르게 선택하는 데 유용합니다. 오른쪽 버튼은 25% 단위로 수동 삽입을 허용합니다. -book.rbmk.title6=자동제어봉 -book.rbmk.page6=§l자동 제어봉§r은 일반 제어봉과 거의 동일한 기능을 하지만 수동으로 구성할 수는 없으며 대신 현재 온도를 기준으로 로드 위치를 조정합니다. 어떤 기능을 사용하고 어떤 온도에서 얼마나 깊게 삽입할 것인지 먼저 정의해야 합니다. -book.rbmk.title7=증기 채널 -book.rbmk.page7=반응기의 열 수준을 능동적으로 감소시키는 부분은 §l증기 채널§r뿐이며, 열 온도가 스팀 형태의 끓는점을 넘으면 물을 많이 소비하고 스팀을 필요한 만큼 생산하여 끓는점 이하로 냉각시킬 수 있습니다. 정상: 100 °C, 밀도: 300 °C, 슈퍼: 450 °C, 울트라: 600°C -book.rbmk.title8=중성자 반사경 -book.rbmk.page8=§l중성자 반사판§r은 중성자가 통과하는 것을 차단할 것이고, 대신 중성자는 그들이 온 연료봉에서 다시 반사될 것입니다. 이것은 원자로를 단순히 빠져나옴으로써 낭비될 수 있는 중성자를 활용하는 데 유용합니다. -book.rbmk.title9=중성자 흡수체 -book.rbmk.page9=§l중성자 흡수기§r는 단순히 중성자를 차단합니다. 흡수 된 중성자는 열을 생성하지 않고 효과적으로 무효화됩니다. 이것은 연료봉가 다른 범위에있는 반응을 방지하는 데 유용합니다. -book.rbmk.title10=흑연 감속재 -book.rbmk.page10= §l흑연 감속재§r는 그것을 통과하는 빠른 중성자를 느린 중성자로 변환할 것입니다. 만약 들어오는 플럭스가 연료에 적합하지 않다면, 효율은 크게 감소할 것입니다. 빠른 플럭스가 필요한 연료에서의 느린 플럭스: -50% 효과. 느린 플럭스가 필요한 연료에서의 빠른 플럭스: -70% 효과. -book.rbmk.title11=구조 기둥 -book.rbmk.page11=§l구조 기둥§r은 중성자를 방해하지 않을 뿐만 아니라 특별한 용도도 없습니다. 구조 기둥은 열을 전달할 수 있기 때문에 다른 부분이 없는 구조 기둥으로 원자로를 채우는 것이 좋습니다. -book.rbmk.title12=콘솔 -book.rbmk.page12=§lRBMK 콘솔§r을 사용하면 멀리서 원자로를 제어할 수 있습니다. §lRBMK§r 부품에 §lRBMK 콘솔 연결 장치§r를 사용하면 콘솔이 원자로를 콘솔에 연결합니다. 콘솔은 15x15 부품만 관리할 수 있으며, 더 큰 원자로의 경우 여러 콘솔을 사용할 수 있습니다. -book.rbmk.title13=콘솔 사용법 -book.rbmk.page13=부품을 클릭하면 부품을 선택하고 선택을 취소합니다. 색상 버튼을 사용하여 해당 색상 그룹의 모든 제어봉을 빠르게 선택할 수 있습니다. 버튼 'A'는 모든 제어봉을 선택하고, 'X'는 모두 선택을 취소합니다. 아이콘을 클릭하여 표시되는 통계를 변경할 수 있습니다. 통계에 들어갈 rbmk 열을 선택한 다음 저장을 누릅니다. 이러한 방식으로 연료봉의 평균 온도를 표시하거나 플럭스 양을 표시할 수 있습니다. -book.rbmk.page14=녹색 상자에 숫자 0-100을 입력한 다음 옆에 있는 버튼을 누르면 선택한 모든 제어봉이 이 위치로 설정됩니다. 'AZ-5' 버튼을 누르면 모든 제어봉이 완전히 삽입됩니다. -book.rbmk.page15=새로운 RBMK를 설계할 때 플럭스가 어디로 가는지 생각해야 합니다. 왼쪽 설계에는 많은 전력 잠재력이 있지만 플럭스를 중지하고 차단할 방법이 없습니다. 오른쪽에 있는 것은 반사경을 사용하여 활성 상태를 유지할 수 있으므로 모서리에 자립 막대가 있는 경우 자체 점화 막대 없이 종료했다가 다시 시작할 수 있습니다. -book.rbmk.title16=멜트다운 기준 -book.rbmk.page16=RBMK는 기둥 온도가 1500°C 이상이거나 연료 스킨 온도가 연료 녹는 점 이상이면 폭발합니다. 다음과 같이 함으로써 §4§l멜트다운을 피하십시오.§r 연료 로드를 교체하기 전에 종료하십시오. 제거 후 유입되는 플럭스에 무슨 일이 일어나는지 생각하십시오. 가장 위험한 것에서 가장 위험하지 않은 것으로 순서대로 제거하십시오. - -book.rbmk.title_fluxgraph=크세논 독 -book.rbmk.page_fluxgraph= §l50 플럭스§r는 좌측 RBMK 연료 로드에서 방출됩니다. 제어 로드는 §l80% 이상을 통과시키므로 40§r 플럭스를 통과시킵니다. §5§l제논 피독은 유입되는 플럭스의 §5§l75%를 차단합니다.§r 10 플럭스는 실제로 우측 RBMK 연료 로드에 도달합니다. 제논 피독은 낮은 플럭스와 함께 발생합니다. -book.rbmk.title_flux=플럭스 -book.rbmk.page_flux=방출된 중성자의 흐름을 플럭스라고 합니다. 중성자는 열을 만드는 연료봉에서 원자를 쪼개는 것입니다. 플럭스 함수 f(x)는 입력 플럭스 x가 주어졌을 때 얼마나 많은 플럭스가 방출되고 열이 생성되는지를 결정합니다. 예: 플럭스 함수는 §lsqrt(입력) * 2 = 출력입니다.§r 따라서 10 플럭스를 입력하면 출력은 sqrt(10) * 2 = 6.480 플럭스가 됩니다. - -book.rbmk.title_flux_explain=플럭스 함수 -book.rbmk.page_flux_explain=플럭스 출력 * 열/유속 = 열 출력. 최대 열에 대해 많은 플럭스와 높은 열/유속을 원합니다. X축은 입력 플럭스이고 Y축은 출력 플럭스입니다. 대부분의 연료는 f(0) = 0이므로 0 입력에서는 출력이 0입니다. 그들은 스스로 시작하지 않고 시작하기 위해 플럭스 입력이 필요합니다. 항상 켜져 있는 §4자체 점화식 로드를 통해 초기 입력을 얻습니다. - -book.rbmk.title_func_passive=수동적 -book.rbmk.page_func_passive=자체 유지: §2예§r 반사판 사용: §8무관함§r 예: f(x) = 50 -book.rbmk.title_func_euler=오일러 -book.rbmk.page_func_euler=자체 유지 : §8아니요§8 반사기 사용 : §2유리함§r 예 : f(x) = (1-e^(-x/25)) * 20 -book.rbmk.title_func_sigmoid=시그모이드 -book.rbmk.page_func_sigmoid=자체 유지: §8아니요§r 반사기 사용: §2유리함§r 예: f(x) = 30 / (1 + e^(-0.1x + 5)) -book.rbmk.title_func_logarithmic=대수 -book.rbmk.page_func_logarithmic=자체 유지: §2예§r 반사기 사용: §2유리함§r 예: f(x) = log10(x) * 10 -book.rbmk.title_func_square_root=제곱근 -book.rbmk.page_func_square_root=자체 유지: §2예§r 반사기 사용: §2유리함§r 예: f(x) = √x * 2 -book.rbmk.title_func_neg_quad=음의 이차 -book.rbmk.page_func_neg_quad=자체 유지 = §6아마도§r 반사기 사용: §6위험함§r 예: f(x) = x - x² * 0.001 -book.rbmk.title_func_linear=선의 -book.rbmk.page_func_linear=자체 유지: §8아니요§r 반사기 사용: §4위험함§r 예: f(x) = x * 0.5 중간, 안전하고 수동적이지만 더 높은 연료는 아닙니다. -book.rbmk.title_func_quadratic=이차 -book.rbmk.page_func_quadratic=자체 유지: §8아니요§r 반사기 사용: §4§l미침§r 예: f(x) = x² * 0.1 안전하고 수동적인 연료 또는 흡수 장치 옆에만 배치하십시오. - -book.rbmk.title_tips=팁 -book.rbmk.page_tips=플럭스가 반응기 외부로 나가거나(차단되거나 반사되지 않음) 플럭스가 뚜껑 없이 rbmk 컬럼에 도달하는 경우 방사선이 누출됩니다. 유체 로더는 증기 채널과 유체 히터에 접근하기 위해 사용됩니다. 조사 채널은 레시피에 유입되는 플럭스를 사용하는 흡수체입니다. - -book.rbmk.title_mistakes=흔한 실수 -book.rbmk.page_mistakes=§l정보§r: 빈 RBMK 연료 기둥은 플럭스에 투명합니다. §l시나리오§r: 고갈된 연료봉을 분홍색으로 교체합니다. 빨간색 기둥에는 §4위험 등급§r 플럭스 기능이 있는 연료가 있습니다. 분홍색의 연료봉을 꺼내면 RBMK가 폭발합니다. 그래서 어떻게 됐을까요? 빨간색에서 나온 플럭스는 더 이상 분홍색에 흡수되지 않고 반사되어 되돌아옵니다. 이것은 온도를 상승시키는 피드백 루프를 만듭니다 brrr. - -book.rbmk.title_post_meltdown=포스트 멜트다운 프로토콜 -book.rbmk.page_post_meltdown=RBMK가 폭발했습니다. 이제 어떻게 될까요? 두 가지 위험은 방사선과 열입니다. 높은 폭발 저항력을 가진 블록을 사용하여 내부 방사선으로부터 자신을 보호하면 열로부터 보호받고 가까이 다가갈 수 있습니다. RBMK는 천천히 냉각되어 일반 잔해로 부패됩니다. 붕소 모래가 RBMK 잔해를 태우거나 방사하는 옆에 있으면 붕괴 속도가 빨라지고 방사능 수준이 감소합니다. 방사능 확산이 제한되도록 핵 폭발 방지 기능을 갖춘 지하 공간에 RBMK를 건설하세요. 폭발 저항이 높은 블록으로 연료 채널 아래의 노심 흐름을 차단하여 코어블스톤 형성을 방해합니다. - -chem.TEST=시험 -chem.ARSENIC=비소 추출 -chem.SULFURIC_ACID=황산 생산 -chem.OSMIRIDIUM_DEATH=오스미리딕 솔루션 생산 -chem.FP_HEAVYOIL=중유처리 -chem.FP_SMEAR=산업용 오일 처리 -chem.FP_NAPHTHA=나프타 가공 -chem.FP_LIGHTOIL=경유 가공 -chem.FR_REOIL=오일 재처리 -chem.FR_PETROIL=석유 혼합 -chem.OIL_SAND=타르 모래 추출 -chem.FC_BITUMEN=역청 크래킹 -chem.FC_I_NAPHTHA=산업용 오일 크래킹 -chem.FC_GAS_PETROLEUM=가스 분해 -chem.FC_DIESEL_KEROSENE=디젤 크래킹 -chem.FC_KEROSENE_PETROLEUM=등유 분해 -chem.CC_OIL=석탄 액화 -chem.CC_I=향상된 석탄 액화 -chem.CC_HEATING=고급 석탄 액화 -chem.CC_HEAVY=기본 석탄 액화 -chem.CC_NAPHTHA=나프타 석탄 액화 -chem.ASPHALT=아스팔트 생산 -chem.CONCRETE=콘크리트 생산 -chem.CONCRETE_ASBESTOS=석면 콘크리트 생산 -chem.COOLANT=냉각수 혼합 -chem.CRYOGEL=크리오겔 혼합 -chem.DESH=제품생산 -chem.PEROXIDE=과산화수소 생산 -chem.CIRCUIT_4=오버클럭된 회로 생산 -chem.CIRCUIT_5=고성능 회로 생산 -chem.SF_OIL=원유 고형화 -chem.SF_HEAVYOIL=중유 응고 -chem.SF_SMEAR=산업용 오일 고형화 -chem.SF_HEATINGOIL=난방유 고화 -chem.SF_RECLAIMED=재생유 고화 -chem.SF_PETROIL=석유 고형화 -chem.SF_LUBRICANT=윤활유 고화 -chem.SF_NAPHTHA=나프타 응고 -chem.SF_DIESEL=디젤 응고 -chem.SF_LIGHTOIL=경유 고화 -chem.SF_KEROSENE=등유 응고 -chem.SF_GAS=천연가스 응고 -chem.SF_PETROLEUM=석유가스 고화 -chem.SF_BIOGAS=바이오가스 고화 -chem.SF_BIOFUEL=바이오연료 고화 -chem.POLYMER=고분자 합성 -chem.BAKELITE=베이클라이트 생산 -chem.RUBBER=고무생산 -chem.DEUTERIUM=중수소 추출 -chem.STEAM=물 끓기 -chem.ALGE=바이오매스 광합성 -chem.YELLOWCAKE=옐로케이크 생산 -chem.UF6=육불화우라늄 생산 -chem.PUF6=육불화플루토늄 생산 -chem.BP_BIOGAS=바이오가스 생산 -chem.BP_BIOFUEL=바이오연료 에스테르교환 -chem.SAS3=슈라비듐 삼황화물 생산 -chem.NITAN=NITAN 슈퍼 연료 혼합 -chem.DYN_STR=네오벨린 합성 -chem.DYN_SCHRAB=슈라비듐 다이노합성 -chem.DYN_EUPH=유페늄 합성 -chem.DYN_DNT=디뉴트로늄 다이노합성 -chem.DYN_EL=전자 합성 -chem.CORDITE=코르다이트 생산 -chem.KEVLAR=케블라 화합물 생산 -chem.SOLID_FUEL=고체 로켓 연료 생산 -chem.ELECTROLYSIS=극저온 전기분해 -chem.XENON=린데 제논 사이클 -chem.XENON_OXY=강화된 린데 제논 사이클 -chem.SATURN=토성 생산 -chem.BALEFIRE=베일파이어 로켓 연료 혼합 -chem.SCHRABIDATE=철 슈라비데이트 생산 -chem.SCHRABIDIC=슈라비딕산 혼합 -chem.COLTAN_CLEANING=콜탄 퓨리파잉 -chem.COLTAN_CRYSTAL=탄탈륨 결정화 -chem.COLTAN_PAIN=판데모늄(III)탄탈라이트 생산 -chem.VIT_GAS=기체 핵폐기물 유리화 -chem.VIT_LIQUID=액체 핵폐기물 유리화 -chem.TEL=전화 믹싱 -chem.GNEISS_GAS=가스 셰일 연구소 파쇄 -chem.GASOLINE=휘발유 생산 -chem.FRACKSOL=파쇄 솔루션 생산 - -fluid.colloid=콜로이드 -fluid.ethanol=에탄올 -fluid.fishoil=생선 기름 -fluid.sunfloweroil=해바라기씨유 -fluid.nitroglycerin=니트로글리세린 -fluid.fracksol=파쇄 솔루션 -container.frackingTower=유압 파쇄 타워 -item.canister_fracksol.name=파쇄 솔루션 캐니스터 -item.scrap_oil.name=기름진 찌꺼기 - -tile.sand_dirty.name=기름진 모래 -tile.sand_dirty_red.name=붉은 기름진 모래 -tile.plant_dead_generic.name=죽은 식물 -tile.plant_dead_grass.name=죽은 식물 -tile.plant_dead_flower.name=죽은 식물 -tile.plant_dead_big_flower.name=죽은 식물 -tile.plant_dead_fern.name=죽은 식물 -tile.ore_bedrock_oil.name=기반암 석유 매장지 -tile.machine_fracking_tower.name=유압 파쇄 타워 - -tile.dirt_dead.name=죽은 흙 -tile.dirt_oily.name=기름진 먼지 - -tile.stone_cracked.name=갈라진 돌 - -item.record.lc.desc=밸브 - 당뇨병 아드레날린 기타/람다 코어 -item.record.ss.desc=밸브 - 섹터 스윕 -item.record.vc.desc=밸브 - 보탈컴뱃 -item.record.glass.desc=? ? ? - - -death.attack.mku=%1$s이(가) 알 수 없는 원인으로 사망했습니다. -death.attack.nuclearBlast=%1$s이(가) 핵폭발로 인해 폭발했습니다. -death.attack.revolverBullet=%1$s이(가) %2$s한테 머리에 총을 맞았습니다. -death.attack.gunGib=%1$s이(가) %2$s에 의해 조각으로 분해되었습니다. -death.attack.mudPoisoning=%1$s는 독이 있는 진흙에서 사망했습니다. -death.attack.euthanized=%1$s이(가) %2$s에 의해 안락사되었습니다. -death.attack.euthanizedSelf=%1$s는 자신을 안락사 시켰습니다, ㅋㅋ -death.attack.euthanizedSelf2=%1$s이(가) 다윈상을 수상합니다. -death.attack.tau=%1$s는 음으로 충전된 타우온을 사용하여 %2$s에 의해 가득 찼습니다. -death.attack.tauBlast=%1$s이(가) XVL1456을 너무 오래 충전하여 산산조각이 났습니다. -death.attack.chopperBullet=%1$s이(가) %2$s에게 고정되었습니다. -death.attack.cmb=%1$s를 %2$s로 채웠습니다. -death.attack.subAtomic=%1$s의 원자는 %2$s에 의해 파괴되었습니다. -death.attack.subAtomic2=%2$s이(가) 사실상의 속도를 변조했기 때문에 %1$s이(가) QPU 정렬이 잘못되었습니다. -death.attack.subAtomic3=%2$s 때문에 %1$s의 차이가 1% 미만으로 떨어졌습니다. -death.attack.subAtomic4=%1$s를 %2$s로 0으로 나눴습니다. -death.attack.subAtomic5=%1$s이(가) %2$s에게 무효화되었습니다. -death.attack.radiation=%1$s이(가) 방사선 중독으로 사망했습니다. -death.attack.acid=%1$s이(가) 산성에 떨어졌습니다. -death.attack.suicide=%1$s의 머리가 날라갔습니다. -death.attack.electrified=%1$s이(가) %2$s에게 전기화되었습니다. -death.attack.flamethrower=%1$s이(가) %2$s에 의해 화장되었습니다. -death.attack.plasma=%1$s이(가) %2$s에 의해 분해되었습니다. -death.attack.ice=%1$s이(가) %2$s에 의해 아이스캔디로 변경되었습니다. -death.attack.cheater=%1$s의 창자가 귀리로 변했습니다. (??) -death.attack.laser=%1$s이(가) %2$s예 재로 변경되었습니다. -death.attack.rubble=%1$s이(가) 파편에 의해 찌그러졌습니다. -death.attack.shrapnel=%1$s이(가) 파편에 의해 누더기가 되었습니다. -death.attack.spikes=%1$s이(가) 침해되었습니다. -death.attack.teleporter=%1$s이(가) 무(無). -death.attack.blackhole=%1$s이(가) 스파게티화되었습니다. -death.attack.blender=%1$s이(가) 한 입 크기의 작은 조각으로 잘렸습니다. -death.attack.meteorite=%1$s이(가) 우주에서 떨어진 암석에 맞았습니다. -death.attack.boxcar=%1$s이(가) 떨어지는 박스카에 의해 스매싱되었습니다. 오, 글쎄요. -death.attack.boat=%1$s이(가) 보트에 치였습니다. -death.attack.building=%1$s이(가) 떨어지는 건물에 맞았습니다. -death.attack.electricity=%1$s이(가) 감전되었습니다. -death.attack.exhaust=%1$s는 출발하는 로켓에 의해 쉬쉬 케밥으로 바뀌었습니다. -death.attack.broadcast=%1$s이(가) 뇌를 녹았습니다. -death.attack.ams=%1$s는 아직 인간 과학에 의해 명명되지 않은 치명적인 입자로 덮여 있었습니다. -death.attack.amsCore=%1$s이(가) 특이점의 화재로 기화되었습니다. -death.attack.bang=%1$s이(가) 한 입 크기의 조각으로 폭발했습니다. -death.attack.pc=%1$s이(가) 분홍색 구름의 웅덩이로 감소했습니다. -death.attack.cloud=%1$s이(가) 태양 아래 아이스캔디처럼 녹았습니다. -death.attack.lead=%1$s이(가) 납 중독으로 사망했습니다. -death.attack.taint=%1$s는 플럭스 종양으로 사망했습니다. -death.attack.lunar=%1$s이(가) 중요한 장기를 충전하는 것을 잊었습니다. -death.attack.gluon=%1$s이(가) 농축 글루온 스트림에 의해 탈원자화되었습니다. -death.attack.slicer=%1$s이(가) 반으로 잘렸습니다. -death.attack.crucible=%1$s는 순수한 아르젠트 에너지의 블레이드에 의해 이등분되었습니다. -death.attack.monoxide=%1$s이(가) 일산화탄소 감지기의 배터리를 교체하는 것을 잊었습니다. -death.attack.digamma=%1$s이(가) 심연으로 들어갔습니다. -death.attack.asbestos=%1$s는 이제 금전적 보상을 받을 수 있습니다. -death.attack.blacklung=%1$s는 탄광에 목숨을 바쳤습니다. - -item.redstone_sword.name=레드스톤 검 +hbmfluid.water=물 +hbmfluid.watz=유독한 진흙 +hbmfluid.xenon=크세논 가스 +info.coil=코일 강도 +info.template_in=입력: +info.template_in_p=입력: +info.template_out=산출: +info.template_out_p=출력: +info.template_seconds=초 +info.template_time=생산 시간: +info.templatefolder=템플릿 폴더로 생성 +item.RPA_boots.name=잔재 장화 +item.RPA_helmet.name=잔해 투구 +item.RPA_legs.name=잔재 레깅스 +item.RPA_plate.name=잔재 가슴갑옷 +item.ajr_boots.name=스틸 레인저 부츠 +item.ajr_helmet.name=스틸 레인저 헬멧 +item.ajr_legs.name=강철 레인저 레깅스 +item.ajr_plate.name=강철 순찰자 가슴갑옷 +item.ajro_boots.name=AJR 파워 아머 부츠 +item.ajro_helmet.name=AJR 파워 아머 헬멧 +item.ajro_legs.name=AJR 파워 아머 레깅스 +item.ajro_plate.name=AJR 파워 아머 흉갑 +item.alloy_axe.name=고급 합금 도끼 +item.alloy_boots.name=고급 합금 부츠 +item.alloy_helmet.name=고급 합금 헬멧 +item.alloy_hoe.name=고급 합금 괭이 +item.alloy_legs.name=고급 합금 레깅스 +item.alloy_pickaxe.name=고급 합금 곡괭이 +item.alloy_plate.name=고급 합금 흉갑 +item.alloy_shovel.name=고급 합금 삽 +item.alloy_sword.name=고급 합금 검 +item.ammo_12gauge.name=12 게이지 벅샷 +item.ammo_12gauge_du.name=12 게이지 벅샷(우라늄 코팅) +item.ammo_12gauge_incendiary.name=12 게이지 벅샷(소이탄) +item.ammo_12gauge_marauder.name=12게이지 전술 안티 머라우더 쉘 +item.ammo_12gauge_shrapnel.name=12 게이지 벅샷(파편) +item.ammo_12gauge_sleek.name=12 게이지 벅샷(IF-R&D) +item.ammo_20gauge.name=20 게이지 벅샷 +item.ammo_20gauge_caustic.name=20 게이지 벅샷(가성) +item.ammo_20gauge_explosive.name=20 게이지 벅샷(폭발물) +item.ammo_20gauge_flechette.name=20 게이지 Flechette 쉘 +item.ammo_20gauge_incendiary.name=20 게이지 벅샷(소이탄) +item.ammo_20gauge_shock.name=20 게이지 벅샷(쇼크) +item.ammo_20gauge_shrapnel.name=20 게이지 벅샷(파편) +item.ammo_20gauge_sleek.name=20 게이지 벅샷(IF-R&D) +item.ammo_20gauge_slug.name=20 게이지 브레네크 슬러그 +item.ammo_20gauge_wither.name=20게이지 벅샷(위더링) +item.ammo_22lr.name=.22 LR 라운드 +item.ammo_22lr_ap.name=.22 LR 라운드(아머 피어싱) +item.ammo_22lr_chlorophyte.name=.22 LR 라운드(엽록소) +item.ammo_357_desh.name=.357 매그넘 데시 총알 +item.ammo_44.name=.44 매그넘 총알 +item.ammo_44_ap.name=.44 매그넘 총알(갑옷 관통) +item.ammo_44_bj.name=.44 매그넘 총알(보트) +item.ammo_44_chlorophyte.name=.44 매그넘 총알(엽록소) +item.ammo_44_du.name=.44 매그넘 불릿(DU) +item.ammo_44_phosphorus.name=.44 매그넘 불릿(WP) +item.ammo_44_pip.name=.44 매그넘 불릿(박스카) +item.ammo_44_rocket.name=.44 매그넘 로켓 +item.ammo_44_silver.name=.44 매그넘 총알(건물) +item.ammo_44_star.name=.44 매그넘 불릿(스타메탈) +item.ammo_4gauge.name=4 게이지 벅샷 +item.ammo_4gauge_balefire.name=23mm 베일파이어 수류탄 +item.ammo_4gauge_canister.name=23mm 로켓(캐니스터 샷) +item.ammo_4gauge_claw.name=4 게이지 클로 쉘 +item.ammo_4gauge_explosive.name=23mm 수류탄 +item.ammo_4gauge_flechette.name=4 게이지 Flechette 쉘 +item.ammo_4gauge_flechette_phosphorus.name=4 게이지 플레셰트 쉘(WP) +item.ammo_4gauge_kampf.name=23mm 로켓 +item.ammo_4gauge_semtex.name=23mm 마이닝 차지 +item.ammo_4gauge_sleek.name=4 게이지 벅샷(IF-R&D) +item.ammo_4gauge_slug.name=4 게이지 솔리드 스틸 슬러그 +item.ammo_4gauge_vampire.name=4 게이지 나무 말뚝 껍질 +item.ammo_4gauge_void.name=4 게이지 보이드 쉘 +item.ammo_50ae.name=.50 AE 라운드 +item.ammo_50ae_ap.name=.50 AE 라운드(아머 피어싱) +item.ammo_50ae_chlorophyte.name=.50 AE 라운드(엽록소) +item.ammo_50ae_du.name=.50 AE 라운드(DU) +item.ammo_50ae_star.name=.50 AE 라운드(스타메탈) +item.ammo_50bmg.name=.50 BMG 라운드 +item.ammo_50bmg_ap.name=.50 BMG 라운드(아머 피어싱) +item.ammo_50bmg_chlorophyte.name=.50 BMG 라운드(엽록소) +item.ammo_50bmg_du.name=.50 BMG 라운드(DU) +item.ammo_50bmg_explosive.name=.50 BMG 라운드(폭발물) +item.ammo_50bmg_flechette.name=.50 BMG 플레셰트 라운드 +item.ammo_50bmg_flechette_am.name=.50 BMG 플레셰트 라운드(아메리시움) +item.ammo_50bmg_flechette_po.name=.50 BMG 플레셰트 라운드(폴로늄) +item.ammo_50bmg_incendiary.name=.50 BMG 라운드(소이탄) +item.ammo_50bmg_phosphorus.name=.50 BMG 라운드(WP) +item.ammo_50bmg_sleek.name=.50 BMG 라운드(IF-R&D) +item.ammo_50bmg_star.name=.50 BMG 라운드(스타메탈) +item.ammo_556.name=5.56mm 라운드 +item.ammo_556_ap.name=5.56mm 라운드(아머 피어싱) +item.ammo_556_chlorophyte.name=5.56mm 원형(녹조류) +item.ammo_556_du.name=5.56mm 원형(DU) +item.ammo_556_flechette.name=5.56mm 플레셰트 라운드 +item.ammo_556_flechette_chlorophyte.name=5.56mm 플레셰트 라운드(엽록소) +item.ammo_556_flechette_du.name=5.56mm Flechette Round (우라늄 관통자) +item.ammo_556_flechette_incendiary.name=5.56mm 플레셰트탄(소이탄) +item.ammo_556_flechette_phosphorus.name=5.56mm Flechette Round (인 팁) +item.ammo_556_flechette_sleek.name=5.56mm 플레셰트 라운드(IF-R&D) +item.ammo_556_k.name=5.56mm K-라운드 +item.ammo_556_phosphorus.name=5.56mm 라운드(WP) +item.ammo_556_sleek.name=5.56mm 라운드(IF-R&D) +item.ammo_556_star.name=5.56mm 라운드(스타메탈) +item.ammo_556_tracer.name=5.56mm 라운드(트레이서) +item.ammo_5mm.name=5mm 라운드 +item.ammo_5mm_chlorophyte.name=5mm 원형(엽록소) +item.ammo_5mm_du.name=5mm 원형(DU) +item.ammo_5mm_explosive.name=5mm 라운드(폭발물) +item.ammo_5mm_star.name=5mm 라운드(스타메탈) +item.ammo_75bolt.name=.75 볼트 탄창(30번째) +item.ammo_75bolt_he.name=.75 볼트 고폭 탄창(30번째) +item.ammo_75bolt_incendiary.name=.75 소이 볼트 탄창(30번째) +item.ammo_9mm.name=9mm 라운드 +item.ammo_9mm_ap.name=9mm 라운드(아머 피어싱) +item.ammo_9mm_chlorophyte.name=9mm 라운드(엽록소) +item.ammo_9mm_du.name=9mm 라운드(DU) +item.ammo_9mm_rocket.name=9mm 로켓 +item.ammo_cell.name=에너지 셀 +item.ammo_container.name=탄약통 +item.ammo_dart.name=플라스틱 다트(시듦) +item.ammo_dgk.name=골키퍼 트윈 CIWS 200 라운드 벨트 +item.ammo_folly.name=은총알(원본) +item.ammo_folly_du.name=Silver Bullet(DU, 비폭발성) +item.ammo_folly_nuclear.name=은탄환(핵) +item.ammo_fuel.name=디젤 탱크 +item.ammo_fuel_gas.name=가스 탱크 +item.ammo_fuel_napalm.name=네이팜 탱크 +item.ammo_fuel_phosphorus.name=WP 탱크 +item.ammo_fuel_vaporizer.name=기화기 탱크 +item.ammo_grenade.name=40mm 수류탄 +item.ammo_grenade_concussion.name=40mm 수류탄(뇌진탕) +item.ammo_grenade_finned.name=40mm 수류탄(지느러미 있음) +item.ammo_grenade_he.name=40mm 수류탄(HE) +item.ammo_grenade_incendiary.name=40mm 수류탄(소이탄) +item.ammo_grenade_kampf.name=40mm 로켓 +item.ammo_grenade_nuclear.name=40mm 수류탄 (Привет) +item.ammo_grenade_phosphorus.name=40mm 수류탄(WP) +item.ammo_grenade_sleek.name=40mm 수류탄 (IF-R&D) +item.ammo_grenade_toxic.name=40mm 수류탄(화학) +item.ammo_grenade_tracer.name=40mm 훈련 수류탄 +item.ammo_mirv.name=미니 MIRV +item.ammo_mirv_high.name=미니 MIRV(고수익) +item.ammo_mirv_low.name=미니 MIRV(저수율) +item.ammo_mirv_safe.name=미니 MIRV(안전) +item.ammo_mirv_special.name=미니 MILV +item.ammo_nuke.name=미니 누크 +item.ammo_nuke_high.name=미니 누크(고수율) +item.ammo_nuke_low.name=미니 누크(저수율) +item.ammo_nuke_pumpkin.name=호박 폭탄 +item.ammo_nuke_safe.name=미니 핵(안전) +item.ammo_nuke_tots.name=미니 누크(Tiny Tots) +item.ammo_rocket.name=84mm 로켓 +item.ammo_rocket_canister.name=84mm 로켓(캐니스터 샷) +item.ammo_rocket_emp.name=84mm 로켓(펄스) +item.ammo_rocket_glare.name=84mm 로켓(적색 섬광) +item.ammo_rocket_he.name=84mm 로켓(HE) +item.ammo_rocket_incendiary.name=84mm 로켓(소이탄) +item.ammo_rocket_nuclear.name=84mm 로켓(총) +item.ammo_rocket_phosphorus.name=84mm 로켓(WP) +item.ammo_rocket_rpc.name=84mm 로켓 추진 전기톱 +item.ammo_rocket_shrapnel.name=84mm 로켓(파편) +item.ammo_rocket_sleek.name=84mm 로켓 (IF-R&D) +item.ammo_rocket_toxic.name=84mm 로켓(화학) +item.ammo_shell.name=240mm 포탄 +item.ammo_shell_apfsds_du.name=240mm APFSDS-DU +item.ammo_shell_apfsds_t.name=240mm APFSDS-T +item.ammo_shell_explosive.name=240mm 고폭탄 +item.ammo_shell_w9.name=240mm W9 핵 포탄 +item.ams_catalyst_aluminium.name=알루미늄 반응 촉매 +item.ams_catalyst_beryllium.name=베릴륨 반응 촉매 +item.ams_catalyst_blank.name=블랭크 반응 촉매 +item.ams_catalyst_caesium.name=세슘 반응 촉매 +item.ams_catalyst_cerium.name=세륨 반응 촉매 +item.ams_catalyst_cobalt.name=코발트 반응 촉매 +item.ams_catalyst_copper.name=구리 반응 촉매 +item.ams_catalyst_dineutronium.name=다이뉴트로늄 반응 촉매 +item.ams_catalyst_euphemium.name=유페미움 반응 촉매 +item.ams_catalyst_iron.name=철 반응 촉매 +item.ams_catalyst_lithium.name=리튬 반응 촉매 +item.ams_catalyst_niobium.name=니오븀 반응 촉매 +item.ams_catalyst_schrabidium.name=Schrabidium 반응 촉매 +item.ams_catalyst_strontium.name=스트론튬 반응 촉매 +item.ams_catalyst_thorium.name=토륨 반응 촉매 +item.ams_catalyst_tungsten.name=텅스텐 반응 촉매 +item.ams_core_eyeofharmony.name=조화의 눈(AMS 코어) +item.ams_core_sing.name=활기찬 특이점(AMS 코어) +item.ams_core_thingy.name=Thingy(AMS 코어) +item.ams_core_wormhole.name=작은 웜홀(AMS 코어) +item.ams_focus_blank.name=블랭크 스태빌라이저 포커스 +item.ams_focus_booster.name=부스트 안정제 초점 +item.ams_focus_limiter.name=안정제 초점 제한 +item.ams_lens.name=안정제 렌즈 +item.ams_muzzle.name=광선 방출 총구 +item.analyzer.name=분석기 +item.antiknock.name=테트라에틸리드 내노크제 +item.apple_euphemium.name=완곡한 사과 +item.apple_lead.name=리드 애플 +item.apple_lead1.name=리드 애플 +item.apple_lead2.name=리드 애플 +item.apple_schrabidium.name=슈라비디움 사과 +item.apple_schrabidium1.name=슈라비디움 사과 +item.apple_schrabidium2.name=슈라비디움 사과 +item.arc_electrode.name=흑연 전극 +item.arc_electrode_burnt.name=녹은 전극 +item.arc_electrode_desh.name=데쉬 전극 +item.armor_polish.name=ShiningArmor™ 갑옷 광택제 +item.asbestos_boots.name=화염 근접 장화 +item.asbestos_cloth.name=불 근접 천 +item.asbestos_helmet.name=화재 근접 헬멧 +item.asbestos_legs.name=화염 근접 레깅스 +item.asbestos_plate.name=근접 사격 흉갑 +item.ashglasses.name=애쉬 고글 +item.assembly_556.name=5.56mm 조립 +item.assembly_actionexpress.name=.50 AE 조립 +item.assembly_calamity.name=.50 BMG 어셈블리 +item.assembly_desh.name=데시 총알 어셈블리 +item.assembly_gold.name=골드 총알 어셈블리 +item.assembly_iron.name=철 총알 어셈블리 +item.assembly_lacunae.name=.5mm 조립 +item.assembly_lead.name=유리 총알 어셈블리 +item.assembly_nightmare.name=악몽 총알 어셈블리 +item.assembly_nopip.name=.44 매그넘 어셈블리 +item.assembly_nuke.name=미니 핵탄두 +item.assembly_pip.name=오염된 총알 조립체 +item.assembly_schrabidium.name=Schrabidium 총알 어셈블리 +item.assembly_smg.name=9mm 조립 +item.assembly_steel.name=리드 총알 어셈블리 +item.assembly_template.name=어셈블리 템플릿: +item.assembly_uzi.name=.22 LR 어셈블리 +item.attachment_mask.name=방독면 부착 가능 +item.attachment_mask_mono.name=일산화탄소 마스크 부착 가능 +item.australium_iii.name=마크 III 라이프 익스텐더 +item.australium_iv.name=마크 IV 라이프 익스텐더 +item.australium_v.name=마크 V 라이프 익스텐더 +item.back_tesla.name=후면 장착 테슬라 코일 +item.balefire_and_ham.name=햄과 베일파이어 계란 +item.balefire_and_steel.name=베일파이어와 강철 +item.balefire_scrambled.name=스크램블 베일파이어 에그 +item.ballistite.name=발리스타이트 +item.bandaid.name=벨벳 반창고 +item.bathwater.name=독성 비눗물 +item.bathwater_mk2.name=독성 비눗물(말 향) +item.bathwater_mk3.name=최고급 체르노빌 목욕물(멜트다운 향) +item.battery_advanced.name=고급 배터리 +item.battery_advanced_cell.name=고급 파워 셀 +item.battery_advanced_cell_12.name=Twelffold Advanced Power Cell +item.battery_advanced_cell_4.name=쿼드러플 어드밴스드 파워 셀 +item.battery_creative.name=무한 배터리 +item.battery_generic.name=배터리 +item.battery_lithium.name=리튬 이온 배터리 +item.battery_lithium_cell.name=리튬 이온 파워 셀 +item.battery_lithium_cell_3.name=트리플 리튬 이온 파워 셀 +item.battery_lithium_cell_6.name=6중 리튬 이온 파워 셀 +item.battery_potato.name=감자 전지 +item.battery_potatos.name=PotatOS +item.battery_red_cell.name=레드스톤 파워셀 +item.battery_red_cell_24.name=24겹 레드스톤 파워 셀 +item.battery_red_cell_6.name=6중 레드스톤 파워 셀 +item.battery_sc_americium.name=자가 충전 Americium-241 배터리 +item.battery_sc_balefire.name=자체 충전 Balefire-XXX 배터리 +item.battery_sc_gold.name=자가 충전 Gold-198 배터리 +item.battery_sc_lead.name=자체 충전 Lead-209 배터리 +item.battery_sc_plutonium.name=자가 충전 플루토늄-238 배터리 +item.battery_sc_polonium.name=자가 충전 폴로늄-210 배터리 +item.battery_sc_technetium.name=자가 충전 Technetium-99 배터리 +item.battery_sc_uranium.name=자가 충전 우라늄-238 배터리 +item.battery_schrabidium.name=슈라비디움 배터리 +item.battery_schrabidium_cell.name=슈라비디움 파워 셀 +item.battery_schrabidium_cell_2.name=더블 슈라비디움 파워 셀 +item.battery_schrabidium_cell_4.name=쿼드러플 슈라비디움 파워 셀 +item.battery_spark.name=스파크 배터리 +item.battery_spark_cell_100.name=스파크 신비한 에너지 저장 장치 +item.battery_spark_cell_1000.name=Spark Arcane Mass-Energy 공허 +item.battery_spark_cell_10000.name=스파크 솔리드 시공간 크리스탈 +item.battery_spark_cell_25.name=Spark Arcane 자동차 배터리 +item.battery_spark_cell_2500.name=Spark Arcane Dirac Sea +item.battery_spark_cell_6.name=스파크 파워 셀 +item.battery_spark_cell_power.name=Spark Ludicrous Physics 무시 에너지 저장 장치 +item.battery_steam.name=증기 동력 에너지 저장 탱크 +item.battery_steam_large.name=대형 증기 동력 에너지 저장 탱크 +item.battery_su.name=SU 배터리 +item.battery_su_l.name=대형 SU 배터리 +item.battery_trixite.name=오프 브랜드 스파크 배터리 +item.beta.name=베타 기능 item.big_sword.name=대검 -item.test_nuke_igniter.name=점화기 -item.test_nuke_propellant.name=추진제 -item.test_nuke_tier1_shielding.name=중성자 반사경(Tier 1) -item.test_nuke_tier2_shielding.name=중성자 반사경(Tier 2) -item.test_nuke_tier1_bullet.name=U235 발사체(티어 1) -item.test_nuke_tier2_bullet.name=MOX 발사체(2단계) -item.test_nuke_tier1_target.name=아임계 U235 대상(계층 1) -item.test_nuke_tier2_target.name=아임계 MOX 표적(계층 2) - -item.gadget_explosive.name=1세대 폭발성 렌즈 -item.gadget_explosive8.name=1세대 내파 추진제 묶음 -item.gadget_wireing.name=배선 -item.gadget_core.name=플루토늄 코어 - +item.billet_ac227.name=악티늄-227 빌렛 +item.billet_am241.name=아메리슘-241 빌릿 +item.billet_am242.name=아메리슘-242 빌렛 +item.billet_am_mix.name=원자로 등급 Americium Billet +item.billet_americium_fuel.name=아메리슘 연료 빌릿 +item.billet_au198.name=골드-198 빌렛 +item.billet_australium.name=오스트랄륨 빌렛 +item.billet_australium_greater.name=오스트랄륨-406 빌릿 +item.billet_australium_lesser.name=오스트랄륨-405 빌릿 +item.billet_balefire_gold.name=플래시골드 빌릿 +item.billet_beryllium.name=베릴륨 빌릿 +item.billet_bismuth.name=비스무트 빌렛 +item.billet_co60.name=코발트-60 빌릿 +item.billet_flashlead.name=플래시리드 빌렛 +item.billet_gh336.name=Ghiorsium-336 빌렛 +item.billet_hes.name=고농축 Schrabidium 연료 빌릿 +item.billet_les.name=저농축 Schrabidium 연료 빌렛 +item.billet_mox_fuel.name=MOX 연료 빌렛 +item.billet_neptunium.name=넵투늄-237 빌렛 +item.billet_neptunium_fuel.name=넵투늄 연료 빌릿 +item.billet_nuclear_waste.name=핵 폐기물 빌릿 +item.billet_pb209.name=리드-209 빌렛 +item.billet_plutonium.name=플루토늄 빌릿 +item.billet_plutonium_fuel.name=플루토늄 연료 빌릿 +item.billet_po210be.name=Po210Be 빌릿 +item.billet_polonium.name=폴로늄-210 빌릿 +item.billet_pu238.name=플루토늄-238 빌릿 +item.billet_pu238be.name=Pu238Be 빌릿 +item.billet_pu239.name=플루토늄-239 빌렛 +item.billet_pu240.name=플루토늄-240 빌릿 +item.billet_pu241.name=플루토늄-241 빌릿 +item.billet_pu_mix.name=원자로 등급 플루토늄 빌릿 +item.billet_ra226.name=라듐-226 빌렛 +item.billet_ra226be.name=Ra226Be 빌릿 +item.billet_schrabidium.name=Schrabidium-326 빌렛 +item.billet_schrabidium_fuel.name=Schrabidium 연료 빌릿 +item.billet_solinium.name=솔리늄-327 빌릿 +item.billet_sr90.name=스트론튬-90 빌렛 +item.billet_technetium.name=테크네튬-99 빌렛 +item.billet_th232.name=토륨-232 빌렛 +item.billet_thorium_fuel.name=토륨 연료 빌릿 +item.billet_u233.name=우라늄-233 빌릿 +item.billet_u235.name=우라늄-235 빌렛 +item.billet_u238.name=우라늄-238 빌릿 +item.billet_unobtainium.name=언옵티늄 중성자 빌렛 +item.billet_uranium.name=우라늄 빌렛 +item.billet_uranium_fuel.name=우라늄 연료 빌릿 +item.billet_yharonite.name=야로나이트 빌렛 +item.billet_zfb_am_mix.name=아메리슘 ZFB 빌렛 +item.billet_zfb_bismuth.name=비스무트 ZFB 빌릿 +item.billet_zfb_pu241.name=Pu-241 ZFB 빌릿 +item.billet_zirconium.name=지르코늄 빌릿 +item.bio_wafer.name=바이오 웨이퍼 +item.biomass.name=바이오매스 +item.biomass_compressed.name=압축 바이오매스 +item.bismuth_pickaxe.name=비스무트 곡괭이 +item.bismuth_tool.name=자기 추출기 +item.bj_boots.name=달의 박힌 장화 +item.bj_helmet.name=열 센서가 있는 안대 +item.bj_legs.name=달 사이버네틱 다리 교체 +item.bj_plate.name=달 사이버네틱 도금 +item.bj_plate_jetpack.name=달 사이버네틱 도금(날개형) +item.black_diamond.name=블랙 다이아몬드 +item.black_hole.name=미니어처 블랙홀 +item.blade_meteorite.name=운석 블레이드 +item.blade_titanium.name=티타늄 블레이드 +item.blade_tungsten.name=텅스텐 강화 블레이드 +item.blades_advanced_alloy.name=고급 슈레더 ​​블레이드 +item.blades_aluminium.name=알루미늄 슈레더 블레이드 +item.blades_aluminum.name=알루미늄 슈레더 블레이드 +item.blades_combine_steel.name=CMB 슈레더 블레이드 +item.blades_desh.name=데쉬 슈레더 블레이드 +item.blades_gold.name=골든 슈레더 블레이드 +item.blades_iron.name=철 분쇄기 블레이드 +item.blades_schrabidium.name=슈라비디움 슈레더 블레이드 +item.blades_steel.name=강철 슈레더 블레이드 +item.blades_titanium.name=티타늄 슈레더 블레이드 +item.board_copper.name=구리 패널 +item.bobmazon_hidden.name=숨겨진 카탈로그 +item.bobmazon_machines.name=Vault-tec 지원: 블록 및 기계 +item.bobmazon_materials.name=Vault-tec 지원: 재료 +item.bobmazon_tools.name=Vault-tec 지원: 도구 +item.bobmazon_weapons.name=Vault-tec 지원: 무기 및 폭발물 +item.bolt_compound.name=강화 터빈 샤프트 +item.bolt_dura_steel.name=고속 강철 볼트 +item.bolt_tungsten.name=텅스텐 볼트 +item.bomb_caller.name=공습 지정자 +item.bomb_waffle.name=대량 파괴의 와플 +item.book_guide_book.name=가이드북 +item.book_of_.name=박스카의 책 +item.book_secret.name=3-596-50802-9 +item.bottle2_empty.name=빈 병 +item.bottle2_fritz.name=프리츠 콜라 +item.bottle2_fritz_special.name=최초의 프리츠 콜라 +item.bottle2_korl.name=콜 +item.bottle2_korl_special.name=더 퍼스트 콜 +item.bottle2_sunset.name=선셋 사르사파릴라 +item.bottle_cherry.name=누카 체리 병 +item.bottle_empty.name=빈 폭탄 모양의 병 +item.bottle_mercury.name=수은의 병 +item.bottle_nuka.name=누카 콜라 병 +item.bottle_opener.name=Hbm 자체 제작 병따개 +item.bottle_quantum.name=누카 콜라 퀀텀 병 +item.bottle_rad.name=에스콜라 RAD 한 병 +item.bottle_sparkle.name=에스콜라 한병 +item.boy_bullet.name=U235 발사체 item.boy_igniter.name=폭탄 점화기 +item.boy_kit.name=리틀 보이 키트 item.boy_propellant.name=추진제 -item.boy_bullet.name=U235 발사체 -item.boy_target.name=아임계 U235 표적 item.boy_shielding.name=중성자 차폐 - -item.man_explosive.name=폭발성 렌즈 -item.man_explosive8.name=내파 추진제 묶음 -item.man_igniter.name=폭탄 점화기 -item.man_core.name=플루토늄 코어 - -item.mike_core.name=우라늄 코팅된 중수소 탱크 -item.mike_deut.name=중수소 탱크 -item.mike_cooling_unit.name=중수소 냉각 장치 - -item.tsar_core.name=차르 봄바 코어 - -item.fleija_igniter.name=펄스 점화기 -item.fleija_propellant.name=슈라비듐 추진제 -item.fleija_core.name=FLEIJA 우라늄 235 충전 - -item.solinium_igniter.name=SOL 펄스 점화기 -item.solinium_propellant.name=SOL 압축 충전 -item.solinium_core.name=반안정 솔리늄 코어 - -item.n2_charge.name=대형 폭발물 - -item.egg_balefire_shard.name=베일파이어 파편 -item.egg_balefire.name=베일파이어 알 -item.egg_balefire.desc=방사성 알을 낳는 새는 어떤 종류인가요? - -item.custom_tnt.name=맞춤형 핵폭발물 -item.custom_nuke.name=맞춤형 핵 핵막대 -item.custom_hydro.name=맞춤형 핵무기 수소 막대 -item.custom_amat.name=커스텀 Nuke 베일파이어 막대 -item.custom_dirty.name=커스텀 Nuke 더티 막대 -item.custom_schrab.name=커스텀 Nuke 슈라비듐 막대 -item.custom_sol.name=맞춤형 핵무기 솔리늄 막대 -item.custom_euph.name=맞춤형 핵폭탄 방지 막대 -item.custom_fall.name=맞춤형 Nuke Drop 업그레이드 - -container.nukeGadget=가제트 -container.nukeBoy=리틀보이 -container.nukeMan=팻맨 -container.nukeMike=아이비 마이크 -container.nukeTsar=차르 봄바 -container.nukeFleija=플레이야 -container.nukePrototype=프로토타입 -container.nukeCustom=커스텀 핵 -container.nukeSolinium=블루 린스 -container.nukeN2=N² 광산 -container.nukeN45=N45 해군 지뢰 -container.nukeFstbmb=베일파이어 폭탄 -container.bombMulti=다목적 폭탄 - -container.turretChekhov=체호프의 총 -container.turretFriendly=미스터 프렌들리 -container.turretFritz=프리츠 -container.turretHoward=하워드 -container.turretJeremy=제레미 -container.turretMaxwell=맥스웰 -container.turretRichard=리차드 -container.turretTauon=타우온 - -tile.spinny_light.name=스피니 라이트 - -tile.nuke_gadget.name=가제트 -tile.nuke_boy.name=리틀보이 -tile.nuke_man.name=팻맨 -tile.nuke_mike.name=아이비 마이크 -tile.nuke_tsar.name=차르 봄바 -tile.nuke_fleija.name=플레이야 -tile.nuke_prototype.name=프로토타입 -tile.nuke_custom.name=커스텀 핵 -tile.nuke_solinium.name=블루 린스 -tile.nuke_n2.name=N² 광산 -tile.nuke_n45.name=N45 해군 지뢰 -tile.nuke_fstbmb.name=베일파이어 폭탄 - -tile.mush_block.name=성장한 빛나는 버섯 -tile.mush_block_stem.name=자란 빛나는 버섯 줄기 - -tile.energy_ball.name=에너지볼 - -tile.bomb_multi.name=다목적 폭탄 -tile.rejuvinator.name=회춘 장치 - -tile.flame_war.name=상자 속의 불꽃 전쟁 -tile.float_bomb.name=공중부양 폭탄 -tile.therm_endo.name=흡열 폭탄 -tile.therm_exo.name=발열 폭탄 -tile.emp_bomb.name=EMP 장치 - -tile.crashed_bomb.name=더드 -tile.boxcar.name=유개화차 -tile.brick_asbestos.name=석면 벽돌 -tile.boat.name=보트 -tile.bomber.name=추락한 폭격기 - -tile.pink_log.name=핑크 로그 -tile.pink_planks.name=분홍색 나무 판자 -tile.pink_slab.name=핑크 우드 슬라브 -tile.pink_stairs.name=핑크색 나무 계단 -tile.turret_cheapo.name=싸구려 개틀링 센트리 -tile.turret_chekhov.name=중기관총 포탑 "체호프의 총" -tile.turret_cwis.name=팔랑크스 Mk-15 CIWS -tile.turret_flamer.name=화염방사기 포탑 -tile.turret_friendly.name=체인건 터렛 "미스터 프렌들리" -tile.turret_fritz.name=중화염방사기 포탑 "프리츠" -tile.turret_heavy.name=중기관총 포탑 -tile.turret_howard.name=골키퍼 트윈 체인건 CIWS "하워드" -tile.turret_howard_damaged.name=골키퍼 트윈 체인건 CIWS "예루살렘" -tile.turret_jeremy.name=기관포 포탑 "제레미" -tile.turret_light.name=경기관총 포탑 -tile.turret_maxwell.name=고에너지 MASER 터렛 "맥스웰" -tile.turret_rocket.name=로켓 포탑 -tile.turret_richard.name=로켓 발사기 포탑 "리차드" -tile.turret_spitfire.name=중포 포탑 -tile.turret_tau.name=타우온 포탑 -tile.turret_tauon.name=XVL1456 프로토타입 포탑 "타우온" -tile.machine_radar.name=레이더 -container.radar=레이더 -tile.machine_forcefield.name=역장 방출기 -container.forceField=역장 방출기 -tile.machine_satlinker.name=위성 ID 관리자 -container.satLinker=SatLink 장치 -tile.machine_telelinker.name=터렛 원격 측정 링커 -container.teleLinker=TelLink 장치 -tile.railgun_plasma.name=레일건 -container.railgun=레일건 -tile.machine_catalytic_cracker.name=촉매분해탑 - -tile.control_panel0.name=제어판 - -item.turret_control.name=터렛 컨트롤러 -item.turret_chip.name=터렛 AI 칩 -item.turret_biometry.name=터렛 원격 측정 카드 - -item.mirror_tool.name=거울 조정 도구 -item.mirror_tool.linked=정렬 위치가 설정되었습니다! -item.mirror_tool.desc=위치를 기억하려면 보일러를 마우스 오른쪽 버튼으로 클릭하세요. $거울을 클릭하면 보일러를 향하게 됩니다. - -item.key.name=열쇠 -item.key_red.name=레드 키 -item.key_kit.name=키 모방 키트 -item.key_fake.name=위조 열쇠 -item.pin.name=바비 핀 -item.padlock_rusty.name=녹슨 자물쇠 -item.padlock.name=맹꽁이 자물쇠 -item.padlock_reinforced.name=강화된 자물쇠 -item.padlock_unbreakable.name=깨지지 않는 자물쇠 -tile.machine_keyforge.name=자물쇠 제조공 테이블 -container.keyForge=자물쇠 제조공 테이블 - -tile.mine_ap.name=대개인 지뢰 -tile.mine_he.name=대전차 지뢰 -tile.mine_shrap.name=파편 광산 -tile.mine_fat.name=지방 광산 -item.defuser.name=첨단 폭탄 해체 장치 -item.defuser_desh.name=Desh 하이테크 폭탄 해체 장치 - -tile.crate.name=보급 상자 -tile.crate_weapon.name=무기 상자 -tile.crate_lead.name=위험물 상자 -tile.crate_metal.name=기계 상자 -tile.crate_red.name=빨간 상자 -tile.crate_can.name=상자 보존 -tile.crate_ammo.name=스타메탈 상자 -tile.marker_structure.name=다중 블록 구조 마커 - -tile.struct_iter_core.name=핵융합로 핵심 구성요소 - -tile.balefire.name=큰 화톳불 - -tile.struct_launcher.name=발사대 구성 요소 블록 -tile.struct_scaffold.name=발사대 비계 블록 -tile.struct_launcher_core.name=컴팩트 런처 핵심 구성요소 -tile.struct_launcher_core_large.name=테이블 핵심 구성요소 실행 -tile.struct_soyuz_core.name=소유즈 런처 핵심 구성 요소 - -desc.gui.rtg.heat=§e현재 열 레벨: %s -desc.gui.rtgBFurnace.desc=열이 많을수록 최대 %S를 초과하는 더 빨리$열이 빠르면 효과가 없습니다$단기 펠릿은 부패 할 수 있습니다. -tile.machine_difurnace_ext.name=화로 증축 -tile.machine_difurnace_off.name=화로 -tile.machine_difurnace_on.name=화로 -tile.machine_difurnace_rtg_off.name=핵화로 -tile.machine_difurnace_rtg_on.name=핵화로 -container.diFurnace=화로 -container.diFurnaceRTG=핵화로 -tile.machine_centrifuge.name=원심분리기 -container.centrifuge=원심분리기 -tile.machine_gascent.name=가스 원심분리기 -container.gasCentrifuge=가스 원심분리기 -tile.machine_uf6_tank.name=육불화우라늄 탱크 -container.uf6_tank=UF6 탱크 -tile.machine_puf6_tank.name=육불화플루토늄 탱크 -container.puf6_tank=PuF6 탱크 -tile.machine_reactor.name=열 원자로 -tile.machine_reactor_on.name=열 원자로 -container.rbmkBoiler=RBMK 증기 채널 -container.rbmkControl=RBMK 제어봉 -container.rbmkControlAuto=RBMK 자동 제어봉 -container.rbmkOutgasser=RBMK 조사 채널 -container.rbmkReaSim=RBMK 연료봉(ReaSim) -container.rbmkRod=RBMK 연료봉 -container.reactor=열 원자로 -tile.machine_nuke_furnace_off.name=핵화로 -tile.machine_nuke_furnace_on.name=핵화로 -tile.rtg_polonium.name=PT 동위원소 세포 -container.nukeFurnace=원자력 발전로 -tile.machine_rtg_furnace_off.name=RTG로 -tile.machine_rtg_furnace_on.name=RTG로 -container.rtgFurnace=RTG로 -tile.machine_electric_furnace_off.name=전기로 -tile.machine_electric_furnace_on.name=전기로 -container.electricFurnace=전기로 -tile.machine_arc_furnace_off.name=아크로 -tile.machine_arc_furnace_on.name=아크로 -tile.machine_armor_table.name=방어구 수정표 -container.arcFurnace=아크로 -container.armorTable=방어구 수정표 -tile.machine_generator.name=원자로(구형) -container.generator=원자로 -container.hadron=입자 가속기 -tile.red_wire_coated.name=빨간색 구리 케이블 블록 -tile.red_wire_sealed.name=Rad 밀봉형 빨간색 구리 케이블 블록 -tile.cable_switch.name=전원 스위치 -tile.cable_diode.name=파워 다이오드 -tile.cable_diode.desc=처리량 제한 및 흐름 방향 제한$§e드라이버를 사용하여 처리량 증가$§e핸드 드릴을 사용하여 처리량 감소$§e디퓨저를 사용하여 네트워크 우선 순위 변경 -tile.cable_detector.name=레드스톤 전원 스위치 -tile.machine_deuterium.name=중수소 추출기 -container.machine_deuterium=중수소 추출기 -tile.machine_battery_potato.name=감자 배터리 블록 -tile.machine_battery.name=에너지 저장 블록 -tile.machine_lithium_battery.name=리튬이온 에너지 저장 블록 -tile.machine_saturnite_battery.name=새턴라이트 에너지 저장 블록 -tile.machine_desh_battery.name=Desh 에너지 저장 블록 -tile.machine_schrabidium_battery.name=슈라비듐 에너지 저장 블록 -tile.machine_euphemium_battery.name=유페미움 에너지 저장 블록 -tile.machine_radspice_battery.name=네오벨린 에너지 저장 블록 -tile.machine_dineutronium_battery.name=스파크 에너지 저장 블록 -tile.machine_electronium_battery.name=일렉트로늄 에너지 저장 블록 -tile.machine_fensu.name=펜수 -container.battery=에너지 저장 -tile.machine_coal_off.name=연소 발생기 -tile.machine_coal_on.name=연소 발생기 -container.machineCoal=연소 발생기 -tile.machine_boiler_off.name=보일러 -tile.machine_boiler_on.name=보일러 -tile.machine_boiler_electric_off.name=전기보일러 -tile.machine_boiler_electric_on.name=전기보일러 -tile.machine_boiler_rtg_off.name=RTG 보일러 -tile.machine_boiler_rtg_on.name=RTG 보일러 -container.machineBoiler=보일러 -container.machineElectricBoiler=전기보일러 -container.machineRTGBoiler=RTG 보일러 -container.machineITER=핵융합로 -container.machineLargeTurbine=산업용 증기 터빈 -tile.machine_large_turbine.name=산업용 증기 터빈 -tile.machine_turbine.name=증기 터빈 -container.machineTurbine=증기 터빈 -tile.launch_pad.name=미사일 발사대 -container.launchPad=미사일 발사대 -tile.compact_launcher.name=컴팩트 런치패드 -container.compactLauncher=컴팩트 런치패드 -tile.launch_table.name=대형 발사대 -container.launchTable=대형 발사대 -tile.soyuz_launcher.name=소유즈 출시 플랫폼 -container.soyuzLauncher=소유즈 출시 플랫폼 -tile.machine_missile_assembly.name=미사일 조립 스테이션 -container.missileAssembly=미사일 조립 스테이션 -tile.sat_dock.name=화물 착륙장 -container.satDock=화물 착륙장 -tile.book_guide.name=Hbm's Nuclear Tech Mod Manual [LEGACY] -tile.machine_schrabidium_transmutator.name=핵변환 장치 -container.machine_schrabidium_transmutator=핵변환 장치 -container.microwave=마이크로파 -tile.machine_diesel.name=디젤 발전기 -container.machineDiesel=디젤 발전기 -tile.machine_shredder.name=슈레더 -container.machineShredder=슈레더 -tile.machine_combine_factory.name=CMB 강철로 -container.machineCMB=CMB 강철로 -tile.machine_teleporter.name=텔레포터 -container.teleporter=텔레포터 -tile.machine_reix_mainframe.name=Rei-X 메인프레임(WIP) -container.reix=Rei-X 메인프레임 -tile.machine_industrial_generator.name=산업용 발전기 -container.iGenerator=산업용 발전기 -tile.machine_cyclotron.name=사이클로트론 -tile.machine_detector.name=전력검출기 -container.cyclotron=사이클로트론 -tile.machine_well.name=오일 데릭 -container.plasmaHeater=플라즈마 히터 -tile.machine_pumpjack.name=펌프잭 -tile.oil_pipe.name=원유 추출 파이프 -container.oilWell=오일 데릭 -container.pumpjack=펌프잭 -tile.machine_refinery.name=정유 공장 -container.machineRefinery=정유 공장 -tile.oil_duct.name=오일 파이프 -tile.oil_duct_solid.name=코팅 오일 파이프 -tile.machine_flare.name=가스 플레어 -container.gasFlare=가스 플레어 -tile.gas_duct.name=가스관 -tile.gas_duct_solid.name=코팅된 가스 파이프 -tile.machine_drill.name=자동 채굴 드릴 -container.miningDrill=자동 채굴 드릴 -tile.drill_pipe.name=드릴 파이프 -tile.machine_assembler.name=조립 기계 -container.assembler=조립 기계 -tile.machine_chemplant.name=화학 공장 -container.chemplant=화학 공장 -tile.machine_chemfac.name=화학공장 -container.machineChemFac=화학공장 -tile.fluid_duct.name=범용 유체 덕트 [감가 상각] -tile.fluid_duct_mk2.name=범용 유체 덕트 -tile.machine_fluidtank.name=탱크 -item.fluid_duct.name=유체 덕트: -item.ff_fluid_duct.name=유체 덕트: -container.fluidtank=탱크 -tile.machine_turbofan.name=터보팬 -tile.machine_turbofan.desc=§e등유를 태워 에너지를 생산합니다 -container.machineTurbofan=터보팬 -tile.crate_iron.name=철 상자 -container.crateTungsten=텅스텐 상자 -tile.crate_jungle.name=에나르가이트 상자 -container.crateIron=철 상자 -tile.crate_steel.name=강철 상자 -tile.crate_tungsten.name=텅스텐 상자 -container.crateSteel=강철 상자 -tile.crate_desh.name=데쉬 상자 -container.crateDesh=데쉬 상자 -tile.safe.name=안전한 -tile.sand_polonium.name=폴로늄 모래 -container.safe=안전한 -tile.machine_press.name=버너프레스 -container.press=버너프레스 -tile.machine_epress.name=전기프레스 -container.epress=전기프레스 -tile.machine_siren.name=사이렌 -container.siren=사이렌 -tile.machine_radgen.name=방사선 구동 엔진 -container.radGen=방사선 구동 엔진 -tile.machine_selenium.name=방사형 성능 엔진 -container.machineSelenium=방사형 성능 엔진 -tile.machine_reactor_small.name=원자로 -container.reactorSmall=원자로 -tile.machine_controller.name=리액터 원격 제어 블록 -container.reactorControl=리액터 원격 제어 블록 -tile.soyuz_capsule.name=화물 착륙 캡슐 -container.soyuzCapsule=화물 착륙 캡슐 -tile.machine_crystallizer.name=광석 산성화제 -container.crystallizer=광석 산성화제 -tile.machine_mining_laser.name=마이닝 레이저 -container.miningLaser=마이닝 레이저 -tile.barricade.name=모래주머니 -tile.machine_solar_boiler.name=솔라 타워 보일러 -tile.machine_solar_boiler.desc=헬리오스타트 거울의 햇빛을 사용하여 유체를 가열합니다. -tile.solar_mirror.name=헬리오스타트 거울 -container.machineSILEX=사일렉스 -container.machineFEL=펠 - -tile.heater_firebox.name=화실 -tile.heater_firebox.desc=고체 연료를 태워 열을 발생시킵니다. -tile.heater_oilburner.name=유체 버너 -tile.heater_oilburner.desc=유체를 연소시켜 열을 발생시킵니다.$§e스크류드라이버를 사용하여 처리량을 증가시킵니다.$§e수동 드릴을 사용하여 처리량을 감소시킵니다. -tile.heater_oven.name=가열 오븐 -tile.heater_oven.desc=고체 연료를 연소하여 열을 생성합니다.$50%의 효율로 바닥의 열을 흡수합니다. -tile.furnace_steel.name=강철로 -tile.furnace_iron.name=철로 -tile.furnace_iron.desc=더 크고 효율적인 화로는 유휴 상태에서도 연료를 낭비하지 않습니다. - -tile.heat_boiler.name=대형보일러 -tile.heat_boiler.desc=물을 끓이거나 기름을 가열할 수 있는 대형 보일러.$외부 열원이 필요합니다.$열전달률: ΔT*0.01 TU/t -tile.furnace_steel.desc=광석을 제련할 때 보너스 아이템$을 제공할 수 있는 초대형 용광로입니다. 외부 열원이 필요합니다.$열 전달률: ΔT*0.05 TU/t$(Δ는 차이를 의미하고 T는 온도를 의미함) -container.heater_firebox=화실 -container.heaterOven=가열 오븐 -container.heaterOilburner=유체 버너 -container.furnaceIron=철로 - -tile.heater_heatex.name=열교환 히터 -tile.heater_heatex.desc=뜨거운 유체에서 열을 생성합니다. - -tile.heater_electric.name=전기 히터 -tile.heater_electric.desc=에너지를 사용하여 열을 생산합니다.$85%의 효율로 하부의 열을 수용합니다.$스크류 드라이버 및 핸드 드릴로 구성할 수 있습니다. - -tile.barrel_plastic.name=세이프 배럴™ -tile.barrel_corroded.name=부식된 통 -tile.barrel_iron.name=철통 -tile.barrel_steel.name=강철 배럴 -tile.barrel_antimatter.name=자기 반물질 용기 -container.barrel=통 - -tile.broadcaster_pc.name=타락한 브로드캐스터 - -tile.tesla.name=테슬라 코일 -tile.radiobox.name=로젠버그 해충 방제 상자 -tile.pribris.name=RBMK 잔해 -tile.pribris_burning.name=불타는 RBMK 잔해 -tile.pribris_digamma.name=검게 변한 RBMK 잔해 -tile.pribris_radiating.name=연기가 나는 RBMK 잔해 -tile.radiorec.name=고장난 FM 라디오 -container.radiobox=FM 송신기 -container.radiorec=FM 라디오 - -tile.rbmk_storage.name=RBMK 저장 컬럼 -tile.rbmk_storage.desc=§eRBMK 연료봉 또는 조사 채널용 초방사성 물품을 저장하는 데 사용됩니다 -tile.rbmk_absorber.name=RBMK 붕소 중성자 흡수체 -tile.rbmk_absorber.desc=§e유입 플럭스를 모두 흡수합니다. $§e유입 플럭스를 정지시킬 때 사용합니다. -tile.rbmk_blank.name=RBMK 구조 기둥 -tile.rbmk_blank.desc=§eRBMK의 예열 및 냉각 속도를 느리게 합니다.$§e그리고 원자로의 열을 더 빠르게 풀어줍니다 -tile.rbmk_boiler.name=RBMK 증기 채널 -tile.rbmk_boiler.desc=§e온도가 충분히 높으면 물을 증기로 변환합니다.$§eRBMK 유체 로더와 함께 사용 -tile.rbmk_console.name=RBMK 콘솔 -tile.rbmk_console.desc=§6뒷면에 레드스톤 포트를 사용하여 제어봉 설정$§e파워 1-15는 제어봉을 100-0%로 설정$§e그래서 15는 AZ-5와 같이 작용합니다 -tile.rbmk_control.name=RBMK 제어봉 -tile.rbmk_control.desc=§e통과하는 플럭스의 양을 제어하는 데 사용됩니다 -tile.rbmk_control_auto.name=RBMK 자동 제어봉 -tile.rbmk_control_auto.desc=§e온도에 따라 자동으로 제어봉 삽입을 조절할 수 있습니다 -tile.rbmk_control_mod.name=RBMK 조정 제어봉 -tile.rbmk_control_mod.desc=§e일반 컨트롤 로드와 동일하지만 통과하는 모든 빠른 플럭스를 느린 플럭스로 변환합니다. -tile.rbmk_loader.name=RBMK 유체 로더 -tile.rbmk_moderator.name=RBMK 흑연 감속재 -tile.rbmk_moderator.desc=§e통과하는 모든 빠른 플럭스를 느린 플럭스로 변환합니다 -tile.rbmk_outgasser.name=RBMK 조사 채널 -tile.rbmk_outgasser.desc=§e유입되는 플럭스를 흡수하고 그것으로 핵과학을 합니다. -tile.rbmk_reflector.name=RBMK 텅스텐 카바이드 중성자 반사경 -tile.rbmk_reflector.desc=§e이것은 중성자가 왔던 방향으로 플럭스를 반사합니다. -tile.rbmk_rod.name=RBMK 연료봉 -tile.rbmk_rod.desc=§a이것은 많은 열을 방출할 수 있는 RBMK 연료봉를 고정합니다. -tile.rbmk_rod_mod.name=RBMK 감속 연료봉 -tile.rbmk_rod_mod.desc=§aRBMK 연료봉와 동일하지만 유입되는 빠른 플럭스가 느린 플럭스로 변환됩니다. -tile.rbmk_rod_reasim.name=RBMK 연료봉(ReaSim) -tile.rbmk_rod_reasim.desc=§aRBMk 연료봉과 동일하지만 모든 수평 방향으로 무작위로 플럭스를 보냅니다. -tile.rbmk_rod_reasim_mod.name=RBMK 감속 연료봉(ReaSim) -tile.rbmk_rod_reasim_mod.desc=§aRBMK 연료봉(ReaSim)과 동일하지만 유입되는 빠른 플럭스는 느린 플럭스로 변환됩니다. -tile.rbmk_steam_inlet.name=RBMK ReaSim 물 유입구 -tile.rbmk_steam_outlet.name=RBMK ReaSim 스팀 콘센트 -tile.rbmk_cooler.name=RBMK 비상냉동고 -tile.rbmk_cooler.desc=§e컬럼 온도가 750°C 이상이 되면 cryogel을 사용하여 RBMK 채널을 빠르게 냉각하기 시작합니다.$§e용해 전에 시간을 벌기 위해 사용되므로 AZ-5를 누를 수 있습니다. -tile.rbmk_heater.name=RBMK 유체 히터 -tile.rbmk_heater.desc=§e액체를 끓이는 데 사용됩니다.$§e열이 끓이는 액체의 온도보다 높으면 열을 이용하여 액체를 전환합니다.$§e열교환히터는 열을 전달하고 시원한 액체를 되찾는 데 사용됩니다. - -tile.red_pylon.name=전주 -tile.red_pylon.desc=§6연결 형태: §eSingle$§6연결 범위: §e25m -item.wiring_red_copper.name=케이블 드럼 - -tile.red_pylon_large.name=대형 전력탑 -tile.red_pylon_large.desc=§6연결 유형: §e4 중$§6연결 범위: §e100m$§6이 Pylon은 변전소가 필요합니다! - -tile.substation.name=지서 -tile.substation.desc=§6연결 유형: §e4 중$§6연결 범위: §e20m - -item.wiring_red_copper.name=케이블 드럼 - -tile.rail_highspeed.name=고속 철도 -tile.rail_booster.name=고속 부스터 레일 - -tile.factory_titanium_hull.name=기본 공장 케이싱 -tile.factory_titanium_furnace.name=기본 공장 접근 해치 -tile.factory_titanium_conductor.name=기본 공장 전기 포트 -tile.factory_titanium_core.name=기본 공장 핵심 구성 요소 -item.factory_core_titanium.name=기본 공장 에너지 클러스터 -container.factoryTitanium=기본공장 -tile.factory_advanced_hull.name=고급 공장 케이싱 -tile.factory_advanced_furnace.name=고급 공장 접근 해치 -tile.factory_advanced_conductor.name=첨단공장 전기포트 -tile.factory_advanced_core.name=고급 공장 핵심 구성 요소 -item.factory_core_advanced.name=첨단공장에너지클러스터 -container.factoryAdvanced=첨단공장 - -tile.reactor_element.name=반응기 챔버 -tile.reactor_control.name=제어봉 -tile.reactor_hatch.name=원자로 접근 해치 -tile.reactor_ejector.name=원자로 폐기물 배출기 -tile.reactor_inserter.name=원자로 연료 주입기 -tile.reactor_conductor.name=원자로 보일러 -tile.reactor_computer.name=원자로 제어 -container.reactorLarge=대형 원자로 - -tile.fusion_conductor.name=초전도 자석 -tile.fusion_center.name=중앙 자석 조각 -tile.fusion_motor.name=자석 모터 조각 -tile.fusion_heater.name=플라즈마 히터 구성 요소 -tile.struct_plasma_core.name=플라즈마 히터 핵심 부품 -tile.fusion_hatch.name=핵융합로 접근 해치 -tile.fusion_core_block.name=핵융합로 제어 -tile.plasma.name=혈장 -tile.plasma_heater.name=플라즈마 히터 -container.fusionMultiblock=대형 핵융합로 - -tile.watz_element.name=와츠 반응 챔버 -tile.watz_control.name=강화된 제어봉 -tile.watz_cooler.name=Watz 원자로 과냉각기 -tile.watz_end.name=Watz 원자로 안정성 요소 -tile.watz_hatch.name=Watz 원자로 접근 해치 -tile.watz_conductor.name=와츠 전기 포트 -tile.watz_core.name=Watz 원자로 제어 -container.watzPowerplant=와츠 발전소 - -tile.fwatz_conductor.name=SAFE 초전도 자석 선체 -tile.fwatz_cooler.name=재생 냉각수 유체 탱크 라디에이터 -tile.fwatz_tank.name=재생 냉각수 유체 탱크 -tile.fwatz_scaffold.name=SAFE 구조적 지원 -tile.fwatz_hatch.name=SAFE 플랜트 접근 해치 -tile.fwatz_computer.name=특이점-반융합-실험 매트릭스 -tile.fwatz_core.name=특이점-반핵융합 실험로(SAFE) -tile.fwatz_plasma.name=융합 항스크라비디움 플라즈마 -container.fusionaryWatzPlant=특이점-반융합-실험 - -tile.machine_rtg_grey.name=RTG 생성기 -container.rtg=RTG 생성기 -tile.machine_rtg_red.name=폭발 발생기 -tile.machine_rtg_orange.name=강력한 RT 생성기 -tile.machine_rtg_yellow.name=오스트레일륨 초연료 원자로 -tile.machine_rtg_green.name=Verticium 자산 생성기 -tile.machine_rtg_cyan.name=슈라비듐 붕괴 발생기(WIP) -tile.machine_rtg_blue.name=대류 발생기 -tile.machine_rtg_purple.name=반물질 소멸 생성기 - -tile.machine_waste_drum.name=사용후 연료 풀 드럼 -tile.machine_waste_drum.desc=사용후연료를 냉각시킵니다. 적어도 한쪽에는 물이 필요합니다. 측면에 물이 많을수록 속도가 빨라집니다. -container.wasteDrum=사용후 연료 풀 드럼 - -tile.machine_spp_bottom.name=ZPE 전위 발생기(하단) -tile.machine_spp_top.name=ZPE 전위 발생기(상단) - -tile.ams_limiter.name=AMS Stabilizer [WIP] -container.amsLimiter=AMS Stabilizer [WIP] -tile.ams_emitter.name=AMS Emitter [WIP] -container.amsEmitter=AMS Emitter [WIP] -tile.ams_base.name=AMS Base [WIP] -container.amsBase=AMS Base [WIP] - -tile.hadron_analysis.name=입자 가속기 분석 챔버 벽 -tile.hadron_analysis_glass.name=입자 가속기 분석 챔버 창 -tile.hadron_coil_alloy.name=조밀한 초전도 코일 -tile.hadron_coil_chlorophyte.name=조밀한 엽록소 코일 -tile.hadron_coil_gold.name=조밀한 금 코일 -tile.hadron_coil_magtung.name=고밀도 4000K 초전도체 코일 -tile.hadron_coil_mese.name=조밀한 메세 코일 -tile.hadron_coil_neodymium.name=고밀도 네오디뮴 코일 -tile.hadron_coil_schrabidate.name=조밀한 슈라비데이트 코일 -tile.hadron_coil_schrabidium.name=조밀한 슈라비딕 코일 -tile.hadron_coil_starmetal.name=조밀한 스타메탈 코일 -tile.hadron_diode.name=쇼트키 입자 다이오드 -tile.hadron_plating.name=입자 가속기 도금 -tile.hadron_plating_black.name=입자가속기 도금(검은색) -tile.hadron_plating_blue.name=입자가속기 도금(청색) -tile.hadron_plating_glass.name=입자 가속기 도금(창) -tile.hadron_plating_striped.name=입자 가속기 도금(쿨 해저드 스트라이프) -tile.hadron_plating_voltz.name=입자 가속기 도금(VOLTZ) -tile.hadron_plating_yellow.name=입자가속기 도금(YelloDye) -tile.hadron_access.name=입자 가속기 접근 터미널 -tile.hadron_core.name=입자 가속기 핵심 구성 요소 -tile.hadron_power.name=입자 가속기 전원 플러그 - -tile.dfc_emitter.name=DFC 이미터 -container.dfcEmitter=DFC 이미터 -tile.dfc_receiver.name=DFC 수신기 -container.dfcReceiver=DFC 수신기 -tile.dfc_injector.name=DFC 연료 분사 장치 -container.dfcInjector=DFC 연료 분사 장치 -tile.dfc_stabilizer.name=DFC 안정제 -container.dfcStabilizer=DFC 안정제 -tile.dfc_core.name=DFC 코어 챔버 -container.dfcCore=DFC 코어 챔버 - -item.laser_crystal_nano.name=나노튜브 레이저 크리스탈 -item.laser_crystal_nano.desc=다결정 내부의 420km 길이의 탄소나노튜브 안테나 - -item.laser_crystal_pentacene.name=펜타센 레이저 크리스탈 -item.laser_crystal_pentacene.desc=고급 합금으로 코팅된 흥분된 펜타센 크리스탈 - -item.laser_crystal_co2.name=CO2-Desh 레이저 크리스탈 -item.laser_crystal_co2.desc=Crystalline Desh에 담긴 이산화탄소 - -item.laser_crystal_bismuth.name=비스무스 레이저 크리스탈 -item.laser_crystal_bismuth.desc=비스무트-사마륨-우라늄-토륨 결정 매트릭스 - -item.laser_crystal_cmb.name=크세논 레이저 크리스탈 -item.laser_crystal_cmb.desc=Lead-209-Starmetal 합금 격자에 매달린 Xenon135 - -item.laser_crystal_dem.name=악마 레이저 크리스탈 -item.laser_crystal_dem.desc=악마-기오르슘-결합 페르미온 초결정 - -item.laser_crystal_bale.name=베일 레이저 크리스탈 -item.laser_crystal_bale.desc=네오벨라인 케이싱의 베르티시움으로 코팅된 Balepellet - -item.laser_crystal_digamma.name=디감마 레이저 크리스탈 - - -wavelengths.name.radio=라디오 -wavelengths.name.micro=마이크로파 -wavelengths.name.ir=적외선 -wavelengths.name.visible=가시 광선 -wavelengths.name.uv=자외선 -wavelengths.name.xray=엑스레이 -wavelengths.name.gamma=감마 -wavelengths.name.drx=디감마 -wavelengths.waveRange.radio=>1m -wavelengths.waveRange.micro=1mm-1m -wavelengths.waveRange.ir=780nm-1mm -wavelengths.waveRange.visible=400nm-780nm -wavelengths.waveRange.uv=10nm-400nm -wavelengths.waveRange.xray=오후 9시 - 10시 -wavelengths.waveRange.gamma=<9pm -wavelengths.waveRange.drx=1916169 플랑크 길이 - -tile.digamma_matter.name=디감마리움 -tile.geysir_water.name=워터 간헐천 -tile.geysir_chlorine.name=클라우드 간헐천 -tile.geysir_vapor.name=증기 간헐천 -tile.geysir_nether.name=마그마 간헐천 -tile.stone_porous.name=다공성 돌 - -item.template_folder.name=머신 템플릿 폴더 -item.fluid_identifier.name=유체 식별자 -item.forge_fluid_identifier.name=유체 식별자 -item.assembly_template.name=어셈블리 템플릿: -item.chemistry_template.name=화학 템플릿: -item.siren_track.name=사이렌 트랙 - -item.bobmazon_materials.name=Vault-tec 지원: 재료 -item.bobmazon_machines.name=Vault-tec 지원: 블록 및 기계 -item.bobmazon_weapons.name=Vault-tec 지원: 무기 및 폭발물 -item.bobmazon_tools.name=Vault-tec 지원: 도구 -item.bobmazon_hidden.name=숨겨진 카탈로그 - -item.fuse.name=퓨즈 -item.arc_electrode.name=흑연 전극 -item.arc_electrode_burnt.name=용융 전극 -item.arc_electrode_desh.name=데쉬 전극 - -tile.test_nuke.name=핵무기 테스트 - -item.ingot_th232.name=토륨-232 주괴 -item.ingot_uranium.name=우라늄 주괴 -item.ingot_u233.name=우라늄-233 주괴 -item.ingot_u235.name=우라늄-235 주괴 -item.ingot_u238.name=우라늄-238 주괴 -item.ingot_u238m2.name=준안정 우라늄-238-2 주괴 -item.ingot_plutonium.name=플루토늄 주괴 -item.ingot_pu238.name=플루토늄-238 주괴 -item.ingot_pu239.name=플루토늄-239 주괴 -item.ingot_pu240.name=플루토늄-240 주괴 -item.ingot_polonium.name=폴로늄-210 주괴 -item.ingot_titanium.name=티타늄 주괴 -item.ingot_cobalt.name=코발트 주괴 -item.sulfur.name=황 -item.nugget_polonium.name=폴로늄-210 조각 -item.nugget_pu_mix.name=원자로 등급 플루토늄 덩어리 -item.powder_polonium.name=폴로늄-210 가루 -item.rod_polonium.name=폴로늄-210 막대 -item.rod_dual_polonium.name=폴로늄-210 이중 막대 -item.rod_quad_polonium.name=폴로늄-210 사중 막대 - -item.niter.name=니터 -item.ingot_copper.name=산업용 등급 구리 -item.ingot_red_copper.name=마인크래프트 등급 구리 -item.ingot_tungsten.name=텅스텐 잉곳 -# Yeah, aluminium. -um gang! -item.ingot_aluminium.name=알루미늄 잉곳 -item.fluorite.name=형석 -item.ingot_steel.name=강철 주괴 -item.plate_steel.name=강판 -item.ingot_beryllium.name=베릴륨 주괴 -item.plate_schrabidium.name=슈라비듐-326 플레이트 -item.ingot_schraranium.name=슈라라늄 주괴 -item.ingot_semtex.name=셈텍스 바 -item.ingot_schrabidium.name=슈라비듐-326 주괴 -item.nugget_schrabidium.name=슈라비듐-326 조각 -item.plate_copper.name=구리판 -item.board_copper.name=구리 패널 -item.ingot_advanced_alloy.name=고급 합금 주괴 -item.plate_advanced_alloy.name=고급 합금판 -item.wire_advanced_alloy.name=초전도체 -item.coil_advanced_alloy.name=초전도 코일 -item.coil_advanced_torus.name=초전도 링 코일 -item.coil_gold.name=골드 코일 -item.coil_gold_torus.name=황금 반지 코일 -item.ring_starmetal.name=§9스타메탈 링§r -item.lithium.name=리튬 큐브 -item.ingot_phosphorus.name=백린괴 -item.ingot_magnetized_tungsten.name=자화 텅스텐 주괴 -item.ingot_meteorite.name=운석 주괴 -item.ingot_meteorite_forged.name=단조 운석 주괴 -item.ingot_combine_steel.name=CMB 강철 주괴 -item.plate_combine_steel.name=CMB 강판 -item.wire_magnetized_tungsten.name=4000K 고온 초전도체 -item.coil_magnetized_tungsten.name=4000K 고온 초전도 코일 -item.plate_mixed.name=혼합 접시 -item.plate_paa.name=PaA 합금판 -item.ingot_dura_steel.name=고속도강 주괴 -item.ingot_polymer.name=폴리머 바 -item.ingot_bakelite.name=베이클라이트 바 -item.powder_bakelite.name=베이클라이트 가루 -tile.block_bakelite.name=베이클라이트 블록 -tile.block_rubber.name=고무 블록 -item.ingot_rubber.name=고무바 -tile.block_au198.name=금 블록-198 -item.bolt_dura_steel.name=고속 강철 볼트 -item.pipes_steel.name=강관 -item.drill_titanium.name=티타늄 드릴 -item.drax.name=테라 드릴 -item.drax_mk2.name=강화 테라 드릴 -item.drax_mk3.name=슈라비딕 테라 드릴 -item.bolt_tungsten.name=텅스텐 볼트 -item.bolt_compound.name=강화된 터빈 샤프트 -item.plate_polymer.name=절연체 -item.ingot_solinium.name=솔리늄-327 주괴 -item.nugget_solinium.name=솔리늄-327 조각 -item.photo_panel.name=태양광 패널 -item.sat_base.name=위성 기지 -item.thruster_nuclear.name=LV-N 핵 로켓 엔진 -item.sat_head_mapper.name=고이득 광학 카메라 -item.sat_head_scanner.name=M700 측량 스캐너 -item.sat_head_radar.name=레이더 접시 -item.sat_head_laser.name=죽음의 광선 -item.sat_head_resonator.name=제늄 공진기 - -item.ingot_australium.name=오스트레일륨 주괴 -item.ingot_weidanium.name=웨이다니늄 주괴 -item.ingot_reiium.name=레이움 주괴 -item.ingot_unobtainium.name=언옵테이늄 주괴 -item.ingot_daffergon.name=다퍼곤 주괴 -item.ingot_verticium.name=버티시움 주괴 -item.nugget_australium.name=오스트레일륨 덩어리 -item.nugget_australium_greater.name=오스트레일륨-406 조각 -item.nugget_australium_lesser.name=오스트레일륨-405 조각 -item.nugget_weidanium.name=웨이다니늄 조각 -item.nugget_reiium.name=레이움 조각 -item.nugget_unobtainium.name=언옵테이늄 조각 -item.nugget_daffergon.name=다퍼곤 조각 -item.nugget_verticium.name=버티시움 조각 - -item.ingot_desh.name=데쉬 주괴 -item.nugget_desh.name=데시 조각 -item.powder_desh.name=데쉬 파우더 -item.powder_desh_mix.name=데쉬 블렌드 -item.powder_desh_ready.name=DeshReady™ 블렌드 -item.powder_nitan_mix.name=니타늄 혼합물 -item.powder_spark_mix.name=스파크 블렌드 -item.ingot_dineutronium.name=디뉴트로늄 주괴 -item.powder_dineutronium.name=디뉴트로늄 가루 -item.nugget_dineutronium.name=디뉴트로늄 조각 -item.ingot_starmetal.name=§9Starmetal Ingot§r -item.ingot_saturnite.name=토성 주괴 -item.ingot_schrabidate.name=페릭 슈라비데이트 주괴 -item.plate_saturnite.name=토성판 -item.ingot_fiberglass.name=유리섬유 바 -item.ingot_arsenic.name=비소 주괴 -item.nugget_arsenic.name=비소 덩어리 -item.ingot_asbestos.name=석면 시트 -item.ingot_electronium.name=일렉트로늄 주괴 - -item.solid_fuel.name=고체연료 -item.rocket_fuel.name=고체 연료(로켓 추진제) -item.coke.name=콜라 -item.lignite.name=갈탄 -item.briquette_lignite.name=갈탄 연탄 -item.powder_lignite.name=갈탄가루 - -item.nugget_th232.name=토륨-232 덩어리 -item.nugget_u233.name=우라늄-233 덩어리 -item.nugget_u235.name=우라늄-235 덩어리 -item.nugget_u238.name=우라늄-238 조각 -item.nugget_pu238.name=플루토늄-238 조각 -item.nugget_pu239.name=플루토늄-239 조각 -item.nugget_pu240.name=플루토늄-240 조각 -item.nugget_pu241.name=플루토늄-241 조각 -item.plate_titanium.name=티타늄 플레이트 -item.plate_aluminium.name=알루미늄 판 -item.plate_armor_lunar.name=달의 도금 -item.plate_armor_ajr.name=철판 갑옷 도금 -item.plate_armor_titanium.name=티타늄 갑옷 판 -item.plate_armor_hev.name=반응성 장갑판 -item.hev_battery.name=정장 배터리 -item.wire_red_copper.name=빨간 구리선 -item.neutron_reflector.name=중성자 반사경 -item.nugget_beryllium.name=베릴륨 덩어리 - -item.crystal_iron.name=철 결정 -item.crystal_gold.name=금 결정 -item.crystal_redstone.name=레드스톤 결정 -item.crystal_lapis.name=청금석 결정 -item.crystal_diamond.name=다이아몬드 결정 -item.crystal_uranium.name=우라늄 결정 -item.crystal_thorium.name=토륨 결정 -item.crystal_plutonium.name=플루토늄 결정 -item.crystal_titanium.name=티타늄 결정 -item.crystal_sulfur.name=유황 결정 -item.crystal_niter.name=나이터 결정 -item.crystal_copper.name=구리 결정 -item.crystal_tungsten.name=텅스텐 결정 -item.crystal_aluminium.name=알루미늄 결정 -item.crystal_fluorite.name=형석 결정 -item.crystal_beryllium.name=베릴륨 결정 -item.crystal_lead.name=납 결정 -item.crystal_schraranium.name=슈라라늄 결정 -item.crystal_schrabidium.name=슈라비듐 결정 -item.crystal_rare.name=희토류 결정 -item.crystal_phosphorus.name=인 결정 -item.crystal_lithium.name=리튬 결정 -item.crystal_starmetal.name=스타메탈 결정 -item.crystal_trixite.name=삼중석 결정 -item.crystal_asbestos.name=석면 결정 - -item.wire_aluminium.name=알루미늄 와이어 -item.wire_copper.name=구리 와이어 -item.wire_gold.name=골드 와이어 -item.wire_schrabidium.name=슈라비듐 와이어 - -item.circuit_raw.name=기본 회로 조립 -item.circuit_aluminium.name=기본회로 -item.circuit_copper.name=향상된 회로 -item.circuit_red_copper.name=고급 회로 -item.circuit_gold.name=오버클럭된 회로 -item.circuit_schrabidium.name=고성능 회로 -item.circuit_targeting_tier1.name=군용 회로 기판(계층 1) -item.circuit_targeting_tier2.name=군용 회로 기판(계층 2) -item.circuit_targeting_tier3.name=군용 회로 기판(계층 3) -item.circuit_targeting_tier4.name=군용 회로 기판(계층 4) -item.circuit_targeting_tier5.name=군용 회로 기판(계층 5) -item.circuit_targeting_tier6.name=군용 회로 기판(계층 6) -item.mechanism_revolver_1.name=리볼버 메커니즘 -item.mechanism_revolver_2.name=고급 리볼버 메커니즘 -item.mechanism_rifle_1.name=소총 메커니즘 -item.mechanism_rifle_2.name=고급 소총 메커니즘 -item.mechanism_launcher_1.name=런처 메커니즘 -item.mechanism_launcher_2.name=고급 실행기 메커니즘 -item.mechanism_special.name=첨단 무기 메커니즘 - -item.primer_357.name=.357 매그넘 프라이머(x24) -item.primer_44.name=.44 매그넘 프라이머(x24) -item.primer_9.name=소구경 프라이머(x32) -item.primer_50.name=대구경 프라이머(x12) -item.primer_buckshot.name=벅샷 프라이머(x12) -item.casing_357.name=.357 매그넘 케이스(x24) -item.casing_44.name=.44 매그넘 케이스(x24) -item.casing_9.name=소구경 케이스(x32) -item.casing_50.name=대구경 케이스(x12) -item.casing_buckshot.name=벅샷 케이스(x12) -item.assembly_iron.name=철탄 조립 -item.assembly_steel.name=납탄 조립 -item.assembly_lead.name=유리 총알 조립 -item.assembly_gold.name=금총알 조립 -item.assembly_schrabidium.name=슈라비듐 총알 조립 -item.assembly_nightmare.name=악몽 총알 조립 -item.assembly_desh.name=Desh 총알 조립 -item.assembly_pip.name=오염된 총알 조립 -item.assembly_nopip.name=.44 매그넘 조립 -item.assembly_smg.name=9mm 조립 -item.assembly_556.name=5.56mm 조립 -item.assembly_uzi.name=.22 LR 조립 -item.assembly_actionexpress.name=.50 AE 조립 -item.assembly_calamity.name=.50 BMG 조립 -item.assembly_lacunae.name=.5mm 조립 - -item.piston_selenium.name=레이디얼 엔진 피스톤 - -tile.pink_double_slab.name=핑크 우드 더블 슬래브 -tile.radwater_block.name=조사수 - -tile.block_aluminium.name=알루미늄 블록 -tile.block_saturnite.name=토성 블록 -tile.block_ra226.name=라듐-226 블록 -tile.block_radspice.name=네오벨린 블록 -tile.block_polymer.name=폴리머 블록 -tile.block_copper.name=구리 블록 -tile.block_fluorite.name=형석 블록 -tile.block_niter.name=나이터 블록 -tile.block_red_copper.name=붉은 구리 블록 -tile.block_steel.name=강철 블록 -tile.block_sulfur.name=유황 블록 -tile.block_titanium.name=티타늄 블록 -tile.block_tungsten.name=텅스텐 블록 -tile.block_uranium.name=우라늄 블록 -tile.block_thorium.name=토륨 블록 -tile.block_trinitite.name=삼위일체 블록 -tile.block_beryllium.name=베릴륨 블록 -tile.block_waste.name=핵폐기물 블록 -tile.block_waste_painted.name=핵폐기물 도장 블록 -tile.block_scrap.name=스크랩 블록 -tile.block_electrical_scrap.name=전기 스크랩 블록 -tile.block_advanced_alloy.name=고급 합금 블록 -tile.block_magnetized_tungsten.name=자화 텅스텐 블록 -tile.block_combine_steel.name=CMB 강철 블록 -tile.block_australium.name=오스트레일륨 블록 -tile.block_weidanium.name=웨이다늄 블록 -tile.block_reiium.name=레이움 블록 -tile.block_unobtainium.name=언옵테이늄 블록 -tile.block_daffergon.name=다퍼곤 블록 -tile.block_verticium.name=버티시움 블록 -tile.block_desh.name=강화된 데쉬 블록 -tile.block_dineutronium.name=디뉴트로늄 블록 -tile.block_schrabidate.name=Ferric Schrabidate의 블록 -tile.block_schraranium.name=슈라라늄 블록 -tile.block_dura_steel.name=고속도강 강화블록 -tile.block_yellowcake.name=옐로케이크 블록 -tile.block_starmetal.name=§9스타메탈 블록§r -tile.block_insulator.name=단열재 롤 -tile.block_fiberglass.name=유리 섬유 롤 -tile.block_asbestos.name=석면 블록 -tile.block_cobalt.name=코발트 블록 -tile.block_lithium.name=리튬 블록 -tile.block_white_phosphorus.name=백린 블록 -tile.block_red_phosphorus.name=적린 블록 - -tile.block_u233.name=우라늄-233 블록 -tile.block_u235.name=우라늄-235 블록 -tile.block_u238.name=우라늄-238 블록 -tile.block_neptunium.name=넵투늄-237 블록 -tile.block_uranium_fuel.name=우라늄 연료 블록 -tile.block_mox_fuel.name=MOX 연료 블록 -tile.block_plutonium.name=플루토늄 블록 -tile.block_pu238.name=플루토늄-238 블록 -tile.block_pu239.name=플루토늄-239 블록 -tile.block_pu240.name=플루토늄-240 블록 -tile.block_plutonium_fuel.name=플루토늄 연료 블록 -tile.block_polonium.name=폴로늄-210 블록 -tile.block_thorium_fuel.name=토륨 연료 블록 -tile.block_solinium.name=솔리늄-327 블록 -tile.block_schrabidium_fuel.name=슈라비듐 연료 블록 - -tile.ore_aluminium.name=알루미늄 광석 -tile.ore_copper.name=구리 광석 -tile.ore_fluorite.name=형석 광석 -tile.ore_niter.name=나이터 광석 -tile.ore_sulfur.name=유황광석 -tile.ore_titanium.name=티타늄 광석 -tile.ore_tungsten.name=텅스텐 광석 -tile.ore_uranium.name=우라늄 광석 -tile.ore_uranium_scorched.name=그을린 우라늄 광석 -tile.ore_thorium.name=토륨 광석 -tile.ore_schrabidium.name=슈라비듐 광석 -tile.ore_beryllium.name=베릴륨 광석 -tile.ore_lignite.name=갈탄 광석 -tile.ore_asbestos.name=석면 광석 -tile.ore_gneiss_asbestos.name=편암 석면 광석 -tile.ore_gneiss_copper.name=편암 구리 광석 -tile.ore_gneiss_gold.name=편암 금광석 -tile.ore_gneiss_iron.name=편암 철광석 -tile.ore_gneiss_lithium.name=편암 리튬 광석 -tile.ore_gneiss_rare.name=편암 희토류 광석 -tile.ore_gneiss_schrabidium.name=편암 슈라비듐 광석 -tile.ore_gneiss_uranium.name=편암 우라늄 광석 -tile.ore_gneiss_uranium_scorched.name=그을린 편암 우라늄 광석 -tile.stone_gneiss.name=흑연 편암 -tile.ore_gneiss_gas.name=가스 셰일 -tile.ore_coal_oil.name=기름진 석탄 광석 -tile.ore_coal_oil_burning.name=불타는 기름진 석탄 광석 - -tile.ore_nether_uranium.name=네더 우라늄 광석 -tile.ore_nether_uranium_scorched.name=그을린 황천 우라늄 광석 -tile.ore_nether_plutonium.name=네더 플루토늄 광석 -tile.ore_nether_tungsten.name=네더 텅스텐 광석 -tile.ore_nether_sulfur.name=네더 유황 광석 -tile.ore_nether_fire.name=네더 인광석 -tile.ore_nether_schrabidium.name=네더 슈라비듐 광석 -tile.ore_nether_coal.name=불타는 황천 석탄 광석 -tile.ore_nether_smoldering.name=그을린 황천랙 - -tile.ore_meteor_aluminium.name=유성 알루미늄 광석 -tile.ore_meteor_copper.name=유성 구리 광석 -tile.ore_meteor_sulfur.name=유성 유황 광석 -tile.ore_meteor_titanium.name=유성 티타늄 광석 -tile.ore_meteor_tungsten.name=유성 텅스텐 광석 -tile.ore_meteor_uranium.name=유성 우라늄 광석 -tile.ore_meteor_thorium.name=유성 토륨 광석 -tile.ore_meteor_lead.name=유성 납 광석 -tile.ore_meteor_lithium.name=유성 리튬 광석 -tile.ore_meteor_starmetal.name=스타메탈 광석 - -tile.ore_tikite.name=트릭사이트 - -tile.ore_australium.name=호주 광석 -tile.ore_weidanium.name=웨이디트 -tile.ore_reiium.name=레이테 -tile.ore_unobtainium.name=브라이트블렌드 광석 -tile.ore_daffergon.name=델라이트 -tile.ore_verticium.name=달러 그린 미네랄 -tile.ore_rare.name=희토류 광석 - -tile.ore_oil.name=석유 매장지 -tile.ore_oil_empty.name=빈 석유 매장지 -tile.ore_oil_sand.name=타르 샌드 - -tile.deco_titanium.name=티타늄 데코 블록 -tile.deco_red_copper.name=레드 코퍼 데코 블록 -tile.deco_tungsten.name=텅스텐 데코 블록 -tile.deco_aluminium.name=알루미늄 데코 블록 -tile.deco_steel.name=스틸데코블록 -tile.deco_lead.name=리드 데코 블록 -tile.deco_beryllium.name=베릴륨 데코 블록 -tile.deco_asbestos.name=석면 지붕 - -tile.hazmat.name=위험물질 천 블록 -tile.iter.name=핵융합로 - -tile.reinforced_brick.name=강화벽돌 -tile.reinforced_glass.name=강화유리 -tile.reinforced_sand.name=강화된 사암 -tile.reinforced_light.name=강화된 발광석 -tile.reinforced_lamp_off.name=강화램프 -tile.reinforced_lamp_on.name=강화램프 - -tile.reinforced_stone.name=조밀한 돌 -tile.concrete_smooth.name=콘크리트 -tile.concrete.name=콘크리트 타일 -tile.concrete_pillar.name=철근 철근 콘크리트 기둥 -tile.brick_concrete.name=콘크리트 벽돌 -tile.brick_concrete_mossy.name=이끼 낀 콘크리트 벽돌 -tile.brick_concrete_cracked.name=깨진 콘크리트 벽돌 -tile.brick_concrete_broken.name=깨진 콘크리트 벽돌 -tile.brick_dungeon.name=베르젤리아나이트 벽돌 -tile.brick_dungeon_circle.name=베르젤리아나이트 서클 -tile.brick_dungeon_flat.name=베르젤리아나이트 블록 -tile.brick_dungeon_tile.name=베르젤리아나이트 타일 -tile.brick_obsidian.name=흑요석 벽돌 -tile.brick_light.name=가벼운 벽돌 -tile.asphalt.name=아스팔트 -tile.brick_compound.name=복합 메쉬 -tile.brick_jungle.name=에너자이트 벽돌 -tile.brick_jungle_cracked.name=깨진 에나르가이트 벽돌 -tile.brick_jungle_glyph.name=Enargite 문양 벽돌 -tile.brick_jungle_lava.name=마그마틱 에나르가이트 벽돌 -tile.brick_jungle_trap.name=갇힌 Enargite 벽돌 -tile.brick_jungle_mystic.name=신비한 에나르가이트 벽돌 -tile.brick_jungle_ooze.name=방사성 Enargite 벽돌 -tile.brick_jungle_circle.name=기계공 서클 -tile.spikes.name=스파이크 - -tile.tile_lab.name=실험실 타일 -tile.tile_lab_broken.name=부서진 실험실 타일 -tile.tile_lab_cracked.name=깨진 실험실 타일 - -tile.cmb_brick.name=CMB 스틸 타일 -tile.cmb_brick_reinforced.name=강화된 CMB 벽돌 - -tile.gravel_obsidian.name=으깬 흑요석 -tile.gravel_diamond.name=다이아몬드 자갈 - -tile.barbed_wire.name=가시 철사 -tile.barbed_wire_fire.name=불타는 철조망 -tile.barbed_wire_poison.name=중독된 철조망 -tile.barbed_wire_acid.name=가성 철조망 -tile.barbed_wire_wither.name=시든 철조망 -tile.barbed_wire_ultradeath.name=구름 철조망 - -tile.fence_metal.name=체인링크 울타리 -tile.sand_boron.name=붕소 모래 -tile.sand_boron_layer.name=붕소 모래층 -tile.sand_gold.name=금빛 모래 -tile.sand_gold198.name=골드-198 샌드 -tile.sand_lead.name=납 모래 -tile.sand_polonium.name=폴로늄 모래 -tile.sand_quartz.name=석영 모래 -tile.sand_uranium.name=우라늄 모래 -tile.glass_ash.name=애쉬 글래스 -tile.glass_boron.name=붕소 유리 -tile.glass_lead.name=납유리 -tile.glass_polonium.name=폴로늄 유리 -tile.glass_quartz.name=석영 유리 -tile.glass_trinitite.name=트리니티 유리 -tile.glass_uranium.name=우라늄 유리 - -tile.lamp_demon.name=데몬 코어 램프 - -tile.seal_frame.name=사일로 해치 프레임 -tile.seal_controller.name=사일로 해치 오프너 -tile.seal_hatch.name=사일로 해치 - -tile.silo_hatch.name=사일로 해치 - -tile.vault_door.name=Vault-Tec 방폭문 -tile.blast_door.name=슬라이딩 블래스트 도어 -tile.sliding_blast_door.name=측면 슬라이딩 블래스트 도어 -tile.sliding_blast_door_2.name=측면 슬라이딩 블래스트 도어 - -item.sliding_blast_door_skin0.name=측면 슬라이딩 블래스트 도어 기본 스킨 -item.sliding_blast_door_skin1.name=측면 슬라이딩 블래스트 도어 변형 1 스킨 -item.sliding_blast_door_skin2.name=측면 슬라이딩 블래스트 도어 변형 2 스킨 - -item.door_metal.name=금속 문 -item.door_office.name=사무실 문 -item.door_bunker.name=벙커 도어 - -item.nugget_uranium.name=우라늄 덩어리 -item.nugget_plutonium.name=플루토늄 덩어리 -item.nugget_neptunium.name=넵투늄-237 조각 -item.ingot_neptunium.name=넵투늄-237 주괴 -item.nugget_lead.name=리드 조각 -item.ingot_lead.name=납괴 -tile.block_lead.name=납 블록 -tile.ore_lead.name=납광석 - -item.powder_lead.name=납가루 -item.powder_neptunium.name=넵투늄-237 가루 -item.powder_schrabidium.name=슈라비듐-326 가루 -item.powder_semtex_mix.name=셈텍스 블렌드 -item.powder_iron.name=철분 -item.powder_gold.name=금가루 -item.powder_aluminium.name=알루미늄 가루 -item.powder_asbestos.name=석면가루 -item.powder_bismuth.name=비스무트-209 가루 -item.powder_beryllium.name=베릴륨 가루 -item.powder_copper.name=구리 가루 -item.powder_titanium.name=티타늄 가루 -item.powder_tungsten.name=텅스텐 가루 -item.powder_uranium.name=우라늄 가루 -item.powder_plutonium.name=플루토늄 가루 -item.dust.name=먼지 -item.powder_coal.name=석탄 가루 -item.powder_lapis.name=청금석 가루 -item.powder_emerald.name=에메랄드 가루 -item.powder_diamond.name=다이아몬드 가루 -item.powder_red_copper.name=붉은 구리 가루 -item.powder_steel.name=강철가루 -item.powder_steel_tiny.name=작은 강철 가루 더미 -item.powder_magnetized_tungsten.name=자화 텅스텐 가루 -item.powder_combine_steel.name=CMB 강철가루 -item.powder_lithium.name=리튬가루 -item.powder_advanced_alloy.name=고급 합금 가루 -item.powder_quartz.name=석영가루 -item.powder_power.name=에너지 파우더 -item.powder_iodine.name=요오드 가루 -item.powder_thorium.name=토륨 가루 -item.powder_neodymium.name=네오디뮴 가루 -item.powder_astatine.name=아스타틴 파우더 -item.powder_caesium.name=세슘가루 -item.powder_australium.name=오스트레일륨 가루 -item.powder_balefire.name=열핵 재 -item.powder_weidanium.name=웨이다늄 가루 -item.powder_reiium.name=레이움 가루 -item.powder_schrabidate.name=철 슈라비데이트 가루 -item.powder_unobtainium.name=언옵테이늄 가루 -item.powder_daffergon.name=다퍼곤 파우더 -item.powder_verticium.name=버티시움 가루 -item.powder_strontium.name=스트론튬 가루 -item.powder_cobalt.name=코발트 가루 -item.powder_bromine.name=브롬 가루 -item.powder_niobium.name=니오브 가루 -item.powder_tennessine.name=테네신-294 가루 -item.powder_cerium.name=세륨가루 -item.powder_dura_steel.name=고속도강가루 -item.powder_polymer.name=폴리머 파우더 -item.powder_lanthanium.name=란타늄 가루 -item.powder_actinium.name=악티늄 가루 -item.powder_lithium_tiny.name=작은 리튬 가루 더미 -item.powder_cobalt_tiny.name=작은 코발트 가루 더미 -item.powder_neodymium_tiny.name=작은 네오디뮴 가루 더미 -item.powder_niobium_tiny.name=니오브 가루의 작은 더미 -item.powder_cerium_tiny.name=작은 세륨 가루 더미 -item.powder_chlorophyte.name=엽록소 가루 -item.powder_lanthanium_tiny.name=작은 란타늄 가루 더미 -item.powder_actinium_tiny.name=작은 악티늄 가루 더미 -item.powder_euphemium.name=유페늄 가루 -item.powder_meteorite.name=운석 가루 -item.powder_meteorite_tiny.name=작은 운석 가루 더미 -item.powder_yellowcake.name=노란색 케이크 -item.powder_magic.name=분쇄된 마법 -item.redstone_depleted.name=채도가 낮은 레드스톤 가루 - -item.fragment_neodymium.name=네오디뮴 조각 -item.fragment_cobalt.name=코발트 조각 -item.fragment_niobium.name=니오브 조각 -item.fragment_cerium.name=세륨 조각 -item.fragment_lanthanium.name=란타늄 조각 -item.fragment_actinium.name=악티늄 조각 -item.fragment_meteorite.name=운석 조각 - -item.battery_generic.name=배터리 -item.battery_advanced.name=고급 배터리 -item.battery_lithium.name=리튬 이온 배터리 -item.battery_schrabidium.name=슈라비듐 배터리 -item.battery_spark.name=스파크 배터리 -item.battery_creative.name=무한 배터리 - -item.battery_su.name=SU-배터리 -item.battery_su_l.name=대형 SU-배터리 -item.battery_trixite.name=오프 브랜드 스파크 배터리 -item.battery_steam.name=증기 구동 에너지 저장 탱크 -item.battery_steam_large.name=대형 증기 구동 에너지 저장 탱크 - -item.battery_potato.name=감자 배터리 -item.battery_potatos.name=포타OS - -item.battery_red_cell.name=레드스톤 파워 셀 -item.battery_advanced_cell.name=고급 파워 셀 -item.battery_lithium_cell.name=리튬이온 동력전지 -item.battery_schrabidium_cell.name=슈라비듐 파워 셀 -item.battery_red_cell_6.name=6단 레드스톤 동력전지 -item.battery_advanced_cell_4.name=4중 고급 전력 셀 -item.battery_lithium_cell_3.name=삼중 리튬 이온 전력 셀 -item.battery_schrabidium_cell_2.name=이중 슈라비듐 파워 셀 -item.battery_red_cell_24.name=24접이식 레드스톤 파워 셀 -item.battery_advanced_cell_12.name=12배 고급 파워 셀 -item.battery_lithium_cell_6.name=6중 리튬 이온 전력 셀 -item.battery_schrabidium_cell_4.name=4중 슈라비듐 파워 셀 -item.battery_spark_cell_6.name=스파크 파워 셀 -item.battery_spark_cell_25.name=스파크 아케인 자동차 배터리 -item.battery_spark_cell_100.name=불꽃 비전 에너지 저장 배열 -item.battery_spark_cell_1000.name=불꽃 비전 질량 에너지 공허 -item.battery_spark_cell_2500.name=스파크 아케인 디랙 씨 -item.battery_spark_cell_10000.name=불꽃 고체 시공간 수정 -item.battery_spark_cell_power.name=Spark Ludicrous 물리학을 거부하는 에너지 저장 장치 - -item.upgrade_template.name=기계 업그레이드 템플릿 -item.upgrade_speed_1.name=속도 업그레이드 Mk.I -item.upgrade_speed_2.name=속도 업그레이드 Mk.II -item.upgrade_speed_3.name=속도 업그레이드 Mk.III -item.upgrade_effect_1.name=효율성 업그레이드 Mk.I -item.upgrade_effect_2.name=효율성 업그레이드 Mk.II -item.upgrade_effect_3.name=효율성 업그레이드 Mk.III -item.upgrade_power_1.name=절전 업그레이드 Mk.I -item.upgrade_power_2.name=절전 업그레이드 Mk.II -item.upgrade_power_3.name=절전 업그레이드 Mk.III -item.upgrade_fortune_1.name=포춘 업그레이드 Mk.I -item.upgrade_fortune_2.name=포춘 업그레이드 Mk.II -item.upgrade_fortune_3.name=포춘 업그레이드 Mk.III -item.upgrade_afterburn_1.name=애프터버너 업그레이드 Mk.I -item.upgrade_afterburn_2.name=애프터버너 업그레이드 Mk.II -item.upgrade_afterburn_3.name=애프터버너 업그레이드 Mk.III -item.upgrade_overdrive_1.name=오버드라이브 머신 업그레이드 Mk.I -item.upgrade_overdrive_2.name=오버드라이브 머신 업그레이드 Mk.II -item.upgrade_overdrive_3.name=오버드라이브 머신 업그레이드 Mk.III -item.upgrade_radius.name=이미터 반경 업그레이드 -item.upgrade_health.name=이미터 상태 업그레이드 -item.upgrade_smelter.name=제련소 업그레이드 -item.upgrade_shredder.name=슈레더 업그레이드 -item.upgrade_centrifuge.name=원심분리기 업그레이드 -item.upgrade_crystallizer.name=결정화기 업그레이드 -item.upgrade_nullifier.name=고철 파괴자 업그레이드 -item.upgrade_screm.name=비명을 지르는 과학자 업그레이드 - -item.fusion_core.name=퓨전코어 -item.energy_core.name=임시변통 에너지 코어 -item.fusion_core_infinite.name=무한 융합 코어 -item.fusion_shield_chlorophyte.name=엽록체 금속화 핵융합로 담요 -item.fusion_shield_desh.name=Desh 핵융합로 담요 -item.fusion_shield_tungsten.name=텅스텐 핵융합 반응기 담요 -item.fusion_shield_vaporwave.name=증기파 핵융합로 담요 - -item.dynosphere_base.name=빈 다이노스피어 -item.dynosphere_desh.name=데쉬 다이노스피어 -item.dynosphere_desh_charged.name=데쉬 다이노스피어(충전) -item.dynosphere_schrabidium.name=슈라비듐 다이노스피어 -item.dynosphere_schrabidium_charged.name=슈라비듐 다이노스피어(충전됨) -item.dynosphere_euphemium.name=유페미움 다이노스피어 -item.dynosphere_euphemium_charged.name=유페미움 다이노스피어(충전됨) -item.dynosphere_dineutronium.name=디뉴트로늄 다이노스피어 -item.dynosphere_dineutronium_charged.name=디뉴트로늄 다이노스피어(충전됨) - -item.plate_iron.name=철판 -item.plate_lead.name=리드 플레이트 +item.boy_target.name=아 임계 U235 대상 +item.briquette_lignite.name=갈탄 연탄 +item.bucket_acid.name=산성 양동이 +item.bucket_mud.name=독성 진흙 양동이 +item.bucket_toxic.name=셀라린 양동이 +item.burnt_bark.name=탄 껍질 +item.can_bepis.name=베피스 +item.can_breen.name=닥터 브린스 프라이빗 리저브 +item.can_creature.name='크리처' 에너지 드링크 +item.can_empty.name=빈 캔 +item.can_key.name=와인딩 키 +item.can_luna.name=블랙 메사 루나 - 다크 콜라 +item.can_mrsugar.name='박사. 설탕 청량 음료 +item.can_overcharge.name=과충전 섬망 XT +item.can_redbomb.name='레드밤' 에너지 드링크 +item.can_smart.name='스마트' 에너지 드링크 +item.canister_biofuel.name=바이오 연료 캐니스터 +item.canister_bitumen.name=역청 용기 +item.canister_canola.name=엔진 윤활유 +item.canister_empty.name=빈 캐니스터 +item.canister_fuel.name=디젤 캐니스터 +item.canister_gasoline.desc=납은 친구$친구를 당신의 혈류 속으로 들여보내십시오$*자지 총* 지금 하세요. +item.canister_gasoline.name=유연 휘발유 용기 +item.canister_heatingoil.name=난방유 용기 +item.canister_heavyoil.name=중유 캐니스터 +item.canister_kerosene.name=등유 용기 +item.canister_lightoil.name=경유 캐니스터 +item.canister_napalm.name=네이팜비 +item.canister_naphtha.name=나프타 캐니스터 +item.canister_oil.name=원유 캐니스터 +item.canister_petroil.name=석유 캐니스터 +item.canister_reoil.name=재활용 산업용 오일 용기 +item.canister_smear.name=산업용 오일 캐니스터 +item.canister_superfuel.name=NITAN© 100 옥탄 슈퍼 연료 캐니스터 +item.canned_asbestos.name=통조림 석면 +item.canned_ass.name=통조림 엉덩이 +item.canned_bark.name=통조림 소나무 껍질 육포 +item.canned_beef.name=통조림 쇠고기 +item.canned_bhole.name=통조림 블랙홀 +item.canned_cheese.name=통조림 녹은 치즈 +item.canned_chinese.name=중국 통조림 +item.canned_diesel.name=통조림 디젤 +item.canned_fist.name=통조림 주먹 +item.canned_fried.name=통조림 프라이드 치킨 +item.canned_hotdogs.name=통조림 핫도그 +item.canned_jizz.name=FlimFlam Industries Canned Stallion Milk™ +item.canned_kerosene.name=등유 통조림 +item.canned_leftovers.name=남은 보존 +item.canned_milk.name=통조림 증발 우유 +item.canned_mystery.name=통조림 미스터리 고기 +item.canned_napalm.name=통조림 네이팜 +item.canned_oil.name=통조림 엔진 오일 +item.canned_pashtet.name=Паштет +item.canned_pizza.name=통조림 페퍼로니 피자 +item.canned_recursion.name=미리 준비된 재귀 +item.canned_spam.name=통조림 스팸 +item.canned_stew.name=통조림 "버섯 스튜" +item.canned_tomato.name=통조림 토마토 수프 +item.canned_tube.name=우주 비행사 음식 튜브 +item.canned_tuna.name=통조림 참치 +item.canned_yogurt.name=통조림 요구르트 +item.canteen_13.name=볼트 13 수통 +item.canteen_fab.name=멋진 보드카 +item.canteen_vodka.name=세련된 플라스크 +item.cap_aluminium.name=알루미늄 캡 +item.cap_fritz.name=프리츠 콜라 병뚜껑 +item.cap_korl.name=콜 병마개 +item.cap_nuka.name=누카콜라 병뚜껑 +item.cap_quantum.name=누카콜라 퀀텀 병뚜껑 +item.cap_rad.name=에스콜라 RAD 병뚜껑 +item.cap_sparkle.name=S~콜라 병뚜껑 +item.cap_star.name=선셋 사르사파릴라 스타 캡 +item.cap_sunset.name=선셋 사르사파릴라 병뚜껑 +item.cape_ayy.name=아이의 망토 +item.cape_codered_.name=codered_의 망토 +item.cape_dafnik.name=다프닉의 망토 +item.cape_gasmask.name=망토(방독면) +item.cape_hbm.name=Hbm의 케이프 +item.cape_lpkukin.name=LP쿠킨의 망토 +item.cape_nostalgia.name=노스탤지어 박사의 망토 +item.cape_radiation.name=케이프(방사선) +item.cape_schrabidium.name=케이프(슈라비딕) +item.cape_vertice.name=버티스 경의 망토 +item.casing_357.name=.357 매그넘 케이스(x24) +item.casing_44.name=.44 매그넘 케이스(x24) +item.casing_50.name=대구경 케이스(x12) +item.casing_9.name=소구경 케이스(x32) +item.casing_buckshot.name=벅샷 케이싱(x12) +item.catalyst_clay.name=점토 촉매 +item.cbt_device.name=CBT 장치 +item.cc_plasma_gun.name=[WIP] CC 플라즈마 건 +item.cell_anti_schrabidium.name=항스크라비디움 세포 +item.cell_antimatter.name=반물질 세포 +item.cell_deuterium.name=중수소 세포 +item.cell_empty.name=빈 셀 +item.cell_puf6.name=플루토늄 헥사플루오라이드 셀 +item.cell_sas3.name=Schrabidium Trisulfide 세포 +item.cell_tritium.name=삼중수소 셀 +item.cell_uf6.name=육불화 우라늄 셀 +item.centri_stick.name=스틱형 원심분리기 +item.centrifuge_element.name=원심 분리기 요소 +item.centrifuge_tower.name=원심 분리기 타워 +item.chainsaw.name=전기톱 +item.charge_railgun.name=중수소 플라즈마 캡슐 +item.chemistry_template.name=화학 템플릿: +item.chernobylsign.name=체르노빌 경고 표시 전투 도끼 +item.chlorine_pinwheel.name=염소 바람개비 +item.chlorophyte_pickaxe.name=녹조류 곡괭이 +item.chocolate_milk.name=초콜릿 우유 +item.chopper.name=헌터 헬기 +item.chopper_blades.name=헌터 초퍼 로터 블레이드 +item.chopper_gun.name=배치 총 +item.chopper_head.name=헌터 헬기 조종석 +item.chopper_tail.name=헌터 헬기 꼬리 +item.chopper_torso.name=헌터 헬기 본체 +item.chopper_wing.name=헌터 헬기 날개 +item.cinnebar.name=단사 +item.circuit_aluminium.name=기본 회로 +item.circuit_bismuth.name=다목적 칩셋 +item.circuit_bismuth_raw.name=다목적 칩셋 어셈블리 +item.circuit_copper.name=향상된 회로 +item.circuit_gold.name=오버클럭 회로 +item.circuit_raw.name=기본 회로 조립 +item.circuit_red_copper.name=고급 회로 +item.circuit_schrabidium.name=고성능 회로 +item.circuit_tantalium.name=커패시터 보드 +item.circuit_tantalium_raw.name=커패시터 보드 어셈블리 +item.circuit_targeting_tier1.name=군용 등급 회로 기판(계층 1) +item.circuit_targeting_tier2.name=군용 등급 회로 기판(계층 2) +item.circuit_targeting_tier3.name=군용 등급 회로 기판(계층 3) +item.circuit_targeting_tier4.name=군용 등급 회로 기판(계층 4) +item.circuit_targeting_tier5.name=군용 등급 회로 기판(계층 5) +item.circuit_targeting_tier6.name=군용 등급 회로 기판(계층 6) +item.cladding_desh.name=데쉬 클래딩 +item.cladding_di.name=다이뉴트로늄 클래딩 +item.cladding_electronium.name=전자 클래딩 +item.cladding_ghiorsium.name=기오르슘 클래딩 +item.cladding_iron.name=철 클래딩 +item.cladding_lead.name=리드 클래딩 +item.cladding_obsidian.name=흑요석 피부 +item.cladding_paa.name=PaA 합금 클래딩 +item.cladding_paint.name=납 페인트 +item.cladding_rubber.name=고무 클래딩 +item.clip_bf.name=BF-쉘 더블 팩 +item.clip_bolt_action.name=12x74 민달팽이 상자 +item.clip_cryolator.name=Cryolator 연료 탱크 +item.clip_defabricator.name=제세동기 에너지 셀이 있는 벨트 +item.clip_emp.name=소형 에너지 셀 팩 +item.clip_euthanasia.name=응급 처치 키트 +item.clip_fatman.name=미니 핵무기 6개 팩 +item.clip_hp.name=잉크 탱크 +item.clip_immolator.name=Immolator 연료 탱크 +item.clip_jack.name=4중 12x70 벅샷 라운드 상자 +item.clip_lever_action.name=12x74 벅샷 라운드 상자 +item.clip_mirv.name=미니 MIRV의 3-in-1 팩 +item.clip_mp.name=브리타니아 군용 표준 발행 돌격소총 탄창 +item.clip_mp40.name=9mm SMG 탄창 +item.clip_osipr.name=AR2 매거진 +item.clip_revolver.name=.357 라운드 상자 +item.clip_revolver_cursed.name=브리타니아 군사 표준 문제 Pisol Magazine +item.clip_revolver_gold.name=작은 황금 총알 상자 +item.clip_revolver_iron.name=철탄 상자 +item.clip_revolver_lead.name=핵 총알 상자 +item.clip_revolver_nightmare.name=총알 가방 +item.clip_revolver_nightmare2.name=레이저 벅샷 벨트 +item.clip_revolver_nopip.name=.44 라운드 상자 +item.clip_revolver_pip.name=오염된 총알이 있는 스피드로더 +item.clip_revolver_schrabidium.name=슈라비디움 탄약통 +item.clip_rpg.name=로켓 컨테이너 +item.clip_spark.name=대형 전자기 카트리지 +item.clip_stinger.name=스팅어 로켓 팩 +item.clip_uboinik.name=12x70 벅샷 라운드 상자 +item.clip_uzi.name=32번째 .22 LR 매거진 +item.clip_xvl1456.name=대형 동위 원소 상자 +item.cmb_axe.name=CMB 강철 도끼 +item.cmb_boots.name=CMB 스틸 부츠 +item.cmb_helmet.name=CMB 스틸 헬멧 +item.cmb_hoe.name=CMB 스틸 괭이 +item.cmb_legs.name=CMB 스틸레깅스 +item.cmb_pickaxe.name=CMB 강철 곡괭이 +item.cmb_plate.name=CMB 스틸 흉갑 +item.cmb_shovel.name=CMB 강철 삽 +item.cmb_sword.name=CMB 스틸 소드 +item.coal_infernal.name=지옥불 석탄 +item.cobalt_axe.name=코발트 도끼 +item.cobalt_boots.name=코발트 장화 +item.cobalt_decorated_axe.name=장식된 코발트 도끼 +item.cobalt_decorated_hoe.name=장식된 코발트 괭이 +item.cobalt_decorated_pickaxe.name=장식된 코발트 곡괭이 +item.cobalt_decorated_shovel.name=장식된 코발트 삽 +item.cobalt_decorated_sword.name=장식된 코발트 검 +item.cobalt_helmet.name=코발트 투구 +item.cobalt_hoe.name=코발트 괭이 +item.cobalt_legs.name=코발트 레깅스 +item.cobalt_pickaxe.name=코발트 곡괭이 +item.cobalt_plate.name=코발트 흉갑 +item.cobalt_shovel.name=코발트 삽 +item.cobalt_sword.name=코발트 소드 +item.coil_advanced_alloy.name=초전도 코일 +item.coil_advanced_torus.name=초전도 링 코일 item.coil_copper.name=구리 코일 item.coil_copper_torus.name=링 코일 -item.wire_tungsten.name=텅스텐 와이어 -item.coil_tungsten.name=가열 코일 -item.coin_maskman.name=마스크맨 코인 +item.coil_gold.name=골드 코일 +item.coil_gold_torus.name=골든 링 코일 +item.coil_magnetized_tungsten.name=4000K 고온 초전도 코일 +item.coil_tungsten.name=난방 코일 item.coin_creeper.name=핵 크리퍼 코인 -item.coin_radiation.name=방사선 코인 -item.coin_worm.name=볼스오트론 코인 -item.tank_steel.name=강철 탱크 -item.motor.name=모터 -item.motor_desh.name=데쉬 모터 -item.centrifuge_element.name=원심분리기 요소 -item.centrifuge_tower.name=원심분리기 타워 -item.reactor_core.name=열 원자로 코어 -item.rbmk_fuel_balefire.name=베일파이어 RBMK 연료봉 -item.rbmk_fuel_balefire_gold.name=플래시골드 RBMK 연료봉 -item.rbmk_fuel_drx.name=§cDigamma RBMK 연료봉§r -item.rbmk_fuel_empty.name=빈 RBMK 연료봉 -item.rbmk_fuel_hea241.name=HEA-241 RBMK 연료봉 -item.rbmk_fuel_hea242.name=HEA-242 RBMK 연료봉 -item.rbmk_fuel_heaus.name=HEAus RBMK 연료봉 -item.rbmk_fuel_hen.name=HEN RBMK 연료봉 -item.rbmk_fuel_hes.name=HES RBMK 연료봉 -item.rbmk_fuel_hep.name=HEP-239 RBMK 연료봉 -item.rbmk_fuel_hep241.name=HEP-241 RBMK 연료봉 -item.rbmk_fuel_heu233.name=HEU-233 RBMK 연료봉 -item.rbmk_fuel_heu235.name=HEU-235 RBMK 연료봉 -item.rbmk_fuel_lea.name=LEA RBMK 연료봉 -item.rbmk_fuel_leaus.name=LEAus RBMK 연료봉 -item.rbmk_fuel_lep.name=LEP-239 RBMK 연료봉 -item.rbmk_fuel_les.name=LES RBMK 연료봉 -item.rbmk_fuel_mea.name=MEA RBMK 연료봉 -item.rbmk_fuel_men.name=남자 RBMK 연료봉 -item.rbmk_fuel_mep.name=MEP-239 RBMK 연료봉 -item.rbmk_fuel_mes.name=MES RBMK 연료봉 -item.rbmk_fuel_meu.name=MEU RBMK 연료봉 -item.rbmk_fuel_mox.name=MOX RBMK 연료봉 -item.rbmk_fuel_po210be.name=Po210Be RBMK 중성자 소스 -item.rbmk_fuel_pu238be.name=Pu238Be RBMK 중성자 소스 -item.rbmk_fuel_ra226be.name=Ra226Be RBMK 중성자 소스 -item.rbmk_fuel_thmeu.name=ThMEU RBMK 연료봉 -item.rbmk_fuel_ueu.name=NU RBMK 연료봉 -item.rbmk_lid.name=RBMK 커버 패널 -item.rbmk_lid_glass.name=RBMK 유리 커버 패널 -item.rbmk_pellet_balefire.name=베일파이어 연료 펠릿 -item.rbmk_pellet_balefire_gold.name=플래시골드 연료 펠릿 -item.rbmk_pellet_drx.name=§cDigamma 연료 펠릿§r -item.rbmk_pellet_hea241.name=HEA-241 연료 펠릿 -item.rbmk_pellet_hea242.name=HEA-242 연료 펠릿 -item.rbmk_pellet_heaus.name=HEAus 연료 펠릿 -item.rbmk_pellet_hen.name=HEN 연료 펠릿 -item.rbmk_pellet_hep239.name=HEP-239 연료 펠릿 -item.rbmk_pellet_hep241.name=HEP-241 연료 펠릿 -item.rbmk_pellet_heu233.name=HEU-233 연료 펠릿 -item.rbmk_pellet_heu235.name=HEU-235 연료 펠릿 -item.rbmk_pellet_hes.name=HES 연료 펠릿 -item.rbmk_pellet_lea.name=LEA 연료 펠릿 -item.rbmk_pellet_leaus.name=LEAus 연료 펠릿 -item.rbmk_pellet_lep.name=LEP 연료 펠릿 -item.rbmk_pellet_les.name=LES 연료 펠릿 -item.rbmk_pellet_mea.name=MEA 연료 펠릿 -item.rbmk_pellet_men.name=MEN 연료 펠릿 -item.rbmk_pellet_mep.name=MEP 연료 펠릿 -item.rbmk_pellet_mes.name=MES 연료 펠릿 -item.rbmk_pellet_meu.name=MEU 연료 펠릿 -item.rbmk_pellet_mox.name=MOX 연료 펠릿 -item.rbmk_pellet_po210be.name=Po210Be 중성자 소스 펠릿 -item.rbmk_pellet_pu238be.name=Pu238Be 중성자 소스 펠릿 -item.rbmk_pellet_ra226be.name=Ra226Be 중성자 소스 펠릿 -item.rbmk_pellet_thmeu.name=ThMEU 연료 펠릿 -item.rbmk_pellet_ueu.name=NU 연료 펠릿 -item.rbmk_tool.name=RBMK 콘솔 연결 장치 -item.rbmk_tool.desc=위치를 저장하려면 몰래 RBMK를 마우스 오른쪽 버튼으로 클릭하고, 링크하려면 $sneak에서 콘솔/크레인을 마우스 오른쪽 버튼으로 클릭하세요! -item.rbmk_tool.linked=포지션 설정! -item.rbmk_tool.set=RBMK가 연결되었습니다! -item.reacher.name=텅스텐 도달기 -item.rtg_unit.name=RTG 유닛 -item.hazmat_cloth.name=방호천 -item.hazmat_cloth_red.name=고급 위험물질 천 -item.hazmat_cloth_grey.name=납 강화 방호 천 -item.asbestos_cloth.name=화재 근접 천 -item.filter_coal.name=활성탄 필터 -item.tritium_deuterium_cake.name=삼중수소-중수소-케이크 -item.telepad.name=텔레패드 -item.entanglement_kit.name=얽힘 키트 -item.toothpicks.name=이쑤시개 -item.ducttape.name=덕트 테이프 -item.magnet_dee.name=디 자석 -item.magnet_circular.name=편평한 자석 +item.coin_maskman.name=마스크맨 코인 +item.coin_radiation.name=방사선 동전 +item.coin_siege.name=공성 코인 +item.coin_ufo.name=UFO 코인 +item.coin_worm.name=Balls-O-Tron 코인 +item.coke.name=콜라 +item.coltass.name=콜타스 +item.combine_scrap.name=CMB 고철 +item.component_emitter.name=이미터 컴포넌트 +item.component_limiter.name=안정제 성분 +item.cordite.name=코르다이트 +item.cotton_candy.name=방사성 솜사탕 +item.crate_caller.name=보급품 투하 요청자 +item.crowbar.name=Mk.V 상자 개봉 장치 "지렛대" +item.crucible.name=도가니 +item.crystal_aluminium.name=알루미늄 크리스탈 +item.crystal_beryllium.name=베릴륨 결정체 +item.crystal_charred.name=까맣게 탄 수정 +item.crystal_cinnebar.name=진사 수정 +item.crystal_coal.name=석탄 결정 +item.crystal_cobalt.name=코발트 크리스탈 +item.crystal_copper.name=구리 결정 +item.crystal_diamond.name=다이아몬드 크리스탈 +item.crystal_energy.name=에너지 크리스탈 +item.crystal_fluorite.name=형석 결정 +item.crystal_gold.name=골드 크리스탈 +item.crystal_horn.name=수정 뿔 +item.crystal_iron.name=철 결정 +item.crystal_lapis.name=청금석 수정 +item.crystal_lead.name=리드 크리스탈 +item.crystal_lithium.name=리튬 결정체 +item.crystal_niter.name=나이터 크리스탈 +item.crystal_phosphorus.name=인 결정체 +item.crystal_plutonium.name=플루토늄 결정체 +item.crystal_rare.name=희토류 결정체 +item.crystal_redstone.name=레드스톤 크리스탈 +item.crystal_schrabidium.name=슈라비디움 크리스탈 +item.crystal_schraranium.name=슈라라늄 수정 +item.crystal_starmetal.name=스타메탈 크리스탈 +item.crystal_sulfur.name=유황 결정 +item.crystal_thorium.name=토륨 수정 +item.crystal_titanium.name=티타늄 크리스탈 +item.crystal_trixite.name=삼중석 수정 +item.crystal_tungsten.name=텅스텐 크리스탈 +item.crystal_uranium.name=우라늄 결정체 +item.crystal_xen.name=인공 젠 크리스탈 +item.custom_amat.name=맞춤형 핵무기 반물질 막대 +item.custom_dirty.name=커스텀 누크 더티 로드 +item.custom_fall.name=커스텀 Nuke Drop 업그레이드 +item.custom_hydro.name=커스텀 핵 수소로드 +item.custom_kit.name=맞춤형 핵무기 키트 +item.custom_nuke.name=맞춤형 핵무기 막대 +item.custom_schrab.name=커스텀 핵 슈라비디움 로드 +item.custom_tnt.name=맞춤형 핵 폭발물 item.cyclotron_tower.name=사이클로트론 타워 -item.debris_fuel.name=RBMK 연료 청크 +item.debris_fuel.name=RBMK 퓨얼 청크 item.debris_graphite.name=뜨거운 흑연 덩어리 item.debris_metal.name=깨진 금속 막대 -item.plate_dalekanium.name=앵그리메탈 -item.biomass.name=바이오매스 -item.biomass_compressed.name=압축 바이오매스 -item.component_limiter.name=안정제 성분 -item.component_emitter.name=이미터 구성요소 -item.catalyst_clay.name=점토촉매 - -item.cell_empty.name=빈 셀 -item.cell_uf6.name=육불화우라늄 셀 -item.cell_puf6.name=플루토늄 육불화 셀 -item.cell_antimatter.name=반물질 세포 -item.cell_deuterium.name=중수소 세포 -item.cell_tritium.name=삼중수소 셀 -item.cell_sas3.name=슈라비듐 삼황화물 세포 -item.cell_anti_schrabidium.name=안티스크라비듐 세포 - -item.capsule_empty.name=빈 캡슐 -item.capsule_xen.name=젠 캡슐 - -item.capsule_sing_tiny.name=작은 특이점 캡슐 -item.capsule_sing_counter_tiny.name=작은 격리된 반공진 특이점 캡슐 -item.capsule_sing_super_tiny.name=작은 과열 공명 특이점 캡슐 -item.capsule_sing_spark_tiny.name=작은 퀘이사 캡슐 -item.capsule_hole_tiny.name=작은 블랙홀 캡슐 - -item.singularity.name=특이점 캡슐 -item.singularity_counter_resonant.name=격리된 역공진 특이점 캡슐 -item.singularity_super_heated.name=과열된 공명 특이점 캡슐 -item.singularity_spark.name=퀘이사 캡슐 -item.black_hole.name=블랙홀 캡슐 - -item.blade_meteorite.name=운석 칼날 -item.crystal_xen.name=인공 젠 크리스탈 -item.pellet_antimatter.name=반물질 클러스터 - -item.inf_water.name=무한물탱크 -item.inf_deuterium.name=무한 중수소 탱크 -item.inf_tritium.name=무한 삼중수소 탱크 -item.inf_coolant.name=무한 냉각수 탱크 -item.inf_sulfur.name=무한 유황 탱크 -item.inf_diesel.name=무한 디젤 탱크 -item.inf_antimatter.name=무한 반물질 탱크 -item.inf_antischrabidium.name=무한 안티스크라비디움 탱크 - -item.oil_canola.name=생 카놀라유 - -item.pellet_coal.name=조밀한 석탄 클러스터 - -item.canister_superfuel.name=NITAN© 100 옥탄 슈퍼 연료 용기 -item.canister_biofuel.name=바이오 연료 용기 -item.canister_bitumen.name=역청 용기 -item.canister_canola.name=엔진 윤활유 -item.canister_empty.name=빈 용기 -item.canister_fuel.name=디젤 캐니스터 -item.canister_gasoline.name=유연 가솔린 용기 -item.canister_gasoline.desc=리드는 친구입니다$친구를 당신의 혈류에 넣습니다$*자지 총* 지금 하세요. -item.canister_heatingoil.name=난방유 용기 -item.canister_heavyoil.name=중유 용기 -item.canister_kerosene.name=등유 용기 -item.canister_lightoil.name=경유 용기 -item.canister_napalm.name=네이팜 B -item.canister_naphtha.name=나프타 용기 -item.canister_oil.name=원유 용기 -item.canister_petroil.name=석유 용기 -item.canister_reoil.name=재생산업유 용기 -item.canister_smear.name=산업용 오일통 -item.gas_empty.name=빈 가스 탱크 -item.gas_full.name=천연가스 탱크 -item.gas_petroleum.name=석유 가스 탱크 -item.gas_biogas.name=바이오가스 탱크 -item.gas_tritium.name=삼중수소 가스 탱크 -item.gas_deuterium.name=중수소 가스 탱크 -item.gas_hydrogen.name=수소가스 탱크 -item.gas_oxygen.name=산소가스 탱크 -item.fluid_tank_empty.name=빈 범용 유체 탱크 -item.fluid_tank_full.name=범용 유체 탱크: +item.decontamination_module.name=오염 제거 모듈 +item.definitelyfood.name=TotallyNotDirt 브랜드 MRE +item.defuser.name=첨단폭탄해체장치 +item.demon_core_closed.name=닫힌 악마 핵 +item.demon_core_open.name=매달린 악마 핵 +item.desh_axe.name=노동자의 합금 도끼 +item.desh_hoe.name=노동자의 합금 괭이 +item.desh_pickaxe.name=노동자의 합금 곡괭이 +item.desh_shovel.name=노동자의 합금 삽 +item.desh_sword.name=노동자의 합금 검 +item.designator.name=단거리 표적 지정자 +item.designator_manual.name=수동 대상 지정자 +item.designator_range.name=장거리 표적 지시자 +item.detonator.name=뇌관 +item.detonator_de.name=데드맨의 폭발물 +item.detonator_deadman.name=망자의 기폭 장치 +item.detonator_laser.name=레이저 뇌관 +item.detonator_multi.name=다중 뇌관 +item.diamond_gavel.name=다이아몬드 망치 +item.digamma_diagnostic.name=디감마 진단 +item.dns_boots.name=DNT 나노 슈트 부츠 +item.dns_helmet.name=DNT 나노 슈트 헬멧 +item.dns_legs.name=DNT 나노수트 레깅스 +item.dns_plate.name=DNT 나노 수트 흉갑 +item.dnt_boots.name=디나트로늄 부츠 +item.dnt_helmet.name=디노트로니움 헬멧 +item.dnt_legs.name=다이뉴테리움 다리 +item.dnt_plate.name=디뉴트롬 흉갑 +item.door_bunker.name=벙커 도어 +item.door_metal.name=금속 문 +item.door_office.name=사무실 문 +item.dosimeter.name=선량계 +item.drax.name=테라 드릴 +item.drax_mk2.name=강화된 테라 드릴 +item.drax_mk3.name=슈라비딕 테라 드릴 +item.drill_titanium.name=티타늄 드릴 +item.ducc.name=두크 +item.ducttape.name=덕트 테이프 +item.dust.name=먼지 +item.dynosphere_base.name=블랭크 다이노스피어 +item.dynosphere_desh.name=데시 다이노스피어 +item.dynosphere_desh_charged.name=데시 다이노스피어(유료) +item.dynosphere_dineutronium.name=다이뉴트로늄 다이노스피어 +item.dynosphere_dineutronium_charged.name=다이뉴트로늄 다이노스피어(충전됨) +item.dynosphere_euphemium.name=유페미엄 다이노스피어 +item.dynosphere_euphemium_charged.name=유페미움 다이노스피어(유료) +item.dynosphere_schrabidium.name=슈라비디움 다이노스피어 +item.dynosphere_schrabidium_charged.name=슈라비디움 다이노스피어(유료) +item.dysfunctional_reactor.name=고장난 원자로 +item.egg_balefire.desc=방사능 알을 낳는 새는? +item.egg_balefire.name=베일파이어 알 +item.egg_balefire_shard.name=베일파이어 샤드 +item.elec_axe.name=전기톱 +item.elec_pickaxe.name=임팩트 드릴 +item.elec_shovel.name=스파이럴 드릴 +item.elec_sword.name=스턴스틱 +item.energy_core.name=임시 변통 에너지 코어 +item.entanglement_kit.name=얽힘 키트 +item.euphemium_boots.name=유페미엄 부츠 +item.euphemium_helmet.name=유페미엄 헬멧 +item.euphemium_kit.name=완곡 키트 +item.euphemium_legs.name=완곡한 다리보호구 +item.euphemium_plate.name=완곡 흉갑 +item.euphemium_stopper.name=스토퍼 +item.fabsols_vodka.name=팹솔의 보드카 +item.factory_core_advanced.name=첨단 공장 에너지 클러스터 +item.factory_core_titanium.name=기본 공장 에너지 클러스터 +item.falloutitem.name=낙진 더미 +item.fau_boots.name=포 부츠 +item.fau_helmet.name=포 헬멧 +item.fau_legs.name=파우 레깅스 +item.fau_plate.name=포 흉갑 +item.ff_fluid_duct.name=유체 덕트: +item.filter_coal.name=활성탄 필터 +item.fins_big_steel.name=큰 강철 그리드 핀 +item.fins_flat.name=플랫 스틸 케이싱 +item.fins_quad_titanium.name=작은 티타늄 핀 +item.fins_small_steel.name=소형 스틸 그리드 핀 +item.fins_tri_steel.name=대형 강철 핀 +item.five_htp.name=엔테라민 알약 +item.flame_conspiracy.name=음모론 +item.flame_opinion.name=자신의 의견 +item.flame_politics.name=정치적 주제 +item.flame_pony.name=만화 조랑말의 그림 +item.fleija_core.name=F.L.E.I.J.A. 우라늄 235 충전 +item.fleija_igniter.name=펄스 점화기 +item.fleija_kit.name=F.L.E.I.J.A. 전부 +item.fleija_propellant.name=슈라비디움 추진제 item.fluid_barrel_empty.name=빈 유체 배럴 item.fluid_barrel_full.name=유체 배럴: item.fluid_barrel_infinite.name=무한 유체 배럴 - -item.rod_empty.name=빈 막대 -item.rod_th232.name=토륨-232 막대 -item.rod_uranium.name=우라늄 막대 -item.rod_u233.name=우라늄-233 막대 -item.rod_u235.name=우라늄-235 막대 -item.rod_u238.name=우라늄-238 막대 -item.rod_plutonium.name=플루토늄 막대 -item.rod_pu238.name=플루토늄-238 막대 -item.rod_pu239.name=플루토늄-239 막대 -item.rod_pu240.name=플루토늄-240 막대 -item.rod_neptunium.name=넵투늄-237 막대 -item.rod_of_discord.name=불화의 지팡이 -item.rod_lead.name=리드 막대 -item.rod_schrabidium.name=슈라비듐-326 막대 -item.rod_solinium.name=솔리늄-327 막대 -item.rod_euphemium.name=유페미움 막대 -item.rod_australium.name=오스트레일륨 막대 -item.rod_weidanium.name=웨이다늄 막대 -item.rod_reiium.name=레이움 막대 -item.rod_unobtainium.name=언옵테이늄 막대 -item.rod_daffergon.name=대퍼곤 막대 -item.rod_verticium.name=버티시움 막대 -item.rod_balefire.name=베일파이어 막대 -item.rod_balefire_blazing.name=타오르는 베일파이어 막대 -item.rod_dual_balefire.name=베일파이어 이중 막대 -item.rod_dual_balefire_blazing.name=블레이징 베일파이어 이중 막대 -item.rod_quad_balefire.name=베일파이어 사중 막대 -item.rod_quad_balefire_blazing.name=블레이징 베일파이어 사중 막대 - -item.rod_dual_empty.name=빈 이중 막대 -item.rod_dual_th232.name=토륨-232 이중 막대 -item.rod_dual_uranium.name=우라늄 이중 막대 -item.rod_dual_u233.name=우라늄-233 이중 막대 -item.rod_dual_u235.name=우라늄-235 이중 막대 -item.rod_dual_u238.name=우라늄-238 이중 막대 -item.rod_dual_plutonium.name=플루토늄 이중 막대 -item.rod_dual_pu238.name=플루토늄-238 이중 막대 -item.rod_dual_pu239.name=플루토늄-239 이중 막대 -item.rod_dual_pu240.name=플루토늄-240 이중 막대 -item.rod_dual_neptunium.name=넵투늄-237 이중 막대 -item.rod_dual_lead.name=리드 이중 막대 -item.rod_dual_schrabidium.name=슈라비듐-326 이중 막대 -item.rod_dual_solinium.name=솔리늄-327 이중 막대 - -item.rod_quad_empty.name=빈 사중 막대 -item.rod_quad_th232.name=토륨-232 사중 막대 -item.rod_quad_uranium.name=우라늄 사중 막대 -item.rod_quad_u233.name=우라늄-233 사중 막대 -item.rod_quad_u235.name=우라늄-235 사중 막대 -item.rod_quad_u238.name=우라늄-238 사중 막대 -item.rod_quad_plutonium.name=플루토늄 사중 막대 -item.rod_quad_pu238.name=플루토늄-238 사중 막대 -item.rod_quad_pu239.name=플루토늄-239 사중 막대 -item.rod_quad_pu240.name=플루토늄-240 사중 막대 -item.rod_quad_neptunium.name=넵투늄-237 사중 막대 -item.rod_quad_lead.name=리드 사중 막대 -item.rod_quad_schrabidium.name=슈라비듐-326 사중 막대 -item.rod_quad_solinium.name=솔리늄-327 사중 막대 - -item.rod_uranium_fuel_depleted.name=열화우라늄 연료봉 -item.rod_dual_uranium_fuel_depleted.name=열화우라늄 이중 연료봉 -item.rod_quad_uranium_fuel_depleted.name=열화우라늄 사중 연료봉 -item.rod_thorium_fuel_depleted.name=고갈된 토륨 연료봉 -item.rod_dual_thorium_fuel_depleted.name=고갈된 토륨 이중 연료봉 -item.rod_quad_thorium_fuel_depleted.name=고갈된 토륨 사중 연료봉 -item.rod_plutonium_fuel_depleted.name=고갈된 플루토늄 연료봉 -item.rod_dual_plutonium_fuel_depleted.name=고갈된 플루토늄 이중 연료봉 -item.rod_quad_plutonium_fuel_depleted.name=고갈된 플루토늄 사중 연료봉 -item.rod_mox_fuel_depleted.name=고갈된 MOX 연료봉 -item.rod_dual_mox_fuel_depleted.name=고갈된 MOX 이중 연료봉 -item.rod_quad_mox_fuel_depleted.name=고갈된 MOX 사중 연료봉 -item.rod_schrabidium_fuel_depleted.name=고갈된 슈라비듐 연료봉 -item.rod_dual_schrabidium_fuel_depleted.name=고갈된 슈라비듐 이중 연료봉 -item.rod_quad_schrabidium_fuel_depleted.name=고갈된 슈라비듐 사중 연료봉 - -item.rod_waste.name=핵폐기물 막대 -item.rod_dual_waste.name=핵폐기물 이중 막대 -item.rod_quad_waste.name=핵폐기물 사중 막대 - -item.gun_rpg.name=칼 구스타프 무반동총 -item.gun_karl.name=칼 -item.gun_panzerschreck.name=판저슈렉 -item.gun_rpg_ammo.name=로켓(레거시) -item.gun_stinger.name=FIM-92 스팅어 -item.gun_skystinger.name=원 스카이 스팅어 -item.gun_stinger_ammo.name=스팅어 로켓 -item.gun_hk69.name=수류탄 권총 -item.gun_quadro.name=콰트로 포르마지 -item.gun_supershotgun.name=슈퍼 샷건 -item.gun_brimstone.name=유황 레이저총 -item.gun_dash_ammo.name=유황 탄약 - -item.flame_pony.name=만화 조랑말 그림 -item.flame_conspiracy.name=음모론 -item.flame_politics.name=정치적 주제 -item.flame_opinion.name=자신의 의견 - -item.pellet_cluster.name=폭발성 펠릿 -item.pellet_buckshot.name=납 펠릿 -item.pellet_flechette.name=플레셰트 -item.powder_fire.name=붉은 인 -item.powder_ice.name=크라이오 파우더 -item.powder_poison.name=독 가루 -item.pellet_gas.name=독가스 카트리지 -item.magnetron.name=마그네트론 -item.powder_thermite.name=테르밋 - -item.nuke_starter_kit.name=원자 과학 스타터 키트 -item.nuke_commercially_kit.name=상업용 원자 과학 키트 -item.nuke_advanced_kit.name=원자 과학 고급 키트 -item.gadget_kit.name=가젯 키트 -item.boy_kit.name=리틀 보이 키트 -item.man_kit.name=팻맨 키트 -item.mike_kit.name=아이비 마이크 키트 -item.tsar_kit.name=차르 봄바 키트 -item.fleija_kit.name=FLEIJA 키트 -item.multi_kit.name=다목적 폭탄 키트 -item.custom_kit.name=맞춤형 핵 키트 -item.grenade_kit.name=수류탄 키트 -item.nuke_electric_kit.name=전자 엔지니어 키트 -item.prototype_kit.name=프로토타입 키트 -item.missile_kit.name=미사일 키트 -item.t45_kit.name=T45 파워 아머 키트 -item.euphemium_kit.name=유페미움 키트 -item.solinium_kit.name=솔리늄 키트 -item.hazmat_kit.name=위험물질 키트 -item.hazmat_red_kit.name=고급 위험물질 키트 -item.hazmat_grey_kit.name=고성능 위험물질 키트 - -tile.waste_earth.name=죽은 풀 -tile.waste_trinitite.name=삼위일체 광석 -tile.waste_trinitite_red.name=붉은 삼위일체 광석 -tile.waste_log.name=까맣게 탄 통나무 -tile.waste_planks.name=까맣게 탄 나무 판자 - -item.trinitite.name=삼위일체 -item.nuclear_waste.name=핵폐기물 -item.nuclear_waste_tiny.name=작은 핵폐기물 더미 -item.nugget.name=치킨 조각 -item.peas.name=완두콩 -item.waste_uranium.name=고갈우라늄 연료 -item.waste_thorium.name=고갈된 토륨 연료 -item.waste_plutonium.name=고갈된 플루토늄 연료 -item.waste_mox.name=고갈된 MOX 연료 -item.waste_schrabidium.name=고갈된 슈라비듐 연료 -item.waste_uranium_hot.name=열화우라늄 연료(뜨거운) -item.waste_thorium_hot.name=고갈토륨 연료(뜨거운) -item.waste_plutonium_hot.name=고갈플루토늄 연료(핫) -item.waste_mox_hot.name=고갈된 MOX 연료(뜨거운) -item.waste_schrabidium_hot.name=고갈된 슈라비듐 연료(핫) -item.scrap.name=권투 시합 -item.nugget_mercury.name=작은 수은 방울 -item.bottle_mercury.name=수은 병 - -item.ingot_uranium_fuel.name=우라늄 연료 주괴 -item.ingot_thorium_fuel.name=토륨 연료 주괴 -item.ingot_plutonium_fuel.name=플루토늄 연료 주괴 -item.ingot_mox_fuel.name=MOX 연료 주괴 -item.ingot_schrabidium_fuel.name=슈라비듐 연료 주괴 - -item.nugget_uranium_fuel.name=우라늄 연료 덩어리 -item.nugget_thorium_fuel.name=토륨 연료 덩어리 -item.nugget_plutonium_fuel.name=플루토늄 연료 덩어리 -item.nugget_mox_fuel.name=MOX 연료 덩어리 -item.nugget_schrabidium_fuel.name=슈라비듐 연료 덩어리 - -item.grenade_generic.name=수류탄 -item.grenade_strong.name=강화 수류탄 -item.grenade_frag.name=세열 수류탄 -item.grenade_fire.name=화염 파편 수류탄 -item.grenade_shrapnel.name=파편 수류탄 +item.fluid_duct.name=유체 덕트: +item.fluid_identifier.name=유체 식별자 +item.fluid_tank_empty.name=빈 범용 유체 탱크 +item.fluid_tank_full.name=범용 유체 탱크: +item.fluorite.name=형석 +item.flywheel_beryllium.name=베릴륨 플라이휠 +item.fmn.name=플루니트라제팜 정제 +item.folly_bullet.name=12.8cm 스타메탈 고에너지 쉘 +item.folly_bullet_du.name=12.8cm 듀쉘 +item.folly_bullet_nuclear.name=12.8cm 핵 포탄 +item.folly_shell.name=실버 총알 케이스 +item.fooditem.name=식품 +item.forge_fluid_identifier.name=유체 식별자 +item.fragment_actinium.name=악티늄 조각 +item.fragment_boron.name=붕소 파편 +item.fragment_cerium.name=세륨 조각 +item.fragment_cobalt.name=코발트 조각 +item.fragment_coltan.name=콜탄 +item.fragment_lanthanium.name=란탄 조각 +item.fragment_meteorite.name=운석 조각 +item.fragment_neodymium.name=네오디뮴 조각 +item.fragment_niobium.name=니오브 조각 +item.fuel_tank_large.name=대형 연료 탱크 +item.fuel_tank_medium.name=중간 연료 탱크 +item.fuel_tank_small.name=소형 연료 탱크 +item.fuse.name=퓨즈 +item.fusion_core.name=퓨전 코어 +item.fusion_core_infinite.name=무한 퓨전 코어 +item.fusion_shield_chlorophyte.name=Chlorophyte-Metallized Fusion Reactor Blanket +item.fusion_shield_desh.name=Desh 융합 반응기 블랭킷 +item.fusion_shield_tungsten.name=텅스텐 융합 원자로 담요 +item.fusion_shield_vaporwave.name=Vaporwave 융합 ​​반응기 담요 +item.gadget_core.name=플루토늄 코어 +item.gadget_explosive.name=1세대 폭발 렌즈 +item.gadget_explosive8.name=1세대 내파 추진제 번들 +item.gadget_kit.name=가제트 키트 +item.gadget_wireing.name=배선 +item.gas_biogas.name=바이오가스 탱크 +item.gas_empty.name=빈 가스 탱크 +item.gas_full.name=가스 탱크 +item.gas_mask.name=방독면 +item.gas_mask_filter.name=방독면 필터 +item.gas_mask_filter_mono.name=촉매 마스크 필터 +item.gas_mask_m65.name=M65-Z 방독면 +item.gas_mask_mono.name=하프 마스크 +item.gas_petroleum.name=석유 가스 탱크 +item.geiger_counter.name=휴대용 가이거 계수기 +item.gem_tantalium.name=탄탈륨 다결정 +item.gem_volcanic.name=화산석 +item.generator_front.name=발전기 전면 +item.generator_steel.name=발전기 본체 +item.glitch.name=글리치 +item.glowing_stew.name=빛나는 버섯 스튜 +item.goggles.name=보호 고글 +item.grenade_aschrab.name=던질 수 있는 Antischrabidium 세포 +item.grenade_black_hole.name=블랙홀 수류탄 +item.grenade_breach.name=파괴 수류탄 +item.grenade_burst.name=파는 수류탄 +item.grenade_cloud.name=항아리 오브 클라우드 item.grenade_cluster.name=클러스터 폭탄 +item.grenade_electric.name=번개 폭탄 +item.grenade_fire.name=화염 수류탄 item.grenade_flare.name=신호탄 -item.grenade_electric.name=번개폭탄 -item.grenade_poison.name=독 수류탄 +item.grenade_frag.name=수류탄 item.grenade_gas.name=가스 수류탄 -item.grenade_pulse.name=충격 수류탄 -item.grenade_plasma.name=플라즈마 수류탄 -item.grenade_tau.name=타우 수류탄 -item.grenade_schrabidium.name=슈라비듐 수류탄 -item.grenade_lemon.name=가연성 레몬 -item.grenade_gascan.name=던질 수 있는 가스 캔 -item.grenade_mk2.name=Mk 2 수류탄 "앰배서더 파인애플" -item.grenade_aschrab.name=던질 수 있는 안티스크라비디움 셀 -item.grenade_nuke.name=마크 VI 드릴 수류탄 -item.grenade_nuclear.name=누카 수류탄 -item.grenade_zomg.name=부정적인 에너지 쌍 섬멸 수류탄 -item.grenade_black_hole.name=블랙홀 수류탄 -item.grenade_cloud.name=구름의 항아리 -item.grenade_pink_cloud.name=핑크구름 항아리 -item.ullapool_caber.name=울라풀 카베르 -item.grenade_smart.name=스마트 수류탄 -item.grenade_mirv.name=MIRV 수류탄 -item.grenade_breach.name=위반 수류탄 -item.grenade_burst.name=파는 수류탄 - +item.grenade_gascan.name=버릴 수 있는 가스 캔 +item.grenade_generic.name=수류탄 +item.grenade_if_bouncy.name=IF - 탄력 수류탄 +item.grenade_if_brimstone.name=IF - 던질 수 있는 유황 광산 +item.grenade_if_concussion.name=IF - 뇌진탕 수류탄 item.grenade_if_generic.name=IF - 수류탄 item.grenade_if_he.name=IF - HE 수류탄 -item.grenade_if_bouncy.name=IF - 탄력 있는 수류탄 -item.grenade_if_sticky.name=IF - 점착 수류탄 +item.grenade_if_hopwire.name=IF - 소용돌이 홉와이어 item.grenade_if_impact.name=IF - 충격 수류탄 item.grenade_if_incendiary.name=IF - 소이 수류탄 -item.grenade_if_toxic.name=IF - 독성 수류탄 -item.grenade_if_concussion.name=IF - 뇌진탕 수류탄 -item.grenade_if_brimstone.name=IF - 던질 수 있는 유황 광산 -item.grenade_if_mystery.name=IF - M.-수류탄 -item.grenade_if_spark.name=IF - S.-수류탄 -item.grenade_if_hopwire.name=IF - 소용돌이 홉와이어 +item.grenade_if_mystery.name=IF - 중형 수류탄 item.grenade_if_null.name=IF - 무효 수류탄 - -item.rod_uranium_fuel.name=우라늄 연료봉 -item.rod_dual_uranium_fuel.name=우라늄 이중 연료봉 -item.rod_quad_uranium_fuel.name=우라늄 사중 연료봉 -item.rod_thorium_fuel.name=토륨 연료봉 -item.rod_dual_thorium_fuel.name=토륨 이중 연료봉 -item.rod_quad_thorium_fuel.name=토륨 사중 연료봉 -item.rod_plutonium_fuel.name=플루토늄 연료봉 -item.rod_dual_plutonium_fuel.name=플루토늄 이중 연료봉 -item.rod_quad_plutonium_fuel.name=플루토늄 사중 연료봉 -item.rod_mox_fuel.name=MOX 연료봉 -item.rod_dual_mox_fuel.name=MOX 이중 연료봉 -item.rod_quad_mox_fuel.name=MOX 사중 연료봉 -item.rod_schrabidium_fuel.name=슈라비듐 연료봉 -item.rod_dual_schrabidium_fuel.name=슈라비듐 이중 연료봉 -item.rod_quad_schrabidium_fuel.name=슈라비듐 사중 연료봉 - -item.rod_water.name=워터셀 -item.rod_dual_water.name=이중 워터 셀 -item.rod_quad_water.name=사중 워터 셀 - -item.rod_coolant.name=냉각수 셀 -item.rod_dual_coolant.name=이중 절삭유 셀 -item.rod_quad_coolant.name=사중 절삭유 셀 - -item.rod_lithium.name=리튬로드 -item.rod_dual_lithium.name=이중 리튬 막대 -item.rod_quad_lithium.name=사중 리튬 막대 - -item.rod_tritium.name=삼중수소 셀 -item.rod_dual_tritium.name=이중 삼중수소 셀 -item.rod_quad_tritium.name=사중 트리튬 셀 - -item.levitation_unit.name=중력 조작기 -item.thermo_unit_empty.name=열 분배 장치 -item.thermo_unit_endo.name=냉기분배장치 -item.thermo_unit_exo.name=열 분배 장치 - -item.bomb_waffle.name=대량살상 와플 -item.schnitzel_vegan.name=비건 슈니첼 -item.apple_lead.name=리드 애플 -item.apple_lead1.name=리드 애플 -item.apple_lead2.name=리드 애플 -item.apple_schrabidium.name=슈라비듐 사과 -item.apple_schrabidium1.name=슈라비듐 사과 -item.apple_schrabidium2.name=슈라비듐 사과 -item.cotton_candy.name=방사성 솜사탕 -item.tem_flakes.name=템 플레이크 -item.tem_flakes1.name=템 플레이크 -item.tem_flakes2.name=템 플레이크 -item.glowing_stew.name=빛나는 버섯 스튜 -item.balefire_scrambled.name=스크램블 베일파이어 계란 -item.balefire_and_ham.name=햄과 베일파이어 계란 -item.lemon.name="레몬" -item.definitelyfood.name=TotallyNotDirt 브랜드 MRE -item.loops.name=뢰프스 -item.loop_stew.name=IT 아침 식사 -item.fooditem.name=식품 품목 -item.twinkie.name=트윙키 -item.static_sandwich.name=TV 정적으로 장식된 샌드위치 -item.pancake.name=고철, 못, 보석 가루로 만든 팬케이크 -item.spongebob_macaroni.name=스폰지밥 마카로니 - -tile.frozen_grass.name=얼어붙은 풀 -tile.frozen_dirt.name=얼어붙은 흙 -tile.frozen_log.name=냉동 로그 -tile.frozen_planks.name=얼어붙은 판자 - -tile.block_cap_fritz.name=프리츠 콜라 병뚜껑 블록 -tile.block_cap_korl.name=Korl 병뚜껑 블록 -tile.block_cap_nuka.name=누카 콜라 병뚜껑 블록 -tile.block_cap_quantum.name=누카콜라 퀀텀병 뚜껑 블록 -tile.block_cap_rad.name=S~Cola RAD 병뚜껑 블록 -tile.block_cap_sparkle.name=S~콜라 병뚜껑 블록 -tile.block_cap_star.name=블록 오브 선셋 사르사파릴라 스타 캡 -tile.block_cap_sunset.name=블록 오브 선셋 사르사파릴라 병뚜껑 - -tile.machine_microwave.name=마이크로파 - -tile.tape_recorder.name=테이프 레코더 -tile.steel_poles.name=강철 기둥 -tile.pole_top.name=안테나 탑 -tile.pole_satellite_receiver.name=위성 접시 -tile.steel_wall.name=강철 벽 -tile.steel_corner.name=강철 벽 코너 -tile.steel_roof.name=편평한 강철 지붕 -tile.steel_beam.name=철제 빔 -tile.steel_scaffold.name=강철 비계 - -item.gun_revolver_iron.name=단순 리볼버 -item.gun_revolver.name=강화된 리볼버 -item.gun_revolver_saturnite.name=새터나이트 슈터 -item.gun_revolver_gold.name=골든 리볼버 -item.gun_revolver_lead.name=누카 리볼버 -item.gun_revolver_schrabidium.name=슈라비듐 리볼버 -item.gun_revolver_cursed.name=저주받은 리볼버 -item.gun_revolver_nightmare.name=나이트메어 리볼버(오리지널) -item.gun_revolver_nightmare2.name=나이트메어 리볼버(어둠) -item.gun_revolver_pip.name=작은 핍스퀴크 -item.gun_revolver_nopip.name=노박 -item.gun_revolver_blackjack.name=블랙잭 5슈터 -item.gun_revolver_silver.name=빌려준 총 -item.gun_revolver_red.name=레드 키 리볼버 -item.gun_deagle.name=빅 아이언 -item.gun_darter.name=다트건 -item.gun_calamity.name=재난 -item.gun_calamity_dual.name=안장총 -item.gun_minigun.name=CZ53 개인용 미니건 +item.grenade_if_spark.name=IF - S.-수류탄 +item.grenade_if_sticky.name=IF - 점착 수류탄 +item.grenade_if_toxic.name=IF - 독성 수류탄 +item.grenade_kit.name=수류탄 키트 +item.grenade_lemon.name=가연성 레몬 +item.grenade_mirv.name=MIRV 수류탄 +item.grenade_mk2.name=Mk 2 수류탄 "앰배서더 파인애플" +item.grenade_nuclear.name=누카 수류탄 +item.grenade_nuke.name=Mark VI 드릴 수류탄 +item.grenade_pink_cloud.name=핑크 클라우드 항아리 +item.grenade_plasma.name=플라즈마 수류탄 +item.grenade_poison.name=독 수류탄 +item.grenade_pulse.name=충격 수류탄 +item.grenade_schrabidium.name=슈라비디움 수류탄 +item.grenade_shrapnel.name=파편 수류탄 +item.grenade_smart.name=스마트 수류탄 +item.grenade_solinium.name=솔리늄 수류탄 +item.grenade_strong.name=향상된 수류탄 +item.grenade_tau.name=타우 수류탄 +item.grenade_zomg.name=네거티브 에너지 쌍 섬멸 수류탄 +item.gun_ar15.name=조롱 item.gun_avenger.name=CZ57 어벤저 미니건 -item.gun_lacunae.name=CZ33 아바돈 -item.gun_fatman.name=M42 핵 투석기 "팻맨" -item.gun_proto.name=M42 핵 투석기 "프로토 MIRV" -item.gun_mirv.name=M42 핵 투석기 "실험용 MIRV" +item.gun_b92.name=§9B92 에너지 권총§r +item.gun_b92_ammo.name=§9B92 에너지 셀§r (레거시) +item.gun_b93.name=§cB93 에너지 모드§r item.gun_bf.name=벨 -item.gun_mp40.name=기관단총 -item.gun_flechette.name=플레셰트 소총 -item.gun_uzi.name=IMI 우지 -item.gun_uzi_silencer.name=소음기를 장착한 IMI Uzi -item.gun_uzi_saturnite.name=토성 우지 -item.gun_uzi_saturnite_silencer.name=소음기가 장착된 토성 우지 -item.gun_uboinik.name=우보이니크 -item.gun_ks23.name=사무엘 더 빅 샷건 -item.gun_jshotgun.name=신비로운 산탄총 -item.gun_lever_action.name=암말의 다리 (원본) +item.gun_bf_ammo.name=베일파이어 쉘 item.gun_bolt_action.name=드림 볼트액션 라이플(오리지널) -item.gun_lever_action_dark.name=암말의 다리(어둠) -item.gun_bolt_action_green.name=드림 볼트액션 라이플(녹색) -item.gun_bolt_action_saturnite.name=토성 소총 +item.gun_bolt_action_ammo.name=12x74 슬러그(레거시) +item.gun_bolt_action_green.name=드림 볼트액션 소총(녹색) +item.gun_bolt_action_saturnite.name=새턴 라이플 item.gun_bolter.name=체 +item.gun_calamity.name=재난 +item.gun_calamity_ammo.name=.50 BMG 라운드(레거시) +item.gun_calamity_dual.name=안장총 +item.gun_cryolator.name=크라이올레이터 +item.gun_cryolator_ammo.name=극저온 셀 +item.gun_dampfmaschine.name=절대 농담 무기가 아닙니다 +item.gun_darter.name=다트 건 +item.gun_deagle.name=빅 아이언 +item.gun_defabricator.name=제세동기 +item.gun_defabricator_ammo.name=제세동기 에너지 셀 +item.gun_egon.name=글루온 건 +item.gun_emp.name=EMP 건 +item.gun_emp_ammo.name=에너지 셀 +item.gun_euthanasia.name=안락사 +item.gun_euthanasia_ammo.name=주사기 +item.gun_fatman.name=M42 핵 투석기 "팻맨" +item.gun_fatman_ammo.name=미니 누크 +item.gun_flamer.name=미스터 토파즈 +item.gun_flechette.name=플레셰트 라이플 +item.gun_folly.name=프로토타입 디감마 "폴리" +item.gun_hk69.name=수류탄 권총 +item.gun_hp.name=HPP 레이저젯 +item.gun_hp_ammo.name=잉크 카트리지 +item.gun_immolator.name=이몰레이터 +item.gun_immolator_ammo.name=이몰레이터 연료 +item.gun_jack.name=착암기 +item.gun_jack_ammo.name=4연장 산탄총 탄환 +item.gun_jshotgun.name=오컬트 산탄총 +item.gun_karl.name=칼 +item.gun_kit_1.name=건 오일 +item.gun_kit_2.name=건 수리 키트 +item.gun_ks23.name=빅 샷건 사무엘 +item.gun_lacunae.name=CZ33 아바돈 +item.gun_lacunae_ammo.name=5mm 라운드(레거시) +item.gun_lever_action.name=암말의 다리(원본) +item.gun_lever_action_ammo.name=12x74 벅샷(레거시) +item.gun_lever_action_dark.name=암말의 다리(어둠) item.gun_lever_action_sonata.name=뒤집힌 암말의 다리 item.gun_lever_action_sonata_2.name=§c소나타의 마이크§r -item.gun_b92.name=§9B92 에너지 피스톨§r -item.gun_b93.name=§cB93 에너지 모드§r -item.gun_xvl1456.name=XVL1456 타우 캐논 프로토타입 -item.gun_osipr.name=오버워치 표준형 펄스 소총 -item.gun_immolator.name=제물 -item.gun_flamer.name=미스터 토파즈 -item.gun_cryolator.name=크라이오레이터 -item.gun_mp.name=평화주의자의 기관총 -item.gun_zomg.name=ZOMG 캐논 -item.gun_emp.name=EMP 건 -item.gun_super_shotgun.name=슈퍼 샷건 -item.gun_thompson.name=톰슨 기관단총 -item.gun_sauer.name=스탠 사우어의 산탄총 +item.gun_minigun.name=CZ53 개인용 미니건 +item.gun_mirv.name=M42 핵 투석기 "실험용 MIRV" +item.gun_mirv_ammo.name=8중 MIRV item.gun_moist_nugget.name=모신나강 +item.gun_mp.name=평화주의자의 기관총 +item.gun_mp40.name=기관단총 +item.gun_mp40_ammo.name=기관단총 탄약 (LEGACY) +item.gun_mp_ammo.name=소형 추진제 없는 기관총 라운드 +item.gun_osipr.name=Overwatch 표준 발행 파동 소총 +item.gun_osipr_ammo.name=암흑 에너지 펄스 플러그 +item.gun_osipr_ammo2.name=공 결합 +item.gun_panzerschreck.name=판저슈렉 +item.gun_proto.name=M42 핵 투석기 "Proto MIRV" +item.gun_quadro.name=콰트로 포르마지 +item.gun_revolver.name=개량형 리볼버 +item.gun_revolver_ammo.name=리드 총알 +item.gun_revolver_blackjack.name=블랙잭 파이브슈터 +item.gun_revolver_cursed.name=저주받은 리볼버 +item.gun_revolver_cursed_ammo.name=강철 총알 +item.gun_revolver_gold.name=골든 리볼버 +item.gun_revolver_gold_ammo.name=황금 총알 item.gun_revolver_inverted.name=뒤집힌 리볼버 -item.gun_jack.name=착암기 -item.gun_spark.name=점화 플러그 -item.gun_hp.name=HPP 레이저젯 -item.gun_euthanasia.name=안락사 -item.gun_defabricator.name=패브리케이터 -item.gun_dampfmaschine.name=전혀 농담이 아닌 무기 -item.gun_folly.name=프로토타입 디감마 "폴리" -item.gun_vortex.name=와동 -item.cc_plasma_gun.name=[WIP] CC 플라즈마 건 -item.gun_egon.name=글루온건 - -item.nossy_hat.name=멋진 모자 -item.beta.name=베타 기능 -item.canteen_fab.name=멋진 보드카 -tile.muffler.name=머플러 - +item.gun_revolver_iron.name=단순 리볼버 item.gun_revolver_iron_ammo.name=총알 -item.gun_revolver_ammo.name=납탄 -item.gun_revolver_gold_ammo.name=황금 총알 -item.gun_revolver_lead_ammo.name=유리로 덮인 핵탄 -item.gun_revolver_schrabidium_ammo.name=슈라비듐 총알 -item.gun_revolver_cursed_ammo.name=강철탄 -item.gun_revolver_nightmare_ammo.name=악몽의 총알 +item.gun_revolver_lead.name=누카 리볼버 +item.gun_revolver_lead_ammo.name=유리로 덮인 핵 총알 +item.gun_revolver_nightmare.name=악몽 리볼버(오리지널) +item.gun_revolver_nightmare2.name=악몽 리볼버(다크) item.gun_revolver_nightmare2_ammo.name=레이저 벅샷 -item.gun_revolver_pip_ammo.name=오염된 총알(레거시) +item.gun_revolver_nightmare_ammo.name=악몽 총알 +item.gun_revolver_nopip.name=노박 item.gun_revolver_nopip_ammo.name=.44 매그넘 총알(레거시) -item.gun_calamity_ammo.name=.50 BMG 라운드(레거시) -item.gun_lacunae_ammo.name=5mm 원형(레거시) -item.gun_fatman_ammo.name=팻맨 핵 -item.gun_mirv_ammo.name=8중 MIRV -item.gun_bf_ammo.name=베일파이어 껍데기 -item.gun_mp40_ammo.name=기관단총탄(LEGACY) -item.gun_uzi_ammo.name=.22 LR 라운드(레거시) -item.gun_uboinik_ammo.name=12x70 벅샷(레거시) -item.gun_lever_action_ammo.name=12x74 벅샷(레거시) -item.gun_bolt_action_ammo.name=12x74 슬러그(레거시) -item.gun_b92_ammo.name=§9B92 Energy Cell§r (레거시) -item.gun_xvl1456_ammo.name=열화우라늄-235 상자 -item.gun_osipr_ammo.name=암흑 에너지 펄스 플러그 -item.gun_osipr_ammo2.name=공 결합 -item.gun_immolator_ammo.name=Immolator 연료 -item.gun_cryolator_ammo.name=크라이오 셀 -item.gun_mp_ammo.name=소형 추진제 없는 5.56mm 원형 -item.gun_emp_ammo.name=에너지 셀 -item.gun_jack_ammo.name=4연장 산탄총 포탄 +item.gun_revolver_pip.name=릴 핍스퀵 +item.gun_revolver_pip_ammo.name=오염된 총알(LEGACY) +item.gun_revolver_red.name=레드 키 리볼버 +item.gun_revolver_saturnite.name=새터나이트 슈터 +item.gun_revolver_schrabidium.name=슈라비디움 리볼버 +item.gun_revolver_schrabidium_ammo.name=슈라비디움 총알 +item.gun_revolver_silver.name=렌트 건 +item.gun_rpg.name=칼 구스타프 무반동포 +item.gun_rpg_ammo.name=로켓(레거시) +item.gun_sauer.name=스탠 사우어의 산탄총 +item.gun_skystinger.name=원 스카이 스팅거 +item.gun_spark.name=점화 플러그 item.gun_spark_ammo.name=전자기 카트리지 -item.gun_hp_ammo.name=잉크 카트리지 -item.gun_euthanasia_ammo.name=주사기 -item.gun_defabricator_ammo.name=제세동기 에너지 셀 - -item.ammo_mirv.name=미니 MIRV -item.ammo_mirv_high.name=미니 MIRV(고수율) -item.ammo_mirv_low.name=미니 MIRV(낮은 수율) -item.ammo_mirv_safe.name=미니 MIRV(안전) -item.ammo_mirv_special.name=미니 MILV -item.ammo_nuke.name=미니 핵 -item.ammo_nuke_high.name=미니 핵무기(고수율) -item.ammo_nuke_low.name=미니 핵무기(낮은 수율) -item.ammo_nuke_pumpkin.name=호박 폭탄 -item.ammo_nuke_safe.name=미니 핵무기(안전) -item.ammo_nuke_tots.name=미니 핵(타이니 토츠) - -item.ammo_12gauge.name=12게이지 벅샷 -item.ammo_12gauge_incendiary.name=12게이지 벅샷(방화) -item.ammo_12gauge_shrapnel.name=12게이지 벅샷(파탄) -item.ammo_12gauge_du.name=12게이지 벅샷(우라늄 코팅) -item.ammo_12gauge_sleek.name=12게이지 벅샷(IF-R&D) -item.ammo_12gauge_marauder.name=12게이지 전술적 약탈자 방지 쉘 -item.ammo_20gauge.name=20게이지 벅샷 -item.ammo_20gauge_slug.name=20게이지 브레네케 슬러그 -item.ammo_20gauge_flechette.name=20게이지 플레셰트 쉘 -item.ammo_20gauge_incendiary.name=20게이지 벅샷(방화) -item.ammo_20gauge_shrapnel.name=20게이지 벅샷(파탄) -item.ammo_20gauge_shock.name=20게이지 벅샷(충격) -item.ammo_20gauge_caustic.name=20게이지 벅샷(가성) -item.ammo_20gauge_explosive.name=20게이지 벅샷(폭발성) -item.ammo_20gauge_wither.name=20게이지 벅샷(위더링) -item.ammo_20gauge_sleek.name=20게이지 벅샷(IF-R&D) -item.ammo_4gauge.name=4게이지 벅샷 -item.ammo_4gauge_slug.name=4게이지 솔리드 스틸 슬러그 -item.ammo_4gauge_balefire.name=23mm 베일파이어 수류탄 -item.ammo_4gauge_canister.name=23mm 로켓(캐니스터 샷) -item.ammo_4gauge_claw.name=4게이지 클로 쉘 -item.ammo_4gauge_vampire.name=4 게이지 나무 스테이크 쉘 -item.ammo_4gauge_void.name=4게이지 보이드 쉘 -item.ammo_4gauge_explosive.name=23mm 수류탄 -item.ammo_4gauge_flechette.name=4게이지 플레셰트 쉘 -item.ammo_4gauge_flechette_phosphorus.name=4게이지 플레셰트 쉘(WP) -item.ammo_4gauge_kampf.name=23mm 로켓 -item.ammo_4gauge_semtex.name=23mm 마이닝 차지 -item.ammo_4gauge_sleek.name=4게이지 벅샷(IF-R&D) -item.ammo_5mm.name=5mm 원형 -item.ammo_5mm_explosive.name=5mm 원형(폭발성) -item.ammo_5mm_du.name=5mm 원형(DU) -item.ammo_5mm_star.name=5mm 원형(스타메탈) -item.ammo_75bolt.name=.75 볼트 탄창(30번째) -item.ammo_75bolt_incendiary.name=.75 소이 볼트 탄창(30번째) -item.ammo_75bolt_he.name=.75 볼트 고폭탄창(30번째) -item.ammo_50ae.name=.50 AE 라운드 -item.ammo_50ae_ap.name=.50 AE 라운드(갑옷 피어싱) -item.ammo_50ae_chlorophyte.name=.50 AE 라운드(엽록체) -item.ammo_50ae_du.name=.50 AE 라운드(DU) -item.ammo_50ae_star.name=.50 AE 라운드(스타메탈) -item.ammo_50bmg.name=.50 BMG 라운드 -item.ammo_50bmg_incendiary.name=.50 BMG 탄(발화탄) -item.ammo_50bmg_phosphorus.name=.50 BMG 탄(WP) -item.ammo_50bmg_sleek.name=.50 BMG 탄(IF-R&D) -item.ammo_50bmg_explosive.name=.50 BMG 탄(폭발성) -item.ammo_50bmg_ap.name=.50 BMG 라운드(갑옷 피어싱) -item.ammo_50bmg_chlorophyte.name=.50 BMG 탄(엽록체) -item.ammo_50bmg_du.name=.50 BMG 라운드(DU) -item.ammo_50bmg_star.name=.50 BMG 라운드(스타메탈) -item.ammo_9mm.name=9mm 원형 -item.ammo_9mm_ap.name=9mm 원형(아머 피어싱) -item.ammo_9mm_du.name=9mm 원형(DU) -item.ammo_9mm_rocket.name=9mm 로켓 -item.ammo_cell.name=에너지 셀 -item.ammo_dart.name=플라스틱 다트(시들음) -item.ammo_556.name=5.56mm 원형 -item.ammo_556_phosphorus.name=5.56mm 원형(WP) -item.ammo_556_sleek.name=5.56mm 원형(IF-R&D) -item.ammo_556_ap.name=5.56mm 원형(갑옷 피어싱) -item.ammo_556_chlorophyte.name=5.56mm 원형(엽록체) -item.ammo_556_du.name=5.56mm 원형(DU) -item.ammo_556_star.name=5.56mm 원형(스타메탈) -item.ammo_556_flechette.name=5.56mm 플레셰트 라운드 -item.ammo_556_flechette_incendiary.name=5.56mm 플레셰트탄(방화) -item.ammo_556_flechette_phosphorus.name=5.56mm 플레셰트 라운드(인 팁) -item.ammo_556_flechette_sleek.name=5.56mm 플레셰트 라운드(IF-R&D) -item.ammo_556_flechette_du.name=5.56mm 플레셰트 탄(우라늄 관통자) -item.ammo_556_tracer.name=5.56mm 원형(트레이서) -item.ammo_556_k.name=5.56mm K-라운드 -item.ammo_22lr.name=.22 LR 라운드 -item.ammo_22lr_ap.name=.22 LR 라운드(갑옷 피어싱) -item.ammo_22lr_chlorophyte.name=.22 LR 라운드(엽록체) -item.ammo_folly.name=실버 불릿(오리지널) -item.ammo_folly_nuclear.name=은총알(핵) -item.ammo_folly_du.name=은총알(DU, 비폭발성) -item.ammo_357_desh.name=.357 매그넘 데쉬 총알 -item.ammo_44.name=.44 매그넘 총알 -item.ammo_44_ap.name=.44 매그넘 총알(갑옷 피어싱) -item.ammo_44_du.name=.44 매그넘 총알(DU) -item.ammo_44_phosphorus.name=.44 매그넘 총알(WP) -item.ammo_44_star.name=.44 매그넘 총알(스타메탈) -item.ammo_44_pip.name=.44 매그넘 총알(박스카) -item.ammo_44_bj.name=.44 매그넘 총알(보트) -item.ammo_44_chlorophyte.name=.44 매그넘 총알(엽록소) -item.ammo_44_silver.name=.44 매그넘 총알(건물) -item.ammo_44_rocket.name=.44 매그넘 로켓 -item.ammo_rocket.name=84mm 로켓 -item.ammo_rocket_he.name=84mm 로켓(HE) -item.ammo_rocket_incendiary.name=84mm 로켓(방화) -item.ammo_rocket_phosphorus.name=84mm 로켓(WP) -item.ammo_rocket_shrapnel.name=84mm 로켓(파탄) -item.ammo_rocket_emp.name=84mm 로켓(펄스) -item.ammo_rocket_glare.name=84mm 로켓(적색 섬광) -item.ammo_rocket_toxic.name=84mm 로켓(화학) -item.ammo_rocket_sleek.name=84mm 로켓(IF-R&D) -item.ammo_rocket_nuclear.name=84mm 로켓(Привет) -item.ammo_rocket_rpc.name=84mm 로켓 추진 전기톱 -item.ammo_grenade.name=40mm 수류탄 -item.ammo_grenade_he.name=40mm 수류탄 (HE) -item.ammo_grenade_incendiary.name=40mm 수류탄(소이탄) -item.ammo_grenade_phosphorus.name=40mm 수류탄 (WP) -item.ammo_grenade_toxic.name=40mm 수류탄(화학) -item.ammo_grenade_concussion.name=40mm 수류탄(진탕) -item.ammo_grenade_finned.name=40mm 수류탄(핀 포함) -item.ammo_grenade_nuclear.name=40mm 수류탄 (Привет) -item.ammo_grenade_sleek.name=40mm 수류탄 (IF-R&D) -item.ammo_grenade_tracer.name=40mm 훈련용 수류탄 -item.ammo_grenade_kampf.name=40mm 로켓 -item.ammo_fuel.name=디젤 탱크 -item.ammo_fuel_napalm.name=네이팜 탱크 -item.ammo_fuel_phosphorus.name=WP 탱크 -item.ammo_fuel_vaporizer.name=기화기 탱크 -item.ammo_fuel_gas.name=가스 탱크 - -item.folly_shell.name=은탄 케이스 -item.folly_bullet.name=12.8cm 스타메탈 고에너지 쉘 -item.folly_bullet_nuclear.name=12.8cm 핵탄 -item.folly_bullet_du.name=12.8cm DU 쉘 - -item.cordite.name=코르다이트 -item.ballistite.name=탄도석 -item.plate_kevlar.name=케블라-세라믹 화합물 - -item.weaponized_starblaster_cell.name=§c조작된 별똥별 에너지 전지§r - -item.turret_light_ammo.name=경량 MG 터렛 탄약 상자 -item.turret_heavy_ammo.name=중MG 포탑 탄약 -item.turret_rocket_ammo.name=로켓 포탑 2x4 탄약 -item.turret_flamer_ammo.name=화염 터렛 연료 탱크 -item.turret_tau_ammo.name=타우 터렛 우라늄 탄약 -item.turret_spitfire_ammo.name=AA-쉘 -item.turret_cwis_ammo.name=CIWS 20mm 탄약통 -item.turret_cheapo_ammo.name=6x24 Cheapo 포탑 탄약 - -item.clip_revolver_iron.name=철제 탄약 상자 -item.clip_revolver.name=납탄 상자 -item.clip_revolver_gold.name=황금 총알이 담긴 작은 상자 -item.clip_revolver_schrabidium.name=슈라비듐 탄약통 -item.clip_rpg.name=로켓 컨테이너 -item.clip_xvl1456.name=대형 동위원소 상자 -item.clip_osipr.name=AR2 매거진 -item.clip_immolator.name=Immolator 연료 탱크 -item.clip_cryolator.name=냉동기 연료 탱크 -item.clip_revolver_lead.name=핵탄알 상자 -item.clip_revolver_cursed.name=브리타니아 군사 표준 발행물 피솔 탄창 -item.clip_fatman.name=미니 핵무기 6개 팩 -item.clip_mirv.name=미니 MIRV의 3가지 기능이 모두 포함된 팩 -item.clip_bf.name=베일파이어 쉘 더블 팩 -item.clip_mp.name=브리타니아 군사 표준 발행 돌격소총 탄창 -item.clip_mp40.name=9mm SMG 탄창 -item.clip_uzi.name=32번째 .22 LR 탄창 -item.clip_uboinik.name=12x70 벅샷 탄 상자 -item.clip_lever_action.name=12x74 벅샷 탄 상자 -item.clip_bolt_action.name=12x74 슬러그 상자 -item.clip_emp.name=소형 에너지 셀 팩 -item.clip_revolver_nightmare.name=총알 가방 -item.clip_revolver_nightmare2.name=레이저 벅샷 벨트 -item.clip_revolver_pip.name=오염된 총알이 장착된 스피드로더 -item.clip_revolver_nopip.name=.44발 상자 -item.clip_stinger.name=스팅어 로켓 팩 -item.clip_jack.name=4중 12x70 산탄총 상자 -item.clip_spark.name=대형 전자기 카트리지 -item.clip_hp.name=잉크탱크 -item.clip_euthanasia.name=최후의 수단 키트 -item.clip_defabricator.name=제세동기 에너지 셀이 포함된 벨트 - -item.ammo_container.name=탄약통 - -tile.block_schrabidium.name=Schrabidium-326 블록 -tile.block_euphemium.name=유페미움 블록 -tile.block_schrabidium_cluster.name=슈라비듐 클러스터 -tile.block_euphemium_cluster.name=유페미움 에칭 슈라비듐 클러스터 -item.plate_gold.name=금 접시 - -item.syringe_empty.name=빈 주사기 -item.syringe_antidote.name=해독제 -item.syringe_poison.name=독성 주사 -item.syringe_awesome.name=엄청난 -item.syringe_metal_empty.name=금속 주사기 -item.syringe_metal_stimpak.name=스팀팩 -item.syringe_metal_medx.name=메드-엑스 -item.syringe_metal_psycho.name=사이코 -item.syringe_metal_super.name=슈퍼 스팀팩 -item.syringe_taint.name=워터리 테인트 주입 -item.med_bag.name=의사의 가방 -item.iv_blood.name=혈액 가방 -item.iv_empty.name=IV 가방 -item.iv_xp.name=체험가방 -item.iv_xp_empty.name=빈 경험치 가방 -item.radaway.name=라드어웨이 백 -item.radaway_strong.name=강력한 RadAway 가방 -item.radaway_flush.name=엘리트 RadAway 가방 -item.radx.name=래드-X -item.pill_iodine.name=요오드 알약 -item.pill_herbal.name=허브 페이스트 -item.plan_c.name=플랜 C -item.med_ipecac.name=아이펙시럽 -item.med_ptsd.name=PTSD 약물 -item.med_schiziphrenia.name=정신분열증 약물 -item.gas_mask_filter.name=가스 마스크 필터 -item.gas_mask_filter_mono.name=촉매 마스크 필터 -item.gas_mask_filter_combo.name=방독면 콤보 필터 -item.gas_mask_filter_radon.name=가스 마스크 오메가 필터 -item.gas_mask_filter_piss.name=고급 임시 방독면 필터 -item.gas_mask_filter_rag.name=임시 방독면 필터 -item.gas_mask_mono.name=하프마스크 -item.mask_piss.name=트렌치 마스크 -item.mask_damp.name=조잡한 보호 마스크 -item.mask_rag.name=드라이 마스크 -item.rag.name=옷감 -item.rag_damp.name=젖은 천 -item.rag_piss.name=오줌에 젖은 걸레 -item.cladding_paint.name=납 페인트 -item.cladding_rubber.name=고무 클래딩 -item.cladding_lead.name=납 클래딩 -item.cladding_desh.name=데쉬 클래딩 -item.cladding_paa.name=PaA 합금 클래딩 -item.cladding_ghiorsium.name=기오르슘 클래딩 -item.cladding_euphemium.name=유페늄 클래딩 -item.cladding_di.name=디뉴트로늄 클래딩 -item.cladding_electronium.name=일렉트로늄 클래딩 -item.v1.name=V1 - -item.stealth_boy.name=스텔스 장치 - -entity.entity_bullet.name=총알 -entity.entity_bullet_mk2.name=총알 -entity.entity_rocket.name=로켓 -entity.entity_schrabnel.name=슈라브넬 -entity.entity_nuclear_creeper.name=핵 크리퍼 -entity.entity_tainted_creeper.name=오염된 크리퍼 -entity.entity_hunter_chopper.name=헌터 헬기 -entity.entity_cyber_crab.name=사이버 크랩 -entity.entity_tesla_crab.name=테슬라 크랩 -entity.entity_taint_crab.name=테인트 크랩 -entity.entity_balls_o_tron.name=볼스오트론 프라임 -entity.entity_balls_o_tron_seg.name=볼-오-트론 세그먼트 -entity.entity_mask_man.name=마스크맨 -entity.entity_fucc_a_ducc.name=오리 -entity.entity_glowing_one.name=빛나는 하나 -entity.entity_elder_one.name=Quackos The Elder One -entity.entity_ntm_fbi.name=FBI 요원 -entity.entity_ntm_radiation_blaze.name=멜트다운 정령 -entity.entity_ntm_ufo.name=화성 침공선 -entity.entity_rbmk_debris.name=방사성 RBMK 잔해 - -item.cap_aluminium.name=알루미늄 캡 -item.hull_small_steel.name=작은 강철 껍질 -item.hull_small_aluminium.name=작은 알루미늄 껍질 +item.gun_stinger.name=FIM-92 스팅거 +item.gun_stinger_ammo.name=스팅어 로켓 +item.gun_super_shotgun.name=슈퍼 산탄총 +item.gun_thompson.name=톰슨 기관단총 +item.gun_uboinik.name=우보이니크 +item.gun_uboinik_ammo.name=12x70 벅샷(레거시) +item.gun_uzi.name=IMI 우지 +item.gun_uzi_ammo.name=.22 LR 라운드(레거시) +item.gun_uzi_saturnite.name=새터나이트 우지 +item.gun_uzi_saturnite_silencer.name=소음기가 있는 새터나이트 우지 +item.gun_uzi_silencer.name=소음기가 장착된 IMI Uzi +item.gun_vortex.name=와동 +item.gun_xvl1456.name=XVL1456 타우 캐논 프로토타입 +item.gun_xvl1456_ammo.name=열화 우라늄-235 상자 +item.gun_zomg.name=ZOMG 캐논 +item.hand_drill.name=핸드 드릴 +item.hazmat_boots.name=방호복 장화 +item.hazmat_boots_grey.name=고성능 방호 장화 +item.hazmat_boots_red.name=고급 위험 물질 장화 +item.hazmat_cloth.name=방호복 +item.hazmat_cloth_grey.name=납 강화 위험물 천 +item.hazmat_cloth_red.name=고급 방호복 +item.hazmat_grey_kit.name=고성능 위험 물질 키트 +item.hazmat_helmet.name=위험 물질 헬멧 +item.hazmat_helmet_grey.name=고성능 방호 헬멧 +item.hazmat_helmet_red.name=고급 위험 물질 헬멧 +item.hazmat_kit.name=위험 물질 키트 +item.hazmat_legs.name=방호복 다리보호구 +item.hazmat_legs_grey.name=고성능 방호복 레깅스 +item.hazmat_legs_red.name=고급 방호복 다리보호구 +item.hazmat_paa_boots.name=PaA 전투 방호복 부츠 +item.hazmat_paa_helmet.name=PaA 전투 방호복 헬멧 +item.hazmat_paa_legs.name=PaA 전투 방호복 레깅스 +item.hazmat_paa_plate.name=PaA 전투 방호복 흉갑 +item.hazmat_plate.name=위험물 흉갑 +item.hazmat_plate_grey.name=고성능 방호물 흉갑 +item.hazmat_plate_red.name=고급 방호물 흉갑 +item.hazmat_red_kit.name=고급 위험 물질 키트 +item.heart_booster.name=하트 부스터 +item.heart_container.name=하트 컨테이너 +item.heart_fab.name=팹 하트 +item.heart_piece.name=하트 조각 +item.hev_battery.name=슈트 배터리 +item.hev_boots.name=HEV 마크 IV 부츠 +item.hev_helmet.name=HEV 마크 IV 헬멧 +item.hev_legs.name=HEV 마크 IV 레깅스 +item.hev_plate.name=HEV 마크 IV 체스트플레이트 +item.hf_sword.name=고주파 검 +item.horseshoe_magnet.name=말굽 자석 +item.hs_sword.name=초경질 강철 검 +item.hull_big_aluminium.name=큰 알루미늄 쉘 item.hull_big_steel.name=큰 강철 껍질 -item.hull_big_aluminium.name=큰 알루미늄 껍질 item.hull_big_titanium.name=큰 티타늄 껍질 -item.fins_flat.name=편평한 강철 케이싱 -item.fins_small_steel.name=소형 강철 그리드 핀 -item.fins_big_steel.name=큰 강철 그리드 핀 -item.fins_tri_steel.name=대형 강철 핀 -item.fins_quad_titanium.name=소형 티타늄 핀 -item.sphere_steel.name=강철 구체 -item.pedestal_steel.name=강철 받침대 -item.dysfunctional_reactor.name=기능 장애가 있는 원자로 - -item.rotor_steel.name=대형 강철 로터 -item.generator_steel.name=발전기 본체 -item.blade_titanium.name=티타늄 블레이드 -item.turbine_titanium.name=티타늄 증기 터빈 -item.generator_front.name=발전기 전면 -item.blade_tungsten.name=텅스텐 강화 블레이드 -item.turbine_tungsten.name=강화된 터보팬 블레이드 - -item.combine_scrap.name=CMB 고철 -item.chopper_head.name=헌터 헬기 조종석 -item.chopper_gun.name=배치용 총 -item.chopper_torso.name=헌터 쵸퍼 바디 -item.chopper_tail.name=헌터 쵸퍼 테일 -item.chopper_wing.name=헌터 헬기 날개 -item.chopper_blades.name=헌터 헬기 로터 블레이드 - +item.hull_small_aluminium.name=작은 알루미늄 쉘 +item.hull_small_steel.name=작은 강철 셸 item.igniter.name=점화기 -item.watch.name=부서진 회중시계 -item.apple_euphemium.name=유페미엄 사과 -item.ingot_euphemium.name=유페늄 주괴 -item.nugget_euphemium.name=유페늄 조각 -item.rod_quad_euphemium.name=번아웃 사중 슈라비듐 막대 -item.plate_euphemium.name=유페늄 복합 플레이트 -item.plate_dineutronium.name=디뉴트로늄 복합 플레이트 -item.plate_desh.name=데쉬 컴파운드 플레이트 - -item.euphemium_helmet.name=유페미움 헬멧 -item.euphemium_plate.name=유페미움 흉갑 -item.euphemium_legs.name=유페늄 레깅스 -item.euphemium_boots.name=유페미움 부츠 - -item.bj_boots.name=달빛 스터드 부츠 -item.bj_helmet.name=열 센서가 장착된 안대 -item.bj_legs.name=달의 사이버네틱 다리 교체 -item.bj_plate.name=달의 사이버네틱 도금 -item.bj_plate_jetpack.name=달의 사이버네틱 도금(날개) - -item.schrabidium_helmet.name=슈라비듐 헬멧 -item.schrabidium_plate.name=슈라비듐 흉갑 -item.schrabidium_legs.name=가시낭 다리보호구 -item.schrabidium_boots.name=슈라비듐 부츠 -item.schrabidium_sword.name=슈라비듐 소드 -item.schrabidium_pickaxe.name=슈라비듐 곡괭이 -item.schrabidium_axe.name=슈라비듐 도끼 -item.schrabidium_shovel.name=슈라비듐 삽 -item.schrabidium_hoe.name=슈라비듐 괭이 - +item.industrial_magnet.name=산업용 자석 +item.inf_antimatter.name=무한 반물질 탱크 +item.inf_antischrabidium.name=무한 안티슈라비디움 탱크 +item.inf_coolant.name=무한 냉각수 탱크 +item.inf_deuterium.name=무한 중수소 탱크 +item.inf_diesel.name=무한 디젤 탱크 +item.inf_sulfur.name=무한 유황 탱크 +item.inf_tritium.name=무한 트리튬 탱크 +item.inf_water.name=무한 물탱크 +item.inf_water_mk2.name=헤비 무한 수조 +item.ingot_ac227.name=악티늄-227 주괴 +item.ingot_actinium.name=준안정 악티늄 주괴 +item.ingot_advanced_alloy.name=고급 합금 주괴 +item.ingot_aluminium.name=알루미늄 잉곳 +item.ingot_am241.name=아메리슘-241 주괴 +item.ingot_am242.name=아메리슘-242 주괴 +item.ingot_am_mix.name=반응기 등급 아메리슘 주괴 +item.ingot_americium_fuel.name=아메리슘 연료 주괴 +item.ingot_asbestos.name=석면 시트 +item.ingot_au198.name=금-198 주괴 +item.ingot_australium.name=오스트랄륨 주괴 +item.ingot_beryllium.name=베릴륨 주괴 +item.ingot_bismuth.name=비스무트 잉곳 +item.ingot_boron.name=붕소 주괴 +item.ingot_bromine.name=브롬 주괴 +item.ingot_caesium.name=세슘 주괴 +item.ingot_cerium.name=세륨 주괴 +item.ingot_chainsteel.name=헤비 체인스틸 +item.ingot_co60.name=코발트-60 주괴 +item.ingot_cobalt.name=코발트 주괴 +item.ingot_combine_steel.name=CMB 스틸 잉곳 +item.ingot_copper.name=산업 등급 구리 +item.ingot_daffergon.name=Daffergon 주괴 +item.ingot_desh.name=데쉬 잉곳 +item.ingot_dineutronium.name=다이뉴트로늄 잉곳 +item.ingot_dura_steel.name=고속도강 주괴 +item.ingot_electronium.name=전자 주괴 +item.ingot_euphemium.name=완곡 주괴 +item.ingot_fiberglass.name=유리 섬유 바 +item.ingot_gh336.name=기오르슘-336 주괴 +item.ingot_graphite.name=흑연 주괴 +item.ingot_hes.name=고농축 Schrabidium 연료 주괴 +item.ingot_i131.name=요오드-131 주괴 +item.ingot_iodine.name=요오드 주괴 +item.ingot_lanthanium.name=준안정 란타늄 주괴 +item.ingot_lead.name=납 주괴 +item.ingot_les.name=저농축 Schrabidium 연료 주괴 +item.ingot_magnetized_tungsten.name=자화 텅스텐 주괴 +item.ingot_meteorite.name=운석 주괴 +item.ingot_meteorite_forged.name=단조 운석 주괴 +item.ingot_mox_fuel.name=MOX 연료 주괴 +item.ingot_neodymium.name=네오디뮴 주괴 +item.ingot_neptunium.name=넵투늄-237 주괴 +item.ingot_neptunium_fuel.name=넵투늄 연료 주괴 +item.ingot_niobium.name=니오븀 주괴 +item.ingot_pb209.name=Lead-209 잉곳 +item.ingot_phosphorus.name=백린의 바 +item.ingot_plutonium.name=플루토늄 잉곳 +item.ingot_plutonium_fuel.name=플루토늄 연료 주괴 +item.ingot_polonium.name=폴로늄-210 주괴 +item.ingot_polymer.name=폴리머 바 +item.ingot_pu238.name=플루토늄-238 주괴 +item.ingot_pu239.name=플루토늄-239 주괴 +item.ingot_pu240.name=플루토늄-240 주괴 +item.ingot_pu241.name=플루토늄-241 주괴 +item.ingot_pu_mix.name=원자로 등급 플루토늄 잉곳 +item.ingot_ra226.name=라듐-226 주괴 +item.ingot_radspice.name=네오벨린 주괴 +item.ingot_red_copper.name=Minecraft 등급 구리 +item.ingot_reiium.name=레이움 주괴 +item.ingot_saturnite.name=토성 주괴 +item.ingot_schrabidate.name=Ferric Schrabidate 주괴 +item.ingot_schrabidium.name=Schrabidium-326 주괴 +item.ingot_schrabidium_fuel.name=슈라비디움 연료 주괴 +item.ingot_schraranium.name=슈라라늄 주괴 +item.ingot_semtex.name=Semtex의 바 +item.ingot_smore.name=스모어 주괴 +item.ingot_solinium.name=솔리늄-327 주괴 +item.ingot_sr90.name=스트론튬-90 주괴 +item.ingot_starmetal.name=§9성금속 주괴§r +item.ingot_steel.name=강철 주괴 +item.ingot_steel_dusted.name=가루를 뿌린 강철 주괴 +item.ingot_strontium.name=스트론튬 주괴 +item.ingot_tantalium.name=탄탈륨 주괴 +item.ingot_tcalloy.name=테크네튬 강철 주괴 +item.ingot_technetium.name=테크네튬-99 주괴 +item.ingot_tennessine.name=테네신-294 주괴 +item.ingot_th232.name=토륨-232 주괴 +item.ingot_thorium_fuel.name=토륨 연료 주괴 +item.ingot_titanium.name=티타늄 잉곳 +item.ingot_tungsten.name=텅스텐 잉곳 +item.ingot_u233.name=우라늄-233 주괴 +item.ingot_u235.name=우라늄-235 주괴 +item.ingot_u238.name=우라늄-238 주괴 +item.ingot_u238m2.name=준안정 우라늄-238-2 주괴 +item.ingot_unobtainium.name=언옵티늄 주괴 +item.ingot_uranium.name=우라늄 주괴 +item.ingot_uranium_fuel.name=우라늄 연료 주괴 +item.ingot_verticium.name=버티시움 주괴 +item.ingot_weidanium.name=와이다늄 주괴 +item.ingot_zirconium.name=지르코늄 큐브 +item.injector_5htp.name=5-HTP 자가주사기 +item.injector_knife.name=8인치 블레이드 자동주사기 +item.ink.name=林 — 잉크 +item.insert_di.name=다이뉴트로늄 인서트 +item.insert_doxium.name=Astolfium-Doped Doxium 삽입 +item.insert_du.name=뒤 삽입 +item.insert_era.name=폭발 반응 장갑 삽입물 +item.insert_esapi.name=ESAPI 삽입 +item.insert_ghiorsium.name=기오르슘 인서트 +item.insert_kevlar.name=케블라 인서트 +item.insert_polonium.name=폴로늄 인서트 +item.insert_sapi.name=SAPI 삽입 +item.insert_steel.name=헤비 스틸 인서트 +item.insert_xsapi.name=XSAPI 삽입 +item.insert_yharonite.name=야로나이트 인서트 +item.jackt.name=스타일리시한 발리스틱 재킷 +item.jackt2.name=Damn Stylish Ballistic Jacket 2: 도쿄 드리프트 item.jetpack_boost.name=부스트팩 -item.jetpack_fly.name=제트팩 item.jetpack_break.name=브레이크팩 -item.jetpack_vector.name=벡터화된 제트팩 +item.jetpack_fly.name=제트팩 item.jetpack_glider.name=글라이더 제트팩 item.jetpack_tank.name=제트팩 예비 연료 탱크 - -item.gun_kit_1.name=총기름 -item.gun_kit_2.name=총 수리 키트 - -item.chainsaw.name=전기톱 -item.crowbar.name=Mk.V 상자 개봉 장치 "지렛대" -item.crucible.name=도가니 -item.hs_sword.name=초경강검 -item.hf_sword.name=고주파 검 - -item.ingot_chainsteel.name=무거운 사슬강철 -item.ingot_steel_dusted.name=먼지를 뿌린 강철 주괴 - -item.wrench.name=파이프 렌치 -item.wrench_flipped.name=렌치의 칼날 -item.memespoon.name=§e마켓 가든 - -item.mask_of_infamy.name=악명 높은 가면 - -tile.det_cord.name=데트 코드 -tile.det_charge.name=폭발물 -tile.det_nuke.name=핵전하 -tile.det_miner.name=채굴 비용 -tile.red_barrel.name=폭발성 배럴 -tile.pink_barrel.name=등유 배럴 -tile.lox_barrel.name=LOX 배럴 -tile.taint_barrel.name=IMP 잔류물 배럴 -tile.yellow_barrel.name=방사성 배럴 -tile.vitrified_barrel.name=유리화된 핵 폐기물 드럼 - -item.designator.name=단거리 표적 지정자 -item.designator_range.name=장거리 표적 지정자 -item.designator_manual.name=수동 타겟 지정자 -item.missile_assembly.name=소형 미사일 조립 -item.missile_generic.name=고폭미사일 -item.missile_anti_ballistic.name=대탄도미사일 -item.missile_incendiary.name=소이 미사일 -item.missile_cluster.name=클러스터 미사일 +item.jetpack_vector.name=벡터화된 제트팩 +item.key.name=열쇠 +item.key_fake.name=위조 키 +item.key_kit.name=키 모조 키트 +item.key_red.name=레드 키 +item.laser_crystal_bale.desc=다이뉴트로늄 케이싱의 버티시움으로 코팅된 발레펠렛 +item.laser_crystal_bale.name=베일 레이저 크리스탈 +item.laser_crystal_bismuth.desc=비스무트-사마륨-우라늄-토륨 크리스탈 매트릭스 +item.laser_crystal_bismuth.name=BiSmUTh 레이저 크리스탈 +item.laser_crystal_cmb.desc=CMB-Daffergon 합금 격자에 매달린 Xenon135 +item.laser_crystal_cmb.name=크세논-다퍼곤 레이저 크리스탈 +item.laser_crystal_co2.desc=Crystalline Desh에 싸인 이산화탄소 +item.laser_crystal_co2.name=CO2-Desh 레이저 크리스탈 +item.laser_crystal_dem.desc=데몬-슈라비데이트-테네신-탄탈륨 페르미온 초결정 +item.laser_crystal_dem.name=데몬 레이저 크리스탈 +item.laser_crystal_digamma.name=디감마 레이저 크리스탈 +item.laser_crystal_nano.desc=다결정 내부의 420km 길이 탄소 나노튜브 안테나 +item.laser_crystal_nano.name=나노튜브 레이저 크리스탈 +item.laser_crystal_pentacene.desc=고급 합금으로 코팅된 Excited Pentacene Crystal +item.laser_crystal_pentacene.name=Pentacene 레이저 크리스탈 +item.lead_gavel.name=납 망치 +item.lemon.name="레몬" +item.letter.name=빠른 우편 +item.levitation_unit.name=중력 조작자 +item.lignite.name=갈탄 +item.limiter.name=제너레이터 리미터 +item.linker.name=텔레링커 +item.liquidator_boots.name=청산인 수트 부츠 +item.liquidator_helmet.name=청산인 슈트 헬멧 +item.liquidator_legs.name=청산인 슈트 레깅스 +item.liquidator_plate.name=청산인 수트 흉갑 +item.lithium.name=리튬 큐브 +item.lodestone.name=천연 자석 +item.loop_stew.name=IT 조식 +item.loops.name=루프스 +item.loot_10.name=크기 10 미사일 전리품 상자 +item.loot_15.name=크기 15 미사일 전리품 상자 +item.loot_misc.name=일반 미사일 전리품 상자 +item.lung_diagnostic.name=폐 진단 +item.magnet_circular.name=편평한 자석 +item.magnet_dee.name=디 자석 +item.magnetron.name=마그네트론 +item.man_core.name=플루토늄 코어 +item.man_explosive.name=폭발 렌즈 +item.man_explosive8.name=내파 추진제 묶음 +item.man_igniter.name=폭탄 점화기 +item.man_kit.name=팻맨 키트 +item.marshmallow.name=막대기에 마시멜로 +item.marshmallow_roasted.name=막대기에 마시멜로 +item.mask_of_infamy.name=악명의 가면 +item.matchstick.name=성냥개비 +item.mech_key.name=큰 은열쇠 +item.mechanism_launcher_1.name=실행기 메커니즘 +item.mechanism_launcher_2.name=고급 런처 메커니즘 +item.mechanism_revolver_1.name=리볼버 메커니즘 +item.mechanism_revolver_2.name=고급 리볼버 메커니즘 +item.mechanism_rifle_1.name=라이플 메커니즘 +item.mechanism_rifle_2.name=고급 라이플 메커니즘 +item.mechanism_special.name=첨단 무기 메커니즘 +item.med_bag.name=의사의 가방 +item.med_ipecac.name=아이펙 시럽 +item.med_ptsd.name=PTSD 약물 +item.med_schiziphrenia.name=정신 분열증 약물 +item.medal_ghoul.name=공인 구울 +item.medal_liquidator.name=청산인 메달 +item.meltdown_tool.name=Dyatlov 인스턴트 멜트다운 애플리케이터 +item.memespoon.name=§e마켓 정원사 +item.memory.name=항목.null.이름 +item.mese_gavel.name=메세 가벨 +item.mese_pickaxe.name=메세 곡괭이 +item.meteor_remote.name=운석 원격 +item.meteorite_sword.name=운석 검 +item.meteorite_sword_alloyed.name=운석검(합금) +item.meteorite_sword_baleful.name=메테오라이트 소드(Baleful) +item.meteorite_sword_bred.name=운석 검(번식) +item.meteorite_sword_etched.name=운석검(에칭) +item.meteorite_sword_fused.name=운석검(융합) +item.meteorite_sword_hardened.name=운석검(강화) +item.meteorite_sword_irradiated.name=운석검(방사능) +item.meteorite_sword_machined.name=운석검(가공) +item.meteorite_sword_reforged.name=운석검(리포지드) +item.meteorite_sword_seared.name=운석 검(그을린) +item.meteorite_sword_treated.name=운석 검(치료) +item.mike_cooling_unit.name=중수소 냉각 장치 +item.mike_core.name=우라늄 코팅 중수소 탱크 +item.mike_deut.name=중수소 탱크 +item.mike_kit.name=아이비 마이크 키트 +item.mirror_tool.desc=보일러를 마우스 오른쪽 버튼으로 클릭하여 위치를 기억합니다.$거울을 클릭하여 보일러 방향으로 돌립니다. +item.mirror_tool.linked=정렬 위치 설정! +item.mirror_tool.name=미러 조정 도구 +item.missile_anti_ballistic.name=대탄도 미사일 +item.missile_assembly.name=소형 미사일 어셈블리 +item.missile_bhole.name=블랙홀 미사일 +item.missile_burst.name=예비 미사일 item.missile_buster.name=벙커 버스터 -item.missile_strong.name=강력한 HE 미사일 -item.missile_incendiary_strong.name=강력한 소이 미사일 +item.missile_buster_strong.name=향상된 벙커 버스터 +item.missile_carrier.name=HTR-01 캐리어 로켓 +item.missile_cluster.name=클러스터 미사일 item.missile_cluster_strong.name=강력한 클러스터 미사일 -item.missile_buster_strong.name=강화된 벙커 파괴자 -item.missile_emp_strong.name=강력한 EMP 미사일 -item.missile_burst.name=예비 미사일 -item.missile_inferno.name=인페르노 미사일 GRN Mk.II -item.missile_rain.name=폭탄 비 +item.missile_custom.name=맞춤형 미사일 +item.missile_doomsday.name=둠스데이 미사일 item.missile_drill.name=콘크리트 크래커 -item.missile_nuclear.name=핵미사일 -item.missile_nuclear_cluster.name=열핵 미사일 +item.missile_emp.name=EMP 미사일 +item.missile_emp_strong.name=강력한 EMP 미사일 item.missile_endo.name=흡열 미사일 item.missile_exo.name=발열 미사일 -item.missile_doomsday.name=최후의 심판 미사일 +item.missile_generic.name=고폭 미사일 +item.missile_incendiary.name=소이 미사일 +item.missile_incendiary_strong.name=강력한 소이 미사일 +item.missile_inferno.name=인페르노 미사일 G.R.N. Mk.II +item.missile_kit.name=미사일 키트 +item.missile_micro.name=소핵미사일 +item.missile_nuclear.name=핵미사일 +item.missile_nuclear_cluster.name=열핵 미사일 +item.missile_rain.name=폭탄 비 +item.missile_schrabidium.name=슈라비디움 미사일 +item.missile_skin_camo.name=미사일 스킨: 카모 +item.missile_skin_desert.name=미사일 스킨: 데저트 카모 +item.missile_skin_flames.name=미사일 스킨: 아픈 불꽃 +item.missile_skin_manly_pink.name=미사일 스킨: 맨리 핑크 +item.missile_skin_metal.name=미사일 스킨: 메탈 +item.missile_skin_orange_insulation.name=미사일 스킨: 오렌지 인슐레이션 +item.missile_skin_sleek.name=미사일 스킨: IF-R&D +item.missile_skin_soviet_glory.name=미사일 스킨: 소련의 영광 +item.missile_skin_soviet_stank.name=미사일 스킨: 소비에트 스탠크 +item.missile_soyuz0.name=소유즈-FG +item.missile_soyuz1.name=소유즈-FG +item.missile_soyuz2.name=소유즈-FG +item.missile_soyuz_lander.name=궤도 모듈 +item.missile_strong.name=강력한 HE 미사일 item.missile_taint.name=오염된 미사일 -item.missile_micro.name=초소형 미사일 -item.missile_bhole.name=블랙홀 미사일 -item.missile_schrabidium.name=슈라비듐 미사일 -item.missile_emp.name=EMP 미사일 - -item.seg_10.name=크기 10 커넥터 -item.seg_15.name=크기 15 커넥터 -item.seg_20.name=크기 20 커넥터 - +item.missile_volcano.name=지각 미사일 +item.morning_glory.name=나팔꽃 +item.motor.name=모터 +item.motor_desh.name=데시 모터 item.mp_c_1.name=Tier 1 미사일 타겟팅 회로 item.mp_c_2.name=Tier 2 미사일 타겟팅 회로 item.mp_c_3.name=Tier 3 미사일 타겟팅 회로 item.mp_c_4.name=Tier 4 미사일 타겟팅 회로 item.mp_c_5.name=Tier 5 미사일 타겟팅 회로 - -item.mp_warhead_10_he.name=크기 10 HE 탄두 -item.mp_warhead_10_incendiary.name=크기 10 소이탄두 -item.mp_warhead_10_buster.name=크기 10 벙커 버스터 탄두 -item.mp_warhead_10_nuclear.name=크기 10 미세 핵탄두 -item.mp_warhead_10_taint.name=크기 10 오염된 탄두 -item.mp_warhead_10_cloud.name=크기 10 핑크 클라우드 탄두 -item.mp_warhead_15_he.name=크기 15 HE 탄두 -item.mp_warhead_15_incendiary.name=크기 15 소이 탄두 -item.mp_warhead_10_nuclear_large.name=크기 10 핵탄두 -item.mp_warhead_15_nuclear.name=크기 15 핵탄두 -item.mp_warhead_15_thermo.name=크기 15 열핵탄두 -item.mp_warhead_15_nuclear_shark.name=크기 15 핵탄두 -item.mp_warhead_15_boxcar.name=사이즈 15 박스카? -item.mp_warhead_15_n2.name=크기 15 N² 광산 -item.mp_warhead_15_balefire.name=크기 15 베일파이어 탄두 -item.mp_warhead_15_mirv.name=크기 15 MIRV 탄두 - +item.mp_fuselage_10_15_balefire.name=크기 10/15 BF 동체 +item.mp_fuselage_10_15_hydrogen.name=크기 10/15 수소 동체 +item.mp_fuselage_10_15_kerosene.name=크기 10/15 등유 동체 +item.mp_fuselage_10_15_solid.name=크기 10/15 고체 연료 동체 item.mp_fuselage_10_kerosene.name=크기 10 등유 동체 item.mp_fuselage_10_kerosene_camo.name=크기 10 등유 동체 item.mp_fuselage_10_kerosene_desert.name=크기 10 등유 동체 -item.mp_fuselage_10_kerosene_sky.name=크기 10 등유 동체 -item.mp_fuselage_10_kerosene_insulation.name=크기 10 등유 동체 item.mp_fuselage_10_kerosene_flames.name=크기 10 등유 동체 -item.mp_fuselage_10_kerosene_sleek.name=크기 10 등유 동체 +item.mp_fuselage_10_kerosene_insulation.name=크기 10 등유 동체 item.mp_fuselage_10_kerosene_metal.name=크기 10 등유 동체 +item.mp_fuselage_10_kerosene_sky.name=크기 10 등유 동체 +item.mp_fuselage_10_kerosene_sleek.name=크기 10 등유 동체 item.mp_fuselage_10_kerosene_taint.name=크기 10 등유 동체 -item.mp_fuselage_10_solid.name=크기 10 고체 연료 동체 -item.mp_fuselage_10_solid_flames.name=크기 10 고체 연료 동체 -item.mp_fuselage_10_solid_insulation.name=크기 10 고체 연료 동체 -item.mp_fuselage_10_solid_sleek.name=크기 10 고체 연료 동체 -item.mp_fuselage_10_solid_soviet_glory.name=크기 10 고체 연료 동체 -item.mp_fuselage_10_solid_cathedral.name=크기 10 고체 연료 동체 -item.mp_fuselage_10_solid_moonlit.name=크기 10 고체 연료 동체 -item.mp_fuselage_10_solid_battery.name=크기 10 고체 연료 동체 -item.mp_fuselage_10_solid_duracell.name=크기 10 고체 연료 동체 -item.mp_fuselage_10_xenon.name=크기 10 크세논 동체 -item.mp_fuselage_10_xenon_bhole.name=크기 10 크세논 동체 item.mp_fuselage_10_long_kerosene.name=크기 10 긴 등유 동체 item.mp_fuselage_10_long_kerosene_camo.name=크기 10 긴 등유 동체 +item.mp_fuselage_10_long_kerosene_dash.name=크기 10 긴 등유 동체 item.mp_fuselage_10_long_kerosene_desert.name=크기 10 긴 등유 동체 -item.mp_fuselage_10_long_kerosene_sky.name=크기 10 긴 등유 동체 item.mp_fuselage_10_long_kerosene_flames.name=크기 10 긴 등유 동체 item.mp_fuselage_10_long_kerosene_insulation.name=크기 10 긴 등유 동체 -item.mp_fuselage_10_long_kerosene_sleek.name=크기 10 긴 등유 동체 item.mp_fuselage_10_long_kerosene_metal.name=크기 10 긴 등유 동체 +item.mp_fuselage_10_long_kerosene_sky.name=크기 10 긴 등유 동체 +item.mp_fuselage_10_long_kerosene_sleek.name=크기 10 긴 등유 동체 item.mp_fuselage_10_long_kerosene_taint.name=크기 10 긴 등유 동체 item.mp_fuselage_10_long_kerosene_vap.name=크기 10 긴 등유 동체 -item.mp_fuselage_10_long_kerosene_dash.name=크기 10 긴 등유 동체 item.mp_fuselage_10_long_solid.name=크기 10 긴 고체 연료 동체 +item.mp_fuselage_10_long_solid_bullet.name=크기 10 긴 고체 동체 item.mp_fuselage_10_long_solid_flames.name=크기 10 긴 고체 연료 동체 item.mp_fuselage_10_long_solid_insulation.name=크기 10 긴 고체 연료 동체 +item.mp_fuselage_10_long_solid_silvermoonlight.name=크기 10 긴 고체 동체 item.mp_fuselage_10_long_solid_sleek.name=크기 10 긴 고체 연료 동체 item.mp_fuselage_10_long_solid_soviet_glory.name=크기 10 긴 고체 동체 -item.mp_fuselage_10_long_solid_silvermoonlight.name=크기 10 긴 고체 동체 -item.mp_fuselage_10_long_solid_bullet.name=크기 10 긴 고체 동체 - -item.mp_fuselage_10_15_kerosene.name=크기 10/15 등유 동체 -item.mp_fuselage_10_15_solid.name=크기 10/15 고체 연료 동체 -item.mp_fuselage_10_15_hydrogen.name=크기 10/15 수소 동체 -item.mp_fuselage_10_15_balefire.name=크기 10/15 베일파이어 동체 - +item.mp_fuselage_10_solid.name=크기 10 고체 연료 동체 +item.mp_fuselage_10_solid_battery.name=크기 10 고체 연료 동체 +item.mp_fuselage_10_solid_cathedral.name=크기 10 고체 연료 동체 +item.mp_fuselage_10_solid_duracell.name=크기 10 고체 연료 동체 +item.mp_fuselage_10_solid_flames.name=크기 10 고체 연료 동체 +item.mp_fuselage_10_solid_insulation.name=크기 10 고체 연료 동체 +item.mp_fuselage_10_solid_moonlit.name=크기 10 고체 연료 동체 +item.mp_fuselage_10_solid_sleek.name=크기 10 고체 연료 동체 +item.mp_fuselage_10_solid_soviet_glory.name=크기 10 고체 연료 동체 +item.mp_fuselage_10_xenon.name=크기 10 크세논 동체 +item.mp_fuselage_10_xenon_bhole.name=크기 10 크세논 동체 +item.mp_fuselage_15_20_kerosene.name=크기 15/20 등유 동체 +item.mp_fuselage_15_20_kerosene_magnusson.name=크기 15/20 등유 동체 +item.mp_fuselage_15_20_solid.name=크기 15/20 고체 연료 동체 +item.mp_fuselage_15_balefire.name=크기 15 BF 동체 +item.mp_fuselage_15_hydrogen.name=크기 15 수소 동체 +item.mp_fuselage_15_hydrogen_cathedral.name=크기 15 수소 동체 item.mp_fuselage_15_kerosene.name=크기 15 등유 동체 +item.mp_fuselage_15_kerosene_blackjack.name=크기 15 등유 동체 item.mp_fuselage_15_kerosene_camo.name=크기 15 등유 동체 +item.mp_fuselage_15_kerosene_decorated.name=크기 15 등유 동체 item.mp_fuselage_15_kerosene_desert.name=크기 15 등유 동체 -item.mp_fuselage_15_kerosene_sky.name=크기 15 등유 동체 item.mp_fuselage_15_kerosene_insulation.name=크기 15 등유 동체 -item.mp_fuselage_15_kerosene_metal.name=크기 15 등유 동체 -item.mp_fuselage_15_kerosene_decorated.name=크기 15 등유 동체 -item.mp_fuselage_15_kerosene_steampunk.name=크기 15 등유 동체 -item.mp_fuselage_15_kerosene_polite.name=크기 15 등유 동체 -item.mp_fuselage_15_kerosene_blackjack.name=크기 15 등유 동체 item.mp_fuselage_15_kerosene_lambda.name=크기 15 등유 동체 +item.mp_fuselage_15_kerosene_metal.name=크기 15 등유 동체 item.mp_fuselage_15_kerosene_minuteman.name=크기 15 등유 동체 -item.mp_fuselage_15_kerosene_taint.name=크기 15 등유 동체 item.mp_fuselage_15_kerosene_pip.name=크기 15 등유 동체 +item.mp_fuselage_15_kerosene_polite.name=크기 15 등유 동체 +item.mp_fuselage_15_kerosene_sky.name=크기 15 등유 동체 +item.mp_fuselage_15_kerosene_steampunk.name=크기 15 등유 동체 +item.mp_fuselage_15_kerosene_taint.name=크기 15 등유 동체 item.mp_fuselage_15_kerosene_yuck.name=크기 15 등유 동체 item.mp_fuselage_15_solid.name=크기 15 고체 연료 동체 -item.mp_fuselage_15_solid_insulation.name=크기 15 고체 연료 동체 -item.mp_fuselage_15_solid_soviet_glory.name=크기 15 고체 연료 동체 -item.mp_fuselage_15_solid_soviet_stank.name=크기 15 고체 연료 동체 item.mp_fuselage_15_solid_desh.name=크기 15 고체 연료 동체 -item.mp_fuselage_15_solid_silvermoonlight.name=크기 15 고체 연료 동체 item.mp_fuselage_15_solid_faust.name=크기 15 고체 연료 동체 -item.mp_fuselage_15_solid_snowy.name=크기 15 고체 연료 동체 +item.mp_fuselage_15_solid_insulation.name=크기 15 고체 연료 동체 item.mp_fuselage_15_solid_panorama.name=크기 15 고체 연료 동체 item.mp_fuselage_15_solid_roses.name=크기 15 고체 연료 동체 -item.mp_fuselage_15_hydrogen.name=크기 15 수소 동체 -item.mp_fuselage_15_hydrogen_cathedral.name=크기 15 수소 동체 -item.mp_fuselage_15_balefire.name=크기 15 베일파이어 동체 - -item.mp_fuselage_15_20_kerosene.name=크기 15/20 등유 동체 -item.mp_fuselage_15_20_kerosene_magnusson.name=크기 15/20 등유 동체 -item.mp_fuselage_15_20_solid.name=크기 15/20 고체 연료 동체 - -item.mp_stability_10_flat.name=사이즈 10 플랫 핀 -item.mp_stability_10_cruise.name=크기 10 크루즈 핀 -item.mp_stability_10_space.name=크기 10 공간 핀 -item.mp_stability_15_flat.name=사이즈 15 플랫 핀 -item.mp_stability_15_thin.name=사이즈 15 얇은 핀 +item.mp_fuselage_15_solid_silvermoonlight.name=크기 15 고체 연료 동체 +item.mp_fuselage_15_solid_snowy.name=크기 15 고체 연료 동체 +item.mp_fuselage_15_solid_soviet_glory.name=크기 15 고체 연료 동체 +item.mp_fuselage_15_solid_soviet_stank.name=크기 15 고체 연료 동체 +item.mp_stability_10_cruise.name=사이즈 10 크루즈 핀 +item.mp_stability_10_flat.name=크기 10 플랫 핀 +item.mp_stability_10_space.name=사이즈 10 스페이스 핀 +item.mp_stability_15_flat.name=크기 15 플랫 핀 item.mp_stability_15_soyuz.name=크기 15 뾰족한 지느러미 - +item.mp_stability_15_thin.name=크기 15 얇은 핀 item.mp_thruster_10_kerosene.name=크기 10 액체 연료 추진기 item.mp_thruster_10_solid.name=크기 10 고체 연료 추진기 -item.mp_thruster_10_xenon.name=사이즈 10 이온 추진기 +item.mp_thruster_10_xenon.name=크기 10 이온 추진기 +item.mp_thruster_15_balefire.name=원자력 예열기가 장착된 크기 15 BF 추진기 +item.mp_thruster_15_balefire_large.name=원자력 예열기가 있는 크기 15 BF 추진기(헤비 듀티 노즐) +item.mp_thruster_15_balefire_large_rad.name=원자력 예열기가 있는 크기 15 BF 추진기(헤비 듀티 노즐) +item.mp_thruster_15_balefire_short.name=원자력 예열기가 장착된 크기 15 BF 추진기(단축됨) +item.mp_thruster_15_hydrogen.name=크기 15 수소 분사기 +item.mp_thruster_15_hydrogen_dual.name=크기 15 수소 트윈 쓰러스터 item.mp_thruster_15_kerosene.name=크기 15 액체 연료 추진기 -item.mp_thruster_15_kerosene_dual.name=크기 15 액체 연료 트윈 추진기 +item.mp_thruster_15_kerosene_dual.name=크기 15 액체 연료 트윈 쓰러스터 item.mp_thruster_15_kerosene_triple.name=크기 15 액체 연료 삼중 추진기 item.mp_thruster_15_solid.name=크기 15 고체 연료 추진기 -item.mp_thruster_15_solid_hexdecuple.name=크기 15 고체 연료 16진수 추진기 -item.mp_thruster_15_hydrogen.name=크기 15 수소 추진기 -item.mp_thruster_15_hydrogen_dual.name=크기 15 수소 트윈 추진기 -item.mp_thruster_15_balefire_short.name=핵 예열기가 포함된 크기 15 베일파이어 추진기(단축형) -item.mp_thruster_15_balefire.name=핵 예열기가 포함된 크기 15 베일파이어 추진기 -item.mp_thruster_15_balefire_large.name=핵 예열기가 포함된 크기 15 베일파이어 추진기(대형 노즐) -item.mp_thruster_15_balefire_large_rad.name=핵 예열기가 포함된 크기 15 베일파이어 추진기(대형 노즐) +item.mp_thruster_15_solid_hexdecuple.name=크기 15 고체 연료 Hexdecuple 추진기 item.mp_thruster_20_kerosene.name=크기 20 액체 연료 추진기 -item.mp_thruster_20_kerosene_dual.name=크기 20 액체 연료 트윈 추진기 +item.mp_thruster_20_kerosene_dual.name=크기 20 액체 연료 트윈 쓰러스터 item.mp_thruster_20_kerosene_triple.name=크기 20 액체 연료 삼중 추진기 item.mp_thruster_20_solid.name=크기 20 고체 연료 추진기 item.mp_thruster_20_solid_multi.name=크기 20 고체 연료 30단 추진기 item.mp_thruster_20_solid_multier.name=크기 20 고체 연료 47단 추진기 - -item.missile_skin_camo.name=미사일 스킨: 카모 -item.missile_skin_desert.name=미사일 스킨: 사막 위장 -item.missile_skin_flames.name=미사일 스킨: 역겨운 불꽃 -item.missile_skin_manly_pink.name=미사일 스킨: 맨리 핑크 -item.missile_skin_orange_insulation.name=미사일 스킨: 주황색 절연체 -item.missile_skin_sleek.name=미사일 스킨: IF-R&D -item.missile_skin_soviet_glory.name=미사일 스킨: 소련의 영광 -item.missile_skin_soviet_stank.name=미사일 스킨: 소비에트 스탠크 -item.missile_skin_metal.name=미사일 스킨: 금속 - -item.missile_custom.name=맞춤형 미사일 - -item.missile_carrier.name=HTR-01 캐리어 로켓 -item.missile_soyuz0.name=소유즈-FG -item.missile_soyuz1.name=소유즈-FG -item.missile_soyuz2.name=소유즈-FG -item.missile_soyuz_lander.name=궤도 모듈 -item.sat_mapper.name=표면 매핑 위성 -item.sat_scanner.name=심층 자원 스캐닝 모듈을 갖춘 위성 -item.sat_radar.name=레이더 측량 위성 -item.sat_laser.name=궤도 죽음의 광선 -item.sat_foeq.name=PEAF - 실험적인 핵 추진 장치를 갖춘 Mk.I FOEQ Duna 탐사선 -item.sat_resonator.name=제늄 공진기 위성 -item.sat_miner.name=소행성 채굴선 -item.sat_gerald.name=제럴드 건설 안드로이드 -item.sat_chip.name=위성 ID 칩 -item.sat_interface.name=위성 제어 인터페이스 -item.sat_coord.name=위성 지정자 -tile.deco_sat_mapper.name=표면 매핑 위성(데코 블록) -tile.deco_sat_scanner.name=심층 자원 스캐닝 모듈을 갖춘 위성(데코 블록) -tile.deco_sat_radar.name=레이더 측량 위성(데코 블록) -tile.deco_sat_laser.name=궤도 죽음의 광선(데코 블록) -tile.deco_sat_foeq.name=PEAF - 실험적 핵 추진 장치를 갖춘 Mk.I FOEQ Duna 프로브(데코 블록) -tile.deco_sat_resonator.name=제니움 공진기 위성(데코 블록) - -item.hev_boots.name=HEV Mark IV 부츠 -item.hev_plate.name=HEV Mark IV 체스트플레이트 -item.hev_helmet.name=HEV Mark IV 헬멧 -item.hev_legs.name=HEV Mark IV 레깅스 -item.ajr_boots.name=T-60 레인저 파워 아머 부츠 -item.ajr_helmet.name=T-60 레인저 파워 아머 헬멧 -item.ajr_legs.name=T-60 레인저 파워 아머 레깅스 -item.ajr_plate.name=T-60 레인저 파워 아머 흉갑 -item.RPA_boots.name=X-01 렘넌트 파워 아머 부츠 -item.RPA_helmet.name=X-01 렘넌트 파워 아머 헬멧 -item.RPA_plate.name=X-01 렘넌트 파워 아머 흉갑 -item.RPA_legs.name=X-01 렘넌트 파워 아머 레깅스 -item.hazmat_helmet.name=위험물질 헬멧 -item.hazmat_plate.name=위험물 흉갑 -item.hazmat_legs.name=위험물 레깅스 -item.hazmat_boots.name=위험물질 장화 -item.hazmat_helmet_red.name=고급 위험물질 헬멧 -item.hazmat_plate_red.name=고급 위험물질 흉갑 -item.hazmat_legs_red.name=고급 위험물질 다리보호구 -item.hazmat_boots_red.name=고급 위험물질 장화 -item.hazmat_helmet_grey.name=고성능 위험물질 헬멧 -item.hazmat_plate_grey.name=고성능 방호 흉갑 -item.hazmat_legs_grey.name=고성능 방호 레깅스 -item.hazmat_boots_grey.name=고성능 위험물질 장화 -item.hazmat_paa_helmet.name=PaA 방호복 헬멧 -item.hazmat_paa_plate.name=PaA 방호복 가슴판 -item.hazmat_paa_legs.name=PaA 방호복 레깅스 -item.hazmat_paa_boots.name=PaA 방호복 부츠 -item.asbestos_helmet.name=화재 근접 헬멧 -item.asbestos_plate.name=화재 근접 흉갑 -item.asbestos_legs.name=화재 근접 레깅스 -item.asbestos_boots.name=화재 근접 장화 - -item.paa_helmet.name=PaA 헬멧 보호 -item.paa_plate.name=PaA 가슴 보호판 -item.paa_legs.name=PaA 다리 보강재 -item.paa_boots.name=PaA "좋은 구두" - -item.jackt.name=빌어먹을 스타일리시한 발리스틱 재킷 -item.jackt2.name=빌어먹을 스타일리시한 발리스틱 재킷 2: 도쿄 드리프트 - -item.goggles.name=보호 고글 -item.gas_mask.name=방독면 -item.gas_mask_m65.name=M65-Z 방독면 -item.oxy_mask.name=산소 마스크 -item.t45_helmet.name=T-45 파워 아머 헬멧 -item.t45_plate.name=T-45 파워 아머 흉갑 -item.t45_legs.name=T-45 파워 아머 레깅스 -item.t45_boots.name=T-45 파워 아머 부츠 - -tile.mush.name=빛나는 버섯 -tile.waste_mycelium.name=빛나는 균사체 - -tile.sellafield_slaked.name=소석회 셀라파이트 -tile.sellafield_0.name=셀라파이트 -tile.sellafield_1.name=핫 셀라파이트 -tile.sellafield_2.name=끓는 셀라파이트 -tile.sellafield_3.name=타오르는 셀라파이트 -tile.sellafield_4.name=지옥불 셀라파이트 -tile.sellafield_core.name=셀라파이트-코리움 - -tile.baleonitite_slaked.name=소석회암 -tile.baleonitite_0.name=발레오니타이트 -tile.baleonitite_1.name=뜨거운 발레오니타이트 -tile.baleonitite_2.name=끓는 발레오니타이트 -tile.baleonitite_3.name=타오르는 발레오니타이트 -tile.baleonitite_4.name=지옥불 발레나이트 -tile.baleonitite_core.name=발레오니타이트-진심 - -item.warhead_generic_small.name=소형 탄두 -item.warhead_generic_medium.name=중형 탄두 -item.warhead_generic_large.name=대형 탄두 -item.warhead_incendiary_small.name=소형 소이탄두 -item.warhead_incendiary_medium.name=중형 소이탄두 -item.warhead_incendiary_large.name=대형 소이탄두 -item.warhead_cluster_small.name=소형 클러스터 탄두 -item.warhead_cluster_medium.name=중형 클러스터 탄두 -item.warhead_cluster_large.name=대형 클러스터 탄두 -item.warhead_buster_small.name=소형 벙커 버스터 탄두 -item.warhead_buster_medium.name=중형 벙커 버스터 탄두 -item.warhead_buster_large.name=대형 벙커 버스터 탄두 -item.warhead_nuclear.name=핵탄두 -item.warhead_mirvlet.name=미르브 -item.warhead_mirv.name=열핵탄두 -item.warhead_thermo_endo.name=흡열 탄두 -item.warhead_thermo_exo.name=발열 탄두 -item.fuel_tank_small.name=소형 연료 탱크 -item.fuel_tank_medium.name=중형 연료 탱크 -item.fuel_tank_large.name=대형 연료 탱크 -item.thruster_small.name=소형 추진기 -item.thruster_medium.name=중형 추진기 -item.thruster_large.name=대형 추진기 - -item.wand_k.name=건설 지팡이 -item.wand_s.name=구조 지팡이 -item.wand_d.name=디버그 지팡이 -item.analyzer.name=분석기 - -item.screwdriver.name=드라이버 -item.screwdriver_desh.name=데시 드라이버 +item.mp_warhead_10_buster.name=크기 10 벙커 버스터 탄두 +item.mp_warhead_10_cloud.name=사이즈 10 핑크 클라우드 탄두 +item.mp_warhead_10_he.name=크기 10 HE 탄두 +item.mp_warhead_10_incendiary.name=크기 10 소이 탄두 +item.mp_warhead_10_nuclear.name=크기 10 마이크로 핵탄두 +item.mp_warhead_10_nuclear_large.name=크기 10 핵탄두 +item.mp_warhead_10_taint.name=크기 10 오염된 탄두 +item.mp_warhead_15_balefire.name=크기 15 BF 탄두 +item.mp_warhead_15_boxcar.name=사이즈 15 박스카? +item.mp_warhead_15_he.name=크기 15 HE 탄두 +item.mp_warhead_15_incendiary.name=크기 15 소이 탄두 +item.mp_warhead_15_mirv.name=크기 15 MIRV 탄두 +item.mp_warhead_15_n2.name=크기 15 N² 광산 +item.mp_warhead_15_nuclear.name=크기 15 핵탄두 +item.mp_warhead_15_nuclear_shark.name=크기 15 핵탄두 +item.mp_warhead_15_thermo.name=크기 15 열핵 탄두 +item.mp_warhead_15_volcano.name=크기 15 화산 탄두 +item.multi_kit.name=다목적 폭탄 키트 +item.multitool_beam.name=파워 피스트(재퍼) +item.multitool_decon.name=파워 피스트(오염 제거기) +item.multitool_dig.name=파워 피스트(파는 발톱) +item.multitool_ext.name=파워 피스트(광석 추출기) +item.multitool_hit.name=파워 피스트(주먹) +item.multitool_joule.name=파워 피스트(기가 줄) +item.multitool_mega.name=파워 피스트(슈퍼 펀치) +item.multitool_miner.name=파워 피스트(채광 레이저 추출) +item.multitool_silk.name=파워 피스트(실크 터치 클로) +item.multitool_sky.name=파워 피스트(Crack the Sky) +item.mysteryshovel.name=깨지기 쉬운 스페이드 +item.n2_charge.name=대형 폭약 +item.neutron_reflector.name=중성자 반사경 +item.niter.name=나이터 +item.nossy_hat.name=멋진 모자 +item.nothing.name=아무것도 아님 +item.nuclear_waste.name=핵폐기물 +item.nuclear_waste_long.name=수명이 긴 핵폐기물 +item.nuclear_waste_long_depleted.name=부패한 장수명 핵폐기물 +item.nuclear_waste_long_depleted_tiny.name=부패한 장수명 핵폐기물의 작은 더미 +item.nuclear_waste_long_tiny.name=장수명 핵 폐기물의 작은 더미 +item.nuclear_waste_pearl.name=핵 폐기물 진주 +item.nuclear_waste_short.name=수명이 짧은 핵폐기물 +item.nuclear_waste_short_depleted.name=부패한 단기 핵폐기물 +item.nuclear_waste_short_depleted_tiny.name=부패한 단기 핵폐기물의 작은 더미 +item.nuclear_waste_short_tiny.name=수명이 짧은 핵 폐기물의 작은 더미 +item.nuclear_waste_tiny.name=작은 핵폐기물 더미 +item.nuclear_waste_vitrified.name=유리화된 핵폐기물 +item.nuclear_waste_vitrified_tiny.name=유리화된 핵 폐기물의 작은 더미 +item.nugget.name=치킨 너겟 +item.nugget_ac227.name=악티늄-227 덩어리 +item.nugget_actinium.name=악티늄 덩어리 +item.nugget_am241.name=아메리슘-241 너겟 +item.nugget_am242.name=아메리슘-242 너겟 +item.nugget_am_mix.name=반응기 등급 아메리슘 너겟 +item.nugget_americium_fuel.name=아메리슘 연료 덩어리 +item.nugget_au198.name=금-198 너겟 +item.nugget_australium.name=오스트랄륨 덩어리 +item.nugget_australium_greater.name=오스트랄륨-406 너겟 +item.nugget_australium_lesser.name=오스트랄륨-405 너겟 +item.nugget_beryllium.name=베릴륨 덩어리 +item.nugget_bismuth.name=비스무트 너겟 +item.nugget_co60.name=코발트-60 덩어리 +item.nugget_cobalt.name=코발트 덩어리 +item.nugget_daffergon.name=대퍼곤 덩어리 +item.nugget_desh.name=데시 너겟 +item.nugget_dineutronium.name=디뉴트로늄 덩어리 +item.nugget_euphemium.name=완곡 너겟 +item.nugget_gh336.name=기오르슘-336 너겟 +item.nugget_hes.name=고농축 Schrabidium 연료 덩어리 +item.nugget_lead.name=리드 너겟 +item.nugget_les.name=저농축 Schrabidium 연료 덩어리 +item.nugget_mercury.name=수은의 작은 방울 +item.nugget_mox_fuel.name=MOX 연료 덩어리 +item.nugget_neptunium.name=넵투늄-237 덩어리 +item.nugget_neptunium_fuel.name=넵투늄 연료 덩어리 +item.nugget_pb209.name=Lead-209 너겟 +item.nugget_plutonium.name=플루토늄 덩어리 +item.nugget_plutonium_fuel.name=플루토늄 연료 덩어리 +item.nugget_polonium.name=폴로늄-210 너겟 +item.nugget_pu238.name=플루토늄-238 덩어리 +item.nugget_pu239.name=플루토늄-239 덩어리 +item.nugget_pu240.name=플루토늄-240 덩어리 +item.nugget_pu241.name=플루토늄-241 덩어리 +item.nugget_pu_mix.name=반응기 등급 플루토늄 너겟 +item.nugget_ra226.name=라듐-226 너겟 +item.nugget_radspice.name=네오벨린 너겟 +item.nugget_reiium.name=레이움 너겟 +item.nugget_schrabidium.name=Schrabidium-326 너겟 +item.nugget_schrabidium_fuel.name=슈라비디움 연료 덩어리 +item.nugget_solinium.name=솔리늄-327 너겟 +item.nugget_sr90.name=스트론튬-90 덩어리 +item.nugget_strontium.name=스트론튬 덩어리 +item.nugget_tantalium.name=탄탈륨 덩어리 +item.nugget_technetium.name=테크네튬-99 덩어리 +item.nugget_th232.name=토륨-232 덩어리 +item.nugget_thorium_fuel.name=토륨 연료 덩어리 +item.nugget_u233.name=우라늄-233 덩어리 +item.nugget_u235.name=우라늄-235 덩어리 +item.nugget_u238.name=우라늄-238 덩어리 +item.nugget_u238m2.name=준안정 U238-2 너겟 +item.nugget_unobtainium.name=언옵티늄 너겟 +item.nugget_uranium.name=우라늄 덩어리 +item.nugget_uranium_fuel.name=우라늄 연료 덩어리 +item.nugget_verticium.name=버티시움 너겟 +item.nugget_weidanium.name=웨이다늄 너겟 +item.nugget_zirconium.name=지르코늄 파편 +item.nuke_advanced_kit.name=원자력 과학 고급 키트 +item.nuke_commercially_kit.name=상업용 원자 과학 키트 +item.nuke_electric_kit.name=전자 엔지니어 키트 +item.nuke_starter_kit.name=원자력 과학 스타터 키트 +item.oil_canola.name=생 카놀라유 +item.oil_detector.bullseye=바로 아래 기름 침전물! +item.oil_detector.desc1=오일을 스캔하려면 마우스 오른쪽 버튼을 클릭하십시오. +item.oil_detector.desc2=감지기는 더 큰 침전물만 찾습니다. +item.oil_detector.detected=근처에서 기름이 감지되었습니다. +item.oil_detector.name=오일 저장소 감지기 +item.oil_detector.noOil=오일이 감지되지 않았습니다. +item.oil_tar.name=기름 타르 item.overfuse.name=특이점 드라이버 - -item.steel_helmet.name=강철 헬멧 -item.steel_plate.name=강철 흉갑 -item.steel_legs.name=강철 레깅스 -item.steel_boots.name=강철 장화 -item.titanium_helmet.name=티타늄 헬멧 -item.titanium_plate.name=티타늄 흉갑 -item.titanium_legs.name=티타늄 레깅스 -item.titanium_boots.name=티타늄 부츠 -item.alloy_helmet.name=고급 합금 헬멧 -item.alloy_plate.name=고급 합금 흉갑 -item.alloy_legs.name=고급 합금 레깅스 -item.alloy_boots.name=고급 합금 부츠 -item.cmb_helmet.name=CMB 강철 헬멧 -item.cmb_plate.name=CMB 강철 흉갑 -item.cmb_legs.name=CMB 강철 레깅스 -item.cmb_boots.name=CMB 강철 장화 -item.security_helmet.name=보안 헬멧 -item.security_plate.name=보안 흉갑 -item.security_legs.name=보안 레깅스 -item.security_boots.name=보안 부츠 -item.cobalt_helmet.name=코발트 투구 -item.cobalt_plate.name=코발트 흉갑 -item.cobalt_legs.name=코발트 레깅스 -item.cobalt_boots.name=코발트 부츠 -item.starmetal_helmet.name=스타메탈 헬멧 -item.starmetal_plate.name=별금속 가슴갑옷 -item.starmetal_legs.name=스타메탈 레깅스 -item.starmetal_boots.name=스타메탈 부츠 - -item.steel_sword.name=강철검 -item.steel_pickaxe.name=강철 곡괭이 -item.steel_axe.name=강철 도끼 -item.steel_shovel.name=강철 삽 -item.steel_hoe.name=강철 괭이 -item.titanium_sword.name=티타늄 검 -item.titanium_pickaxe.name=티타늄 곡괭이 -item.titanium_axe.name=티타늄 도끼 -item.titanium_shovel.name=티타늄 삽 -item.titanium_hoe.name=티타늄 괭이 -item.alloy_sword.name=고급 합금 검 -item.alloy_pickaxe.name=고급 합금 곡괭이 -item.alloy_axe.name=고급 합금 도끼 -item.alloy_shovel.name=고급 합금 삽 -item.alloy_hoe.name=고급 합금 괭이 -item.cmb_sword.name=CMB 강철검 -item.cmb_pickaxe.name=CMB 강철 곡괭이 -item.cmb_axe.name=CMB 강철 도끼 -item.cmb_shovel.name=CMB 강철 삽 -item.cmb_hoe.name=CMB 강철 괭이 -item.elec_sword.name=스턴스틱 -item.elec_pickaxe.name=임팩트 드릴 -item.elec_axe.name=전기톱 -item.elec_shovel.name=나선형 드릴 -item.desh_sword.name=일꾼의 합금 검 -item.desh_pickaxe.name=일꾼의 합금 곡괭이 -item.desh_axe.name=일꾼의 합금 도끼 -item.desh_shovel.name=노동자의 합금 삽 -item.desh_hoe.name=노동자의 합금 괭이 -item.cobalt_sword.name=코발트 검 -item.cobalt_pickaxe.name=코발트 곡괭이 -item.cobalt_axe.name=코발트 도끼 -item.cobalt_shovel.name=코발트 삽 -item.cobalt_hoe.name=코발트 괭이 -item.centri_stick.name=막대형 원심분리기 -item.smashing_hammer.name=스매싱 해머 - -tile.red_cable.name=빨간색 구리 케이블 - -tile.block_meteor.name=운석 블록 -tile.block_meteor_broken.name=부서진 운석 블록 -tile.block_meteor_cobble.name=운석 조약돌 -tile.block_meteor_molten.name=뜨거운 운석 조약돌 -tile.block_meteor_treasure.name=운석 보물 블록 -tile.meteor_polished.name=광택나는 유성 블록 -tile.meteor_brick.name=유성 벽돌 -tile.meteor_brick_chiseled.name=조각된 유성 벽돌 -tile.meteor_brick_cracked.name=금이 간 유성 벽돌 -tile.meteor_brick_mossy.name=이끼 낀 유성 벽돌 -tile.meteor_pillar.name=유성 기둥 -tile.meteor_spawner.name=사이버 크랩 어셈블러 -tile.meteor_battery.name=스타메탈 정전기 발생기 - -item.cape_radiation.name=망토 (방사선) -item.cape_gasmask.name=망토(방독면) -item.cape_schrabidium.name=망토(슈라비딕) -item.cape_hbm.name=HBM의 망토 -item.cape_dafnik.name=다프니크의 망토 -item.cape_lpkukin.name=LP쿠킨의 망토 -item.cape_vertice.name=막대 버티스 망토 -item.cape_codered_.name=codered_의 망토 -item.cape_ayy.name=아이의 망토 -item.cape_nostalgia.name=DrNostalgia의 망토 - -tile.machine_converter_he_rf.name=HE-RF 변환기 -tile.machine_converter_rf_he.name=RF-HE 변환기 -tile.machine_transformer.name=충전기 -tile.machine_transformer.desc=플레이어의 인벤토리에 있는 아이템을 충전하기 위해 전력을 사용합니다. 범위: 그 위의 3블록 -tile.machine_transformer_dnt.name=DNT 업 충전기 -tile.machine_transformer_dnt.desc=플레이어의 인벤토리에 있는 아이템을 충전하기 위해 전력을 사용합니다. 범위: 그 위의 3블록 -tile.machine_transformer_20.name=다운차저 -tile.machine_transformer_20.desc=플레이어의 인벤토리에 있는 아이템을 충전하기 위해 전력을 사용합니다. 범위: 그 아래 3블록 -tile.machine_transformer_dnt_20.name=DNT 다운 충전기 -tile.machine_transformer_dnt_20.desc=플레이어의 인벤토리에 있는 아이템을 충전하기 위해 전력을 사용합니다. 범위: 그 아래 3블록 - -tile.vent_chlorine.name=포이즌 벤트 -tile.vent_cloud.name=클라우드 벤트 -tile.vent_pink_cloud.name=핑크 클라우드 벤트 -tile.vent_chlorine_seal.name=염소 씰 -tile.chlorine_gas.name=염소가스 -item.chlorine_pinwheel.name=염소 바람개비 - -tile.absorber.name=방사선 흡수체 -tile.absorber_red.name=강화된 방사선 흡수체 -tile.absorber_green.name=고급 방사선 흡수체 -tile.absorber_pink.name=엘리트 방사선 흡수체 -tile.decon.name=방사선 오염제거기 -tile.decon_digamma.name=디감마 오염제거기 -tile.machine_amgen.name=대기 방사선 발생기 -tile.machine_geo.name=지열발전기 -tile.machine_minirtg.name=방사성 동위원소 세포 - -item.schrabidium_hammer.name=슈라비듐 망치 -item.shimmer_sledge.name=쉬머 슬레지 +item.oxy_mask.name=산소 마스크 +item.paa_boots.name=PaA "좋은 신발" +item.paa_legs.name=PaA 다리 보강재 +item.paa_plate.name=PaA 가슴 보호판 +item.padlock.name=맹꽁이 자물쇠 +item.padlock_reinforced.name=강화된 자물쇠 +item.padlock_rusty.name=녹슨 자물쇠 +item.padlock_unbreakable.name=깨지지 않는 자물쇠 +item.pads_rubber.name=고무 패드 +item.pads_slime.name=슬라임 패드 +item.pads_static.name=정적 패드 +item.pancake.name=고철, 못, 보석 먼지로 만든 팬케이크 +item.part_beryllium.name=베릴륨 가루 상자 +item.part_carbon.name=탄소 먼지 상자 +item.part_copper.name=구리 가루 상자 +item.part_lithium.name=리튬 먼지 상자 +item.part_plutonium.name=플루토늄 먼지 상자 +item.particle_aelectron.name=양전자 캡슐 +item.particle_amat.name=반물질 캡슐 +item.particle_aproton.name=반양성자 캡슐 +item.particle_aschrab.name=안티스크라비디움 캡슐 +item.particle_copper.name=구리 이온 캡슐 +item.particle_dark.name=암흑 물질 캡슐 +item.particle_digamma.name=§c디감마 입자§r +item.particle_empty.name=빈 입자 캡슐 +item.particle_higgs.name=힉스 보손 캡슐 +item.particle_hydrogen.name=수소 이온 캡슐 +item.particle_lead.name=납 이온 캡슐 +item.particle_muon.name=뮤온캡슐 +item.particle_sparkticle.name=스파크티클 캡슐 +item.particle_strange.name=이상한 쿼크 캡슐 +item.particle_tachyon.name=타키온 캡슐 +item.peas.name=완두콩 +item.pedestal_steel.name=강철 받침대 +item.pellet_advanced.name=고급 Watz 성능 개선기 +item.pellet_antimatter.name=반물질 클러스터 +item.pellet_beryllium.name=베릴륨 중재자 펠렛 +item.pellet_buckshot.name=납 펠릿 +item.pellet_canister.name=캐니스터 샷 +item.pellet_charged.name=이온화된 입자 +item.pellet_chlorophyte.name=엽록소 라운드 +item.pellet_claws.name=날카로운 금속 발톱 +item.pellet_cluster.name=폭발성 펠릿 +item.pellet_coal.name=조밀한 석탄 클러스터 +item.pellet_coolant.name=냉각수 클러스터 +item.pellet_flechette.name=플레셰트 +item.pellet_gas.name=독가스 카트리지 +item.pellet_hes.name=HES 와츠 펠렛 +item.pellet_lead.name=리드 리플렉터 펠릿 +item.pellet_les.name=레 와츠 펠렛 +item.pellet_mercury.name=머큐리 라운드 +item.pellet_mes.name=MES 와츠 펠렛 +item.pellet_meteorite.name=운석탄 +item.pellet_neptunium.name=넵투늄 와츠 펠릿 +item.pellet_rtg.name=플루토늄-238 RTG 펠릿 +item.pellet_rtg_actinium.desc=푸른 빛과 베타선의 빛. +item.pellet_rtg_actinium.name=악티늄-227 RTG 펠릿 +item.pellet_rtg_americium.desc=희귀하고 신뢰할 수 있는 좋은 옛 Americium! +item.pellet_rtg_americium.name=아메리슘-241 RTG 펠릿 +item.pellet_rtg_balefire.desc=핵 지옥 ... +item.pellet_rtg_balefire.name=Balefire-XXX RTG 펠릿 +item.pellet_rtg_cobalt.desc=RTG로는 최고는 아니지만 감마선에 좋습니다! +item.pellet_rtg_cobalt.name=코발트-90 RTG 펠릿 +item.pellet_rtg_depleted_bismuth.name=열화 비스무트 RTG 펠릿 +item.pellet_rtg_depleted_lead.name=고갈된 납 RTG 펠릿 +item.pellet_rtg_depleted_mercury.name=고갈된 수은 RTG 펠릿 +item.pellet_rtg_depleted_neptunium.name=열화 넵투늄 RTG 펠렛 +item.pellet_rtg_depleted_zirconium.name=열화 지르코늄 RTG 펠릿 +item.pellet_rtg_gold.desc=희귀하고 매우 불안정한 금 동위원소로 만들어졌습니다. +item.pellet_rtg_gold.name=Gold-198 RTG 펠릿 +item.pellet_rtg_lead.desc=노출되면 즉시 사망합니다. +item.pellet_rtg_lead.name=Lead-209 RTG 펠릿 +item.pellet_rtg_polonium.desc=최고급 폴로늄으로 만든 더욱 강력한 RTG 펠렛! +item.pellet_rtg_polonium.name=폴로늄-210 RTG 펠릿 +item.pellet_rtg_radium.desc=모든 천연 라듐에서 공급되는 훌륭한 스타터 펠릿! +item.pellet_rtg_radium.name=라듐-226 RTG 펠릿 +item.pellet_rtg_strontium.desc=캘리포니아 주에 알려진... +item.pellet_rtg_strontium.name=스트론튬-90 RTG 펠릿 +item.pellet_rtg_weak.desc=더 저렴하고 약한 펠렛, 이제 더 많은 U238! +item.pellet_rtg_weak.name=우라늄-238 RTG 펠릿 +item.pellet_schrabidium.name=순수 Schrabidium Watz 펠릿 +item.photo_panel.name=태양광 패널 +item.pile_rod_boron.name=시카고 말뚝 제어봉 +item.pile_rod_plutonium.name=시카고 파일 플루토늄 막대 +item.pile_rod_source.name=시카고 더미 Ra226Be 중성자 소스 +item.pile_rod_uranium.name=시카고 말뚝 우라늄 막대 +item.pill_iodine.name=요오드 알약 +item.pin.name=바비 핀 +item.pipes_steel.name=강관 +item.piston_selenium.name=레이디얼 엔진 피스톤 +item.plan_c.name=플랜 C +item.plate_advanced_alloy.name=고급 합금 플레이트 +item.plate_aluminium.name=알루미늄 판 +item.plate_armor_ajr.name=철갑 갑옷 도금 +item.plate_armor_dnt.name=DNT 갑옷 도금 +item.plate_armor_fau.name=Fau 갑옷 도금 +item.plate_armor_hev.name=반응 장갑 도금 +item.plate_armor_lunar.name=음력 도금 +item.plate_armor_titanium.name=티타늄 아머 플레이트 +item.plate_combine_steel.name=CMB 강판 +item.plate_copper.name=동판 +item.plate_dalekanium.name=화난 금속 +item.plate_desh.name=데쉬 컴파운드 플레이트 +item.plate_dineutronium.name=다이뉴트로늄 화합물 플레이트 +item.plate_euphemium.name=유페미움 컴파운드 플레이트 +item.plate_gold.name=금 접시 +item.plate_iron.name=철판 +item.plate_kevlar.name=케블라-세라믹 컴파운드 +item.plate_lead.name=리드 플레이트 +item.plate_mixed.name=혼합 접시 +item.plate_paa.name=PaA 합금 플레이트 +item.plate_polymer.name=절연체 +item.plate_saturnite.name=토성 판 +item.plate_schrabidium.name=슈라비디움-326 플레이트 +item.plate_steel.name=강판 +item.plate_titanium.name=티타늄 플레이트 +item.polaroid.name=폴라로이드 +item.powder_ac227.name=악티늄-227 분말 +item.powder_actinium.name=악티늄 분말 +item.powder_actinium_tiny.name=작은 악티늄 가루 더미 +item.powder_advanced_alloy.name=고급 합금 분말 +item.powder_aluminium.name=알루미늄 분말 +item.powder_asbestos.name=석면 분말 +item.powder_astatine.name=아스타틴 분말 +item.powder_at209.name=아스타틴-209 분말 +item.powder_au198.name=골드-198 파우더 +item.powder_australium.name=오스트랄륨 분말 +item.powder_balefire.name=열핵 재 +item.powder_beryllium.name=베릴륨 분말 +item.powder_boron.name=붕소 분말 +item.powder_boron_tiny.name=작은 붕소 가루 더미 +item.powder_bromine.name=브롬 분말 +item.powder_caesium.name=세슘 분말 +item.powder_cerium.name=세륨 분말 +item.powder_cerium_tiny.name=작은 세륨 가루 더미 +item.powder_chlorophyte.name=엽록소 분말 +item.powder_cloud.name=클라우드 잔류물 +item.powder_co60.name=코발트-60 분말 +item.powder_co60_tiny.name=코발트-60 분말의 작은 더미 +item.powder_coal.name=석탄 가루 +item.powder_coal_tiny.name=작은 석탄 가루 더미 +item.powder_cobalt.name=코발트 가루 +item.powder_cobalt_tiny.name=작은 코발트 가루 더미 +item.powder_coltan.name=정제된 탄탈라이트 +item.powder_coltan_ore.name=부서진 콜탄 +item.powder_combine_steel.name=CMB 스틸 파우더 +item.powder_copper.name=구리 가루 +item.powder_cs137.name=세슘-137 분말 +item.powder_cs137_tiny.name=작은 세슘-137 분말 더미 +item.powder_daffergon.name=다퍼곤 가루 +item.powder_desh.name=데시 파우더 +item.powder_desh_mix.name=데시 블렌드 +item.powder_desh_ready.name=DeshReady™ 블렌드 +item.powder_diamond.name=다이아몬드 가루 +item.powder_dineutronium.name=디뉴트로늄 분말 +item.powder_dura_steel.name=고속철 분말 +item.powder_emerald.name=에메랄드 가루 +item.powder_euphemium.name=유페미움 가루 +item.powder_fire.name=적린 +item.powder_gold.name=금가루 +item.powder_i131.name=요오드-131 분말 +item.powder_i131_tiny.name=요오드-131 분말의 작은 더미 +item.powder_ice.name=극저온 분말 +item.powder_iodine.name=요오드 분말 +item.powder_iodine_tiny.name=작은 요오드 가루 더미 +item.powder_iron.name=철분 +item.powder_lanthanium.name=란탄 분말 +item.powder_lanthanium_tiny.name=작은 란타늄 분말 더미 +item.powder_lapis.name=청금석 가루 +item.powder_lead.name=납 가루 +item.powder_lignite.name=갈탄 분말 +item.powder_lithium.name=리튬 분말 +item.powder_lithium_tiny.name=작은 리튬 가루 더미 +item.powder_magic.name=분쇄된 인챈트 +item.powder_magnetized_tungsten.name=자화 텅스텐 분말 +item.powder_meteorite.name=운석 가루 +item.powder_meteorite_tiny.name=작은 운석 가루 더미 +item.powder_neodymium.name=네오디뮴 분말 +item.powder_neodymium_tiny.name=작은 네오디뮴 분말 더미 +item.powder_neptunium.name=넵투늄-237 분말 +item.powder_niobium.name=니오븀 분말 +item.powder_niobium_tiny.name=니오븀 분말의 작은 더미 +item.powder_nitan_mix.name=니타늄 혼합 +item.powder_pb209.name=납-209 분말 +item.powder_plutonium.name=플루토늄 분말 +item.powder_poison.name=독 가루 +item.powder_polonium.name=폴로늄-210 분말 +item.powder_polymer.name=고분자 분말 +item.powder_power.name=에너지 파우더 +item.powder_quartz.name=석영 분말 +item.powder_ra226.name=라듐-226 분말 +item.powder_radspice.name=네오벨린 파우더 +item.powder_red_copper.name=적동분말 +item.powder_reiium.name=레이움 가루 +item.powder_schrabidate.name=Ferric Schrabidate 분말 +item.powder_schrabidium.name=Schrabidium-326 분말 +item.powder_semtex_mix.name=셈텍스 블렌드 +item.powder_spark_mix.name=스파크 블렌드 +item.powder_sr90.name=스트론튬-90 분말 +item.powder_sr90_tiny.name=작은 더미의 스트론튬-90 분말 +item.powder_steel.name=스틸 파우더 +item.powder_steel_tiny.name=작은 강철 가루 더미 +item.powder_strontium.name=스트론튬 분말 +item.powder_tantalium.name=탄탈륨 분말 +item.powder_tcalloy.name=테크네튬 강철 분말 +item.powder_tennessine.name=테네신-294 분말 +item.powder_thermite.name=테르밋 +item.powder_thorium.name=토륨 가루 +item.powder_titanium.name=티타늄 분말 +item.powder_tungsten.name=텅스텐 분말 +item.powder_unobtainium.name=언옵티늄 분말 +item.powder_uranium.name=우라늄 분말 +item.powder_verticium.name=버티시움 분말 +item.powder_weidanium.name=와이다늄 분말 +item.powder_xe135.name=크세논-135 분말 +item.powder_xe135_tiny.name=제논-135 분말의 작은 더미 +item.powder_yellowcake.name=노란색 케이크 +item.powder_zirconium.name=지르코늄 분말 +item.primer_357.name=.357 매그넘 프라이머(x24) +item.primer_44.name=.44 매그넘 프라이머(x24) +item.primer_50.name=대구경 프라이머(x12) +item.primer_9.name=소구경 프라이머(x32) +item.primer_buckshot.name=벅샷 프라이머(x12) +item.prototype_kit.name=프로토타입 키트 +item.pudding.name=푸딩 +item.quartz_plutonium.name=심성 석영 +item.radaway.name=라드어웨이 +item.radaway_flush.name=엘리트 라드어웨이 +item.radaway_strong.name=강한 RadAway +item.radx.name=라드-X +item.rbmk_fuel_balefire.name=베일파이어 RBMK 연료봉 +item.rbmk_fuel_balefire_gold.name=Flashgold RBMK 연료봉 +item.rbmk_fuel_drx.name=§c디감마 RBMK 연료봉§r +item.rbmk_fuel_empty.name=빈 RBMK 연료봉 +item.rbmk_fuel_flashlead.name=Flashlead RBMK 연료봉 +item.rbmk_fuel_hea241.name=HEA-241 RBMK 연료봉 +item.rbmk_fuel_hea242.name=HEA-242 RBMK 연료봉 +item.rbmk_fuel_heaus.name=JESus RBMK 연료봉 +item.rbmk_fuel_hen.name=HEN RBMK 연료봉 +item.rbmk_fuel_hep.name=HEP-239 RBMK 연료봉 +item.rbmk_fuel_hep241.name=HEP-241 RBMK 연료봉 +item.rbmk_fuel_hes.name=HES RBMK 연료봉 +item.rbmk_fuel_heu233.name=HEU-233 RBMK 연료봉 +item.rbmk_fuel_heu235.name=HEU-235 RBMK 연료봉 +item.rbmk_fuel_lea.name=LEA RBMK 연료봉 +item.rbmk_fuel_leaus.name=LEAus RBMK 연료봉 +item.rbmk_fuel_lep.name=LEP-239 RBMK 연료봉 +item.rbmk_fuel_les.name=LES RBMK 연료봉 +item.rbmk_fuel_mea.name=MEA RBMK 연료봉 +item.rbmk_fuel_men.name=MEN RBMK 연료봉 +item.rbmk_fuel_mep.name=MEP-239 RBMK 연료봉 +item.rbmk_fuel_mes.name=MES RBMK 연료봉 +item.rbmk_fuel_meu.name=MEU RBMK 연료봉 +item.rbmk_fuel_mox.name=MOX RBMK 연료봉 +item.rbmk_fuel_po210be.name=Po210Be RBMK 중성자 소스 +item.rbmk_fuel_pu238be.name=Pu238Be RBMK 중성자 소스 +item.rbmk_fuel_ra226be.name=Ra226Be RBMK 중성자 소스 +item.rbmk_fuel_thmeu.name=ThMEU RBMK 연료봉 +item.rbmk_fuel_ueu.name=NU RBMK 연료봉 +item.rbmk_fuel_unobtainium.name=Unobtainium RBMK 중성자 막대 +item.rbmk_fuel_zfb_am_mix.name=연료 등급 Americium RBMK ZFB 로드 +item.rbmk_fuel_zfb_bismuth.name=비스무트 RBMK ZFB 막대 +item.rbmk_fuel_zfb_pu241.name=Pu-241 RBMK ZFB 로드 +item.rbmk_lid.name=RBMK 커버 패널 +item.rbmk_lid_glass.name=RBMK 유리 커버 패널 +item.rbmk_pellet_balefire.name=베일파이어 연료 펠릿 +item.rbmk_pellet_balefire_gold.name=Flashgold 연료 펠릿 +item.rbmk_pellet_drx.name=§c디감마 연료 펠릿§r +item.rbmk_pellet_flashlead.name=Flashlead 연료 펠릿 +item.rbmk_pellet_hea241.name=HEA-241 연료 펠렛 +item.rbmk_pellet_hea242.name=HEA-242 연료 펠릿 +item.rbmk_pellet_heaus.name=HEAus 연료 펠릿 +item.rbmk_pellet_hen.name=HEN 연료 펠릿 +item.rbmk_pellet_hep239.name=HEP-239 연료 펠렛 +item.rbmk_pellet_hep241.name=HEP-241 연료 펠릿 +item.rbmk_pellet_hes.name=HES 연료 펠릿 +item.rbmk_pellet_heu233.name=HEU-233 연료 펠릿 +item.rbmk_pellet_heu235.name=HEU-235 연료 펠렛 +item.rbmk_pellet_lea.name=LEA 연료 펠릿 +item.rbmk_pellet_leaus.name=LEAus 연료 펠릿 +item.rbmk_pellet_lep.name=LEP 연료 펠릿 +item.rbmk_pellet_les.name=LES 연료 펠릿 +item.rbmk_pellet_mea.name=MEA 연료 펠릿 +item.rbmk_pellet_men.name=MEN 연료 펠릿 +item.rbmk_pellet_mep.name=MEP 연료 펠릿 +item.rbmk_pellet_mes.name=MES 연료 펠릿 +item.rbmk_pellet_meu.name=MEU 연료 펠릿 +item.rbmk_pellet_mox.name=MOX 연료 펠릿 +item.rbmk_pellet_po210be.name=Po210Be 중성자 소스 펠렛 +item.rbmk_pellet_pu238be.name=Pu238Be 중성자 소스 펠릿 +item.rbmk_pellet_ra226be.name=Ra226Be 중성자 소스 펠릿 +item.rbmk_pellet_thmeu.name=ThMEU 연료 펠렛 +item.rbmk_pellet_ueu.name=NU 연료 펠릿 +item.rbmk_pellet_unobtainium.name=언옵티늄 중성자 막대 +item.rbmk_pellet_zfb_am_mix.name=연료 등급 아메리슘 ZFB 펠릿 +item.rbmk_pellet_zfb_bismuth.name=비스무트 ZFB 펠릿 +item.rbmk_pellet_zfb_pu241.name=Pu-241 ZFB 펠릿 +item.rbmk_tool.desc=위치를 저장하려면 RBMK를 Sneak하고 우클릭하고 콘솔을 우클릭하면 연결됩니다! +item.rbmk_tool.linked=포지션 설정! +item.rbmk_tool.name=RBMK 콘솔 연결 장치 +item.rbmk_tool.set=RBMK 연결! +item.reacher.name=텅스텐 리처 +item.reactor_core.name=번식 원자로 코어 +item.reactor_sensor.name=반응기 원격 센서 +item.record.glass.desc=? ? ? +item.record.lc.desc=밸브 - 디아볼릭 아드레날린 기타/람다 코어 +item.record.ss.desc=밸브 - 섹터 스윕 +item.record.vc.desc=밸브 - 보탈 컴뱃 +item.redcoil_capacitor.name=레드코일 커패시터 +item.redstone_depleted.name=채도가 낮은 레드스톤 가루 +item.redstone_sword.name=레드스톤 소드 +item.reer_graar.name=더 리어 그라아르 +item.remote.name=고장난 리모컨 +item.ring_pull.name=링 풀 +item.ring_starmetal.name=§9성금속 반지§r +item.rocket_fuel.name=고체 연료(로켓 추진제) +item.rod_ac227.name=악티늄-227 로드 +item.rod_australium.name=오스트랄륨 로드 +item.rod_balefire.name=베일파이어 막대 +item.rod_balefire_blazing.name=블레이징 베일파이어 로드 +item.rod_co60.name=코발트-60 로드 +item.rod_cobalt.name=코발트 막대 +item.rod_coolant.name=냉각수 셀 +item.rod_daffergon.name=대퍼곤 로드 +item.rod_dual_ac227.name=악티늄-227 듀얼로드 +item.rod_dual_balefire.name=베일파이어 듀얼로드 +item.rod_dual_balefire_blazing.name=블레이징 베일파이어 듀얼 로드 +item.rod_dual_co60.name=코발트-60 듀얼 로드 +item.rod_dual_cobalt.name=코발트 듀얼로드 +item.rod_dual_coolant.name=이중 냉각수 셀 +item.rod_dual_empty.name=빈 이중 막대 +item.rod_dual_lead.name=리드 듀얼로드 +item.rod_dual_lithium.name=듀얼 리튬 막대 +item.rod_dual_mox_fuel.name=MOX 이중 연료봉 +item.rod_dual_mox_fuel_depleted.name=고갈된 MOX 이중 연료봉 +item.rod_dual_neptunium.name=넵투늄-237 듀얼 로드 +item.rod_dual_plutonium.name=플루토늄 듀얼로드 +item.rod_dual_plutonium_fuel.name=플루토늄 이중 연료봉 +item.rod_dual_plutonium_fuel_depleted.name=고갈된 플루토늄 이중 연료봉 +item.rod_dual_polonium.name=폴로늄-210 듀얼 로드 +item.rod_dual_pu238.name=플루토늄-238 듀얼로드 +item.rod_dual_pu239.name=플루토늄-239 듀얼로드 +item.rod_dual_pu240.name=플루토늄-240 듀얼 로드 +item.rod_dual_ra226.name=라듐-226 듀얼 로드 +item.rod_dual_rgp.name=원자로 등급 플루토늄 이중 로드 +item.rod_dual_schrabidium.name=Schrabidium-326 듀얼로드 +item.rod_dual_schrabidium_fuel.name=Schrabidium 이중 연료봉 +item.rod_dual_schrabidium_fuel_depleted.name=고갈된 Schrabidium 이중 연료봉 +item.rod_dual_solinium.name=솔리늄-327 듀얼 로드 +item.rod_dual_th232.name=토륨-232 듀얼 로드 +item.rod_dual_thorium_fuel.name=토륨 이중 연료봉 +item.rod_dual_thorium_fuel_depleted.name=고갈된 토륨 이중 연료봉 +item.rod_dual_tritium.name=이중 삼중수소 셀 +item.rod_dual_u233.name=우라늄-233 듀얼로드 +item.rod_dual_u235.name=우라늄-235 듀얼로드 +item.rod_dual_u238.name=우라늄-238 이중 막대 +item.rod_dual_uranium.name=우라늄 듀얼로드 +item.rod_dual_uranium_fuel.name=우라늄 이중 연료봉 +item.rod_dual_uranium_fuel_depleted.name=열화 우라늄 이중 연료봉 +item.rod_dual_waste.name=핵폐기물 듀얼로드 +item.rod_dual_water.name=듀얼 워터 셀 +item.rod_empty.name=빈 로드 +item.rod_euphemium.name=유페미엄 로드 +item.rod_lead.name=리드로드 +item.rod_lithium.name=리튬 막대 +item.rod_mox_fuel.name=MOX 연료봉 +item.rod_mox_fuel_depleted.name=고갈된 MOX 연료봉 +item.rod_neptunium.name=넵투늄-237 막대 +item.rod_of_discord.name=불화의 막대 +item.rod_plutonium.name=플루토늄 로드 +item.rod_plutonium_fuel.name=플루토늄 연료봉 +item.rod_plutonium_fuel_depleted.name=고갈된 플루토늄 연료봉 +item.rod_polonium.name=폴로늄-210 막대 +item.rod_pu238.name=플루토늄-238 로드 +item.rod_pu239.name=플루토늄-239 로드 +item.rod_pu240.name=플루토늄-240 로드 +item.rod_quad_ac227.name=악티늄-227 쿼드 로드 +item.rod_quad_balefire.name=베일파이어 쿼드 로드 +item.rod_quad_balefire_blazing.name=블레이징 베일파이어 쿼드로드 +item.rod_quad_co60.name=코발트-60 쿼드 로드 +item.rod_quad_cobalt.name=코발트 쿼드로드 +item.rod_quad_coolant.name=쿼드 냉각수 셀 +item.rod_quad_empty.name=빈 쿼드 로드 +item.rod_quad_euphemium.name=타버린 쿼드 슈라비디움 로드 +item.rod_quad_lead.name=리드 쿼드 로드 +item.rod_quad_lithium.name=쿼드 리튬 막대 +item.rod_quad_mox_fuel.name=MOX 쿼드 연료봉 +item.rod_quad_mox_fuel_depleted.name=고갈된 MOX 쿼드 연료봉 +item.rod_quad_neptunium.name=넵투늄-237 쿼드 로드 +item.rod_quad_plutonium.name=플루토늄 쿼드 로드 +item.rod_quad_plutonium_fuel.name=플루토늄 쿼드 연료봉 +item.rod_quad_plutonium_fuel_depleted.name=고갈된 플루토늄 쿼드 연료봉 +item.rod_quad_polonium.name=폴로늄-210 쿼드 로드 +item.rod_quad_pu238.name=플루토늄-238 쿼드 로드 +item.rod_quad_pu239.name=플루토늄-239 쿼드 로드 +item.rod_quad_pu240.name=플루토늄-240 쿼드 로드 +item.rod_quad_ra226.name=라듐-226 쿼드 로드 +item.rod_quad_rgp.name=원자로급 플루토늄 쿼드로드 +item.rod_quad_schrabidium.name=Schrabidium-326 쿼드 로드 +item.rod_quad_schrabidium_fuel.name=슈라비디움 쿼드 연료봉 +item.rod_quad_schrabidium_fuel_depleted.name=고갈된 Schrabidium 쿼드 연료봉 +item.rod_quad_solinium.name=솔리늄-327 쿼드 로드 +item.rod_quad_th232.name=토륨-232 쿼드 로드 +item.rod_quad_thorium_fuel.name=토륨 쿼드 연료봉 +item.rod_quad_thorium_fuel_depleted.name=고갈된 토륨 쿼드 연료봉 +item.rod_quad_tritium.name=쿼드 트리튬 셀 +item.rod_quad_u233.name=우라늄-233 쿼드로드 +item.rod_quad_u235.name=우라늄-235 쿼드로드 +item.rod_quad_u238.name=우라늄-238 쿼드로드 +item.rod_quad_uranium.name=우라늄 쿼드로드 +item.rod_quad_uranium_fuel.name=우라늄 쿼드 연료봉 +item.rod_quad_uranium_fuel_depleted.name=열화 우라늄 쿼드 연료봉 +item.rod_quad_waste.name=핵폐기물 쿼드로드 +item.rod_quad_water.name=쿼드 워터셀 +item.rod_ra226.name=라듐-226 로드 +item.rod_reiium.name=레이움 로드 +item.rod_rgp.name=원자로급 플루토늄 로드 +item.rod_schrabidium.name=슈라비디움-326 로드 +item.rod_schrabidium_fuel.name=슈라비디움 연료봉 +item.rod_schrabidium_fuel_depleted.name=고갈된 슈라비디움 연료봉 +item.rod_solinium.name=솔리늄-327 로드 +item.rod_th232.name=토륨-232 로드 +item.rod_thorium_fuel.name=토륨 연료봉 +item.rod_thorium_fuel_depleted.name=고갈된 토륨 연료봉 +item.rod_tritium.name=삼중수소 셀 +item.rod_u233.name=우라늄-233 로드 +item.rod_u235.name=우라늄-235 로드 +item.rod_u238.name=우라늄-238 로드 +item.rod_unobtainium.name=언옵티늄 막대 +item.rod_uranium.name=우라늄 막대 +item.rod_uranium_fuel.name=우라늄 연료봉 +item.rod_uranium_fuel_depleted.name=열화 우라늄 연료봉 +item.rod_verticium.name=버티시움 로드 +item.rod_waste.name=핵폐기물 막대 +item.rod_water.name=워터 셀 +item.rod_weidanium.name=와이다늄 로드 +item.rotor_steel.name=대형 강철 로터 +item.rtg_unit.name=RTG 유닛 +item.rune_blank.name=빈 촉매 매트릭스 +item.rune_dagaz.name=균형 잡힌 촉매 매트릭스 +item.rune_hagalaz.name=거친 촉매 매트릭스 +item.rune_isa.name=냉각 촉매 매트릭스 +item.rune_jera.name=곱셈 촉매 매트릭스 +item.rune_thurisaz.name=첨가제 촉매 매트릭스 +item.sat_base.name=위성 기지 +item.sat_chip.name=위성 ID 칩 +item.sat_coord.name=위성 지정자 +item.sat_foeq.name=PEAF - 실험용 핵 추진 장치가 장착된 Mk.I FOEQ Duna 프로브 +item.sat_gerald.name=제럴드 더 컨스트럭션 안드로이드 +item.sat_head_laser.name=죽음의 광선 +item.sat_head_mapper.name=고이득 광학 카메라 +item.sat_head_radar.name=레이더 접시 +item.sat_head_resonator.name=제늄 공진기 +item.sat_head_scanner.name=M700 측량 스캐너 +item.sat_interface.name=위성 제어 인터페이스 +item.sat_laser.name=궤도 죽음의 광선 +item.sat_mapper.name=표면 매핑 위성 +item.sat_miner.name=소행성 채광선 +item.sat_radar.name=레이더 측량 위성 +item.sat_resonator.name=제니움 공진기 위성 +item.sat_scanner.name=깊이 자원 스캐닝 모듈이 있는 위성 +item.schnitzel_vegan.name=비건 슈니첼 +item.schrabidium_axe.name=슈라비디움 도끼 +item.schrabidium_boots.name=슈라비디움 부츠 +item.schrabidium_hammer.name=슈라비디움 해머 +item.schrabidium_helmet.name=슈라비디움 투구 +item.schrabidium_hoe.name=슈라비디움 괭이 +item.schrabidium_legs.name=슈라비디움 다리보호구 +item.schrabidium_pickaxe.name=슈라비디움 곡괭이 +item.schrabidium_plate.name=슈라비디움 흉갑 +item.schrabidium_shovel.name=슈라비디움 삽 +item.schrabidium_sword.name=슈라비디움 소드 +item.scrap.name=한조각 +item.screwdriver.name=드라이버 +item.scrumpy.name=스크럼피 병 +item.security_boots.name=보안 부츠 +item.security_helmet.name=보안 헬멧 +item.security_legs.name=보안 레깅스 +item.security_plate.name=보안 흉갑 +item.seg_10.name=크기 10 커넥터 +item.seg_15.name=크기 15 커넥터 +item.seg_20.name=크기 20 커넥터 +item.serum.name=혈청 +item.servo_set.name=서보 세트 +item.servo_set_desh.name=데시 서보 세트 +item.shackles.name=족쇄 item.shimmer_axe.name=쉬머 액스 -item.euphemium_stopper.name=스토퍼 -item.matchstick.name=성냥개비 -item.mech_key.name=대형 은색 열쇠 -item.remote.name=고장난 리모컨 - -item.shimmer_head.name=헤비 해머 헤드 item.shimmer_axe_head.name=무거운 도끼 머리 item.shimmer_handle.name=강화 폴리머 핸들 - -item.redcoil_capacitor.name=레드코일 커패시터 -item.detonator.name=뇌관 -item.detonator_multi.name=다중뇌관 -item.detonator_laser.name=레이저 기폭 장치 -item.detonator_deadman.name=데드맨의 기폭 장치 -item.detonator_de.name=데드맨의 폭발물 -item.crate_caller.name=보급품 투하 요청자 -item.bomb_caller.name=공습 지정자 -item.meteor_remote.name=운석 리모콘 - -item.meteorite_sword.name=운석검 -item.meteorite_sword_seared.name=운석검(그슬린) -item.meteorite_sword_reforged.name=운석검(재련) -item.meteorite_sword_hardened.name=운석검(단화) -item.meteorite_sword_alloyed.name=운석검(합금) -item.meteorite_sword_machined.name=운석검(가공) -item.meteorite_sword_treated.name=운석검(처리됨) -item.meteorite_sword_etched.name=운석검(에칭) -item.meteorite_sword_bred.name=운석검(교배) -item.meteorite_sword_irradiated.name=§e운석검 (조사) -item.meteorite_sword_fused.name=§d운석검(융합) -item.meteorite_sword_baleful.name=§a운석검(해로움) -item.meteorite_sword_warped.name=§f운석검(뒤틀림) -item.meteorite_sword_demonic.name=§c운석검(악마) - -item.pellet_mercury.name=수은탄 -item.pellet_meteorite.name=운석탄 -item.pellet_canister.name=캐니스터 샷 -item.pellet_charged.name=이온화된 입자 -item.pellet_chlorophyte.name=엽록소 라운드 -item.pellet_claws.name=날카로운 금속 발톱 -item.ammo_rocket_canister.name=84mm 로켓(캐니스터 샷) -item.ammo_9mm_chlorophyte.name=9mm 원형(엽록체) -item.ammo_5mm_chlorophyte.name=5mm 원형(엽록체) -item.ammo_556_flechette_chlorophyte.name=5.56mm 플레셰트 원형(엽록체) - -item.ammo_shell.name=240mm 포탄 -item.ammo_shell_apfsds_du.name=240mm APFSDS-DU -item.ammo_shell_apfsds_t.name=240mm APFSDS-T -item.ammo_shell_explosive.name=240mm HE 포탄 -item.ammo_shell_w9.name=240mm W9 핵탄 -item.ammo_dgk.name=골키퍼 트윈 CIWS 200 라운드 벨트 - -item.ingot_hes.name=고농축 슈라비듐 연료 주괴 -item.ingot_les.name=저농축 슈라비듐 연료 주괴 -item.nugget_hes.name=고농축 슈라비듐 연료 덩어리 -item.nugget_les.name=저농축 슈라비듐 연료 덩어리 - -item.pellet_schrabidium.name=순수 슈라비듐 와츠 펠릿 -item.pellet_hes.name=HES 와츠 펠릿 -item.pellet_mes.name=MES 와츠 펠릿 -item.pellet_les.name=레 와츠 펠릿 -item.pellet_beryllium.name=베릴륨 감속재 펠릿 -item.pellet_neptunium.name=넵투늄 와츠 펠릿 -item.pellet_lead.name=리드 반사경 펠릿 -item.pellet_advanced.name=고급 Watz 성능 향상기 - -item.titanium_filter.name=티타늄 필터 - -tile.mud_block.name=산화된 와츠 진흙 -fluid.mud_fluid=산화된 와츠 진흙 -item.bucket_mud.name=산화된 와츠 진흙 양동이 -tile.acid_block.name=산 -fluid.acid_fluid=산 -item.bucket_acid.name=산성 양동이 -tile.toxic_block.name=셀라린 -fluid.toxic_fluid=셀라린 -item.bucket_toxic.name=셀라린 양동이 -item.tank_waste_0.name=진흙 컨테이너 -item.tank_waste_1.name=진흙 컨테이너 -item.tank_waste_2.name=진흙 컨테이너 -item.tank_waste_3.name=진흙 컨테이너 -item.tank_waste_4.name=진흙 컨테이너 -item.tank_waste_5.name=진흙 컨테이너 -item.tank_waste_6.name=진흙 컨테이너 -item.tank_waste_7.name=진흙 컨테이너 -item.tank_waste_8.name=진흙 컨테이너 - -item.can_empty.name=빈 캔 -item.can_smart.name='스마트' 에너지 드링크 -item.can_creature.name='생물'에너지 드링크 -item.can_redbomb.name='레드밤' 에너지 드링크 -item.can_mrsugar.name='박사. 슈가청량음료 -item.can_overcharge.name=과충전 섬망 XT -item.can_luna.name=블랙 메사 루나 - 다크 콜라 -item.can_bepis.name=베피스 -item.can_breen.name=브린스 박사 개인 보호구역 -item.bottle_empty.name=빈 폭탄 모양 병 -item.bottle_nuka.name=누카 콜라 한 병 -item.bottle_cherry.name=누카 체리 병 -item.bottle_quantum.name=누카 콜라 퀀텀 병 -item.bottle_sparkle.name=S~콜라 한병 -item.bottle_rad.name=S~콜라 RAD 한 병 -item.bottle2_empty.name=빈 병 -item.bottle2_korl.name=콜 -item.bottle2_fritz.name=프리츠 콜라 -item.bottle2_korl_special.name=첫 번째 콜 -item.bottle2_fritz_special.name=첫 번째 프리츠 콜라 -item.bottle2_sunset.name=선셋 사르사파릴라 -item.chocolate_milk.name=초콜릿 우유 -item.cbt_device.name=CBT 장치 -item.cap_nuka.name=누카콜라 병뚜껑 -item.cap_quantum.name=누카콜라 퀀텀 보틀캡 -item.cap_sparkle.name=S~콜라 병뚜껑 -item.cap_rad.name=에스~콜라 RAD 병뚜껑 -item.cap_korl.name=콜 병뚜껑 -item.cap_fritz.name=프리츠 콜라 병뚜껑 -item.cap_sunset.name=선셋 사르사파릴라 병뚜껑 -item.cap_star.name=선셋 사르사파릴라 스타 캡 -item.ring_pull.name=링 풀 -item.canned_beef.name=쇠고기 통조림 -item.canned_tuna.name=통조림 참치 -item.canned_mystery.name=통조림 미스터리 고기 -item.canned_pashtet.name=패스테트 -item.canned_cheese.name=통조림 녹은 치즈 -item.canned_jizz.name=FlimFlam Industries 통조림 종마 우유™ -item.canned_milk.name=통조림 증발 우유 -item.canned_ass.name=통조림 엉덩이 -item.canned_pizza.name=통조림 페퍼로니 피자 -item.canned_tube.name=우주 비행사 음식 튜브 -item.canned_tomato.name=통조림 토마토 수프 -item.canned_asbestos.name=통조림 석면 -item.canned_bhole.name=통조림 블랙홀 -item.canned_hotdogs.name=통조림 핫도그 -item.canned_leftovers.name=남은 음식 보존 -item.canned_yogurt.name=요구르트 통조림 -item.canned_stew.name=통조림 "버섯 스튜" -item.canned_chinese.name=통조림 중국 음식 -item.canned_oil.name=캔 엔진 오일 -item.canned_fist.name=통조림 주먹 -item.canned_spam.name=통조림 스팸 -item.canned_fried.name=통조림 프라이드 치킨 -item.canned_napalm.name=통조림 네이팜 -item.canned_diesel.name=통조림 디젤 -item.canned_kerosene.name=통조림 등유 -item.canned_recursion.name=미리 준비된 재귀 -item.canned_bark.name=통조림 소나무 껍질 육포 -item.can_key.name=와인딩 키 -item.pudding.name=푸딩 - -item.canteen_13.name=볼트 13 수통 -item.canteen_vodka.name=세련된 플라스크 - -item.bottle_opener.name=HBM이 직접 제작한 병따개 - -item.blades_aluminium.name=알루미늄 슈레더 블레이드 -item.blades_gold.name=황금 분쇄기 칼날 -item.blades_iron.name=철 분쇄기 블레이드 -item.blades_steel.name=강철 슈레더 블레이드 -item.blades_titanium.name=티타늄 슈레더 블레이드 -item.blades_advanced_alloy.name=고급 분쇄기 블레이드 -item.blades_combine_steel.name=CMB 슈레더 블레이드 -item.blades_schrabidium.name=슈라비듐 슈레더 블레이드 -item.blades_desh.name=Desh 슈레더 블레이드 - -item.stamp_stone_flat.name=플랫 스탬프(스톤) -item.stamp_stone_plate.name=플레이트 스탬프(스톤) -item.stamp_stone_wire.name=와이어 스탬프(석재) -item.stamp_stone_circuit.name=회로 스탬프(석재) +item.shimmer_head.name=헤비 해머 헤드 +item.shimmer_sledge.name=쉬머 썰매 +item.singularity.name=특이 +item.singularity_counter_resonant.name=포함된 반공진 특이점 +item.singularity_spark.name=스파크 특이점 +item.singularity_super_heated.name=과열된 공명 특이점 +item.siox.name=SiOX 암 치료제 +item.siren_track.name=사이렌 트랙 +item.sliding_blast_door_skin0.name=옆으로 슬라이딩 블래스트 도어 기본 스킨 +item.sliding_blast_door_skin1.name=옆으로 슬라이딩 블래스트 도어 변형 1 스킨 +item.sliding_blast_door_skin2.name=옆으로 슬라이딩 블래스트 도어 변형 2 스킨 +item.smashing_hammer.name=스매싱 해머 +item.solid_fuel.name=고체 연료 +item.solinium_core.name=준안정 솔리늄 코어 +item.solinium_igniter.name=SOL 펄스 점화기 +item.solinium_kit.name=솔리늄 키트 +item.solinium_propellant.name=SOL 압축 충전 +item.sopsign.name=소프 사인 전투 도끼 +item.spawn_ufo.name=화성 침공선 +item.spawn_worm.name=볼오트론 프라임 +item.sphere_steel.name=강철 구체 +item.spider_milk.name=거미 우유 한 병 +item.spongebob_macaroni.name=스폰지밥 마카로니 +item.stamp_357.name=.357 매그넘 스탬프 +item.stamp_44.name=.44 매그넘 스탬프 +item.stamp_50.name=대구경 스탬프 +item.stamp_9.name=소구경 스탬프 +item.stamp_iron_circuit.name=서킷 스탬프(철) item.stamp_iron_flat.name=플랫 스탬프(철) item.stamp_iron_plate.name=플레이트 스탬프(철) item.stamp_iron_wire.name=와이어 스탬프(철) -item.stamp_iron_circuit.name=회로 스탬프(철) +item.stamp_obsidian_circuit.name=서킷 스탬프(흑요석) +item.stamp_obsidian_flat.name=플랫 스탬프(흑요석) +item.stamp_obsidian_plate.name=플레이트 스탬프(흑요석) +item.stamp_obsidian_wire.name=와이어 스탬프(흑요석) +item.stamp_schrabidium_circuit.name=서킷 스탬프(Schrabidium) +item.stamp_schrabidium_flat.name=플랫 스탬프(Schrabidium) +item.stamp_schrabidium_plate.name=플레이트 스탬프(스크라비디움) +item.stamp_schrabidium_wire.name=와이어 스탬프(Schrabidium) +item.stamp_steel_circuit.name=서킷 스탬프(스틸) item.stamp_steel_flat.name=플랫 스탬프(스틸) -item.stamp_steel_plate.name=플레이트 스탬프(강철) -item.stamp_steel_wire.name=와이어 스탬프(강철) -item.stamp_steel_circuit.name=회로 스탬프(강철) +item.stamp_steel_plate.name=플레이트 스탬프(스틸) +item.stamp_steel_wire.name=와이어 스탬프(스틸) +item.stamp_stone_circuit.name=서킷 스탬프(스톤) +item.stamp_stone_flat.name=플랫 스탬프(스톤) +item.stamp_stone_plate.name=플레이트 스탬프(스톤) +item.stamp_stone_wire.name=와이어 스탬프(스톤) +item.stamp_titanium_circuit.name=서킷 스탬프(티타늄) item.stamp_titanium_flat.name=플랫 스탬프(티타늄) item.stamp_titanium_plate.name=플레이트 스탬프(티타늄) item.stamp_titanium_wire.name=와이어 스탬프(티타늄) -item.stamp_titanium_circuit.name=회로 스탬프(티타늄) -item.stamp_obsidian_flat.name=플랫 스탬프(흑요석) -item.stamp_obsidian_plate.name=플레이트 스탬프(흑요석) -item.stamp_obsidian_wire.name=와이어 스탬프(흑요석) -item.stamp_obsidian_circuit.name=회로 스탬프(흑요석) -item.stamp_schrabidium_flat.name=플랫 스탬프 (슈라비듐) -item.stamp_schrabidium_plate.name=플레이트 스탬프(슈라비듐) -item.stamp_schrabidium_wire.name=와이어 스탬프 (슈라비듐) -item.stamp_schrabidium_circuit.name=회로 스탬프(슈라비듐) -item.stamp_357.name=.357 매그넘 스탬프 -item.stamp_44.name=.44 매그넘 스탬프 -item.stamp_9.name=소구경 우표 -item.stamp_50.name=대구경 우표 - -item.stamp_desh_flat.name=플랫 스탬프(데쉬) -item.stamp_desh_plate.name=플레이트 스탬프(데쉬) -item.stamp_desh_wire.name=와이어 스탬프(데쉬) -item.stamp_desh_circuit.name=회로 스탬프(데쉬) -item.stamp_desh_357.name=.357 매그넘 스탬프(데쉬) -item.stamp_desh_44.name=.44 매그넘 스탬프(데쉬) -item.stamp_desh_9.name=소구경 스탬프(데쉬) -item.stamp_desh_50.name=대구경 스탬프(데쉬) - -item.part_lithium.name=리튬 가루 상자 -item.part_beryllium.name=베릴륨 가루 상자 -item.part_carbon.name=탄소 먼지 상자 -item.part_copper.name=구리 가루 상자 -item.part_plutonium.name=플루토늄 먼지 상자 - -item.particle_aelectron.name=양전자 캡슐 -item.particle_amat.name=반물질 캡슐 -item.particle_aproton.name=항양성자 캡슐 -item.particle_aschrab.name=안티스크라비디움 캡슐 -item.particle_dark.name=암흑물질 캡슐 -item.particle_empty.name=빈 입자 캡슐 -item.particle_higgs.name=힉스 보존 캡슐 -item.particle_muon.name=뮤온캡슐 -item.particle_sparkticle.name=스파크티클 캡슐 -item.particle_strange.name=이상한 쿼크 캡슐 -item.particle_copper.name=구리 이온 캡슐 -item.particle_digamma.name=§c디감마 입자§r -item.particle_lead.name=납 이온 캡슐 -item.particle_hydrogen.name=수소이온캡슐 - -geiger.title=가이거 계수관 -geiger.chunkRad=현재 청크 방사선: -geiger.envRad=총 환경 방사선: -geiger.recievedRad=총 수신된 방사선: -geiger.playerRad=플레이어 오염: -geiger.playerRes=플레이어 저항: - -dosimeter.title=선량계 - -digamma.title=디감마 진단 -digamma.playerDigamma=플레이어 오염: -digamma.playerHealth=플레이어 고갈: - -item.rune_blank.name=빈 촉매 매트릭스 -item.rune_isa.name=냉각 촉매 매트릭스 -item.rune_dagaz.name=균형 잡힌 촉매 매트릭스 -item.rune_hagalaz.name=거친 촉매 매트릭스 -item.rune_jera.name=곱셈 촉매 매트릭스 -item.rune_thurisaz.name=첨가제 촉매 매트릭스 - -item.ams_catalyst_blank.name=빈 DFC 촉매 -item.ams_catalyst_aluminium.name=알루미늄 DFC 촉매 -item.ams_catalyst_beryllium.name=베릴륨 DFC 촉매 -item.ams_catalyst_caesium.name=세세슘 DFC 촉매 -item.ams_catalyst_cerium.name=세륨 DFC 촉매 -item.ams_catalyst_cobalt.name=코발트 DFC 촉매 -item.ams_catalyst_copper.name=구리 DFC 촉매 -item.ams_catalyst_euphemium.name=유페늄 DFC 촉매 -item.ams_catalyst_iron.name=철 DFC 촉매 -item.ams_catalyst_lithium.name=리튬 DFC 촉매 -item.ams_catalyst_niobium.name=니오븀 DFC 촉매 -item.ams_catalyst_strontium.name=스트론튬 DFC 촉매 -item.ams_catalyst_thorium.name=토륨 DFC 촉매 -item.ams_catalyst_tungsten.name=텅스텐 DFC 촉매 -item.ams_catalyst_schrabidium.name=슈라비듐 DFC 촉매 -item.ams_catalyst_dineutronium.name=디뉴트로늄 DFC 촉매 - -item.ams_focus_blank.name=빈 안정기 렌즈 -item.ams_focus_limiter.name=제한 안정기 렌즈 -item.ams_focus_booster.name=부스팅 안정기 렌즈 -item.ams_focus_omega.name=정의되지 않은 안정기 렌즈 - -item.ams_muzzle.name=광선 방출 총구 -item.ams_lens.name=안정기 렌즈 -item.ams_core_sing.name=활기찬 특이점(DFC 코어) -item.ams_core_wormhole.name=작은 웜홀(DFC 코어) -item.ams_core_eyeofharmony.name=조화의 눈(DFC 코어) -item.ams_core_thingy.name=Thingy(DFC 코어) - -item.crystal_energy.name=에너지 크리스탈 -item.pellet_coolant.name=냉각수 클러스터 - -item.linker.name=텔레링커 -item.reactor_sensor.name=원자로 원격 센서 -item.oil_detector.name=오일 저장소 감지기 -item.oil_detector.desc1=오일을 스캔하려면 마우스 오른쪽 버튼을 클릭하세요. -item.oil_detector.desc2=감지기는 더 큰 침전물만 찾아냅니다. -item.oil_detector.bullseyeBedrock=바로 아래 기반암 기름 매장지 -item.oil_detector.detectedBedrock=근처에서 기반암유가 발견됨 -item.oil_detector.bullseye=바로 아래 석유 매장지 -item.oil_detector.detected=근처에서 기름이 발견되었습니다 -item.oil_detector.noOil=오일이 감지되지 않음 -item.geiger_counter.name=휴대용 가이거 계수기 -tile.geiger.name=가이거 계수관 -item.dosimeter.name=선량계 -item.digamma_diagnostic.name=디감마 진단 -tile.glass_polonium.name=폴로늄 유리 -item.survey_scanner.name=설문조사 스캐너 - +item.starmetal_axe.name=별금속 도끼 +item.starmetal_boots.name=스타메탈 부츠 +item.starmetal_helmet.name=스타메탈 헬멧 +item.starmetal_hoe.name=스타메탈 괭이 +item.starmetal_legs.name=스타메탈 레깅스 +item.starmetal_pickaxe.name=스타메탈 곡괭이 +item.starmetal_plate.name=별금속 흉갑 +item.starmetal_shovel.name=스타메탈 삽 +item.starmetal_sword.name=스타메탈 소드 +item.static_sandwich.name=TV 정적으로 장식된 샌드위치 +item.stealth_boy.name=스텔스 장치 +item.steel_axe.name=강철 도끼 +item.steel_boots.name=스틸 부츠 +item.steel_helmet.name=강철 헬멧 +item.steel_hoe.name=강철 괭이 +item.steel_legs.name=스틸 레깅스 +item.steel_pickaxe.name=강철 곡괭이 +item.steel_plate.name=강철 흉갑 +item.steel_shovel.name=강철 삽 +item.steel_sword.name=강철검 +item.stopsign.name=정지 신호 전투 도끼 +item.sulfur.name=황 +item.survey_scanner.name=측량 스캐너 +item.syringe_antidote.name=해독제 +item.syringe_awesome.name=엄청난 +item.syringe_empty.name=빈 주사기 +item.syringe_metal_empty.name=금속 주사기 +item.syringe_metal_medx.name=Med-X +item.syringe_metal_psycho.name=싸이코 +item.syringe_metal_stimpak.name=스팀팩 +item.syringe_metal_super.name=슈퍼 스팀팩 +item.syringe_mkunicorn.name=엠쿠니콘 +item.syringe_poison.name=유독 한 주사 +item.syringe_taint.name=워터리 테인트 주입 +item.t45_boots.name=T45 파워 아머 부츠 +item.t45_helmet.name=T45 파워 아머 헬멧 +item.t45_kit.name=T45 파워 아머 키트 +item.t45_legs.name=T45 파워 아머 레깅스 +item.t45_plate.name=T45 파워 아머 흉갑 +item.tank_steel.name=강철 탱크 +item.tank_waste_0.name=머드 컨테이너 +item.tank_waste_1.name=머드 컨테이너 +item.tank_waste_2.name=머드 컨테이너 +item.tank_waste_3.name=머드 컨테이너 +item.tank_waste_4.name=머드 컨테이너 +item.tank_waste_5.name=머드 컨테이너 +item.tank_waste_6.name=머드 컨테이너 +item.tank_waste_7.name=머드 컨테이너 +item.tank_waste_8.name=머드 컨테이너 +item.telepad.name=텔레패드 +item.tem_flakes.name=템 플레이크 +item.tem_flakes1.name=템 플레이크 +item.tem_flakes2.name=템 플레이크 +item.template_folder.name=머신 템플릿 폴더 +item.test_nuke_igniter.name=점화기 +item.test_nuke_propellant.name=추진제 +item.test_nuke_tier1_bullet.name=U235 발사체(1단계) +item.test_nuke_tier1_shielding.name=중성자 반사경(1단계) +item.test_nuke_tier1_target.name=아임계 U235 대상(계층 1) +item.test_nuke_tier2_bullet.name=MOX 발사체(2단계) +item.test_nuke_tier2_shielding.name=중성자 반사체(계층 2) +item.test_nuke_tier2_target.name=아임계 MOX 타겟(계층 2) item.thermo_element.name=열전소자 -item.limiter.name=발전기 리미터 - -item.multitool_dig.name=파워 피스트(디깅 클로) -item.multitool_silk.name=파워 피스트(실크 터치 클로) -item.multitool_ext.name=파워 피스트(광석 추출기) -item.multitool_miner.name=파워 피스트(마이닝 레이저 추출) -item.multitool_hit.name=파워 피스트(주먹) -item.multitool_beam.name=파워 피스트(재퍼) -item.multitool_sky.name=파워 피스트 (크랙 더 스카이) -item.multitool_mega.name=파워피스트(슈퍼펀치) -item.multitool_joule.name=파워피스트(기가줄) -item.multitool_decon.name=파워 피스트(오염 제거기) - -item.australium_iii.name=마크 III 수명 연장 장치 -item.australium_iv.name=마크 IV 수명 연장 장치 -item.australium_v.name=마크 V 수명 연장 장치 - -item.weapon_saw.name=의사 조력 살인 +item.thermo_unit_empty.name=열 분배 장치 +item.thermo_unit_endo.name=냉기 분배 장치 +item.thermo_unit_exo.name=열 분배 장치 +item.thruster_large.name=대형 추진기 +item.thruster_medium.name=미디엄 스러스터 +item.thruster_nuclear.name=LV-N 핵 로켓 엔진 +item.thruster_small.name=소형 추진기 +item.titanium_axe.name=티타늄 도끼 +item.titanium_boots.name=티타늄 부츠 +item.titanium_filter.name=티타늄 필터 +item.titanium_helmet.name=티타늄 헬멧 +item.titanium_hoe.name=티타늄 괭이 +item.titanium_legs.name=티타늄 레깅스 +item.titanium_pickaxe.name=티타늄 곡괭이 +item.titanium_plate.name=티타늄 흉갑 +item.titanium_shovel.name=티타늄 삽 +item.titanium_sword.name=티타늄 검 +item.toothpicks.name=이쑤시개 +item.trinitite.name=삼위일체 +item.tritium_deuterium_cake.name=삼중수소 케이크 +item.tsar_core.name=차르 봄바 코어 +item.tsar_kit.name=차르 봄바 키트 +item.turbine_titanium.name=티타늄 증기 터빈 +item.turbine_tungsten.name=강화 터보팬 블레이드 +item.turret_biometry.name=터렛 텔레메트리 카드 +item.turret_cheapo_ammo.name=6x24 칩포 포탑 탄약 +item.turret_chip.name=터렛 AI 칩 +item.turret_control.name=터렛 컨트롤러 +item.turret_cwis_ammo.name=CIWS 20mm 탄약통 +item.turret_flamer_ammo.name=화염 포탑 연료 탱크 +item.turret_heavy_ammo.name=헤비 MG 터렛 탄약 +item.turret_light_ammo.name=라이트 MG 터렛 탄약 상자 +item.turret_rocket_ammo.name=로켓 포탑 2x4 탄약 +item.turret_spitfire_ammo.name=AA-쉘 +item.turret_tau_ammo.name=타우 포탑 우라늄 탄약 +item.twinkie.name=트윙키 +item.ullapool_caber.name=울라풀 까베르 +item.undefined.name=한정되지 않은 +item.upgrade_afterburn_1.name=애프터버너 업그레이드 Mk.I +item.upgrade_afterburn_2.name=애프터버너 업그레이드 Mk.II +item.upgrade_afterburn_3.name=애프터버너 업그레이드 Mk.III +item.upgrade_centrifuge.name=원심분리기 업그레이드 +item.upgrade_crystallizer.name=결정체 업그레이드 +item.upgrade_effect_1.name=효율성 업그레이드 Mk.I +item.upgrade_effect_2.name=효율성 업그레이드 Mk.II +item.upgrade_effect_3.name=효율성 업그레이드 Mk.III +item.upgrade_fortune_1.name=포춘 업그레이드 Mk.I +item.upgrade_fortune_2.name=포춘 업그레이드 Mk.II +item.upgrade_fortune_3.name=포춘 업그레이드 Mk.III +item.upgrade_health.name=이미터 상태 업그레이드 +item.upgrade_nullifier.name=스크랩 파괴자 업그레이드 +item.upgrade_overdrive_1.name=오버드라이브 머신 업그레이드 Mk.I +item.upgrade_overdrive_2.name=오버드라이브 머신 업그레이드 Mk.II +item.upgrade_overdrive_3.name=오버드라이브 머신 업그레이드 Mk.III +item.upgrade_power_1.name=절전 업그레이드 Mk.I +item.upgrade_power_2.name=절전 업그레이드 Mk.II +item.upgrade_power_3.name=절전 업그레이드 Mk.III +item.upgrade_radius.name=방사체 반경 업그레이드 +item.upgrade_screm.name=절규하는 과학자 업그레이드 +item.upgrade_shredder.name=슈레더 업그레이드 +item.upgrade_smelter.name=제련소 업그레이드 +item.upgrade_speed_1.name=스피드 업그레이드 Mk.I +item.upgrade_speed_2.name=스피드 업그레이드 Mk.II +item.upgrade_speed_3.name=스피드 업그레이드 Mk.III +item.upgrade_template.name=머신 업그레이드 템플릿 +item.v1.name=V1 +item.volcanic_pickaxe.name=녹은 곡괭이 +item.wand_d.name=디버그 완드 +item.wand_k.name=건설 지팡이 +item.wand_s.name=구조 완드 +item.warhead_buster_large.name=대형 벙커 버스터 탄두 +item.warhead_buster_medium.name=미디엄 벙커 버스터 탄두 +item.warhead_buster_small.name=소형 벙커 버스터 탄두 +item.warhead_cluster_large.name=대형 클러스터 탄두 +item.warhead_cluster_medium.name=중형 클러스터 탄두 +item.warhead_cluster_small.name=소형 클러스터 탄두 +item.warhead_generic_large.name=대형 탄두 +item.warhead_generic_medium.name=중형 탄두 +item.warhead_generic_small.name=소형 탄두 +item.warhead_incendiary_large.name=대형 소이 탄두 +item.warhead_incendiary_medium.name=중간 소이 탄두 +item.warhead_incendiary_small.name=작은 소이 탄두 +item.warhead_mirv.name=열핵 탄두 +item.warhead_mirvlet.name=미르브 +item.warhead_nuclear.name=핵탄두 +item.warhead_thermo_endo.name=흡열 탄두 +item.warhead_thermo_exo.name=발열 탄두 +item.warhead_volcano.name=지각 탄두 +item.waste_mox.name=고갈된 MOX 연료 +item.waste_mox_hot.name=고갈된 MOX 연료(뜨거운) +item.waste_plutonium.name=열화 플루토늄 연료 +item.waste_plutonium_hot.name=열화 플루토늄 연료(뜨거운) +item.waste_schrabidium.name=고갈된 슈라비디움 연료 +item.waste_schrabidium_hot.name=고갈된 슈라비디움 연료(뜨거운) +item.waste_thorium.name=열화 토륨 연료 +item.waste_thorium_hot.name=열화 토륨 연료(뜨거운) +item.waste_uranium.name=열화 우라늄 연료 +item.waste_uranium_hot.name=열화 우라늄 연료(뜨거운) +item.watch.name=깨진 회중시계 +item.wd40.name=VT-40 item.weapon_bat.name=리차드의 디폴트 -item.weapon_bat_nail.name=진부한 표현 +item.weapon_bat_nail.name=클리셰 item.weapon_golf_club.name=러시아 마피아 클럽 -item.weapon_pipe_rusty.name=태도 조절자 -item.weapon_pipe_lead.name=수동 재정의 -item.reer_graar.name=더 리어 그라르 -item.stopsign.name=정지 신호 전투 도끼 -item.sopsign.name=Sop Sign 전투 도끼 -item.chernobylsign.name=체르노빌 경고 표시 전투 도끼 -item.diamond_gavel.name=다이아몬드 망치 -item.lead_gavel.name=납 망치 +item.weapon_pipe_lead.name=수동 오버라이드 +item.weapon_pipe_rusty.name=자세 조절기 +item.weapon_saw.name=의사 조력 살인 +item.weaponized_starblaster_cell.name=§c리깅된 스타 블래스터 에너지 셀§r +item.wild_p.name=와일드 페가수스 드라이 위스키 +item.wings_limp.name=절름발이 날개 +item.wings_murk.name=어두운 날개 +item.wire_advanced_alloy.name=초전도체 +item.wire_aluminium.name=알루미늄 와이어 +item.wire_copper.name=구리 와이어 +item.wire_gold.name=골드 와이어 +item.wire_magnetized_tungsten.name=4000K 고온 초전도체 +item.wire_red_copper.name=레드 구리 와이어 +item.wire_schrabidium.name=슈라비디움 와이어 +item.wire_tungsten.name=텅스텐 와이어 +item.wiring_red_copper.name=케이블 드럼 item.wood_gavel.name=나무 망치 -item.mese_gavel.name=메세 망치 -item.mese_pickaxe.name=메세 곡괭이 -item.chlorophyte_pickaxe.name=엽록소 곡괭이 - -item.letter.name=빠른 우편 -item.polaroid.name=폴라로이드 -item.glitch.name=결함 -item.book_secret.name=3-596-50802-9 -item.book_of_.name=박스카의 책 -item.burnt_bark.name=탄 나무껍질 - -item.loot_10.name=사이즈 10 미사일 전리품 상자 -item.loot_15.name=사이즈 15 미사일 전리품 상자 -item.loot_misc.name=일반 미사일 전리품 상자 - -item.crystal_horn.name=크리스탈 혼 -item.crystal_charred.name=까맣게 탄 수정 -item.ingot_lanthanium.name=반안정한 란타늄 주괴 -item.ingot_actinium.name=반안정한 악티늄 주괴 - -tile.dummy_block.name=더미 블록 -tile.dummy_port.name=더미 블록(전기 포트) - -tile.dungeon_chain.name=금속 체인 -tile.fireworks.name=불꽃놀이 배터리 -tile.fireworks.charges=로드된 요금: %s -tile.fireworks.message=메세지: %s -tile.fireworks.color=색: %s - -item.insert_doxium.name=아스톨피움 첨가 독시움 삽입물 -item.insert_du.name=DU 인서트 -item.insert_era.name=폭발성 반응 장갑 삽입물 -item.insert_esapi.name=ESAPI 삽입 -item.insert_kevlar.name=케블라 인서트 -item.insert_sapi.name=SAPI 삽입 -item.insert_polonium.name=폴로늄 인서트 -item.insert_ghiorsium.name=기오르슘 인서트 -item.insert_di.name=디뉴트로늄 인서트 -item.insert_steel.name=무거운 강철 삽입 -item.insert_xsapi.name=XSAPI 삽입 -item.insert_yharonite.name=야로나이트 인서트 -item.insert_ferrouranium.name=페로라늄 인서트 -item.attachment_mask.name=방독면 부착 가능 -item.attachment_mask_mono.name=일산화탄소 마스크 부착 가능 -item.servo_set.name=서보 세트 -item.servo_set_desh.name=Desh 서보 세트 - -item.demon_core_closed.name=폐쇄된 데몬 코어 -item.demon_core_open.name=매달린 악마 핵 - -item.billet_am_mix.name=원자로 등급 아메리슘 빌렛 -item.billet_am241.name=아메리슘-241 빌렛 -item.billet_am242.name=아메리슘-242 빌렛 -item.billet_americium_fuel.name=아메리슘 연료 빌렛 -item.billet_au198.name=골드-198 빌렛 -item.billet_australium.name=오스트레일륨 빌렛 -item.billet_australium_greater.name=오스트레일륨-406 빌렛 -item.billet_australium_lesser.name=오스트레일륨-405 빌렛 -item.billet_balefire_gold.name=플래시골드 빌렛 -item.billet_co60.name=코발트-60 빌렛 -item.billet_hes.name=고농축 슈라비듐 연료 빌릿 -item.billet_les.name=저농축 슈라비듐 연료 빌릿 -item.billet_mox_fuel.name=MOX 연료 빌릿 -item.billet_neptunium.name=넵투늄-237 빌렛 -item.billet_neptunium_fuel.name=넵투늄 연료 빌렛 -item.billet_po210be.name=Po210Be 빌렛 -item.billet_polonium.name=폴로늄-210 빌렛 -item.billet_pu_mix.name=원자로 등급 플루토늄 빌렛 -item.billet_pu238.name=플루토늄-238 빌렛 -item.billet_pu238be.name=Pu238Be 빌렛 -item.billet_pu239.name=플루토늄-239 빌렛 -item.billet_pu240.name=플루토늄-240 빌렛 -item.billet_pu241.name=플루토늄-241 빌렛 -item.billet_plutonium.name=플루토늄 빌렛 -item.billet_plutonium_fuel.name=플루토늄 연료 빌릿 -item.billet_ra226be.name=Ra226Be 빌렛 -item.billet_schrabidium.name=슈라비듐-326 빌렛 -item.billet_schrabidium_fuel.name=슈라비듐 연료 빌릿 -item.billet_solinium.name=솔리늄-327 빌렛 -item.billet_technetium.name=테크네튬-99 빌렛 -item.billet_th232.name=토륨-232 빌렛 -item.billet_thorium_fuel.name=토륨 연료 빌릿 -item.billet_u233.name=우라늄-233 빌렛 -item.billet_u235.name=우라늄-235 빌렛 -item.billet_u238.name=우라늄-238 빌렛 -item.billet_uranium.name=우라늄 빌렛 -item.billet_uranium_fuel.name=우라늄 연료 빌렛 -item.billet_yharonite.name=야로나이트 빌렛 - -item.fmn.name=플루니트라제팜 정제 -item.xanax.name=NAXA 항디감마 약물 -item.five_htp.name=엔테타민 알약 - -item.chopper.name=헌터 헬기 -item.spawn_worm.name=볼스오트론 프라임 -item.spawn_ufo.name=화성 침공선 - -item.nothing.name=아무것도 아님 - -tile.crystal_virus.name=다크 크리스탈 -tile.crystal_hardened.name=강화된 다크 크리스탈 -tile.crystal_pulsar.name=맥동하는 수정 - -tile.taint.name=더러움 -tile.residue.name=구름 잔류물 -item.powder_cloud.name=구름 잔류물 - -tile.cheater_virus.name=겔리드 유페미움 -tile.cheater_virus_seed.name=불안정한 유페늄 슈라비듐 블록 - -item.mysteryshovel.name=부서지기 쉬운 스페이드 -tile.ntm_dirt.name=흙 -item.memory.name=item.null.이름 - +item.wrench.name=파이프 렌치 +item.wrench_flipped.name=렌치 위의 칼날 +item.xanax.name=NAXA 안티 디감마 약물 +itemGroup.tabBlocks=NTM 블록 +itemGroup.tabConsumable=NTM 소모품 및 장비 +itemGroup.tabControl=NTM 기계 항목 및 연료 +itemGroup.tabMachine=NTM 기계 +itemGroup.tabMissile=NTM 미사일과 위성 +itemGroup.tabNuke=NTM 폭탄 +itemGroup.tabParts=NTM 리소스 및 부품 +itemGroup.tabRessource=NTM 리소스 +itemGroup.tabTemplate=NTM 템플릿 +itemGroup.tabTest=핵 기술 모드 테스트 탭 +itemGroup.tabWeapon=NTM 무기 및 포탑 +key.categories.hbm=Hbm의 원자력 기술 모드 +key.categories.hbm.craneLoad=RBMK 크레인 하중 +key.categories.hbm.craneMoveDown=RBMK 크레인 다운 +key.categories.hbm.craneMoveLeft=RBMK 크레인 왼쪽 +key.categories.hbm.craneMoveRight=RBMK 크레인 우측 +key.categories.hbm.craneMoveUp=RBMK 크레인 업 +key.categories.hbm.reload=새로고침 +key.categories.hbm.toggleBack=뒤로 전환 +key.categories.hbm.toggleHUD=Hud 전환 +key.fsb_flashlight=FSB 손전등 전환 +key.jetpack_activate=제트팩 전환 +key.jetpack_hover=Jetpack 호버 모드 전환 +key.jetpack_hud=Jetpack HUD 모드 전환 +lung_scanner.player_asbestos_health=폐 건강[석면]: +lung_scanner.player_coal_health=폐 건강[석탄]: +lung_scanner.player_total_health=폐 건강 합계: +lung_scanner.title=폐 진단 +potion.hbm_bang=! ! ! +potion.hbm_lead=납 중독 +potion.hbm_mutation=오염된 심장 +potion.hbm_phosphorus=인화상 +potion.hbm_radaway=라다웨이 +potion.hbm_radiation=더럽히는 +potion.hbm_radx=라드-X +potion.hbm_stability=안정 +potion.hbm_taint=더럽혀진 +potion.hbm_telekinesis=! ! ! +rbmk.boiler.steam=스팀: %s / %s +rbmk.boiler.type=압축기: %s +rbmk.boiler.water=급수: %s / %s +rbmk.control.blue=§1블루 그룹 +rbmk.control.green=§a그린 그룹 +rbmk.control.level=%에스 +rbmk.control.purple=§5퍼플 그룹 +rbmk.control.red=§c레드 그룹 +rbmk.control.yellow=§e노란색 그룹 +rbmk.heat=열 온도: %s +rbmk.moderated=검토됨 +rbmk.rod.coreTemp=심부 온도: %s +rbmk.rod.depletion=고갈: %s +rbmk.rod.skinTemp=피부 온도: %s / %s +rbmk.rod.xenon=제논 독: %s +tile.absorber.name=방사선 흡수체 +tile.absorber_green.name=고급 방사선 흡수체 +tile.absorber_pink.name=엘리트 방사선 흡수기 +tile.absorber_red.name=향상된 방사선 흡수체 +tile.acid_block.name=산 +tile.ams_base.name=AMS 베이스 [WIP] +tile.ams_emitter.name=AMS 이미터 [WIP] +tile.ams_limiter.name=AMS 안정기 [WIP] +tile.ancient_scrap.name=고대 고철 +tile.anvil_bismuth.name=비스무트 모루 +tile.anvil_dnt.name=다이뉴트로늄 앤빌 +tile.anvil_ferrouranium.name=페로우라늄 앤빌 +tile.anvil_iron.name=철 모루 +tile.anvil_lead.name=리드 앤빌 +tile.anvil_meteorite.name=운석 모루 +tile.anvil_murky.name=머키 앤빌 +tile.anvil_schrabidate.name=Ferric Schrabidate 모루 +tile.anvil_starmetal.name=스타메탈 모루 +tile.anvil_steel.name=강철 모루 +tile.ash_digamma.name=금연 건강 증진 협회 +tile.asphalt.name=아스팔트 +tile.balefire.name=발파이어 +tile.barbed_wire.name=가시 철사 +tile.barbed_wire_acid.name=가성 철조망 +tile.barbed_wire_fire.name=불타는 철조망 +tile.barbed_wire_poison.name=독이 든 철조망 +tile.barbed_wire_ultradeath.name=구름 철조망 +tile.barbed_wire_wither.name=시든 철조망 +tile.barrel_antimatter.name=자성 반물질 용기 +tile.barrel_corroded.name=부식된 통 +tile.barrel_iron.name=철통 +tile.barrel_plastic.name=세이프 배럴™ +tile.barrel_steel.name=스틸 배럴 +tile.barrel_tcalloy.name=테크네튬 강철 배럴 +tile.barricade.name=모래주머니 tile.basalt.name=현무암 tile.basalt_asbestos.name=석면이 풍부한 현무암 tile.basalt_brick.name=현무암 벽돌 tile.basalt_fluorite.name=형석이 풍부한 현무암 tile.basalt_gem.name=보석이 풍부한 현무암 -tile.basalt_polished.name=광택나는 현무암 +tile.basalt_polished.name=광택 현무암 tile.basalt_smooth.name=매끄러운 현무암 tile.basalt_sulfur.name=유황이 풍부한 현무암 tile.basalt_tiles.name=현무암 타일 -tile.ash_digamma.name=금연 건강 증진 협회 -item.ashglasses.name=애쉬 고글 -item.falloutitem.name=낙진 더미 -item.book_guide_book.name=가이드북 -tile.fallout.name=낙진 -tile.fire_digamma.name=느린 디감마 -item.marshmallow.name=막대기에 마시멜로 -item.marshmallow_roasted.name=막대기에 마시멜로 -tile.block_smore.name=스모어 블록 -item.ingot_smore.name=스모어 잉곳 -tile.gas_asbestos.name=공중 석면 입자 -tile.gas_coal.name=공중 석탄 먼지 -tile.gas_explosive.name=폭발성 가스 -tile.gas_flammable.name=가연성 가스 -tile.gas_monoxide.name=일산화탄소 -tile.gas_radon.name=라돈가스 -tile.gas_radon_dense.name=고밀도 라돈 가스 -tile.gas_radon_tomb.name=무덤 가스 -tile.block_corium.name=코륨 +tile.blast_door.name=슬라이딩 블래스트 도어 +tile.block_actinium.name=악티늄 블록 +tile.block_advanced_alloy.name=고급 합금 블록 +tile.block_aluminium.name=알루미늄 블록 +tile.block_asbestos.name=석면 블록 +tile.block_australium.name=오스트랄리움 블록 +tile.block_beryllium.name=베릴륨 블록 +tile.block_bismuth.name=비스무트 블록 +tile.block_boron.name=붕소 블록 +tile.block_cap_fritz.name=프리츠 콜라 병뚜껑 블록 +tile.block_cap_korl.name=Korl 병뚜껑 블록 +tile.block_cap_nuka.name=누카 콜라 병뚜껑 블록 +tile.block_cap_quantum.name=누카콜라 양자 병뚜껑 블록 +tile.block_cap_rad.name=S~Cola RAD 병뚜껑 블록 +tile.block_cap_sparkle.name=S~Cola 병뚜껑 블록 +tile.block_cap_star.name=블록 오브 선셋 사르사파릴라 스타 캡 +tile.block_cap_sunset.name=블록 오브 선셋 사르사파릴라 병뚜껑 +tile.block_cobalt.name=코발트 블록 +tile.block_coltan.name=콜탄 블록 +tile.block_combine_steel.name=CMB 강철 블록 +tile.block_copper.name=구리 블록 +tile.block_corium.name=진피 tile.block_corium_cobble.name=코어블스톤 -tile.ancient_scrap.name=고대 고철 -tile.anvil_bismuth.name=비스무트-209 모루 -tile.anvil_dnt.name=디뉴트로늄 모루 -tile.anvil_ferrouranium.name=페로라늄 모루 -tile.anvil_iron.name=철 모루 -tile.anvil_lead.name=리드 앤빌 -tile.anvil_meteorite.name=운석 모루 -tile.anvil_murky.name=머키 앤빌 -tile.anvil_schrabidate.name=페릭 슈라비데이트 앤빌 -tile.anvil_starmetal.name=스타메탈 모루 -tile.anvil_steel.name=강철 모루 -item.nugget_am_mix.name=원자로 등급 아메리슘 조각 -item.nugget_am241.name=아메리슘-241 조각 -item.nugget_am242.name=아메리슘-242 조각 -item.nugget_americium_fuel.name=아메리슘 연료 덩어리 -item.nugget_au198.name=골드-198 조각 -item.nugget_australium.name=오스트레일륨 덩어리 -item.nugget_australium_greater.name=오스트레일륨-406 조각 -item.nugget_australium_lesser.name=오스트레일륨-405 조각 -item.ingot_am_mix.name=원자로 등급 아메리슘 주괴 -item.ingot_am241.name=아메리슘-241 주괴 -item.ingot_am242.name=아메리슘-242 주괴 -item.ingot_americium_fuel.name=아메리슘 연료 주괴 -item.ingot_au198.name=금-198 주괴 -item.powder_at209.name=아스타틴-209 가루 -item.powder_au198.name=골드-198 가루 -item.ingot_tantalium.name=탄탈륨 주괴 -item.ingot_tcalloy.name=테크네튬 강철 주괴 -item.ingot_technetium.name=테크네튬-99 주괴 +tile.block_daffergon.name=Daffergon 블록 +tile.block_desh.name=강화된 데시 블록 +tile.block_dineutronium.name=다이뉴트로늄 블록 +tile.block_dura_steel.name=고속철강 블록 +tile.block_electrical_scrap.name=전기 스크랩 블록 +tile.block_euphemium.name=완곡한 블록 +tile.block_euphemium_cluster.name=Euphemium-Etched Schrabidium 클러스터 +tile.block_fallout.name=낙진 차단 +tile.block_fiberglass.name=유리 섬유 롤 +tile.block_fluorite.name=형석 블록 +tile.block_foam.name=거품 +tile.block_graphite.name=흑연 블록 +tile.block_graphite_drilled.name=뚫린 흑연 +tile.block_graphite_fuel.name=파일 연료 +tile.block_graphite_plutonium.name=파일 연료(사육) +tile.block_graphite_rod.name=말뚝 제어봉 +tile.block_graphite_source.name=파일 중성자 소스 +tile.block_insulator.name=단열재 롤 +tile.block_lanthanium.name=란탄 블록 +tile.block_lead.name=리드 블록 +tile.block_lithium.name=리튬 블록 +tile.block_magnetized_tungsten.name=자화 텅스텐 블록 +tile.block_meteor.name=운석 블록 +tile.block_meteor_broken.name=부서진 운석 블록 +tile.block_meteor_cobble.name=운석 조약돌 +tile.block_meteor_molten.name=뜨거운 운석 조약돌 +tile.block_meteor_treasure.name=운석 보물 블록 +tile.block_mox_fuel.name=MOX 연료 블록 +tile.block_neptunium.name=넵투늄-237 블록 +tile.block_niobium.name=니오븀 블록 +tile.block_niter.name=나이터 블록 +tile.block_niter_reinforced.name=강화된 나이터 +tile.block_plutonium.name=플루토늄 블록 +tile.block_plutonium_fuel.name=플루토늄 연료 블록 +tile.block_polonium.name=폴로늄-210 블록 +tile.block_polymer.name=폴리머 블록 +tile.block_pu238.name=플루토늄-238 블록 +tile.block_pu239.name=플루토늄-239 블록 +tile.block_pu240.name=플루토늄-240 블록 +tile.block_pu_mix.name=원자로 등급 플루토늄 블록 +tile.block_ra226.name=라듐-226 블록 +tile.block_red_copper.name=붉은 구리 블록 +tile.block_red_phosphorus.name=적린 블록 +tile.block_reiium.name=레이움 블록 +tile.block_saturnite.name=토성 블록 +tile.block_schrabidate.name=Ferric Schrabidate의 블록 +tile.block_schrabidium.name=Schrabidium-326 블록 +tile.block_schrabidium_cluster.name=슈라비디움 클러스터 +tile.block_schrabidium_fuel.name=Schrabidium 연료 블록 +tile.block_schraranium.name=슈라라늄 블록 +tile.block_scrap.name=스크랩 블록 +tile.block_semtex.name=Semtex 블록 +tile.block_smore.name=블록 오브 스모어 +tile.block_solinium.name=솔리늄-327 블록 +tile.block_starmetal.name=§9스타메탈 블록§r +tile.block_steel.name=강철 블록 +tile.block_sulfur.name=유황 블록 +tile.block_tantalium.name=탄탈륨 블록 +tile.block_thorium.name=토륨 블록 +tile.block_thorium_fuel.name=토륨 연료 블록 +tile.block_titanium.name=티타늄 블록 +tile.block_trinitite.name=트리니타이트 블록 +tile.block_tritium.name=삼중수소 세포 블록 +tile.block_tungsten.name=텅스텐 블록 +tile.block_u233.name=우라늄-233 블록 +tile.block_u235.name=우라늄-235 블록 +tile.block_u238.name=우라늄-238 블록 +tile.block_unobtainium.name=Unobtainium의 블록 +tile.block_uranium.name=우라늄 블록 +tile.block_uranium_fuel.name=우라늄 연료 블록 +tile.block_verticium.name=버티시움 블록 +tile.block_waste.name=핵 폐기물 블록 +tile.block_waste_painted.name=핵 폐기물의 페인트 블록 +tile.block_waste_vitrified.name=핵 폐기물의 유리화 블록 +tile.block_weidanium.name=Weidanium의 블록 +tile.block_white_phosphorus.name=백린 블록 +tile.block_yellowcake.name=옐로우케이크 블록 +tile.block_zirconium.name=지르코늄 블록 +tile.bm_power_box.name=블랙 메사 전원 스위치 +tile.boat.name=보트 +tile.bomb_multi.name=다목적 폭탄 +tile.bomber.name=추락한 폭격기 +tile.book_guide.name=Hbm의 원자력 기술 모드 매뉴얼 [LEGACY] +tile.boxcar.name=화차 +tile.brick_asbestos.name=석면 벽돌 +tile.brick_asbestos_slab.name=석면 벽돌 슬래브 +tile.brick_asbestos_stairs.name=석면 벽돌 계단 +tile.brick_compound.name=복합 메시 +tile.brick_compound_slab.name=복합 메쉬 슬래브 +tile.brick_compound_stairs.name=복합 메쉬 계단 +tile.brick_concrete.name=콘크리트 벽돌 +tile.brick_concrete_broken.name=깨진 콘크리트 벽돌 +tile.brick_concrete_broken_slab.name=깨진 콘크리트 슬래브 +tile.brick_concrete_broken_stairs.name=부서진 콘크리트 계단 +tile.brick_concrete_cracked.name=금이 간 콘크리트 벽돌 +tile.brick_concrete_cracked_slab.name=금이 간 콘크리트 슬래브 +tile.brick_concrete_cracked_stairs.name=금이 간 콘크리트 계단 +tile.brick_concrete_marked.name=표시된 콘크리트 벽돌 +tile.brick_concrete_mossy.name=이끼 콘크리트 벽돌 +tile.brick_concrete_mossy_slab.name=이끼 콘크리트 슬래브 +tile.brick_concrete_mossy_stairs.name=이끼 콘크리트 계단 +tile.brick_concrete_slab.name=콘크리트 벽돌 슬래브 +tile.brick_concrete_stairs.name=콘크리트 벽돌 계단 +tile.brick_dungeon.name=Berzelianite 벽돌 +tile.brick_dungeon_circle.name=브라질리언 서클 +tile.brick_dungeon_flat.name=Berzelianite 블록 +tile.brick_dungeon_tile.name=Berzelianite 타일 +tile.brick_jungle.name=에나자이트 벽돌 +tile.brick_jungle_circle.name=메카니스트 서클 +tile.brick_jungle_cracked.name=금이 간 Enargite 벽돌 +tile.brick_jungle_glyph.name=Enargite 글리프 브릭 +tile.brick_jungle_lava.name=마그마틱 에나자이트 벽돌 +tile.brick_jungle_mystic.name=비전 에나자이트 벽돌 +tile.brick_jungle_ooze.name=방사성 Enargite 벽돌 +tile.brick_jungle_trap.name=갇힌 Enargite 벽돌 +tile.brick_light.name=가벼운 벽돌 +tile.brick_obsidian.name=흑요석 벽돌 +tile.brick_obsidian_slab.name=흑요석 벽돌 슬래브 +tile.brick_obsidian_stairs.name=흑요석 벽돌 계단 +tile.broadcaster_pc.name=타락한 브로드캐스터 +tile.cable_switch.name=전원 스위치 +tile.cheater_virus.name=겔리드 완곡 +tile.cheater_virus_seed.name=불안정한 유페미움 슈라비드 블록 +tile.chlorine_gas.name=염소가스 tile.cluster_aluminium.name=알루미늄 광석 클러스터 -tile.cluster_copper.name=구리 광석 클러스터 tile.cluster_depth_iron.name=심층 철광석 클러스터 -tile.cluster_depth_titanium.name=깊이 티타늄 광석 클러스터 +tile.cluster_depth_titanium.name=깊이 있는 티타늄 광석 클러스터 tile.cluster_depth_tungsten.name=깊이 텅스텐 광석 클러스터 tile.cluster_iron.name=철광석 클러스터 tile.cluster_titanium.name=티타늄 광석 클러스터 +tile.cmb_brick.name=CMB 스틸 타일 +tile.cmb_brick_reinforced.name=강화 CMB 벽돌 +tile.cmb_brick_reinforced_slab.name=강화 CMB 벽돌 슬래브 +tile.cmb_brick_reinforced_stairs.name=강화 CMB 벽돌 계단 +tile.compact_launcher.name=소형 발사대 +tile.concrete.name=콘크리트 타일 +tile.concrete_asbestos.name=석면 콘크리트 +tile.concrete_asbestos_slab.name=석면 콘크리트 슬래브 +tile.concrete_asbestos_stairs.name=석면 콘크리트 계단 +tile.concrete_black.name=블랙 콘크리트 +tile.concrete_black_slab.name=블랙 콘크리트 슬래브 +tile.concrete_black_stairs.name=검은색 콘크리트 계단 +tile.concrete_blue.name=파란색 콘크리트 +tile.concrete_blue_slab.name=파란색 콘크리트 슬래브 +tile.concrete_blue_stairs.name=파란색 콘크리트 계단 +tile.concrete_brown.name=갈색 콘크리트 +tile.concrete_brown_slab.name=갈색 콘크리트 슬래브 +tile.concrete_brown_stairs.name=갈색 콘크리트 계단 +tile.concrete_cyan.name=시안 콘크리트 +tile.concrete_cyan_slab.name=청록색 콘크리트 슬래브 +tile.concrete_cyan_stairs.name=청록색 콘크리트 계단 +tile.concrete_gray.name=회색 콘크리트 +tile.concrete_gray_slab.name=회색 콘크리트 슬래브 +tile.concrete_gray_stairs.name=회색 콘크리트 계단 +tile.concrete_green.name=녹색 콘크리트 +tile.concrete_green_slab.name=녹색 콘크리트 슬래브 +tile.concrete_green_stairs.name=녹색 콘크리트 계단 +tile.concrete_light_blue.name=하늘색 콘크리트 +tile.concrete_light_blue_slab.name=하늘색 콘크리트 슬래브 +tile.concrete_light_blue_stairs.name=하늘색 콘크리트 계단 +tile.concrete_lime.name=석회 콘크리트 +tile.concrete_lime_slab.name=석회 콘크리트 슬래브 +tile.concrete_lime_stairs.name=석회 콘크리트 계단 +tile.concrete_magenta.name=자홍색 콘크리트 +tile.concrete_magenta_slab.name=자홍색 콘크리트 슬래브 +tile.concrete_magenta_stairs.name=자홍색 콘크리트 계단 +tile.concrete_orange.name=주황색 콘크리트 +tile.concrete_orange_slab.name=주황색 콘크리트 슬래브 +tile.concrete_orange_stairs.name=주황색 콘크리트 계단 +tile.concrete_pillar.name=철근 철근 콘크리트 기둥 +tile.concrete_pink.name=핑크 콘크리트 +tile.concrete_pink_slab.name=핑크 콘크리트 슬래브 +tile.concrete_pink_stairs.name=핑크 콘크리트 계단 +tile.concrete_purple.name=보라색 콘크리트 +tile.concrete_purple_slab.name=보라색 콘크리트 슬래브 +tile.concrete_purple_stairs.name=보라색 콘크리트 계단 +tile.concrete_red.name=붉은 콘크리트 +tile.concrete_red_slab.name=빨간 콘크리트 슬래브 +tile.concrete_red_stairs.name=빨간 콘크리트 계단 +tile.concrete_silver.name=밝은 회색 콘크리트 +tile.concrete_silver_slab.name=실버 콘크리트 슬래브 +tile.concrete_silver_stairs.name=은색 콘크리트 계단 +tile.concrete_slab.name=콘크리트 슬래브 +tile.concrete_smooth.name=콘크리트 +tile.concrete_smooth_slab.name=매끄러운 콘크리트 슬래브 +tile.concrete_smooth_stairs.name=부드러운 콘크리트 계단 +tile.concrete_stairs.name=콘크리트 계단 +tile.concrete_white.name=흰색 콘크리트 +tile.concrete_white_slab.name=흰색 콘크리트 슬래브 +tile.concrete_white_stairs.name=흰색 콘크리트 계단 +tile.concrete_yellow.name=노란색 콘크리트 +tile.concrete_yellow_slab.name=노란색 콘크리트 슬래브 +tile.concrete_yellow_stairs.name=노란색 콘크리트 계단 +tile.control_panel0.name=[WIP]제어판 +tile.corium_block.name=액체 진피 +tile.crashed_bomb.name=바보 +tile.crate.name=보급품 상자 +tile.crate_ammo.name=별금속 상자 +tile.crate_can.name=상자 보존 +tile.crate_desh.name=접시 상자 +tile.crate_iron.name=철 상자 +tile.crate_jungle.name=에나자이트 크레이트 +tile.crate_lead.name=위험 물질 상자 +tile.crate_metal.name=기계 상자 +tile.crate_red.name=빨간 상자 +tile.crate_steel.name=강철 상자 +tile.crate_tungsten.name=텅스텐 상자 +tile.crate_weapon.name=무기 상자 +tile.crystal_hardened.name=강화된 다크 크리스탈 +tile.crystal_pulsar.name=맥동하는 수정 +tile.crystal_virus.name=다크 크리스탈 +tile.deco_aluminium.name=알루미늄 데코블록 +tile.deco_asbestos.name=석면 지붕 +tile.deco_beryllium.name=베릴륨 데코 블록 +tile.deco_lead.name=리드 데코 블록 +tile.deco_pipe.name=쇠 파이프 +tile.deco_pipe_framed.name=강관(프레임) +tile.deco_pipe_framed_green.name=그린 스틸 파이프(프레임) +tile.deco_pipe_framed_green_rusted.name=녹슨 녹색 강관(프레임) +tile.deco_pipe_framed_marked.name=가스관(액자) +tile.deco_pipe_framed_red.name=레드 스틸 파이프(액자) +tile.deco_pipe_framed_rusted.name=녹슨 강관(액자) +tile.deco_pipe_green.name=그린 스틸 파이프 +tile.deco_pipe_green_rusted.name=녹슨 녹색 강관 +tile.deco_pipe_marked.name=가스관 +tile.deco_pipe_quad.name=강관 +tile.deco_pipe_quad_green.name=그린 스틸 파이프 +tile.deco_pipe_quad_green_rusted.name=녹슨 녹색 강관 +tile.deco_pipe_quad_marked.name=가스관 +tile.deco_pipe_quad_red.name=레드 스틸 파이프 +tile.deco_pipe_quad_rusted.name=녹슨 강관 +tile.deco_pipe_red.name=레드 스틸 파이프 +tile.deco_pipe_rim.name=강관(테두리) +tile.deco_pipe_rim_green.name=그린 스틸 파이프(테두리) +tile.deco_pipe_rim_green_rusted.name=녹슨 녹색 강관(테두리) +tile.deco_pipe_rim_marked.name=가스관(테두리) +tile.deco_pipe_rim_red.name=레드 스틸 파이프(테두리) +tile.deco_pipe_rim_rusted.name=녹슨 강관(테두리) +tile.deco_pipe_rusted.name=녹슨 강관 +tile.deco_rbmk.name=RBMK 데코 +tile.deco_rbmk_smooth=RBMK 부드러운 데코 +tile.deco_red_copper.name=레드 구리 데코 블록 +tile.deco_sat_foeq.name=PEAF - 실험용 핵 추진 장치가 장착된 Mk.I FOEQ Duna Probe(Deco Block) +tile.deco_sat_laser.name=오비탈 데스 레이(데코 블록) +tile.deco_sat_mapper.name=표면 매핑 위성(Deco Block) +tile.deco_sat_radar.name=레이더 측량 위성(Deco Block) +tile.deco_sat_resonator.name=제니움 공진기 위성(Deco Block) +tile.deco_sat_scanner.name=깊이 자원 스캐닝 모듈이 있는 위성(Deco Block) +tile.deco_steel.name=스틸데코블럭 +tile.deco_titanium.name=티타늄 데코 블록 +tile.deco_tungsten.name=텅스텐 데코 블록 +tile.decon.name=방사선 오염 제거기 +tile.decon_digamma.name=디감마 제염기 tile.depth_brick.name=깊이 벽돌 tile.depth_dnt.name=DNT 강화 깊이 벽돌 tile.depth_nether_brick.name=네더 깊이 벽돌 tile.depth_nether_tiles.name=네더 깊이 타일 tile.depth_tiles.name=깊이 타일 -item.powder_coltan.name=정제된 탄탈라이트 -item.powder_coltan_ore.name=으깬 콜탄 -tile.block_coltan.name=콜탄 블록 +tile.det_charge.name=폭발물 +tile.det_cord.name=데트 코드 +tile.det_miner.name=채굴 요금 +tile.det_nuke.name=핵 충전 +tile.dfc_core.name=다크 퓨전 코어 +tile.dfc_emitter.name=DFC 이미 터 +tile.dfc_injector.name=DFC 연료 분사 장치 +tile.dfc_receiver.name=DFC 수신기 +tile.dfc_stabilizer.name=DFC 안정제 +tile.digamma_matter.name=디감마리움 +tile.drill_pipe.name=드릴 파이프 +tile.ducrete.name=두크리트 +tile.ducrete_brick.name=두크리트 벽돌 +tile.ducrete_brick_slab.name=Ducrete 벽돌 슬래브 +tile.ducrete_brick_stairs.name=두크리트 벽돌 계단 +tile.ducrete_reinforced.name=강화된 듀르세테 +tile.ducrete_reinforced_slab.name=강화된 Ducrete 슬래브 +tile.ducrete_reinforced_stairs.name=강화 Ducrete 계단 +tile.ducrete_slab.name=두크리트 슬래브 +tile.ducrete_smooth.name=매끄러운 두크리트 +tile.ducrete_smooth_slab.name=부드러운 Ducrete 슬래브 +tile.ducrete_smooth_stairs.name=매끄러운 Ducrete 계단 +tile.ducrete_stairs.name=두크리트 계단 +tile.dummy_block.name=더미 블록 +tile.dummy_port.name=더미 블록(전기 포트) +tile.dungeon_chain.name=메탈 체인 +tile.emp_bomb.name=EMP 장치 +tile.energy_ball.name=에너지 볼 +tile.factory_advanced_conductor.name=고급 공장 전기 포트 +tile.factory_advanced_core.name=고급 공장 핵심 구성 요소 +tile.factory_advanced_furnace.name=고급 공장 액세스 해치 +tile.factory_advanced_hull.name=고급 공장 케이싱 +tile.factory_titanium_conductor.name=기본 공장 전기 포트 +tile.factory_titanium_core.name=기본 공장 핵심 구성 요소 +tile.factory_titanium_furnace.name=기본 공장 접근 해치 +tile.factory_titanium_hull.name=기본 공장 케이싱 +tile.fallout.name=낙진 +tile.fence_metal.name=체인링크 울타리 +tile.field_disturber.name=고에너지 분야 방해기 +tile.fire_digamma.name=여운의 디감마 +tile.fire_door.name=방화문 +tile.fireworks.charges=로드된 요금: %s +tile.fireworks.color=색상: %s +tile.fireworks.message=메시지: %s +tile.fireworks.name=불꽃놀이 배터리 +tile.flame_war.name=상자 속의 화염 전쟁 +tile.float_bomb.name=부상 폭탄 +tile.fluid_duct.name=범용 유체 덕트[지원 중단됨] +tile.fluid_duct_mk2.name=범용 유체 덕트 +tile.fluid_duct_solid.name=밀봉된 유체 덕트 +tile.fraction_spacer.name=분별탑 분리기 +tile.frozen_dirt.name=얼어붙은 먼지 +tile.frozen_grass.name=얼어붙은 풀 +tile.frozen_log.name=동결된 로그 +tile.frozen_planks.name=얼어붙은 널빤지 +tile.fusion_center.name=중앙 자석 조각 +tile.fusion_conductor.name=초전도 자석 +tile.fusion_core_block.name=핵융합로 제어 +tile.fusion_hatch.name=핵융합로 접근 해치 +tile.fusion_heater.name=플라즈마 히터 부품 +tile.fusion_motor.name=마그넷 모터 피스 +tile.fwatz_computer.name=Fusionary Watz Reactor 계산 매트릭스 +tile.fwatz_conductor.name=4000K 초전도 자석 +tile.fwatz_cooler.name=재생 냉각수 유체 탱크 쉘 +tile.fwatz_core.name=Fusionary Watz 반응기 제어 +tile.fwatz_hatch.name=Fusionary Watz 식물 액세스 해치 +tile.fwatz_plasma.name=불안정화된 항스크라비디움 혈장 +tile.fwatz_scaffold.name=Fusionary Watz 식물 구조 지원 +tile.fwatz_tank.name=재생 냉각수 유체 탱크 +tile.gas_asbestos.name=공기 중의 석면 입자 +tile.gas_coal.name=공중 석탄 먼지 +tile.gas_duct.name=가스관 +tile.gas_duct_solid.name=코팅 가스관 +tile.gas_explosive.name=폭발성 가스 +tile.gas_flammable.name=가연성 가스 +tile.gas_monoxide.name=일산화탄소 +tile.gas_radon.name=라돈 가스 +tile.gas_radon_dense.name=조밀한 라돈 가스 +tile.gas_radon_tomb.name=무덤 가스 +tile.geiger.name=가이거 계수관 +tile.geysir_chlorine.name=클로르가스 게이시르 +tile.geysir_nether.name=마그마 게이시르 +tile.geysir_vapor.name=증기 게이시르 +tile.geysir_water.name=워터 게이시르 +tile.glass_ash.name=재 유리 +tile.glass_boron.name=붕소 유리 +tile.glass_lead.name=납 유리 +tile.glass_polonium.name=폴로늄 유리 +tile.glass_quartz.name=석영 유리 +tile.glass_trinitite.name=트리니티 유리 +tile.glass_uranium.name=우라늄 유리 +tile.gravel_diamond.name=다이아몬드 자갈 +tile.gravel_obsidian.name=부서진 흑요석 +tile.hadron_access.name=입자 가속기 액세스 터미널 +tile.hadron_analysis.name=입자 가속기 분석 챔버 벽 +tile.hadron_analysis_glass.name=입자 가속기 분석 챔버 창 +tile.hadron_coil_alloy.name=조밀한 초전도 코일 +tile.hadron_coil_chlorophyte.name=조밀한 엽록소 코일 +tile.hadron_coil_gold.name=조밀한 금 코일 +tile.hadron_coil_magtung.name=조밀한 4000K 초전도체 코일 +tile.hadron_coil_mese.name=조밀한 메스 코일 +tile.hadron_coil_neodymium.name=고밀도 네오디뮴 코일 +tile.hadron_coil_schrabidate.name=조밀한 Schrabidate 코일 +tile.hadron_coil_schrabidium.name=고밀도 슈라비딕 코일 +tile.hadron_coil_starmetal.name=조밀한 스타메탈 코일 +tile.hadron_core.name=입자 가속기 핵심 구성 요소 +tile.hadron_diode.name=쇼트키 입자 다이오드 +tile.hadron_plating.name=입자 가속기 도금 +tile.hadron_plating_black.name=입자 가속기 도금(검은색) +tile.hadron_plating_blue.name=입자 가속기 도금(파란색) +tile.hadron_plating_glass.name=입자 가속기 도금(창문) +tile.hadron_plating_striped.name=입자 가속기 도금(차가운 위험 줄무늬) +tile.hadron_plating_voltz.name=입자 가속기 도금(VOLTZ) +tile.hadron_plating_yellow.name=입자 가속기 도금(YelloDye) +tile.hadron_power.name=입자 가속기 전원 플러그 +tile.hazmat.name=방호복 블록 +tile.iter.name=핵융합로 +tile.ladder_aluminium.name=알루미늄 사다리 +tile.ladder_cobalt.name=코발트 사다리 +tile.ladder_copper.name=구리 사다리 +tile.ladder_gold.name=황금사다리 +tile.ladder_iron.name=철 사다리 +tile.ladder_lead.name=리드 사다리 +tile.ladder_red.name=빨간 사다리 +tile.ladder_red_top.name=빨간 사다리 탑 +tile.ladder_steel.name=강철 사다리 +tile.ladder_sturdy.name=튼튼한 나무 사다리 +tile.ladder_titanium.name=티타늄 사다리 +tile.ladder_tungsten.name=텅스텐 사다리 +tile.lamp_demon.name=데몬 코어 램프 +tile.large_vehicle_door.name=대형 차량 도어 +tile.launch_pad.name=미사일 발사대 +tile.launch_table.name=대형 발사대 +tile.lox_barrel.name=LOX 배럴 +tile.machine_amgen.name=주변 방사선 발생기 +tile.machine_arc_furnace_off.name=아크로 +tile.machine_arc_furnace_on.name=아크로 +tile.machine_armor_table.name=갑옷 수정 표 +tile.machine_assembler.name=조립 기계 +tile.machine_bat9000.name=큰 엉덩이 탱크 9000 +tile.machine_battery.name=에너지 저장 블록 +tile.machine_battery_potato.name=감자 배터리 블록 +tile.machine_boiler_electric_off.name=전기 보일러 +tile.machine_boiler_electric_on.name=전기 보일러 +tile.machine_boiler_off.name=보일러 +tile.machine_boiler_on.name=보일러 +tile.machine_boiler_rtg_off.name=RTG 보일러 +tile.machine_boiler_rtg_on.name=RTG 보일러 +tile.machine_centrifuge.name=원심분리기 +tile.machine_chemplant.name=화학 공장 +tile.machine_chungus.name=리바이어던 증기 터빈 +tile.machine_coal_off.name=연소 발전기 +tile.machine_coal_on.name=연소 발전기 +tile.machine_combine_factory.name=CMB 강철로 +tile.machine_condenser.name=증기 콘덴서 +tile.machine_controller.name=반응기 원격 제어 블록 +tile.machine_converter_he_rf.name=HE에서 RF로의 변환기 +tile.machine_converter_rf_he.name=RF-HE 변환기 +tile.machine_crystallizer.name=광석 산성화제 +tile.machine_cyclotron.name=사이클로트론 +tile.machine_detector.name=전력 검출기 +tile.machine_deuterium.name=중수소 추출기 +tile.machine_diesel.name=디젤 발전기 +tile.machine_difurnace_off.name=고로 +tile.machine_difurnace_on.name=고로 +tile.machine_dineutronium_battery.name=스파크 에너지 저장 블록 +tile.machine_drill.name=자동 채광 드릴 +tile.machine_electric_furnace_off.name=전기로 +tile.machine_electric_furnace_on.name=전기로 +tile.machine_epress.name=전기 프레스 +tile.machine_fel.name=지옥 +tile.machine_fensu.name=펜수 +tile.machine_flare.name=가스 플레어 +tile.machine_fluidtank.name=탱크 +tile.machine_forcefield.name=포스필드 이미터 +tile.machine_fraction_tower.name=분별탑 +tile.machine_gascent.name=가스 원심 분리기 +tile.machine_generator.name=원자로(구형) +tile.machine_geo.name=지열 발전기 +tile.machine_industrial_generator.name=산업용 발전기 +tile.machine_keyforge.name=자물쇠 제조공 테이블 +tile.machine_large_turbine.name=산업용 증기 터빈 +tile.machine_lithium_battery.name=리튬 이온 에너지 저장 블록 +tile.machine_microwave.name=마이크로파 +tile.machine_mining_laser.name=마이닝 레이저 +tile.machine_minirtg.name=라디오 동위 원소 셀 +tile.machine_missile_assembly.name=미사일 조립소 +tile.machine_nuke_furnace_off.name=핵로 +tile.machine_nuke_furnace_on.name=핵로 +tile.machine_orbus.name=무거운 자기 저장 탱크 +tile.machine_press.name=버너 프레스 +tile.machine_puf6_tank.name=플루토늄 헥사플루오라이드 탱크 +tile.machine_pumpjack.name=펌프잭 +tile.machine_radar.name=레이더 +tile.machine_radgen.name=방사선 동력 엔진 +tile.machine_reactor.name=번식 반응기 +tile.machine_reactor_on.name=번식 반응기 +tile.machine_reactor_small.name=원자로 +tile.machine_refinery.name=정유 공장 +tile.machine_reix_mainframe.name=Rei-X 메인프레임(WIP) +tile.machine_rtg_blue.name=대류 발생기 +tile.machine_rtg_cyan.name=Schrabidium Decay Generator(WIP) +tile.machine_rtg_furnace_off.name=RTG로 +tile.machine_rtg_furnace_on.name=RTG로 +tile.machine_rtg_green.name=Verticium 부 생성기 +tile.machine_rtg_grey.name=RTG 생성기 +tile.machine_rtg_orange.name=강력한 RT 생성기 +tile.machine_rtg_purple.name=반물질 소멸 생성기 +tile.machine_rtg_red.name=폭발 발생기 +tile.machine_rtg_yellow.name=오스트랄륨 초연료 원자로 +tile.machine_satlinker.name=위성 ID 관리자 +tile.machine_schrabidium_battery.name=슈라비디움 에너지 저장 블록 +tile.machine_schrabidium_transmutator.name=슈라비디움 변환 장치 +tile.machine_selenium.name=방사형 성능 엔진 +tile.machine_shredder.name=슈레더 +tile.machine_silex.name=레이저 동위원소 분리기(SILEX) +tile.machine_siren.name=사이렌 +tile.machine_solar_boiler.name=태양광 타워 보일러 +tile.machine_spp_bottom.name=ZPE 전위 발생기(하단) +tile.machine_spp_top.name=ZPE 전위 발생기(상단) +tile.machine_storage_drum.name=핵 폐기물 처리 드럼 +tile.machine_telelinker.name=터렛 원격 측정 링커 +tile.machine_teleporter.name=텔레포터 +tile.machine_tower_large.name=냉각탑 +tile.machine_tower_small.name=보조 냉각탑 +tile.machine_transformer.name=10k-20Hz 변압기 +tile.machine_transformer_20.name=10k-1Hz 변압기 +tile.machine_transformer_dnt.name=DNT-20Hz 변압기 +tile.machine_transformer_dnt_20.name=DNT-1Hz 변압기 +tile.machine_turbine.name=증기 터빈 +tile.machine_turbofan.name=터보팬 +tile.machine_uf6_tank.name=우라늄 육불화물 탱크 +tile.machine_waste_drum.name=사용후 연료 풀 드럼 +tile.machine_well.name=유정탑 +tile.marker_structure.name=다중 블록 구조 마커 +tile.meteor_battery.name=스타메탈 정전기 발생기 +tile.meteor_brick.name=유성 벽돌 +tile.meteor_brick_chiseled.name=깎인 유성 벽돌 +tile.meteor_brick_cracked.name=금이 간 유성 벽돌 +tile.meteor_brick_mossy.name=이끼 낀 유성 벽돌 +tile.meteor_pillar.name=유성기둥 +tile.meteor_polished.name=광택이 나는 유성 블록 +tile.meteor_spawner.name=사이버 크랩 어셈블러 +tile.mine_ap.name=대인지뢰 +tile.mine_fat.name=팻 마인 +tile.mine_he.name=대전차 지뢰 +tile.mine_shrap.name=파편 광산 +tile.mud_block.name=유독한 진흙 +tile.muffler.name=머플러 +tile.mush.name=빛나는 버섯 +tile.mush_block.name=자란 빛나는 버섯 +tile.mush_block_stem.name=자란 빛나는 버섯 줄기 +tile.ntm_dirt.name=흙 +tile.nuke_boy.name=어린 소년 +tile.nuke_custom.name=커스텀 핵무기 +tile.nuke_fleija.name=F.L.E.I.J.A. +tile.nuke_fstbmb.name=베일파이어 폭탄 +tile.nuke_gadget.name=가제트 +tile.nuke_man.name=뚱뚱한 남자 +tile.nuke_mike.name=아이비 마이크 +tile.nuke_n2.name=N² 광산 +tile.nuke_n45.name=N45 해군 광산 +tile.nuke_prototype.name=프로토타입 +tile.nuke_solinium.name=더 블루 린스 +tile.nuke_tsar.name=차르 봄바 +tile.oil_duct.name=송유관 +tile.oil_duct_solid.name=코팅 송유관 +tile.oil_pipe.name=원유 추출 파이프 +tile.ore_aluminium.name=알루미늄 광석 +tile.ore_asbestos.name=석면 광석 +tile.ore_australium.name=호주 광석 tile.ore_bedrock_coltan.name=기반암 콜탄 광석 -tile.ore_coltan.name=콜탄 광석 -tile.block_zirconium.name=지르코늄 블록 -item.ingot_zirconium.name=지르코늄 큐브 -item.powder_zirconium.name=지르코늄 가루 -item.nugget_zirconium.name=지르코늄 파편 -tile.block_fallout.name=낙진 블록 -item.gem_volcanic.name=화산 보석 -tile.block_foam.name=거품 -item.powder_boron.name=붕소 가루 -item.powder_boron_tiny.name=작은 붕소 가루 더미 -item.powder_tantalium.name=탄탈륨 가루 -item.powder_tcalloy.name=테크네튬 강철 가루 -item.nugget_tantalium.name=탄탈륨 조각 -item.nugget_technetium.name=테크네티움-99 조각 -tile.stone_depth.name=뎁스 록 -tile.stone_depth_nether.name=네더 깊이 바위 -tile.block_tantalium.name=탄탈륨 블록 -tile.block_lignite.name=갈탄 블록 -tile.block_coke.name=콜라 블록 -tile.block_coal_infernal.name=지옥불 석탄 블록 -tile.block_solid_fuel.name=고체 연료 블록 -tile.block_solid_fuel_presto.name=Presto 로그 블록 -tile.block_solid_fuel_presto_triplet.name=Boosted Presto 로그 블록 -item.ingot_graphite.name=흑연 주괴 -tile.block_graphite.name=흑연 블록 -tile.block_graphite_drilled.name=드릴된 흑연 -tile.block_graphite_fuel.name=더미 연료 -tile.block_graphite_plutonium.name=더미 연료(증식) -tile.block_graphite_rod.name=파일 제어봉 -tile.block_graphite_source.name=더미 중성자 소스 -item.gem_tantalium.name=탄탈륨 다결정 -item.powder_i131.name=요오드-131 가루 -item.powder_i131_tiny.name=요오드-131 가루의 작은 더미 -item.powder_xe135.name=크세논-135 가루 -item.powder_xe135_tiny.name=제논-135 가루의 작은 더미 -item.powder_cs137.name=세슘-137 가루 -item.powder_cs137_tiny.name=작은 세슘-137 가루 더미 -item.liquidator_boots.name=청산인 슈트 부츠 -item.liquidator_helmet.name=청산인 정장 헬멧 -item.liquidator_legs.name=청산인 수트 레깅스 -item.liquidator_plate.name=청산인 슈트 흉갑 -item.balefire_and_steel.name=베일파이어 앤 스틸 -item.nugget_neptunium_fuel.name=넵투늄 연료 덩어리 -item.fragment_boron.name=붕소 조각 -item.nugget_ra226.name=라듐-226 조각 -item.nugget_co60.name=코발트-60 조각 -item.powder_co60.name=코발트-60 가루 -item.cinnebar.name=단사 -item.ingot_co60.name=코발트-60 주괴 -item.ingot_boron.name=붕소 주괴 -item.powder_coal_tiny.name=작은 석탄 가루 더미 -item.fragment_coltan.name=콜탄 -item.coal_infernal.name=지옥불 석탄 -item.ingot_pu_mix.name=원자로 등급 플루토늄 주괴 -item.ingot_niobium.name=니오브 잉곳 -item.hand_drill.name=핸드 드릴 -item.hand_drill_desh.name=데쉬 핸드 드릴 -item.nuclear_waste.name=핵폐기물 -item.nuclear_waste_pearl.name=핵폐기물 진주 -item.nuclear_waste_tiny.name=작은 핵폐기물 더미 -item.nuclear_waste_long.name=장수명 핵폐기물 -item.nuclear_waste_long_tiny.name=장수명 핵 폐기물의 작은 더미 -item.nuclear_waste_long_depleted.name=부패된 장수명 핵폐기물 -item.nuclear_waste_long_depleted_tiny.name=부패된 장수명 핵 폐기물의 작은 더미 -item.nuclear_waste_short.name=단기 핵폐기물 -item.nuclear_waste_short_tiny.name=수명이 짧은 핵 폐기물의 작은 더미 -item.nuclear_waste_short_depleted.name=부패된 단수명 핵폐기물 -item.nuclear_waste_short_depleted_tiny.name=부패된 단수명 핵 폐기물의 작은 더미 -item.nuclear_waste_vitrified.name=유리화된 핵폐기물 -item.nuclear_waste_vitrified_tiny.name=유리화된 핵 폐기물의 작은 더미 -item.pile_rod_boron.name=시카고 파일 제어봉 -item.pile_rod_plutonium.name=시카고 파일 플루토늄 막대 -item.pile_rod_source.name=시카고 파일 Ra226Be 중성자 소스 -item.pile_rod_uranium.name=시카고 파일 우라늄 막대 -item.ammo_50bmg_flechette.name=.50 BMG 플레셰트탄 -item.ammo_50bmg_flechette_am.name=.50 BMG 플레셰트탄(아메리슘) -item.ammo_50bmg_flechette_po.name=.50 BMG 플레셰트탄(폴로늄) -item.plate_armor_dnt.name=DNT 갑옷 도금 -item.plate_armor_fau.name=파우 갑옷 도금 -item.warhead_volcano.name=지각 탄두 -item.ingot_neptunium_fuel.name=넵투늄 연료 주괴 -item.inf_water_mk2.name=무거운 무한 물 탱크 -item.inf_water_mk3.name=빌어먹을 두꺼운 무한 물탱크 -item.inf_water_mk4.name=큰 엉덩이 무한 물 탱크 -item.particle_tachyon.name=타키온 캡슐 -item.antiknock.name=테트라에틸납 안티노크제 -item.undefined.name=한정되지 않은 -item.oil_tar.name=오일타르 -item.circuit_bismuth.name=다목적 칩셋 -item.circuit_bismuth_raw.name=다목적 칩셋 어셈블리 -item.circuit_arsenic.name=적응형 회로 -item.circuit_arsenic_raw.name=적응형 회로 조립 -item.circuit_tantalium.name=커패시터 보드 -item.circuit_tantalium_raw.name=커패시터 보드 어셈블리 -item.gun_ar15.name=조롱 -item.coin_siege.name=공성 코인 -item.coin_ufo.name=UFO 코인 -item.wings_limp.name=축 늘어진 날개 -item.wings_murk.name=머키 날개 -item.nugget_bismuth.name=비스무트-209 조각 -item.ingot_bismuth.name=비스무트-209 주괴 -item.flywheel_beryllium.name=베릴륨 플라이휠 -item.missile_volcano.name=지각 미사일 -item.ingot_pu241.name=플루토늄-241 주괴 +tile.ore_beryllium.name=베릴륨 광석 +tile.ore_cinnebar.name=진사 광석 +tile.ore_coal_oil.name=기름진 석탄 광석 +tile.ore_coal_oil_burning.name=불타는 기름진 석탄 광석 tile.ore_cobalt.name=코발트 광석 tile.ore_coltan.name=콜탄 광석 +tile.ore_copper.name=구리 광석 +tile.ore_daffergon.name=델라이트 tile.ore_depth_cinnebar.name=깊이 진사 광석 tile.ore_depth_nether_neodymium.name=네더 깊이 네오디뮴 광석 -tile.ore_depth_nether_nitan.name=네더 깊이 니타늄 광석 tile.ore_depth_zirconium.name=깊이 지르코늄 광석 -tile.block_boron.name=붕소 블록 -tile.block_bismuth.name=비스무트-209 블록 +tile.ore_fluorite.name=형석 광석 +tile.ore_gneiss_asbestos.name=편암 석면 광석 +tile.ore_gneiss_copper.name=편암 구리 광석 +tile.ore_gneiss_gas.name=가스 셰일 +tile.ore_gneiss_gold.name=편암 금 광석 +tile.ore_gneiss_iron.name=편암 철광석 +tile.ore_gneiss_lithium.name=편암 리튬 광석 +tile.ore_gneiss_rare.name=편암 희토류 광석 +tile.ore_gneiss_schrabidium.name=편암 슈라비디움 광석 +tile.ore_gneiss_uranium.name=편암 우라늄 광석 +tile.ore_gneiss_uranium_scorched.name=그슬린 편암 우라늄 광석 +tile.ore_lead.name=납 광석 +tile.ore_lignite.name=갈탄 광석 +tile.ore_meteor_aluminium.name=유성 알루미늄 광석 +tile.ore_meteor_copper.name=유성 구리 광석 +tile.ore_meteor_lead.name=유성 납광석 +tile.ore_meteor_lithium.name=유성 리튬 광석 +tile.ore_meteor_starmetal.name=스타메탈 광석 +tile.ore_meteor_sulfur.name=유성 유황 광석 +tile.ore_meteor_thorium.name=유성 토륨 광석 +tile.ore_meteor_titanium.name=유성 티타늄 광석 +tile.ore_meteor_tungsten.name=유성 텅스텐 광석 +tile.ore_meteor_uranium.name=유성 우라늄 광석 +tile.ore_nether_coal.name=불타는 황천 석탄 광석 tile.ore_nether_cobalt.name=네더 코발트 광석 -tile.block_niobium.name=니오브 블록 -tile.block_lanthanium.name=란타늄 블록 -tile.ore_cinnebar.name=진사 광석 -tile.block_actinium.name=악티늄 블록 -tile.machine_storage_drum.name=핵폐기물 처리 드럼 -tile.machine_storage_drum.desc=콘텐츠는 시간이 지남에 따라 천천히 부패됩니다. 내부 액체 및 기체 폐기물 탱크가 가득 차면 방사선이 누출됩니다. -tile.machine_condenser.name=증기 콘덴서 -tile.machine_orbus.name=무거운 자기 저장 탱크 -tile.fraction_spacer.name=분별탑 분리기 -tile.machine_tower_large.name=냉각탑 -tile.machine_tower_small.name=보조 냉각탑 -tile.machine_bat9000.name=빅애스 탱크 9000 -tile.machine_chungus.name=리바이어던 증기 터빈 -tile.machine_fraction_tower.name=분별탑 -tile.block_semtex.name=셈텍스 블록 -tile.block_pu_mix.name=원자로 등급 플루토늄 블록 -tile.block_tritium.name=삼중수소 셀 블록 -tile.barrel_tcalloy.name=테크네튬 강철 배럴 -tile.volcano_core.name=화산 코어 -tile.machine_silex.name=레이저 동위원소 분리기(SILEX) -tile.machine_fel.name=펠 -tile.brick_concrete_marked.name=표시된 콘크리트 벽돌 -tile.concrete_asbestos.name=석면 콘크리트 -item.syringe_mkunicorn.name=엠쿠니콘 -item.bandaid.name=벨벳 반창고 -item.spider_milk.name=거미 우유 병 -item.injector_5htp.name=5-HTP 자가주사기 -item.injector_knife.name=8인치 블레이드 자동 주사기 -item.pads_rubber.name=고무 패드 -item.pads_slime.name=슬라임 패드 -item.pads_static.name=정적 패드 -item.heart_booster.name=하트 부스터 -item.heart_container.name=하트 용기 -item.heart_fab.name=팹 하트 -item.heart_piece.name=하트피스 -item.lodestone.name=천연 자석 -item.bathwater.name=독성 비눗물 -item.bathwater_mk2.name=독성 비눗물(말 향) -item.bathwater_mk3.name=최고급 체르노빌 목욕수(멜트다운 향) -item.industrial_magnet.name=산업용 자석 -item.serum.name=혈청 -item.armor_polish.name=ShiningArmor™ 방어구 광택제 -item.cladding_iron.name=철 클래딩 -item.wild_p.name=와일드 페가수스 드라이 위스키 -item.back_tesla.name=후면 장착형 Tesla 코일 -item.wd40.name=VT-40 -item.fabsols_vodka.name=팹솔 보드카 -item.ink.name=림— 잉크 -item.black_diamond.name=블랙 다이아몬드 -item.cladding_obsidian.name=흑요석 피부 -item.quartz_plutonium.name=플루토닉 석영 -item.morning_glory.name=나팔꽃 -item.horseshoe_magnet.name=말굽 자석 -item.shackles.name=족쇄 -item.scrumpy.name=스크럼피 한 병 -item.medal_liquidator.name=청산인 메달 -item.medal_ghoul.name=공인 구울 -tile.steel_grate.name=강철 창살 -item.siox.name=SiOX 항암제 -item.ingot_smore.name=스모어 잉곳 -tile.block_waste_vitrified.name=핵폐기물 유리화 블록 -item.crystal_coal.name=석탄 결정 -item.crystal_cobalt.name=코발트 결정 -item.crystal_cinnebar.name=진사 결정 -item.battery_sc_yharonite.name=자가 충전 야로나이트 편집됨 배터리 -item.battery_sc_schrabidium.name=자체 충전 슈라비듐-326 배터리 -item.battery_sc_balefire.name=자체 충전 베일파이어-XXX 배터리 -item.battery_sc_americium.name=자체 충전 아메리슘-241 배터리 -item.battery_sc_gold.name=자체 충전 금-198 배터리 -item.battery_sc_plutonium.name=자체 충전 플루토늄-238 배터리 -item.battery_sc_polonium.name=자체 충전 폴로늄-210 배터리 -item.battery_sc_technetium.name=자체 충전 테크네티움-99 배터리 -item.battery_sc_uranium.name=자가 충전 우라늄-238 배터리 -item.ajro_boots.name=T-60 AJR 파워 아머 부츠 -item.ajro_helmet.name=T-60 AJR 파워 아머 헬멧 -item.ajro_legs.name=T-60 AJR 파워 아머 레깅스 -item.ajro_plate.name=T-60 AJR 파워 아머 흉갑 -item.dns_boots.name=DNT 나노 슈트 부츠 -item.dns_legs.name=DNT 나노슈트 레깅스 -item.dns_helmet.name=DNT 나노 슈트 헬멧 -item.dns_plate.name=DNT 나노 슈트 흉갑 -item.dnt_boots.name=다이나트로늄 부츠 -item.dnt_legs.name=중수소 다리 -item.dnt_helmet.name=디노트로니움 헬멧 -item.dnt_plate.name=중성체 흉갑 -item.fau_boots.name=파우 부츠 -item.fau_helmet.name=파우 헬멧 -item.fau_legs.name=포 레깅스 -item.fau_plate.name=파우 흉갑 -tile.deco_pipe.name=쇠 파이프 -tile.deco_pipe_rusted.name=녹슨 강철 파이프 -tile.deco_pipe_green.name=녹색 강관 -tile.deco_pipe_green_rusted.name=녹슨 녹색 강철 파이프 -tile.deco_pipe_red.name=레드 스틸 파이프 -tile.deco_pipe_marked.name=가스관 -tile.deco_pipe_framed.name=강관(액자) -tile.deco_pipe_framed_rusted.name=녹슨 강철 파이프(액자 포함) -tile.deco_pipe_framed_green.name=그린강관(액자) -tile.deco_pipe_framed_green_rusted.name=녹슨 녹색 강철 파이프(액자 포함) -tile.deco_pipe_framed_red.name=레드 스틸 파이프(액자) -tile.deco_pipe_framed_marked.name=가스관(액자형) -tile.deco_pipe_quad.name=강관 -tile.deco_pipe_quad_rusted.name=녹슨 강철 파이프 -tile.deco_pipe_quad_green.name=녹색 강관 -tile.deco_pipe_quad_green_rusted.name=녹슨 녹색 강철 파이프 -tile.deco_pipe_quad_red.name=빨간 강철 파이프 -tile.deco_pipe_quad_marked.name=가스관 -tile.deco_pipe_rim.name=강관(테두리형) -tile.deco_pipe_rim_rusted.name=녹슨 강철 파이프(테두리) -tile.deco_pipe_rim_green.name=그린 스틸 파이프(림드) -tile.deco_pipe_rim_green_rusted.name=녹슨 녹색 강철 파이프(테두리) -tile.deco_pipe_rim_red.name=레드 스틸 파이프(테두리) -tile.deco_pipe_rim_marked.name=가스 파이프(테두리) -tile.ladder_aluminium.name=알루미늄 사다리 -tile.ladder_cobalt.name=코발트 사다리 -tile.ladder_copper.name=구리 사다리 -tile.ladder_gold.name=황금사다리 -tile.ladder_iron.name=철 사다리 -tile.ladder_lead.name=리드 사다리 -tile.ladder_steel.name=강철 사다리 -tile.ladder_sturdy.name=튼튼한 나무 사다리 -tile.ladder_titanium.name=티타늄 사다리 -tile.ladder_tungsten.name=텅스텐 사다리 -item.bismuth_tool.name=자기 추출기 -item.meltdown_tool.name=Dyatlov 인스턴트 멜트다운 애플리케이터 -item.coltass.name=콜타스 -item.volcanic_pickaxe.name=녹은 곡괭이 -item.bismuth_pickaxe.name=비스무트 곡괭이 -item.starmetal_pickaxe.name=스타메탈 곡괭이 -item.starmetal_axe.name=스타메탈 액스 -item.starmetal_hoe.name=스타메탈 괭이 -item.starmetal_shovel.name=스타메탈 삽 -item.starmetal_sword.name=스타메탈 소드 -item.cobalt_decorated_axe.name=장식된 코발트 도끼 -item.cobalt_decorated_hoe.name=장식된 코발트 괭이 -item.cobalt_decorated_pickaxe.name=장식된 코발트 곡괭이 -item.cobalt_decorated_shovel.name=장식된 코발트 삽 -item.cobalt_decorated_sword.name=장식된 코발트 검 -tile.large_vehicle_door.name=대형 차량 도어 -tile.water_door.name=워터 도어 -tile.qe_containment.name=QE 격리 도어 +tile.ore_nether_fire.name=네더 인광석 +tile.ore_nether_plutonium.name=네더 플루토늄 광석 +tile.ore_nether_schrabidium.name=네더 슈라비디움 광석 +tile.ore_nether_smoldering.name=그을린 황천의 선반 +tile.ore_nether_sulfur.name=네더 유황 광석 +tile.ore_nether_tungsten.name=네더 텅스텐 광석 +tile.ore_nether_uranium.name=네더 우라늄 광석 +tile.ore_nether_uranium_scorched.name=그을린 네더 우라늄 광석 +tile.ore_niter.name=나이터 광석 +tile.ore_oil.name=기름 매장지 +tile.ore_oil_empty.name=빈 기름 매장지 +tile.ore_oil_sand.name=타르샌드 +tile.ore_rare.name=희토류 광석 +tile.ore_reiium.name=라이테 +tile.ore_schrabidium.name=슈라비디움 광석 +tile.ore_sulfur.name=유황 광석 +tile.ore_thorium.name=토륨 광석 +tile.ore_tikite.name=트릭사이트 +tile.ore_titanium.name=티타늄 광석 +tile.ore_tungsten.name=텅스텐 광석 +tile.ore_unobtainium.name=밝은 혼합 ​​광석 +tile.ore_uranium.name=우라늄 광석 +tile.ore_uranium_scorched.name=그을린 우라늄 광석 +tile.ore_verticium.name=달러 그린 미네랄 +tile.ore_weidanium.name=웨이다이트 +tile.pink_barrel.name=등유 배럴 +tile.pink_double_slab.name=핑크 우드 더블 슬래브 +tile.pink_log.name=핑크 로그 +tile.pink_planks.name=핑크 나무 판자 +tile.pink_slab.name=핑크 우드 슬래브 +tile.pink_stairs.name=핑크 나무 계단 +tile.plasma.name=혈장 +tile.plasma_heater.name=플라즈마 히터 +tile.pole_satellite_receiver.name=위성 접시 +tile.pole_top.name=안테나 탑 +tile.pribris.name=RBMK 파편 +tile.pribris_burning.name=불타는 RBMK 잔해 +tile.pribris_digamma.name=검게 변한 RBMK 잔해 +tile.pribris_radiating.name=그을린 RBMK 잔해 +tile.qe_containment.name=QE 격리 문 tile.qe_sliding.name=QE 슬라이딩 도어 -tile.sliding_gate_door.name=소형 QE 격리 도어 -tile.sliding_seal_door.name=슬라이딩 금속 도어 -tile.fire_door.name=방화문 -tile.small_hatch.name=작은 해치 -tile.round_airlock_door.name=둥근 에어록 도어 -tile.secure_access_door.name=보안 액세스 도어 -tile.transition_seal.name=전환 씰 -tile.ladder_red.name=빨간 사다리 -tile.ladder_red_top.name=빨간 사다리 꼭대기 +tile.radiobox.name=Rosenberg 해충 방제 상자 +tile.radiorec.name=고장난 FM 라디오 +tile.radsensor.name=방사선 센서 +tile.radwater_block.name=조사된 물 +tile.rail_booster.name=고속 부스터 레일 +tile.rail_highspeed.name=고속 철도 +tile.railgun_plasma.name=레일건 +tile.railing_bend.name=난간 벤드 +tile.railing_end_flipped_floor.name=난간 끝 반전(바닥) +tile.railing_end_flipped_self.name=난간 끝 반전됨(자체) tile.railing_end_floor.name=난간 끝(바닥) tile.railing_end_self.name=난간 끝(자체) -tile.railing_end_flipped_floor.name=난간 끝이 반전됨(바닥) -tile.railing_end_flipped_self.name=난간 끝이 반전됨(자체) tile.railing_normal.name=난간 -tile.railing_bend.name=난간 벤드 -item.assembly_nuke.name=미니 핵탄체 -tile.bm_power_box.name=블랙 메사 전원 스위치 -container.storageDrum=핵폐기물 처리 드럼 -container.orbus=중형 반물질 저장소 -container.bat9000=빅애스 탱크 9000 -container.anvil=Tier %s Anvil -container.heaterFirebox=화실 -container.heaterHeatex=열교환 기 -container.furnaceSteel=강철로 -item.charge_railgun.name=중수소 플라즈마 캡슐 -item.ducc.name=듀크 -commands.hbmrad.removeall=치수에 대해 로드된 방사선을 모두 제거했습니다 %1$s. -commands.hbmrad.rad_not_int=새로운 라드 값은 숫자가 아닙니다! -commands.hbmrad.player_success=모든 온라인 플레이어의 방사선을 성공적으로 제거했습니다! -commands.hbmrad.not_rad=새로운 rad 값을 입력하세요! -commands.hbmrad.not_found_player=플레이어를 찾을 수 없습니다 %1$s! -tile.bomb.tnt_enabled=[ 브레이크 시 점화: 활성화 ] -tile.bomb.tnt_disabled=[ 브레이크 시 점화: 비활성화 ] - -item.ingot_firebrick.name=내화 벽돌 -item.ball_fireclay.name=내화 점토 - -flare.ignition=점화 -flare.valve=흐름 밸브 +tile.rbmk_absorber.name=RBMK 붕소 중성자 흡수체 +tile.rbmk_blank.name=RBMK 구조 기둥 +tile.rbmk_boiler.name=RBMK 스팀 채널 +tile.rbmk_console.name=RBMK 콘솔 +tile.rbmk_control.name=RBMK 제어봉 +tile.rbmk_control_auto.name=RBMK 자동 제어봉 +tile.rbmk_control_mod.name=RBMK 조절 제어봉 +tile.rbmk_crane_console.name=RBMK 크레인 콘솔 +tile.rbmk_loader.name=RBMK 스팀 커넥터 +tile.rbmk_moderator.name=RBMK 흑연 중재자 +tile.rbmk_outgasser.name=RBMK 조사 채널 +tile.rbmk_reflector.name=RBMK 텅스텐 카바이드 중성자 반사경 +tile.rbmk_rod.name=RBMK 연료봉 +tile.rbmk_rod_mod.name=RBMK 감속 연료봉 +tile.rbmk_rod_reasim.name=RBMK 연료봉(ReaSim) +tile.rbmk_rod_reasim_mod.name=RBMK 감속 연료봉(ReaSim) +tile.rbmk_steam_inlet.name=RBMK ReaSim 급수구 +tile.rbmk_steam_outlet.name=RBMK ReaSim 스팀 콘센트 +tile.rbmk_storage.name=RBMK 스토리지 컬럼 +tile.reactor_computer.name=원자로 제어 +tile.reactor_conductor.name=원자로 보일러 +tile.reactor_control.name=제어봉 +tile.reactor_ejector.name=원자로 폐기물 이젝터 +tile.reactor_element.name=반응기 챔버 +tile.reactor_hatch.name=원자로 접근 해치 +tile.reactor_inserter.name=원자로 연료 삽입기 +tile.red_barrel.name=폭발성 배럴 +tile.red_cable.name=레드 구리 케이블 +tile.red_pylon.name=전주 +tile.red_wire_coated.name=코팅된 적색 구리 케이블 +tile.reinforced_brick.name=강화 벽돌 +tile.reinforced_brick_slab.name=강화 벽돌 슬래브 +tile.reinforced_brick_stairs.name=강화 벽돌 계단 +tile.reinforced_glass.name=강화 유리 +tile.reinforced_lamp_off.name=강화 램프 +tile.reinforced_lamp_on.name=강화 램프 +tile.reinforced_light.name=강화 발광석 +tile.reinforced_sand.name=강화 사암 +tile.reinforced_sand_slab.name=강화 모래 슬래브 +tile.reinforced_sand_stairs.name=강화 모래 계단 +tile.reinforced_stone.name=조밀한 돌 +tile.reinforced_stone_slab.name=강화 석판 +tile.reinforced_stone_stairs.name=강화된 돌계단 +tile.rejuvinator.name=회춘 장치 +tile.residue.name=클라우드 잔류물 +tile.round_airlock_door.name=라운드 에어록 도어 +tile.rtg_polonium.name=PT 동위원소 세포 +tile.safe.name=안전한 +tile.sand_boron.name=붕소 모래 +tile.sand_boron_layer.name=붕소 모래 층 +tile.sand_gold.name=골드샌드 +tile.sand_gold198.name=금-198 모래 +tile.sand_lead.name=납모래 +tile.sand_polonium.name=폴로늄 모래 +tile.sand_quartz.name=석영 모래 +tile.sand_uranium.name=우라늄 모래 +tile.sat_dock.name=화물 랜딩 패드 +tile.schrabidic_block.name=슈라비딕산 +tile.seal_controller.name=사일로 해치 오프너 +tile.seal_frame.name=사일로 해치 프레임 +tile.seal_hatch.name=사일로 해치 +tile.secure_access_door.name=보안 액세스 도어 +tile.sellafield_0.name=셀라파이트 +tile.sellafield_1.name=핫 셀라파이트 +tile.sellafield_2.name=끓는 셀라파이트 +tile.sellafield_3.name=타오르는 셀라파이트 +tile.sellafield_4.name=지옥불 셀라파이트 +tile.sellafield_core.name=셀라파이트-코리움 +tile.sellafield_slaked.name=소석회 셀라파이트 +tile.silo_hatch.name=사일로 해치 +tile.sliding_blast_door.name=옆으로 슬라이딩 블래스트 도어 +tile.sliding_blast_door_2.name=옆으로 슬라이딩 블래스트 도어 +tile.sliding_seal_door.name=슬라이딩 씰 도어 +tile.small_hatch.name=작은 해치 +tile.solar_mirror.name=헬리오스탯 미러 +tile.soyuz_capsule.name=화물 착륙 캡슐 +tile.soyuz_launcher.name=소유즈 런칭 플랫폼 +tile.spikes.name=스파이크 +tile.spinny_light.name=스피니 라이트 +tile.steel_beam.name=철제 빔 +tile.steel_corner.name=강철 벽 모서리 +tile.steel_grate.name=스틸 창살 +tile.steel_poles.name=스틸 폴 +tile.steel_roof.name=평평한 강철 지붕 +tile.steel_scaffold.name=강철 비계 +tile.steel_wall.name=강철 벽 +tile.stone_depth.name=뎁스 록 +tile.stone_depth_nether.name=네더 뎁스 록 +tile.stone_gneiss.name=흑연 편암 +tile.stone_porous.name=다공성 석재 +tile.struct_iter_core.name=핵융합 반응기 핵심 구성 요소 +tile.struct_launcher.name=런치 패드 구성 요소 블록 +tile.struct_launcher_core.name=컴팩트 런처 핵심 구성 요소 +tile.struct_launcher_core_large.name=테이블 핵심 구성 요소 실행 +tile.struct_plasma_core.name=플라즈마 히터 코어 부품 +tile.struct_scaffold.name=런치 패드 발판 블록 +tile.struct_soyuz_core.name=소유즈 런처 코어 컴포넌트 +tile.taint.name=더러움 +tile.taint_barrel.name=IMP 잔류 물 배럴 +tile.tape_recorder.name=테이프 레코더 +tile.tesla.name=테슬라 코일 +tile.test_nuke.name=테스트 핵 +tile.therm_endo.name=흡열 폭탄 +tile.therm_exo.name=발열 폭탄 +tile.tile_lab.name=실험실 타일 +tile.tile_lab_broken.name=부서진 실험실 타일 +tile.tile_lab_broken_slab.name=부서진 실험실 타일 석판 +tile.tile_lab_broken_stairs.name=부서진 실험실 타일 계단 +tile.tile_lab_cracked.name=금이 간 실험실 타일 +tile.tile_lab_cracked_slab.name=금이 간 실험실 타일 석판 +tile.tile_lab_cracked_stairs.name=금이 간 실험실 타일 계단 +tile.tile_lab_slab.name=실험실 타일 슬래브 +tile.tile_lab_stairs.name=실험실 타일 계단 +tile.toxic_block.name=셀라린 +tile.transition_seal.name=전환 인감 +tile.turret_cheapo.name=치포 개틀링 센트리 +tile.turret_chekhov.name=중기관총 포탑 "체호프의 총" +tile.turret_cwis.name=팔랑크스 Mk-15 CIWS +tile.turret_flamer.name=화염 방사기 포탑 +tile.turret_friendly.name=체인건 터렛 "미스터 프렌들리" +tile.turret_fritz.name=중화염 방사기 포탑 "Fritz" +tile.turret_heavy.name=중기관총 포탑 +tile.turret_howard.name=골키퍼 트윈 체인건 CIWS "하워드" +tile.turret_howard_damaged.name=골키퍼 트윈 체인건 CIWS "Methusalem" +tile.turret_jeremy.name=오토캐논 포탑 "제레미" +tile.turret_light.name=경기관총 포탑 +tile.turret_maxwell.name=고에너지 MASER 터렛 "맥스웰" +tile.turret_richard.name=로켓 발사기 포탑 "리처드" +tile.turret_rocket.name=로켓 포탑 +tile.turret_spitfire.name=터렛 지금은 이름이 없습니다 [WIP] +tile.turret_tau.name=타우온 포탑 +tile.turret_tauon.name=XVL1456 프로토타입 포탑 "Tauon" +tile.vault_door.name=Vault-Tec 방폭문 +tile.vent_chlorine.name=염소 벤트 +tile.vent_chlorine_seal.name=염소 씰 +tile.vent_cloud.name=클라우드 벤트 +tile.vent_pink_cloud.name=핑크 클라우드 벤트 +tile.vitrified_barrel.name=유리화된 핵 폐기물 드럼 +tile.volcanic_lava_block.name=화산 용암 +tile.volcano_core.name=화산 코어 +tile.waste_dirt.name=오염된 흙 +tile.waste_earth.name=죽은 풀 +tile.waste_grass_tall.name=폐풀 +tile.waste_leaves.name=폐엽 +tile.waste_log.name=까맣게 탄 통나무 +tile.waste_mycelium.name=빛나는 균사체 +tile.waste_planks.name=까맣게 탄 나무 판자 +tile.waste_trinitite.name=삼위일체 광석 +tile.waste_trinitite_red.name=레드 트리니타이트 광석 +tile.water_door.name=워터 도어 +tile.watz_conductor.name=와츠 전기 포트 +tile.watz_control.name=강화 제어봉 +tile.watz_cooler.name=Watz Reactor 슈퍼쿨러 +tile.watz_core.name=Watz 반응기 제어 +tile.watz_element.name=Watz 반응 챔버 +tile.watz_end.name=Watz 반응기 안정성 요소 +tile.watz_hatch.name=Watz Reactor 액세스 해치 +tile.yellow_barrel.name=방사성 배럴 +tool.ability.centrifuge=자동 원심 분리기 +tool.ability.crystallizer=자동 결정화기 +tool.ability.explosion=폭발 +tool.ability.hammer=광역 +tool.ability.luck=행운 +tool.ability.mercury=머큐리 터치 +tool.ability.midas=마이다스의 손 +tool.ability.recursion=정맥 광부 +tool.ability.shredder=자동 분쇄기 +tool.ability.silktouch=섬세한 손길 +tool.ability.smelter=자동 제련소 +trait.asbestos=석면 +trait.blinding=실명 +trait.breeding=번식 반응기에서 %s 작업 가치 +trait.coal=석탄 먼지 +trait.digamma=디감마 방사선 +trait.drop=위험한 드롭 +trait.furnace=핵로에서 %s 작업 가치 +trait.heat=%s HEAT 제공 +trait.hlParticle=입자 반감기: %s +trait.hlPlayer=플레이어 반감기: %s +trait.hot=발화성 / 고온 +trait.hydro=수력 폭발 +trait.radResistance=방사선 저항: %s +trait.radioactive=방사능 +trait.rbmk.coreTemp=코어 온도: %s +trait.rbmk.depletion=고갈: %s +trait.rbmk.diffusion=확산: %s +trait.rbmk.fluxFunc=플럭스 함수: %s +trait.rbmk.funcType=함수 유형: %s +trait.rbmk.heat=최대 전력에서 틱당 열: %s +trait.rbmk.melt=녹는점: %s +trait.rbmk.neutron.any=모든 중성자 +trait.rbmk.neutron.any.x=모든 비유클리드 모양 +trait.rbmk.neutron.fast=고속 중성자 +trait.rbmk.neutron.fast.x=타원 비유클리드 모양 +trait.rbmk.neutron.slow=느린 중성자 +trait.rbmk.neutron.slow.x=쌍곡선 비유클리드 모양 +trait.rbmk.skinTemp=피부 온도: %s +trait.rbmk.source=자기 점화 +trait.rbmk.splitsInto=다음으로 분할: %s +trait.rbmk.splitsWith=분할 대상: %s +trait.rbmk.xenon=제논 독: %s +trait.rbmk.xenonBurn=Xenon 굽기 기능: %s +trait.rbmk.xenonGen=Xenon gen 기능: %s +trait.rbmx.coreTemp=코어 엔트로피: %s +trait.rbmx.depletion=딱딱함: %s +trait.rbmx.diffusion=흐름: %s +trait.rbmx.fluxFunc=파멸 기능: %s +trait.rbmx.funcType=기능 사양: %s +trait.rbmx.heat=최대 전력에서 틱당 크러스트: %s +trait.rbmx.melt=충돌 깊이: %s +trait.rbmx.skinTemp=스킨 엔트로피: %s +trait.rbmx.source=자기 연소 +trait.rbmx.splitsInto=출발지: %s +trait.rbmx.splitsWith=도착 위치: %s +trait.rbmx.xenon=납 독: %s +trait.rbmx.xenonBurn=리드 파괴 기능: %s +trait.rbmx.xenonGen=리드 생성 기능: %s +trait.tile.cluster=플레이어가 파괴했을 때만 떨어집니다. +trait.tile.depth=폭발로만 파괴 가능 +trait.unstable=불안정한 +wavelengths.name.drx=디감마 +wavelengths.name.gamma=감마 +wavelengths.name.ir=적외선 +wavelengths.name.micro=마이크로파 +wavelengths.name.radio=라디오 +wavelengths.name.uv=자외선 +wavelengths.name.visible=가시 광선 +wavelengths.name.xray=엑스레이 +wavelengths.waveRange.drx=1916169 플랑크 길이 +wavelengths.waveRange.gamma=<오후 9시 +wavelengths.waveRange.ir=780nm-1mm +wavelengths.waveRange.micro=1mm-1m +wavelengths.waveRange.radio=>1m +wavelengths.waveRange.uv=10nm-400nm +wavelengths.waveRange.visible=400nm-780nm +wavelengths.waveRange.xray=오후 9시-10시 +weapon.ability.beheader=참수기 +weapon.ability.chainsaw=고통 톱 +weapon.ability.fire=불타는 +weapon.ability.phosphorus=인 팁 +weapon.ability.radiation=방사성 칼날 +weapon.ability.stun=굉장히 멋진 +weapon.ability.vampire=흡혈귀 \ No newline at end of file diff --git a/src/main/resources/assets/hbm/lang/ru_ru.lang b/src/main/resources/assets/hbm/lang/ru_ru.lang index d24b8ba859..0eb30443bf 100644 --- a/src/main/resources/assets/hbm/lang/ru_ru.lang +++ b/src/main/resources/assets/hbm/lang/ru_ru.lang @@ -1,14 +1,12 @@ -#ohhh... - #book.rbmk.cover=КАК 2 РБМК: $Основы$конструкции реактора$ -#book.rbmk.page1=§lRBMK§r — полностью модульный ядерный реактор. В отличие от большинства других реакторов, здесь нет «ядра» и ограничений по размеру, скорее, поведение и эффективность реактора зависят от того, как он построен и как различные части взаимодействуют друг с другом. -#book.rbmk.page10=§lграфитовый замедлитель§r преобразует проходящие через него быстрые нейтроны в медленные нейтроны. Большинство видов топлива распадаются на быстрые нейтроны, в то время как для разделения требуются медленные нейтроны, поэтому настоятельно рекомендуется использовать замедлители. +#book.rbmk.page10=§lГрафитовый замедлитель§r преобразует проходящие через него быстрые нейтроны в медленные нейтроны. Большинство видов топлива распадаются на быстрые нейтроныf, в то время как для разделения требуются медленные нейтроны, поэтому настоятельно рекомендуется использовать замедлители. #book.rbmk.page11=§lСтруктурная колонна§r не будет мешать нейтронам и не имеет специального применения. Реактор рекомендуется заполнять конструкционными колоннами там, где не будет других частей, поскольку конструкционные колонны способны транспортировать тепло. #book.rbmk.page12=§lКонсоль РБМК§r позволяет управлять реактором издалека. Используя §lRBMK§r §lустройство связи консоли§r на части РБМК, а затем консоль свяжет реактор с консолью. Консоль может управлять только частями 15x15, для более крупных реакторов вы можете использовать несколько консолей. #book.rbmk.page13=Щелчок по частям будет выделять и отменять их выделение. Используя цветные кнопки, вы можете быстро выбрать все стержни управления этой цветовой группы. Кнопка «A» выберет все стержни управления, «X» отменит выбор всех. #book.rbmk.page14=Ввод числа 0-100 в зеленое поле, а затем нажатие кнопки рядом с ним установит все выбранные стержни управления в это положение. Кнопка «AZ-5» полностью вставит все стержни управления. #book.rbmk.page15=Реактивность §lfuel§r зависит от множества факторов. Основными из них являются §обогащение§r, §лксеноновый яд§r и количество поступающих §lнейтронов§r. Ксенон накапливается, когда топливо получает мало нейтронов, и сгорает во время нормальной работы. Эффективность нейтронов зависит от их типа, большинство видов топлива лучше всего расщепляются медленными нейтронами§r. #book.rbmk.page16=§4§lИзбегать. +#book.rbmk.page1=§lRBMK§r — Полностью модульный ядерный реактор. В отличие от большинства других реакторов, здесь нет «ядра» и ограничений по размеру, скорее, поведение и эффективность реактора зависят от того, как он построен и как различные части взаимодействуют друг с другом. #book.rbmk.page2=Когда реактор работает, он вырабатывает §lтепло§r. Тепло будет распространяться между частями, медленно уменьшаясь в процессе. Цель состоит в том, чтобы производить как можно больше тепла, не расплавляя реактор, и направлять это тепло в «паровой канал§r», который охлаждает реактор и производит пар. #book.rbmk.page3=§lтопливный стержень§r улавливает поток нейтронов, вызывая реакцию топлива внутри топливного стержня с испусканием нейтронов в процессе. Нейтроны испускаются во всех четырех основных направлениях с максимальным радиусом действия 5 блоков. Количество высвобождаемых нейтронов зависит от используемого топлива. #book.rbmk.page4=§lконтрольный стержень§r уменьшит количество нейтронов, проходящих через него. Полностью вставленный, он заблокирует все нейтроны, вставленный наполовину, он заблокирует только половину. Стержни управления используются для регулирования работы реактора и его отключения. @@ -17,14 +15,13 @@ #book.rbmk.page7=§lПаровой канал§r — единственная часть, которая будет активно снижать уровень нагрева реактора. Если температура компонента превышает точку кипения заданного типа пара, он будет пытаться потреблять столько воды и производить столько пара, сколько необходимо для охлаждения ниже точки кипения. #book.rbmk.page8=§lРефлектор нейтронов§r будет препятствовать прохождению нейтронов через него, вместо этого нейтроны будут отражаться обратно в топливный стержень, из которого они пришли. Это полезно для использования нейтронов, которые в противном случае были бы потрачены впустую, просто выходя из реактора. #book.rbmk.page9=§lПоглотитель нейтронов§r просто блокирует нейтроны. Поглощенные нейтроны не будут генерировать тепло и эффективно удаляются. Это полезно для предотвращения реакции топливных стержней, которая в противном случае была бы в пределах досягаемости. - -#book.rbmk.title1=Введение #book.rbmk.title10=Графитовый модератор #book.rbmk.title11=Структурная колонна #book.rbmk.title12=Приставка #book.rbmk.title13=Использование консоли #book.rbmk.title15=Топливо #book.rbmk.title16=Расплав +#book.rbmk.title1=Введение #book.rbmk.title2=Нагревать #book.rbmk.title3=Топливный стержень #book.rbmk.title4=Контрольный стержень @@ -33,323 +30,323 @@ #book.rbmk.title7=Паровой канал #book.rbmk.title8=Рефлектор нейтронов #book.rbmk.title9=Поглотитель нейтронов - -#Achievements - -# Should rhyme with the translation for "chainsaw" - -hbm.advancement.root=NTM Extended -hbm.advancement.root.desc=И вот начинается ядерное приключение - -hbm.achievement.progress_dosimeter=Дозиметр -hbm.achievement.progress_dosimeter.desc=Твой новый лучший друг - -hbm.achievement.progress_geiger=Счетчик гейгера -hbm.achievement.progress_geiger.desc=Твой улучшенный лучший друг - -hbm.achievement.progress_modtable=Модификационный стол -hbm.achievement.progress_modtable.desc=Улучшение, чел, улучшение! - -hbm.achievement.progress_anvil=Наковальня -hbm.achievement.progress_anvil.desc=Ручной, но эффективный - -hbm.achievement.aa_progress_burnerpress=Под давлением -hbm.achievement.aa_progress_burnerpress.desc=Давление давит на меня, на тебя - -hbm.achievement.progress_folder=В нем есть хорошая мудрость -hbm.achievement.progress_folder.desc=Как может папка содержать все машины человечества?? - -hbm.achievement.progress_assembler=Фабрика растет -hbm.achievement.progress_assembler.desc=Подождите, сейчас уже час ночи? - -hbm.achievement.progress_difurnace=Железо и Уголь -hbm.achievement.progress_difurnace.desc=Они спасли затонувший дредноут для "Эксплорер-1". - -hbm.achievement.progress_steel=Сталь -hbm.achievement.progress_steel.desc=Основа нашей империи - -hbm.achievement.progress_adv=Advanced Alloy -hbm.achievement.progress_adv.desc=The alloy enabling our empire - -hbm.achievement.progress_starmetal=XVIII The Moon -hbm.achievement.progress_starmetal.desc=Yeah. - -hbm.achievement.progress_book=§eКнига вагонов -hbm.achievement.progress_book.desc=§kСамый сокровенный секрет - -hbm.achievement.progress_chemplant=Фабрика растет стр. 2 -hbm.achievement.progress_chemplant.desc=Теперь вы мыслите химическими веществами! - -hbm.achievement.progress_polymer=Teflon -hbm.achievement.progress_polymer.desc=Вкусный, восхитительный микропластик. - -hbm.achievement.progress_potatos=Rogue AI -hbm.achievement.progress_potatos.desc=You stabbed me! What is WRONG with yo-WOOOAAH - -hbm.achievement.progress_concrete=Old Reliable -hbm.achievement.progress_concrete.desc=A Bolshevik's favorite. - -hbm.achievement.progress_rbmk=3.6 Roentegen? -hbm.achievement.progress_rbmk.desc=He's delusional, get him to the infirmary. - -hbm.achievement.progress_rbmk_boom=It is 15,000. -hbm.achievement.progress_rbmk_boom.desc=What is the cost of lies? - -hbm.achievement.progress_centrifuge_1=Centripetal Force -hbm.achievement.progress_centrifuge_1.desc=Centrifugal force is fake don't @ me - -hbm.achievement.progress_centrifuge_2=Industrial Nuclear Gas Tornado -hbm.achievement.progress_centrifuge_2.desc=Hide it from the FBI - -hbm.achievement.progress_u235=Weaponsgrade Uranium -hbm.achievement.progress_u235.desc=Your choice: Peace or War - -hbm.achievement.progress_pu239=Weaponsgrade Plutonium -hbm.achievement.progress_pu239.desc=Haha funny ball go boom - -hbm.achievement.progress_au198=Hottest Gold -hbm.achievement.progress_au198.desc=Lets make some Jewelry - -hbm.achievement.progress_radspice=§eЧернобыльский слиток§r -hbm.achievement.progress_radspice.desc=О-о-о, это горячо - -hbm.achievement.progress_osmiridium=Сплав осмия-иридия -hbm.achievement.progress_osmiridium.desc=Добыт из астероида, происходящего из звездной системы Дигамма - -hbm.achievement.progress_dfc=Turning on a Sun -hbm.achievement.progress_dfc.desc=A stellar campfire - -hbm.achievement.progress_creative=Сертифицированный специалист по РТС -hbm.achievement.progress_creative.desc=Теперь вы компетентны в РТС - -hbm.achievement.progress_schrabidium=Остров стабильности -hbm.achievement.progress_schrabidium.desc=Как бы то ни было, я бы не стал смотреть на это слишком долго. - -hbm.achievement.progress_hadron=Large Hadron Collider -hbm.achievement.progress_hadron.desc=You reached the frontear of mankind - -hbm.achievement.progress_radium=First Nuclear Power -hbm.achievement.progress_radium.desc=Throw it into water - -hbm.achievement.progress_pile=The navigator landed in the New World -hbm.achievement.progress_pile.desc="How were the natives?" / "Very friendly." - -hbm.achievement.progress_desh=Le Verrier -hbm.achievement.progress_desh.desc="Come on then, you lot. Places to go!" - -hbm.achievement.progress_crystalizer=Acidic -hbm.achievement.progress_crystalizer.desc=Oof ow my skin - -hbm.achievement.progress_silex=Separation of Isotopes -hbm.achievement.progress_silex.desc=It's cooler then it sounds, I promise. - -hbm.achievement.progress_bismuth=Bismuth-209 -hbm.achievement.progress_bismuth.desc=Remember when people complained about this for a month? I do. - -hbm.achievement.progress_am241=Americium -hbm.achievement.progress_am241.desc=Murricaa fuck yeahh - -hbm.achievement.progress_cyclotron=Cyclotronic -hbm.achievement.progress_cyclotron.desc=We can make new elements now - -hbm.achievement.progress_fusion=Fusion -hbm.achievement.progress_fusion.desc=A dance of deuterons, tritons, and energy. - -hbm.achievement.progress_oil_1=We hit Oil -hbm.achievement.progress_oil_1.desc=First Step towards poluting earth - -hbm.achievement.progress_oil_2=We need More! MORE!! -hbm.achievement.progress_oil_2.desc=Next level oil pumping - -hbm.achievement.progress_oil_3=Frack this Bedrock -hbm.achievement.progress_oil_3.desc=Infinite OIL! - -hbm.achievement.progress_refinery=We processed Oil -hbm.achievement.progress_refinery.desc=Second Step towards poluting earth - -hbm.achievement.progress_fraction=Fractioning -hbm.achievement.progress_fraction.desc=Next level oil processing - -hbm.achievement.progress_crack=Lets do Crack -hbm.achievement.progress_crack.desc=Cracking oil for more stuff - -hbm.achievement.progress_dineutronium=OMG DNT -hbm.achievement.progress_dineutronium.desc=Holy moly we did it - -hbm.achievement.progress_fensu=Inner Peace -hbm.achievement.progress_fensu.desc=Nothing more to say - -hbm.achievement.progress_cladding_electronium=Best Cladding -hbm.achievement.progress_cladding_electronium.desc=Radiation Ingot against Radiation - -hbm.achievement.sacrifice=Sororicide -hbm.achievement.sacrifice.desc=Face the fire and live. -hbm.achievement.impossible=Literally impossible -hbm.achievement.impossible.desc=You can't get this hbm.achievement. -hbm.achievement.tasteofblood=The Taste of Blood -hbm.achievement.tasteofblood.desc=is not part of any testing protocol. -hbm.achievement.freytag=Freytag -hbm.achievement.freytag.desc=Herold's life guards -hbm.achievement.selenium=XVIII The Moon -hbm.achievement.selenium.desc=Yeah. -hbm.achievement.potato=Rogue AI -hbm.achievement.potato.desc=You stabbed me! What is WRONG with yo-WOOOAAH -hbm.achievement.c44=Chapter 44 -hbm.achievement.c44.desc=Galvanized! I mean, zinc! -hbm.achievement.c20_5=Chapter [TWENTY POINT FIVE] -hbm.achievement.c20_5.desc=??? -hbm.achievement.space=The Final Front-ah forget it -hbm.achievement.space.desc=Fail in every way possible and waste funds worth 90 million dollars by sending a pony to space. -hbm.achievement.foeq=Pegasi and Missile Silos -hbm.achievement.foeq.desc=Send a relay into martian...I mean dunaian orbit. -hbm.achievement.fiend=Delinquent -hbm.achievement.fiend.desc=Be mean. -hbm.achievement.fiend2=Delinquent 2: Delinquent Harder -hbm.achievement.fiend2.desc=Be meaner. - -hbm.achievement.bobmetalworks=Металлоконструкции -hbm.achievement.bobmetalworks.desc=1 Уровень поддержки Vault-tec (изготовьте доменную печь через наковальню) -hbm.achievement.bobassembly=Фабрикатор -hbm.achievement.bobassembly.desc=2 Уровень поддержки Vault-tec (изготовьте сборочную машину с помощью наковальни) -hbm.achievement.bobchemistry=Химия -hbm.achievement.bobchemistry.desc=3 Уровень поддержки Vault-tec (изготовьте бетонные кирпичи) -hbm.achievement.boboil=Нефть -hbm.achievement.boboil.desc=4 Уровень поддержки Vault-tec (изготовьте электрический котел) -hbm.achievement.bobnuclear=Атомная наука -hbm.achievement.bobnuclear.desc=5 Уровень поддержки Vault-tec (изготовьте урановое топливо) -hbm.achievement.bobhidden=Скрытый каталог -hbm.achievement.bobhidden.desc=Убейте зараженного крипера падающим товарным вагоном. - -hbm.achievement.horizonsStart=Апогей -hbm.achievement.horizonsStart.desc=Отправь парня на Луну. -hbm.achievement.horizonsEnd=Горизонты -hbm.achievement.horizonsEnd.desc=Отправь Тома домой. -hbm.achievement.horizonsBonus=Slam Dunk Diarrhea -hbm.achievement.horizonsBonus.desc=honest to god what the hell is wrong with you - -hbm.achievement.soyuz=Baked Potato -hbm.achievement.soyuz.desc=Let the Soyuz roast you - -hbm.achievement.radPoison=Yay, Radiation! -hbm.achievement.radPoison.desc=Suffer the effects of radiation poisoning. -hbm.achievement.radDeath=Ouch, Radiation! -hbm.achievement.radDeath.desc=Marie Curie invented the theory of radioactivity, the treatment of radioactivity, and dying of radioactivity. - -hbm.achievement.stratum.desc=Hit the brakes, Mitts. -hbm.achievement.stratum=Stratum - -hbm.achievement.meltdown.desc=You got this far, how could you mess this up? -hbm.achievement.meltdown=Rapid Unscheduled Disassembly -hbm.achievement.omega12.desc=Solve the problem of continued life on this wretched planet. -hbm.achievement.omega12=Omega-12 Particle Accelerator - -hbm.achievement.bossCreeper.desc='There is nuclear creepers? Those are a thing?!' -hbm.achievement.bossCreeper=Bomb On Four Legs -hbm.achievement.bossMaskman.desc=Bonk the big boy. -hbm.achievement.bossMaskman=6 Months of mandatory service and all I got was a lousy t-shirt -hbm.achievement.bossMeltdown.desc=More terrible than great, but I take what I can get. -hbm.achievement.bossMeltdown=3.6 Roentgen -hbm.achievement.bossWorm.desc=The Fabstaff. My ass. You do the math. -hbm.achievement.bossWorm=Disassembling Balls-O-Tron -hbm.achievement.bossUFO.desc=Yo, what do we have here? A huge spacecraft pulling up to the bloockship? -hbm.achievement.bossUFO=Ayy Lmao - -hbm.achievement.digammaFeel.desc=the hollow within. -hbm.achievement.digammaFeel=The Terror of Feeling -hbm.achievement.digammaKauaiMoho.desc=Everything is awful, here's some hot choccy. -hbm.achievement.digammaKauaiMoho=Sing, sing me the song of the Kauai Moho -hbm.achievement.digammaKnow.desc=what this world is about. -hbm.achievement.digammaKnow=The Terror of Knowing -hbm.achievement.digammaSee.desc=into the abyss. -hbm.achievement.digammaSee=The Terror of Seeing -hbm.achievement.digammaUpOnTop.desc=I do what I want, but irresponsibly. -hbm.achievement.digammaUpOnTop=Admire Me, Admire my Home - -hbm.achievement.someWounds.desc=Get ready -hbm.achievement.someWounds=Some Wounds Never Heal - -achievement.bossUFO=Ayy §eLmao -achievement.bossUFO.desc=Эй, что у нас тут? Огромный космический корабль, приближающийся к блок-кораблю? - -#Armor - +adjective.extreme=Невероятно высокий +adjective.high=Высокий +adjective.little=Малый +adjective.medium=Средний +adjective.veryhigh=Очень высокий +ammo.trait.10=Сильно увеличенный радиус снаряда +ammo.trait.11=Менее подвержен гравитации +ammo.trait.12=Это 40-мм граната, которую мы сжали, чтобы вместить в патрон! +ammo.trait.12gm1=Мгновенно уничтожает раздражающих и имбалансных врагов +ammo.trait.12gm2=Не имеет недостатков, лол +ammo.trait.13=Без урона по зоне +ammo.trait.1=Едкий +ammo.trait.2=Ошеломляющий +ammo.trait.357d1=Подходит под любую модель .357 +ammo.trait.357d2=Урон - выше среднего +ammo.trait.3=Товарный вагон +ammo.trait.4=Лодка +ammo.trait.5=Здание +ammo.trait.6=Бензопила +ammo.trait.75b1=Стабилизированный бронебойный +ammo.trait.75b2=патрон с обеднённым ураном и тандемной взрывчаткой +ammo.trait.75b3=Бронебойный взрывной патрон, +ammo.trait.75b4=наполненный кислородно-фосфорным гелем +ammo.trait.75b5=Бронебойный пенетратор, заполненный +ammo.trait.75b6=мощным зарядом взрывчатки +ammo.trait.7=Взрыв дропает все блоки +ammo.trait.8=Хлоргаз +ammo.trait.9=Увеличенная скорость снаряда +ammo.trait.accuracy=Повышенная точность +ammo.trait.balefire=Жар-патрон +ammo.trait.blank=Здесь пусто +ammo.trait.blast=Увеличенный радиус взрыва +ammo.trait.bmg1=12.7мм патрон против техники +ammo.trait.bmg2=Этими сбивают самолёты, использовать +ammo.trait.bmg3=их против людей было бы мерзко. +ammo.trait.bounce=Более отскакиваемый +ammo.trait.chlorophyte=Хлорофитовый +ammo.trait.daccuracy=Сильно уменьшенная точность +ammo.trait.damage=Увеличенный урон +ammo.trait.dblast=Уменьшенный радиус взрыва +ammo.trait.dbounce=Менее отскакиваемый +ammo.trait.ddamage=Сильно уменьшенный урон +ammo.trait.dspeed=Уменьшенная скорость снаряда +ammo.trait.dwear=Уменьшенная изнашиваемость +ammo.trait.emp=ЭМИ +ammo.trait.explosive=Взрывной +ammo.trait.fallout=Радиационное заражение +ammo.trait.folly1=Сфокусированный реактивный взрыв звёздным металлом +ammo.trait.folly2=Мини-ядерный гаубичный снаряд +ammo.trait.folly3=Гаубичный 17-килограммовый снаряд с ураном-238 +ammo.trait.fun=Веселье для всей семьи! +ammo.trait.gaugesleek=Стреляет трассером, вызывающим бурю ОУ-флешетт +ammo.trait.heavymetal=Тяжёлый металл +ammo.trait.hhighwear=Очень сильно увеличенная изнашиваемость +ammo.trait.highdamage=Сильно увеличенный урон +ammo.trait.highwarcrime=Двойная доза военных преступлений в одном патроне! +ammo.trait.highwear=Сильно увеличенная изнашиваемость +ammo.trait.homing=Самонаводящийся +ammo.trait.inc=Зажигательный +ammo.trait.incbomb=Увеличенное кол-во бомб +ammo.trait.incexplosive=Зажигательный взрыв +ammo.trait.jolt=Толчок +ammo.trait.meteorite=Стреляет патроном с высоким уроном, вызывающим небольшой метеорит +ammo.trait.mirv1=6 маломощных ядерных бомб +ammo.trait.mirv2=6 мини-ядерных бомб +ammo.trait.mirv3=6 маленьких малышей +ammo.trait.mirv4=6 жар-снарядов +ammo.trait.mirv5=Липкий! +ammo.trait.noblock=Не разрушает блоки +ammo.trait.nobounce=Не отскакивает +ammo.trait.nodamage=Нет урона +ammo.trait.noexplosive=Не взрывной +ammo.trait.nograv=Не подвержен гравитации +ammo.trait.noinc=Не поджигает +ammo.trait.nonuke=Даже не ядерная бомба +ammo.trait.nopen=Не пробивает мобов +ammo.trait.noprotomirv=Не рекомендован для Прото-МИРВ +ammo.trait.nuclear=Ядерный +ammo.trait.pen=Пробивает мобов +ammo.trait.phosphor=Фосфорный +ammo.trait.phosphorburn=Вызывает фосфорные ожоги +ammo.trait.poison=Отравляющий всплеск +ammo.trait.range=Увеличенная дальность +ammo.trait.rocket=Ракета +ammo.trait.rocketprop=Реактивный +ammo.trait.shrapnel=Шрапнель +ammo.trait.single=Один снаряд +ammo.trait.starmetal=Звёздный металл +ammo.trait.toxic=Токсичный +ammo.trait.tracer=Трассер +ammo.trait.uhhh=Э-э-э.... +ammo.trait.vapor1=Увеличенный поток пламени +ammo.trait.vapor2=Для удаления больших ошибок +ammo.trait.vapor3=Сильно уменьшенная дальность +ammo.trait.vapor4=Не вызывает ожоги +ammo.trait.warcrime=Запрещён Женевской конвенцией +ammo.trait.wear=Увеличенная изнашиваемость +ammo.trait.wither=Иссушающий armor.blastProtection=Модификатор урона %s от взрывов armor.cap=Максимальное значение урона %s armor.damageModifier=Модификатор урона %s против %s armor.electricJetpack=Ионный реактивный ранец +armor.explosionImmune=Неуязвимый к взрывам armor.fastFall=Быстрое падение armor.fireproof=Огнеупорность -armor.fullSetBonus=Бонусы Полного Набора брони: +armor.fullSetBonus=Бонусы полного набора брони: armor.geigerHUD=Встроенный HUD счетчика Гейгера -armor.geigerSound=Звуковой Счётчик Гейгера -armor.glider=Присесть, чтобы спланировать +armor.geigerSound=Звуковой счётчик Гейгера +armor.glider=Планер (присесть, чтобы спланировать) armor.gravity=Модификатор гравитации %s armor.hardLanding=Жёсткая посадка -armor.ignoreLimit=Сопротивление не зависит от предела сопротивления +armor.ignoreLimit=Игнорирование лимита сопротивления armor.modifier=Общий модификатор урона %s armor.nullDamage=Нейтрализация всего урона от %s +armor.projectileProtection=Модификатор урона %s от снарядов armor.rocketBoots=Ракетные ботинки armor.sprintBoost=Ускоренный спринт -armor.thermal=Термальный визор +armor.thermal=Тепловизор armor.threshold=Порог урона %s armor.vats=Вражеский HUD - - - -book.rbmk.cover=Мой первый РБМК:$Основы$строительства$реактора$§d[WIP] - +battery.priority.high.desc=В экстренном порядке заполняет$батареи, которые$всегда должны быть заполнены +battery.priority.high=Приоритет зарядки: высокий +battery.priority.low.desc=Наиболее используемый режим, когда$энергия должна пойти в батареи без$влияния на производительность механизмов +battery.priority.low=Приоритет зарядки: низкий +battery.priority.normal.desc=Рекомендован для маленьких батареек$(т.е. приоритет не важен) +battery.priority.normal=Приоритет зарядки: нормальный +battery.priority.recommended=Описание режима: +book.msword.cover=Инструкция,$как получить$Метеоритный меч +book.msword.page0=Страницы 1-8: Как получить метеоритный меч. Страницы 9-25: Как улучшить метеоритный меч +book.msword.page10=§lМеханизм = пресс§r с плоским штампом +book.msword.page11=§lМеханизм = доменная печь§r +book.msword.page12=§lМеханизм = сборочная машина§r +book.msword.page13=Создайте что-нибудь в сборочной машине, пока меч находится в слоте для батарейки. +book.msword.page14=§lМеханизм = химическая установка§r +book.msword.page15=Создайте что-нибудь в химической установке, пока меч находится в слоте для батарейки. +book.msword.page16=§lМеханизм = рудный окислитель§r +book.msword.page17=§lМеханизм = реактор-размножитель§r с 4 уровнем тепла +book.msword.page18=§lМеханизм = Стержень облучения РБМК§r +book.msword.page19=Облейте меч тоннами радиации. +book.msword.page1=Метеоритные осколки, из которых собирается блок (а иногда и метеоритные блоки) можно добыть из метеоритов, иногда падающих на землю. +book.msword.page20=§lМеханизм = термоядерный реактор§r с любой плазмой: положите облучённый меч в слот размножения. +book.msword.page21=§lМеханизм = термоядерный реактор§r с зловещей плазмой: положите сплавленный меч в слот размножения. +book.msword.page22=§lМеханизм = S.A.F.E реактор§r: бросаем меч в реактор сингулярности +book.msword.page23=Как только начала генерироваться энергия и плазма стала видимой, замените ядро реактора зловещим мечом. +book.msword.page24=§lМеханизм = DFC§r: §4ОТРЕДАКТИРОВАНО +book.msword.page2=§lМеханизм = доменная печь§r +book.msword.page3=§lМеханизм = печь§r +book.msword.page4=§lМеханизм = наковальня§r Tier 3: Их можно ковать только в разогретом виде. +book.msword.page5=§lМеханизм = печь§r +book.msword.page6=§lМеханизм = наковальня§r: Молодец, ты сделал это! Теперь выкуй ещё один и у тебя появится собственный метеоритный меч. +book.msword.page7=§lМеханизм = верстак§r +book.msword.page8=§lМеханизм = печь§r +book.msword.page9=§lМеханизм = наковальня§r +book.msword.title0=Описание +book.msword.title10=Улучшение 3: закалённый +book.msword.title11=Улучшение 4: легированный +book.msword.title12=Улучшение 5: механически обработанный +book.msword.title14=Улучшение 6: обработанный +book.msword.title16=Улучшение 7: гравированный +book.msword.title17=Улучшение 8: разведённый +book.msword.title18=Улучшение 9: облучённый +book.msword.title1=Блок метеорита +book.msword.title20=Улучшение 10: сплавленный +book.msword.title21=Улучшение 11: зловещий +book.msword.title22=Улучшение 12: искажённый +book.msword.title24=Улучшение 13: демонический +book.msword.title2=Метеоритный слиток +book.msword.title3=Разогретый слиток +book.msword.title4=Выкованный слиток +book.msword.title5=Разогретый выкованный слиток +book.msword.title6=Метеоритное лезвие +book.msword.title7=Метеоритный меч +book.msword.title8=Улучшение 1: обожжённый +book.msword.title9=Улучшение 2: Перекованный +book.rbmk.cover=Мой первый РБМК:$Основы$строительства реактора$ +book.rbmk.page10=§lГрафитовый замедлитель§r преобразует быстрые нейтроны, проходящие через него, в медленные нейтроны. Большинство видов топлива делятся на быстрые нейтроны, в то время как для расщепления требуются медленные нейтроны, поэтому настоятельно рекомендуется использовать замедлители. +book.rbmk.page11=§lСтруктурная колонна§r никак не влияет на нейтроны и не имеет специального применения. Рекомендуется заполнять реактор структурными колоннами там, где не будет других частей, поскольку структурные колонны способны переносить тепло. +book.rbmk.page12=§lКонсоль РБМК§r позволяет управлять реактором издалека. Использование §lУстройства для соединения консоли§r §lРБМК§r на части РБМК и затем на консоли соединит реактор и консоль. Консоль может управлять только частями 15x15, для больших реакторов вы можете использовать несколько консолей. +book.rbmk.page13=Щелчок по частям приведет к их выбору и отмене выбора. С помощью цветных кнопок вы можете быстро выбрать все стержни управления этой цветовой группы. Кнопка "A" выберет все стержни управления, "X" отменит выбор всех. +book.rbmk.page14=Ввод числа от 0 до 100 в зеленое поле, а затем нажатие кнопки рядом с ним приведет к установке всех выбранных стержней управления в это положение. Кнопка "АЗ-5" приведет к полной вставке всех стержней управления. +book.rbmk.page15=Реакция §lтоплива§r зависит от множества факторов. Основными из них являются §lобогощение§r, §lксеноновое отравление§r и количество поступающих §lнейтронов§r. Ксенон накапливается, когда топливо получает мало нейтронов, и сгорает во время нормальной работы. Эффективность нейтронов зависит от типа, большинство видов топлива §lлучше всего расщепляются медленными нейтронами§r. +book.rbmk.page16=§4§lИЗБЕГАЙТЕ. book.rbmk.page1=§lРБМК§r - это полностью модульный ядерный реактор. В отличие от большинства других реакторов, здесь нет "активной зоны" и нет ограничений по размеру, скорее, поведение и эффективность реактора зависят от того, как он построен и как различные части взаимодействуют друг с другом. - book.rbmk.page2=По мере работы реактора он будет генерировать §lтепло§r. Тепло будет распространяться между частями, медленно уменьшаясь в процессе. Цель состоит в том, чтобы произвести как можно больше тепла, не расплавляя реактор, и переместить это тепло в паровые каналы, которые охлаждают реактор и производят пар. - book.rbmk.page3=§lТопливный стержень§r будет захватывать поток нейтронов, заставляя топливо внутри стержня реагировать, выделяя нейтроны в процессе. Нейтроны высвобождаются во всех четырех основных направлениях с максимальной дальностью действия 5 блоков. Количество высвобождаемых нейтронов зависит от используемого топлива. - book.rbmk.page4=§lРегулирующий стержень§r уменьшит количество нейтронов, проходящих через него. Полностью вставленный, он заблокирует все нейтроны, при половинной вставке он заблокирует только половину. Регулирующие стержни используются для регулирования активности реактора и его выключения. - book.rbmk.page5=В центре графического интерфейса будет отображаться текущая вставка стержня. Цветные кнопки слева добавят стержень управления в цветовую группу, что полезно для быстрого выбора сгруппированных стержней на консоли §lРБМК§r. Кнопки справа позволяют вставлять вручную с шагом 25%%. - book.rbmk.page6=§lАвтоматические регулирующие стержни§r почти идентичны обычным регулирующим стержням, но их нельзя настроить вручную, вместо этого они будут регулировать положение стержня в зависимости от текущей температуры. Какую функцию использовать и как глубоко вставлять и при какой температуре, необходимо определить в первую очередь. - book.rbmk.page7=§lПаровой канал§r - единственная часть, которая будет активно снижать уровень тепла реактора. Если температура компонента превышает температуру кипения заданного типа пара, он будет пытаться потреблять столько воды и производить столько пара, сколько необходимо для охлаждения ниже температуры кипения. - book.rbmk.page8=§lОтражатель нейтронов§r будет блокировать прохождение нейтронов, вместо этого нейтроны будут отражаться обратно на топливный стержень, из которого они пришли. Это полезно для использования нейтронов, которые в противном случае были бы потрачены впустую, просто выйдя из реактора. - book.rbmk.page9=§lПоглотитель нейтронов§r просто блокирует нейтроны. Поглощенные нейтроны не будут генерировать тепло и эффективно уничтожаться. Это полезно для предотвращения реакции топливных стержней, которые в противном случае находились бы в пределах досягаемости. - -book.rbmk.page10=§lГрафитовый замедлитель§r преобразует быстрые нейтроны, проходящие через него, в медленные нейтроны. Большинство видов топлива делятся на быстрые нейтроны, в то время как для расщепления требуются медленные нейтроны, поэтому настоятельно рекомендуется использовать замедлители. - -book.rbmk.page11=§lСтруктурная колонна§r никак не влияет на нейтроны и не имеет специального применения. Рекомендуется заполнять реактор структурными колоннами там, где не будет других частей, поскольку структурные колонны способны переносить тепло. - -book.rbmk.page12=§lКонсоль РБМК§r позволяет управлять реактором издалека. Использование §lУстройства для соединения консоли§r §lРБМК§r на части РБМК и затем на консоли соединит реактор и консоль. Консоль может управлять только частями 15x15, для больших реакторов вы можете использовать несколько консолей. - -book.rbmk.page13=Щелчок по частям приведет к их выбору и отмене выбора. С помощью цветных кнопок вы можете быстро выбрать все стержни управления этой цветовой группы. Кнопка "A" выберет все стержни управления, "X" отменит выбор всех. - -book.rbmk.page14=Ввод числа от 0 до 100 в зеленое поле, а затем нажатие кнопки рядом с ним приведет к установке всех выбранных стержней управления в это положение. Кнопка "АЗ-5" приведет к полной вставке всех стержней управления. - -book.rbmk.page15=Реакция §lтоплива§r зависит от множества факторов. Основными из них являются §lобогощение§r, §lксеноновое отравление§r и количество поступающих §lнейтронов§r. Ксенон накапливается, когда топливо получает мало нейтронов, и сгорает во время нормальной работы. Эффективность нейтронов зависит от типа, большинство видов топлива §lлучше всего расщепляются медленными нейтронами§r. - -book.rbmk.page16=§4§lИЗБЕГАЙТЕ. - -book.rbmk.title1=Вступление book.rbmk.title10=Графитовый замедлитель book.rbmk.title11=Структурная колонна book.rbmk.title12=Консоль book.rbmk.title13=Использование консоли book.rbmk.title15=Топливо book.rbmk.title16=Расплавление +book.rbmk.title1=Вступление book.rbmk.title2=Тепло book.rbmk.title3=Топливный стержень book.rbmk.title4=Регулирующий стержень -book.rbmk.title5=Регулирующие стержни - Использование book.rbmk.title5.scale=0.75 +book.rbmk.title5=Регулирующие стержни - Использование +book.rbmk.title6.scale=0.75 book.rbmk.title6=Автоматические регулирующие стержни book.rbmk.title7=Паровой канал book.rbmk.title8=Отражатель нейтронов book.rbmk.title9=Поглотитель нейтронов - -container.amsBase=Основание АМС [WIP] -container.amsEmitter=Излучатель АМС [WIP] -container.amsLimiter=Стабилизатор АМС [WIP] +book.test.cover=HOW 2 SEX +book.test.page1=Test Page 1 +chat.abildisabled=Умение инструмента отключено +chat.abilenabled=Включён +chat.ability=Умение +chat.addpldata=Добавлены данные об игроке! +chat.blacklist=включено в чёрный список! +chat.callas=Вызван авиаудар! +chat.callsp=Вызван аирдроп! +chat.curver1=Вы играете на версии +chat.curver2=на данный момент +chat.detonated=Активировано +chat.duck=Нажмите O, чтобы выпустить утку! +chat.newfeat=Изменения/добавления +chat.newver1=Новая +chat.newver2=версия +chat.newver3=доступна +chat.posset=Позиция установлена +chat.possetx=Позиция указана, X: +chat.possetz=Z: +chat.welcome=Добро пожаловать! +chem.ASPHALT=Производство асфальта +chem.BALEFIRE=Смешивание ракетного жар-топлива +chem.BP_BIOFUEL=Трансэтерификация биотоплива +chem.BP_BIOGAS=Производство биогаза +chem.C4=Синтез через С4 +chem.CC_HEATING=Усовершенствованное сжижение угля +chem.CC_HEAVY=Базовое сжижение угля +chem.CC_I=Улучшенное сжижение угля +chem.CC_NAPHTHA=Сжижение тяжелого бензина +chem.CC_OIL=Сжижение угля +chem.CIRCUIT_4=Производство разогнанной микросхемы +chem.CIRCUIT_5=Производство высокопроизводительной микросхемы +chem.COLTAN_CLEANING=Очищение колтана +chem.COLTAN_CRYSTAL=Кристаллизация тантала +chem.COLTAN_PAIN=Производство Пандемониум(III)танталита +chem.CONCRETE=Производство бетона +chem.CONCRETE_ASBESTOS=Производство асбестоцемента +chem.COOLANT=Смешивание хладагента +chem.CORDITE=Производство кордита +chem.CRYOGEL=Смешивание криогеля +chem.DESH=Производство деш +chem.DEUTERIUM=Извлечение дейтерия +chem.DUCRETE=Дукретизация +chem.DYNAMITE=Динамитный синтез +chem.DYN_DNT=Диносинтез динейтрония +chem.DYN_EUPH=Диносинтез эвфемия +chem.DYN_SCHRAB=Диносинтез шрабидия +chem.ELECTROLYSIS=Крио-электролиз +chem.FC_BITUMEN=Крекинг битума +chem.FC_DIESEL_KEROSENE=Крекинг дизеля +chem.FC_GAS_PETROLEUM=Крекинг попутного газа +chem.FC_I_NAPHTHA=Крекинг промышленного масла +chem.FC_KEROSENE_PETROLEUM=Крекинг керосина +chem.FP_HEAVYOIL=Переработка тяжелой нефти +chem.FP_LIGHTOIL=Переработка легкой нефти +chem.FP_NAPHTHA=Переработка лигроина +chem.FP_SMEAR=Переработка промышленного масла +chem.FRACKSOL=Производство гидроразрывающего растворителя +chem.FR_PETROIL=Смешивание бензина +chem.FR_REOIL=Воссоздание нефтиа +chem.GASOLINE=Производство бензина +chem.HEAVY_ELECTROLYSIS=Криоэлектролиз тяжёлой воды +chem.KEVLAR=Производство кевларовой смеси +chem.NITAN=Смешивание супер топлива NITAN© +chem.NITRIC_ACID=Производство азотной кислоты +chem.OIL_SAND=Извлечение битуминозных песков +chem.PEROXIDE=Производство пероксида водорода +chem.POLYMER=Синтез полимера +chem.PUF6=Производство гексафторида плутония +chem.SAS3=Производство Трисульфида шрабидия +chem.SATURN=Производство сатурнита +chem.SCHRABIDATE=Производство шрабидата железа +chem.SCHRABIDIC=Смешивание шрабидиевой кислоты +chem.SF_BIOFUEL=Затвердевание биотоплива +chem.SF_BIOGAS=Затвердевание биогаза +chem.SF_DIESEL=Затвердевание дизеля +chem.SF_GAS=Затвердевание природного газа +chem.SF_HEATINGOIL=Затвердевание битума +chem.SF_HEAVYOIL=Затвердевание тяжёлой нефти +chem.SF_KEROSENE=Затвердевание керосина +chem.SF_LIGHTOIL=Затвердевание легкой нефти +chem.SF_LUBRICANT=Затвердевание машинной смазки +chem.SF_NAPHTHA=Затвердевание лигроина +chem.SF_OIL=Затвердевание неочищенной нефти +chem.SF_PETROIL=Затвердевание бензина +chem.SF_PETROLEUM=Затвердевание попутного газа +chem.SF_RECLAIMED=Затвердевание очищенного масла +chem.SF_SMEAR=Затвердевание промышленного масла +chem.SOLID_FUEL=Производство твердого ракетного топлива +chem.SOLVENT=Смешивание органических растворителей +chem.STEAM=Кипячение воды +chem.TEL=Смешивание тетраэтилсвинца +chem.TEST=Тест +chem.TNT=Синтез через ТНТ +chem.UF6=Производство гексафторида урана +chem.VIT_GAS=Остекловывание газообразных ядерных отходов +chem.VIT_LIQUID=Остекловывание жидких ядерных отходов +chem.XENON=Ксеноновый цикл Линде +chem.XENON_OXY=Улучшенный ксеноновый цикл Линде +chem.YELLOWCAKE=Производство йеллоукейка +commands.hbmrad.not_found_player=Не могу найти игрока с ником %1$s! +commands.hbmrad.not_rad=Пожалуйста, введите значение радиации! +commands.hbmrad.player_success=Успешно очищено радиационное заражение всех игроков! +commands.hbmrad.rad_not_int=Введённое количество радиации не является числом! +commands.hbmrad.removeall=Убрана вся радиация из мерения %1$s. +container.amsBase=Основание АМС [Деко] +container.amsEmitter=Излучатель АМС [Деко] +container.amsLimiter=Стабилизатор АМС [Деко] container.anvil=Наковальня %s уровня container.arcFurnace=Дуговая печь container.armorTable=Стол модификации брони @@ -361,13 +358,15 @@ container.bombMulti=Многоцелевая бомба container.centrifuge=Центрифуга container.chemplant=Химическая установка container.compactLauncher=Компактная пусковая площадка +container.craneExtractor=Конвейерный извлекатель +container.craneInserter=Конвейерный вставщик container.crateDesh=Деш ящик container.crateIron=Железный ящик container.crateSteel=Стальной ящик container.crateTungsten=Вольфрамовый ящик container.crystallizer=Рудный окислитель container.cyclotron=Циклотрон -container.dfcCore=РТС +container.dfcCore=Реактор тёмного синтеза (РТС) container.dfcEmitter=Излучатель РТС container.dfcInjector=Топливный инжектор РТС container.dfcReceiver=Приёмник РТС @@ -379,31 +378,43 @@ container.factoryAdvanced=Усовершенствованная фабрика container.factoryTitanium=Базовая фабрика container.fluidtank=Цистерна container.forceField=Излучатель силового поля +container.frackingTower=БГГ +container.frackingTower=Гидравлическая гидроразрывная башня +container.furnaceSteel=Стальная печь container.fusionMultiblock=Большой термоядерный реактор -container.fusionaryWatzPlant=ЭСАТУ +container.fusionaryWatzPlant=Реактор WATS-установки container.gasCentrifuge=Газовая центрифуга container.gasFlare=Газовая башня container.generator=Ядерный реактор container.hadron=Ускоритель частиц +container.heaterFirebox=Топка +container.heaterHeatex=Теплообменник +container.heaterOven=Нагревательная печь +container.heaterRadioThermal=Радиоизотопный нагреватель +container.heater_firebox=Топка +container.heater_firebox=Топливо большой стальной печи container.iGenerator=Промышленный генератор container.keyForge=Стол мастера по замкам container.launchPad=Пусковая площадка container.launchTable=Большая пусковая площадка container.machineBoiler=Паровой котёл -container.machineCMB=Доменная печь Альянса +container.machineCMB=Печь из CMB-стали +container.machineChemFac=Химический завод container.machineCoal=Генератор внутреннего сгорания container.machineDiesel=Дизельный генератор container.machineElectricBoiler=Электрический котёл -container.machineFEL=ЛСЭ (FEL) +container.machineFEL=ЛСЭ container.machineITER=Термоядерный реактор container.machineLargeTurbine=Промышленная паровая турбина -container.machineRTGBoiler=РИТЭГ-котёл +container.machineMixer=Промышленный миксер +container.machineRTGBoiler=Котел РИТЭГ container.machineRefinery=Нефтеперерабатывающий завод -container.machineSILEX=Камера ЛРИ (SILEX) +container.machineSILEX=Камера ЛРИ container.machineSelenium=Радиальный двигатель container.machineShredder=Измельчитель container.machineTurbine=Паровая турбина container.machineTurbofan=Турбовентилятор +container.machineUUMixer=Промышленный жидкостный миксер container.machine_deuterium=Дейтериевый экстрактор container.machine_schrabidium_transmutator=Шрабидиевный трансмутатор container.microwave=Микроволновка @@ -433,14 +444,15 @@ container.radGen=Радиационный двигатель container.radar=Радар container.radiobox=FM передатчик container.radiorec=FM радио -container.railgun=Рельсотрон +container.railgun=Рейлган container.rbmkBoiler=Паровой канал РБМК container.rbmkControl=Регулирующие стержни РБМК container.rbmkControlAuto=Автоматические регулирующие стержни РБМК -container.rbmkOutgasser=Колонна облучения РБМК -container.rbmkReaSim=Топливная колонна РБМК (РеаСим) -container.rbmkRod=Топливная колонна РБМК -container.rbmkStorage=Колонна хранилище РБМК +container.rbmkHeater=Жидкостный нагреватель РБМК +container.rbmkOutgasser=Стержень облучения РБМК +container.rbmkReaSim=Топливные стержни РБМК (РеаСим) +container.rbmkRod=Топливные стержни РБМК +container.rbmkStorage=Хранилище РБМК container.reactor=Реактор-размножитель container.reactorControl=Блок удалённого доступа к реактору container.reactorLarge=Большой ядерный реактор @@ -448,6 +460,8 @@ container.reactorSmall=Ядерный реактор container.reix=Мэйнфрейм Rei-X container.rtg=РИТЭГ-генератор container.rtgFurnace=РИТЭГ-печь +container.rttyReceiver=Получатель "редстоун-радио" сигнала +container.rttySender=Отправщик "редстоун-радио" сигнала container.safe=Сейф container.satDock=Станция посадки груза container.satLinker=Устройство связи @@ -466,14 +480,9 @@ container.turretMaxwell=Максвелл container.turretRichard=Ричард container.turretTauon=Тауон container.uf6_tank=Бочка UF6 +container.uuCreator=Конденсатор материи container.wasteDrum=Бочка с отработанным топливом -container.watzPowerplant=Реактор Ватцз -container.furnaceSteel=Стальная печь -container.heaterFirebox=Топка -container.heater_firebox=Топка - -#игра окончена - +container.watzPowerplant=Реактор WATS death.attack.acid=%1$s упал в кислоту death.attack.ams=%1$s искупался в смертельных частицах, ещё неизвестных науке death.attack.amsCore=%1$s испарился в огне сингулярности @@ -486,7 +495,7 @@ death.attack.boat=%1$s был пришиблен лодкой death.attack.boxcar=%1$s был раздавлен падающим грузовым вагоном. Ну что ж... death.attack.broadcast=%1$s растворил свой мозг death.attack.building=%1$s был придавлен падающим зданием -death.attack.cheater=внутренности %1$s превратились в овёс (???) +death.attack.cheater=Внутренности %1$s превратились в овёс (???) death.attack.chopperBullet=%1$s был изничтожен %2$s death.attack.cloud=%1$s растаял, как эскимо в жаркий день death.attack.cmb=%1$s был продырявлен %2$s @@ -495,13 +504,14 @@ death.attack.digamma=%1$s шагнул в пустоту. death.attack.electricity=%1$s был убит электрическим током death.attack.electrified=%1$s превратился в батарейку благодаря %2$s death.attack.euthanized=%1$s был усыплён %2$s -death.attack.euthanizedSelf=%1$s нашёл путь к лучшей жизни в России death.attack.euthanizedSelf2=%1$s выиграл премию Дарвина +death.attack.euthanizedSelf=%1$s нашёл путь к лучшей жизни в России death.attack.exhaust=%1$s был превращен в шашлык стартовой ракетой death.attack.flamethrower=%1$s был кремирован %2$s death.attack.gluon=%1$s был деатомизирован потоком концентрированных глюонов. death.attack.gunGib=%1$s был разорван на куски %2$s. death.attack.ice=%1$s был превращён в эскимо %2$s +death.attack.laser.item=%1$s был превращён в пепел %2$s с помощью %3$s death.attack.laser=%1$s был превращён в пепел %2$s death.attack.lead=%1$s умер от отравления свинцом death.attack.lunar=%1$s забыли зарядить свои жизненно важные органы. @@ -513,33 +523,289 @@ death.attack.nuclearBlast=%1$s был стёрт с лица земли ядер death.attack.pc=%1$s стал лужицей внутри розового облака death.attack.plasma=%1$s был испарён %2$s death.attack.radiation=%1$s умер от лучевой болезни +death.attack.revolverBullet.item=%1$s получил пулю в голову от %2$s с помощью %3$s death.attack.revolverBullet=%1$s получил пулю в голову от %2$s death.attack.rubble=%1$s превратился в лепёшку death.attack.shrapnel=%1$s был разорван шрапнелью death.attack.slicer=%1$s сократился вдвое. death.attack.spikes=%1$s был пронзён насквозь -death.attack.subAtomic=Атомы %1$s были уничтожены %2$s. +death.attack.subAtomic1=Атомы %1$s были уничтожены %2$s death.attack.subAtomic2=%1$s был смещен QPU, потому что %2$s изменил его фактическую скорость death.attack.subAtomic3=%1$s перестал существовать из-за %2$s death.attack.subAtomic4=%1$s был поделён на ноль %2$s death.attack.subAtomic5=%1$s был обнулён %2$s +death.attack.subAtomic=Атомы %1$s были уничтожены %2$s. death.attack.suicide=%1$s оторвал себе голову death.attack.taint=%1$s умер от невероятного количества опухолей death.attack.tau=%1$s был изрешёчен %2$s при помощи отрицательно заряженых тауонов death.attack.tauBlast=%1$s заряжал XVL1456 слишком долго и взлетел на воздух death.attack.teleporter=%1$s телепортировался в никуда - +desc.airstrike=Наведись и нажми ПКМ, чтобы вызвать авиаудар! +desc.any=Любой +desc.author=от +desc.bedrock_ore.Aluminum=алюминий +desc.bedrock_ore.Asbestos=асбест +desc.bedrock_ore.Australium=австралий +desc.bedrock_ore.Beryllium=бериллий +desc.bedrock_ore.Borax=бур +desc.bedrock_ore.Cinnabar=киноварь +desc.bedrock_ore.Coal=уголь +desc.bedrock_ore.Cobalt=кобальт +desc.bedrock_ore.Coltan=колтан +desc.bedrock_ore.Copper=медь +desc.bedrock_ore.Daffergon=даффергон +desc.bedrock_ore.Diamond=алмаз +desc.bedrock_ore.Emerald=изумруд +desc.bedrock_ore.Fluorite=флюорит +desc.bedrock_ore.Gold=золото +desc.bedrock_ore.InfernalCoal=адский уголь +desc.bedrock_ore.Iridium=иридий +desc.bedrock_ore.Iron=железо +desc.bedrock_ore.Lapis=лазурит +desc.bedrock_ore.Lead=свинец +desc.bedrock_ore.Lignite=бурый уголь +desc.bedrock_ore.Lithium=литий +desc.bedrock_ore.Mithril=мифрил +desc.bedrock_ore.Neodymium=неодим +desc.bedrock_ore.Nickel=никель +desc.bedrock_ore.Nitanium=нитан +desc.bedrock_ore.Platinum=платина +desc.bedrock_ore.Plutonium=плутоний +desc.bedrock_ore.Quartz=кварц +desc.bedrock_ore.RareEarth=редкоземельная +desc.bedrock_ore.RedPhosphorus=красный фосфор +desc.bedrock_ore.Redstone=редстоун +desc.bedrock_ore.Reiium=реиевая +desc.bedrock_ore.Saltpeter=селитра +desc.bedrock_ore.Schrabidium=шрабидий +desc.bedrock_ore.Silver=серебро +desc.bedrock_ore.Starmetal=звёздный металл +desc.bedrock_ore.Sulfur=сера +desc.bedrock_ore.Th232=торий-232 +desc.bedrock_ore.Thorium232=торий-232 +desc.bedrock_ore.Thorium=торий +desc.bedrock_ore.Tin=олово +desc.bedrock_ore.Titanium=титан +desc.bedrock_ore.Tungsten=вольфрам +desc.bedrock_ore.Unobtainium=унобтаний +desc.bedrock_ore.Uranium=уран +desc.bedrock_ore.Verticium=вертиций +desc.bedrock_ore.Volcanic=вулканическая +desc.bedrock_ore.Weidanium=вейданий +desc.bedrock_ore.Zirconium=цирконий +desc.bil=МЛРД +desc.botsize=Минимальный размер: +desc.breakgame=Не используйте это - может крашнуть игру +desc.calldet1=Шифт+ПКМ, чтобы установить позицию, +desc.calldet2=ПКМ, чтобы активировать! +desc.callsp=Нажми ПКМ, чтобы вызвать аирдроп! +desc.chargeadds=Каждый заряд прибавляет к радиусу: +desc.choosetarget1=Укажите цель, кликнув на блок рядом с вами. +desc.choosetarget2=Укажите цель, вручную указав координаты. +desc.choosetarget3=Укажите цель, кликнув на любое место в радиусе прогрузки чанков. +desc.creative=Предмет из креатива +desc.digammaed=мДРХ/сек +desc.durpercents=Прочность в процентах: +desc.durticks=Прочность в тиках: +desc.energychargecur=Заряд: +desc.energychargerate=Скорость зарядки: +desc.energydchargerate=Скорость разрядки: +desc.energystore=Хранится энергии: +desc.exact=Предмет и мета-данные совпадают +desc.extraction=ПКМ с отвёрткой в руке, чтобы активировать выход жидкости +desc.fieldmodifier=Модификатор силового поля: +desc.fortune=Удача +desc.fuelamnt=Тип топлива: +desc.fuelcon=Потребление топлива: +desc.fueltype=Тип топлива: +desc.fuse=Время взрыва: +desc.generates=Вырабатывает +desc.health=Здоровье: +desc.heatpt=тепла в тик +desc.inaccuracy=Неточность: +desc.infilter=Установленный фильтр: desc.item.rtgDecay=Распадается на: %s desc.item.rtgHeat=Тепло: %s +desc.item_bedrock_ore.Aluminum=Алюминиевая +desc.item_bedrock_ore.Asbestos=Асбестовая +desc.item_bedrock_ore.Australium=Австралиевая +desc.item_bedrock_ore.Beryllium=Бериллиевая +desc.item_bedrock_ore.Borax=Бурная +desc.item_bedrock_ore.Cinnabar=Киноварная +desc.item_bedrock_ore.Coal=Угольная +desc.item_bedrock_ore.Cobalt=Кобалтовая +desc.item_bedrock_ore.Coltan=Колтановая +desc.item_bedrock_ore.Copper=Медная +desc.item_bedrock_ore.Daffergon=Даффергоновая +desc.item_bedrock_ore.Diamond=Алмазная +desc.item_bedrock_ore.Emerald=Изумрудная +desc.item_bedrock_ore.Fluorite=Флюоритовая +desc.item_bedrock_ore.Gold=Золотая +desc.item_bedrock_ore.InfernalCoal=Адскоугольная +desc.item_bedrock_ore.Iridium=Иридиевая +desc.item_bedrock_ore.Iron=Железная +desc.item_bedrock_ore.Lapis=Лазуритовая +desc.item_bedrock_ore.Lead=Свинцовая +desc.item_bedrock_ore.Lignite=Бурноугольная +desc.item_bedrock_ore.Lithium=Литиевая +desc.item_bedrock_ore.Mithril=Мифриловая +desc.item_bedrock_ore.Neodymium=Неодимовая +desc.item_bedrock_ore.Nickel=Никелевая +desc.item_bedrock_ore.Nitanium=Нитановая +desc.item_bedrock_ore.Platinum=Платиновая +desc.item_bedrock_ore.Plutonium=Плутониевая +desc.item_bedrock_ore.Quartz=Кварцевая +desc.item_bedrock_ore.RareEarth=Редкоземельная +desc.item_bedrock_ore.RedPhosphorus=Краснофосфорная +desc.item_bedrock_ore.Redstone=Редстоуновая +desc.item_bedrock_ore.Reiium=Реиевая +desc.item_bedrock_ore.Saltpeter=Селитровая +desc.item_bedrock_ore.Schrabidium=Шрабидиевая +desc.item_bedrock_ore.Silver=Серебряная +desc.item_bedrock_ore.Starmetal=Звёзднометаллическая +desc.item_bedrock_ore.Sulfur=Серная +desc.item_bedrock_ore.Th232=Ториевая-232 +desc.item_bedrock_ore.Thorium232=Ториевая-232 +desc.item_bedrock_ore.Thorium=Ториевая +desc.item_bedrock_ore.Tin=Оловянная +desc.item_bedrock_ore.Titanium=Титановая +desc.item_bedrock_ore.Tungsten=Вольфрамовая +desc.item_bedrock_ore.Unobtainium=Унобтаниевая +desc.item_bedrock_ore.Uranium=Урановая +desc.item_bedrock_ore.Verticium=Вертициевая +desc.item_bedrock_ore.Volcanic=Вулканическая +desc.item_bedrock_ore.Weidanium=Вейданиевая +desc.item_bedrock_ore.Zirconium=Циркониевая +desc.lasts=Продержится +desc.machine_press=Пресс +desc.maxtier=Максимальный уровень: +desc.mil=МЛН +desc.mintier=Минимальный уровень: +desc.na=Неизвестно +desc.nofilter=Фильтр не установлен! +desc.none=Нет +desc.nukesolinium1=Эта нейтронная бомба - вооружённая дочь G.E.C.K-а. +desc.nukesolinium2=Она излучает столько нейтронной радиации, что превращает в радиусе все радиоактивные предметы в нерадиоактивные путём альфа-распада. +desc.ore=Руда: +desc.oredictmatch=Ключ из словаря руд совпадает: +desc.payload=Максимальный вес боеголовки: +desc.powdrainmodifier=Модификатор потребления энергии: +desc.radius=Радиус: +desc.rads=РАД/сек +desc.rarity=Редкость: +desc.rcchange=ПКМ, чтобы изменить +desc.requires=Требует: +desc.satellitefr=Частота спутника: +desc.second=сек +desc.silktouch=Шёлковое касание +desc.size=Размер: +desc.speed=Скорость: +desc.stack=Суммарно: +desc.strength=Сила взрыва: +desc.targetcoord=Координаты цели: +desc.templfolder1=Шаблоны для механизмов: бумага + краситель +desc.templfolder2=Идентификаторы жидкости: железная пластина + краситель +desc.templfolder3=Штампы для пресса: плоский штамп +desc.templfolder4=Кассеты с сиренами: изолятор + стальная пластина +desc.teslacoils=Даёт бесконечный заряд катушкам Теслы +desc.thd=ТЫС +desc.ticks=тиков +desc.tier=Уровень: +desc.topsize=Максимальный размер: +desc.type=Тип: +desc.unfluidid=Идентифицирует эту жидкость: +desc.upgrade10=Улучшение для копания: +desc.upgrade11=Улучшение для миксера: +desc.upgrade12=Плавит блоки. Достаточно просто. +desc.upgrade13=Дробит руды +desc.upgrade14=Твой новый лучший друг +desc.upgrade15=Прям как в Super Mario, где все блоки +desc.upgrade16=это жабы, но тут учёные из Half-Life, +desc.upgrade17=и они кричат. Много кричат. +desc.upgrade18=Позволяет производить жидкую материю. +desc.upgrade19=50% шанс переделать бесполезные предметы в /dev/zero +desc.upgrade1=Шахтёрский бур: +desc.upgrade20=50% шанс переместить бесполезные предметы в /dev/null +desc.upgrade21=Надеюсь, название говорит само за себя +desc.upgrade22=Улучшение конвейерного извлекателя: +desc.upgrade2=Сборочная машина: +desc.upgrade3=Химическая установка: +desc.upgrade4=Кристаллизатор: +desc.upgrade5=Циклотрон: +desc.upgrade6=Турбовентилятор: +desc.upgrade7=Улучшение дальности силового поля: +desc.upgrade8=Улучшение прочности силового поля: +desc.upgrade9=Улучшение для шахтёрского лазера: +desc.upgradeaf1=Производительность x2 / Потребление x2.5 +desc.upgradeaf2=Производительность x3 / Потребление x5 +desc.upgradeaf3=Производительность x4 / Потребление x7.5 +desc.upgradecs11=Потребление -20% / Задержка +25% +desc.upgradecs12=Потребление -100k +desc.upgradecs21=Потребление -60% / Задержка +50% +desc.upgradecs22=Потребление -200k +desc.upgradecs31=Потребление -80% / Задержка +100% +desc.upgradecs32=Потребление -300k +desc.upgradeef11=Радиус +1 / Потребление +80 +desc.upgradeef12=+5% шанс не потратить предмет / Потребление кислоты +1000mB +desc.upgradeef13=-50% шанс на увеличение счётчика перегрева +desc.upgradeef21=Радиус +2 / Потребление +160 +desc.upgradeef22=+10% шанс не потратить предмет / Потребление кислоты +2000mB +desc.upgradeef23=-66% шанс на увеличение счётчика перегрева +desc.upgradeef31=Радиус +3 / Потребление +240 +desc.upgradeef32=+15% шанс не потратить предмет / Потребление кислоты +3000mB +desc.upgradeef33=-75% шанс на увеличение счётчика перегрева +desc.upgradeej1=Скорость извлечения x2 +desc.upgradeej2=Скорость извлечения x4 +desc.upgradeej3=Скорость извлечения x10 +desc.upgradeej4=Может извлекать 4 предмета за раз +desc.upgradeej5=Может извлекать 16 предметов за раз +desc.upgradeej6=Может извлекать 64 предмета за раз +desc.upgradeft1=Удача I / Задержка +15 +desc.upgradeft2=Удача II / Задержка +30 +desc.upgradeft3=Удача III / Задержка +45 +desc.upgradeht=Макс. здоровье +50 / Потребление +250 +desc.upgraderd=Радиус +16 блоков / Потребление +500 +desc.upgradesp11=Задержка -15 / Потребление +300 +desc.upgradesp12=Задержка -25% / Потребление +200% +desc.upgradesp13=Задержка -25% / Потребление +200% +desc.upgradesp14=Задержка -10% / Потребление +1000 +desc.upgradesp15=Скорость x2 +desc.upgradesp21=Задержка -30 / Потребление +600 +desc.upgradesp22=Задержка -50% / Потребление +500% +desc.upgradesp23=Задержка -50% / Потребление +500% +desc.upgradesp24=Задержка -20% / Потребление +2000 +desc.upgradesp25=Скорость x3 +desc.upgradesp31=Задержка -45 / Потребление +900 +desc.upgradesp32=Задержка -75% / Потребление +800% +desc.upgradesp33=Задержка -75% / Потребление +800% +desc.upgradesp34=Задержка -30% / Потребление +3000 +desc.upgradesp35=Скорость x4 +desc.upgradestack=Складывается до 16 шт. +desc.usesdpc=Использует капсулы с дейтериевой плазмой +desc.varkey=Вариант: кодовый замок +desc.varwin=Вариант: окно +desc.veinminer=Вскапывание жил +desc.weight=Вес: +desc.wildcard=Предмет совпадает +digamma.playerDigamma=Уровень облучения дигаммы на игроке: +digamma.playerHealth=Влияние дигаммы на игрока: +digamma.playerRes=Сопротивление к дигамме: +digamma.title=ДИАГНОСТИКА ДИГАММЫ +dosimeter.title=ДОЗИМЕТР entity.entity_balls_o_tron.name=Баллс-О-Трон Прайм -entity.entity_balls_o_tron_seg.name=Сегмент Баллс-О-Трон +entity.entity_balls_o_tron_seg.name=Сегмент Баллс-О-Трона entity.entity_bullet.name=Пуля entity.entity_bullet_mk2.name=Пуля +entity.entity_c_item_name=Передвигающийся предмет entity.entity_cyber_crab.name=Киберкраб entity.entity_elder_one.name=Крякос Старший entity.entity_fucc_a_ducc.name=Утка -entity.entity_hunter_chopper.name=Вертолет Охотник -entity.entity_mask_man.name=Человек в маске +entity.entity_hunter_chopper.name=Охотник Чоппер +entity.entity_mask_man.name=Человек в противогазе +entity.entity_mob_hunter_chopper.name=Вертолёт-охотник +entity.entity_mob_mask_man.name=Человек в противогазе +entity.entity_mob_nuclear_creeper.name=Ядерный крипер +entity.entity_mob_tainted_creeper.name=Заражённый порчей крипер entity.entity_ntm_fbi.name=Агент ФБР entity.entity_ntm_radiation_blaze.name=Элементаль Расплавления entity.entity_ntm_ufo.name=Корабль марсианского вторжения @@ -550,17 +816,144 @@ entity.entity_schrabnel.name=Шрабнель entity.entity_taint_crab.name=Заражённый порчей теслакраб entity.entity_tainted_creeper.name=Зараженный крипер entity.entity_tesla_crab.name=Теслакраб - +entity.hbm.entity_balls_o_tron.name=Баллс-О-Трон Прайм +entity.hbm.entity_balls_o_tron_seg.name=Сегмент Баллс-О-Трона +entity.hbm.entity_bullet.name=Пуля +entity.hbm.entity_ntm_ufo.name=Марсианский корабль вторжения +entity.hbm.entity_rocket.name=Ракета +entity.hbm.entity_schrabnel.name=Шрапнель +flare.ignition=Зажигание +flare.valve=Клапан подачи +fluid.acid=Пероксид водорода +fluid.acid_fluid=Кислота +fluid.amat=Антивещество +fluid.aromatics=Ароматические углеводороды +fluid.aschrab=Антишрабидиум +fluid.balefire=Жар-ракетное топливо +fluid.biofuel=Биотопливо +fluid.biogas=Биогаз +fluid.bitumen=Битум +fluid.colloid=Коллоид +fluid.coolant=Охлаждающая жидкость +fluid.corium_fluid=Кориум +fluid.crackoil=Высокоароматизированная нефть +fluid.cryogel=Криогель +fluid.deadblood=Кровь мертвеца +fluid.deuterium=Дейтерий +fluid.diesel=Дизель +fluid.ethanol=Этанол +fluid.experience=Сок из опыта +fluid.fishoil=Рыбий жир +fluid.fracksol=Гидроразрывающий растворитель +fluid.gas=Природный газ +fluid.gasoline=Этилированный бензин +fluid.hbmacid=Пероксид водорода +fluid.hbmamat=Антиматерия +fluid.hbmaschrab=Антишрабидий +fluid.hbmbalefire=Ракетное жар-топливо +fluid.hbmbiofuel=Биотопливо +fluid.hbmbiogas=Биогаз +fluid.hbmbitumen=Битум +fluid.hbmcoolant=Хладагент +fluid.hbmcryogel=Криогель +fluid.hbmdeuterium=Дейтерий +fluid.hbmdiesel=Дизель +fluid.hbmgas=Природный газ +fluid.hbmheatingoil=Мазут +fluid.hbmheavyoil=Тяжелая нефть +fluid.hbmhotoil=Горячая неочищенная нефть +fluid.hbmhotsteam=Горячий пар +fluid.hbmhydrogen=Жидкий водород +fluid.hbmkerosene=Керосин +fluid.hbmlightoil=Лёгкая нефть +fluid.hbmlubricant=Машинная смазка +fluid.hbmmercury=Ртуть +fluid.hbmnaphtha=Лигроин +fluid.hbmnitan=100-октановое сверхтопливо NITAN© +fluid.hbmoil=Неочищенная нефть +fluid.hbmoxygen=Жидкий кислород +fluid.hbmpetroil=Бензин +fluid.hbmpetroleum=Попутный нефтяной газ +fluid.hbmpuf6=Гексафторид плутония +fluid.hbmreclaimed=Очищенное промышленное масло +fluid.hbmsas3=Трисульфид шрабидия +fluid.hbmsmear=Промышленное масло +fluid.hbmsteam=Пар +fluid.hbmsuperhotsteam=Раскалённый пар +fluid.hbmtritium=Тритий +fluid.hbmuf6=Гексафторид урана +fluid.hbmwatz=Токсичные отходы +fluid.hbmxenon=Ксенон +fluid.heatingoil=Мазут +fluid.heavyoil=Тяжелое масло +fluid.heavywater=Тяжёлая вода +fluid.hotcoolant=Горячая охлаждающая жидкость +fluid.hotcrackoil=Горячая высокоароматизированная нефть +fluid.hotoil=Горячая сырая нефть +fluid.hotsteam=Густой пар +fluid.hydrogen=Жидкий водород +fluid.ic2uu_matter=Жидкая материя +fluid.kerosene=Керосин +fluid.lightoil=Лигроин +fluid.liquid_osmiridium=Осмиридный растворитель +fluid.lubircant=Машинная смазка +fluid.lubricant=Машинная смазка +fluid.mercury=Ртуть +fluid.mud_fluid=Токсичные отходы +fluid.naphtha=Нафта +fluid.nitan=NITAN© 100-октановое супертопливо +fluid.nitric_acid=Азотная кислота +fluid.nitroglycerin=Нитроглицерин +fluid.oil=Сырая нефть +fluid.oxygen=Жидкий кислород +fluid.pain=Раствор танталита пандемониума (III) +fluid.petroil=Бензин +fluid.petroleum=Нефтяной газ +fluid.plasma_bf=Жар-плазма +fluid.plasma_dt=Дейтериево-тритиевая плазма +fluid.plasma_hd=Водородно-дейтериевая плазма +fluid.plasma_ht=Водородно-тритиевая плазма +fluid.plasma_put=Плутониево-тритиевая плазма +fluid.plasma_xm=Ксенон-ртутная плазма +fluid.puf6=Гексафторид плутония +fluid.radiosolvent=Высокоэффективный растворитель +fluid.radwater_fluid=Радиоактивная вода +fluid.reclaimed=Восстановленное индустриальное масло +fluid.sas3=Трисульфид шрабидия +fluid.schrabidic=Шрабидиновая кислота +fluid.schrabidic_fluid=Шрабидиевая кислота +fluid.smear=Индустриальное масло +fluid.solvent=Растворитель +fluid.spentsteam=Пар низкого давления +fluid.steam=Пар +fluid.sulfuric_acid=Серная кислота +fluid.sunfloweroil=Подсолнечное масло +fluid.superhotsteam=Сверхплотный пар +fluid.tile.lava=Лава +fluid.tile.water=Вода +fluid.toxic_fluid=Стереотипная зелёная слизь +fluid.tritium=Тритий +fluid.uf6=Гексафторид урана +fluid.ultrahotsteam=Ультраплотный пар +fluid.unsaturateds=Ненасыщенные углеводороды +fluid.volcanic_lava_fluid=Вулканическая лава +fluid.wastefluid=Жидкие ядерные отходы +fluid.wastegas=Газообразные ядерные отходы +fluid.watz=Ядовитая грязь +fluid.xenon=Ксеноновый газ +fuel.balefire=Жар-ракетное топливо / Пероксид +fuel.hydrogen=Водород / Кислород +fuel.kerosene=Керосин / Пероксид +fuel.solid=Твёрдое топливо +fuel.xenon=Ксенон (газ) +fuse.impact=при контакте с землёй +fuse.instant=мгновенно geiger.chunkRad=Текущий уровень радиации в чанке: geiger.envRad=Общее радиационное заражение среды: geiger.playerRad=Уровень радиоактивного заражения игрока: geiger.playerRes=Радиационная защита игрока: geiger.recievedRad=Общее полученное излучение: -geiger.title=Счетчик Гейгера - -radsensor.title=Датчик Радиации -radsensor.chunkRad=Текущий уровень радиации в чанке: - +geiger.title=СЧЁТЧИК ГЕЙГЕРА hadron.analysis=Анализ... hadron.buttonOff=Камера анализа выключена hadron.buttonOn=Камера анализа (если есть) включена @@ -573,116 +966,307 @@ hadron.modeLine=§eРежим линейного ускорителя:$Уско hadron.noresult=Нет результата. hadron.progress=В процессе... hadron.success=Завершено! - -hbm.achievement.assembly=Изготовление -hbm.achievement.assembly.desc=Поддержка Vault-tec, уровень 2 (сборочная машина) -hbm.achievement.bossCreeper=Бомба на четырех ногах -hbm.achievement.bossCreeper.desc=«Есть ядерные криперы? Это вещь?! -hbm.achievement.bossMaskman=6 месяцев обязательной службы и все, что я получил, это паршивая футболка -hbm.achievement.bossMaskman.desc=Бонк большой мальчик. +hazard.bacteria=Бактерий / Аэрозолей +hazard.corrosive=Едких испарений +hazard.gasChlorine=Химических газов +hazard.gasInert=Инертных газов / Удушающих веществ +hazard.gasMonoxide=Угарного газа +hazard.light=Ярких вспышек +hazard.nerveAgent=Нервно-паралитических средств +hazard.neverProtects=Никогда не защитит от: +hazard.noprot=НЕ защищает от: +hazard.particleCoarse=Частиц, находящихся в воздухе +hazard.particleFine=Твердых частиц +hazard.prot=Защищает от: +hazard.radGas=Радиоактивных газов +hazard.sand=Раздражителей глаз +hbm.achievement.aa_progress_burnerpress.desc=Оно давит на меня и на тебя +hbm.achievement.aa_progress_burnerpress=Под давлением +hbm.achievement.bobassembly.desc=Поддержка Vault-Tec, уровень 2 (Улучшенная микросхема) +hbm.achievement.bobassembly=Производство +hbm.achievement.bobchemistry.desc=Поддержка Vault-Tec, уровень 3 (Резина) +hbm.achievement.bobchemistry=Химия +hbm.achievement.bobhidden.desc=Убей заражённого крипера с помощью товарного вагона. +hbm.achievement.bobhidden=Спрятанный каталог +hbm.achievement.bobmetalworks.desc=Поддержка Vault-Tec, уровень 1 (Майнкрафтовский сорт меди) +hbm.achievement.bobmetalworks=Металлообработка +hbm.achievement.bobnuclear.desc=Поддержка Vault-Tec, уровень 5 (Слиток плутония-241) +hbm.achievement.bobnuclear=Ядерная физика +hbm.achievement.boboil.desc=Поддержка Vault-Tec, уровень 4 (Нефтяная смола) +hbm.achievement.boboil=Нефть +hbm.achievement.bossCreeper.desc='Тут есть ядерные криперы? Они существуют?!' +hbm.achievement.bossCreeper=Бомба на четырёх ногах +hbm.achievement.bossMaskman.desc=Долбани по большому человеку. +hbm.achievement.bossMaskman=Полгода принудительных работ, и всё, что я получил - эту паршивую футболку.. +hbm.achievement.bossMeltdown.desc=Больше ужасно, чем отлично, но я беру, пока дают. hbm.achievement.bossMeltdown=3.6 Рентген -hbm.achievement.bossMeltdown.desc=Скорее ужасно, чем здорово, но я беру то, что могу. -hbm.achievement.bossWorm=Разборка Баллс-О-Трон -hbm.achievement.bossWorm.desc=Фабстафф. Моя задница. Вы делаете математику. -hbm.achievement.c20_5=Глава [ДВАДЦАТЬ.ПЯТАЯ] +hbm.achievement.bossUFO.desc=Йо, что у нас тут? Огромный космический корабль, отправляющий нас в далёкие края? +hbm.achievement.bossUFO=Пффф лол +hbm.achievement.bossWorm.desc=Персонал завода. Моя голова. Вы занимайтесь математикой. +hbm.achievement.bossWorm=Разбирающийся Баллс-о-Трон hbm.achievement.c20_5.desc=??? +hbm.achievement.c20_5=Глава [ДВАДЦАТЬ ТОЧКА ПЯТЬ] +hbm.achievement.c44.desc=Гальванизирован! Имею в виду цинк! hbm.achievement.c44=Глава 44 -hbm.achievement.c44.desc=Оцинкованный! Я имею в виду цинк! -hbm.achievement.chemistry=Химия -hbm.achievement.chemistry.desc=Поддержка Vault-tec, уровень 3 (бетонные блоки) -hbm.achievement.digammaFeel=Ужас чувств -hbm.achievement.digammaFeel.desc=Пустота внутри. -hbm.achievement.digammaKauaiMoho=Спой, спой мне песню Кауаи Мохо -hbm.achievement.digammaKauaiMoho.desc=Все ужасно, вот горячий чокки. -hbm.achievement.digammaKnow=Ужас знания -hbm.achievement.digammaKnow.desc=О чем этот мир. -hbm.achievement.digammaSee=Страх видения -hbm.achievement.digammaSee.desc=в бездну. -hbm.achievement.digammaUpOnTop=Восхищайся мной, восхищайся моим домом -hbm.achievement.digammaUpOnTop.desc=Я делаю то, что хочу, но безответственно. -hbm.achievement.fiend=Правонарушитель -hbm.achievement.fiend.desc=Будьте злыми. -hbm.achievement.fiend2=Преступник 2: Преступник сложнее -hbm.achievement.fiend2.desc=Будьте злее. +hbm.achievement.digammaFeel.desc=пустоты внутри. +hbm.achievement.digammaFeel=Страх чувства +hbm.achievement.digammaKauaiMoho.desc=Всё ужасно, вот кружка горячего шоколада. +hbm.achievement.digammaKauaiMoho=Пой, пой мне песню мохо из Кауаи +hbm.achievement.digammaKnow.desc=о чём этот мир. +hbm.achievement.digammaKnow=Страх знания того, +hbm.achievement.digammaSee.desc=сквозь бездну. +hbm.achievement.digammaSee=Страх возможности видеть +hbm.achievement.digammaUpOnTop.desc=Я делаю то, что я хочу, хотя и безответственно. +hbm.achievement.digammaUpOnTop=Восхищайтесь мной, восхищайтесь моим домом +hbm.achievement.fiend.desc=Будь грубым. +hbm.achievement.fiend2.desc=Будь ещё более грубым. +hbm.achievement.fiend2=Преступник 2: нарушай сильнее +hbm.achievement.fiend=Преступник +hbm.achievement.foeq.desc=Отправь реле в марсианскую...точнее, в дунайскую орбиту. hbm.achievement.foeq=Пегасы и ракетные шахты -hbm.achievement.foeq.desc=Отправить ретранслятор на марсианскую... я имею в виду дунайскую орбиту. -hbm.achievement.freytag=Фрайтаг -hbm.achievement.freytag.desc=Спасатели Герольда -hbm.achievement.hidden=Скрытый каталог -hbm.achievement.hidden.desc=Убейте испорченного крипера падающим товарным вагоном. -hbm.achievement.horizonsBonus=Слэм-данк диарея -hbm.achievement.horizonsBonus.desc=честное слово что с тобой не так -hbm.achievement.horizonsEnd=Горизонты -hbm.achievement.horizonsEnd.desc=Отправьте Тома домой. -hbm.achievement.horizonsStart=апогей -hbm.achievement.horizonsStart.desc=Отправить парня на Луну. +hbm.achievement.freytag.desc=Спасатели герольда +hbm.achievement.freytag=Фрейтаг +hbm.achievement.horizonsBonus.desc=честное слово, что с тобой, чёрт возьми, не так? +hbm.achievement.horizonsBonus=Чёртова диарея +hbm.achievement.horizonsEnd.desc=Отправь Тома домой. +hbm.achievement.horizonsEnd=Новые горизонты +hbm.achievement.horizonsStart.desc=Отправь паренька на луну. +hbm.achievement.horizonsStart=Апогей +hbm.achievement.impossible.desc=Ты не можешь получить это hbm.achievement (честным путём). hbm.achievement.impossible=Буквально невозможно -hbm.achievement.impossible.desc=Вы не можете получить это достижение hbm. -hbm.achievement.meltdown=Быстрая незапланированная разборка -hbm.achievement.meltdown.desc=Ты зашел так далеко, как ты мог все испортить? -hbm.achievement.metalworks=Металлоконструкции -hbm.achievement.metalworks.desc=Поддержка Vault-tec, уровень 1 (доменная печь) -hbm.achievement.nuclear=атомная наука -hbm.achievement.nuclear.desc=Уровень поддержки Vault-tec 5 (урановое топливо) -hbm.achievement.oil=Нефть -hbm.achievement.oil.desc=Уровень поддержки Vault-tec 4 (электрический котел) +hbm.achievement.meltdown.desc=Ты зашёл так далеко, как ты можешь всё испортить? +hbm.achievement.meltdown=Быстрая неазапланированная разборка +hbm.achievement.omega12.desc=Реши проблему продолжительной жизни на этой убогой планете. hbm.achievement.omega12=Ускоритель частиц Омега-12 -hbm.achievement.omega12.desc=Решите проблему продолжения жизни на этой убогой планете. +hbm.achievement.potato.desc=Ты пырнул меня! Что с тобой не та-АААААААААА hbm.achievement.potato=Разбойный ИИ -hbm.achievement.potato.desc=Ты ударил меня ножом! Что с тобой НЕ ТАК-ВАУ -hbm.achievement.radDeath=О, Радиация! -hbm.achievement.radDeath.desc=Мария Кюри изобрела теорию радиоактивности, лечение радиоактивности и умирание от радиоактивности. +hbm.achievement.progress_adv.desc=Сплав, способный запустить нашу империю +hbm.achievement.progress_adv=Продвинутый сплав +hbm.achievement.progress_am241.desc=Америка, фак ее! +hbm.achievement.progress_am241=Америций +hbm.achievement.progress_anvil.desc=Ручная, но эффективная +hbm.achievement.progress_anvil=Наковальня +hbm.achievement.progress_assembler.desc=Погоди, уже час ночи? +hbm.achievement.progress_assembler=Фабрика растёт +hbm.achievement.progress_au198.desc=Давай займёмся ювелирными изделиями +hbm.achievement.progress_au198=Самое горячее золото +hbm.achievement.progress_bedrock_ore.desc=Может быть, я найду место с унобтанием.. +hbm.achievement.progress_bedrock_ore=БЕСКОНЕЧНЫЕ РУДЫ +hbm.achievement.progress_bismuth.desc=Помните, когда люди жаловались на это целый месяц? Я помню. +hbm.achievement.progress_bismuth=Висмут +hbm.achievement.progress_book.desc=§kСамый секретный секрет +hbm.achievement.progress_book=Книга §kтоварных вагонов +hbm.achievement.progress_centrifuge_1.desc=Центростремительной силы не существует, не п@*дите мне +hbm.achievement.progress_centrifuge_1=Центростремительная сила +hbm.achievement.progress_centrifuge_2.desc=Спрячьте это от ФСБ +hbm.achievement.progress_centrifuge_2=Промышленный ядерный торнадо +hbm.achievement.progress_chemplant.desc=Теперь ты мыслишь химическими элементами! +hbm.achievement.progress_chemplant=Фабрика растёт, ч. 2 +hbm.achievement.progress_cladding_electronium.desc=Радиоактивный слиток против радиации.. +hbm.achievement.progress_cladding_electronium=Лучшее покрытие +hbm.achievement.progress_concrete.desc=Любимец большевиков. +hbm.achievement.progress_concrete=Старый добрый +hbm.achievement.progress_crack.desc=Крекируем нефть ради всяких вещичек +hbm.achievement.progress_crack=Давай займёмся крекингом +hbm.achievement.progress_creative.desc=Теперь ты компетентен в сфере РТС +hbm.achievement.progress_creative=Сертифицированный специалист по РТС +hbm.achievement.progress_crystalizer.desc=Ауч, ауу, моя кожа! +hbm.achievement.progress_crystalizer=Кислотный +hbm.achievement.progress_cyclotron.desc=Теперь мы можем создавать новые химические элементы! +hbm.achievement.progress_cyclotron=Циклотронный +hbm.achievement.progress_desh.desc="Тогда пошли, есть ещё много мест для изучения!" +hbm.achievement.progress_desh=Le Verrier +hbm.achievement.progress_dfc.desc=Звёздный костёр +hbm.achievement.progress_dfc=Зажигаем солнце +hbm.achievement.progress_difurnace.desc=Они спасли затонувший дредноут для исследователя 1. +hbm.achievement.progress_difurnace=Железо и Уголь +hbm.achievement.progress_dineutronium.desc=Ёбаный рот, мы это сделали! +hbm.achievement.progress_dineutronium=ОБОЖЕМОЙ ДИНЕЙТРОНИЙ +hbm.achievement.progress_dosimeter.desc=Твой новый лучший друг +hbm.achievement.progress_dosimeter=Дозиметр +hbm.achievement.progress_excavator.desc=Дорога к богатствам +hbm.achievement.progress_excavator=Дрель здорового человека +hbm.achievement.progress_fensu.desc=Ни слова больше +hbm.achievement.progress_fensu=Внутреннее спокойствие +hbm.achievement.progress_folder.desc=Как может одна папка хранить все механизмы человечества?? +hbm.achievement.progress_folder=Эта штука мудрая +hbm.achievement.progress_fraction.desc=Следующий уровень переработки нефти +hbm.achievement.progress_fraction=Ректификация +hbm.achievement.progress_fusion.desc=Танец дейтерия, трития и энергии. +hbm.achievement.progress_fusion=Синтез +hbm.achievement.progress_geiger.desc=Твой улучшенный лучший друг +hbm.achievement.progress_geiger=Счётчик Гейгера +hbm.achievement.progress_hadron.desc=Вы достигли последних изобретений человечества +hbm.achievement.progress_hadron=Большой адронный коллайдер +hbm.achievement.progress_mask.desc=Неважно, оно высохло +hbm.achievement.progress_mask=Никакой больше угольной пыли +hbm.achievement.progress_modtable.desc=Улучшает людские изобретения +hbm.achievement.progress_modtable=Стол модификаций +hbm.achievement.progress_oil_1.desc=Первый шаг к загрязнению Земли +hbm.achievement.progress_oil_1=Мы нашли нефть +hbm.achievement.progress_oil_2.desc=Следующий уровень выкачивания нефти +hbm.achievement.progress_oil_2=Нам нужно больше! БОЛЬШЕ!! +hbm.achievement.progress_oil_3.desc=Бесконечная НЕФТЬ! +hbm.achievement.progress_oil_3=Разломай этот бедрок! +hbm.achievement.progress_omega_filter.desc=Теперь меня ничто не остановит +hbm.achievement.progress_omega_filter=Один за всех +hbm.achievement.progress_osmiridium.desc=Выкопан из астероида из дигамма-звёздной системы +hbm.achievement.progress_osmiridium=Осмиридиевый сплав +hbm.achievement.progress_pile.desc="Какими были местные?" / "Очень дружелюбными." +hbm.achievement.progress_pile=Штурман высадился в Новом Свете +hbm.achievement.progress_polymer.desc=Микропластик, вкусный и точка. +hbm.achievement.progress_polymer=Тефлон +hbm.achievement.progress_potatos.desc=Ты пырнул меня! Что с тобой не та-АААААААААА +hbm.achievement.progress_potatos=Разбойный ИИ +hbm.achievement.progress_pu239.desc=Ха-ха, смешной мячик, ба-бах +hbm.achievement.progress_pu239=Уровень оружия - плутониевый +hbm.achievement.progress_radium.desc=Брось это в воду +hbm.achievement.progress_radium=Первая ядерная энергия +hbm.achievement.progress_radspice.desc=Ау, горячо... +hbm.achievement.progress_radspice=Слиток из Чернобыля +hbm.achievement.progress_rbmk.desc=Он в бреду, отведите его в палату. +hbm.achievement.progress_rbmk=3.6 Рентген? +hbm.achievement.progress_rbmk_boom.desc=Какова цена лжи? +hbm.achievement.progress_rbmk_boom=Тут 15,000. +hbm.achievement.progress_refinery.desc=Второй шаг к загрязнению земли +hbm.achievement.progress_refinery=Мы переработали нефть +hbm.achievement.progress_schrabidium.desc=Несмотря на всё, я бы не стал смотреть на него слишком долго. +hbm.achievement.progress_schrabidium=Островок стабильности +hbm.achievement.progress_silex.desc=Это круче, чем кажется на первый взгляд, отвечаю. +hbm.achievement.progress_silex=Разделение изотопов +hbm.achievement.progress_singularity_spark.desc=Создай карманный квазар +hbm.achievement.progress_singularity_spark=Мастер Вселенной +hbm.achievement.progress_starmetal.desc=Да. +hbm.achievement.progress_starmetal=XVIII Луна +hbm.achievement.progress_steel.desc=Фундамент нашей империи +hbm.achievement.progress_steel=Сталь +hbm.achievement.progress_u235.desc=Мир или война - выбор за тобой +hbm.achievement.progress_u235=Уровень оружия - урановый +hbm.achievement.radDeath.desc=Мария Кюри изобрела теорию радиации, лечение радиации, и смерть от радиации. +hbm.achievement.radDeath=Ай, радиация! +hbm.achievement.radPoison.desc=Испытай на себе эффект радиационного отравления. hbm.achievement.radPoison=Ура, радиация! -hbm.achievement.radPoison.desc=Пострадать от последствий радиационного отравления. -hbm.achievement.sacrifice=сороцид -hbm.achievement.sacrifice.desc=Столкнись с огнем и живи. +hbm.achievement.sacrifice.desc=Встреть свой страх и живи с ним. +hbm.achievement.sacrifice=Сорорицид +hbm.achievement.selenium.desc=Да. hbm.achievement.selenium=XVIII Луна -hbm.achievement.selenium.desc=Ага. -hbm.achievement.someWounds=Некоторые раны никогда не заживают hbm.achievement.someWounds.desc=Приготовься -hbm.achievement.soyuz=Печеный картофель -hbm.achievement.soyuz.desc=Стань хрустящим. -hbm.achievement.space=Последний фронт-а, забудьте об этом. -hbm.achievement.space.desc=Потерпеть неудачу всеми возможными способами и растратить средства на сумму 90 миллионов долларов. -hbm.achievement.stratum=Пласт -hbm.achievement.stratum.desc=Нажми на тормоза, Миттс. +hbm.achievement.someWounds=Некоторые раны никогда не заживают. +hbm.achievement.soyuz.desc=Позволь Союзу прожарить тебя +hbm.achievement.soyuz=Запечённая картошка +hbm.achievement.space.desc=Провались всеми возможными путями и потеряй 90 миллионов долларов вложений, отправив пони в космос. +hbm.achievement.space=Последний рубеж-ах, забудь об этом +hbm.achievement.stratum.desc=Жми по тормозам, Миттс. +hbm.achievement.stratum=Слой +hbm.achievement.tasteofblood.desc=не является частью каких-либо протоколов тестирования. hbm.achievement.tasteofblood=Вкус крови -hbm.achievement.tasteofblood.desc=не является частью какого-либо протокола испытаний. -hbm.advancement.root=Усовершенствования НТМ -hbm.advancement.root.desc=Достижения для ядерных технологий Hbm. - -info.coil=Сила катушки -info.template_in=Ввод: -info.template_in_p=Вводы: -info.template_out=Выход: -info.template_out_p=Выходы: -info.template_seconds=секунд -info.template_time=Время производства: -info.templatefolder=Создано с помощью %s -item.RPA_boots.name=Сапоги остатков -item.RPA_helmet.name=Шлем остатков -item.RPA_legs.name=Поножи остатков -item.RPA_plate.name=Нагрудник остатков -item.ajr_boots.name=Ботинки Стальных Рейнджеров -item.ajr_helmet.name=Шлем Стальных Рейнджеров -item.ajr_legs.name=Поножи Стальных Рейнджеров -item.ajr_plate.name=Нагрудник Стальных Рейнджеров -item.ajro_boots.name=Ботинки силовой брони AJR -item.ajro_helmet.name=Шлем силовой брони AJR -item.ajro_legs.name=Поножи силовой брони AJR -item.ajro_plate.name=Нагрудник силовой брони AJR -item.alloy_axe.name=Топор из продвинутого сплава -item.alloy_boots.name=Ботинки из продвинутого сплава -item.alloy_helmet.name=Шлем из продвинутого сплава -item.alloy_hoe.name=Мотыга из продвинутого сплава -item.alloy_legs.name=Поножи из продвинутого сплава -item.alloy_pickaxe.name=Кирка из продвинутого сплава -item.alloy_plate.name=Нагрудник из продвинутого сплава -item.alloy_shovel.name=Лопата из продвинутого сплава -item.alloy_sword.name=Меч из продвинутого сплава -item.ammo_12gauge.name=Картечь 12 калибра -item.ammo_12gauge_du.name=Картечь 12 калибра (С урановым покрытием) -item.ammo_12gauge_incendiary.name=Картечь 12 калибра (Зажигательная) +hbm.advancement.root.desc=Так начинается ядерное приключение.. +hbm.advancement.root=NTM Extended +hbm.key.reload=Перезарядить +hbm.key.toggleBack=Включить ранец +hbm.key.toggleHUD=Включить HUD +hbm.key=NTM Hotkeys +hbmfluid.acid=Пероксид водорода +hbmfluid.amat=Антиматерия +hbmfluid.aromatics=Ароматические углеводороды +hbmfluid.aschrab=Антишрабидий +hbmfluid.balefire=Ракетное жар-топливо +hbmfluid.biofuel=Биотопливо +hbmfluid.biogas=Биогаз +hbmfluid.bitumen=Битум +hbmfluid.coolant=Хладагент +hbmfluid.crackoil=Высокоароматизированная нефть +hbmfluid.crackoil=Очищенная нефть +hbmfluid.cryogel=Криогель +hbmfluid.deuterium=Дейтерий +hbmfluid.diesel=Дизель +hbmfluid.experience=Сок из опыта +hbmfluid.gas=Природный газ +hbmfluid.gasoline=Этилированный бензин +hbmfluid.heatingoil=Мазут +hbmfluid.heavyoil=Тяжелая нефть +hbmfluid.heavywater=Тяжёлая вода +hbmfluid.hotcoolant=Горячая охлаждающая жидкость +hbmfluid.hotcrackoil=Горячая высокоароматизированная нефть +hbmfluid.hotoil=Горячая неочищенная нефть +hbmfluid.hotsteam=Горячий пар +hbmfluid.hydrogen=Жидкий водород +hbmfluid.ic2uu_matter=Жидкая материя +hbmfluid.kerosene=Керосин +hbmfluid.lava=Лава +hbmfluid.lightoil=Легкая нефть +hbmfluid.liquid_osmiridium=Осмиридный растворитель +hbmfluid.lubricant=Машинная смазка +hbmfluid.lubricant=Машинная смазка +hbmfluid.mercury=Ртуть +hbmfluid.naphtha=Лигроин +hbmfluid.nitan=100-октановое сверхтопливо NITAN© +hbmfluid.nitric_acid=Азотная кислота +hbmfluid.none=Ничего +hbmfluid.oil=Неочищенная нефть +hbmfluid.oxygen=Жидкий кислород +hbmfluid.pain=Раствор танталита-Пандемониума(III) +hbmfluid.petroil=Бензин +hbmfluid.petroleum=Попутный нефтяной газ +hbmfluid.plasma_bf=Жар-плазма +hbmfluid.plasma_dt=Дейтериево-Тритиевая-плазма +hbmfluid.plasma_hd=Водородно-Дейтериевая-плазма +hbmfluid.plasma_ht=Водородно-Тритиевая-плазма +hbmfluid.plasma_put=Плутониево-тритиевая плазма +hbmfluid.plasma_xm=Ксеноново-Ртутная-плазма +hbmfluid.puf6=Гексафторид плутония +hbmfluid.radiosolvent=Высокоэффективный растворитель +hbmfluid.reclaimed=Очищенное промышленное масло +hbmfluid.sas3=Трисульфид шрабидия +hbmfluid.schrabidic=Шрабидиевая кислота +hbmfluid.schrabidic_fluid=Шрабидиновая кислота +hbmfluid.smear=Промышленное масло +hbmfluid.solvent=Растворитель +hbmfluid.spentsteam=Пар низкого давления +hbmfluid.steam=Пар +hbmfluid.sulfuric_acid=Серная кислота +hbmfluid.superhotsteam=Перегретый пар +hbmfluid.tritium=Тритий +hbmfluid.uf6=Гексафторид урана +hbmfluid.ultrahotsteam=Раскалённый пар +hbmfluid.unsaturateds=Ненасыщенные углеводороды +hbmfluid.wastefluid=Жидкие ядерные отходы +hbmfluid.wastegas=Газовые ядерные отходы +hbmfluid.water=Вода +hbmfluid.watz=Токсичные отходы +hbmfluid.xenon=Ксенон +info.coil=Сила катушки +info.template_in=Ввод: +info.template_in_p=Вводы: +info.template_out=Выход: +info.template_out_p=Выходы: +info.template_seconds=секунд +info.template_time=Время производства: +info.templatefolder=Создано с помощью папки шаблонов +item.RPA_boots.name=Ботинки Анклава +item.RPA_helmet.name=Шлем Анклава +item.RPA_legs.name=Поножи Анклава +item.RPA_plate.name=Нагрудник Анклава +item.ajr_boots.name=Ботинки Стальных Рейнджеров +item.ajr_helmet.name=Шлем Стальных Рейнджеров +item.ajr_legs.name=Поножи Стальных Рейнджеров +item.ajr_plate.name=Нагрудник Стальных Рейнджеров +item.ajro_boots.name=Ботинки силовой брони AJR +item.ajro_helmet.name=Шлем силовой брони AJR +item.ajro_legs.name=Поножи силовой брони AJR +item.ajro_plate.name=Нагрудник силовой брони AJR +item.alloy_axe.name=Топор из продвинутого сплава +item.alloy_boots.name=Ботинки из продвинутого сплава +item.alloy_helmet.name=Шлем из продвинутого сплава +item.alloy_hoe.name=Мотыга из продвинутого сплава +item.alloy_legs.name=Поножи из продвинутого сплава +item.alloy_pickaxe.name=Кирка из продвинутого сплава +item.alloy_plate.name=Нагрудник из продвинутого сплава +item.alloy_shovel.name=Лопата из продвинутого сплава +item.alloy_sword.name=Меч из продвинутого сплава +item.ammo_12gauge.name=Картечь 12 калибра +item.ammo_12gauge_du.name=Картечь 12 калибра (С урановым покрытием) +item.ammo_12gauge_incendiary.name=Картечь 12 калибра (Зажигательная) item.ammo_12gauge_marauder.name=Тактический противомародёрный снаряд 12 калибра item.ammo_12gauge_shrapnel.name=Картечь 12 калибра (Шрапнельная) item.ammo_12gauge_sleek.name=Картечь 12 калибра (IF-R&D) @@ -771,7 +1355,12 @@ item.ammo_9mm_rocket.name=9-мм ракета item.ammo_cell.name=Энерго-патроны item.ammo_container.name=Контейнер с боеприпасами item.ammo_dart.name=Пластиковый дротик (Иссущающий) +item.ammo_dart_nerf.name=Дротик NERF +item.ammo_dart_nuclear.name=Пластиковый дротик (С взрывчаткой) item.ammo_dgk.name=Лента на 200 патронов для CIWS "Говард" +item.ammo_fireext.name=Бак с водой для огнетушителя +item.ammo_fireext_foam.name=Бак с пеной для огнетушителя +item.ammo_fireext_sand.name=Бак с песком для огнетушителя item.ammo_folly.name=Серебряная пуля item.ammo_folly_du.name=Серебряная пуля (ДУ, Не взрывающаяся) item.ammo_folly_nuclear.name=Серебряная пуля (Атомная) @@ -781,12 +1370,12 @@ item.ammo_fuel_napalm.name=Бак с напалмом item.ammo_fuel_phosphorus.name=Бак с белым фосфором item.ammo_fuel_vaporizer.name=Бак испарителя item.ammo_grenade.name=40мм граната -item.ammo_grenade_concussion.name=40мм граната (Concussion) -item.ammo_grenade_finned.name=40мм граната (Finned) +item.ammo_grenade_concussion.name=40мм граната (Контузящая) +item.ammo_grenade_finned.name=40мм граната (Оперённая) item.ammo_grenade_he.name=40мм граната (Фугасная) item.ammo_grenade_incendiary.name=40мм граната (Зажигательная) item.ammo_grenade_kampf.name=40мм-Ракета -item.ammo_grenade_nuclear.name=40мм граната (Привет) +item.ammo_grenade_nuclear.name=40-мм привет item.ammo_grenade_phosphorus.name=40мм граната (БФ) item.ammo_grenade_sleek.name=40мм граната (IF-R&D) item.ammo_grenade_toxic.name=40мм граната (Химическая) @@ -804,6 +1393,7 @@ item.ammo_nuke_safe.name=Ядерный минизаряд (Безопасный item.ammo_nuke_tots.name=Ядерный минизаряд ("Карапуз") item.ammo_rocket.name=84-мм ракета item.ammo_rocket_canister.name=84-мм ракета (Картечь) +item.ammo_rocket_digamma.name=null item.ammo_rocket_emp.name=84-мм ракета (Импульсная) item.ammo_rocket_glare.name=84-мм ракета (Красное Зарево) item.ammo_rocket_he.name=84-мм ракета (Фугасная) @@ -819,9 +1409,6 @@ item.ammo_shell_apfsds_du.name=240мм APFSTS-DU item.ammo_shell_apfsds_t.name=240мм APFSTS-T item.ammo_shell_explosive.name=240мм Фугасный снаряд item.ammo_shell_w9.name=240мм Ядерный снаряд W9 - -#AMS/DFC - item.ams_catalyst_aluminium.name=Алюминиевый реакционный катализатор item.ams_catalyst_beryllium.name=Бериллиевый реакционный катализатор item.ams_catalyst_blank.name=Пустой реакционный катализатор @@ -838,28 +1425,25 @@ item.ams_catalyst_schrabidium.name=Шрабидиевый реакционный item.ams_catalyst_strontium.name=Стронциевый реакционный катализатор item.ams_catalyst_thorium.name=Ториевый реакционный катализатор item.ams_catalyst_tungsten.name=Вольфрамовый реакционный катализатор -item.ams_core_eyeofharmony.name=Око Гармонии (АМС/РТС Ядро) +item.ams_core_eyeofharmony.name=Око гармонии (АМС/РТС Ядро) item.ams_core_sing.name=Резонирующая сингулярность (АМС/РТС Ядро) item.ams_core_thingy.name=Штуковина (АМС/РТС Ядро) item.ams_core_wormhole.name=Крошечная червоточина (АМС/РТС Ядро) item.ams_focus_blank.name=Пустой стабилизирующий фокус -item.ams_focus_omega.name=Стабилизирующий ОМЕГА фокус item.ams_focus_booster.name=Усиливающий стабилизирующий фокус item.ams_focus_limiter.name=Ограничительный стабилизирующий фокус -item.ams_lens.name=Стабилизирующий фокус +item.ams_focus_omega.name=НЕИЗВЕСТНЫЙ стабилизирующий фокус +item.ams_lens.name=Линза стабилизатора item.ams_muzzle.name=Лучеиспускательное дуло - - - item.analyzer.name=Анализатор item.antiknock.name=Антидетонационное средство на основе Тетраэтилсвинца -item.apple_euphemium.name=Эвфемиевое Яблоко +item.apple_euphemium.name=Эвфемиевое яблоко item.apple_lead.name=Свинцовое яблоко item.apple_lead1.name=Свинцовое яблоко item.apple_lead2.name=Свинцовое яблоко -item.apple_schrabidium.name=Шрабидиевое Яблоко -item.apple_schrabidium1.name=Шрабидиум яблоко -item.apple_schrabidium2.name=Шрабидиум яблоко +item.apple_schrabidium.name=Шрабидиевое яблоко +item.apple_schrabidium1.name=Шрабидиевое яблоко +item.apple_schrabidium2.name=Шрабидиевое яблоко item.arc_electrode.name=Графитовый электрод item.arc_electrode_burnt.name=Расплавленный электрод item.arc_electrode_desh.name=Электрод из деш @@ -896,6 +1480,9 @@ item.back_tesla.name=Ранцевая катушка теслы item.balefire_and_ham.name=Ветчина и жар-яйца item.balefire_and_steel.name=Жар-огниво item.balefire_scrambled.name=Жар-яичница +item.ball_dynamite.name=Шарик динамита +item.ball_fireclay.name=Огнеупорная глина +item.ball_tnt.name=ТНТ item.ballistite.name=Баллистит item.bandaid.name=Пластырь Вельвет item.bathwater.name=Токсичная мыльная вода @@ -917,84 +1504,86 @@ item.battery_red_cell.name=Энергоячейка из красной пыли item.battery_red_cell_24.name=Двадцатичетырёхкратный массив из краснопыльных энергоячеек item.battery_red_cell_6.name=Сшестёренная энергоячейка из красной пыли item.battery_sc_americium.name=Самозарядная батарея с америцием-241 -item.battery_sc_balefire.name=Самозаряжающийся аккумулятор с жар-осколком-XXX +item.battery_sc_balefire.name=Самозарядная батарея ЖАР-XXX item.battery_sc_gold.name=Самозарядная батарея с золотом-198 -item.battery_sc_lead.name=Самозаряжающийся аккумулятор с свинцом-209 +item.battery_sc_lead.name=Самозарядная батарея со свинцом-209 item.battery_sc_plutonium.name=Самозарядная батарея с плутонием-238 item.battery_sc_polonium.name=Самозарядная батарея с полонием-210 +item.battery_sc_schrabidium.name=Самозарядная батарея со шрабидием-326 item.battery_sc_technetium.name=Самозарядная батарея с технецием-98 item.battery_sc_uranium.name=Самозарядная батарея с ураном-238 +item.battery_sc_yharonite.name=Самозарядная батарея с яхаронитом item.battery_schrabidium.name=Шрабидиевая батарея item.battery_schrabidium_cell.name=Шрабидиевая энергоячейка item.battery_schrabidium_cell_2.name=Сдвоенная шрабидиевая энергоячейка item.battery_schrabidium_cell_4.name=Счетверённая шрабидиевая энергоячейка -item.battery_spark.name=§dСпарк-батарея -item.battery_spark_cell_100.name=§dСпарк-Магический массив хранения энергии -item.battery_spark_cell_1000.name=§dСпарк-Магическая масс-энергетическая пустота -item.battery_spark_cell_10000.name=§dУстойчивый пространственно-временной спарк-кристалл -item.battery_spark_cell_25.name=§dСпарк-Магический аккумулятор -item.battery_spark_cell_2500.name=§dСпарк-Магическое море Дирака -item.battery_spark_cell_6.name=§dСпарк-энергоячейка -item.battery_spark_cell_power.name=§dАбсурдный физический спарк-блок накопления энергии +item.battery_spark.name=Спарк-батарея +item.battery_spark_cell_100.name=Спарк-Магический массив хранения энергии +item.battery_spark_cell_1000.name=Спарк-Магическая масс-энергетическая пустота +item.battery_spark_cell_10000.name=Устойчивый пространственно-временной спарк-кристалл +item.battery_spark_cell_25.name=Спарк-Магический аккумулятор +item.battery_spark_cell_2500.name=Спарк-Магическое море Дирака +item.battery_spark_cell_6.name=Спарк-энергоячейка +item.battery_spark_cell_power.name=Абсурдный физический спарк-блок накопления энергии item.battery_steam.name=Паровой бак для хранения энергии item.battery_steam_large.name=Большой паровой бак для хранения энергии item.battery_su.name=Одноразовая батарейка item.battery_su_l.name=Большая одноразовая батарейка item.battery_trixite.name=Безымянная спарк-батарея -item.beta.name=БЕТА-ФУНКЦИЯ +item.beta.name=БЕТА-ФУНКЦИИ item.big_sword.name=Большой меч -item.billet_ac227.name=Заготовка актиния-227 +item.billet_ac227.name= Заготовка Актиния-227 item.billet_am241.name=Заготовка америция-241 item.billet_am242.name=Заготовка америция-242 item.billet_am_mix.name=Заготовка америция реакторного качества item.billet_americium_fuel.name=Заготовка америциевого топлива item.billet_au198.name=Заготовка золота-198 -item.billet_australium.name=§6Заготовка австралия -item.billet_australium_greater.name=§6Заготовка высшего австралия -item.billet_australium_lesser.name=§6Заготовка низшего австралия +item.billet_australium.name=Заготовка австралия +item.billet_australium_greater.name=Заготовка высшего австралия +item.billet_australium_lesser.name=Заготовка низшего австралия item.billet_balefire_gold.name=Заготовка флэшголда -item.billet_beryllium.name=Заготовка бериллия -item.billet_bismuth.name=Заготовка висмута +item.billet_beryllium.name=Бериллиевая заготовка +item.billet_bismuth.name=Висмутовая заготовка item.billet_co60.name=Заготовка кобальта-60 -item.billet_flashlead.name=Заготовка флэш-свинца -item.billet_gh336.name=Заготовка гиорзиума-336 +item.billet_flashlead.name=Заготовка флеш-свинца +item.billet_gh336.name=Заготовка Гиорзиума-336 item.billet_hes.name=Заготовка высокообогащенного шрабидиевого топлива item.billet_les.name=Заготовка низкообогащенного шрабидиевого топлива item.billet_mox_fuel.name=Заготовка МОКС-топлива item.billet_neptunium.name=Заготовка нептуния item.billet_neptunium_fuel.name=Заготовка нептуниевого топлива item.billet_nuclear_waste.name=Заготовка ядерных отходов -item.billet_pb209.name=Заготовка свинца-209 +item.billet_pb209.name= Заготовка из свинца-209 item.billet_plutonium.name=Заготовка плутония item.billet_plutonium_fuel.name=Заготовка плутониевого топлива -item.billet_po210be.name=Заготовка Полоний-210-Бериллия +item.billet_po210be.name=Заготовка полония-210-Бериллия item.billet_polonium.name=Заготовка полония-210 item.billet_pu238.name=Заготовка плутония-238 -item.billet_pu238be.name=Заготовка Плутоний-210-Бериллия +item.billet_pu238be.name=Плутоний-210-бериллиевая заготовка item.billet_pu239.name=Заготовка плутония-239 item.billet_pu240.name=Заготовка плутония-240 item.billet_pu241.name=Заготовка плутония-241 item.billet_pu_mix.name=Заготовка плутония реакторного качества item.billet_ra226.name=Заготовка радия-226 -item.billet_ra226be.name=Заготовка Радий-226-Бериллия +item.billet_ra226be.name=Радий-226-Бериллиевая заготовка item.billet_schrabidium.name=Заготовка шрабидия item.billet_schrabidium_fuel.name=Заготовка шрабидиевого топлива -item.billet_solinium.name=Заготовка солиния -item.billet_sr90.name=Заготовка стронция-90 +item.billet_solinium.name=Солиниевая заготовка +item.billet_sr90.name=Заготовка Стронция-90 item.billet_technetium.name=Заготовка технеция-99 item.billet_th232.name=Заготовка тория-232 item.billet_thorium_fuel.name=Заготовка ториевого топлива item.billet_u233.name=Заготовка урана-233 item.billet_u235.name=Заготовка урана-235 item.billet_u238.name=Заготовка урана-238 -item.billet_unobtainium.name=Унобтаниумовая нейтронная заготовка -item.billet_uranium.name=Заготовка урана +item.billet_unobtainium.name=Унобтаниево-нейтронная заготовка +item.billet_uranium.name=Урановая заготовка item.billet_uranium_fuel.name=Заготовка уранового топлива -item.billet_yharonite.name=§dЗаготовка ихаронита -item.billet_zfb_am_mix.name=Заготовка америция ZFB -item.billet_zfb_bismuth.name=Заготовка висмута ZFB -item.billet_zfb_pu241.name=Заготовка плутония-241 ZFB -item.billet_zirconium.name=Заготовка циркония +item.billet_yharonite.name=Заготовка яронита +item.billet_zfb_am_mix.name=Америциевая ЦБР-заготовка +item.billet_zfb_bismuth.name=Висмутовая ЦБР-заготовка +item.billet_zfb_pu241.name=Пу-241 ЦБР-заготовка +item.billet_zirconium.name=Циркониевая заготовка item.bio_wafer.name=Био Вафли item.biomass.name=Биомасса item.biomass_compressed.name=Сжатая биомасса @@ -1007,7 +1596,7 @@ item.bj_plate.name=Лунная кибернетическая обшивка item.bj_plate_jetpack.name=Лунная кибернетическая обшивка (с крыльями) item.black_diamond.name=Чёрный алмаз item.black_hole.name=Миниатюрная чёрная дыра -item.blade_meteorite.name=Метеоритовое лезвие +item.blade_meteorite.name=Метеоритное лезвие item.blade_titanium.name=Титановая лопость item.blade_tungsten.name=Усиленная вольфрамом лопасть item.blades_advanced_alloy.name=Усовершенствованные лезвия измельчителя @@ -1031,12 +1620,13 @@ item.bolt_dura_steel.name=Высокоскоростной стальной ст item.bolt_tungsten.name=Вольфрамовый стержень item.bomb_caller.name=Устройство для обозначения авиаудара item.bomb_waffle.name=Вафля массового поражения +item.book_guide.name=Руководство item.book_guide_book.name=Путеводитель item.book_of_.name=Книга Вагонов item.book_secret.name=3-596-50802-9 -item.bottle2_empty.name=Пустая Бутылка -item.bottle2_fritz.name=Фрицз-Кола -item.bottle2_fritz_special.name=Первая Фрицз-Кола +item.bottle2_empty.name=Пустая бутылка +item.bottle2_fritz.name=Фриц-Кола +item.bottle2_fritz_special.name=Первая Фриц-Кола item.bottle2_korl.name=Корл item.bottle2_korl_special.name=Первый Корл item.bottle2_sunset.name=Сансет Сарсапарилла @@ -1057,6 +1647,7 @@ item.boy_target.name=Субкритическая цель U235 item.briquette_lignite.name=Брикет бурого угля item.bucket_acid.name=Ведро кислоты item.bucket_mud.name=Ведро токсичных отходов +item.bucket_schrabidic_acid.name=Ведро шрабидиевой кислоты item.bucket_toxic.name=Ведро стереотипной зелёной слизи item.burnt_bark.name=Обожженная кора item.can_bepis.name=Бепис @@ -1069,10 +1660,12 @@ item.can_mrsugar.name=Безалкогольный напиток 'Доктор item.can_overcharge.name=Перезарядка Delirium XT item.can_redbomb.name=Энергетический напиток "Красная Бомба" item.can_smart.name=Энергетический напиток “Смарт” +item.canister_NITAN.name=100-октановое сверхтопливо NITAN© item.canister_biofuel.name=Канистра с биотопливом item.canister_bitumen.name=Канистра с битумом -item.canister_canola.name=Машинная смазка +item.canister_canola.name=Канистра с машинной смазкой item.canister_empty.name=Пустая канистра +item.canister_fracksol.name=Канистра с гидроразрывающим растворителем item.canister_fuel.name=Канистра с дизелем item.canister_gasoline.desc=свинец - это друг$впусти друга в свой кровоток$*достаёт пистолет* живо. item.canister_gasoline.name=Канистра с этилированным бензином @@ -1080,8 +1673,8 @@ item.canister_heatingoil.name=Канистра с мазутом item.canister_heavyoil.name=Канистра с тяжелой нефтью item.canister_kerosene.name=Канистра с керосином item.canister_lightoil.name=Канистра с лёгкой нефтью -item.canister_napalm.name=Напалм Б -item.canister_naphtha.name=Канистра тяжелого бензина +item.canister_napalm.name=Канистра с напалмом Б +item.canister_naphtha.name=Канистра с тяжёлым бензином item.canister_oil.name=Канистра с неочищенной нефтью item.canister_petroil.name=Канистра с бензином item.canister_reoil.name=Канистра с восстановленным промышленным маслом @@ -1136,6 +1729,13 @@ item.cape_nostalgia.name=DrNostalgia's Cape item.cape_radiation.name=Плащ (Радиация) item.cape_schrabidium.name=Плащ (Шрабидий) item.cape_vertice.name=Lord Vertice's Cape +item.capsule_empty.name=Пустая капсула для опасных материй +item.capsule_hole_tiny.name=Крошечная черная дыра +item.capsule_sing_counter_tiny.name=Крошечная заключённая контр-резонансная сингулярность +item.capsule_sing_spark_tiny.name=Крошечный квазар +item.capsule_sing_super_tiny.name=Крошечная перегретая резонирующая сингулярность +item.capsule_sing_tiny.name=Крошечная сингулярность +item.capsule_xen.name=Заключённый зен-кристалл item.casing_357.name=Гильза Магнума .357(x24) item.casing_44.name=Гильза Магнума .44 (x24) item.casing_50.name=Крупнокалиберная Гильза (x12) @@ -1146,6 +1746,7 @@ item.cbt_device.name=CBT-девайс item.cc_plasma_gun.name=[WIP] Плазменная пушка CC item.cell_anti_schrabidium.name=Пробирка с антишрабидием item.cell_antimatter.name=Пробирка с антиматерией +item.cell_balefire.name=Пробирка с газообразным жар-пламенем item.cell_deuterium.name=Пробирка с дейтерием item.cell_empty.name=Пустая пробирка item.cell_puf6.name=Пробирка с гексафторидом плутония @@ -1156,7 +1757,8 @@ item.centri_stick.name=Центрифуга на палке item.centrifuge_element.name=Элемент центрифуги item.centrifuge_tower.name=Башня центрифуги item.chainsaw.name=Бензопила -item.charge_railgun.name=Плазменная дейтериевая капсула +item.charge_railgun.name=Плазменная капсула дейтерия +item.cheese.name=Сыр item.chemistry_template.name=Шаблон химической машины: item.chernobylsign.name=Боевой топор из Чернобыльского предупреждающего знака item.chlorine_pinwheel.name=Хлорная вертушка @@ -1171,6 +1773,8 @@ item.chopper_torso.name=Корпус Вертолёта-охотника item.chopper_wing.name=Крыло Вертолета-охотника item.cinnebar.name=Киноварь item.circuit_aluminium.name=Простая микросхема +item.circuit_arsenic.name=Адаптивный чипсет +item.circuit_arsenic_raw.name=Сборка адаптивного чипсета item.circuit_bismuth.name=Универсальный чипсет item.circuit_bismuth_raw.name=Сборка универсального чипсета item.circuit_copper.name=Продвинутая микросхема @@ -1186,15 +1790,15 @@ item.circuit_targeting_tier3.name=Печатная плата военного item.circuit_targeting_tier4.name=Печатная плата военного класса (Уровень 4) item.circuit_targeting_tier5.name=Печатная плата военного класса (Уровень 5) item.circuit_targeting_tier6.name=Печатная плата военного класса (Уровень 6) -item.cladding_desh.name=Деш обшивка -item.cladding_euphemium.name=§dЭвфемовая обшивка§r -item.cladding_di.name=Динейтрониевая обшивка +item.cladding_desh.name=Обшивка из деш +item.cladding_di.name=Динейтрониевая оболочка item.cladding_electronium.name=Электрониевая оболочка -item.cladding_ghiorsium.name=Гиорзиумовая обшивка +item.cladding_euphemium.name=Эвфемиевая обшивка +item.cladding_ghiorsium.name=Гиорсимовая обшивка item.cladding_iron.name=Железная обшивка item.cladding_lead.name=Свинцовая обшивка item.cladding_obsidian.name=Обсидиановая прокладка -item.cladding_paa.name=Обшивка из сплава PaA +item.cladding_paa.name=Плакирование сплава PaA item.cladding_paint.name=Свинцовая краска item.cladding_rubber.name=Резиновая обшивка item.clip_bf.name=Двойной Набор BF-снарядов @@ -1252,6 +1856,8 @@ item.cobalt_pickaxe.name=Кобальтовая кирка item.cobalt_plate.name=Кобальтовый нагрудник item.cobalt_shovel.name=Кобальтовая лопата item.cobalt_sword.name=Кобальтовый меч +item.coffee.name=Кофе +item.coffee_radium.name=Кофе с радием item.coil_advanced_alloy.name=Сверхпроводящая катушка item.coil_advanced_torus.name=Сверхпроводящая закольцованная катушка item.coil_copper.name=Медная катушка @@ -1261,12 +1867,13 @@ item.coil_gold_torus.name=Золотая закольцованная катуш item.coil_magnetized_tungsten.name=4000K Высокотемпературная сверхпроводящая катушка item.coil_tungsten.name=Нагревательный элемент item.coin_creeper.name=Монета Ядерного крипера -item.coin_maskman.name=Монета Маскмена +item.coin_maskman.name=Монета Человека в противогазе item.coin_radiation.name=Монета Радиации item.coin_siege.name=Монета осады item.coin_ufo.name=Монета НЛО -item.coin_worm.name=Монета Баллс-О-Трон +item.coin_worm.name=Монета Баллс-О-Трона item.coke.name=Коксовый уголь +item.coltan_tool.name=Колтасс item.coltass.name=Колтасс item.combine_scrap.name=CMB-металлолом item.component_emitter.name=Компонент излучателя @@ -1293,6 +1900,7 @@ item.crystal_lapis.name=Кристализованный лазурит item.crystal_lead.name=Кристаллизованный свинец item.crystal_lithium.name=Кристализованный литий item.crystal_niter.name=Кристаллизованная селитра +item.crystal_osmiridium.name=Кристаллизованный осмиридий item.crystal_phosphorus.name=Кристаллизованный фосфор item.crystal_plutonium.name=Кристаллизованный плутоний item.crystal_rare.name=Кристализованные лантаноиды @@ -1307,13 +1915,16 @@ item.crystal_trixite.name=Кристаллизованный триксит item.crystal_tungsten.name=Кристаллизованный вольфрам item.crystal_uranium.name=Кристаллизованный уран item.crystal_xen.name=Искусственный кристалл Зена +item.cube_power.name=Куб электрония item.custom_amat.name=Антивещественный заряд кастомной бомбы item.custom_dirty.name=Грязный заряд кастомной бомбы +item.custom_euph.name=Эвфемиевый заряд кастомной бомбы item.custom_fall.name=Улучшение кастомной бомбы (Удар с неба) item.custom_hydro.name=Водородный заряд кастомной бомбы item.custom_kit.name=Комплект Пользовательской бомбы item.custom_nuke.name=Ядерный заряд кастомной бомбы item.custom_schrab.name=Шрабидиевый заряд кастомной бомбы +item.custom_sol.name=Солиниевый заряд кастомной бомбы item.custom_tnt.name=Взрывной заряд кастомной бомбы item.cyclotron_tower.name=Башня циклотрона item.debris_fuel.name=Часть топливного стержня РБМК @@ -1322,6 +1933,7 @@ item.debris_metal.name=Покорёженная металлическая ба item.decontamination_module.name=Модуль обеззараживания item.definitelyfood.name=ИРП марки “ТочноНеГрязь” item.defuser.name=Высокотехнологичное устройство для разминирования +item.defuser_desh.name=Высокотехнологичное устройство для разминирования из деша item.demon_core_closed.name=Закрытый Заряд-Демон item.demon_core_open.name=Приостановленный Заряд-Демон item.desh_axe.name=Топор из рабочего сплава @@ -1337,7 +1949,9 @@ item.detonator_de.name=Взрывчатка мертвеца item.detonator_deadman.name=Детонатор мертвеца item.detonator_laser.name=Лазерный детонатор item.detonator_multi.name=Мульти-детонатор +item.deuterium_filter.name=Дейтериевый фильтр item.diamond_gavel.name=Алмазный молоток +item.digamma_diagnostic.name=Диагностика дигаммы item.dns_boots.name=Ботинки DNT Нанокостюма item.dns_helmet.name=Шлем DNT Нанокостюма item.dns_legs.name=Поножи DNT Нанокостюма @@ -1354,18 +1968,30 @@ item.drax.name=Терра-бур item.drax_mk2.name=Усиленный терра-бур item.drax_mk3.name=Шрабидиевый терра-бур item.drill_titanium.name=Титановый бур -item.ducc.name=Утка +item.drillbit_desh.name=Головка бура из деша +item.drillbit_desh_diamond.name=Головка бура из деша (покрытая алмазом) +item.drillbit_dnt.name=Динейтрониевая головка бура +item.drillbit_dnt_diamond.name=Динейтрониевая головка бура (покрытая алмазом) +item.drillbit_ferro.name=Головка бура из ферроурана +item.drillbit_ferro_diamond.name=Головка бура из ферроурана (покрытая алмазом) +item.drillbit_hss.name=Головка бура из высокоскоростной стали +item.drillbit_hss_diamond.name=Головка бура из высокоскоростной стали (покрытая алмазом) +item.drillbit_steel.name=Стальная головка бура +item.drillbit_steel_diamond.name=Стальная головка бура (покрытая алмазом) +item.drillbit_tcalloy.name=Технециевая головка бура +item.drillbit_tcalloy_diamond.name=Технециевая головка бура (покрытая алмазом) +item.ducc.name=дукк item.ducttape.name=Скотч item.dust.name=Пыль item.dynosphere_base.name=Шаблон Диносферы item.dynosphere_desh.name=Диносфера из деш -item.dynosphere_desh_charged.name=Диносфера из деш §e(Заряженная) +item.dynosphere_desh_charged.name=Диносфера из деш (Заряженная) item.dynosphere_dineutronium.name=Динейтрониевая диносфера -item.dynosphere_dineutronium_charged.name=Динейтрониевая диносфера §e(Заряженная) -item.dynosphere_euphemium.name=§dЭвфемиевая диносфера§r -item.dynosphere_euphemium_charged.name=§dЭвфемиевая диносфера§r §e(Заряженная) +item.dynosphere_dineutronium_charged.name=Динейтрониевая диносфера (Заряженная) +item.dynosphere_euphemium.name=Эвфемиевая диносфера +item.dynosphere_euphemium_charged.name=Эвфемиевая диносфера (Заряженная) item.dynosphere_schrabidium.name=Шрабидиевая диносфера -item.dynosphere_schrabidium_charged.name=Шрабидиевая диносфера §e(Заряженная) +item.dynosphere_schrabidium_charged.name=Шрабидиевая диносфера (Заряженная) item.dysfunctional_reactor.name=Нерабочий ядерный реактор item.egg_balefire.desc=Какая птица откладывает радиоактивные яйца? item.egg_balefire.name=Жар-яйцо @@ -1377,6 +2003,7 @@ item.elec_sword.name=Электродубинка item.energy_core.name=Импровизированный энергоблок item.entanglement_kit.name=Комплект для квантового запутывания item.euphemium_boots.name=Эвфемиевые ботинки +item.euphemium_capacitor.name=Эвфемиевый конденсатор item.euphemium_helmet.name=Эвфемиевый шлем item.euphemium_kit.name=Эвфемиевый комплект item.euphemium_legs.name=Эвфемиевые поножи @@ -1385,7 +2012,8 @@ item.euphemium_stopper.name=Ограничитель item.fabsols_vodka.name=Водка Fabsol'а item.factory_core_advanced.name=Энергетический кластер усовершенствованной фабрики item.factory_core_titanium.name=Энергетический кластер базовой фабрики -item.falloutitem.name=Куча Fallout +item.fallout.name=Куча радиоактивных осадков +item.falloutitem.name=Куча радиоактивных осадков item.fau_boots.name=Фау-ботинки item.fau_helmet.name=Фау-шлем item.fau_legs.name=Фау-поножи @@ -1402,15 +2030,17 @@ item.flame_conspiracy.name=Конспирологическая теория item.flame_opinion.name=Собственное мнение item.flame_politics.name=Политическая тема item.flame_pony.name=Картинка цветной лошади -item.fleija_core.name=Заряд F.L.E.I.J.A. из урана 235 +item.fleija_core.name=Заряд F.L.E.I.J.A. из урана-235 item.fleija_igniter.name=Импульсный воспламенитель item.fleija_kit.name=Комплект F.L.E.I.J.A. item.fleija_propellant.name=Шрабидиевая взрывчатка item.fluid_barrel_empty.name=Пустая бочка для жидкости +item.fluid_barrel_empty.name=Пустая бочка для жидкости item.fluid_barrel_full.name=Жидкостная бочка: item.fluid_barrel_infinite.name=Бесконечная жидкостная бочка item.fluid_duct.name=Жидкостная труба: item.fluid_identifier.name=Идентификатор жидкости +item.fluid_tank_empty.name=Пустая универсальная банка для жидкости item.fluid_tank_empty.name=Пустой универсальный резервуар для жидкости item.fluid_tank_full.name=Универсальный резервуар для жидкости: item.fluorite.name=Флюорит @@ -1447,15 +2077,24 @@ item.gadget_explosive8.name=Связка взрывчатки первого п item.gadget_kit.name=Комплект Гаджета item.gadget_wireing.name=Провода item.gas_biogas.name=Баллон с биогазом +item.gas_deuterium.name=Баллон с дейтериевым газом item.gas_empty.name=Пустой газовый баллон item.gas_full.name=Газовый баллон +item.gas_hydrogen.name=Баллон с водородом item.gas_mask.name=Противогаз item.gas_mask_filter.name=Фильтр противогаза +item.gas_mask_filter_combo.name=Комбинированный фильтр для противогаза item.gas_mask_filter_mono.name=Каталитический фильтр маски +item.gas_mask_filter_piss.name=Самодельный продвинутый фильтр для противогаза +item.gas_mask_filter_radon.name=Омега-фильтр для противогаза +item.gas_mask_filter_rag.name=Самодельный фильтр для противогаза item.gas_mask_m65.name=Противогаз M65-Z item.gas_mask_mono.name=Полумаска +item.gas_mask_olde.name=Кожаный противогаз +item.gas_oxygen.name=Баллон с кислородом item.gas_petroleum.name=Баллон с попутным газом -item.geiger_counter.name=Ручной Счетчик Гейгера +item.gas_tritium.name=Баллон с тритиевым газом +item.geiger_counter.name=Ручной счетчик Гейгера item.gem_tantalium.name=Поликристалл тантала item.gem_volcanic.name=Вулканический драгоценный камень item.generator_front.name=Перед генератора @@ -1505,25 +2144,26 @@ item.grenade_smart.name=Смарт-граната item.grenade_solinium.name=Солиниевая граната item.grenade_strong.name=Усовершенствованная граната item.grenade_tau.name=Тау-Граната -item.grenade_zomg.name=Граната аннигиляции пар отрицательной энергии +item.grenade_zomg.name=Аннигилирующая граната, содержащая анти-энергию item.gun_ar15.name="Джош" item.gun_avenger.name=CZ57 “Авенджер” item.gun_b92.name=§9Энергетический бластер B92§r -item.gun_b92_ammo.name=§9Энергетический Элемент B92§r +item.gun_b92_ammo.name=§9Энергетический элемент B92§r item.gun_b93.name=§cМодифицированный бластер B93§r -item.gun_bf.name=BЕLLа +item.gun_bf.name=BEL item.gun_bf_ammo.name=Жар-снаряд -item.gun_bolt_action.name=Винтовка со скользящим затвором(Оригинал) +item.gun_bolt_action.name=Винтовка со скользящим затвором (оригинал) item.gun_bolt_action_ammo.name=Пуля 12x74 калибра (LEGACY) -item.gun_bolt_action_green.name=Винтовка со скользящим затвором (Зелёный) +item.gun_bolt_action_green.name=Винтовка со скользящим затвором (зелёный) item.gun_bolt_action_saturnite.name=Сатурнитовая винтовка item.gun_bolter.name=Болтер +item.gun_bolter_digamma.name=Дигамма пушка item.gun_calamity.name=Каламити item.gun_calamity_ammo.name=Кал. 50 (LEGACY) item.gun_calamity_dual.name=Боевое седло item.gun_cryolator.name=Криолятор item.gun_cryolator_ammo.name=Криоэлемент -item.gun_dampfmaschine.name=§cСовершенно §eне §aшуточное §9оружие §d[WIP] +item.gun_dampfmaschine.name=Совершенно не шуточное оружие item.gun_darter.name=Дротиковый пистолет item.gun_deagle.name=Биг Айрон item.gun_defabricator.name=Дефабрикатор @@ -1535,6 +2175,7 @@ item.gun_euthanasia.name=Эвтаназия item.gun_euthanasia_ammo.name=Шприцы item.gun_fatman.name=М42 Атомная катапульта "Толстяк" item.gun_fatman_ammo.name=Ядерный минизаряд (LEGACY) +item.gun_fireext.name=Огнетушитель item.gun_flamer.name=Мистер Топаз item.gun_flechette.name=Игольчатая винтовка item.gun_folly.name=Прототип Дигамма "Причуда" @@ -1543,7 +2184,7 @@ item.gun_hp.name=HPP Лазерджет item.gun_hp_ammo.name=Чернильный картридж item.gun_immolator.name=Иммолятор item.gun_immolator_ammo.name=Топливо Иммолатора -item.gun_jack.name=Джекхаммер +item.gun_jack.name=Отбойный молоток item.gun_jack_ammo.name=Снаряд для четырехствольного дробовика item.gun_jshotgun.name=Оккультный дробовик item.gun_karl.name=Карл @@ -1565,6 +2206,7 @@ item.gun_mp.name=Пулемет Пацифистов item.gun_mp40.name=Пистолет-пулемёт item.gun_mp40_ammo.name=Патрон Для Пистолета-Пулемета (LEGACY) item.gun_mp_ammo.name=Малый беспропеллентовый пулемётный патрон +item.gun_mymy.name=Ньетес item.gun_osipr.name=Импульсная винтовка Патруля item.gun_osipr_ammo.name=Импульсные патроны item.gun_osipr_ammo2.name=Энергетический шар Комбайнов @@ -1605,6 +2247,7 @@ item.gun_spark_ammo.name=Электромагнитный картридж item.gun_stinger.name=FIM-92 "Стингер" item.gun_stinger_ammo.name=Ракета-Стингер item.gun_super_shotgun.name=Супердробовик +item.gun_supershotgun.name=Супердробовик item.gun_thompson.name=Пистолет-пулемёт Томпсона item.gun_uboinik.name=Убойник item.gun_uboinik_ammo.name=Дробь 12x70 калибра (LEGACY) @@ -1618,6 +2261,7 @@ item.gun_xvl1456.name=Прототип Тау-пушки XVL1456 item.gun_xvl1456_ammo.name=Ящик с Обедненным Ураном-235 item.gun_zomg.name=ZOMG-пушка item.hand_drill.name=Ручная дрель +item.hand_drill_desh.name=Ручная дрель из деша item.hazmat_boots.name=Защитные ботинки item.hazmat_boots_grey.name=Высокоэффективные защитные ботинки item.hazmat_boots_red.name=Улучшенный защитные ботинки @@ -1668,7 +2312,9 @@ item.inf_sulfur.name=Бесконечный резервуар серы item.inf_tritium.name=Бесконечный резервуар с тритием item.inf_water.name=Бесконечный резервуар воды item.inf_water_mk2.name=Промышленный бесконечный резервуар воды -item.ingot_ac227.name=Актиний-227 Слиток +item.inf_water_mk3.name=Огромный бесконечный резервуар воды +item.inf_water_mk4.name=Гигантский бесконечный резервуар воды +item.ingot_ac227.name=Слиток Актиния-227 item.ingot_actinium.name=Полустабильный слиток актиния item.ingot_advanced_alloy.name=Слиток продвинутого сплава item.ingot_aluminium.name=Алюминиевый слиток @@ -1676,14 +2322,20 @@ item.ingot_am241.name=Слиток америция-241 item.ingot_am242.name=Слиток америция-242 item.ingot_am_mix.name=Слиток америция реакторного качества item.ingot_americium_fuel.name=Слиток америциевого топлива +item.ingot_arsenic.name=Арсениковый слиток item.ingot_asbestos.name=Асбестовый лист +item.ingot_astatine.name=Астатиновый слиток item.ingot_au198.name=Слиток золота-198 -item.ingot_australium.name=§6Австралиевый слиток +item.ingot_australium.name=Австралиевый слиток +item.ingot_bakelite.name=Слиток бакелита item.ingot_beryllium.name=Бериллевый слиток item.ingot_bismuth.name=Слиток висмута item.ingot_boron.name=Борный слиток item.ingot_bromine.name=Бромный слиток +item.ingot_c4.name=Брикет взрывчатки C-4 +item.ingot_cadmium.name=Кадмиевый слиток item.ingot_caesium.name=Слиток цезия +item.ingot_cdalloy.name=Слиток кадмиевой стали item.ingot_cerium.name=Слиток церия item.ingot_chainsteel.name=Тяжёлая цепная сталь item.ingot_co60.name=Слиток кобальта-60 @@ -1696,23 +2348,26 @@ item.ingot_dineutronium.name=Динейтрониевый слиток item.ingot_dura_steel.name=Высокоскоростная сталь item.ingot_electronium.name=Электрониевый слиток item.ingot_euphemium.name=Эвфемиевый слиток +item.ingot_ferrouranium.name=Слиток ферроурана item.ingot_fiberglass.name=Стекловолокно -item.ingot_gh336.name=Гиорзиум-336 Слиток +item.ingot_firebrick.name=Огнеупорный кирпич +item.ingot_gh336.name=Слиток Гиорзиума-336 item.ingot_graphite.name=Графитовый слиток item.ingot_hes.name=Высокообогащенный слиток шрабидиевого топлива -item.ingot_i131.name=Йод-131 Слиток +item.ingot_i131.name=Слиток Йода-131 item.ingot_iodine.name=Йодный слиток item.ingot_lanthanium.name=Полустабильный слиток лантана item.ingot_lead.name=Свинцовый слиток item.ingot_les.name=Низкообогащенный слиток шрабидиевого топлива item.ingot_magnetized_tungsten.name=Намагниченный слиток вольфрама -item.ingot_meteorite.name=Метеоритовый слиток -item.ingot_meteorite_forged.name=Выкованный метеоритовый слиток +item.ingot_meteorite.name=Метеоритный слиток +item.ingot_meteorite_forged.name=Выкованный метеоритный слиток item.ingot_mox_fuel.name=Слиток МОКС-топлива item.ingot_neodymium.name=Неодимовый слиток item.ingot_neptunium.name=Нептуниевый слиток item.ingot_neptunium_fuel.name=Слиток нептуниевого топлива item.ingot_niobium.name=Ниобиевый слиток +item.ingot_osmiridium.name=Слиток осмиридия item.ingot_pb209.name=Слиток свинца-209 item.ingot_phosphorus.name=Брусок белого фосфора item.ingot_plutonium.name=Плутониевый слиток @@ -1725,9 +2380,10 @@ item.ingot_pu240.name=Слиток плутония-240 item.ingot_pu241.name=Слиток плутония-241 item.ingot_pu_mix.name=Слиток плутония реакторного качества item.ingot_ra226.name=Слиток радия-226 -item.ingot_radspice.name=§aНеовелиновый слиток +item.ingot_radspice.name=Жар-слиток item.ingot_red_copper.name=Слиток красной меди item.ingot_reiium.name=Реиевый слиток +item.ingot_rubber.name=Резина item.ingot_saturnite.name=Сатурнитовый слиток item.ingot_schrabidate.name=Слиток шрабидата железа item.ingot_schrabidium.name=Шрабидиевый слиток @@ -1744,7 +2400,7 @@ item.ingot_strontium.name=Слиток стронция item.ingot_tantalium.name=Танталовый слиток item.ingot_tcalloy.name=Слиток технециевой стали item.ingot_technetium.name=Слиток технеция-99 -item.ingot_tennessine.name=Слиток теннессина-294 +item.ingot_tennessine.name=Теннессин-294 Слиток item.ingot_th232.name=Слиток тория-232 item.ingot_thorium_fuel.name=Слиток ториевого топлива item.ingot_titanium.name=Титановый слиток @@ -1753,9 +2409,7 @@ item.ingot_u233.name=Слиток урана-233 item.ingot_u235.name=Слиток урана-235 item.ingot_u238.name=Слиток урана-238 item.ingot_u238m2.name=Полустабильный слиток урана-238-2 -item.ingot_unobtainium.name=Унобтаниумовый слиток -item.nugget_unobtainium_greater.name=Самородок унобтаниума-440 -item.nugget_unobtainium_lesser.name=Самородок унобтаниума-439 +item.ingot_unobtainium.name=Унобтаниевый слиток item.ingot_uranium.name=Урановый слиток item.ingot_uranium_fuel.name=Слиток уранового топлива item.ingot_verticium.name=Вертициевый слиток @@ -1764,47 +2418,53 @@ item.ingot_zirconium.name=Циркониевый куб item.injector_5htp.name=Автоинъектор 5-гидрокситриптофана item.injector_knife.name=Автоинъектор 8 дюймового лезвия item.ink.name=林 чернила -item.insert_di.name=Динейтрониевая пластина +item.insert_di.name=Динейтрониевая вставка item.insert_doxium.name=Астольфий-легированная Доксиевая пластина item.insert_du.name=Урановая пластина item.insert_era.name=Взрывоопасная реактивная бронепластина item.insert_esapi.name=ESAPI пластины +item.insert_ferrouranium.name=Ферроурановая пластина item.insert_ghiorsium.name=Гиорзиевая вставка item.insert_kevlar.name=Кевларовые пластины item.insert_polonium.name=Полониевая пластина item.insert_sapi.name=SAPI пластины item.insert_steel.name=Тяжёлостальные пластины item.insert_xsapi.name=XSAPI пластины -item.insert_yharonite.name=Ихаронитовая пластина +item.insert_yharonite.name=Яронитовая пластина +item.iv_blood.name=Пакет для крови (заполненный) +item.iv_empty.name=Пакет для крови (пустой) +item.iv_xp.name=Пакет для опыта (заполненный) +item.iv_xp_empty.name=Пакет для опыта (пустой) item.jackt.name=Чертовски стильная баллистическая куртка item.jackt2.name=Чертовски стильная баллистическая куртка 2: Токийский Дрифт item.jetpack_boost.name=Импульсный ранец item.jetpack_break.name=Строительный ранец item.jetpack_fly.name=Реактивный ранец -item.jetpack_glider.name=Реактивный планер +item.jetpack_glider.name=Планер Джетпак item.jetpack_tank.name=Резервный топливный бак ранца item.jetpack_vector.name=Векторный реактивный ранец +item.journal_bj.name=Пропитанный виски блокнот +item.journal_pip.name=Дневник выживальщика +item.journal_silver.name=Записки контрактника item.key.name=Ключ item.key_fake.name=Поддельный ключ item.key_kit.name=Набор имитации ключей -item.key_red.name=§cКрасный ключ -item.key_red.desc=Стороний проводник. -item.laser_crystal_bale.desc=Жар-пеллета с вертициевым покрытием в корпусе из динейтрония -item.laser_crystal_bale.name=Лазерный кристалл Бэйла -item.laser_crystal_bismuth.desc=Кристаллическая матрица из висмут-самарий-уран-торий -item.laser_crystal_bismuth.name=Лазерный кристалл BiSmUTh -item.laser_crystal_cmb.desc=Ксенон-135, подвешенный в решетке из сплава стали альянса -item.laser_crystal_cmb.name=Лазерный Кристалл Ксенон-CMB -item.laser_crystal_co2.desc=Углекислый газ, заключенный в кристаллический деш -item.laser_crystal_co2.name=Лазерный кристалл CO2-Деш -item.laser_crystal_dem.desc=Демон-Шрабидат-Тенессин-Танталиевый Фермион Суперкристалл -item.laser_crystal_dem.name=Демонический лазерный кристалл -item.laser_crystal_digamma.name=§cДигамма лазерный кристалл§r -#item.laser_crystal_digamma.desc=Блять -item.laser_crystal_nano.desc=Антенна из углеродных нанотрубок длиной 420 км внутри поликристалла -item.laser_crystal_nano.name=Лазерный нанотрубчатый кристалл -item.laser_crystal_pentacene.desc=Возбужденный кристалл пентацена, покрытый улучшенным сплавом -item.laser_crystal_pentacene.name=Пентаценовый лазерный кристалл +item.key_red.name=Красный ключ +item.laser_crystal_bale.desc=Жар-топливная пеллета, заключенная в вертиций и тринитовое стекло +item.laser_crystal_bale.name=Жар-Поликристалл для SILEX +item.laser_crystal_bismuth.desc=Кристаллическая матрица из смеси висмута, лантаноидов, тория и урана +item.laser_crystal_bismuth.name=Поликристалл для SILEX из висмута +item.laser_crystal_cmb.desc=Ксенон-135, подвешенный в решетке из сплава CMB-Свинца-209 +item.laser_crystal_cmb.name=Поликристалл для SILEX из сплава CMB-Свинца-209 +item.laser_crystal_co2.desc=Углекислый газ, заключенный в кристаллизованный деш +item.laser_crystal_co2.name=Поликристалл для SILEX из деш +item.laser_crystal_dem.desc=Кристалл, использующий силу Пандемоники для фокусировки лазера +item.laser_crystal_dem.name=Демонический поликристалл для SILEX +item.laser_crystal_digamma.name=Дигамма поликристалл для SILEX +item.laser_crystal_nano.desc=Фокусировщик из углеродных нанотрубок, диаметром 1 нм внутри поликристалла +item.laser_crystal_nano.name=Поликристалл для SILEX из углеродных нанотрубок +item.laser_crystal_pentacene.desc=Поликристалл, использующий для фокусировки лазера биогаз, и покрытый продвинуто-цериевым сплавом +item.laser_crystal_pentacene.name=Кристалл для SILEX с газовым фокусировщиком item.lead_gavel.name=Свинцовый молоток item.lemon.name="Лимон" item.letter.name=Экспресс-почта @@ -1823,6 +2483,7 @@ item.loops.name=Пəтли item.loot_10.name=Ящик с запчастями от Ракеты 10-го размера item.loot_15.name=Ящик с запчастями от Ракеты 15-го размера item.loot_misc.name=Общий ящик с запчастями от Ракеты +item.lung_diagnostic.name=Анализатор здоровья легких item.magnet_circular.name=Плоский магнит item.magnet_dee.name=Ди-магниты item.magnetron.name=Магнетрон @@ -1833,7 +2494,10 @@ item.man_igniter.name=Зажигатель item.man_kit.name=Комплект Толстяка item.marshmallow.name=Зефир на палочке item.marshmallow_roasted.name=Зефир на палочке +item.mask_damp.name=Влажная тряпичная защитная маска item.mask_of_infamy.name=Маска Позора +item.mask_piss.name=Траншейный противогаз +item.mask_rag.name=Тряпичная защитная маска item.matchstick.name=Спичка item.mech_key.name=Большой серебряный ключ item.mechanism_launcher_1.name=Механизм запуска @@ -1847,14 +2511,30 @@ item.med_bag.name=Докторский саквояж item.med_ipecac.name=Сироп из рвотного корня item.med_ptsd.name=Лечение ПТСР item.med_schiziphrenia.name=Лекарство от шизофрении -item.medal_ghoul.name=Сертифицированный вурдалак +item.medal_ghoul.name=Сертифицированный гуль item.medal_liquidator.name=Медаль Ликвидатора item.meltdown_tool.name=Аппликатор мгновенного расплавления Дятлова item.memespoon.name=§eЗемлекоп item.memory.name=item.null.name -item.mese_gavel.name=§eМесе молоток -item.mese_pickaxe.name=§eМесе кирка -item.meteor_remote.name=Устройство для вызова метеоритов +item.mentats.name=Ментаты +item.mese_gavel.name=Месе молоток +item.mese_pickaxe.name=Месе кирка +item.meteor_charm.name=Метеоритный талисман +item.meteor_remote.name=Устройство для вызова метеоритн +item.meteorite_sword.name=Метеоритный меч +item.meteorite_sword_alloyed.name=Метеоритный меч (легированный) +item.meteorite_sword_baleful.name=Метеоритный меч (зловещий) +item.meteorite_sword_bred.name=Метеоритный меч (разведённый) +item.meteorite_sword_demonic.name=§cМетеоритный меч (демонический) +item.meteorite_sword_etched.name=Метеоритный меч (гравированный) +item.meteorite_sword_fused.name=Метеоритный меч (сплавленный) +item.meteorite_sword_hardened.name=Метеоритный меч (закалённый) +item.meteorite_sword_irradiated.name=Метеоритный меч (облучённый) +item.meteorite_sword_machined.name=Метеоритный меч (механически обработанный) +item.meteorite_sword_reforged.name=Метеоритный меч (перекованный) +item.meteorite_sword_seared.name=Метеоритный меч (обожжённый) +item.meteorite_sword_treated.name=Метеоритный меч (обработанный) +item.meteorite_sword_warped.name=§fМетеоритный меч (искажённый) item.mike_cooling_unit.name=Блок охлаждения дейтерия item.mike_core.name=Дейтериевый бак с урановым покрытием item.mike_deut.name=Дейтериевый бак @@ -1862,18 +2542,18 @@ item.mike_kit.name=Комплект Иви Майка item.mirror_tool.desc=Щелкните правой кнопкой мыши по бойлеру, чтобы запомнить его положение.$Нажмите на зеркала, чтобы повернуть их в сторону бойлера item.mirror_tool.linked=Позиция выравнивания установлена! item.mirror_tool.name=Инструмент для регулировки зеркал -item.missile_anti_ballistic.name=Антибаллистическая ракета +item.missile_anti_ballistic.name=Антибаллистическая ракета (WIP) item.missile_assembly.name=Сборка малой ракеты -item.missile_bhole.name=Ракета "§dЧерная Дыра§r" +item.missile_bhole.name=Ракета "Чёрная дыра" item.missile_burst.name=Запасная ракета item.missile_buster.name=Противобункерная ракета item.missile_buster_strong.name=Улучшенная противобункерная ракета item.missile_carrier.name=Ракета-носитель HTR-01 item.missile_cluster.name=Кластерная ракета item.missile_cluster_strong.name=Мощная кластерная ракета -item.missile_custom.name=Пользовательская Ракета -item.missile_doomsday.name=Ракета Судного Дня -item.missile_drill.name=Бетонный крекер +item.missile_custom.name=Пользовательская ракета +item.missile_doomsday.name=Ракета Судного дня +item.missile_drill.name=Разрушитель бетона item.missile_emp.name=ЭМИ-ракета item.missile_emp_strong.name=Мощная ЭМИ-ракета item.missile_endo.name=Эндотермическая ракета @@ -1888,21 +2568,23 @@ item.missile_nuclear.name=Ядерная ракета item.missile_nuclear_cluster.name=Термоядерная ракета item.missile_rain.name=Бомбовый дождь item.missile_schrabidium.name=Шрабидиевая ракета -item.missile_skin_camo.name=Скин Ракеты: Камуфляж -item.missile_skin_desert.name=Скин Ракеты: Пустынный Камуфляж -item.missile_skin_flames.name=Скин Ракеты: Больное пламя -item.missile_skin_manly_pink.name=Скин Ракеты: Мужественный Розовый -item.missile_skin_metal.name=Скин Ракеты: Металл -item.missile_skin_orange_insulation.name=Скин Ракеты: Оранжевый Изолятор +item.missile_skin_camo.name=Скин ракеты: Камуфляж +item.missile_skin_desert.name=Скин ракеты: Пустынный камуфляж +item.missile_skin_flames.name=Скин ракеты: Всполохи огня +item.missile_skin_manly_pink.name=Скин ракеты: Мужественный розовый +item.missile_skin_metal.name=Скин ракеты: Металл +item.missile_skin_orange_insulation.name=Скин ракеты: Оранжевый изолятор item.missile_skin_sleek.name=Скин Ракеты: IF-R&D -item.missile_skin_soviet_glory.name=Скин Ракеты: Советская Слава -item.missile_skin_soviet_stank.name=Скин Ракеты: Советская Вонь +item.missile_skin_soviet_glory.name=Скин Ракеты: Советская слава +item.missile_skin_soviet_stank.name=Скин Ракеты: Советская вонь +item.missile_soyuz.name=Союз-ФГ item.missile_soyuz0.name=Союз-ФГ -item.missile_soyuz1.name=§9Союз-ФГ -item.missile_soyuz2.name=§9Союз-ФГ +item.missile_soyuz1.name=Союз-ФГ +item.missile_soyuz2.name=Союз-ФГ item.missile_soyuz_lander.name=Орбитальный Модуль item.missile_strong.name=Мощная фугасная ракета item.missile_taint.name=Зараженная ракета +item.missile_volcano.desc=Используя силу ядерной взрывчатки, мы можем вызвать вулкан! item.missile_volcano.name=Тектоническая ракета item.morning_glory.name=Монин Глори item.motor.name=Мотор @@ -2027,6 +2709,7 @@ item.mp_warhead_15_n2.name=N² Мина 15-го размера item.mp_warhead_15_nuclear.name=Ядерная боеголовка 15-го размера item.mp_warhead_15_nuclear_shark.name=Ядерная боеголовка 15-го размера item.mp_warhead_15_thermo.name=Термоядерная боеголовка размера 15 +item.mp_warhead_15_turbine.name=Реактивный двигатель 15-го размера item.mp_warhead_15_volcano.name=Вулканическая боеголовка размера 15 item.multi_kit.name=Комплект Многоцелевой бомбы item.multitool_beam.name=Силовая перчатка (Заппер) @@ -2044,20 +2727,20 @@ item.n2_charge.name=Крупный взрывной заряд item.neutron_reflector.name=Отражатель нейтронов item.niter.name=Селитра item.nossy_hat.name=Сказочная шляпа -item.nothing.name=§eНичего +item.nothing.name=Ничего item.nuclear_waste.name=Ядерные отходы item.nuclear_waste_long.name=Долгоживущие ядерные отходы item.nuclear_waste_long_depleted.name=Разложившиеся долгоживущие ядерные отходы -item.nuclear_waste_long_depleted_tiny.name=Кучка разложившихся долгоживущих ядерных отходов -item.nuclear_waste_long_tiny.name=Кучка долгоживущих ядерных отходов +item.nuclear_waste_long_depleted_tiny.name=Крошечная кучка разложившихся долгоживущих ядерных отходов +item.nuclear_waste_long_tiny.name=Крошечная кучка долгоживущих ядерных отходов item.nuclear_waste_pearl.name=Жемчужина из ядерных отходов item.nuclear_waste_short.name=Короткоживущие ядерные отходы item.nuclear_waste_short_depleted.name=Разложившиеся короткоживущие ядерные отходы -item.nuclear_waste_short_depleted_tiny.name=Кучка разложившихся короткоживущих ядерных отходов -item.nuclear_waste_short_tiny.name=Кучка короткоживущих ядерных отходов -item.nuclear_waste_tiny.name=Маленькая кучка ядерных отходов +item.nuclear_waste_short_depleted_tiny.name=Крошечная кучка разложившихся короткоживущих ядерных отходов +item.nuclear_waste_short_tiny.name=Крошечная кучка короткоживущих ядерных отходов +item.nuclear_waste_tiny.name=Крошечная кучка кучка ядерных отходов item.nuclear_waste_vitrified.name=Остеклованные ядерные отходы -item.nuclear_waste_vitrified_tiny.name=Кучка остеклованных ядерных отходов +item.nuclear_waste_vitrified_tiny.name=Крошечная кучка остеклованных ядерных отходов item.nugget.name=Куриный наггетс item.nugget_ac227.name=Самородок актиния-227 item.nugget_actinium.name=Актиний самородок @@ -2065,19 +2748,21 @@ item.nugget_am241.name=Самородок америция-241 item.nugget_am242.name=Самородок америция-242 item.nugget_am_mix.name=Самородок америция реакторного качества item.nugget_americium_fuel.name=Самородок америциевого топлива +item.nugget_arsenic.name=Арсениковый самородок item.nugget_au198.name=Самородок золота-198 -item.nugget_australium.name=§6Австралиевый самородок -item.nugget_australium_greater.name=§6Самородок высшего австралия -item.nugget_australium_lesser.name=§6Самородок низшего австралия +item.nugget_australium.name=Австралиевый самородок +item.nugget_australium_greater.name=Самородок высшего австралия +item.nugget_australium_lesser.name=Самородок низшего австралия item.nugget_beryllium.name=Бериллиевый самородок -item.nugget_bismuth.name=Висмутовый самородок +item.nugget_bismuth.name=Самородок висмута +item.nugget_cadmium.name=Кадмиевый самородок item.nugget_co60.name=Самородок кобальта-60 item.nugget_cobalt.name=Кобальтовый самородок item.nugget_daffergon.name=Даффергоновый самородок -item.nugget_desh.name=§cСамородок деш -item.nugget_dineutronium.name=§9Динетрониевый самородок§r -item.nugget_euphemium.name=§dЭвфемиевый самородок§r -item.nugget_gh336.name=Самородок гиорзиум-336 +item.nugget_desh.name=Самородок деш +item.nugget_dineutronium.name=Динетрониевый самородок +item.nugget_euphemium.name=Эвфемиевый самородок +item.nugget_gh336.name= Самородок Гиорзиума-336 item.nugget_hes.name=Высокообогащенный самородок шрабидиевого топлива item.nugget_lead.name=Свинцовый самородок item.nugget_les.name=Низкообогащенный самородок шрабидиевого топлива @@ -2085,7 +2770,8 @@ item.nugget_mercury.name=Маленькая капля ртути item.nugget_mox_fuel.name=Самородок МОКС топлива item.nugget_neptunium.name=Нептуниевый самородок item.nugget_neptunium_fuel.name=Самородок нептуниевого топлива -item.nugget_pb209.name=Самородок свинца-209 +item.nugget_osmiridium.name=Самородок осмиридия +item.nugget_pb209.name=Самородок свинца-209 item.nugget_plutonium.name=Плутониевый самородок item.nugget_plutonium_fuel.name=Самородок плутониевого топлива item.nugget_polonium.name=Самородок полония-210 @@ -2095,7 +2781,7 @@ item.nugget_pu240.name=Самородок плутония-240 item.nugget_pu241.name=Самородок плутония-241 item.nugget_pu_mix.name=Самородок плутония реакторного качества item.nugget_ra226.name=Самородок радия-226 -item.nugget_radspice.name=§aНеовелиновый самородок +item.nugget_radspice.name=Жар-самородок item.nugget_reiium.name=Реиевый самородок item.nugget_schrabidium.name=Шрабидиевый самородок item.nugget_schrabidium_fuel.name=Самородок шрабидиевого топлива @@ -2109,8 +2795,10 @@ item.nugget_thorium_fuel.name=Самородок ториевого топлив item.nugget_u233.name=Самородок урана-233 item.nugget_u235.name=Самородок урана-235 item.nugget_u238.name=Самородок урана-238 -item.nugget_u238m2.name=Метастабильный самородок урана 238-2 -item.nugget_unobtainium.name=Унобтаниумовый самородок +item.nugget_u238m2.name=Метастабильный самородок U238-2 +item.nugget_unobtainium.name=Унобтаниевый самородок +item.nugget_unobtainium_greater.name=Самородок унобтания-440 +item.nugget_unobtainium_lesser.name=Самородок унобтания-439 item.nugget_uranium.name=Урановый самородок item.nugget_uranium_fuel.name=Самородок уранового топлива item.nugget_verticium.name=Вертициевый самородок @@ -2128,9 +2816,22 @@ item.oil_detector.detected=Поблизости обнаружен резерв item.oil_detector.name=Детектор нефтяного резервуара item.oil_detector.noOil=Нефти не обнаружено. item.oil_tar.name=Нефтяная смола +item.ore_bedrock.name=%s бедроковая руда +item.ore_bedrock_centrifuged.name=%s центрифугированная руда +item.ore_bedrock_cleaned.name=%s очищенная руда +item.ore_bedrock_deepcleaned.name=%s глубоко очищенная руда +item.ore_bedrock_enriched.name=%s обогащённая руда +item.ore_bedrock_exquisite.name=%s совершенная руда +item.ore_bedrock_nitrated.name=%s азотированная руда +item.ore_bedrock_nitrocrystalline.name=%s нитрокристаллизированная уда +item.ore_bedrock_perfect.name=%s идеальная руда +item.ore_bedrock_purified.name=%s центрифугированная руда +item.ore_bedrock_seared.name=%s обожжённая руда +item.ore_bedrock_separated.name=%s разделённая руда item.overfuse.name=Сингулярная отвёртка item.oxy_mask.name=Кислородная маска item.paa_boots.name="Старые добрые ботинки" из PaA +item.paa_helmet.name=Защитный шлем PaA item.paa_legs.name=Укреплённые поножи из PaA item.paa_plate.name=Защищающая грудная пластина из PaA item.padlock.name=Замок @@ -2150,20 +2851,21 @@ item.particle_aelectron.name=Капсула с Позитроном item.particle_amat.name=Капсула с Антиматерией item.particle_aproton.name=Капсула с Антипротоном item.particle_aschrab.name=Капсула с Антишрабидием -item.particle_copper.name=Капсула с Ионами Меди +item.particle_copper.name=Капсула с ионами меди item.particle_dark.name=Капсула с Тёмной материей item.particle_digamma.name=§cЧастица Дигамма§r item.particle_empty.name=Пустая капсула item.particle_higgs.name=Капсула с Бозоном Хиггса -item.particle_hydrogen.name=Капсула с Ионами Водорода -item.particle_lead.name=Капсула с Ионами Свинца +item.particle_hydrogen.name=Капсула с ионами водорода +item.particle_lead.name=Капсула с ионами свинца +item.particle_lutece.name=Квазичастица Лютеция item.particle_muon.name=Капсула с Мюоном -item.particle_sparkticle.name=Капсула со §dСпарктиклом +item.particle_sparkticle.name=Капсула со Спарктиклом item.particle_strange.name=Капсула со Странным кварком -item.particle_tachyon.name=§6Капсула с Тахионом§r +item.particle_tachyon.name=Капсула с тахионом item.peas.name=Горошек item.pedestal_steel.name=Стальная стойка -item.pellet_advanced.name=Улучшитель производительности Ватцз +item.pellet_advanced.name=Улучшитель производительности WATS item.pellet_antimatter.name=Кластер антиматерии item.pellet_beryllium.name=Бериллиевая замедлительная-пеллета item.pellet_buckshot.name=Свинцовые шарики @@ -2176,13 +2878,13 @@ item.pellet_coal.name=Плотный угольный брикет item.pellet_coolant.name=Охлаждающий кластер item.pellet_flechette.name=Флешетты item.pellet_gas.name=Ядовитый газовый баллон -item.pellet_hes.name=Высокообогащенная шрабидиевая Ватцз-пеллета +item.pellet_hes.name=Высокообогащенная шрабидиевая WATS-пеллета item.pellet_lead.name=Свинцовая пеллета -item.pellet_les.name=Низкообогащенная шрабидиевая Ватцз-пеллета +item.pellet_les.name=Низкообогащенная шрабидиевая WATS-пеллета item.pellet_mercury.name=Ртутные гранулы -item.pellet_mes.name=Среднеобогащенная шрабидиевая Ватцз-пеллета +item.pellet_mes.name=Среднеобогащенная шрабидиевая WATS-пеллета item.pellet_meteorite.name=Метеоритные гранулы -item.pellet_neptunium.name=Нептуниевая Ватцз-пеллета +item.pellet_neptunium.name=Нептуниевая WATS-пеллета item.pellet_rtg.name=РИТЭГ-пеллета из плутония-238 item.pellet_rtg_actinium.desc=Сияние синего света и бета-лучей. item.pellet_rtg_actinium.name=Актиний-227 РИТЭГ-гранулы @@ -2200,24 +2902,29 @@ item.pellet_rtg_depleted_zirconium.name=Обедненный циркониев item.pellet_rtg_gold.desc=Изготовлен из редкого, крайне нестабильного изотопа золота. item.pellet_rtg_gold.name=РИТЭГ-пеллета из золота-198 item.pellet_rtg_lead.desc=Воздействие приведет к немедленной смерти. -item.pellet_rtg_lead.name=Таблетка РИТЭГ Свинец-209 +item.pellet_rtg_lead.name=Таблетка РИТЭГ из свинца-209 item.pellet_rtg_polonium.desc=Более мощная пуля для РИТЭГов, изготовленная из лучшего полония! item.pellet_rtg_polonium.name=РИТЭГ-пеллета из полония-210 item.pellet_rtg_radium.desc=Отличные стартовые гранулы, полученные из полностью натурального радия! -item.pellet_rtg_radium.name=Радий-226 РИТЭГ-таблетка +item.pellet_rtg_radium.name=РИТЭГ-таблетка из радия-226 item.pellet_rtg_strontium.desc=Известен в штате Калифорния... -item.pellet_rtg_strontium.name=Стронций-90 РИТЭГ Таблетка +item.pellet_rtg_strontium.name=РИТЭГ Таблетка из стронция-90 item.pellet_rtg_weak.desc=Более дешевая и слабая пуля, теперь с большим количеством U238! item.pellet_rtg_weak.name=Слабая урановая РИТЭГ-пеллета -item.pellet_schrabidium.name=Чистая шрабидиевая Ватцз-пеллета +item.pellet_schrabidium.name=Чистая шрабидиевая WATS-пеллета item.photo_panel.name=Фотоэлектрическая панель item.pile_rod_boron.name=Контрольный стержень "Чикагской поленницы" item.pile_rod_plutonium.name=Плутониевый стержень "Чикагской поленницы" -item.pile_rod_source.name=Радий-226-Бериллевый источник нейтронов "Чикагской поленницы" +item.pile_rod_source.name=Радиево-226-Бериллевый источник нейтронов "Чикагской поленницы" item.pile_rod_uranium.name=Урановый стержень "Чикагской поленницы" +item.pill_herbal.name=Лекарственные травы в таблетках item.pill_iodine.name=Таблетка иода item.pin.name=Отмычка +item.pipes_steel.desc=Раскрафт был исключен из-за уклонения от уплаты налогов item.pipes_steel.name=Стальные трубы +item.piston_electro.name=Электрический поршень +item.piston_hydraulic.name=Гидравлический поршень +item.piston_pneumatic.name=Пневматический поршень item.piston_selenium.name=Поршень радиального двигателя item.plan_c.name=План С item.plate_advanced_alloy.name=Пластина продвинутого сплава @@ -2246,72 +2953,81 @@ item.plate_schrabidium.name=Шрабидиевая пластина item.plate_steel.name=Стальная пластина item.plate_titanium.name=Титановая пластина item.polaroid.name=Полароид -item.powder_ac227.name=Актиний-227 порошок +item.powder_ac227.name=Порошок актиния-227 item.powder_actinium.name=Актиниевый порошок -item.powder_actinium_tiny.name=Кучка актиниевого порошка +item.powder_actinium_tiny.name=Крошечная кучка актиниевого порошка item.powder_advanced_alloy.name=Порошок продвинутого сплава item.powder_aluminium.name=Алюминиевый порошок item.powder_asbestos.name=Асбестовый порошок item.powder_astatine.name=Астатовый порошок item.powder_at209.name=Порошок астата-209 item.powder_au198.name=Порошок золота-198 -item.powder_australium.name=§6Австралиевый порошок +item.powder_australium.name=Австралиевый порошок +item.powder_bakelite.name=Бакелитовый порошок item.powder_balefire.name=Термоядерный пепел item.powder_beryllium.name=Бериллиевый порошок +item.powder_bismuth.name=Пыль висмута +item.powder_borax.name=Порошок бура item.powder_boron.name=Борный порошок -item.powder_boron_tiny.name=Кучка борного порошка +item.powder_boron_tiny.name=Крошечная кучка борного порошка item.powder_bromine.name=Порошок брома +item.powder_cadmium.name=Кадмиевый порошок item.powder_caesium.name=Цезиевый порошок +item.powder_cdalloy.name=Порошок кадмиевой стали item.powder_cerium.name=Цериевый порошок -item.powder_cerium_tiny.name=Кучка цериевого порошка +item.powder_cerium_tiny.name=Крошечная кучка цериевого порошка item.powder_chlorophyte.name=Хлорофитовый порошок item.powder_cloud.name=Облачный осадок item.powder_co60.name=Порошок кобальта-60 item.powder_co60_tiny.name=Крошечная горстка порошка кобальта-60 item.powder_coal.name=Угольный порошок -item.powder_coal_tiny.name=Кучка угольного порошка +item.powder_coal_tiny.name=Крошечная кучка угольного порошка item.powder_cobalt.name=Кобальтовый порошок -item.powder_cobalt_tiny.name=Кучка кобальтового порошка +item.powder_cobalt_tiny.name=Крошечная кучка кобальтового порошка item.powder_coltan.name=Очищенный танталит item.powder_coltan_ore.name=Измельченный Колтан item.powder_combine_steel.name=Измельченная CMB сталь item.powder_copper.name=Медный порошок item.powder_cs137.name=Порошок цезия-137 -item.powder_cs137_tiny.name=Кучка порошка цезия-137 +item.powder_cs137_tiny.name=Крошечная кучка порошка цезия-137 item.powder_daffergon.name=Даффергоновый порошок -item.powder_desh.name=§cПорошок деш +item.powder_desh.name=Порошок деш item.powder_desh_mix.name=Смесь деш item.powder_desh_ready.name=ГотоваяДеш™ смесь item.powder_diamond.name=Алмазный порошок -item.powder_dineutronium.name=§9Динейтрониевый порошок +item.powder_dineutronium.name=Динейтрониевый порошок item.powder_dura_steel.name=Измельченная высокоскоростная сталь item.powder_emerald.name=Изумрудный порошок item.powder_euphemium.name=Эвфемиевый порошок item.powder_fire.name=Красный фосфор item.powder_gold.name=Золотой порошок -item.powder_i131.name=Порошок иода-131 -item.powder_i131_tiny.name=Кучка порошка иода-131 +item.powder_i131.name=Порошок йода-131 +item.powder_i131_tiny.name=Крошечная кучка порошка иода-131 item.powder_ice.name=Крио-порошок +item.powder_impure_osmiridium.name=Грязный осмиридиевый порошок item.powder_iodine.name=Порошок иода item.powder_iodine_tiny.name=Крошечная кучка йодного порошка item.powder_iron.name=Железный порошок item.powder_lanthanium.name=Лантановый порошок -item.powder_lanthanium_tiny.name=Кучка лантанового порошка +item.powder_lanthanium_tiny.name=Крошечная кучка лантанового порошка item.powder_lapis.name=Лазуритный порошок item.powder_lead.name=Свинцовый порошок item.powder_lignite.name=Порошок бурого угля item.powder_lithium.name=Литиевый порошок -item.powder_lithium_tiny.name=Кучка литиевого порошка +item.powder_lithium_tiny.name=Крошечная кучка литиевого порошка item.powder_magic.name=Измельченное зачарование item.powder_magnetized_tungsten.name=Измельченный намагниченный вольфрам item.powder_meteorite.name=Метеоритный порошок -item.powder_meteorite_tiny.name=Кучка метеоритного порошка +item.powder_meteorite_tiny.name=Крошечная кучка метеоритного порошка item.powder_neodymium.name=Неодимовый порошок -item.powder_neodymium_tiny.name=Кучка неодимового порошка +item.powder_neodymium_tiny.name=Крошечная кучка неодимового порошка item.powder_neptunium.name=Нептуниевый порошок item.powder_niobium.name=Ниобиевый порошок -item.powder_niobium_tiny.name=Кучка ниобиевого порошка +item.powder_niobium_tiny.name=Крошечная кучка ниобиевого порошка item.powder_nitan_mix.name=Нитановая смесь +item.powder_osmiridium.name=Осмиридиевый порошок +item.powder_paleogenite.name=Порошок палеогенита +item.powder_paleogenite_tiny.name=Крошечная кучка палеогенитового порошка item.powder_pb209.name=Порошок свинца-209 item.powder_plutonium.name=Плутониевый порошок item.powder_poison.name=Ядовитый порошок @@ -2320,31 +3036,32 @@ item.powder_polymer.name=Полимерный порошок item.powder_power.name=Энерго-порошок item.powder_quartz.name=Кварцевый порошок item.powder_ra226.name=Порошок радия-226 -item.powder_radspice.name=§aНеовелиновый порошок +item.powder_radspice.name=Жар-порошок item.powder_red_copper.name=Красномедный порошок item.powder_reiium.name=Реиевый порошок item.powder_schrabidate.name=Порошок шрабидата железа item.powder_schrabidium.name=Шрабидиевый порошок item.powder_semtex_mix.name=Смесь семтекса -item.powder_spark_mix.name=§dСпарк-смесь -item.powder_sr90.name=Стронций-90 Порошок +item.powder_spark_mix.name=Спарк-смесь +item.powder_sr90.name=Порошок стронция-90 item.powder_sr90_tiny.name=Крошечная горстка порошка стронция-90 item.powder_steel.name=Стальной порошок -item.powder_steel_tiny.name=Кучка стального порошка +item.powder_steel_tiny.name=Крошечная кучка стального порошка item.powder_strontium.name=Стронциевый порошок item.powder_tantalium.name=Порошок тантала item.powder_tcalloy.name=Порошок технециевой стали +item.powder_tektite.name=Порошок тектита item.powder_tennessine.name=Теннессиновый порошок item.powder_thermite.name=Термит item.powder_thorium.name=Ториевый порошок item.powder_titanium.name=Титановый порошок item.powder_tungsten.name=Вольфрамовый порошок -item.powder_unobtainium.name=Унобтаниумовый порошок +item.powder_unobtainium.name=Унобтаниевый порошок item.powder_uranium.name=Урановый порошок item.powder_verticium.name=Вертициевый порошок item.powder_weidanium.name=Вейдановый порошок item.powder_xe135.name=Порошок ксенона-135 -item.powder_xe135_tiny.name=Кучка порошка ксенона-135 +item.powder_xe135_tiny.name=Крошечная кучка порошка ксенона-135 item.powder_yellowcake.name=Йеллоукейк item.powder_zirconium.name=Циркониевый порошок item.primer_357.name=Капсюли Магнума .357 (x24) @@ -2352,18 +3069,23 @@ item.primer_44.name=Капсюли Магнума .44 (x24) item.primer_50.name=Крупнокалиберные Капсюли (x12) item.primer_9.name=Малокалиберные Капсюли (x32) item.primer_buckshot.name=Картечные Капсюли (x12) +item.protection_charm.name=Защитный талисман item.prototype_kit.name=Комплект Прототипа +item.pt_mentats.name=Праздничные Ментаты item.pudding.name=Пудинг item.quartz_plutonium.name=Плутонический кварц item.radaway.name=Антирадин item.radaway_flush.name=Супер-антирадин item.radaway_strong.name=Усиленный антирадин item.radx.name=Рад-X +item.rag.name=Тряпка +item.rag_damp.name=Влажная тряпка +item.rag_piss.name=Пропитанная мочой тряпка item.rbmk_fuel_balefire.name=Жар-топливный стержень РБМК item.rbmk_fuel_balefire_gold.name=Флэшголд-топливный стержень РБМК item.rbmk_fuel_drx.name=§cДигамма топливный стержень РБМК§r item.rbmk_fuel_empty.name=Пустой топливный стержень РБМК -item.rbmk_fuel_flashlead.name=Флэш-свинцовый топливный стержень РБМК +item.rbmk_fuel_flashlead.name=Топливный стержень РБМК item.rbmk_fuel_hea241.name=Высокообогащенный америциевый-241 топливный стержень РБМК item.rbmk_fuel_hea242.name=Высокообогащенный америциевый-242 топливный стержень РБМК item.rbmk_fuel_heaus.name=Высокообогащенный австралиевый топливный стержень РБМК @@ -2385,19 +3107,19 @@ item.rbmk_fuel_meu.name=Среднеобогащенный урановый то item.rbmk_fuel_mox.name=МОКС-топливный стержень РБМК item.rbmk_fuel_po210be.name=Полоний-210-Бериллевый источник нейтронов РБМК item.rbmk_fuel_pu238be.name=Плутоний-238-Бериллевый источник нейтронов РБМК -item.rbmk_fuel_ra226be.name=Радий-226-Бериллевый источник нейтронов РБМК +item.rbmk_fuel_ra226be.name=Радией-226-Бериллевый источник нейтронов РБМК item.rbmk_fuel_thmeu.name=Ториево-урановый среднеобогащённый топливный стержень РБМК item.rbmk_fuel_ueu.name=Необогащенный урановый топливный стержень РБМК -item.rbmk_fuel_unobtainium.name=Нейтронный унобтаниумовый стержень РБМК -item.rbmk_fuel_zfb_am_mix.name=Америциевый ZFB топливный стержень РБМК -item.rbmk_fuel_zfb_bismuth.name=Висмутовый ZFB топливный стержень РБМК -item.rbmk_fuel_zfb_pu241.name=Плутониевый-241 ZFB топливный стержень РБМК +item.rbmk_fuel_unobtainium.name=Унобтаниево-нейтронный стержень РБМК +item.rbmk_fuel_zfb_am_mix.name=Америциевый ЦБР-стержень РБМК +item.rbmk_fuel_zfb_bismuth.name=Висмутовый ЦБР-стержень РБМК +item.rbmk_fuel_zfb_pu241.name=Пу-241 ЦБР-стержень РБМК item.rbmk_lid.name=Покрывающая панель РБМК item.rbmk_lid_glass.name=Стеклянная покрывающая панель РБМК item.rbmk_pellet_balefire.name=Жар-топливная пеллета item.rbmk_pellet_balefire_gold.name=Флэшголд-топливная пеллета item.rbmk_pellet_drx.name=§cДигамма топливная пеллета§r -item.rbmk_pellet_flashlead.name=Флэш-свинцовая топливная пеллета +item.rbmk_pellet_flashlead.name=Топливная гранула Flashlead item.rbmk_pellet_hea241.name=Высокообогащенная америциевая-241 топливная пеллета item.rbmk_pellet_hea242.name=Высокообогащенная америциевая-242 топливная пеллета item.rbmk_pellet_heaus.name=Высокообогащенная австралиевая топливная пеллета @@ -2422,21 +3144,21 @@ item.rbmk_pellet_pu238be.name=Плутоний-238-Бериллиевая пел item.rbmk_pellet_ra226be.name=Радий-226-Бериллевая пеллета item.rbmk_pellet_thmeu.name=Торий-урановая топливная пеллета item.rbmk_pellet_ueu.name=Необогащенная урановая топливная пеллета -item.rbmk_pellet_unobtainium.name=Нейтронная унобтаиевая пеллета -item.rbmk_pellet_zfb_am_mix.name=Топливная америция ZFB пеллета -item.rbmk_pellet_zfb_bismuth.name=Висмутовая ZFB пеллета -item.rbmk_pellet_zfb_pu241.name=Плутониевая-241 ZFB пеллета -item.rbmk_tool.desc=§eShift+ПКМ§r по РБМК чтобы запомнить его позицию,$§eShift+ПКМ§r по консоли чтобы соединить -item.rbmk_tool.linked=§eПозиция установлена! +item.rbmk_pellet_unobtainium.name=Унобтаниево-нейтронный пеллета +item.rbmk_pellet_zfb_am_mix.name=Америциевая ЦБР пелетта +item.rbmk_pellet_zfb_bismuth.name=Висмутовая ЦБР пелетта +item.rbmk_pellet_zfb_pu241.name=ЦБР пеллета Пу-241 +item.rbmk_tool.desc=Shift+ПКМ по РБМК чтобы запомнить его позицию,$shift+ПКМ по консоли чтобы соединить! +item.rbmk_tool.linked=Позиция установлена! item.rbmk_tool.name=Устройство для соединения консоли РБМК -item.rbmk_tool.set=§eРБМК соединён! +item.rbmk_tool.set=РБМК соединён! item.reacher.name=Вольфрамовые хваталки item.reactor_core.name=Активная зона реактора-размножителя item.reactor_sensor.name=Дистанционный датчик реактора -item.record.glass.desc=§6Tchaikovsky §f- §5? ? ?§r -item.record.lc.desc=§6Valve §f- §9Diabolic Adrenaline Guitar/Lambda Core§r -item.record.ss.desc=§6Valve §f- §9Sector Sweep§r -item.record.vc.desc=§6Valve §f- §9Vortal Combat§r +item.record.glass.desc=? ? ? +item.record.lc.desc=Valve - Diabolic Adrenaline Guitar/Lambda Core +item.record.ss.desc=Valve - Sector Sweep +item.record.vc.desc=Valve - Vortal Combat item.redcoil_capacitor.name=Краснокатушечный конденсатор item.redstone_depleted.name=Обесцвеченная красная пыль item.redstone_sword.name=Меч из красного камня @@ -2444,63 +3166,67 @@ item.reer_graar.name=Рер Граар item.remote.name=Сломанный пульт дистанционного управления item.ring_pull.name=Ключ-кольцо item.ring_starmetal.name=§9Кольцо из Звёздного металла§r +item.robes_boots.name=Полевые ботинки +item.robes_helmet.name=Повседневная толстовка с капюшоном +item.robes_legs.name=Повседневные брюки +item.robes_plate.name=Повседневная кофта item.rocket_fuel.name=Твердое топливо (Ракетное) -item.rod_ac227.name=Стержень с Актинием-227 -item.rod_australium.name=§6Стержень с австралием +item.rod_ac227.name=Стержень из Актиния-227 +item.rod_australium.name=Австралиевый стержень item.rod_balefire.name=Жар-стержень item.rod_balefire_blazing.name=Пылающий жар-стержень -item.rod_co60.name=Стержень с кобальтом-60 -item.rod_cobalt.name=Стержень с кобальтом -item.rod_coolant.name=Стержень с хладагентом -item.rod_daffergon.name=Стержень с даффергоном -item.rod_dual_ac227.name=Сдвоенный стержень с актинием-227 +item.rod_co60.name=Стержень кобальта-60 +item.rod_cobalt.name=Кобальтовый стержень +item.rod_coolant.name=Охлаждающий стержень +item.rod_daffergon.name=Даффергоновый стержень +item.rod_dual_ac227.name=Двойной стержень актиния-227 item.rod_dual_balefire.name=Сдвоенный жар-стержень item.rod_dual_balefire_blazing.name=Сдвоенный пылающий жар-стержень item.rod_dual_co60.name=Сдвоенный стержень с кобальтом-60 -item.rod_dual_cobalt.name=Сдвоенный стержень с кобальтом -item.rod_dual_coolant.name=Сдвоенный стержень с хладагентом +item.rod_dual_cobalt.name=Кобальтовый двойной стержень +item.rod_dual_coolant.name=Сдвоенный охлаждающий стержень item.rod_dual_empty.name=Пустой сдвоенный стержень item.rod_dual_lead.name=Сдвоенный стержень со свинцом -item.rod_dual_lithium.name=Сдвоенный стержень с литием +item.rod_dual_lithium.name=Сдвоенный литиевый стержень item.rod_dual_mox_fuel.name=Сдвоенный МОКС-топливный стержень item.rod_dual_mox_fuel_depleted.name=Сдвоенный обеднённый МОКС-топливный стержень item.rod_dual_neptunium.name=Сдвоенный стержень с нептунием item.rod_dual_plutonium.name=Сдвоенный стержень с плутонием item.rod_dual_plutonium_fuel.name=Сдвоенный плутониевый топливный стержень -item.rod_dual_plutonium_fuel_depleted.name=Сдвоенный обеднённый плутониевый топливный стержень +item.rod_dual_plutonium_fuel_depleted.name=Сдвоенный топливный стержень с обеднённым плутонием item.rod_dual_polonium.name=Сдвоенный стержень с полонием-210 item.rod_dual_pu238.name=Сдвоенный стержень с плутонием-238 item.rod_dual_pu239.name=Сдвоенный стержень с плутонием-239 item.rod_dual_pu240.name=Сдвоенный стержень с плутонием-240 -item.rod_dual_ra226.name=Сдвоенный стержень с радием-226 -item.rod_dual_rgp.name=Сдвоенный стержень с плутонием реакторного качества +item.rod_dual_ra226.name=Двойной стержень с радием-226 +item.rod_dual_rgp.name=Двойной стержень из реакторного плутония item.rod_dual_schrabidium.name=Сдвоенный стержень с шрабидием-326 item.rod_dual_schrabidium_fuel.name=Сдвоенный шрабидиевый топливный стержень -item.rod_dual_schrabidium_fuel_depleted.name=Сдвоенный обеднённый шрабидиевый топливный стержень +item.rod_dual_schrabidium_fuel_depleted.name=Сдвоенный топливный стержень с обеднённым шрабидием item.rod_dual_solinium.name=Сдвоенный стержень с шрабидием-327 item.rod_dual_th232.name=Сдвоенный стержень с торием-232 item.rod_dual_thorium_fuel.name=Сдвоенный ториевый топливный стержень -item.rod_dual_thorium_fuel_depleted.name=Сдвоенный обеднённый ториевый топливный стержень -item.rod_dual_tritium.name=Сдвоенный стержень с тритием +item.rod_dual_thorium_fuel_depleted.name=Сдвоенный топливный стержень с обеднённым торием +item.rod_dual_tritium.name=Сдвоенный тритиевый стержень item.rod_dual_u233.name=Сдвоенный стержень с ураном-233 item.rod_dual_u235.name=Сдвоенный стержень с ураном-235 item.rod_dual_u238.name=Сдвоенный стержень с ураном-238 item.rod_dual_uranium.name=Сдвоенный стержень с ураном item.rod_dual_uranium_fuel.name=Сдвоенный урановый топливный стержень -item.rod_dual_uranium_fuel_depleted.name=Сдвоенный обеднённый урановый топливный стержень +item.rod_dual_uranium_fuel_depleted.name=Сдвоенный топливный стержень с обеднённым ураном item.rod_dual_waste.name=Сдвоенный стержень с ядерными отходами item.rod_dual_water.name=Сдвоенный стержень с водой item.rod_empty.name=Пустой стержень -item.rod_euphemium.name=§dСтержень с эвфемием§r -item.rod_lead.name=Стержень со свинцом -item.rod_lithium.name=Стержень с Литием +item.rod_euphemium.name=Эвфемиевый стержень +item.rod_lead.name=Свинцовый стержень +item.rod_lithium.name=Литиевый стержень item.rod_mox_fuel.name=МОКС-топливный стержень item.rod_mox_fuel_depleted.name=Обеднённый МОКС-топливный стержень -item.rod_neptunium.name=Стержень с Нептунием -item.rod_of_discord.name=§dЖезл раздора§r -item.rod_plutonium.name=Стержень с плутонием +item.rod_neptunium.name=Нептуниевый стержень +item.rod_of_discord.name=Жезл раздора +item.rod_plutonium.name=Плутониевый стержень item.rod_plutonium_fuel.name=Плутониевый топливный стержень -item.rod_plutonium_fuel_depleted.name=Обеднённый плутониевый топливный стержень +item.rod_plutonium_fuel_depleted.name=Топливный стержень с обеднённым плутонием item.rod_polonium.name=Стержень с полонием-210 item.rod_pu238.name=Стержень с плутонием-238 item.rod_pu239.name=Стержень с плутонием-239 @@ -2509,55 +3235,55 @@ item.rod_quad_ac227.name=Счетверённый стержень с актин item.rod_quad_balefire.name=Счетверённый жар-стержень item.rod_quad_balefire_blazing.name=Счетверённый пылающий жар-стержень item.rod_quad_co60.name=Счетверённый стержень с кобальтом-60 -item.rod_quad_cobalt.name=Счетверённый стержень с кобальтом -item.rod_quad_coolant.name=Счетверённый стержень с хладагентом +item.rod_quad_cobalt.name=Кобальтовый счетверённый стержень +item.rod_quad_coolant.name=Счетверённый охлаждающий стержень item.rod_quad_empty.name=Пустой счетверённый стержень -item.rod_quad_euphemium.name=Счетверённый обеднённый шрабидиевый топливный стержень +item.rod_quad_euphemium.name=Выгоревший счетверённый шрабидиевый топливный стержень item.rod_quad_lead.name=Счетверённый стержень со свинцом -item.rod_quad_lithium.name=Счетверённый стержень с литием +item.rod_quad_lithium.name=Счетверённый литиевый стержень item.rod_quad_mox_fuel.name=Счетверённый МОКС-топливный стержень item.rod_quad_mox_fuel_depleted.name=Счетверённый обеднённый МОКС-топливный стержень item.rod_quad_neptunium.name=Счетверённый стержень с нептунием item.rod_quad_plutonium.name=Счетверённый стержень с плутонием item.rod_quad_plutonium_fuel.name=Счетверённый плутониевый топливный стержень -item.rod_quad_plutonium_fuel_depleted.name=Счетверённый обеднённый плутониевый топливный стержень +item.rod_quad_plutonium_fuel_depleted.name=Счетверённый топливный стержень с обеднённым плутонием item.rod_quad_polonium.name=Счетверённый стержень с полонием-210 item.rod_quad_pu238.name=Счетверённый стержень с плутонием-238 item.rod_quad_pu239.name=Счетверённый стержень с плутонием-239 item.rod_quad_pu240.name=Счетверённый стержень с плутонием-240 item.rod_quad_ra226.name=Счетверённый стержень с радием-226 -item.rod_quad_rgp.name=Счетверенный стержень с плутонием реакторного качества +item.rod_quad_rgp.name=Счетверенный стержень из реакторного плутония item.rod_quad_schrabidium.name=Счетверённый стержень с шрабидием-326 item.rod_quad_schrabidium_fuel.name=Счетверённый шрабидиевый топливный стержень -item.rod_quad_schrabidium_fuel_depleted.name=Счетверённый обеднённый шрабидиевый топливный стержень +item.rod_quad_schrabidium_fuel_depleted.name=Счетверённый топливный стержень с обеднённым шрабидием item.rod_quad_solinium.name=Счетверённый стержень с шрабидием-327 item.rod_quad_th232.name=Счетверённый стержень с торием-232 item.rod_quad_thorium_fuel.name=Счетверённый ториевый топливный стержень -item.rod_quad_thorium_fuel_depleted.name=Счетверённый обеднённый ториевый топливный стержень -item.rod_quad_tritium.name=Счетверённый стержень с тритием +item.rod_quad_thorium_fuel_depleted.name=Счетверённый топливный стержень с обеднённым торием +item.rod_quad_tritium.name=Счетверённый тритиевый стержень item.rod_quad_u233.name=Счетверённый стержень с ураном-233 item.rod_quad_u235.name=Счетверённый стержень с ураном-235 item.rod_quad_u238.name=Счетверённый стержень с ураном-238 item.rod_quad_uranium.name=Счетверённый стержень с ураном item.rod_quad_uranium_fuel.name=Счетверённый урановый топливный стержень -item.rod_quad_uranium_fuel_depleted.name=Счетверённыйобеднённый урановый топливный стержень +item.rod_quad_uranium_fuel_depleted.name=Счетверённый топливный стержень с обеднённым ураном item.rod_quad_waste.name=Счетверённый стержень с ядерными отходами item.rod_quad_water.name=Счетверённый стержень с водой item.rod_ra226.name=Стержень с радием-226 -item.rod_reiium.name=Стержень с реиием -item.rod_rgp.name=Стержень с плутонием реакторного качества +item.rod_reiium.name=Реиевый стержень +item.rod_rgp.name=Реакторный плутониевый стержень item.rod_schrabidium.name=Стержень с шрабидием-326 item.rod_schrabidium_fuel.name=Шрабидиевый топливный стержень -item.rod_schrabidium_fuel_depleted.name=Обеднённый шрабидиевый топливный стержень +item.rod_schrabidium_fuel_depleted.name=Топливный стержень с обеднённым шрабидием item.rod_solinium.name=Стержень с шрабидием-327 item.rod_th232.name=Стержень с торием-232 item.rod_thorium_fuel.name=Ториевый топливный стержень item.rod_thorium_fuel_depleted.name=Топливный стержень с обеднённым торием -item.rod_tritium.name=Стержень с тритием +item.rod_tritium.name=Тритиевый стержень item.rod_u233.name=Стержень с ураном-233 item.rod_u235.name=Стержень с ураном-235 item.rod_u238.name=Стержень с ураном-238 -item.rod_unobtainium.name=§9Унобтаниумовый стержень§r +item.rod_unobtainium.name=Унобтаниевый стержень item.rod_uranium.name=Урановый стержень item.rod_uranium_fuel.name=Урановый топливный стержень item.rod_uranium_fuel_depleted.name=Топливный стержень с обеднённым ураном @@ -2576,8 +3302,9 @@ item.rune_thurisaz.name=Аддитивная каталитическая мат item.sat_base.name=Основа спутника item.sat_chip.name=Спутниковый ID-чип item.sat_coord.name=Спутниковый целеуказатель +item.sat_designator.name=Спутниковый лазерный целеуказатель item.sat_foeq.name=ВСАП-МК.I зонд “FOEQ Duna” с экспериментальным ядерным двигателем -item.sat_gerald.name=Строительный Андроид "§aГеральд§r" +item.sat_gerald.name=Геральд Строительный Андроид item.sat_head_laser.name=Луч смерти item.sat_head_mapper.name=Оптическая камера с высоким коэффициентом усиления item.sat_head_radar.name=Радар @@ -2594,7 +3321,7 @@ item.schnitzel_vegan.name=Вегетарианский шницель item.schrabidium_axe.name=Шрабидиевый топор item.schrabidium_boots.name=Шрабидиевые ботинки item.schrabidium_hammer.name=Шрабидиевый молот -item.schrabidium_helmet.name=Шрабидиевый щлем +item.schrabidium_helmet.name=Шрабидиевый шлем item.schrabidium_hoe.name=Шрабидиевая мотыга item.schrabidium_legs.name=Шрабидиевые поножи item.schrabidium_pickaxe.name=Шрабидиевая кирка @@ -2602,7 +3329,9 @@ item.schrabidium_plate.name=Шрабидиевый нагрудник item.schrabidium_shovel.name=Шрабидиевая лопата item.schrabidium_sword.name=Шрабидиевый меч item.scrap.name=Металлолом +item.scrap_oil.name=Масляный металлолом item.screwdriver.name=Отвёртка +item.screwdriver_desh.name=Отвёртка из деша item.scrumpy.name=Бутылка "Скрампи" item.security_boots.name=Ботинки охранника item.security_helmet.name=Шлем охранника @@ -2622,15 +3351,17 @@ item.shimmer_head.name=Тяжелая головка молота item.shimmer_sledge.name=Отлитая кувалда item.singularity.name=Сингулярность item.singularity_counter_resonant.name=Заключённая контр-резонансная сингулярность -item.singularity_spark.name=§dСпарк-сингулярность +item.singularity_spark.name=Спарк-сингулярность item.singularity_super_heated.name=Перегретая резонирующая сингулярность item.siox.name=Лекарство от рака "SiOx" item.siren_track.name=Трек сирены -item.sliding_blast_door_skin0.name=Боковой раздвижной противовзрывной люк Стандартный скин -item.sliding_blast_door_skin1.name=Боковая раздвижная противовзрывная дверь Вариант 1 Скин -item.sliding_blast_door_skin2.name=Боковая раздвижная противовзрывная дверь, вариант 2 скин +item.sliding_blast_door_skin0.name=Боковой раздвижной противовзрывной люк (стандартный скин) +item.sliding_blast_door_skin1.name=Боковая раздвижная противовзрывная дверь (вариант 1) +item.sliding_blast_door_skin2.name=Боковая раздвижная противовзрывная дверь (вариант 2) item.smashing_hammer.name=Убойный молот item.solid_fuel.name=Твердое топливо +item.solid_fuel_presto.name=Бревно из престо +item.solid_fuel_presto_triplet.name=Стопка брёвен из престо item.solinium_core.name=Полу-стабильный солиниевый заряд item.solinium_igniter.name=Солиниевый импульсный воспламенитель item.solinium_kit.name=Солиниевый комплект @@ -2645,6 +3376,14 @@ item.stamp_357.name=Штамп пули .357 Магнум item.stamp_44.name=Штамп пули .44 Магнум item.stamp_50.name=Штамп большого калибра item.stamp_9.name=Штамп малого калибра +item.stamp_desh_357.name=Штамп .357 Magnum (Деш) +item.stamp_desh_44.name=Штамп .44 Magnum (Деш) +item.stamp_desh_50.name=Штамп большого калибра (Деш) +item.stamp_desh_9.name=Штамп малого калибра (Деш) +item.stamp_desh_circuit.name=Штамп микросхемы (Деш) +item.stamp_desh_flat.name=Плоский штамп (Деш) +item.stamp_desh_plate.name=Штамп пластины (Деш) +item.stamp_desh_wire.name=Штамп провода (Деш) item.stamp_iron_circuit.name=Штамп микросхемы (Железо) item.stamp_iron_flat.name=Плоский штамп (Железо) item.stamp_iron_plate.name=Штамп пластины (Железо) @@ -2720,8 +3459,8 @@ item.tank_waste_7.name=Контейнер с отходами item.tank_waste_8.name=Контейнер с отходами item.telepad.name=Телепад item.tem_flakes.name=Хлопья Тэм -item.tem_flakes1.name=Хлопья Тема -item.tem_flakes2.name=Хлопья Тема +item.tem_flakes1.name=Хлопья Тем +item.tem_flakes2.name=Хлопья Тем item.template_folder.name=Папка шаблонов машин item.test_nuke_igniter.name=Активатор item.test_nuke_propellant.name=Взрывчатка @@ -2778,6 +3517,9 @@ item.upgrade_crystallizer.name=Улучшение "Кристаллизатор" item.upgrade_effect_1.name=Улучшение механизма "Эффективность" уровня I item.upgrade_effect_2.name=Улучшение механизма "Эффективность" уровня II item.upgrade_effect_3.name=Улучшение механизма "Эффективность" уровня III +item.upgrade_ejector_1.name=Улучшение извлекателя "Скорость" I уровня +item.upgrade_ejector_2.name=Улучшение извлекателя "Скорость" II уровня +item.upgrade_ejector_3.name=Улучшение извлекателя "Скорость" III уровня item.upgrade_fortune_1.name=Улучшение механизма "Удача" уровня I item.upgrade_fortune_2.name=Улучшение механизма "Удача" уровня II item.upgrade_fortune_3.name=Улучшение механизма "Удача" уровня III @@ -2796,8 +3538,13 @@ item.upgrade_smelter.name=Улучшение "Плавильня" item.upgrade_speed_1.name=Улучшение механизма "Скорость" уровня I item.upgrade_speed_2.name=Улучшение механизма "Скорость" уровня II item.upgrade_speed_3.name=Улучшение механизма "Скорость" уровня III +item.upgrade_stack_1.name=Улучшение извлекателя "Количество стака" I уровня +item.upgrade_stack_2.name=Улучшение извлекателя "Количество стака" II уровня +item.upgrade_stack_3.name=Улучшение извлекателя "Количество стака" III уровня item.upgrade_template.name=Шаблон улучшения механизма item.v1.name=V1 +item.vault_pants.name=Штаны комбинезона Убежища +item.vault_suit.name=Комбинезон Убежища item.volcanic_pickaxe.name=Литая кирка item.wand_d.name=Отладочная палочка item.wand_k.name=Строительная палочка @@ -2834,7 +3581,7 @@ item.watch.name=Сломанные карманные часы item.wd40.name=VT-40 item.weapon_bat.name=По умолчанию Ричарда item.weapon_bat_nail.name=Клише -item.weapon_golf_club.name=Русский бандитская клюшка +item.weapon_golf_club.name=Русская бандитская хоккейная клюшка item.weapon_pipe_lead.name=Ручное управление item.weapon_pipe_rusty.name=Дубина item.weapon_saw.name=Убийство при содействии врача @@ -2855,85 +3602,174 @@ item.wood_gavel.name=Деревянный молоток item.wrench.name=Газовый ключ item.wrench_flipped.name=Лезвие на гаечном ключе item.xanax.name=Препарат "НАКСА" против дигаммы - -#groups - -itemGroup.tabBlocks=Строительные Блоки NTM -itemGroup.tabResource=Руды и газы NTM +item.zirconium_legs.name=Циркониевые штаны +itemGroup.tabBlocks=Руды и блоки NTM itemGroup.tabConsumable=Расходные материалы и снаряжение NTM itemGroup.tabControl=Топливо и элементы механизмов NTM itemGroup.tabMachine=Механизмы NTM itemGroup.tabMissile=Ракеты и спутники NTM itemGroup.tabNuke=Бомбы NTM itemGroup.tabParts=Ресурсы и детали NTM +itemGroup.tabResource=Руды NTM itemGroup.tabRessource=Ресурсы НТМ itemGroup.tabTemplate=Шаблоны NTM itemGroup.tabTest=Тестовая вкладка NTM itemGroup.tabWeapon=Оружие и турели NTM - - - -key.categories.hbm=Nuclear Tech Mod - Extended Edition -key.categories.hbm.craneLoad=Кран РБМК загрузить/выгрузить -key.categories.hbm.craneMoveDown=Кран РБМК назад -key.categories.hbm.craneMoveLeft=Кран РБМК налево -key.categories.hbm.craneMoveRight=Кран РБМК направо -key.categories.hbm.craneMoveUp=Кран РБМК вперед +jei.blackbook=Чёрная книга +jei.construction=Сборка +jei.conversion=Превращение +jei.dfc=Рецепт через ящик с РТС +jei.fluids=Жидкости +jei.recycling=Переработка +jei.silexdigamma=SILEX рецепты (дигамма) +jei.silexgamma=SILEX рецепты (гамма) +jei.silexinfr=SILEX рецепты (инфракрасные) +jei.silexmicro=SILEX рецепты (микроволновые) +jei.silexradio=SILEX рецепты (радио-волны) +jei.silexuv=SILEX рецепты (ультрафиолетовые) +jei.silexvisible=SILEX рецепты (видимые лучи) +jei.silexxray=SILEX рецепты (рентгеновские) +jei.smithing=Ковка +jei.wastedrum=Бочка с отходами +key.categories.hbm.craneLoad=Загрузить кран РБМК +key.categories.hbm.craneMoveDown=РБМК кран вниз +key.categories.hbm.craneMoveLeft=Кран РБМК Левый +key.categories.hbm.craneMoveRight=Кран РБМК правый +key.categories.hbm.craneMoveUp=РБМК краном вверх key.categories.hbm.reload=Перезагрузить key.categories.hbm.toggleBack=Переключить назад -key.categories.hbm.toggleHUD=Переключить HUD -key.fsb_flashlight=Переключить фонарик ФСБ +key.categories.hbm.toggleHUD=Переключить экран +key.categories.hbm=Hbm's Nuclear Tech Mod (NTM) +key.fsb_flashlight=Toggle Фонарики ФСБ key.jetpack_activate=Переключить реактивный ранец key.jetpack_hover=Переключить режим зависания реактивного ранца -key.jetpack_hud=Переключить режим HUD реактивного ранца - +key.jetpack_hud=Переключить режим Jetpack HUD +lingering_potion.effect.potion.hbm_bang=Взвешенное зелье ! ! ! +lingering_potion.effect.potion.hbm_lead=Взвешенное зелье отравления свинцом +lingering_potion.effect.potion.hbm_mutation=Взвешенное зелье гулификации +lingering_potion.effect.potion.hbm_phosphorus=Взвешенное зелье фосфорных ожогов +lingering_potion.effect.potion.hbm_radaway=Взвешенное зелье антирадина +lingering_potion.effect.potion.hbm_radiation=Взвешенное зелье радиации +lingering_potion.effect.potion.hbm_radx=Взвешенное зелье Rad-X +lingering_potion.effect.potion.hbm_stability=Взвешенное зелье стабильности +lingering_potion.effect.potion.hbm_taint=Взвешенное зелье порчи +lingering_potion.effect.potion.hbm_telekinesis=Взвешенное зелье телекинеза +lung_scanner.player_asbestos_health=Здоровье легких [асбест]: +lung_scanner.player_coal_health=Здоровье легких [уголь]: +lung_scanner.player_total_health=Общее здоровье легких: +lung_scanner.title=Диагностика легких +potion.effect.potion.hbm_bang=Зелье ! ! ! +potion.effect.potion.hbm_lead=Зелье отравления свинцом +potion.effect.potion.hbm_mutation=Зелье гулификации +potion.effect.potion.hbm_phosphorus=Зелье фосфорных ожогов +potion.effect.potion.hbm_radaway=Зелье антирадина +potion.effect.potion.hbm_radiation=Зелье радиации +potion.effect.potion.hbm_radx=Зелье Rad-X +potion.effect.potion.hbm_stability=Зелье стабильности +potion.effect.potion.hbm_taint=Зелье порчи +potion.effect.potion.hbm_telekinesis=Зелье телекинеза potion.hbm_bang=! ! ! potion.hbm_lead=Отравление свинцом -potion.hbm_mutation=Заражённое порчей сердце +potion.hbm_mutation=Гулификация potion.hbm_phosphorus=Фосфорные ожоги +potion.hbm_potionsickness=Зельевой передоз +potion.hbm_potionsickness=Послезельевая болезнь potion.hbm_radaway=Антирадин potion.hbm_radiation=Излучение potion.hbm_radx=Рад-X potion.hbm_stability=Стабильность potion.hbm_taint=Порча -potion.hbm_telekinesis=! ! ! +potion.hbm_telekinesis=Телекинез +radar.detectMissiles=Обнаружение ракет +radar.detectPlayers=Обнаружение игроков +radar.redMode=Режим красного камня$Включён: Сигнал редстоуна базируется на дальности$Выключен: Сигнал редстоуна базируется на уровне +radar.smartMode=Умный режим$Выход редстоуна игнорирует восходящие ракеты +rarity.common=Обычный +rarity.epic=Эпический +rarity.legendary=Легендарный +rarity.rare=Редкий +rarity.strange=Странный +rarity.uncommon=Необычный rbmk.boiler.steam=Пар: %s / %s rbmk.boiler.type=Сжатие: %s rbmk.boiler.water=Вода: %s / %s +rbmk.console.assign=Назначить выбранные колонки к экрану #%s +rbmk.console.assignG=Назначить выбранные колонки к графику +rbmk.console.col_temp=Следить за средней температурой ядра +rbmk.console.flux=Следить за средней выработкой энергии +rbmk.console.fuel_depletion=Следить за средней обеднённостью топливных стержней +rbmk.console.fuel_poison=Следить за ксеноновым отравлением +rbmk.console.fuel_temp=Следить за средней температурой топлива +rbmk.console.none=Выключить +rbmk.console.rod_extraction=Следить за средним уровнем стержней rbmk.control.blue=§1Синяя группа rbmk.control.green=§aЗелёная группа rbmk.control.level=%s rbmk.control.purple=§5Фиолетовая группа rbmk.control.red=§cКрасная группа rbmk.control.yellow=§eЖёлтая группа +rbmk.cooler.cooling=-%s°C/сек +rbmk.cooler.cryo=Криогель: %s / 16000mB +rbmk.graph.col_temp=Темп.: %s°C +rbmk.graph.flux=Энергии FE: %s +rbmk.graph.fuel_depletion=Обеднение: %s%% +rbmk.graph.fuel_poison=Ур. ксенона: %s%% +rbmk.graph.fuel_temp=Темп. ядра: %s°C +rbmk.graph.none=Нет +rbmk.graph.rod_extraction=Ур. стержней: %s%% rbmk.heat=Температура компонента: %s rbmk.moderated=Замедленно -rbmk.rod.coreTemp=Температура стержня: %s +rbmk.rod.coreTemp=Температура ядра: %s rbmk.rod.depletion=Обеднение: %s -rbmk.rod.skinTemp=Температура оболочки стержня: %s / %s +rbmk.rod.skinTemp=Температура оболочки: %s / %s rbmk.rod.xenon=Ксеноновое отравление: %s +rbmk.screen.core=Темп. ядра: %s +rbmk.screen.depletion=Разделение: %s +rbmk.screen.flux=Энергии FE: %s +rbmk.screen.rod=Ур. стержней: %s +rbmk.screen.temp=Темп.: %s +rbmk.screen.xenon=Ксенон: %s +splash_potion.effect.potion.hbm_bang=Взрывное зелье ! ! ! +splash_potion.effect.potion.hbm_lead=Взрывное зелье отравления свинцом +splash_potion.effect.potion.hbm_mutation=Взрывное зелье гулификации +splash_potion.effect.potion.hbm_phosphorus=Взрывное зелье фосфорных ожогов +splash_potion.effect.potion.hbm_radaway=Взрывное зелье антирадина +splash_potion.effect.potion.hbm_radiation=Взрывное зелье радиации +splash_potion.effect.potion.hbm_radx=Взрывное зелье Rad-X +splash_potion.effect.potion.hbm_stability=Взрывное зелье стабильности +splash_potion.effect.potion.hbm_taint=Взрывное зелье порчи +splash_potion.effect.potion.hbm_telekinesis=Взрывное зелье телекинеза tile.absorber.name=Поглотитель радиации tile.absorber_green.name=Усовершенствованный поглотитель радиации tile.absorber_pink.name=Элитный поглотитель радиации tile.absorber_red.name=Продвинутый поглотитель радиации tile.acid_block.name=Кислота -tile.ams_base.name=Основание АМС §d[WIP] -tile.ams_emitter.name=Излучатель АМС §d[WIP] -tile.ams_limiter.name=Стабилизатор АМС §d[WIP] +tile.ams_base.name=Основание АМС [Деко] +tile.ams_emitter.name=Излучатель АМС [Деко] +tile.ams_limiter.name=Стабилизатор АМС [Деко] tile.ancient_scrap.name=Древние обломки tile.anvil_bismuth.name=Висмутовая наковальня tile.anvil_dnt.name=Динейтрониевая наковальня tile.anvil_ferrouranium.name=Ферроураниевая наковальня tile.anvil_iron.name=Железная наковальня tile.anvil_lead.name=Свинцовая наковальня -tile.anvil_meteorite.name=Метеоритовая наковальня +tile.anvil_meteorite.name=Метеоритная наковальня tile.anvil_murky.name=Мрачная наковальня +tile.anvil_osmiridium.name=Осмиридиевая наковальня tile.anvil_schrabidate.name=Наковальня из шрабидата железа tile.anvil_starmetal.name=Наковальня из звёздного металла tile.anvil_steel.name=Стальная наковальня tile.ash_digamma.name=Пепел tile.asphalt.name=Асфальт +tile.asphalt_light.name=Асфальтированный светящийся камень tile.balefire.name=Жар-пламя +tile.baleonitite_0.name=Балеонитит +tile.baleonitite_1.name=Горячий балеонитит +tile.baleonitite_2.name=Кипящий балеонитит +tile.baleonitite_3.name=Пылающий балеонитит +tile.baleonitite_4.name=Адский балеонитит +tile.baleonitite_core.name=Балеонитит-кориум +tile.baleonitite_slaked.name=Погашенный балеонитит tile.barbed_wire.name=Колючая проволока tile.barbed_wire_acid.name=Кислотная колючая проволока tile.barbed_wire_fire.name=Пылающая колючая проволока @@ -2956,15 +3792,18 @@ tile.basalt_polished.name=Полированный базальт tile.basalt_smooth.name=Гладкий базальт tile.basalt_sulfur.name=Богатый серой базальт tile.basalt_tiles.name=Базальтовая плитка -tile.blast_door.name=Раздвижная дверь +tile.blast_door.name=Раздвижные двери tile.block_actinium.name=Блок актиния tile.block_advanced_alloy.name=Блок продвинутого сплава tile.block_aluminium.name=Алюминиевый блок tile.block_asbestos.name=Асбест -tile.block_australium.name=§6Австралиевый блок +tile.block_au198.name=Блок золота-198 +tile.block_australium.name=Австралиевый блок +tile.block_bakelite.name=Блок бакелита tile.block_beryllium.name=Бериллиевый блок tile.block_bismuth.name=Блок висмута tile.block_boron.name=Блок бора +tile.block_cadmium.name=Кадмиевый блок tile.block_cap_fritz.name=Блок крышек от Фрицз-Кола tile.block_cap_korl.name=Блок крышек от Корл tile.block_cap_nuka.name=Блок крышек от Ядер-колы @@ -2973,12 +3812,14 @@ tile.block_cap_rad.name=Блок крышек от С~Колы РАД tile.block_cap_sparkle.name=Блок крышек от С~Колы tile.block_cap_star.name=Блок крышек со звездой от Сансет Сарсапарилла tile.block_cap_sunset.name=Блок крышек от Сансет Сарсапарилла +tile.block_coal_infernal.name=Блок адского угля tile.block_cobalt.name=Кобальтовый блок +tile.block_coke.name=Блок коксового угля tile.block_coltan.name=Блок колтана -tile.block_combine_steel.name=Блок Стали Альянса +tile.block_combine_steel.name=Блок CMB-Стали tile.block_copper.name=Медный блок tile.block_corium.name=Кориум -tile.block_corium_cobble.name=Остывшый кориум +tile.block_corium_cobble.name=Буриум tile.block_daffergon.name=Даффергоновый блок tile.block_desh.name=Укрепленный блок деш tile.block_dineutronium.name=Блок динейтрония @@ -2999,6 +3840,7 @@ tile.block_graphite_source.name=Источник нейтронов поленн tile.block_insulator.name=Рулон изолятора tile.block_lanthanium.name=Блок лантания tile.block_lead.name=Свинцовый блок +tile.block_lignite.name=Блок бурого угля tile.block_lithium.name=Литиевый блок tile.block_magnetized_tungsten.name=Блок намагниченного вольфрама tile.block_meteor.name=Блок метеорита @@ -3020,9 +3862,11 @@ tile.block_pu239.name=Блок плутония-239 tile.block_pu240.name=Блок плутония-240 tile.block_pu_mix.name=Блок плутония реакторного качества tile.block_ra226.name=Блок радия-226 +tile.block_radspice.name=Жар-блок tile.block_red_copper.name=Блок красной меди tile.block_red_phosphorus.name=Блок красного фосфора tile.block_reiium.name=Реиевый блок +tile.block_rubber.name=Резиновый блок tile.block_saturnite.name=Блок Сатурнита tile.block_schrabidate.name=Блок шрабидата железа tile.block_schrabidium.name=Блок шрабидия @@ -3032,6 +3876,9 @@ tile.block_schraranium.name=Блок шрарания tile.block_scrap.name=Блок металлолома tile.block_semtex.name=Блок семтекса tile.block_smore.name=Блок с'мора +tile.block_solid_fuel.name=Блок твёрдого топлива +tile.block_solid_fuel_presto.name=Блок брёвен из престо +tile.block_solid_fuel_presto_triplet.name=Блок из стопок брёвен из престо tile.block_solinium.name=Солиниевый блок tile.block_starmetal.name=§9Блок звёздного металла§r tile.block_steel.name=Стальной блок @@ -3046,7 +3893,7 @@ tile.block_tungsten.name=Вольфрамовый блок tile.block_u233.name=Блок урана-233 tile.block_u235.name=Блок урана-235 tile.block_u238.name=Блок урана-238 -tile.block_unobtainium.name=Унобтаниумовый блок +tile.block_unobtainium.name=Унобтаниевый блок tile.block_uranium.name=Урановый блок tile.block_uranium_fuel.name=Блок уранового топлива tile.block_verticium.name=Вертициевый блок @@ -3059,36 +3906,40 @@ tile.block_yellowcake.name=Блок йеллоукейка tile.block_zirconium.name=Блок циркония tile.bm_power_box.name=Выключатель питания Чёрной Мезы tile.boat.name=Лодка +tile.bomb.tnt_disabled=[ Поджог при разрушении: отключен ] +tile.bomb.tnt_enabled=[ Поджог при разрушении: включен ] tile.bomb_multi.name=Многоцелевая бомба tile.bomber.name=Разбившийся бомбардировщик tile.book_guide.name=Книга знаний tile.boxcar.name=Грузовой вагон tile.brick_asbestos.name=Асбестовые кирпичи -tile.brick_asbestos_slab.name=Асбестовая кирпичная плита -tile.brick_asbestos_stairs.name=Лестница из асбестового кирпича +tile.brick_asbestos_slab.name=Плита из асбестового кирпича +tile.brick_asbestos_stairs.name=Ступеньки из асбестового кирпича tile.brick_compound.name=Сетка из соединения tile.brick_compound_slab.name=Сложная сетчатая плита tile.brick_compound_stairs.name=Составная сетчатая лестница tile.brick_concrete.name=Бетонные кирпичи tile.brick_concrete_broken.name=Сломанные бетонные кирпичи tile.brick_concrete_broken_slab.name=Сломанная бетонная плита -tile.brick_concrete_broken_stairs.name=Сломанная бетонная лестница +tile.brick_concrete_broken_stairs.name=Сломанные бетонные ступеньки tile.brick_concrete_cracked.name=Потресканные бетонные кирпичи tile.brick_concrete_cracked_slab.name=Треснувшая бетонная плита -tile.brick_concrete_cracked_stairs.name=Треснувшая бетонная лестница +tile.brick_concrete_cracked_stairs.name=Треснувшие бетонные ступеньки tile.brick_concrete_marked.name=Обозначенные бетонные кирпичи tile.brick_concrete_mossy.name=Замшелые бетонные кирпичи -tile.brick_concrete_mossy_slab.name=Замшелая бетонная плита -tile.brick_concrete_mossy_stairs.name=Замшелые бетонные лестницы -tile.brick_concrete_slab.name=Бетонная кирпичная плита -tile.brick_concrete_stairs.name=Бетонные кирпичные лестницы -tile.brick_dungeon.name=Берцелианит кирпичи +tile.brick_concrete_mossy_slab.name=Плита из замшелых бетонных кирпичей +tile.brick_concrete_mossy_stairs.name=Ступеньки из замшелых бетонных кирпичей +tile.brick_concrete_slab.name=Плита из бетонного кирпича +tile.brick_concrete_stairs.name=Ступеньки из бетонного кирпича +tile.brick_ducrete.name=Дюкретовые кирпичи +tile.brick_dungeon.name=Берцелианитовые кирпичи tile.brick_dungeon_circle.name=Берцелианитовый круг tile.brick_dungeon_flat.name=Берцелианит tile.brick_dungeon_tile.name=Берцелианитовая плитка tile.brick_jungle.name=Энаргитовые кирпичи tile.brick_jungle_circle.name=Круг Механиста tile.brick_jungle_cracked.name=Потресканные энаргитовые кирпичи +tile.brick_jungle_fragile.name=Хрупкие энаргитовые кирпичи tile.brick_jungle_glyph.name=Энаргитовые кирпичи с глифами tile.brick_jungle_lava.name=Магматические энаргитовые кирпичи tile.brick_jungle_mystic.name=Магические энаргитовые кирпичи @@ -3096,84 +3947,108 @@ tile.brick_jungle_ooze.name=Радиоактивные энаргитовые к tile.brick_jungle_trap.name=Энаргитовые кирпичи-ловушка tile.brick_light.name=Легкие кирпичи tile.brick_obsidian.name=Обсидиановые кирпичи -tile.brick_obsidian_slab.name=Плита из обсидиановых кирпичей -tile.brick_obsidian_stairs.name=Ступеньки из обсидиановых кирпичей +tile.brick_obsidian_slab.name=Плита из обсидианового кирпича +tile.brick_obsidian_stairs.name=Ступеньки из обсидианового кирпича tile.broadcaster_pc.name=Повреждённый передатчик +tile.cable_detector.name=Редстоуновый рубильник +tile.cable_diode.desc=§6Ограничивает пропуск энергии и её направление$§eИспользуйте отвёртку, чтобы увеличить пропуск энергии$§eИспользуйте ручную дрель, чтобы уменьшить пропуск энергии$§eИспользуйте разминирующее устройство, чтобы настроить приоритет зарядки +tile.cable_diode.name=Электрический диод tile.cable_switch.name=Рубильник tile.cheater_virus.name=Охлаждённый Эвфемий tile.cheater_virus_seed.name=Нестабильный блок шрабидата эвфемия tile.chlorine_gas.name=Хлор tile.cluster_aluminium.name=Алюминиевый рудный кластер -tile.cluster_depth_iron.name=Глубинный железорудный кластер +tile.cluster_copper.name=Медный рудный кластер +tile.cluster_depth_iron.name=Глубинный железный рудный кластер tile.cluster_depth_titanium.name=Глубинный титановый рудный кластер tile.cluster_depth_tungsten.name=Глубинный вольфрамовый рудный кластер -tile.cluster_iron.name=Железорудный кластер +tile.cluster_iron.name=Железный рудный кластер tile.cluster_titanium.name=Титановый рудный кластер -tile.cmb_brick.name=Плита из Стали Альянса +tile.cmb_brick.name=Плита CMB-стали tile.cmb_brick_reinforced.name=Усиленные CMB-кирпичи -tile.cmb_brick_reinforced_slab.name=Плита из Усиленных CMB-кирпичей -tile.cmb_brick_reinforced_stairs.name=Ступеньки из Усиленных CMB-кирпичей +tile.cmb_brick_reinforced_slab.name=Плита из усиленных CMB-кирпичей +tile.cmb_brick_reinforced_stairs.name=Ступеньки из усиленных CMB-кирпичей tile.compact_launcher.name=Компактная пусковая площадка tile.concrete.name=Бетонная плитка tile.concrete_asbestos.name=Асбестобетон tile.concrete_asbestos_slab.name=Плита из асбестобетона tile.concrete_asbestos_stairs.name=Ступеньки из асбестобетона tile.concrete_black.name=Черный бетон -tile.concrete_black_slab.name=Черная бетонная плита -tile.concrete_black_stairs.name=Черные бетонные лестницы +tile.concrete_black_slab.name=Плита из черного бетона +tile.concrete_black_stairs.name=Ступеньки из черного бетона tile.concrete_blue.name=Синий бетон -tile.concrete_blue_slab.name=Синяя бетонная плита -tile.concrete_blue_stairs.name=Голубая бетонная лестница +tile.concrete_blue_slab.name=Плита из синего бетона +tile.concrete_blue_stairs.name=Ступеньки из синего бетона tile.concrete_brown.name=Коричневый бетон -tile.concrete_brown_slab.name=Коричневая бетонная плита -tile.concrete_brown_stairs.name=Коричневые бетонные лестницы +tile.concrete_brown_slab.name=Плита из коричневого бетона +tile.concrete_brown_stairs.name=Ступеньки из коричневого бетона +tile.concrete_colored.black.name=Черный бетон +tile.concrete_colored.blue.name=Синий бетон +tile.concrete_colored.brown.name=Коричневый бетон +tile.concrete_colored.cyan.name=Бирюзовый бетон +tile.concrete_colored.gray.name=Серый бетон +tile.concrete_colored.green.name=Зелёный бетон +tile.concrete_colored.lightBlue.name=Светло-синий бетон +tile.concrete_colored.lime.name=Лаймовый бетон +tile.concrete_colored.magenta.name=Пурпурный бетон +tile.concrete_colored.orange.name=Оранжевый бетон +tile.concrete_colored.pink.name=Розовый бетон +tile.concrete_colored.purple.name=Фиолетовый бетон +tile.concrete_colored.red.name=Красный бетон +tile.concrete_colored.silver.name=Светло-серый бетон +tile.concrete_colored.white.name=Белый бетон +tile.concrete_colored.yellow.name=Жёлтый бетон tile.concrete_cyan.name=Голубой бетон -tile.concrete_cyan_slab.name=Голубая бетонная плита -tile.concrete_cyan_stairs.name=Голубая бетонная лестница +tile.concrete_cyan_slab.name=Плита из голубого бетона +tile.concrete_cyan_stairs.name=Ступеньки из голубого бетон tile.concrete_gray.name=Серый бетон -tile.concrete_gray_slab.name=Серая бетонная плита -tile.concrete_gray_stairs.name=Серые бетонные лестницы +tile.concrete_gray_slab.name=Плита из серого бетона +tile.concrete_gray_stairs.name=Ступеньки из серого бетона tile.concrete_green.name=Зеленый бетон -tile.concrete_green_slab.name=Зеленая бетонная плита -tile.concrete_green_stairs.name=Зеленая бетонная лестница +tile.concrete_green_slab.name=Плита из зеленого бетона +tile.concrete_green_stairs.name=Ступеньки из зеленого бетона tile.concrete_light_blue.name=Светло-голубой бетон -tile.concrete_light_blue_slab.name=Голубая бетонная плита -tile.concrete_light_blue_stairs.name=Голубая бетонная лестница -tile.concrete_lime.name=Известковый бетон -tile.concrete_lime_slab.name=Известковая бетонная плита -tile.concrete_lime_stairs.name=Известковые бетонные лестницы -tile.concrete_magenta.name=пурпурный бетон -tile.concrete_magenta_slab.name=Пурпурная бетонная плита -tile.concrete_magenta_stairs.name=Пурпурные бетонные лестницы +tile.concrete_light_blue_slab.name=Плита из светло-голубого бетона +tile.concrete_light_blue_stairs.name=Ступеньки из светло-голубого бетона +tile.concrete_lime.name=Лаймовый бетон +tile.concrete_lime_slab.name=Плита из лаймового бетона +tile.concrete_lime_stairs.name=Ступеньки из лаймового бетона +tile.concrete_magenta.name=Пурпурный бетон +tile.concrete_magenta_slab.name=Плита из пурпурного бетона +tile.concrete_magenta_stairs.name=Ступеньки из пурпурного бетона tile.concrete_orange.name=Оранжевый бетон -tile.concrete_orange_slab.name=Оранжевая бетонная плита -tile.concrete_orange_stairs.name=Оранжевая бетонная лестница +tile.concrete_orange_slab.name=Плита из оранжевого бетона +tile.concrete_orange_stairs.name=Ступеньки из оранжевого бетона tile.concrete_pillar.name=Арматурный железобетонный столб tile.concrete_pink.name=Розовый бетон -tile.concrete_pink_slab.name=Розовая бетонная плита -tile.concrete_pink_stairs.name=Розовые бетонные лестницы +tile.concrete_pink_slab.name=Плита из розового бетона +tile.concrete_pink_stairs.name=Ступеньки из розового бетона tile.concrete_purple.name=Фиолетовый бетон -tile.concrete_purple_slab.name=Фиолетовая бетонная плита -tile.concrete_purple_stairs.name=Фиолетовые бетонные лестницы +tile.concrete_purple_slab.name=Плита из фиолетового бетона +tile.concrete_purple_stairs.name=Ступеньки из фиолетового бетона tile.concrete_red.name=Красный бетон -tile.concrete_red_slab.name=Красная бетонная плита -tile.concrete_red_stairs.name=Красная бетонная лестница +tile.concrete_red_slab.name=Плита из красного бетона +tile.concrete_red_stairs.name=Ступеньки из красного бетона tile.concrete_silver.name=Светло-серый бетон -tile.concrete_silver_slab.name=Серебряная бетонная плита -tile.concrete_silver_stairs.name=Серебряная бетонная лестница +tile.concrete_silver_slab.name=Плита из светло-серого бетона +tile.concrete_silver_stairs.name=Ступеньки из светло-серого бетона tile.concrete_slab.name=Бетонная плита tile.concrete_smooth.name=Бетон -tile.concrete_smooth_slab.name=Гладкая бетонная плита -tile.concrete_smooth_stairs.name=Гладкие бетонные лестницы -tile.concrete_stairs.name=Бетонные лестницы +tile.concrete_smooth_slab.name=Плита из гладкого бетона +tile.concrete_smooth_stairs.name=Ступеньки из гладкого бетона +tile.concrete_stairs.name=Ступеньки из бетона tile.concrete_white.name=Белый бетон -tile.concrete_white_slab.name=Белая бетонная плита -tile.concrete_white_stairs.name=Белая бетонная лестница +tile.concrete_white_slab.name=Плита из белого бетона +tile.concrete_white_stairs.name=Ступеньки из белого бетона tile.concrete_yellow.name=Желтый бетон -tile.concrete_yellow_slab.name=Желтая бетонная плита -tile.concrete_yellow_stairs.name=Желтые бетонные лестницы -tile.control_panel0.name=Панель управления §d[WIP] +tile.concrete_yellow_slab.name=Плита из желтого бетона +tile.concrete_yellow_stairs.name=Ступеньки из желтого бетона +tile.control_panel0.name=Панель управления +tile.conveyor.name=Конвейер +tile.conveyor_express.name=Быстрый конвейер tile.corium_block.name=Кориум +tile.crane_ejector.name=Конвейерный извлекатель +tile.crane_inserter.name=Конвейерный вставщик tile.crashed_bomb.name=Неразорвавшаяся бомба tile.crate.name=Ящик снабжения tile.crate_ammo.name=Ящик из звёздного металла @@ -3183,7 +4058,7 @@ tile.crate_iron.name=Железный ящик tile.crate_jungle.name=Ящик из энаргита tile.crate_lead.name=Ящик с радиоактивными материалами tile.crate_metal.name=Ящик с механизмами -tile.crate_red.name=§cКрасный ящик +tile.crate_red.name=Красный ящик tile.crate_steel.name=Стальной ящик tile.crate_tungsten.name=Вольфрамовый ящик tile.crate_weapon.name=Ящик с оружием @@ -3218,20 +4093,21 @@ tile.deco_pipe_rim_marked.name=Газовая труба (Обрамленная tile.deco_pipe_rim_red.name=Красная стальная труба (Обрамленная) tile.deco_pipe_rim_rusted.name=Ржавая стальная труба (Обрамленная) tile.deco_pipe_rusted.name=Ржавая стальная труба -tile.deco_rbmk.name=Деко-блок РБМК -tile.deco_rbmk_smooth=Гладкий деко-блок РБМК +tile.deco_rbmk.name=Декоративный блок РБМК +tile.deco_rbmk_smooth.name=Гладкие деко-блоки РБМК +tile.deco_rbmk_smooth=Гладкий декоративный блок РБМК tile.deco_red_copper.name=Красномедный декоративный блок -tile.deco_sat_foeq.name=PEAF - Зонд Mk.I FOEQ Duna с экспериментальной ядерной силовой установкой (блок Deco) -tile.deco_sat_laser.name=Орбитальный луч смерти (Деко) -tile.deco_sat_mapper.name=Спутник для картографирования поверхности (Деко) -tile.deco_sat_radar.name=Спутник радиолокационной съемки Деко) -tile.deco_sat_resonator.name=Спутник с Ксениум Резонатором (Деко) -tile.deco_sat_scanner.name=Спутник с модулем сканирования ресурсов глубины (Деко) +tile.deco_sat_foeq.name=PEAF - Зонд Mk.I FOEQ Duna с экспериментальной ядерной силовой установкой (декорация) +tile.deco_sat_laser.name=Орбитальный луч смерти (декорация) +tile.deco_sat_mapper.name=Спутник для картографирования поверхности (декорация) +tile.deco_sat_radar.name=Спутник радиолокационной съемки (декорация) +tile.deco_sat_resonator.name=Спутник с Зен-резонатором (декорация) +tile.deco_sat_scanner.name=Спутник с модулем сканирования ресурсов глубины (декорация) tile.deco_steel.name=Стальной декоративный блок tile.deco_titanium.name=Титановый декоративный блок tile.deco_tungsten.name=Вольфрамовый декоративный блок tile.decon.name=Обеззараживатель игрока -tile.decon_digamma.name=Дигамма обеззараживатель +tile.decon_digamma.name=Дигамма-обеззараживатель игрока tile.depth_brick.name=Глубинные кирпичи tile.depth_dnt.name=ДНТ-усиленные глубинные кирпичи tile.depth_nether_brick.name=Адские глубинные кирпичи @@ -3241,25 +4117,27 @@ tile.det_charge.name=Заряд взрывчатки tile.det_cord.name=Детонирующий шнур tile.det_miner.name=Шахтёрский заряд tile.det_nuke.name=Ядерный заряд -tile.dfc_core.name=Ядро РТС +tile.dfc_core.name=Реактор тёмного синтеза (РТС) tile.dfc_emitter.name=Излучатель РТС tile.dfc_injector.name=Топливный инжектор РТС tile.dfc_receiver.name=Приёмник РТС tile.dfc_stabilizer.name=Стабилизатор РТС -tile.digamma_matter.name=Дигамма-Материя +tile.digamma_matter.name=Дигаммариум +tile.dirt_dead.name=Мертвая земля +tile.dirt_oily.name=Масляная земля tile.drill_pipe.name=Бур -tile.ducrete.name=Дюкрет -tile.ducrete_brick.name=Дюкретные кирпичи -tile.ducrete_brick_slab.name=Плита из дюкретных кирпичей -tile.ducrete_brick_stairs.name=Ступеньки из дюкретных кирпичей +tile.ducrete.name=Дюкретовая плитка +tile.ducrete_brick.name=Дюкретовый кирпич +tile.ducrete_brick_slab.name=Плита из дюкретового кирпича +tile.ducrete_brick_stairs.name=Ступеньки из дюкретового кирпича tile.ducrete_reinforced.name=Усиленный дюкрет tile.ducrete_reinforced_slab.name=Плита из усиленного дюкрета tile.ducrete_reinforced_stairs.name=Ступеньки из усиленного дюкрета -tile.ducrete_slab.name=Плита из дюкретовая -tile.ducrete_smooth.name=Дюкретовая плитка -tile.ducrete_smooth_slab.name=Гладкая дюкретовая плита -tile.ducrete_smooth_stairs.name=Гладкая дюкретовая плита -tile.ducrete_stairs.name=Ступеньки из дюкрета +tile.ducrete_slab.name=Дюкретовая плита +tile.ducrete_smooth.name=Гладкий дюкрет +tile.ducrete_smooth_slab.name=Плита из гладкого дюкрета +tile.ducrete_smooth_stairs.name=Ступеньки из гладкого дюкрета +tile.ducrete_stairs.name=Дюкретовые ступеньки tile.dummy_block.name=Блок-пустышка tile.dummy_port.name=Блок-пустышка (Розетка) tile.dungeon_chain.name=Металлическая цепь @@ -3275,9 +4153,9 @@ tile.factory_titanium_furnace.name=Люк доступа базовой фабр tile.factory_titanium_hull.name=Корпус базовой фабрики tile.fallout.name=Радиоактивный осадок tile.fence_metal.name=Проволочная сетка -tile.field_disturber.name=Генератор высокоэлектрического поля "Джаммер" -tile.fire_digamma.name=Дигамма Огонь -tile.fire_door.name=Пожарная дверь +tile.field_disturber.name=Генератор выкокоэнергетического поля "Джаммер" +tile.fire_digamma.name=Блок дигамма огня +tile.fire_door.name=Дверь пожарного выхода tile.fireworks.charges=Зарядов: %s tile.fireworks.color=Цвет: %s tile.fireworks.message=Послание: %s @@ -3285,42 +4163,49 @@ tile.fireworks.name=Батарея фейерверков tile.flame_war.name=Война в коробке tile.float_bomb.name=Левитационная бомба tile.fluid_duct.name=Универсальная жидкостная труба -tile.fluid_duct_mk2.name=Универсальный воздуховод -tile.fluid_duct_solid.name=Герметичный канал для жидкости +tile.fluid_duct_mk2.name=Универсальная жидкостная труба +tile.fluid_duct_solid.name=Герметичный жидкостный канал +tile.fluid_duct_solid_sealed.name=Герметичный жидкостный канал (с защитой от радиации) +tile.foam_layer.name=Слой пены tile.fraction_spacer.name=Разделитель ректификационной колонны tile.frozen_dirt.name=Замороженная земля tile.frozen_grass.name=Замороженная трава tile.frozen_log.name=Замороженное бревно tile.frozen_planks.name=Замороженные доски +tile.furnace_iron.desc=Более большая и эффективная печь,$не тратит топливо в простое. +tile.furnace_iron.name=Железная печь +tile.furnace_steel.desc=Очень большая печь, которая может давать бонусы при плавке руды. $Необходим дополнительный источник нагрева.$ +tile.furnace_steel.name=Большая стальная печь tile.fusion_center.name=Центральный элемент магнита tile.fusion_conductor.name=Сверхпроводящий магнит +tile.fusion_core.name=Контроллер термоядерного реактора tile.fusion_core_block.name=Управление термоядерным реактором tile.fusion_hatch.name=Люк доступа термоядерного реактора tile.fusion_heater.name=Компонент нагревателя плазмы tile.fusion_motor.name=Элемент магнитного мотора -tile.fwatz_computer.name=Матрица вычисления реактора Ватцз-установки +tile.fwatz_computer.name=Матрица вычисления реактора WATS-установки tile.fwatz_conductor.name=4000K суперпроводящий магнит tile.fwatz_cooler.name=Стенка регенеративной цистерны хладагента -tile.fwatz_core.name=Контроллер реактора Ватцз-установки -tile.fwatz_hatch.name=Люк доступа к реактору Ватцз-установки +tile.fwatz_core.name=Контроллер реактора WATS-установки +tile.fwatz_hatch.name=Люк доступа к реактору WATS-установки tile.fwatz_plasma.name=Дестабилизированная антишрабидиумная плазма -tile.fwatz_scaffold.name=Структурная поддержка реактора Ватцз-установки +tile.fwatz_scaffold.name=Структурная поддержка реактора WATS-установки tile.fwatz_tank.name=Элемент регенеративной цистерны хладагента tile.gas_asbestos.name=Частицы асбеста в воздухе -tile.gas_coal.name=Частицы угля в воздухе +tile.gas_coal.name=Воздушная угольная пыль tile.gas_duct.name=Газовая труба tile.gas_duct_solid.name=Покрытая газовая труба -tile.gas_explosive.name=§cВзрывоопасный газ -tile.gas_flammable.name=§6Горючий газ +tile.gas_explosive.name=Взрывоопасный газ +tile.gas_flammable.name=Горючий газ tile.gas_monoxide.name=Угарный газ tile.gas_radon.name=Радон tile.gas_radon_dense.name=Плотный радон tile.gas_radon_tomb.name=Могильный газ -tile.geiger.name=Стационарный Счетчик Гейгера -tile.geysir_chlorine.name=Хлорофитовый Гейзер -tile.geysir_nether.name=Магмовый Гейзер -tile.geysir_vapor.name=Паровой Гейзер -tile.geysir_water.name=Водяной Гейзер +tile.geiger.name=Счетчик Гейгера +tile.geysir_chlorine.name=Хлорный гейзер +tile.geysir_nether.name=Магмовый гейзер +tile.geysir_vapor.name=Паровой гейзер +tile.geysir_water.name=Водяной гейзер tile.glass_ash.name=Пепельное стекло tile.glass_boron.name=Борное стекло tile.glass_lead.name=Свинцовое стекло @@ -3328,6 +4213,9 @@ tile.glass_polonium.name=Полониевое стекло tile.glass_quartz.name=Кварцевое стекло tile.glass_trinitite.name=Тринититовое стекло tile.glass_uranium.name=Урановое стекло +tile.gneiss_brick.name=Сланцевые кирпичи +tile.gneiss_chiseled.name=Высеченный сланец +tile.gneiss_tile.name=Сланцевая плитка tile.gravel_diamond.name=Измельченные алмазы tile.gravel_obsidian.name=Измельченный обсидиан tile.hadron_access.name=Терминал доступа ускорителя частиц @@ -3337,7 +4225,7 @@ tile.hadron_coil_alloy.name=Плотная сверхпроводящая кат tile.hadron_coil_chlorophyte.name=Плотная хлорофитовая катушка tile.hadron_coil_gold.name=Плотная золотая катушка tile.hadron_coil_magtung.name=Плотная сверхпроводящая 4000K катушка -tile.hadron_coil_mese.name=§eПлотная месе катушка +tile.hadron_coil_mese.name=Плотная месе катушка tile.hadron_coil_neodymium.name=Плотная неодимовая катушка tile.hadron_coil_schrabidate.name=Плотная шрабидатавая катушка tile.hadron_coil_schrabidium.name=Плотная шрабидиевая катушка @@ -3349,10 +4237,29 @@ tile.hadron_plating_black.name=Обшивка ускорителя частиц tile.hadron_plating_blue.name=Обшивка ускорителя частиц (Синий) tile.hadron_plating_glass.name=Обшивка ускорителя частиц (Окошко) tile.hadron_plating_striped.name=Обшивка ускорителя частиц (Крутые полосы опасности) -tile.hadron_plating_voltz.name=Обшивка ускорителя частиц (Вольтз) +tile.hadron_plating_voltz.name=Обшивка ускорителя частиц (ВОЛЬТЗ) tile.hadron_plating_yellow.name=Обшивка ускорителя частиц (Жёлтый) tile.hadron_power.name=Порт питания ускорителя частиц (1MHE) +tile.hadron_power_100m.name=Порт питания ускорителя частиц (100MHE) +tile.hadron_power_10g.name=Порт питания ускорителя частиц (10GHE) +tile.hadron_power_10m.name=Порт питания ускорителя частиц (10MHE) +tile.hadron_power_1g.name=Порт питания ускорителя частиц (1GHE) tile.hazmat.name=Блок защитной ткани +tile.heat_boiler.desc=Большой котел, который может нагревать воду или нефть. $Необходим дополнительный источник нагрева.$Heat transfer rate: ΔT*0.01 TU/t +tile.heat_boiler.name=Большой котел +tile.heater_electric.desc=Использует энергию для производства тепла.$Принимает тепло снизу с 85% эффективностью.$Можно настроить с помощью отвёртки и ручной дрели. +tile.heater_electric.name=Электрический нагреватель +tile.heater_firebox.desc=Сжигает твердое топливо для создания тепла. +tile.heater_firebox.name=Нагревательная основа +tile.heater_heatex.desc=Производит тепло из горячих жидкостей. +tile.heater_heatex.name=Теплообменный нагреватель +tile.heater_oilburner.desc=Использует жидкости для производства тепла.$§eИспользуйте отвёртку для увеличения пропускной способности.$§eИспользуйте ручную дрель для уменьшения пропускной способности. +tile.heater_oilburner.name=Жидкостная горелка +tile.heater_oven.desc=Сжигает твёрдое топливо, производя тепло.$Принимает тепло снизу с 50% эффективностью. +tile.heater_oven.name=Нагревательная печь +tile.heater_rt.desc=Производит тепло из РИТЭГ таблеток +tile.heater_rt.name=Радиоизотопный нагреватель +tile.hev_battery.name=Батарея костюма tile.iter.name=Термоядерный реактор tile.ladder_aluminium.name=Алюминиевая лестница tile.ladder_cobalt.name=Кобальтовая лестница @@ -3367,7 +4274,11 @@ tile.ladder_sturdy.name=Прочная деревянная лестница tile.ladder_titanium.name=Титановая лестница tile.ladder_tungsten.name=Вольфрамовая лестница tile.lamp_demon.name=Лампа из заряда-демона -tile.large_vehicle_door.name=Большая транспортная дверь +tile.lamp_tritium_blue_off.name=Синяя тритиевая лампа +tile.lamp_tritium_blue_on.name=Синяя тритиевая лампа +tile.lamp_tritium_green_off.name=Зелёная тритиевая лампа +tile.lamp_tritium_green_on.name=Зелёная тритиевая лампа +tile.large_vehicle_door.name=Большая транспортная бункерная дверь tile.launch_pad.name=Пусковая площадка tile.launch_table.name=Большая пусковая площадка tile.lox_barrel.name=Бочка с жидким кислородом @@ -3383,37 +4294,50 @@ tile.machine_boiler_electric_off.name=Электрический котёл tile.machine_boiler_electric_on.name=Электрический котёл tile.machine_boiler_off.name=Паровой котёл tile.machine_boiler_on.name=Паровой котёл -tile.machine_boiler_rtg_off.name=РИТЭГ-котёл -tile.machine_boiler_rtg_on.name=РИТЭГ-котёл +tile.machine_boiler_rtg_off.name=Котел РИТЭГ +tile.machine_boiler_rtg_on.name=Котел РИТЭГ +tile.machine_catalytic_cracker.name=Башня каталитического крекинга tile.machine_centrifuge.name=Центрифуга +tile.machine_chemfac.name=Химический завод tile.machine_chemplant.name=Химическая установка tile.machine_chungus.name=Паровая турбина "Левиафан" tile.machine_coal_off.name=Генератор внутреннего сгорания tile.machine_coal_on.name=Генератор внутреннего сгорания -tile.machine_combine_factory.name=Печь из Стали Альянса -tile.machine_condenser.name=Конденсатор +tile.machine_combine_factory.name=Печь из CMB-стали +tile.machine_condenser.name=Конденсатор пара tile.machine_controller.name=Блок удалённого доступа к реактору tile.machine_converter_he_rf.name=Конвертер энергии HE в RF tile.machine_converter_rf_he.name=Конвертер энергии RF в HE tile.machine_crystallizer.name=Рудный окислитель tile.machine_cyclotron.name=Циклотрон +tile.machine_desh_battery.name=Дещ энергохранилище tile.machine_detector.name=Детектор мощности tile.machine_deuterium.name=Дейтериевый экстрактор +tile.machine_deuterium_extractor.name=Дейтериевый экстрактор +tile.machine_deuterium_tower.name=Дейтериевый экстрактор (башня) tile.machine_diesel.name=Дизельный генератор +tile.machine_difurnace_ext.name=Расширение доменной печи tile.machine_difurnace_off.name=Доменная печь tile.machine_difurnace_on.name=Доменная печь +tile.machine_difurnace_rtg_off.name=Ядерная доменная печь +tile.machine_difurnace_rtg_on.name=Ядерная доменная печь +tile.machine_dineutronium_battery.name=Спарк-энергохранилище tile.machine_drill.name=Автоматический горный бур tile.machine_electric_furnace_off.name=Электрическая печь tile.machine_electric_furnace_on.name=Электрическая печь +tile.machine_electronium_battery.name=Электрониевое энергохранилище tile.machine_epress.name=Электрический пресс -tile.machine_fel.name=Лазер на свободных электронах (FEL) +tile.machine_euphemium_battery.name=Эвфемиевое энергохранилище +tile.machine_excavator.name=Экскаватор +tile.machine_fel.name=ЛСЭ tile.machine_fensu.name=ЭМЭХ tile.machine_flare.name=Газовая башня tile.machine_fluidtank.name=Цистерна tile.machine_forcefield.name=Излучатель силового поля +tile.machine_fracking_tower.name=Башня гидравлического гидроразрыва (БГГ) tile.machine_fraction_tower.name=Ректификационная колонна tile.machine_gascent.name=Газовая центрифуга -tile.machine_generator.name=Ядерный реактор (Запчасти) +tile.machine_generator.name=Ядерный реактор (Устаревший) tile.machine_geo.name=Геотермальный генератор tile.machine_industrial_generator.name=Промышленный генератор tile.machine_keyforge.name=Стол мастера по замкам @@ -3423,14 +4347,17 @@ tile.machine_microwave.name=Микроволновка tile.machine_mining_laser.name=Шахтёрский лазер tile.machine_minirtg.name=Радиоизотопная ячейка tile.machine_missile_assembly.name=Ракетосборочная станция +tile.machine_mixer.name=Промышленный миксер tile.machine_nuke_furnace_off.name=Ядерная печь tile.machine_nuke_furnace_on.name=Ядерная печь tile.machine_orbus.name=Тяжёлый магнитный контейнер для антиматерии +tile.machine_powerrtg.name=ПТ-изотопная ячейка tile.machine_press.name=Пресс tile.machine_puf6_tank.name=Бочка гексафторида плутония tile.machine_pumpjack.name=Станок-качалка tile.machine_radar.name=Радар tile.machine_radgen.name=Радиационный двигатель +tile.machine_radspice_battery.name=Неовелиновое энергохранилище tile.machine_reactor.name=Реактор-размножитель tile.machine_reactor_on.name=Реактор-размножитель tile.machine_reactor_small.name=Ядерный реактор @@ -3446,7 +4373,8 @@ tile.machine_rtg_orange.name=Сильный RT генератор tile.machine_rtg_purple.name=Генератор аннигиляции антиматерии tile.machine_rtg_red.name=Фульминационный генератор tile.machine_rtg_yellow.name=Австралиевый супертопливный генератор -tile.machine_satlinker.name=Менеджер ID спутников +tile.machine_satlinker.name=Менеджер частот спутников +tile.machine_saturnite_battery.name=Сатурнитовое энергохранилище tile.machine_schrabidium_battery.name=Шрабидиевое энергохранилище tile.machine_schrabidium_transmutator.name=Шрабидиевый трансмутатор tile.machine_selenium.name=Радиальный двигатель @@ -3468,9 +4396,9 @@ tile.machine_transformer_dnt_20.name=Трансформатор ДНТ-1Гц tile.machine_turbine.name=Паровая турбина tile.machine_turbofan.name=Турбовентилятор tile.machine_uf6_tank.name=Бочка гексафторида урана -tile.machine_waste_drum.name=Бочка для охлаждения топлива +tile.machine_waste_drum.name=Бочка с отработанным топливом tile.machine_well.name=Нефтяная вышка -tile.marker_structure.name=Маркер для многоблочных реакторов +tile.marker_structure.name=Маркер для многоблочных структур tile.meteor_battery.name=Генератор статического электричества из звездного металла tile.meteor_brick.name=Метеоритные кирпичи tile.meteor_brick_chiseled.name=Высеченные метеоритные кирпичи @@ -3502,12 +4430,14 @@ tile.nuke_prototype.name=Прототип tile.nuke_solinium.name=Синий Ополаскиватель tile.nuke_tsar.name=Царь-бомба tile.oil_duct.name=Труба для нефти -tile.oil_duct_solid.name=Труба для нефти с покрытием +tile.oil_duct_solid.name=Покрытая труба для нефти tile.oil_pipe.name=Труба для извлечения неочищенной нефти tile.ore_aluminium.name=Алюминиевая руда tile.ore_asbestos.name=Асбестовая руда -tile.ore_australium.name=§6Австралиевая руда +tile.ore_australium.name=Австралиевая руда +tile.ore_bedrock_block.name=Бедроковая руда tile.ore_bedrock_coltan.name=Бедроковая колтановая руда +tile.ore_bedrock_oil.name=Бедроковая нефтяная жила tile.ore_beryllium.name=Бериллиевая руда tile.ore_cinnebar.name=Киноварь tile.ore_coal_oil.name=Маслянистая угольная руда @@ -3515,14 +4445,16 @@ tile.ore_coal_oil_burning.name=Горящая маслянистая уголь tile.ore_cobalt.name=Кобальтовая руда tile.ore_coltan.name=Колтановая руда tile.ore_copper.name=Медная руда -tile.ore_daffergon.name=Деллитовая руда +tile.ore_daffergon.name=Деллит +tile.ore_depth_borax.name=Глубинная руда бура tile.ore_depth_cinnebar.name=Глубинная киноварь tile.ore_depth_nether_neodymium.name=Адская глубинная неодимовая руда +tile.ore_depth_nether_nitan.name=Адская глубинная нитановая руда tile.ore_depth_zirconium.name=Глубинная циркониевая руда -tile.ore_fluorite.name=Флюоритовая руда +tile.ore_fluorite.name=Флюорит tile.ore_gneiss_asbestos.name=Сланцевая асбестовая руда tile.ore_gneiss_copper.name=Сланцевая медная руда -tile.ore_gneiss_gas.name=Сланцевый газовый карман +tile.ore_gneiss_gas.name=Сланцевый газ tile.ore_gneiss_gold.name=Сланцевая золотая руда tile.ore_gneiss_iron.name=Сланцевая железная руда tile.ore_gneiss_lithium.name=Сланцевая литиевая руда @@ -3531,7 +4463,7 @@ tile.ore_gneiss_schrabidium.name=Сланцевая шрабидиевая ру tile.ore_gneiss_uranium.name=Сланцевая урановая руда tile.ore_gneiss_uranium_scorched.name=Обожённая сланцевая урановая руда tile.ore_lead.name=Свинцовая руда -tile.ore_lignite.name=Бурая угольная руда +tile.ore_lignite.name=Бурый уголь tile.ore_meteor_aluminium.name=Метеоритная алюминиевая руда tile.ore_meteor_copper.name=Метеоритная медная руда tile.ore_meteor_lead.name=Метеоритная свинцовая руда @@ -3552,29 +4484,34 @@ tile.ore_nether_sulfur.name=Адская серная руда tile.ore_nether_tungsten.name=Адская вольфрамовая руда tile.ore_nether_uranium.name=Адская урановая руда tile.ore_nether_uranium_scorched.name=Обожённая адская урановая руда -tile.ore_niter.name=Селитровая руда +tile.ore_niter.name=Селитра tile.ore_oil.name=Нефтяной карман tile.ore_oil_empty.name=Пустой нефтяной карман tile.ore_oil_sand.name=Мазутный песок tile.ore_rare.name=Редкоземельная руда -tile.ore_reiium.name=Реиитовая руда +tile.ore_reiium.name=Реиит tile.ore_schrabidium.name=Шрабидиевая руда -tile.ore_sulfur.name=Серная руда -tile.ore_thorium.name=Ториевая руда -tile.ore_tikite.name=Трикситовая руда +tile.ore_sulfur.name=Сера +tile.ore_thorium.name=Торий +tile.ore_tikite.name=Триксит tile.ore_titanium.name=Титановая руда -tile.ore_tungsten.name=Вольфрамовая руда -tile.ore_unobtainium.name=Унобтаниумая руда +tile.ore_tungsten.name=Вольфрамовая Руда +tile.ore_unobtainium.name=Брайтбленд tile.ore_uranium.name=Урановая руда tile.ore_uranium_scorched.name=Обожженная урановая руда tile.ore_verticium.name=Долларовый Зелёный минерал -tile.ore_weidanium.name=Вейдитиевая руда +tile.ore_weidanium.name=Вейдитит tile.pink_barrel.name=Керосиновая бочка tile.pink_double_slab.name=Двойная плита из розового дерева tile.pink_log.name=Розовое дерево tile.pink_planks.name=Розовые доски tile.pink_slab.name=Плита из розового дерева tile.pink_stairs.name=Ступеньки из розового дерева +tile.plant_dead_big_flower.name=Большой мертвый цветок +tile.plant_dead_fern.name=Мертвый папоротник +tile.plant_dead_flower.name=Мертвый цветок +tile.plant_dead_generic.name=Мертвое растение +tile.plant_dead_grass.name=Мертвый куст tile.plasma.name=Плазма tile.plasma_heater.name=Нагреватель плазмы tile.pole_satellite_receiver.name=Спутниковая тарелка @@ -3583,40 +4520,61 @@ tile.pribris.name=Обломки РБМК tile.pribris_burning.name=Горящие обломки РБМК tile.pribris_digamma.name=Почерневшие обломки РБМК tile.pribris_radiating.name=Тлеющие обломки РБМК -tile.qe_containment.name=Защитная дверь QE -tile.qe_sliding.name=Раздвижная дверь QE +tile.qe_containment.name=Защитная дверь (анти-радиационная) +tile.qe_sliding.name=Раздвижная дверь (анти-радиационная) +tile.radio_torch_receiver.name=Получатель "редстоун-радио" сигнала +tile.radio_torch_sender.name=Отправщик "редстоун-радио" сигнала tile.radiobox.name=Коробка управления вредителями Розенберга tile.radiorec.name=Сломанное FM радио tile.radsensor.name=Датчик радиации tile.radwater_block.name=Облученная вода tile.rail_booster.name=Ускоряющие высокоскоростные рельсы tile.rail_highspeed.name=Высокоскоростные рельсы -tile.railgun_plasma.name=Турель рельсотрон §d[WIP] +tile.railgun_plasma.name=Рейлган tile.railing_bend.name=Изгиб перил -tile.railing_end_flipped_floor.name=Конец перил перевернутый (пол) -tile.railing_end_flipped_self.name=Конец перил перевернутый (самостоятельно) -tile.railing_end_floor.name=Конец перил (пол) -tile.railing_end_self.name=Конец перил (на себя) +tile.railing_end_flipped_floor.name=Конец перил правый (с креплением на пол) +tile.railing_end_flipped_self.name=Конец перил правый +tile.railing_end_floor.name=Конец перил левый (с креплением на пол) +tile.railing_end_self.name=Конец перил левый tile.railing_normal.name=Перила +tile.rbmk_absorber.desc=§eПоглощает всю входящую энергию.$§eИспользуется для остановки входящей энергии. tile.rbmk_absorber.name=Борный поглотитель нейтронов РБМК +tile.rbmk_blank.desc=§eЗаставляет РБМК нагреваться и охлаждаться медленнее.$§eИ позволяет реактору терять тепло быстрее tile.rbmk_blank.name=Структурная колонна РБМК +tile.rbmk_boiler.desc=§eПревращает воду в пар, если температура реактора достаточно высокая.$§eИспользуется в паре с портом ввода воды РБМК tile.rbmk_boiler.name=Паровой канал РБМК +tile.rbmk_console.desc=§6Используйте выход с редстоуном сзади, чтобы отрегулировать уровень стержней$§eУровни 1-15 редстоун сигнала ставят уровень стержней от 100% до 0%%$§e15 уровень редстоун сигнала работает как АЗ-15 tile.rbmk_console.name=Консоль РБМК +tile.rbmk_control.desc=§eИспользуется для контроля входящей/выходящей энергии. tile.rbmk_control.name=Регулирующие стержни РБМК +tile.rbmk_control_auto.desc=§eОни могут автоматически настраивать уровень стержней в зависимости от температуры. tile.rbmk_control_auto.name=Автоматические регулирующие стержни РБМК +tile.rbmk_control_mod.desc=§eТакой же, как и регулирующие стержни РБМК,$но превращает "быструю" энергию в "медленную" энергию. tile.rbmk_control_mod.name=Замедленные регулирующие стержни РБМК -tile.rbmk_crane_console.name=Консоль крана РБМК +tile.rbmk_cooler.desc=§eЕсли температура оболочки становится выше 750°C, он начинает быстро охлаждать каналы РБМК при помощи криогеля.$§eИспользуется, чтобы дать вам время перед расплавлением, так что вы сможете нажать кнопку AZ-5. +tile.rbmk_cooler.name=Экстренный охладитель РБМК +tile.rbmk_crane_console.name=Крановая консоль РБМК +tile.rbmk_heater.desc=§eИспользуется для нагревания жидкостей.$§eЕсли тепла больше, чем температура нагретой жидкости - он использует тепло для конвертации.$§eДля передачи тепла и возвращения холодной жидкости используется Теплообменный нагреватель. +tile.rbmk_heater.name=Жидкостный нагреватель РБМК tile.rbmk_loader.name=Паровой проводник РБМК +tile.rbmk_moderator.desc=§eОн превращает всю проходящую "быструю" энергию в "медленную" энергию. tile.rbmk_moderator.name=Графитовый замедлитель РБМК -tile.rbmk_outgasser.name=Колонна облучения РБМК +tile.rbmk_outgasser.desc=§eПоглощает входящую энергию и вытворяет ядерную физику с ней. +tile.rbmk_outgasser.name=Стержень облучения РБМК +tile.rbmk_reflector.desc=§eОн отражает энергию в ту же сторону, откуда и получил её. tile.rbmk_reflector.name=Карбид-вольфрамовый отражатель нейтронов РБМК -tile.rbmk_rod.name=Топливная колонна РБМК -tile.rbmk_rod_mod.name=Замедленная топливная колонна РБМК -tile.rbmk_rod_reasim.name=Топливная колонна РБМК (РеаСим) -tile.rbmk_rod_reasim_mod.name=Замедленная топливная колонна РБМК (РеаСим) -tile.rbmk_steam_inlet.name=Порт ввода воды РБМК (РеаСим) -tile.rbmk_steam_outlet.name=Порт вывода пара РБМК (РеаСим) -tile.rbmk_storage.name=Колонна хранилище РБМК +tile.rbmk_rod.desc=§aОн содержит в себе топливный стержень РБМК,$который может излучать много тепла. +tile.rbmk_rod.name=Топливные стержни РБМК +tile.rbmk_rod_mod.desc=§aТакой же, как и топливные стержни РБМК, но$входящая "быстрая" энергия превращается в "медленную" энергию. +tile.rbmk_rod_mod.name=Замедленные топливные стержни РБМК +tile.rbmk_rod_reasim.desc=§aТакой же, как и топливные стержни РБМК, но он отправляет энергию во все стороны (горизонтально). +tile.rbmk_rod_reasim.name=Топливные стержни РБМК (РеаСим) +tile.rbmk_rod_reasim_mod.desc=§aТакой же, как и топливные стержни РБМК (РеаСим), но$входящая "быстрая" энергия превращается в "медленную" энергию. +tile.rbmk_rod_reasim_mod.name=Замедленные топливные стержни РБМК (РеаСим) +tile.rbmk_steam_inlet.name=Порт ввода воды РБМК РеаСим +tile.rbmk_steam_outlet.name=Порт вывода пара РБМК РеаСим +tile.rbmk_storage.desc=§eИспользуется для хранения топливных стержней РБМК/радиоактивных предметов для стержня облучения. +tile.rbmk_storage.name=Накопительная колонна РБМК tile.reactor_computer.name=Контроллер реактора tile.reactor_conductor.name=Бойлер реактора tile.reactor_control.name=Регулирующие стержни @@ -3627,27 +4585,33 @@ tile.reactor_inserter.name=Автоматический заправщик ре tile.red_barrel.name=Взрывная бочка tile.red_cable.name=Провод из красной меди tile.red_pylon.name=Электрический столб +tile.red_pylon_large.desc=§6Тип соединения §eЧетверной$§6Дальность соединения: §e100м$§6Этой опоре нужна подстанция! +tile.red_pylon_large.name=Опора ЛЭП tile.red_wire_coated.name=Медный кабель с покрытием +tile.red_wire_sealed.name=Медный кабель с анти-радиационным покрытием tile.reinforced_brick.name=Усиленный камень -tile.reinforced_brick_slab.name=Армированная кирпичная плита -tile.reinforced_brick_stairs.name=Армированные кирпичные лестницы +tile.reinforced_brick_slab.name=Плита из усиленного камня +tile.reinforced_brick_stairs.name=Ступеньки из усиленного камня +tile.reinforced_ducrete.name=Усиленный дюкрет tile.reinforced_glass.name=Усиленное стекло tile.reinforced_lamp_off.name=Усиленная лампа tile.reinforced_lamp_on.name=Усиленная лампа tile.reinforced_light.name=Усиленный светящийся камень tile.reinforced_sand.name=Усиленный песчаник -tile.reinforced_sand_slab.name=Усиленная песчаная плита -tile.reinforced_sand_stairs.name=Лестница из армированного песка +tile.reinforced_sand_slab.name=Плита из усиленного песчанника +tile.reinforced_sand_stairs.name=Ступеньки из усиленного песчанника tile.reinforced_stone.name=Уплотненный камень -tile.reinforced_stone_slab.name=Усиленная каменная плита -tile.reinforced_stone_stairs.name=Укрепленные каменные лестницы +tile.reinforced_stone_slab.name=Плита из уплотненного камня +tile.reinforced_stone_stairs.name=Ступеньки из уплотненного камня tile.rejuvinator.name=ГЭКК tile.residue.name=Облачный осадок -tile.round_airlock_door.name=Круглая дверь шлюза +tile.round_airlock_door.name=Круглая шлюзовая дверь tile.rtg_polonium.name=Изотопная ячейка PT tile.safe.name=Сейф tile.sand_boron.name=Борный песок tile.sand_boron_layer.name=Слой борного песка +tile.sand_dirty.name=Масляный песок +tile.sand_dirty_red.name=Красный масляный песок tile.sand_gold.name=Золотой песок tile.sand_gold198.name=Песок из золота-198 tile.sand_lead.name=Свинцовый песок @@ -3655,11 +4619,17 @@ tile.sand_polonium.name=Полониевый песок tile.sand_quartz.name=Кварцевый песок tile.sand_uranium.name=Урановый песок tile.sat_dock.name=Станция посадки груза +tile.sat_foeq.name=ВСАП-МК.I зонд “FOEQ Duna” с экспериментальным ядерным двигателем (Декорация) +tile.sat_laser.name=Орбитальный Луч Смерти (Декорация) +tile.sat_mapper.name=Спутник для картографирования поверхности (Декорация) +tile.sat_radar.name=Спутник с радиолокационным зондированием (Декорация) +tile.sat_resonator.name=Спутник с Зен-Резонатором (Декорация) +tile.sat_scanner.name=Спутник с модулем глубинно-ресурсного сканирования (Декорация) tile.schrabidic_block.name=Шрабидиевая кислота -tile.seal_controller.name=Открыватель дюка пусковой щахты +tile.seal_controller.name=Открыватель люка пусковой шахты tile.seal_frame.name=Рама люка пусковой щахты tile.seal_hatch.name=Люк пусковой щахты -tile.secure_access_door.name=Дверь безопасного доступа +tile.secure_access_door.name=Защищенная бункерная дверь tile.sellafield_0.name=Селлафит tile.sellafield_1.name=Горячий селлафит tile.sellafield_2.name=Кипящий селлафит @@ -3667,10 +4637,11 @@ tile.sellafield_3.name=Пылающий селлафит tile.sellafield_4.name=Адский селлафит tile.sellafield_core.name=Селлафит-кориум tile.sellafield_slaked.name=Погашенный селлафит -tile.silo_hatch.name=Силовой люк -tile.sliding_blast_door.name=Взрывоустойчивая дверь -tile.sliding_blast_door_2.name=Взрывоустойчивая дверь с терминалом -tile.sliding_seal_door.name=Раздвижная дверь уплотнения +tile.silo_hatch.name=Большой люк пусковой шахты +tile.sliding_blast_door.name=Боковая раздвижная противовзрывная дверь +tile.sliding_blast_door_2.name=Боковая раздвижная противовзрывная дверь +tile.sliding_gate_door.name=Малая защитная дверь (анти-радиационная) +tile.sliding_seal_door.name=Малая защитная дверь tile.small_hatch.name=Маленький люк tile.solar_mirror.name=Зеркало-гелиостат tile.soyuz_capsule.name=Грузовая посадочная капсула @@ -3682,8 +4653,9 @@ tile.steel_corner.name=Стальной угол стены tile.steel_grate.name=Стальная решётка tile.steel_poles.name=Стальные опоры tile.steel_roof.name=Плоская стальная крыша -tile.steel_scaffold.name=Стальная подмостка +tile.steel_scaffold.name=Стальные подмости tile.steel_wall.name=Стальная стенка +tile.stone_cracked.name=Потрескавшийся камень tile.stone_depth.name=Глубинный камень tile.stone_depth_nether.name=Адский глубинный камень tile.stone_gneiss.name=Графитовый сланец @@ -3695,6 +4667,8 @@ tile.struct_launcher_core_large.name=Ядро большой пусковой п tile.struct_plasma_core.name=Ядро нагревателя плазмы tile.struct_scaffold.name=Подмосток пусковой площадки tile.struct_soyuz_core.name=Ядро стартовой площадки Союза +tile.substation.desc=§6Тип соединения: §eЧетверной$§6Дальность соединения: §e20м +tile.substation.name=Подстанция tile.taint.name=Порча tile.taint_barrel.name=Бочка с осадком IMP tile.tape_recorder.name=Магнитофон @@ -3704,15 +4678,15 @@ tile.therm_endo.name=Эндотермическая бомба tile.therm_exo.name=Экзотермическая бомба tile.tile_lab.name=Лабораторная плитка tile.tile_lab_broken.name=Разбитая лабораторная плитка -tile.tile_lab_broken_slab.name=Сломанная лабораторная плитка -tile.tile_lab_broken_stairs.name=Сломанная лестница из плитки лаборатории +tile.tile_lab_broken_slab.name=Плита из разбитой лабораторной плитки +tile.tile_lab_broken_stairs.name=Ступеньки из разбитой лабораторной плитки tile.tile_lab_cracked.name=Треснувшая лабораторная плитка -tile.tile_lab_cracked_slab.name=Треснувшая лабораторная плитка -tile.tile_lab_cracked_stairs.name=Лестница из треснувшей лабораторной плитки +tile.tile_lab_cracked_slab.name=Плита из треснувшей лабораторной плитки +tile.tile_lab_cracked_stairs.name=Ступеньки из треснувшей лабораторной плитки tile.tile_lab_slab.name=Лабораторная плитка -tile.tile_lab_stairs.name=Лабораторная лестница из плитки +tile.tile_lab_stairs.name=Ступеньки из лабораторной плитки tile.toxic_block.name=Стереотипная зелёная слизь -tile.transition_seal.name=Транзитный люк +tile.transition_seal.name=Огромная герметичная бункерная дверь tile.turret_cheapo.name=Дешёвая пулемётная турель tile.turret_chekhov.name=Крупнокалиберная пулеметная турель "Чеховское ружьё" tile.turret_cwis.name=”Фэленкс” Mk-15 CIWS @@ -3730,6 +4704,7 @@ tile.turret_rocket.name=Турель с ракетницей tile.turret_spitfire.name=Турель без названия [WIP] tile.turret_tau.name=Турель с тау-пушкой tile.turret_tauon.name=Прототип турели XVL1456 "Тауон" +tile.uu_gigafactory.name=Гигафабрика материи tile.vault_door.name=Дверь убежища Vault-Tec tile.vent_chlorine.name=Хлорный клапан tile.vent_chlorine_seal.name=Хлорный уплотнитель @@ -3738,52 +4713,91 @@ tile.vent_pink_cloud.name=Воздушный клапан с розовым об tile.vitrified_barrel.name=Бочка с остеклованными ядерными отходами tile.volcanic_lava_block.name=Вулканическая лава tile.volcano_core.name=Вулканическое ядро -tile.waste_dirt.name=Загрязненная земля +tile.waste_dirt.name=Зараженная земля +tile.waste_dirt.name=Отравленная земля tile.waste_earth.name=Мертвая трава -tile.waste_grass_tall.name=Пустая трава -tile.waste_leaves.name=Отходы Листья +tile.waste_grass_tall.name=Мертвая высокая трава +tile.waste_gravel.name=Зараженный гравий +tile.waste_leaves.name=Отравленная листва tile.waste_log.name=Обугленное бревно tile.waste_mycelium.name=Светящийся мицелий tile.waste_planks.name=Обугленные деревянные доски +tile.waste_sand.name=Зараженный песок +tile.waste_sand_red.name=Зараженный красный песок tile.waste_trinitite.name=Тринититовая руда tile.waste_trinitite_red.name=Красная тринититовая руда -tile.water_door.name=Герметичная дверь -tile.watz_conductor.name=Порт электричества Ватцз +tile.water_door.name=Гермозатвор +tile.watz_conductor.name=Порт электричества WATS tile.watz_control.name=Упрочнённые регулирующие стержни -tile.watz_cooler.name=Суперохладитель реактора Ватцз -tile.watz_core.name=Контроллер реактора Ватцз -tile.watz_element.name=Камера реакции Ватцз -tile.watz_end.name=Стабилизатор реактора Ватцз -tile.watz_hatch.name=Люк доступа к реактору Ватцз +tile.watz_cooler.name=Суперохладитель реактора WATS +tile.watz_core.name=Контроллер реактора WATS +tile.watz_element.name=Камера реакции WATS +tile.watz_end.name=Стабилизатор реактора WATS +tile.watz_hatch.name=Люк доступа к реактору WATS tile.yellow_barrel.name=Радиоктивная бочка -tile.furnace_steel.name=Стальная печь -tile.heater_firebox.name=Топка - +tipped_arrow.effect.potion.hbm_bang=Стрела ! ! ! +tipped_arrow.effect.potion.hbm_lead=Стрела отравления свинцом +tipped_arrow.effect.potion.hbm_mutation=Стрела гулификации +tipped_arrow.effect.potion.hbm_phosphorus=Стрела фосфорных ожогов +tipped_arrow.effect.potion.hbm_radaway=Стрела антирадина +tipped_arrow.effect.potion.hbm_radiation=Стрела радиации +tipped_arrow.effect.potion.hbm_radx=Стрела Rad-X +tipped_arrow.effect.potion.hbm_stability=Стрела стабильности +tipped_arrow.effect.potion.hbm_taint=Стрела порчи +tipped_arrow.effect.potion.hbm_telekinesis=Стрела телекинеза +tool.ability.canmine=можно выкопать tool.ability.centrifuge=Авто-центрифуга tool.ability.crystallizer=Авто-кристаллизатор tool.ability.explosion=Взрыв -tool.ability.hammer=Зона действия +tool.ability.hammer=Область копания +tool.ability.list=Умения: tool.ability.luck=Удача tool.ability.mercury=Ртутное прикосновение tool.ability.midas=Прикосновение Мидаса tool.ability.recursion=Жилковый Майнер +tool.ability.rightclick=ПКМ, чтобы пролистать умения! +tool.ability.shiftclick=Пригнуться+ПКМ, чтобы отключить умения! tool.ability.shredder=Авто-измельчитель tool.ability.silktouch=Шёлковое касание tool.ability.smelter=Авто-плавка +tool.ability.weaponlist=Модификаторы для оружия: +trait.antimatter=Аннигилирующий trait.asbestos=Содержит асбест +trait.balefirebomb=Жар-бомба +trait.blastres=Защита от взрывов: trait.blinding=Ослепление +trait.boilable.desc=§bТребует §3%sTU §bза 1 ведро. +trait.boilable=Нагреваемый trait.breeding=Даёт %s операций в реакторе-размножителе trait.coal=Угольная пыль +trait.contaminating=Загрязняет окружающую среду +trait.coolable.desc=§cПроизводит §4%sTU §cза 1 ведро. +trait.coolable=Охлаждаемый +trait.corrosiveIron=Сильно коррозийный +trait.corrosivePlastic=Коррозийный +trait.cryogenic=Криогенный / Холодный +trait.destroybyexplosion=Можно уничтожить только взрывом +trait.dfcFuel.desc=§dВыход энергии §5%s%% +trait.dfcFuel=Топливо для РТС trait.digamma=Дигамма радиация trait.drop=Опасно выкидывать +trait.explosive=Воспламеняющийся / Взрывоопасный +trait.extremebomb=Водородная бомба +trait.fallout=Радиационное заражение +trait.flammable.desc=§eПроизводит §6%sTU §eза 1 ведро. +trait.flammable=Горючий trait.furnace=Даёт %s операций в ядерной печи -trait.heat=Обеспечивает %s ТЕПЛА +trait.heat=Обеспечивает %s уровней ТЕПЛА trait.hlParticle=Период Полураспада Частицы: %s trait.hlPlayer=Период Полураспада Игрока: %s trait.hot=Пирофорный / Горячий +trait.hotfluid=Горячий trait.hydro=Гидрореактивный +trait.modularbomb=Модульная бомба +trait.nuclearbomb=Ядерная бомба trait.radResistance=Сопротивление радиации: %s trait.radioactive=Радиоактивный +trait.radshield=Защита от радиации trait.rbmk.coreTemp=Температура стержня: %s trait.rbmk.depletion=Обеднение: %s trait.rbmk.diffusion=Рассеивание: %s @@ -3791,12 +4805,12 @@ trait.rbmk.fluxFunc=Функция потока: %s trait.rbmk.funcType=Тип функции: %s trait.rbmk.heat=Тепло за тик при полной мощности: %s trait.rbmk.melt=Точка плавления: %s -trait.rbmk.neutron.any=Любые нейтроны trait.rbmk.neutron.any.x=Все неевклидовы формы -trait.rbmk.neutron.fast=Быстрые нейтроны +trait.rbmk.neutron.any=Любые нейтроны trait.rbmk.neutron.fast.x=Эллиптические неевклидовы формы -trait.rbmk.neutron.slow=Медленные нейтроны +trait.rbmk.neutron.fast=Быстрые нейтроны trait.rbmk.neutron.slow.x=Гиперболические неевклидовы формы +trait.rbmk.neutron.slow=Медленные нейтроны trait.rbmk.skinTemp=Температура оболочки стержня: %s trait.rbmk.source=Самовоспламеняющийся trait.rbmk.splitsInto=Распадается на: %s @@ -3805,12 +4819,21 @@ trait.rbmk.xenon=Ксеноновое отравление: %s trait.rbmk.xenonBurn=Функция выгорания ксенона: %s trait.rbmk.xenonGen=Функция накопления ксенона: %s trait.rbmx.coreTemp=Разрушение стержня: %s +trait.rbmx.dangerous1=ОПАСНЫЙ / ЛИНЕЙНАЯ +trait.rbmx.dangerous2=ОПАСНЫЙ / КВАДРАТИЧНАЯ trait.rbmx.depletion=Корочка: %s trait.rbmx.diffusion=Поток: %s +trait.rbmx.experimental=ЭКСПЕРИМЕНТАЛЬНЫЙ / СИНУСОИДАЛЬНЫЙ НАКЛОН trait.rbmx.fluxFunc=Функция гибели: %s trait.rbmx.funcType=Спецификация функции: %s trait.rbmx.heat=Корочка на тик при полной мощности: %s +trait.rbmx.medium1=СРЕДНЯЯ ОПАСНОСТЬ / ЛОГАРИФМИЧЕСКАЯ +trait.rbmx.medium2=СРЕДНЯЯ ОПАСНОСТЬ / С КВАДРАТНЫМ КОРНЕМ trait.rbmx.melt=Глубина корочки: %s +trait.rbmx.risky=РИСКОВАННЫЙ / ОБРАТНО-КВАДРАТИЧНАЯ +trait.rbmx.safe1=БЕЗОПАСНЫЙ / ПАССИВНАЯ +trait.rbmx.safe2=БЕЗОПАСНЫЙ / ЭЙЛЕР +trait.rbmx.safe3=БЕЗОПАСНЫЙ / СИГМОВИДНАЯ trait.rbmx.skinTemp=Разрушение оболочки стержня: %s trait.rbmx.source=Самосжигаемый trait.rbmx.splitsInto=Отправляется в: %s @@ -3818,19 +4841,54 @@ trait.rbmx.splitsWith=Прибывает из: %s trait.rbmx.xenon=Свинцовое отравление: %s trait.rbmx.xenonBurn=Функция разрушения свинца: %s trait.rbmx.xenonGen=Функция создания свинца: %s +trait.reactorrod=Реакторный топливный стержень +trait.schrabbomb=Шрабидиевая бомба +trait.soliniumbomb=Солиниевая бомба +trait.soliniumgrenade=Солиниевая граната +trait.thermobomb=Термоядерная бомба trait.tile.cluster=Выпадает только тогда, когда разрушен игроком trait.tile.depth=Может быть разрушен только взрывом +trait.toxic=эффект отравления +trait.unmineable=Нельзя выкопать trait.unstable=Нестабильный -wavelengths.name.drx=Дигамма -wavelengths.name.gamma=Гамма -wavelengths.name.ir=Инфракрасный +turret.animals=Убивать нейтральных: %s +turret.machines=Сбивать ракеты: %s +turret.mobs=Убивать враждебных мобов: %s +turret.none=Нет +turret.off=ОТКЛЮЧЕН +turret.on=ВКЛЮЧЕН +turret.players=Убивать игроков: %s +type.atomic=Атомная бомба +type.carpet=Ковровая бомбардировка +type.cloud=Облако, облако, боже, облако +type.napalm=Напалм +type.orange=Агент "Оранжевый" +type.pip=PIP, О БОЖЕ +type.poison=Отравляющий газ +type.stinger=Самонаводящиеся ракеты +warhead.balefire=Взрыв с жар-огнём +warhead.buster=Противобункерная +warhead.cloud=Облако +warhead.cluster=Кластерная +warhead.he=Осколочная +warhead.inc=Зажигательная +warhead.mirv=МИРВ +warhead.n2=N² +warhead.nuclear=Ядерная +warhead.schrab=Шрабидиевая +warhead.taint=Заражение +warhead.tx=Термоядерная +warhead.volcano=Вулкан +wavelengths.name.drx=Дигамма кусочки +wavelengths.name.gamma=Гамма частицы +wavelengths.name.ir=Инфракрасный свет wavelengths.name.micro=Микроволны -wavelengths.name.radio=Радио +wavelengths.name.radio=Радиоволны wavelengths.name.uv=Ультрафиолет wavelengths.name.visible=Видимый свет -wavelengths.name.xray=Рентген -wavelengths.waveRange.drx=1916169 длин планка -wavelengths.waveRange.gamma=<9 вечера +wavelengths.name.xray=X-ray +wavelengths.waveRange.drx=1916169 длин планок +wavelengths.waveRange.gamma=<2⋅10−10 wavelengths.waveRange.ir=780нм-1мм wavelengths.waveRange.micro=1мм-1м wavelengths.waveRange.radio=>1 м @@ -3843,575 +4901,4 @@ weapon.ability.fire=Горение weapon.ability.phosphorus=Фосфорный наконечник weapon.ability.radiation=Радиоактивные лезвия weapon.ability.stun=Оглушение -weapon.ability.vampire=Вампир -achievement.FOEQ=Бункеры с пегасами и ракетами -achievement.FOEQ.desc=Отправь передатчик на орбиту Марса... в смысле Дюны. -achievement.assembly=Производство -achievement.assembly.desc=Бобмазон уровень 2 (Сборочный Станок) -achievement.bossCreeper=Бомба на четырёх ногах -achievement.bossCreeper.desc='Вот это ядерные криперы? Эта штуковина?!' -achievement.bossMaskman=6 месяцев обязательной службы, и все, что я получил, - это паршивая футболка -achievement.bossMaskman.desc=Врезать большому мальчику. -achievement.bossMeltdown=3.6 рентген -achievement.bossMeltdown.desc=Скорее ужасно, чем отлично, но я приму то, что могу получить. -achievement.bossWorm=Разборка Баллс-О-Трон -achievement.bossWorm.desc=Фабстафф. Моя задница. А ты считай. -achievement.c20_5=Глава [ДВАДЦАТЬ_С_ПОЛОВИНОЙ] -achievement.c20_5.desc=??? -achievement.c44=Глава 44 -achievement.c44.desc=Гальванизирован! Я имею в виду цинк! -achievement.chemistry=Химия -achievement.chemistry.desc=Бобмазон уровень 3 (Бетонные кирпичи) -achievement.digammaFeel=Страх чувства -achievement.digammaFeel.desc=пустота внутри. -achievement.digammaKauaiMoho=Пой, пой мне песню Кауаи Мохо. -achievement.digammaKauaiMoho.desc=Все ужасно, вот тебе горячий шоколад. -achievement.digammaKnow=Страх познания -achievement.digammaKnow.desc=что такое этот мир. -achievement.digammaSee=Страх видения -achievement.digammaSee.desc=в бездну. -achievement.digammaUpOnTop=Восхищайся мной, Любуйся моим домом -achievement.digammaUpOnTop.desc=Восхищайся моим сыном, он мой клон. -achievement.fiend=Нарушитель -achievement.fiend.desc=Будь жестоким. -achievement.fiend2=Нарушитель-2: перенарушение. -achievement.fiend2.desc=Будь жёстче. -achievement.freytag=Фрейтаг -achievement.freytag.desc=Стражи жизни Герольда. -achievement.hidden=Скрытый Каталог -achievement.hidden.desc=Убейте зараженного крипера падающим товарным вагоном -achievement.horizonsBonus=Слэм-данк диарея -achievement.horizonsBonus.desc=Честное слово, что, черт возьми, с тобой не так -achievement.horizonsEnd=Горизонты -achievement.horizonsEnd.desc=Отправьте Тома домой. -achievement.horizonsStart=Апогей -achievement.horizonsStart.desc=Отправьте Геральда на луну. -achievement.impossible=Буквально невозможно -achievement.impossible.desc=Ты не можешь получить это достижение. -achievement.meltdown=Быстрая внеплановая разборка -achievement.meltdown.desc=Ты зашел так далеко, как ты мог все испортить? -achievement.metalworks=Металлоконструкция -achievement.metalworks.desc=Бобмазон уровень 1 (Доменная печь) -achievement.nuclear=Атомная Наука -achievement.nuclear.desc=Бобмазон уровень 5 (Урановое топливо) -achievement.oil=Нефть -achievement.oil.desc=Бобмазон уровень 4 (Электрический бойлер) -achievement.omega12=Ускоритель частиц Омега-12 -achievement.omega12.desc=Решите проблему продолжения жизни на этой несчастной планете. -achievement.potato=Восстание машин -achievement.potato.desc=Можешь убить для меня эту птицу? -achievement.radDeath=Ой, Радиация! -achievement.radDeath.desc=Мария Кюри изобрела теорию радиоактивности, лечение радиоактивности и умирание от радиоактивности. -achievement.radPoison=Ура, Радиация! -achievement.radPoison.desc=Испытайте последствия радиационного отравления. -achievement.radium=МИСТЕР НЕВЕРОЯТНЫЙ -achievement.radium.desc=ТЫ УВОЛЕН ЗА ТО, ЧТО ПОДСЫПАЛ РАДИЙ В МОЙ КОФЕ! -achievement.sacrifice=Жертва -achievement.sacrifice.desc=Встреться лицом к лицу с огнём и выживи. -achievement.selenium=XVIII Луна. -achievement.selenium.desc=О,да! -achievement.someWounds=Некоторые раны никогда не заживают -achievement.someWounds.desc=Приготовься -achievement.soyuz=Печёная Картошка -achievement.soyuz.desc=Станьте хрустящим. -achievement.space=Последний Рубеж... Хотя ладно, забей. -achievement.space.desc=Провались как только можно и потрать 90 миллионов долларов впустую. -achievement.stratum=Пласт -achievement.stratum.desc=Жми на тормоза, Миттс. -achievement.tasteofblood=Вкус крови -achievement.tasteofblood.desc=Это не было частью протокола тестирования. -armor.explosionImmune=Не может получить никакого урона, кроме как от взрывов -armor.projectileProtection=Модификатор урона %s от снарядов -book.rbmk.title6.scale=0.75 -book.test.cover=КАК$2$СЕКСА -book.test.page1=Тестовая Страница 1 -chem.GASOLINE=Производство бензина -chem.XENON_OXY=Улучшенный ксеноновый цикл Линде -death.attack.laser.item=%1$s был превращён в пепел %2$s с помощью %3$s -death.attack.revolverBullet.item=%1$s получил пулю в голову от %2$s с помощью %3$s -death.attack.subAtomic1=Атомы %1$s были уничтожены %2$s -digamma.playerRes=Сопротивление к дигамме: -entity.entity_mob_hunter_chopper.name=Вертолёт-охотник -entity.entity_mob_mask_man.name=Маскмен -entity.entity_mob_nuclear_creeper.name=Ядерный крипер -entity.entity_mob_tainted_creeper.name=Заражённый порчей крипер -entity.hbm.entity_balls_o_tron.name=Баллс-О-Трон Прайм -entity.hbm.entity_balls_o_tron_seg.name=Баллс-О-Трон Сегмент -entity.hbm.entity_bullet.name=Пуля -entity.hbm.entity_ntm_ufo.name=Марсианский корабль вторжения -entity.hbm.entity_rocket.name=Ракета -entity.hbm.entity_schrabnel.name=Шрапнель -hazard.bacteria=Бактерий / Аэрозолей -hazard.corrosive=Едких испарений -hazard.gasChlorine=Химических газов -hazard.gasInert=Инертных газов / Удушающих веществ -hazard.gasMonoxide=Угарного газа -hazard.light=Ярких вспышек -hazard.nerveAgent=Нервно-паралитических средств -hazard.noprot=НЕ защищает от: -hazard.particleCoarse=Частиц, находящихся в воздухе -hazard.particleFine=Твердых частиц -hazard.prot=Защищает от: -hazard.sand=Раздражителей глаз -hbm.key=NTM Горячие Клавиши -hbm.key.reload=Перезарядить -hbm.key.toggleBack=Включить ранец -hbm.key.toggleHUD=Включить HUD -item.ammo_dart_nerf.name=Дротик NERF -item.ammo_dart_nuclear.name=Пластиковый дротик (С взрывчаткой) -item.ammo_fireext.name=Бак с водой для огнетушителя -item.ammo_fireext_foam.name=Бак с пеной для огнетушителя -item.ammo_fireext_sand.name=Бак с песком для огнетушителя -item.ammo_rocket_digamma.name=Нулевая ракета -item.book_guide.name=Руководство -item.bucket_schrabidic_acid.name=Ведро шрабидиевой кислоты -item.canister_NITAN.name=100-октановое сверхтопливо NITAN© -item.cell_balefire.name=Пробирка с газообразным жар-пламенем -item.cheese.name=Сыр -item.coffee.name=Кофе -item.coffee_radium.name=Кофе с радием -item.coltan_tool.name=Колтасс -item.cube_power.name=Куб электрония -item.fallout.name=Куча радиоактивных осадков -item.gas_mask_filter_combo.name=Комбинированный фильтр для противогаза -item.gas_mask_filter_piss.name=Самодельный продвинутый фильтр для противогаза -item.gas_mask_filter_rag.name=Самодельный фильтр для противогаза -item.gas_mask_olde.name=Кожаный противогаз -item.gun_bolter_digamma.name=Дигамма пушка -item.gun_fireext.name=Огнетушитель -item.gun_mymy.name=Ньетес -item.gun_supershotgun.name=Супердробовик -item.journal_bj.name=Пропитанный виски блокнот -item.journal_pip.name=Дневник выживальщика -item.journal_silver.name=Записки контрактника -item.mask_piss.name=Траншейный противогаз -item.mask_rag.name=Грубая защитная маска -item.mentats.name=Ментаты -item.missile_soyuz.name=Союз-ФГ -item.missile_volcano.desc=Используя силу ядерной взрывчатки, мы можем вызвать вулкан! -item.mp_warhead_15_turbine.name=Реактивный двигатель 15-го размера -item.particle_lutece.name=Квазиачастица Лютеция -item.pipes_steel.desc=Раскрафт был исключен из-за уклонения от уплаты налогов -item.pt_mentats.name=Праздничные Ментаты -item.rag.name=Тряпка -item.rag_damp.name=Влажная тряпка -item.rag_piss.name=Пропитанная мочой тряпка -item.robes_boots.name=Полевые ботинки -item.robes_helmet.name=Повседневная толстовка с капюшоном -item.robes_legs.name=Повседневные брюки -item.robes_plate.name=Повседневная кофта -item.sat_designator.name=Спутниковый лазерный целеуказатель -item.vault_pants.name=Штаны комбинезона Убежища -item.vault_suit.name=Комбинезон Убежища -item.zirconium_legs.name=Циркониевые штаны -potion.hbm_potionsickness=Послезельевая болезнь -radar.detectMissiles=Обнаружение ракет -radar.detectPlayers=Обнаружение игроков -radar.redMode=Режим красного камня$Включён: Сигнал редстоуна базируется на дальности$Выключен: Сигнал редстоуна базируется на уровне -radar.smartMode=Умный режим$Выход редстоуна игнорирует восходящие ракеты -tile.asphalt_light.name=Асфальтированный светящийся камень -tile.brick_ducrete.name=Дюкретовые кирпичи -tile.brick_jungle_fragile.name=Хрупкие энаргитовые кирпичи -tile.concrete_colored.black.name=Черный бетон -tile.concrete_colored.blue.name=Синий бетон -tile.concrete_colored.brown.name=Коричневый бетон -tile.concrete_colored.cyan.name=Бирюзовый бетон -tile.concrete_colored.gray.name=Серый бетон -tile.concrete_colored.green.name=Зелёный бетон -tile.concrete_colored.lightBlue.name=Светло-синий бетон -tile.concrete_colored.lime.name=Лаймовый бетон -tile.concrete_colored.magenta.name=Пурпурный бетон -tile.concrete_colored.orange.name=Оранжевый бетон -tile.concrete_colored.pink.name=Розовый бетон -tile.concrete_colored.purple.name=Фиолетовый бетон -tile.concrete_colored.red.name=Красный бетон -tile.concrete_colored.silver.name=Светло-серый бетон -tile.concrete_colored.white.name=Белый бетон -tile.concrete_colored.yellow.name=Жёлтый бетон -tile.deco_rbmk_smooth.name=Гладкий деко-блок РБМК -tile.foam_layer.name=Слой пены -tile.fusion_core.name=Контроллер термоядерного реактора -tile.gneiss_brick.name=Сланцевые кирпичи -tile.gneiss_chiseled.name=Высеченный сланец -tile.gneiss_tile.name=Сланцевая плитка -tile.hadron_power_100m.name=Порт питания ускорителя частиц (100MHE) -tile.hadron_power_10g.name=Порт питания ускорителя частиц (10GHE) -tile.hadron_power_10m.name=Порт питания ускорителя частиц (10MHE) -tile.hadron_power_1g.name=Порт питания ускорителя частиц (1GHE) -tile.hev_battery.name=Батарея костюма -tile.lamp_tritium_blue_off.name=Синяя тритиевая лампа -tile.lamp_tritium_blue_on.name=Синяя тритиевая лампа -tile.lamp_tritium_green_off.name=Зелёная тритиевая лампа -tile.lamp_tritium_green_on.name=Зелёная тритиевая лампа -tile.machine_powerrtg.name=ПТ-изотопная ячейка -tile.reinforced_ducrete.name=Усиленный дюкрет -tile.sat_foeq.name=ВСАП-МК.I зонд “FOEQ Duna” с экспериментальным ядерным двигателем (Декорация) -tile.sat_laser.name=Орбитальный Луч Смерти (Декорация) -tile.sat_mapper.name=Спутник для картографирования поверхности (Декорация) -tile.sat_radar.name=Спутник с радиолокационным зондированием (Декорация) -tile.sat_resonator.name=Спутник с Зен-Резонатором (Декорация) -tile.sat_scanner.name=Спутник с модулем глубинно-ресурсного сканирования (Декорация) -trait.explosive=Воспламеняющийся / Взрывоопасный - -item.inf_water_mk3.name=§9Космический бесконечный резервуар воды§r -item.inf_water_mk4.name=§dОхереть бесконечный резервуар воды§r -item.inf_water_mk4.desc=§aВыход: 1000 в/сек. -item.ingot_astatine.name=§dАстатиновый слиток§r -item.stamp_desh_357.name=Штамп пули .357 Магнум (Деш) -item.stamp_desh_44.name=Штамп пули .44 Магнум (Деш) -item.stamp_desh_50.name=Штамп большого калибра (Деш) -item.stamp_desh_9.name=Штамп малого калибра (Деш) -item.stamp_desh_circuit.name=Штамп микросхемы (Деш) -item.stamp_desh_flat.name=Плоский штамп (Деш) -item.stamp_desh_plate.name=Штамп пластины (Деш) -item.stamp_desh_wire.name=Штамп провода (Деш) - -#Chems - -chem.ASPHALT=Производство асфальта -chem.BALEFIRE=Смешивание ракетного жар-топлива -chem.BP_BIOFUEL=Трансэтерификация биотоплива -chem.BP_BIOGAS=Производство биогаза -chem.CC_HEATING=Усовершенствованное сжижение угля -chem.CC_HEAVY=Базовое сжижение угля -chem.CC_I=Улучшенное сжижение угля -chem.CC_NAPHTHA=Сжижение тяжелого бензина -chem.CC_OIL=Сжижение угля -chem.CIRCUIT_4=Производство разогнанной микросхемы -chem.CIRCUIT_5=Производство высокопроизводительной микросхемы -chem.COLTAN_CLEANING=Очищение колтана -chem.COLTAN_CRYSTAL=Кристаллизация тантала -chem.COLTAN_PAIN=Производство Пандемониум(III)танталита -chem.CONCRETE=Производство бетона -chem.CONCRETE_ASBESTOS=Производство асбестобетона -chem.COOLANT=Смешивание хладагента -chem.CORDITE=Производство кордита -chem.CRYOGEL=Смешивание криогеля -chem.DESH=Производство деш -chem.DEUTERIUM=Извлечение дейтерия -chem.DUCRETE=Дюкретизация -chem.DYN_DNT=Диносинтез динейтрония -chem.DYN_EUPH=Диносинтез эвфемия -chem.DYN_SCHRAB=Диносинтез шрабидия -chem.ELECTROLYSIS=Крио-электролиз -chem.FC_BITUMEN=Крекинг битума -chem.FC_DIESEL_KEROSENE=Крекинг дизеля -chem.FC_GAS_PETROLEUM=Крекинг попутного газа -chem.FC_I_NAPHTHA=Крекинг промышленного масла -chem.FC_KEROSENE_PETROLEUM=Крекинг керосина -chem.FP_HEAVYOIL=Переработка тяжелой нефти -chem.FP_LIGHTOIL=Переработка легкой нефти -chem.FP_NAPHTHA=Переработка лигроина -chem.FP_SMEAR=Переработка промышленного масла -chem.FR_PETROIL=Смешивание бензина -chem.FR_REOIL=Воссоздание нефти -chem.KEVLAR=Производство кевларовой смеси -chem.NITAN=Смешивание супер топлива NITAN© -chem.OIL_SAND=Извлечение битуминозных песков -chem.PEROXIDE=Производство пероксида водорода -chem.POLYMER=Синтез полимера -chem.PUF6=Производство гексафторида плутония -chem.SAS3=Производство трисульфида шрабидия -chem.SATURN=Производство сатурнита -chem.SCHRABIDATE=Производство шрабидата железа -chem.SCHRABIDIC=Смешивание шрабидиевой кислоты -chem.SF_BIOFUEL=Затвердевание биотоплива -chem.SF_BIOGAS=Затвердевание биогаза -chem.SF_DIESEL=Затвердевание дизеля -chem.SF_GAS=Затвердевание природного газа -chem.SF_HEATINGOIL=Затвердевание битума -chem.SF_HEAVYOIL=Затвердевание тяжёлой нефти -chem.SF_KEROSENE=Затвердевание керосина -chem.SF_LIGHTOIL=Затвердевание легкой нефти -chem.SF_LUBRICANT=Затвердевание машинной смазки -chem.SF_NAPHTHA=Затвердевание лигроина -chem.SF_OIL=Затвердевание неочищенной нефти -chem.SF_PETROIL=Затвердевание бензина -chem.SF_PETROLEUM=Затвердевание попутного газа -chem.SF_RECLAIMED=Затвердевание очищенного масла -chem.SF_SMEAR=Затвердевание промышленного масла -chem.SOLID_FUEL=Производство твердого ракетного топлива -chem.STEAM=Кипячение воды -chem.TEL=Смешивание тетраэтилсвинца -chem.TEST=Тест -chem.UF6=Производство гексафторида урана -chem.VIT_GAS=Остекловывание газообразных ядерных отходов -chem.VIT_LIQUID=Остекловывание жидких ядерных отходов -chem.XENON=Ксеноновый цикл Линде -chem.YELLOWCAKE=Производство йеллоукейка -chem.DYN_EL=Диносинтез электрония -chem.DYN_STR=Диносинтез жар-яйца - - -#HBM Fluids -hbmfluid.schrabidic=Шрабидиевая кислота -hbmfluid.acid=Пероксид водорода -hbmfluid.amat=Антиматерия -hbmfluid.aschrab=Антишрабидий -hbmfluid.balefire=Ракетное жар-топливо -hbmfluid.biofuel=Биотопливо -hbmfluid.biogas=Биогаз -hbmfluid.bitumen=Битум -hbmfluid.coolant=Хладагент -hbmfluid.cryogel=Криогель -hbmfluid.deuterium=Дейтерий -hbmfluid.diesel=Дизель -hbmfluid.gas=Природный газ -hbmfluid.gasoline=Этилированный бензин -hbmfluid.heatingoil=Мазут -hbmfluid.heavyoil=Тяжелая нефть -hbmfluid.hotoil=Горячая неочищенная нефть -hbmfluid.hotsteam=Горячий пар -hbmfluid.hydrogen=Жидкий водород -hbmfluid.kerosene=Керосин -hbmfluid.lava=Лава -hbmfluid.lightoil=Легкая нефть -hbmfluid.lubricant=Машинная смазка -hbmfluid.mercury=Ртуть -hbmfluid.naphtha=Лигроин -hbmfluid.nitan=100-октановое сверхтопливо NITAN© -hbmfluid.none=Ничего -hbmfluid.oil=Неочищенная нефть -hbmfluid.oxygen=Жидкий кислород -hbmfluid.pain=Пандемониум(III)Раствор танталита -hbmfluid.petroil=Бензин -hbmfluid.petroleum=Попутный нефтяной газ -hbmfluid.plasma_bf=Жар-плазма -hbmfluid.plasma_dt=Дейтериево-Тритиевая-плазма -hbmfluid.plasma_hd=Водородно-Дейтериевая-плазма -hbmfluid.plasma_ht=Водородно-Тритиевая-плазма -hbmfluid.plasma_xm=Ксеноново-Ртутная-плазма -hbmfluid.puf6=Гексафторид плутония -hbmfluid.reclaimed=Очищенное промышленное масло -hbmfluid.sas3=Трисульфид шрабидия -hbmfluid.schrabidic_fluid=Шрабидиновая кислота -hbmfluid.smear=Промышленное масло -hbmfluid.spentsteam=Пар низкого давления -hbmfluid.steam=Пар -hbmfluid.superhotsteam=Пар сверхвысокого давления -hbmfluid.hotsteam=Пар высокого давления -hbmfluid.tritium=Тритий -hbmfluid.uf6=Гексафторид урана -hbmfluid.ultrahotsteam=Раскалённый пар -hbmfluid.wastefluid=Жидкие ядерные отходы -hbmfluid.wastegas=Газовые ядерные отходы -hbmfluid.water=Вода -hbmfluid.watz=Токсичные отходы -hbmfluid.xenon=Ксенон -hbmfluid.liquid_osmiridium=Осмиридиевый раствор - -#Fluids -fluid.plasma_put=Термоядерная плазма -fluid.hbmacid=Пероксид водорода -fluid.hbmamat=Антиматерия -fluid.hbmaschrab=Антишрабидий -fluid.hbmbalefire=Ракетное жар-топливо -fluid.hbmbiofuel=Биотопливо -fluid.hbmbiogas=Биогаз -fluid.hbmbitumen=Битум -fluid.hbmcoolant=Хладагент -fluid.hbmcryogel=Криогель -fluid.hbmdeuterium=Дейтерий -fluid.hbmdiesel=Дизель -fluid.hbmgas=Природный газ -fluid.hbmheatingoil=Мазут -fluid.hbmheavyoil=Тяжелая нефть -fluid.hbmhotoil=Горячая неочищенная нефть -fluid.hbmhotsteam=Пар среднего давления -fluid.hbmhydrogen=Жидкий водород -fluid.hbmkerosene=Керосин -fluid.hbmlightoil=Лёгкая нефть -fluid.hbmlubricant=Машинная смазка -fluid.hbmmercury=Ртуть -fluid.hbmnaphtha=Нафта -fluid.hbmnitan=100-октановое сверхтопливо NITAN© -fluid.hbmoil=Неочищенная нефть -fluid.hbmoxygen=Жидкий кислород -fluid.hbmpetroil=Бензин -fluid.hbmpetroleum=Попутный нефтяной газ -fluid.hbmpuf6=Гексафторид плутония -fluid.hbmreclaimed=Очищенное промышленное масло -fluid.hbmsas3=Трисульфид шрабидия -fluid.hbmsmear=Промышленное масло -fluid.hbmsteam=Пар -fluid.hbmsuperhotsteam=Пар сверхвысокого давления -fluid.hbmtritium=Тритий -fluid.hbmuf6=Гексафторид урана -fluid.hbmwatz=Токсичные отходы -fluid.hbmxenon=Ксенон - -fluid.schrabidic_fluid=Шрабидиевая кислота -fluid.acid=Пероксид водорода -fluid.acid_fluid=Кислота -fluid.amat=Антиматерия -fluid.aschrab=Антишрабидиум -fluid.balefire=Ракетное жар-топливо -fluid.biofuel=Биотопливо -fluid.biogas=Биогаз -fluid.bitumen=Битум -fluid.coolant=Хладагент -fluid.corium_fluid=Кориум -fluid.cryogel=Криогель -fluid.deuterium=Дейтерий -fluid.diesel=Дизель -fluid.gas=Природный газ -fluid.gasoline=Этилированный бензин -fluid.heatingoil=Мазут -fluid.heavyoil=Машинное масло -fluid.hotoil=Горячая сырая нефть -fluid.hotsteam=Пар среднего давления -fluid.hydrogen=Жидкий водород -fluid.kerosene=Керосин -fluid.lightoil=Легкая нефть -fluid.lubircant=Смазка двигателя -fluid.lubricant=Смазка двигателя -fluid.mercury=Ртуть -fluid.mud_fluid=Токсичные отходы -fluid.naphtha=Нафта -fluid.nitan=NITAN© 100-октановое супертопливо -fluid.oil=Сырая нефть -fluid.oxygen=Жидкий кислород -fluid.pain=Раствор танталита пандемониума (III) -fluid.petroil=Нефть -fluid.petroleum=Нефтяной газ -fluid.plasma_bf=Плазма Гибельного Пламени -fluid.plasma_dt=Дейтериево-Тритиевая Плазма -fluid.plasma_hd=Водородно-Дейтериевая Плазма -fluid.plasma_ht=Водородно-Тритиевая Плазма -fluid.plasma_xm=Ксено-Ртутная Плазма -fluid.puf6=Гексафторид плутония -fluid.radwater_fluid=Радиоактивная вода -fluid.reclaimed=Восстановленное индустриальное масло -fluid.sas3=Трисульфид шрабидий -fluid.schrabidic=Шрабидиновая кислота -fluid.smear=Индустриальное масло -fluid.spentsteam=Пар низкого давления -fluid.steam=Пар -fluid.superhotsteam=Пар высокого давления -fluid.toxic_fluid=Стереотипная зелёная слизь -fluid.tritium=Тритий -fluid.uf6=Гексафторид урана -fluid.ultrahotsteam=Пар сверхвысокого давления -fluid.volcanic_lava_fluid=Вулканическая лава -fluid.wastefluid=Жидкие ядерные отходы -fluid.wastegas=Газообразные ядерные отходы -fluid.watz=Ядовитая грязь -fluid.xenon=Ксенон -fluid.liquid_osmiridium=Осмиридиевый раствор - -#Ingots (Lmao) - -item.crystal_osmiridium.name=Осмиридиевый кристалл -item.ingot_osmiridium.name=Осмиридиевый слиток -item.nugget_osmiridium.name=Осмиридиевый самородок -item.powder_impure_osmiridium.name=Загрязненный осмиридиевый порошок -item.powder_osmiridium.name=Осмиридиевый порошок - -#Meteotire book - -book.msword.cover=Руководство$как получить$метеоритный меч - -book.msword.title0=Оглавление -book.msword.title1=Метеоритный$Блок -book.msword.title2=Метеоритный$Слиток -book.msword.title3=Горячий$Слиток -book.msword.title4=Отбивной$Слиток -book.msword.title5=Горячий$Отбивной$Слиток -book.msword.title6=Метеоритное$Лезвия -book.msword.title7=Метеоритный$Меч -book.msword.title8=Опаленный -book.msword.title9=Перекованный -book.msword.title10=Закалённый -book.msword.title11=Сплавленный -book.msword.title12=Механически обработанный -book.msword.title14=Обработанный -book.msword.title16=Вытравленный -book.msword.title17=Разведённый -book.msword.title18=Облучённый -book.msword.title20=Термо-Сплавленный -book.msword.title21=Зловещий -book.msword.title22=Искаженный -book.msword.title24=емонический - -book.msword.page0=Страница 1-8: Как изготовить метеоритный меч. Страница 9-25: Как улучшить свой метеоритный меч. -book.msword.page1=Осколки метеорита можно получить, добывая метеориты, которые время от времени будут выпадать дождями. -book.msword.page2=§lМашина = Доменная Печь: $§rПросто соедините Метеоритный блок с Кобальтовым слитком. -book.msword.page3=§lМашина = Печь: $§rПросто разогрейте слиток в печи. -book.msword.page4=§lМашина = Наковальня 3 уровня: $§rИх можно готовить только в горячем виде, так что, ПОТОРОПИТЕСЬ!!! -book.msword.page5=§lМашина = Печь: $§rПросто разогрейте метеоритный выкованный слиток в печи. -book.msword.page6=§lМашина = Наковальня: $§rХорошо, что ты это сделал! Теперь создайте второй, и у вас будет свой собственный метеоритный меч. -book.msword.page7=§lМашина = Верстак: $§rВы знаете, что делать :) -book.msword.page8=§lМашина = Печь: &§rДа, просто разогрейте свой меч. Нет, он не превратится в жаренный меч. -book.msword.page9=§lМашина = Наковальня: $§rДобавьте еще одну лезвию. -book.msword.page10=§lМашина = Пресс + Плоский Штамп: $§rЗачем вы ковали слиток, когда могли положить его в пресс? -book.msword.page11=§lМашина = Доменная Печь: $§rМного кобальта не бывает! -book.msword.page12=§lМашина = Сборочная Машина§r -book.msword.page13=Создайте что-нибудь внутри сборочной машины, пока меч находится в слоте для батареи -book.msword.page14=§lМашина = Химическая Установка§r -book.msword.page15=Создайте что-нибудь внутри химической установки, пока меч находится в слоте для батареи -book.msword.page16=§lМашина = Рудный §lОкислитель: $§rСмотрите, не окислите его. -book.msword.page17=§lМашина = Реактор Размножитель + §lМощность 4: $§rЯдерный меч? -book.msword.page18=§lМашина = Стержень Облучения РБМК + §lПоток 1,000,000: $§rКажись, вам придется еще одно руководство покупать. -book.msword.page19=Бомбардируйте меч огромным количеством радиации. -book.msword.page20=§lМашина = Термоядерный Реактор + §lЛюбая Плазма: $§rПоместите облученный меч в слот для разведения. -book.msword.page21=§lМашина = Термоядерный Реактор + §lЖар-Плазма: $§rПоместите термо-сплавленный меч в слот для разведения. -book.msword.page22=§lМашина = Реакторная Установка Ватцз: $§rАнгел указывал мечом вниз в самый центр земли. -book.msword.page23=Как только начнется выработка энергии и станет видна плазма, замените активную зону реактора зловещим мечом. -book.msword.page24=§lМашина = РТС: §r§o§4отредактировано - -#Meteotire Swords - -item.meteorite_sword.name=Метеоритовый меч -item.meteorite_sword_alloyed.name=Метеоритовый меч (Сплавленный) -item.meteorite_sword_baleful.name=Метеоритовый меч (Зловещий) -item.meteorite_sword_bred.name=Метеоритовый меч (Разведённый) -item.meteorite_sword_etched.name=Метеоритовый меч (Вытравленный) -item.meteorite_sword_fused.name=Метеоритовый меч (Термо-Сплавленный) -item.meteorite_sword_hardened.name=Метеоритовый меч (Закалённый) -item.meteorite_sword_irradiated.name=Метеоритовый меч (Облучённый) -item.meteorite_sword_machined.name=Метеоритовый меч (Механически обработанный) -item.meteorite_sword_reforged.name=Метеоритовый меч (Перекованный) -item.meteorite_sword_seared.name=Метеоритовый меч (Опаленный) -item.meteorite_sword_treated.name=Метеоритовый меч (Обработанный) -item.meteorite_sword_demonic.name=Метеоритовый меч (Демонический) -item.meteorite_sword_warped.name=Метеоритовый меч (Искаженный) - -#Radio - -tile.radio_torch_sender.name=Редстоун-радиопередатчик -tile.radio_torch_receiver.name=Редстоун-радиоприемник -container.rttySender=Редстоун-радиопередатчик -container.rttyReceiver=Редстоун-радиоприемник - -#Diagnostics - -item.digamma_diagnostic.name=Диагностика дигаммы -digamma.title=Диагностика дигаммы -digamma.playerDigamma=Уровень облучения дигаммы на игроке: -digamma.playerHealth=Влияние дигаммы на игрока: - -dosimeter.title=ДОЗИМЕТР - -item.lung_diagnostic.name=Диагностика легких -lung_scanner.title=Диагностика легких -lung_scanner.player_asbestos_health=Здоровье легких [асбест]: -lung_scanner.player_coal_health=Здоровье легких [уголь]: -lung_scanner.player_total_health=Общее здоровье легких: - - -#Energy storages - -tile.machine_battery_potato.name=Картофельная батарея -tile.machine_battery.name=Энергохранилище -tile.machine_lithium_battery.name=Литий-Ионное энергохранилище -tile.machine_saturnite_battery.name=Сатурнитовое энергохранилище -tile.machine_desh_battery.name=Деш энергохранилище -tile.machine_schrabidium_battery.name=Шрабидиевое энергохранилище -tile.machine_euphemium_battery.name=Эвфемиевое энергохранилище -tile.machine_radspice_battery.name=§aНеовелиновое энергохранилище -tile.machine_dineutronium_battery.name=§5Спарк-энергохранилище -tile.machine_electronium_battery.name=Электрониевое энергохранилище -tile.machine_fensu.name=ЭМЭХ -container.battery=Энергохранилище - -#In the next update, I'll sort everything out. I promise... \ No newline at end of file +weapon.ability.vampire=Вампиризм \ No newline at end of file diff --git a/src/main/resources/assets/hbm/lang/zh_cn.lang b/src/main/resources/assets/hbm/lang/zh_cn.lang index f2d29ecbf3..9555c86e1d 100644 --- a/src/main/resources/assets/hbm/lang/zh_cn.lang +++ b/src/main/resources/assets/hbm/lang/zh_cn.lang @@ -1,8 +1,40 @@ +#book.rbmk.cover=$我的第一个$RBMK石墨式反应堆:$建造一个$反应堆$的基础知识 +#book.rbmk.page1=§lRBMK石墨式反应堆§r是一个完全模块化的核反应堆. 与大多数其他反应堆不同的是, 该反应堆没有"多方块结构核心"和尺寸上的限制, 而反应堆的性能和效率仅取决于你是如何建造它的, 以及各个组件如何相互作用. +#book.rbmk.page10=§l石墨慢化剂§r 把穿过它的快中子转换成慢中子. 大多数核燃料反应释放出快中子, 而引起裂变需要慢中子, 所以强烈建议使用慢化剂. +#book.rbmk.page11=§l结构柱§r 对中子没有任何影响也没有任何特殊用途. 建议在没有其他合适组件的情况下用结构柱填充反应堆, 因为结构柱能够传热. +#book.rbmk.page12=§lRBMK石墨式反应堆控制台§r 允许你远程控制反应堆. 使用 §lRBMK石墨式反应堆连接装置记录反应堆§r 然后潜行右击控制台就能把反应堆和控制台连接起来. 一个控制台只能控制15x15个组件, 对于大型反应堆可以使用多个控制台. +#book.rbmk.page13=单击屏幕上的组件将选择或取消选择它们. 使用彩色按钮,可以快速选择该颜色组中的所有控制棒. 按钮“A”将选择所有控制棒, “X”将取消选择所有控制棒. +#book.rbmk.page15=The §lfuel§r's reactivity is based on multiple factors. The main ones are the §lenrichment§r, §lxenon poison§r and the amount of incoming §lneutrons§r. Xenon builds up when the fuel receives few neutrons and burns away during normal operation. The effectivity of neutrons depends on the type, most fuels §lsplit best with slow neutrons§r. +#book.rbmk.page16=§4§lAvoid. +#book.rbmk.page2=As the reactor operates, it will generate §lheat§r. Heat will spread between parts, slowly decreasing in the process. The goal is to produce as much heat as possible without melting the reactor, and to move that heat to a §lsteam channel§r which cools the reactor and produces steam. +#book.rbmk.page3=The §lfuel rod§r will capture neutron flux, causing the fuel inside the fuel rod to react, giving off neutrons in the process. Neutrons are released in all four cardinal directions with a maximum range of 5 blocks. The amount of neutrons released depends on the §lfuel§r used. +#book.rbmk.page4=The §lcontrol rod§r will decrease the amount of neutrons passing though it. Fully inserted, it will block all neutrons, at half insertion, it will only block half. Control rods are used to regulate the reactor's activity and to turn it off. +#book.rbmk.page5=The center of the GUI will display the current rod insertion. The colored buttons on the left will add a control rod to a color group, which is useful to quickly select grouped rods from the §lRBMK console§r. The buttons on the right allow for manual insertion in increments of 25%%. +#book.rbmk.page6=§lAutomatic control rods§r function nearly identical to regular control rods, but they cannot be configured manually, instead they will adjust the rod position based on the current temperature. What function to use and how deep to insert at what temperature has to be defined first. +#book.rbmk.page7=The §lsteam channel§r is the only part that will actively reduce the reactor's heat level. If the component's temperature exceeds the boiling point of the set steam type, it will try to consume as much water and produce as much steam as needed to cool back below the boiling point. +#book.rbmk.page8=The §lneutron reflector§r will block neutrons from passing it, instead the neutrons will be reflected back at the fuel rod they came from. This is useful for utilizing neutrons that would otherwise be wasted by simply exiting the reactor. +#book.rbmk.page9=The §lneutron absorber§r will simply block neutrons. Neutrons absorbed will not generate heat and be effectively voided. This is useful to prevent fuel rods from reacting that would otherwise be in range. +#book.rbmk.title1=Introduction +#book.rbmk.title10=Graphite Moderator +#book.rbmk.title11=Structural Column +#book.rbmk.title12=Console +#book.rbmk.title13=Console Usage +#book.rbmk.title15=Fuel +#book.rbmk.title16=Meltdown +#book.rbmk.title2=Heat +#book.rbmk.title3=Fuel Rod +#book.rbmk.title4=Control Rod +#book.rbmk.title5=Control Rod - Usage +#book.rbmk.title6=Automatic Control Rod +#book.rbmk.title7=Steam Channel +#book.rbmk.title8=Neutron Reflector +#book.rbmk.title9=Neutron Absorber +achievement.bossUFO=Ayy Lmao +achievement.bossUFO.desc=哟,我们这儿有什么?一艘巨大的宇宙飞船正开向我们的星球? armor.blastProtection=修正 %s 的爆炸伤害 armor.cap=伤害上限 %s armor.damageModifier=修正 %s 对 %s 的伤害 armor.electricJetpack=离子喷射背包 -armor.explosionImmune=免疫除爆炸伤害外一切伤害 armor.fastFall=快速降落 armor.fireproof=防火 armor.fullSetBonus=全套效果: @@ -18,14 +50,7 @@ armor.rocketBoots=火箭靴 armor.sprintBoost=冲刺辅助加速 armor.thermal=热成像 armor.threshold=伤害阈值 %s -armor.vats=敌对生物HUD -battery.priority.high=充电优先级:高 -battery.priority.high.desc=总是需要优先装满的紧急缓冲区 -battery.priority.low=充电优先级:低 -battery.priority.low.desc=在大多数情况下,需要在不影响机器性能的情况下$存储剩余的能量 -battery.priority.normal=充电优先级:正常 -battery.priority.normal.desc=较小的电网,其优先级无关紧要 -battery.priority.recommended=推荐用于: +armor.vats=这是一个测试,以证明这些书的e[B]ic换行功能。字体比例是可自定义的,换行符也会相应调整,这使得编写新页面非常容易。 book.rbmk.cover=$我的第一个$RBMK石墨式反应堆:$建造一个$反应堆$的基础知识 book.rbmk.page1=§lRBMK石墨式反应堆§r是一个完全模块化的核反应堆. 与大多数其他反应堆不同的是, 该反应堆没有"多方块结构核心"和尺寸上的限制, 而反应堆的性能和效率仅取决于你是如何建造它的, 以及各个组件如何相互作用. book.rbmk.page10=§l石墨慢化剂§r 把穿过它的快中子转换成慢中子. 大多数核燃料反应释放出快中子, 而引起裂变需要慢中子, 所以强烈建议使用慢化剂. @@ -38,89 +63,11 @@ book.rbmk.page16=§4§l尽量避免发生, 你不会想让这样一场核灾难 book.rbmk.page2=当反应堆运行时, 它将会产生 §l热量§r. 热量会在各个组件之间扩散, 并在这个过程中会慢慢减少. 我们的目标是在不让反应堆熔化的情况下 产生尽可能多的热量, 并将热量传递到蒸汽管道中, 从而冷却反应堆并产生蒸汽. book.rbmk.page3=反应堆中的 §l燃料棒§r 将捕获周围的中子, 使棒内的燃料发生核反应, 并在此过程中释放中子. 中子会向四个方向释放, 最大释放范围为5格. 释放中子量的多少取决于所用的核燃料. book.rbmk.page4=反应堆中的 §l控制棒§r 将减少中子通过它的数量. 完全插入时, 它会阻挡所有中子; 当插入一半时, 它只会阻挡一半中子. 控制棒用于调节反应堆的活跃状态和使其关闭. -book.rbmk.page5=当前控制棒插入的程度将显示在GUI的中心. 旁边的彩色按钮将把控制棒添加到不同的颜色组中, 这对于在 §lRBMK石墨式反应堆§r 控制台上快速选择屏幕上不同区域的控制棒非常有用. 右侧的按钮允许您以每次25%的增量手动插入. +book.rbmk.page5=当前控制棒插入的程度将显示在GUI的中心. 边的彩色按钮将把控制棒添加到不同的颜色组中, 这对于在 §lRBMK石墨式反应堆§r 控制台上快速选择屏幕上不同区域的控制棒非常有用. 右侧的按钮允许您以每次25%的增量手动插入. book.rbmk.page6=§L自动控制棒§r 与常规控制棒几乎相同, 但它们不能手动调整, 而是根据当前温度来调整控制棒插入的程度. 使用哪种功能, 在多少的温度插入多少的深度必须被事先设定好. book.rbmk.page7=反应堆中的 §l蒸汽管道§r 是唯一能有效降低反应堆热水平的组件. 如果一个蒸汽管道组件的沸点高于其设定的蒸汽类型的沸点, 那么它将试图消耗尽可能多的水 并产生尽可能多的蒸汽来冷却到沸点以下. book.rbmk.page8=反应堆中的 §l碳化钨中子反射器§r 将阻止中子的通过, 相反,中子将被反射回它们来自的燃料棒上. 这对于使用中子是有用的, 否则这些中子一旦离开反应堆就会被浪费掉. book.rbmk.page9=§l硼中子吸收器§r 只是阻挡中子. 被吸收的中子不会产生热量,会被有效地吸收. 这有助于防止燃料棒发生过度反应从而超出临界值. -book.rbmk.title_fluxgraph=氙毒化 -book.rbmk.page_fluxgraph=从左侧的RBMK燃料棒§l发射50通量§r. 控制棒会让 §l80%% 通过,所以就是40§r 通量. §5§l氙毒化 §5§l会阻断 75%%§r 的入射通量. 所以只有10通量到达右侧燃料棒. 氙毒化作用会带来低通量. -book.rbmk.title_schematic=概述 -book.rbmk.page_schematic=在反应堆中,裂变产生热量,将水转化为蒸汽. 这些蒸汽通过管道流向蒸汽轮机, 蒸汽轮机发电并将蒸汽转化为较低级别的蒸汽. 低压蒸汽流入冷凝器,冷凝器将其转化为水. 输入/输出模式下的水箱充当备用水箱. -book.rbmk.title_flux=通量 -book.rbmk.page_flux=发射的中子流被称作通量. 中子是燃料棒中原子裂变过程中会产生热量的粒子. 中子放射函数f(x): 决定了在给定通量x的情况下发射多少通量和产生多少热量. 示例:中子放射函数为§lsqrt(输入)*2 =输出§r. 因此,对于10通量的输入,则输出为 sqrt(10) * 2=6.325 通量. -book.rbmk.title_flux_explain=中子放射函数 -book.rbmk.page_flux_explain=通量输出*热量/通量=热量输出. 对于最大热量,你需要大量通量或者高热量/通量. X轴为输入通量,Y轴为输出通量. 大多数燃料的f(0)=0,因此在0输入时它们的输出为0. -它们不是自发进行反应的,需要通量输入才能开始. 你可以通过放入带有§c自燃§r属性的燃料棒获得初始输入. -book.rbmk.title_func_passive=Passive -book.rbmk.page_func_passive=自我维持: §2是§r 使用中子反射器:§8无关§r 示例: f(x) = 50 -book.rbmk.title_func_euler=Euler -book.rbmk.page_func_euler=自我维持: §8否§r 使用中子反射器: §2有益§r 示例: f(x) = (1 - e^(-x/25)) * 20 -book.rbmk.title_func_sigmoid=Sigmoid -book.rbmk.page_func_sigmoid=自我维持: §8否§r 使用中子反射器: §2有益§r 示例: f(x) = 30 / (1 + e^(-0.1x + 5)) -book.rbmk.title_func_logarithmic=Logarithmic -book.rbmk.page_func_logarithmic=自我维持: §2是§r 使用中子反射器: §2有益§r 示例: f(x) = log10(x) * 10 -book.rbmk.title_func_square_root=Square Root -book.rbmk.page_func_square_root=自我维持: §2是§r 使用中子反射器: §2有益§r 示例: f(x) = √x * 2 -book.rbmk.title_func_neg_quad=Negative Quadratic -book.rbmk.page_func_neg_quad=自我维持 = §6或许§r 使用中子反射器: §6有风险§r 示例: f(x) = x - x² * 0.001 -book.rbmk.title_func_linear=Linear -book.rbmk.page_func_linear=自我维持: §8否§r 使用中子反射器: §4危险§r 示例: f(x) = x * 0.5 放在MEDIUM、SAFE、PASSIVE但不含较高的燃料棒的旁边. -book.rbmk.title_func_quadratic=Quadratic -book.rbmk.page_func_quadratic=自我维持: §8否§r 使用中子反射器: §4§l疯狂§r 示例: f(x) = x² * 0.1 只能放在SAFE和PASSIVE的燃料棒或吸收器旁边. -book.rbmk.title_tips=小提示 -book.rbmk.page_tips=如果通量离开反应堆(没有被阻挡或反射), 或者通量到达没有盖子的RBMK柱,辐射就会泄漏. 蒸汽连接器用于蒸汽通道的性能和可达性. 辐照通道是吸收材料,利用入射通量进行配方. -book.rbmk.title_mistakes=常见问题 -book.rbmk.page_mistakes=§l资讯§r: 通量可通过空RBMK燃料柱. §l方案§r: 你把耗尽的燃料棒换到粉色燃料柱. 红色燃料柱中使用了带有 §4DANGEROUS§r 类中子放射函数. 如果你拿出粉红色的燃料棒,RBMK就会爆炸。那发生了什么? 来自红色的通量不再被粉色吸收,而是被反射回来. 这就形成了一个反馈回路,使温度升高 -book.rbmk.title_post_meltdown=熔毁处理规程 -book.rbmk.page_post_meltdown=RBMK爆炸了——现在怎么办? 有两种危险来自辐射和高温. 使用具有高防爆性的方块来保护自己免受内部辐射的影响, 这样你就可以靠近并且使用火焰保护来对抗高温. RBMK慢慢冷却并衰变为规则的碎片, 如果硼砂靠近燃烧或放射的rbmk碎片, 它会加速衰变并降低辐射水平. 在具有防核爆炸性能的地下室中建造RBMK,以限制辐射传播. 用具有高抗爆性的方块阻挡燃料通道下方的熔融堆芯流动, 从而阻碍了堆芯石的形成. -book.msword.cover=如何去$制造出一把$属于你的陨石剑 -book.msword.title0=介绍 -book.msword.page0=1-8页: 如何制造陨石剑. 9-25页:如何升级你的陨石剑 -book.msword.title1=陨石块 -book.msword.page1=陨石碎片可以通过开采不时掉落的陨石来获得. -book.msword.title2=陨石锭 -book.msword.page2=§l工具 = 高炉§r -book.msword.title3=烧热的陨石锭 -book.msword.page3=§l工具 = 熔炉§r -book.msword.title4=锻造陨石锭 -book.msword.page4=§l工具 = 三级砧§r: 它们只能趁热制作,所以要快 -book.msword.title5=烧热的锻造陨石锭 -book.msword.page5=§l工具 = 熔炉§r -book.msword.title6=陨石刀 -book.msword.page6=§l工具 = 砧§r: 很好你做到了! 现在做第二个陨石刀你就可以得到你的第一把陨石剑了. -book.msword.title7=陨石剑 -book.msword.page7=§l工具 = 工作台§r -book.msword.title8=升级 1: 烧焦 -book.msword.page8=§l工具 = 熔炉§r -book.msword.title9=升级 2: 重铸 -book.msword.page9=§l工具 = 砧§r -book.msword.title10=升级 3: 硬化 -book.msword.page10=§l工具 = 锻压机§r 使用普通锻模 -book.msword.title11=升级 4: 合金 -book.msword.page11=§l工具 = 高炉§r -book.msword.title12=升级 5: 机械加工 -book.msword.page12=§l工具 = 装配机§r -book.msword.page13=将剑放在电池槽内时,在装配机内制作一些东西. -book.msword.title14=升级 6: 精制 -book.msword.page14=§l工具 = 化工厂§r -book.msword.page15=将剑放在电池槽内时,在化工厂内制作一些东西. -book.msword.title16=升级 7: 刻蚀 -book.msword.page16=§l工具 = 矿物酸化机§r -book.msword.title17=升级 8: 增殖 -book.msword.page17=§l工具 = 增殖反应堆§r 热量等级4 -book.msword.title18=升级 9: 辐照 -book.msword.page18=§l工具 = RBMK 辐照通道§r -book.msword.page19=使用巨量的辐射轰击这把剑. -book.msword.title20=升级 10: 熔融 -book.msword.page20=§l工具 = 聚变反应堆§r 使用任意等离子体: 将辐照过的剑放入增殖槽. -book.msword.title21=升级 11: 凶恶 -book.msword.page21=§l工具 = 聚变反应堆§r 使用野火等离子体: 将辐照过的剑放入增殖槽. -book.msword.title22=升级 12: 扭曲 -book.msword.page22=§l工具 = S.A.F.E 反应堆§r: 把剑扔进奇点反聚变反应堆 -book.msword.page23=一旦开始发电, 等离子体可见时,用陨石剑(凶恶)替换反应堆的核心. -book.msword.title24=升级 13: §kDemonic§r -book.msword.page24=§l工具 = DFC§r: §4REDACTED book.rbmk.title1=介绍 book.rbmk.title10=石墨慢化剂 book.rbmk.title11=结构柱 @@ -222,15 +169,11 @@ chem.DYNAMITE=硝糖炸药合成 chem.ALGE=生物质合成 chem.DYN_STR=Neoveline合成 chem.DYN_EL=电素合成 -chem.HEAVY_ELECTROLYSIS=低温电解重水 -chem.SOLVENT=有机溶剂混合 -chem.RADIOSOLVENT=高性能溶剂混合 -chem.NITRIC_ACID=硝酸生产 container.amsBase=AMS基座 [开发中] container.amsEmitter=AMS发射极 [开发中] container.amsLimiter=AMS稳能器 [开发中] -container.anvil=%s 级砧 +container.anvil=砧 container.arcFurnace=电弧炉 container.armorTable=装甲改装台 container.assembler=装配机 @@ -246,7 +189,7 @@ container.crateDesh=Desh箱子 container.crateIron=铁箱 container.crateSteel=钢箱 container.crateTungsten=钨箱 -container.crystallizer=矿物酸化机 +container.crystallizer=矿物酸化器 container.cyclotron=回旋加速器 container.dfcCore=暗核聚变堆核心 container.dfcEmitter=DFC发射器 @@ -261,15 +204,13 @@ container.factoryTitanium=工厂 container.fluidtank=储罐 container.forceField=力场发生器 container.fusionMultiblock=大型聚变反应堆 -container.fusionaryWatzPlant=S.A.F.E +container.fusionaryWatzPlant=Watz聚变反应堆 container.gasCentrifuge=气体离心机 container.gasFlare=高架火炬 container.generator=核反应堆 container.hadron=粒子加速器 container.heaterOilburner=流体燃烧器 container.heaterOven=加热炉 -container.furnaceIron=铁炉 -container.furnaceSteel=钢炉 container.heaterHeatex=换热交换器 container.iGenerator=工业发电机 container.keyForge=锁匠桌 @@ -354,16 +295,6 @@ container.turretTauon=陶子发射器炮塔“陶恩” container.uf6_tank=六氟化铀储罐 container.wasteDrum=乏燃料池 container.watzPowerplant=Watz发电厂 -container.rttySender=无线红石发射器 -container.rttyReceiver=无线红石接收器 -container.rbmkHeater=RBMK流体加热器 -container.frackingTower=水力压裂塔 -commands.hbmrad.removeall=移除维度中的所有加载辐射 %1$s. -commands.hbmrad.rad_not_int=新的辐射值不是数字! -commands.hbmrad.player_success=成功清除所有在线玩家的辐射! -commands.hbmrad.not_rad=请输入新的辐射值! -commands.hbmrad.not_found_player=无法找到玩家 %1$s! - death.attack.acid=%1$s 掉进了酸里 death.attack.ams=%1$s 沐浴在尚未被人类科学命名的致命粒子中 death.attack.amsCore=%1$s 在奇点之火中蒸发 @@ -389,7 +320,7 @@ death.attack.euthanizedSelf=%1$s 把自己安乐死了,可真傻 death.attack.euthanizedSelf2=%1$s 获得了达尔文奖 death.attack.exhaust=%1$s 被火箭烤成了羊肉串 death.attack.flamethrower=%1$s 被 %2$s 火化 -death.attack.gluon=%1$s 被浓缩胶子流解成原子。 +death.attack.gluon=%1$s 被浓缩胶子流解原子。 death.attack.gunGib=%1$s 被 %2$s 炸成了碎片。 death.attack.ice=%1$s 被 %2$s 做成了冰棒 death.attack.laser=%1$s 被 %2$s 变成了灰烬 @@ -418,33 +349,31 @@ death.attack.taint=%1$s 死于恶性肿瘤 death.attack.tau=%1$s 被 %2$s 用带负电荷的陶子射穿 death.attack.tauBlast=%1$s 对XVL1456充能时间过长,被炸成碎片 death.attack.teleporter=%1$s 被传送到虚空 - desc.item.rtgDecay=衰减为:%s desc.item.rtgHeat=热量:%s digamma.playerDigamma=玩家F-迪伽马辐照水平: digamma.playerHealth=玩家所受F-迪伽马辐照影响: digamma.title=玩家F-迪伽马辐射自检器 dosimeter.title=剂量计 -entity.entity_balls_o_tron.name=机械蠕虫 -entity.entity_balls_o_tron_seg.name=机械蠕虫 +entity.entity_balls_o_tron.name=Balls-O-Tron 素数 +entity.entity_balls_o_tron_seg.name=Balls-O-Tron 段 entity.entity_bullet.name=子弹 entity.entity_bullet_mk2.name=子弹 entity.entity_cyber_crab.name=赛博螃蟹 -entity.entity_elder_one.name=上古鸭神 +entity.entity_elder_one.name=老鸭子 entity.entity_fucc_a_ducc.name=鸭子 -entity.entity_hunter_chopper.name=猎人直升机 +entity.entity_hunter_chopper.name=猎人斩波器 entity.entity_mask_man.name=面具人 entity.entity_ntm_fbi.name=FBI探员 entity.entity_ntm_radiation_blaze.name=核融元素 -entity.entity_ntm_ufo.name=火星入侵者飞船 +entity.entity_ntm_ufo.name=火星入侵舰 entity.entity_nuclear_creeper.name=核爬行者 entity.entity_rbmk_debris.name=放射性 RBMK 碎片 entity.entity_rocket.name=火箭 -entity.entity_schrabnel.name=弹片 +entity.entity_schrabnel.name=施拉内尔 entity.entity_taint_crab.name=污染螃蟹 -entity.entity_tainted_creeper.name=污染爬行者 +entity.entity_tainted_creeper.name=被污染的苦力怕 entity.entity_tesla_crab.name=磁暴螃蟹 -entity.entity_glowing_one.name=发光种 fluid.acid=过氧化氢 fluid.acid_fluid=酸 fluid.amat=反物质 @@ -465,6 +394,7 @@ fluid.heavyoil=重油 fluid.hotoil=热原油 fluid.hotsteam=热蒸汽 fluid.hydrogen=液氢 +flare.ignition=点火开关 fluid.kerosene=煤油 fluid.lightoil=轻油 fluid.lubircant=发动机润滑油 @@ -472,17 +402,17 @@ fluid.lubricant=发动机润滑油 fluid.mercury=汞 fluid.mud_fluid=毒泥 fluid.naphtha=石脑油 -fluid.nitan=NITAN© 100号超级燃料 +fluid.nitan=NITAN© 100 辛烷超级燃料 fluid.oil=原油 fluid.oxygen=液氧 fluid.pain=Pandemonium(III)钽铁矿溶液 fluid.petroil=石油 fluid.petroleum=石油气 fluid.plasma_bf=野火等离子体 -fluid.plasma_dt=氘-氚等离子体 -fluid.plasma_hd=氢-氘等离子体 -fluid.plasma_ht=氢-氚等离子​​体 -fluid.plasma_xm=氙-汞等离子体 +fluid.plasma_dt=氘氚等离子体 +fluid.plasma_hd=氢氘等离子体 +fluid.plasma_ht=氢氚等离子​​体 +fluid.plasma_xm=氙汞等离子体 fluid.puf6=六氟化钚 fluid.radwater_fluid=核污染水 fluid.reclaimed=再生工业油 @@ -496,6 +426,7 @@ fluid.toxic_fluid=绿色软泥 fluid.tritium=氚 fluid.uf6=六氟化铀 fluid.ultrahotsteam=超浓密蒸汽 +flare.valve=燃气阀门 fluid.volcanic_lava_fluid=火山熔岩 fluid.wastefluid=液态核废料 fluid.wastegas=气态核废料 @@ -507,10 +438,7 @@ fluid.crackoil=裂化油 fluid.hotcrackoil=热裂化油 fluid.aromatics=芳香烃 fluid.unsaturateds=不饱和烃 -fluid.plasma_put=钚-氚等离子体 -fluid.fracksol=压裂液 -fluid.liquid_osmiridium=锇酸 - +fluid.plasma_put=钚氚等离子体 geiger.chunkRad=当前区块辐射: geiger.envRad=环境总辐射量: geiger.playerRad=玩家辐射: @@ -529,24 +457,6 @@ hadron.modeLine=§e直线加速器模式:$加速器末端有分析室$更少的 hadron.noresult=无结果 hadron.progress=正在进行中... hadron.success=已完成! -hadron.error_generic=错误! -hadron.error_no_charge=错误 0x01 [NC] -hadron.error_no_analysis=错误 0x02 [NA] -hadron.error_obstructed_channel=错误 0x03 [OC] -hadron.error_expected_coil=错误 0x04 [EC] -hadron.error_malformed_segment=错误 0x05 [MS] -hadron.error_analysis_too_long=错误 0x06 [ATL] -hadron.error_analysis_too_short=错误 0x07 [ATS] -hadron.error_diode_collision=错误 0x08 [DC] -hadron.error_branching_turn=错误 0x09 [BT] -hadron.modeCircular=§e环形加速器模式:$磁铁必须环绕核心$解锁更多配方 -hadron.modeLine=§e直线加速器模式:$加速器末端有分析室$更少的配方 -hadron.noresult_too_slow=推进力不足! -hadron.noresult_wrong_ingredient=无效配方! -hadron.noresult_wrong_mode=错误模式! -hadron.stats=上一次结果: -hadron.stats_coord=错误位置: %s / %s / %s -hadron.stats_momentum=推力: %s hbm.achievement.assembly=制造 hbm.achievement.assembly.desc=Vault-tec 支持级别 2 (装配机) hbm.achievement.bossCreeper=四条腿的行走核弹 @@ -666,15 +576,15 @@ hbm.achievement.progress_centrifuge_1.desc=离心力是假的,不要再@我了 hbm.achievement.progress_radium=第一核电 hbm.achievement.progress_radium.desc=把它丢进水里 hbm.achievement.progress_pile=领航员登陆新大陆 -hbm.achievement.progress_pile.desc=“当地人怎么样?” “非常友好。” +hbm.achievement.progress_pile.desc=“原住民怎么样?” / “非常友好。” hbm.achievement.progress_centrifuge_2=工业核气龙卷风 hbm.achievement.progress_centrifuge_2.desc=别让FBI发现 hbm.achievement.progress_u235=武器级铀 hbm.achievement.progress_u235.desc=你的选择:战争或和平 hbm.achievement.progress_pu239=武器级钚 -hbm.achievement.progress_pu239.desc=哈哈好有趣的球---BOOM +hbm.achievement.progress_pu239.desc=哈哈有趣的球---BOOM hbm.achievement.progress_au198=最热的黄金 -hbm.achievement.progress_au198.desc=来做些珠宝吧 +hbm.achievement.progress_au198.desc=让我们来做些珠宝吧 hbm.achievement.progress_radspice=切尔诺贝利锭 hbm.achievement.progress_radspice.desc=Awwww 好烫 hbm.achievement.progress_osmiridium=铱锇合金 @@ -683,15 +593,15 @@ hbm.achievement.progress_hadron=大型强子对撞机 hbm.achievement.progress_hadron.desc=你到达了人类的前沿 hbm.achievement.progress_singularity_spark=宇宙的主人 hbm.achievement.progress_singularity_spark.desc=制造一个Spark奇点 -hbm.achievement.progress_dineutronium=我草 DNT! -hbm.achievement.progress_dineutronium.desc=天哪,我们做到了! +hbm.achievement.progress_dineutronium=我草 DNT +hbm.achievement.progress_dineutronium.desc=天哪,我们做到了 hbm.achievement.progress_dfc=启动太阳 hbm.achievement.progress_dfc.desc=恒星营火 hbm.achievement.progress_creative=认证 DFC 专家 hbm.achievement.progress_creative.desc=你现在已经精通 DFC了 -hbm.achievement.progress_crystalizer=酸 -hbm.achievement.progress_crystalizer.desc=噢!我的皮肤 -hbm.achievement.progress_silex=激光同位素分离 +hbm.achievement.progress_crystalizer=酸性的 +hbm.achievement.progress_crystalizer.desc=啊 我的皮肤 +hbm.achievement.progress_silex=同位素分离 hbm.achievement.progress_silex.desc=它比听起来更酷,我保证。 hbm.achievement.progress_bismuth=铋-209 hbm.achievement.progress_bismuth.desc=还记得人们为此抱怨了一个月吗? @@ -704,7 +614,7 @@ hbm.achievement.progress_fusion.desc=氘核、氚核和能量的舞蹈。 hbm.achievement.progress_oil_1=我们发现了石油 hbm.achievement.progress_oil_1.desc=污染地球的第一步 hbm.achievement.progress_oil_2=我们需要更多石油!!! -hbm.achievement.progress_oil_2.desc=下一级的油泵 +hbm.achievement.progress_oil_2.desc=下一级抽油 hbm.achievement.progress_oil_3=压裂这块基岩 hbm.achievement.progress_oil_3.desc=无限石油! hbm.achievement.progress_refinery=我们加工石油 @@ -715,32 +625,8 @@ hbm.achievement.progress_crack=来裂化吧 hbm.achievement.progress_crack.desc=裂化油以获得更多东西 hbm.achievement.bossUFO.desc=哟,我们这儿有什么?一艘巨大的宇宙飞船正开向我们的星球? hbm.achievement.bossUFO=呀哈哈哈,笑死我了 -hbm.achievement.progress_schrabidium=稳定岛 -hbm.achievement.progress_schrabidium.desc=无论如何,我不会看太久。 -hbm.achievement.progress_fensu=内心的平静 -hbm.achievement.progress_fensu.desc=没什么好说的了 -hbm.achievement.progress_dosimeter=剂量计 -hbm.achievement.progress_dosimeter.desc=你最好的伙伴 -hbm.achievement.progress_geiger=盖革计数器 -hbm.achievement.progress_geiger.desc=你升级过的最好的伙伴 -hbm.achievement.progress_mask=煤尘不再有 -hbm.achievement.progress_mask.desc=好吧,它干了 -hbm.achievement.progress_omega_filter=我为人人 -hbm.achievement.progress_omega_filter.desc=没有什么能做阻挡我了 -hbm.achievement.progress_book=§kboxcars 书 -hbm.achievement.progress_book.desc=§kThe most secret secret -hbm.achievement.progress_modtable=装甲改装台 -hbm.achievement.progress_modtable.desc=升级,人们,升级 -hbm.achievement.progress_cladding_electronium=最好的覆层 -hbm.achievement.progress_cladding_electronium.desc=抗辐射的辐射锭 -hbm.achievement.progress_steel=钢 -hbm.achievement.progress_steel.desc=我们帝国的基础 -hbm.achievement.progress_starmetal=XVIII 月亮女神 -hbm.achievement.progress_starmetal.desc=Yeah. -hbm.achievement.progress_excavator=大男孩钻头 -hbm.achievement.progress_excavator.desc=通往财富的大门 -hbm.achievement.progress_bedrock_ore=无限矿石 -hbm.achievement.progress_bedrock_ore.desc=也许我能找得到难得素 +hbm.achievement.progress_schrabidium=稳定之岛 +hbm.achievement.progress_schrabidium.desc=无论如何,我不会看它太久。 hbmfluid.acid=过氧化氢 hbmfluid.amat=反物质 @@ -766,7 +652,7 @@ hbmfluid.lightoil=轻油 hbmfluid.lubricant=润滑油 hbmfluid.mercury=水银 hbmfluid.naphtha=石脑油 -hbmfluid.nitan=NITAN© 100号超级燃料 +hbmfluid.nitan=NITAN©100号超级燃料 hbmfluid.none=无 hbmfluid.oil=原油 hbmfluid.oxygen=液氧 @@ -801,9 +687,7 @@ hbmfluid.crackoil=裂化油 hbmfluid.hotcrackoil=热裂化油 hbmfluid.aromatics=芳香烃 hbmfluid.unsaturateds=不饱和烃 -hbmfluid.plasma_put=钚-氚等离子体 -hbmfluid.fracksol=压裂液 -hbmfluid.none=无 +hbmfluid.plasma_put=钚氚等离子体 info.coil=线圈强度 info.template_in=输入: info.template_in_p=输入: @@ -812,10 +696,10 @@ info.template_out_p=输出: info.template_seconds=秒 info.template_time=生产耗时: info.templatefolder=需要使用机器模板文件夹创建 -item.RPA_boots.name=动力装甲 靴子 -item.RPA_helmet.name=动力装甲 头盔 -item.RPA_legs.name=动力装甲 护腿 -item.RPA_plate.name=动力装甲 胸甲 +item.RPA_boots.name=残余靴子 +item.RPA_helmet.name=残余头盔 +item.RPA_legs.name=残余护腿 +item.RPA_plate.name=残余胸甲 item.ajr_boots.name=AJR 动力装甲靴子 item.ajr_helmet.name=AJR 动力装甲头盔 item.ajr_legs.name=AJR 动力装甲护腿 @@ -886,9 +770,9 @@ item.ammo_50bmg_ap.name=.50BMG子弹[AP] item.ammo_50bmg_chlorophyte.name=.50BMG子弹[叶绿] item.ammo_50bmg_du.name=.50BMG子弹[贫铀] item.ammo_50bmg_explosive.name=.50BMG子弹[高爆] -item.ammo_50bmg_flechette.name=.50 BMG箭形弹 -item.ammo_50bmg_flechette_am.name=.50 BMG箭形弹[含镅] -item.ammo_50bmg_flechette_po.name=.50 BMG箭形弹[含钋] +item.ammo_50bmg_flechette.name=.50 BMG镖形弹 +item.ammo_50bmg_flechette_am.name=.50 BMG镖形弹[含镅] +item.ammo_50bmg_flechette_po.name=.50 BMG镖形弹[含钋] item.ammo_50bmg_incendiary.name=.50BMG子弹[燃烧] item.ammo_50bmg_phosphorus.name=.50BMG子弹[白磷] item.ammo_50bmg_sleek.name=.50BMG子弹[IF-R&D] @@ -897,12 +781,12 @@ item.ammo_556.name=5.56mm子弹 item.ammo_556_ap.name=5.56mm子弹[AP] item.ammo_556_chlorophyte.name=5.56mm子弹[叶绿] item.ammo_556_du.name=5.56mm子弹[贫铀] -item.ammo_556_flechette.name=5.56mm箭形弹 -item.ammo_556_flechette_chlorophyte.name=5.56mm箭形弹[叶绿] -item.ammo_556_flechette_du.name=5.56mm箭形弹 [贫铀穿甲] -item.ammo_556_flechette_incendiary.name=5.56mm箭形弹 [燃烧] -item.ammo_556_flechette_phosphorus.name=5.56mm箭形弹 [白磷穿甲] -item.ammo_556_flechette_sleek.name=5.56mm箭形弹[IF-R&D] +item.ammo_556_flechette.name=5.56mm弗莱彻子弹 +item.ammo_556_flechette_chlorophyte.name=5.56mm弗莱彻子弹[叶绿] +item.ammo_556_flechette_du.name=5.56mm弗莱彻子弹 [贫铀穿甲] +item.ammo_556_flechette_incendiary.name=5.56mm弗莱彻子弹 [燃烧] +item.ammo_556_flechette_phosphorus.name=5.56mm弗莱彻子弹 [白磷穿甲] +item.ammo_556_flechette_sleek.name=5.56mm弗莱彻子弹[IF-R&D] item.ammo_556_k.name=5.56mm空包弹 item.ammo_556_phosphorus.name=5.56mm子弹[白磷] item.ammo_556_sleek.name=5.56mm子弹[IF-R&D] @@ -995,7 +879,6 @@ item.ams_core_wormhole.name=微型虫洞[AMS/DFC核心] item.ams_focus_blank.name=空白稳定器焦点 item.ams_focus_booster.name=增压稳定器焦点 item.ams_focus_limiter.name=限制稳定器焦点 -item.ams_focus_omega.name=UNDEFINED 稳定器焦点 item.ams_lens.name=稳定透镜 item.ams_muzzle.name=激活射线发射极 item.analyzer.name=分析仪 @@ -1005,8 +888,8 @@ item.apple_lead.name=铅苹果 item.apple_lead1.name=铅苹果 item.apple_lead2.name=铅苹果 item.apple_schrabidium.name=Sa326苹果 -item.apple_schrabidium1.name=Sa326苹果 -item.apple_schrabidium2.name=Sa326苹果 +item.apple_schrabidium1.name=苹果 +item.apple_schrabidium2.name=苹果 item.arc_electrode.name=石墨电极 item.arc_electrode_burnt.name=熔化电极 item.arc_electrode_desh.name=Desh电极 @@ -1064,14 +947,14 @@ item.battery_potatos.name=马铃薯OS item.battery_red_cell.name=红石电池组 item.battery_red_cell_24.name=二十四联红石电池组 item.battery_red_cell_6.name=六联红石电池组 -item.battery_sc_americium.name=自充电 镅-241 电池 +item.battery_sc_americium.name=自充电镅 241 电池 item.battery_sc_balefire.name=自充电 Balefire-XXX 电池 -item.battery_sc_gold.name=自充电 金-198 电池 -item.battery_sc_lead.name=自充电 铅-209 电池 -item.battery_sc_plutonium.name=自充电 钚-238 电池 -item.battery_sc_polonium.name=自充电 钋-210 电池 -item.battery_sc_technetium.name=自充电 锝-99 电池 -item.battery_sc_uranium.name=自充电 铀-238 电池 +item.battery_sc_gold.name=自充金198电池 +item.battery_sc_lead.name=自充电铅209电池 +item.battery_sc_plutonium.name=自充电钚 238 电池 +item.battery_sc_polonium.name=自充电钋210电池 +item.battery_sc_technetium.name=自充电 Technetium-99 电池 +item.battery_sc_uranium.name=自充电铀 238 电池 item.battery_schrabidium.name=Sa326电池 item.battery_schrabidium_cell.name=Sa326电池组 item.battery_schrabidium_cell_2.name=双联Sa326电池组 @@ -1091,7 +974,7 @@ item.battery_su_l.name=大型SU-电池 item.battery_trixite.name=杂牌Spark电池 item.beta.name=Bata测试版功能 item.big_sword.name=大剑 -item.billet_ac227.name=锕-227坯料 +item.billet_ac227.name=锕-227 坯料 item.billet_am241.name=镅-241坯料 item.billet_am242.name=镅-242坯料 item.billet_am_mix.name=反应堆级镅坯料 @@ -1101,26 +984,26 @@ item.billet_australium.name=奥斯坯料 item.billet_australium_greater.name=富集奥斯坯料 item.billet_australium_lesser.name=贫化奥斯坯料 item.billet_balefire_gold.name=激活态金-198坯料 -item.billet_beryllium.name=铍坯料 +item.billet_beryllium.name=铍坯 item.billet_bismuth.name=铋锭 item.billet_co60.name=钴-60坯料 -item.billet_flashlead.name=闪光铅坯料 -item.billet_gh336.name=Gh-336坯料 +item.billet_flashlead.name=闪光铅坯 +item.billet_gh336.name=Ghiorsium-336 坯料 item.billet_hes.name=高浓缩度Sa326燃料坯料 item.billet_les.name=低浓缩度Sa326燃料坯料 item.billet_mox_fuel.name=MOX燃料坯料 item.billet_neptunium.name=镎坯料 -item.billet_neptunium_fuel.name=镎燃料坯料 -item.billet_nuclear_waste.name=核废料坯料 -item.billet_pb209.name=铅-209坯料 +item.billet_neptunium_fuel.name=镎核燃料坯料 +item.billet_nuclear_waste.name=核废料坯 +item.billet_pb209.name=铅209坯料 item.billet_plutonium.name=钚坯料 item.billet_plutonium_fuel.name=钚燃料坯料 item.billet_po210be.name=钋210-铍坯料 -item.billet_polonium.name=钋-210坯料 -item.billet_pu238.name=钚-238坯料 +item.billet_polonium.name=钋坯料 +item.billet_pu238.name=钚238坯料 item.billet_pu238be.name=钚238-铍坯料 -item.billet_pu239.name=钚-239坯料 -item.billet_pu240.name=钚-240坯料 +item.billet_pu239.name=钚239坯料 +item.billet_pu240.name=钚240坯料 item.billet_pu241.name=钚-241坯料 item.billet_pu_mix.name=反应堆级钋坯料 item.billet_ra226.name=镭226坯料 @@ -1128,20 +1011,20 @@ item.billet_ra226be.name=镭226-铍坯料 item.billet_schrabidium.name=Sa326坯料 item.billet_schrabidium_fuel.name= Sa326燃料坯料 item.billet_solinium.name=Sa327坯料 -item.billet_sr90.name=锶-90坯料 +item.billet_sr90.name=锶90坯料 item.billet_technetium.name=锝-99坯料 item.billet_th232.name=钍232坯料 item.billet_thorium_fuel.name=钍燃料坯料 -item.billet_u233.name=铀-233坯料 -item.billet_u235.name=铀-235坯料 -item.billet_u238.name=铀-238坯料 -item.billet_unobtainium.name=Uno中子坯料 +item.billet_u233.name=铀233坯料 +item.billet_u235.name=铀235坯料 +item.billet_u238.name=铀238坯料 +item.billet_unobtainium.name=Unobtainium中子坯料 item.billet_uranium.name=铀坯料 item.billet_uranium_fuel.name=铀燃料坯料 -item.billet_yharonite.name=犽戎龙素坯料 +item.billet_yharonite.name=Yharonite坯料 item.billet_zfb_am_mix.name=镅 ZFB 坯料 item.billet_zfb_bismuth.name=铋 ZFB 坯料 -item.billet_zfb_pu241.name=钚-241 ZFB 坯料 +item.billet_zfb_pu241.name=Pu-241 ZFB 坯料 item.billet_zirconium.name=锆坯料 item.bio_wafer.name=生物晶圆 item.biomass.name=生物质 @@ -1162,7 +1045,7 @@ item.blades_advanced_alloy.name=高级合金刀片 item.blades_aluminium.name=铝制刀片 item.blades_aluminum.name=铝粉碎机刀片 item.blades_combine_steel.name=CMB钢刀片 -item.blades_desh.name=Desh刀片 +item.blades_desh.name=Desh制刀片 item.blades_gold.name=金制刀片 item.blades_iron.name=铁制刀片 item.blades_schrabidium.name=Sa326刀片 @@ -1222,7 +1105,7 @@ item.canister_bitumen.name=桶装沥青 item.canister_canola.name=桶装润滑油 item.canister_empty.name=空油桶 item.canister_fuel.name=桶装柴油 -item.canister_gasoline.desc=铅就是朋友$让朋友进入你的血液$*上膛声*现在就做 +item.canister_gasoline.desc=铅是朋友$让朋友进入你的血液$*公鸡枪*现在就做。 item.canister_gasoline.name=含铅汽油罐 item.canister_heatingoil.name=桶装燃油 item.canister_heavyoil.name=桶装重油 @@ -1234,7 +1117,7 @@ item.canister_oil.name=桶装原油 item.canister_petroil.name=桶装汽油 item.canister_reoil.name=桶装再生油 item.canister_smear.name=桶装工业油 -item.canister_superfuel.name=桶装NITAN© 100号超级燃料 +item.canister_superfuel.name=NITAN© 100 辛烷值超级燃料罐 item.canned_asbestos.name=石棉罐头 item.canned_ass.name=驴罐头 item.canned_bark.name=松树皮罐头 @@ -1339,7 +1222,7 @@ item.circuit_targeting_tier6.name=军用级电路板[6级] item.cladding_desh.name=Desh覆层 item.cladding_di.name=双聚中子态素覆层 item.cladding_electronium.name=电素覆层 -item.cladding_ghiorsium.name=Gh336覆层 +item.cladding_ghiorsium.name=Ghiorsium覆层 item.cladding_iron.name=铁覆层 item.cladding_lead.name=铅覆层 item.cladding_obsidian.name=黑曜石覆层 @@ -1416,7 +1299,7 @@ item.coin_siege.name=攻城币 item.coin_ufo.name=UFO硬币 item.coin_worm.name=机械蠕虫硬币 item.coke.name=焦炭 -item.coltass.name=钶钽铁矿指针 +item.coltass.name=科尔塔斯 item.combine_scrap.name=CMB钢废料 item.component_emitter.name=发射器组件 item.component_limiter.name=稳定器组件 @@ -1428,7 +1311,7 @@ item.crucible.name=裁决剑 item.crystal_aluminium.name=铝晶体 item.crystal_beryllium.name=铍晶体 item.crystal_charred.name=烧焦的水晶 -item.crystal_cinnebar.name=朱砂晶体 +item.crystal_cinnebar.name=朱砂晶 item.crystal_coal.name=煤晶体 item.crystal_cobalt.name=钴晶体 item.crystal_copper.name=铜晶体 @@ -1652,7 +1535,7 @@ item.grenade_pulse.name=脉冲手榴弹 item.grenade_schrabidium.name=Sa326手榴弹 item.grenade_shrapnel.name=榴霰弹手榴弹 item.grenade_smart.name=智能手榴弹 -item.grenade_solinium.name=Sa327中子手榴弹 +item.grenade_solinium.name=中子手榴弹 item.grenade_strong.name=增强型手榴弹 item.grenade_tau.name=陶子手榴弹 item.grenade_zomg.name=负能量湮灭手榴弹 @@ -1667,7 +1550,7 @@ item.gun_bolt_action.name=栓动式霰弹枪[原版] item.gun_bolt_action_ammo.name=12x74 独头弹 item.gun_bolt_action_green.name=栓动式霰弹枪[绿色] item.gun_bolt_action_saturnite.name=土星来复枪 -item.gun_bolter.name=爆弹枪 +item.gun_bolter.name=Bolter item.gun_calamity.name=灾难 item.gun_calamity_ammo.name=.50BMG子弹 item.gun_calamity_dual.name=马鞍枪 @@ -1686,7 +1569,7 @@ item.gun_euthanasia_ammo.name=注射器 item.gun_fatman.name=M42核弹发射器 "胖子" item.gun_fatman_ammo.name=迷你核弹 item.gun_flamer.name=喷射器 -item.gun_flechette.name=箭形弹突击步枪 +item.gun_flechette.name=弗莱彻突击步枪 item.gun_folly.name=Digamma原型"愚蠢" item.gun_hk69.name=榴弹手枪 item.gun_hp.name=HPP射线炮 @@ -1817,7 +1700,7 @@ item.inf_diesel.name=无限柴油罐 item.inf_sulfur.name=无限硫磺罐 item.inf_tritium.name=无限氚罐 item.inf_water.name=无限水罐 -item.inf_water_mk2.name=重型无限水罐 +item.inf_water_mk2.name=重型无限水箱 item.ingot_ac227.name=锕-227锭 item.ingot_actinium.name=半稳定锕锭 item.ingot_advanced_alloy.name=高级合金锭 @@ -1850,10 +1733,10 @@ item.ingot_electronium.name=电素锭 item.ingot_euphemium.name=Ep锭 item.ingot_fiberglass.name=玻璃纤维 item.ingot_firebrick.name=耐火砖 -item.ingot_gh336.name=Gh-336锭 +item.ingot_gh336.name=Ghiorsium-336锭 item.ingot_graphite.name=石墨锭 item.ingot_hes.name=高浓度Sa326燃料锭 -item.ingot_i131.name=碘-131锭 +item.ingot_i131.name=碘131锭 item.ingot_iodine.name=碘锭 item.ingot_lanthanium.name=半稳定镧锭 item.ingot_lead.name=铅锭 @@ -1866,18 +1749,18 @@ item.ingot_neodymium.name=钕锭 item.ingot_neptunium.name=镎锭 item.ingot_neptunium_fuel.name=镎燃料锭 item.ingot_niobium.name=铌锭 -item.ingot_pb209.name=铅-209锭 +item.ingot_pb209.name=铅209锭 item.ingot_phosphorus.name=白磷锭 item.ingot_plutonium.name=钚锭 item.ingot_plutonium_fuel.name=钚燃料锭 -item.ingot_polonium.name=钋-210锭 +item.ingot_polonium.name=钋锭 item.ingot_polymer.name=聚合物锭 -item.ingot_pu238.name=钚-238锭 -item.ingot_pu239.name=钚-239锭 -item.ingot_pu240.name=钚-240锭 +item.ingot_pu238.name=钚238锭 +item.ingot_pu239.name=钚239锭 +item.ingot_pu240.name=钚240锭 item.ingot_pu241.name=钚-241锭 item.ingot_pu_mix.name=反应堆级钚锭 -item.ingot_ra226.name=镭-226锭 +item.ingot_ra226.name=镭226锭 item.ingot_radspice.name=Neoveline锭 item.ingot_red_copper.name=紫铜 item.ingot_reiium.name=雷恩锭 @@ -1889,7 +1772,7 @@ item.ingot_schraranium.name=低丰度Sa326锭 item.ingot_semtex.name=塞姆汀塑胶炸药块 item.ingot_smore.name=S'more 锭 item.ingot_solinium.name=Sa327锭 -item.ingot_sr90.name=锶-90锭 +item.ingot_sr90.name=锶90锭 item.ingot_starmetal.name=§9星辉锭§r item.ingot_steel.name=钢锭 item.ingot_steel_dusted.name=粉末钢锭 @@ -1897,14 +1780,14 @@ item.ingot_strontium.name=锶锭 item.ingot_tantalium.name=钽锭 item.ingot_tcalloy.name=锝-钢合金锭 item.ingot_technetium.name=锝-99锭 -item.ingot_tennessine.name=Ts-294锭 -item.ingot_th232.name=钍-232锭 +item.ingot_tennessine.name=Tennessine-294锭 +item.ingot_th232.name=钍232锭 item.ingot_thorium_fuel.name=钍燃料锭 item.ingot_titanium.name=钛锭 item.ingot_tungsten.name=钨锭 -item.ingot_u233.name=铀-233锭 -item.ingot_u235.name=铀-235锭 -item.ingot_u238.name=铀-238锭 +item.ingot_u233.name=铀233锭 +item.ingot_u235.name=铀235锭 +item.ingot_u238.name=铀238锭 item.ingot_u238m2.name=亚稳铀238-2锭 item.ingot_unobtainium.name=难得素锭 item.ingot_uranium.name=铀锭 @@ -1916,42 +1799,41 @@ item.injector_5htp.name=5-HTP自动药物注射器 item.injector_knife.name=8英寸刀片自动药物注射器 item.ink.name=林 墨水 item.insert_di.name=双聚中子态素插板 -item.insert_ferrouranium.name=铀铁合金插板 item.insert_doxium.name=掺砷Doxium插板 item.insert_du.name=贫铀插板 item.insert_era.name=反应装甲插板 item.insert_esapi.name=ESAPI插板 -item.insert_ghiorsium.name=Gh-336插板 +item.insert_ghiorsium.name=Ghiorsium插板 item.insert_kevlar.name=凯夫拉插板 item.insert_polonium.name=钋插板 item.insert_sapi.name=SAPI插板 item.insert_steel.name=重型钢插板 item.insert_xsapi.name=XSAPI插板 -item.insert_yharonite.name=犽戎龙素插板 +item.insert_yharonite.name=Yharonite插板 item.jackt.name=时尚防弹夹克 item.jackt2.name=时尚防弹夹克2:东京漂移 item.jetpack_boost.name=弹跳背包 item.jetpack_break.name=缓降背包 item.jetpack_fly.name=喷气背包 -item.jetpack_glider.name=滑翔喷气背包 +item.jetpack_glider.name=滑翔机喷气背包 item.jetpack_tank.name=喷气背包备用燃料罐 item.jetpack_vector.name=矢量喷气背包 item.key.name=钥匙 item.key_fake.name=伪造钥匙 item.key_kit.name=钥匙仿制套件 item.key_red.name=红色钥匙 -item.laser_crystal_bale.desc=野火燃料芯块被包裹在韦德赛,Neoveline制成的外壳中 +item.laser_crystal_bale.desc=野火燃料芯块 在中子外壳中涂有 Verticium,Neoveline item.laser_crystal_bale.name=野火激光晶体 item.laser_crystal_bismuth.desc=铋-钐-铀-钍晶体基质 -item.laser_crystal_bismuth.name=铋-钐-铀-钍激光晶体 +item.laser_crystal_bismuth.name=铋激光晶体 item.laser_crystal_cmb.desc=氙135 悬浮在 CMB-达夫贡合金晶格中 item.laser_crystal_cmb.name=氙-达夫贡激光晶体 item.laser_crystal_co2.desc=二氧化碳被包裹在结晶的Desh中 item.laser_crystal_co2.name=CO2-Desh激光晶体 -item.laser_crystal_dem.desc=恶魔-Gh336联合费米子超晶 -item.laser_crystal_dem.name=恶魔激光晶体 +item.laser_crystal_dem.desc=Demon-Schrabidate-Tenessine-钽费米子超晶 +item.laser_crystal_dem.name=恶魔镭射晶体 item.laser_crystal_digamma.name=迪伽马激光晶体 -item.laser_crystal_nano.desc=420公里长的碳纳米管天线内置多晶体 +item.laser_crystal_nano.desc=多晶内的 420 公里长碳纳米管天线 item.laser_crystal_nano.name=纳米管激光晶体 item.laser_crystal_pentacene.desc=高级合金涂层的激发并五苯晶体 item.laser_crystal_pentacene.name=并五苯激光晶体 @@ -1998,7 +1880,7 @@ item.med_bag.name=医疗包 item.med_ipecac.name=吐根酊催吐剂 item.med_ptsd.name=PTSD治疗药物 item.med_schiziphrenia.name=抗精神分裂症药物 -item.medal_ghoul.name=认证食尸鬼勋章 +item.medal_ghoul.name=认证食尸鬼 item.medal_liquidator.name=核废土清道夫勋章 item.meltdown_tool.name=迪亚特洛夫快速熔毁装置 item.memespoon.name=§ee花园园丁 @@ -2009,7 +1891,7 @@ item.meteor_remote.name=陨石召唤器 item.meteorite_sword.name=陨石剑 item.meteorite_sword_alloyed.name=陨石剑(合金) item.meteorite_sword_baleful.name=陨石剑(凶恶) -item.meteorite_sword_bred.name=陨石剑(增殖) +item.meteorite_sword_bred.name=陨石剑(繁殖) item.meteorite_sword_etched.name=陨石剑(刻蚀) item.meteorite_sword_fused.name=陨石剑(熔融) item.meteorite_sword_hardened.name=陨石剑(硬化) @@ -2018,8 +1900,6 @@ item.meteorite_sword_machined.name=陨石剑(机械加工) item.meteorite_sword_reforged.name=陨石剑(重铸) item.meteorite_sword_seared.name=陨石剑(烧焦) item.meteorite_sword_treated.name=陨石剑(精制) -item.meteorite_sword_warped.name=§f陨石剑 (扭曲) -item.meteorite_sword_demonic.name=§c陨石剑 (§kDemonic§r) item.mike_cooling_unit.name=氘冷却装置 item.mike_core.name=铀涂层氘罐 item.mike_deut.name=氘罐 @@ -2224,8 +2104,8 @@ item.nuclear_waste_tiny.name=小撮核废料 item.nuclear_waste_vitrified.name=玻璃化核废料 item.nuclear_waste_vitrified_tiny.name=一小堆玻璃化核废料 item.nugget.name=鸡块 -item.nugget_ac227.name=锕-227粒 -item.nugget_actinium.name=锕粒 +item.nugget_ac227.name=Actinium-227 金块 +item.nugget_actinium.name=锕金块 item.nugget_am241.name=镅-241粒 item.nugget_am242.name=镅-242粒 item.nugget_am_mix.name=反应堆级镅粒 @@ -2237,12 +2117,12 @@ item.nugget_australium_lesser.name=贫化奥斯粒 item.nugget_beryllium.name=铍粒 item.nugget_bismuth.name=铋粒 item.nugget_co60.name=钴-60粒 -item.nugget_cobalt.name=钴粒 +item.nugget_cobalt.name=钴块 item.nugget_daffergon.name=达夫贡粒 item.nugget_desh.name=Desh粒 item.nugget_dineutronium.name=双聚中子态素粒 item.nugget_euphemium.name=Ep粒 -item.nugget_gh336.name=Gh-336 粒 +item.nugget_gh336.name=Ghiorsium-336 粒 item.nugget_hes.name=高浓度Sa326燃料粒 item.nugget_lead.name=铅粒 item.nugget_les.name=低浓度Sa326燃料粒 @@ -2250,13 +2130,13 @@ item.nugget_mercury.name=一滴水银 item.nugget_mox_fuel.name=MOX燃料粒 item.nugget_neptunium.name=镎粒 item.nugget_neptunium_fuel.name=镎燃料粒 -item.nugget_pb209.name=铅-209粒 +item.nugget_pb209.name=铅 209 块 item.nugget_plutonium.name=钚粒 item.nugget_plutonium_fuel.name=钚燃料粒 -item.nugget_polonium.name=钋-210粒 -item.nugget_pu238.name=钚-238粒 -item.nugget_pu239.name=钚-239粒 -item.nugget_pu240.name=钚-240粒 +item.nugget_polonium.name=钋粒 +item.nugget_pu238.name=钚238粒 +item.nugget_pu239.name=钚239粒 +item.nugget_pu240.name=钚240粒 item.nugget_pu241.name=钚-241粒 item.nugget_pu_mix.name=反应堆级钚粒 item.nugget_ra226.name=镭-226粒 @@ -2265,16 +2145,16 @@ item.nugget_reiium.name=魏丹粒 item.nugget_schrabidium.name=Sa326粒 item.nugget_schrabidium_fuel.name=Sa326燃料粒 item.nugget_solinium.name=Sa327粒 -item.nugget_sr90.name=锶-90 粒 -item.nugget_strontium.name=锶粒 +item.nugget_sr90.name=锶 90 金块 +item.nugget_strontium.name=锶块 item.nugget_tantalium.name=钽粒 item.nugget_technetium.name=锝-99粒 -item.nugget_th232.name=钍-232粒 +item.nugget_th232.name=钍232粒 item.nugget_thorium_fuel.name=钍燃料粒 -item.nugget_u233.name=铀-233粒 -item.nugget_u235.name=铀-235粒 -item.nugget_u238.name=铀-238粒 -item.nugget_u238m2.name=亚稳态 U238-2 粒 +item.nugget_u233.name=铀233粒 +item.nugget_u235.name=铀235粒 +item.nugget_u238.name=铀238粒 +item.nugget_u238m2.name=亚稳态 U238-2 金块 item.nugget_unobtainium.name=难得素粒 item.nugget_uranium.name=铀粒 item.nugget_uranium_fuel.name=铀燃料粒 @@ -2292,25 +2172,12 @@ item.oil_detector.desc2=探测仪只会发现大片油田 item.oil_detector.detected=附近存在油田 item.oil_detector.name=石油探测仪 item.oil_detector.noOil=未发现油田 -item.oil_tar.name=焦油 +item.oil_tar.name=油焦油 item.overfuse.name=奇异螺丝刀 item.oxy_mask.name=氧气面罩 -item.ore_bedrock.name=基岩%s矿 -item.ore_bedrock_centrifuged.name=离心%s矿 -item.ore_bedrock_cleaned.name=清洁%s矿 -item.ore_bedrock_deepcleaned.name=深清洁%s矿 -item.ore_bedrock_enriched.name=富集%s矿 -item.ore_bedrock_nitrated.name=硝化%s矿 -item.ore_bedrock_nitrocrystalline.name=亚硝基结晶%s矿 -item.ore_bedrock_purified.name=净化%s矿 -item.ore_bedrock_seared.name=灼热的%s矿 -item.ore_bedrock_separated.name=分离的%s矿 -item.ore_bedrock_exquisite.name=精制的%s矿 -item.ore_bedrock_perfect.name=完美的%s矿 item.paa_boots.name=PaA "好鞋" item.paa_legs.name=PaA加固护腿 item.paa_plate.name=PaA加固护胸 -item.paa_helmet.name=PaA 加固头盔 item.padlock.name=挂锁 item.padlock_reinforced.name=加强挂锁 item.padlock_rusty.name=生锈的挂锁 @@ -2385,14 +2252,14 @@ item.pellet_rtg_radium.desc=伟大的启动靶丸,源自全天然镭! item.pellet_rtg_radium.name=镭-226 放射性同位素燃料靶丸 item.pellet_rtg_strontium.desc=众所周知,加利福尼亚州... item.pellet_rtg_strontium.name=锶-90 放射性同位素燃料靶丸 -item.pellet_rtg_weak.desc=更便宜更弱的靶丸,现在有更多的铀238! +item.pellet_rtg_weak.desc=更便宜更弱的靶丸,现在有更多的 U238! item.pellet_rtg_weak.name=贫铀放射性同位素燃料靶丸 item.pellet_schrabidium.name=纯Sa326Watz靶丸 item.photo_panel.name=光伏板 -item.pile_rod_boron.name=芝加哥反应堆 控制棒 -item.pile_rod_plutonium.name=芝加哥反应堆 钚棒 -item.pile_rod_source.name=芝加哥反应堆 镭226-铍中子源 -item.pile_rod_uranium.name=芝加哥反应堆 铀棒 +item.pile_rod_boron.name=芝加哥桩控制杆 +item.pile_rod_plutonium.name=芝加哥堆钚棒 +item.pile_rod_source.name=芝加哥堆 Ra226Be 中子源 +item.pile_rod_uranium.name=芝加哥堆铀棒 item.pill_iodine.name=碘丸 item.pin.name=发夹 item.pipes_steel.name=钢管 @@ -2424,7 +2291,7 @@ item.plate_schrabidium.name=Sa326板 item.plate_steel.name=钢板 item.plate_titanium.name=钛板 item.polaroid.name=偏光片 -item.powder_ac227.name=锕-227粉 +item.powder_ac227.name=Actinium-227粉末 item.powder_actinium.name=锕粉 item.powder_actinium_tiny.name=小撮锕粉 item.powder_advanced_alloy.name=高级合金粉 @@ -2445,7 +2312,7 @@ item.powder_cerium_tiny.name=小撮铈粉 item.powder_chlorophyte.name=叶绿粉 item.powder_cloud.name=云粉末 item.powder_co60.name=钴-60粉 -item.powder_co60_tiny.name=小撮钴-60粉 +item.powder_co60_tiny.name=一小堆钴 60 粉末 item.powder_coal.name=煤粉 item.powder_coal_tiny.name=小撮煤粉 item.powder_cobalt.name=钴粉 @@ -2471,7 +2338,7 @@ item.powder_i131.name=碘-131粉 item.powder_i131_tiny.name=小撮碘-131粉 item.powder_ice.name=冷冻粉 item.powder_iodine.name=碘粉 -item.powder_iodine_tiny.name=小撮碘粉 +item.powder_iodine_tiny.name=一小堆碘粉 item.powder_iron.name=铁粉 item.powder_lanthanium.name=镧粉 item.powder_lanthanium_tiny.name=小撮镧粉 @@ -2490,14 +2357,14 @@ item.powder_neptunium.name=镎粉 item.powder_niobium.name=铌粉 item.powder_niobium_tiny.name=小撮铌粉 item.powder_nitan_mix.name=Nitan混合物 -item.powder_pb209.name=铅-209粉 +item.powder_pb209.name=铅209粉 item.powder_plutonium.name=钚粉 item.powder_poison.name=剧毒粉 item.powder_polonium.name=钋粉 item.powder_polymer.name=聚合物粉 item.powder_power.name=能量粉 item.powder_quartz.name=石英粉 -item.powder_ra226.name=镭-226粉 +item.powder_ra226.name=镭226粉 item.powder_radspice.name=Neoveline粉 item.powder_red_copper.name=紫铜粉 item.powder_reiium.name=雷恩粉 @@ -2505,14 +2372,14 @@ item.powder_schrabidate.name=Sa酸铁粉 item.powder_schrabidium.name=Sa326粉 item.powder_semtex_mix.name=塞姆汀塑胶炸药混合物 item.powder_spark_mix.name=Spark混合物 -item.powder_sr90.name=锶-90粉 -item.powder_sr90_tiny.name=小撮锶-90粉 +item.powder_sr90.name=锶90粉 +item.powder_sr90_tiny.name=一小堆锶 90 粉末 item.powder_steel.name=钢粉 item.powder_steel_tiny.name=小撮钢粉 item.powder_strontium.name=锶粉 item.powder_tantalium.name=钽粉 item.powder_tcalloy.name=锝-钢粉 -item.powder_tennessine.name=Ts-294粉 +item.powder_tennessine.name=Ts粉 item.powder_thermite.name=铝热剂 item.powder_thorium.name=钍粉 item.powder_titanium.name=钛粉 @@ -2566,17 +2433,17 @@ item.rbmk_fuel_pu238be.name=钚238-铍RBMK反应堆中子源 item.rbmk_fuel_ra226be.name=镭226-铍RBMK反应堆中子源 item.rbmk_fuel_thmeu.name=ThMEU RBMK反应堆中浓缩度铀-235导向钍燃料棒 item.rbmk_fuel_ueu.name=NU RBMK反应堆未浓缩铀燃料棒 -item.rbmk_fuel_unobtainium.name=高浓度Uno-440 RBMK反应堆中子源 -item.rbmk_fuel_zfb_am_mix.name=ZFB 反应堆级镅RBMK反应堆燃料棒 -item.rbmk_fuel_zfb_bismuth.name=ZFB 铋RBMK反应堆燃料棒 -item.rbmk_fuel_zfb_pu241.name=ZFB 钚-241 RBMK反应堆燃料棒 +item.rbmk_fuel_unobtainium.name=Unobtainium RBMK 中子棒 +item.rbmk_fuel_zfb_am_mix.name=燃料级镅 RBMK ZFB 棒 +item.rbmk_fuel_zfb_bismuth.name=铋 RBMK ZFB 棒 +item.rbmk_fuel_zfb_pu241.name=Pu-241 RBMK ZFB 棒 item.rbmk_lid.name=RBMK反应堆覆盖层 item.rbmk_lid_glass.name=RBMK反应堆玻璃覆盖层 item.rbmk_pellet_balefire.name=野火燃料芯块 item.rbmk_pellet_balefire_gold.name=激活态金-198燃料芯块 item.rbmk_pellet_drx.name=§cF迪伽马粒子燃料芯块§r item.rbmk_pellet_flashlead.name=闪光铅燃料芯块 -item.rbmk_pellet_hea241.name=HEA-241高浓缩度镅-241燃料芯块 +item.rbmk_pellet_hea241.name=HEA-241燃料芯块 item.rbmk_pellet_hea242.name=HEA-242高浓缩度镅-242燃料芯块 item.rbmk_pellet_heaus.name=HEAus高浓缩度奥斯燃料芯块 item.rbmk_pellet_hen.name=HEN 高浓度镎燃料芯块 @@ -2600,10 +2467,10 @@ item.rbmk_pellet_pu238be.name=钚238-铍中子源芯块 item.rbmk_pellet_ra226be.name=镭226-铍中子源芯块 item.rbmk_pellet_thmeu.name=ThMEU浓缩度铀-235导向钍燃料芯块 item.rbmk_pellet_ueu.name=未浓缩铀燃料芯块 -item.rbmk_pellet_unobtainium.name=高浓度Uno-440 中子源芯块 -item.rbmk_pellet_zfb_am_mix.name=ZFB 反应堆级镅燃料芯块 -item.rbmk_pellet_zfb_bismuth.name=ZFB 铋燃料芯块 -item.rbmk_pellet_zfb_pu241.name=ZFB 钚-241燃料芯块 +item.rbmk_pellet_unobtainium.name=Unobtainium 中子燃料芯块 +item.rbmk_pellet_zfb_am_mix.name=反应堆级镅 ZFB 燃料芯块 +item.rbmk_pellet_zfb_bismuth.name=铋 ZFB 燃料芯块 +item.rbmk_pellet_zfb_pu241.name=Pu-241 ZFB 燃料芯块 item.rbmk_tool.desc=按住Shift右击RBMK石墨式反应堆保存其坐标,$按住Shift右击控制台以连接反应堆! item.rbmk_tool.linked=反应堆坐标已记录! item.rbmk_tool.name=RBMK石墨式反应堆控制台连接装置 @@ -2660,9 +2527,9 @@ item.rod_dual_th232.name=双联钍232燃料棒 item.rod_dual_thorium_fuel.name=双联钍燃料棒 item.rod_dual_thorium_fuel_depleted.name=双联枯竭钍燃料棒 item.rod_dual_tritium.name=双联氚燃料棒 -item.rod_dual_u233.name=双联铀-233燃料棒 -item.rod_dual_u235.name=双联铀-235燃料棒 -item.rod_dual_u238.name=双联铀-238燃料棒 +item.rod_dual_u233.name=双联铀233燃料棒 +item.rod_dual_u235.name=双联铀235燃料棒 +item.rod_dual_u238.name=双联铀238燃料棒 item.rod_dual_uranium.name=双联铀棒 item.rod_dual_uranium_fuel.name=双联铀燃料棒 item.rod_dual_uranium_fuel_depleted.name=双联枯竭铀燃料棒 @@ -2683,7 +2550,7 @@ item.rod_polonium.name=钋棒 item.rod_pu238.name=钚238燃料棒 item.rod_pu239.name=钚239燃料棒 item.rod_pu240.name=钚240燃料棒 -item.rod_quad_ac227.name=四联锕-227燃料棒 +item.rod_quad_ac227.name=Actinium-227 四杆 item.rod_quad_balefire.name=四联野火燃料棒 item.rod_quad_balefire_blazing.name=炽热的四联野火燃料棒 item.rod_quad_co60.name=Cobalt-60 四极杆 @@ -2703,8 +2570,8 @@ item.rod_quad_polonium.name=四联钋棒 item.rod_quad_pu238.name=四联钚238燃料棒 item.rod_quad_pu239.name=四联钚239燃料棒 item.rod_quad_pu240.name=四联钚240燃料棒 -item.rod_quad_ra226.name=四联镭226燃料棒 -item.rod_quad_rgp.name=四联反应堆级钚燃料棒 +item.rod_quad_ra226.name=镭226四极杆 +item.rod_quad_rgp.name=反应堆级钚四棒 item.rod_quad_schrabidium.name=四联Sa326燃料棒 item.rod_quad_schrabidium_fuel.name=四联Sa326燃料棒 item.rod_quad_schrabidium_fuel_depleted.name=四联枯竭Sa326燃料棒 @@ -2803,11 +2670,11 @@ item.singularity.name=奇点 item.singularity_counter_resonant.name=可控反振谐奇点 item.singularity_spark.name=Spark奇点 item.singularity_super_heated.name=超热共振奇点 -item.siox.name=SiOX抗癌药物 +item.siox.name=SiOX 癌症药物 item.siren_track.name=警报声轨 -item.sliding_blast_door_skin0.name=侧向滑动防爆门(默认皮肤) -item.sliding_blast_door_skin1.name=侧向滑动防爆门(皮肤1) -item.sliding_blast_door_skin2.name=侧向滑动防爆门(皮肤2) +item.sliding_blast_door_skin0.name=侧向滑动防爆门默认皮肤 +item.sliding_blast_door_skin1.name=侧向滑动防爆门变体 1 皮肤 +item.sliding_blast_door_skin2.name=侧向滑动防爆门变体 2 皮肤 item.smashing_hammer.name=粉碎锤 item.solid_fuel.name=固体燃料 item.solinium_core.name=半稳定Sa327核心 @@ -3020,7 +2887,7 @@ item.weapon_saw.name=肢解骨锯 item.weaponized_starblaster_cell.name=§c星际爆能电池§r item.wild_p.name=野生珀伽索斯干威士忌 item.wings_limp.name=无力之翼 -item.wings_murk.name=§4暗黑之翼 +item.wings_murk.name=暗黑之翼 item.wire_advanced_alloy.name=超导体 item.wire_aluminium.name=铝线 item.wire_copper.name=铜线 @@ -3033,7 +2900,7 @@ item.wiring_red_copper.name=电缆卷 item.wood_gavel.name=木槌 item.wrench.name=管道扳手 item.wrench_flipped.name=刺刀扳手 -item.xanax.name= AXA抗迪伽马药物 +item.xanax.name= AXA抗Digamma药物 item.crystal_osmiridium.name=铱锇晶体 item.ingot_osmiridium.name=铱锇锭 item.nugget_osmiridium.name=铱锇粒 @@ -3042,15 +2909,15 @@ item.powder_osmiridium.name=铱锇粉 item.powder_tektite.name=熔融石粉 item.powder_paleogenite.name=古近纪岩石粉末 item.powder_paleogenite_tiny.name=小撮古近纪岩石粉末 -item.ingot_rubber.name=橡胶锭 -item.powder_bismuth.name=铋-209 粉 +item.ingot_rubber.name=橡胶块 +item.powder_bismuth.name=铋-209 粉末 item.ball_dynamite.name=硝糖炸药 item.ingot_arsenic.name=砷锭 item.nugget_arsenic.name=砷粒 -item.nugget_unobtainium_greater.name=Uno-440 粒 -item.nugget_unobtainium_lesser.name=Uno-439 粒 +item.nugget_unobtainium_greater.name=Unobtainium-440 粒 +item.nugget_unobtainium_lesser.name=Unobtainium-439 粒 item.rag.name=布 -item.rag_damp.name=湿布 +item.rag_damp.name=湿布 item.stamp_desh_flat.name=Desh质锻模 item.stamp_desh_plate.name=Desh质板锻模 item.stamp_desh_wire.name=Desh质线锻模 @@ -3058,7 +2925,7 @@ item.stamp_desh_circuit.name=Desh质电路板锻模 item.stamp_desh_357.name=Desh质.357马格南锻模 item.stamp_desh_44.name=Desh质.44马格南锻模 item.stamp_desh_9.name=Desh质小口径锻模 -item.stamp_desh_50.name=Desh质大口径锻模 +item.stamp_desh_50.name=Desh质大口径锻模 item.battery_sc_schrabidium.name=自充电Sa-326 电池 item.battery_sc_yharonite.name=自充电 犽戎龙素-REDACTED电池 item.capsule_empty.name=空胶囊 @@ -3083,31 +2950,6 @@ item.gas_mask_filter_piss.name=先进的简易防毒面具过滤器 item.gas_mask_filter_rag.name=临时防毒面具过滤器 item.rag_piss.name=沾有尿的布 item.defuser_desh.name=Desh质高科技拆弹装置 -item.mask_piss.name=战壕面具 -item.mask_damp.name=粗糙防护面罩 -item.mask_rag.name=干燥的面具 -item.meteor_charm.name=陨石项链 -item.protection_charm.name=守护项链 -item.gas_tritium.name=氚气罐 -item.gas_deuterium.name=氘气罐 -item.gas_hydrogen.name=氢气罐 -item.gas_oxygen.name=氧气罐 -item.canister_fracksol.name=桶装压裂液 -item.crystal_asbestos.name=石棉晶体 -item.ingot_cadmium.name=镉锭 -item.nugget_cadmium.name=镉粒 -item.powder_cadmium.name=镉粉 -tile.block_cadmium.name=镉块 -item.deuterium_filter.name=氘过滤器 -item.ingot_ferrouranium.name=铀铁合金锭 -item.solid_fuel_presto.name=Presto固体燃料 -item.solid_fuel_presto_triplet.name=增强型Presto固体燃料 -item.ingot_cdalloy.name=镉钢锭 -item.powder_cdalloy.name=镉钢粉 -item.powder_borax.name=硼砂 -tile.ore_depth_borax.name=深层硼砂矿 -item.fluid_tank_empty.name==空通用流体罐 -item.fluid_barrel_empty.name=空流体桶 itemGroup.tabBlocks=NTM 矿石和方块 itemGroup.tabConsumable=HBM 食物和装备 @@ -3118,9 +2960,9 @@ itemGroup.tabNuke=HBM 炸弹 itemGroup.tabParts=HBM 资源和零件 itemGroup.tabResource=NTM 资源 itemGroup.tabTemplate=NTM 模板 -itemGroup.tabTest=HBM核科技mod测试项[PastRine汉化优化] +itemGroup.tabTest=HBM的核科技mod测试项[S166、Bismarck、nukesteve联合汉化] itemGroup.tabWeapon=HBM 武器和炮塔 -key.categories.hbm=HBM 的核技术 +key.categories.hbm=Hbm 的核技术模组 key.categories.hbm.craneLoad=RBMK起重机负载 key.categories.hbm.craneMoveDown=RBMK 起重机下降 key.categories.hbm.craneMoveLeft=RBMK 起重机左 @@ -3162,49 +3004,6 @@ rbmk.rod.coreTemp=核心温度: %s rbmk.rod.depletion=燃料消耗: %s rbmk.rod.skinTemp=表面温度: %s / %s rbmk.rod.xenon=氙元素堆积程度: %s -rbmk.cooler.cooling=-%s°C/s -rbmk.cooler.cryo=冷冻凝胶: %s / 16000mB -rbmk.console.assign=将选定列分配给屏幕#%s -rbmk.console.assignG=将选定列分配给图形 -rbmk.console.none=Off -rbmk.console.col_temp=监测平均柱温 -rbmk.console.rod_extraction=监控平均控制棒抽出量 -rbmk.console.fuel_depletion=监测平均燃料消耗 -rbmk.console.fuel_poison=监测平均氙中毒程度 -rbmk.console.fuel_temp=监测平均燃料温度 -rbmk.console.flux=监测平均发射通量 -rbmk.control.level=%s -rbmk.control.red=§c红色组 -rbmk.control.yellow=§e黄色组 -rbmk.control.green=§a绿色组 -rbmk.control.blue=§1蓝色组 -rbmk.control.purple=§5紫色组 -rbmk.moderated=慢化剂 -rbmk.rod.name=燃料棒类型: -rbmk.rod.flux=总发射通量: %s -rbmk.rod.depletion=燃料消耗: %s -rbmk.rod.xenon=氙元素堆积程度: %s -rbmk.rod.coreTemp=核心温度: %s -rbmk.rod.skinTemp=表面温度: %s / %s -rbmk.heater.fluid=%s: %s / %smB -rbmk.screen.core=核心: %s -rbmk.screen.depletion=消耗: %s -rbmk.screen.rod=控制: %s -rbmk.screen.temp=温度: %s -rbmk.screen.xenon=氙: %s -rbmk.screen.flux=通量: %s -rbmk.graph.fuel_temp=核心: %s°C -rbmk.graph.fuel_depletion=消耗: %s%% -rbmk.graph.rod_extraction=控制: %s%% -rbmk.graph.col_temp=温度: %s°C -rbmk.graph.fuel_poison=氙: %s%% -rbmk.graph.flux=通量: %s -rbmk.graph.none=None -rbmk.outgasser.eta=预计时间: %s -rbmk.outgasser.flux=接收通量: %s -rbmk.outgasser.progress=进度: %s / %s §b(%s%%) -rbmk.outgasser.gas=氚: %s / %smB - tile.absorber.name=辐射吸收器 tile.absorber_green.name=高级辐射吸收器 tile.absorber_pink.name=精英辐射吸收器 @@ -3307,13 +3106,13 @@ tile.block_niter.name=硝石块 tile.block_niter_reinforced.name=硝石加固块 tile.block_plutonium.name=钚块 tile.block_plutonium_fuel.name=钚燃料块 -tile.block_polonium.name=钋-210块 +tile.block_polonium.name=钋块 tile.block_polymer.name=聚合物块 -tile.block_pu238.name=钚-238块 -tile.block_pu239.name=钚-239块 -tile.block_pu240.name=钚-240块 +tile.block_pu238.name=钚238块 +tile.block_pu239.name=钚239块 +tile.block_pu240.name=钚240块 tile.block_pu_mix.name=反应堆级钚块 -tile.block_ra226.name=镭226块 +tile.block_ra226.name=镭块 226 tile.block_red_copper.name=紫铜块 tile.block_red_phosphorus.name=红磷块 tile.block_reiium.name=雷恩块 @@ -3337,16 +3136,16 @@ tile.block_titanium.name=钛块 tile.block_trinitite.name=玻璃石块 tile.block_tritium.name=氚单元块 tile.block_tungsten.name=钨块 -tile.block_u233.name=铀-233块 -tile.block_u235.name=铀-U235块 -tile.block_u238.name=铀-U238块 +tile.block_u233.name=铀233块 +tile.block_u235.name=铀U235块 +tile.block_u238.name=铀U238块 tile.block_unobtainium.name=难得素块 tile.block_uranium.name=铀块 tile.block_uranium_fuel.name=铀燃料块 tile.block_verticium.name=韦德赛块 tile.block_waste.name=核废料块 tile.block_waste_painted.name=带标志的核废料块 -tile.block_waste_vitrified.name=玻璃化核废料块 +tile.block_waste_vitrified.name=核废料玻璃化块 tile.block_weidanium.name=魏丹块 tile.block_white_phosphorus.name=白磷块 tile.block_yellowcake.name=黄饼块 @@ -3358,23 +3157,23 @@ tile.bomber.name=坠毁轰炸机 tile.book_guide.name=HBM的核科技mod手册[遗留] tile.boxcar.name=车厢 tile.brick_asbestos.name=石棉砖块 -tile.brick_asbestos_slab.name=石棉砖台阶 +tile.brick_asbestos_slab.name=石棉砖 tile.brick_asbestos_stairs.name=石棉砖楼梯 tile.brick_compound.name=复合网格砖块 -tile.brick_compound_slab.name=复合网格台阶 +tile.brick_compound_slab.name=复合网板 tile.brick_compound_stairs.name=复合网格楼梯 tile.brick_concrete.name=混凝土砖块 -tile.brick_concrete_broken.name=破碎的混凝土砖块 -tile.brick_concrete_broken_slab.name=破碎的混凝土台阶 +tile.brick_concrete_broken.name=破混凝土砖块 +tile.brick_concrete_broken_slab.name=破碎的混凝土板 tile.brick_concrete_broken_stairs.name=破碎的混凝土楼梯 -tile.brick_concrete_cracked.name=开裂的混凝土砖块 -tile.brick_concrete_cracked_slab.name=开裂的混凝土台阶 +tile.brick_concrete_cracked.name=裂混凝土砖块 +tile.brick_concrete_cracked_slab.name=开裂的混凝土板 tile.brick_concrete_cracked_stairs.name=开裂的混凝土楼梯 tile.brick_concrete_marked.name=标记混凝土砖 -tile.brick_concrete_mossy.name=长满苔藓的混凝土砖块 -tile.brick_concrete_mossy_slab.name=长满苔藓的混凝土台阶 +tile.brick_concrete_mossy.name=苔混凝土砖块 +tile.brick_concrete_mossy_slab.name=长满苔藓的混凝土板 tile.brick_concrete_mossy_stairs.name=长满苔藓的混凝土楼梯 -tile.brick_concrete_slab.name=混凝土砖台阶 +tile.brick_concrete_slab.name=混凝土砖板 tile.brick_concrete_stairs.name=混凝土砖楼梯 tile.brick_dungeon.name=硒铜砖 tile.brick_dungeon_circle.name=圆环硒铜块 @@ -3405,68 +3204,68 @@ tile.cluster_iron.name=铁矿簇 tile.cluster_titanium.name=钛矿簇 tile.cmb_brick.name=CMB钢瓦块 tile.cmb_brick_reinforced.name=加固CMB钢砖块 -tile.cmb_brick_reinforced_slab.name=加固CMB钢砖台阶 -tile.cmb_brick_reinforced_stairs.name=加固CMB钢砖楼梯 +tile.cmb_brick_reinforced_slab.name=增强型 CMB 砖板 +tile.cmb_brick_reinforced_stairs.name=加固 CMB 砖楼梯 tile.compact_launcher.name=紧凑型发射台 tile.concrete.name=混凝土瓦块 tile.concrete_asbestos.name=黑色混凝土 -tile.concrete_asbestos_slab.name=石棉混凝土台阶 +tile.concrete_asbestos_slab.name=石棉混凝土板 tile.concrete_asbestos_stairs.name=石棉混凝土楼梯 tile.concrete_black.name=黑色混凝土 -tile.concrete_black_slab.name=黑色混凝土台阶 +tile.concrete_black_slab.name=黑色混凝土板 tile.concrete_black_stairs.name=黑色混凝土楼梯 tile.concrete_blue.name=蓝色混凝土 -tile.concrete_blue_slab.name=蓝色混凝土台阶 +tile.concrete_blue_slab.name=蓝色混凝土板 tile.concrete_blue_stairs.name=蓝色混凝土楼梯 tile.concrete_brown.name=棕色混凝土 -tile.concrete_brown_slab.name=棕色混凝土台阶 +tile.concrete_brown_slab.name=棕色混凝土板 tile.concrete_brown_stairs.name=棕色混凝土楼梯 tile.concrete_cyan.name=青色混凝土 -tile.concrete_cyan_slab.name=青色混凝土台阶 +tile.concrete_cyan_slab.name=青色混凝土板 tile.concrete_cyan_stairs.name=青色混凝土楼梯 tile.concrete_gray.name=灰色混凝土 -tile.concrete_gray_slab.name=灰色混凝土台阶 +tile.concrete_gray_slab.name=灰色混凝土板 tile.concrete_gray_stairs.name=灰色混凝土楼梯 tile.concrete_green.name=绿色混凝土 -tile.concrete_green_slab.name=绿色混凝土台阶 +tile.concrete_green_slab.name=绿色混凝土板 tile.concrete_green_stairs.name=绿色混凝土楼梯 tile.concrete_light_blue.name=淡蓝色混凝土 -tile.concrete_light_blue_slab.name=浅蓝色混凝土台阶 +tile.concrete_light_blue_slab.name=浅蓝色混凝土板 tile.concrete_light_blue_stairs.name=浅蓝色混凝土楼梯 tile.concrete_lime.name=石灰混凝土 -tile.concrete_lime_slab.name=石灰混凝土台阶 +tile.concrete_lime_slab.name=石灰混凝土板 tile.concrete_lime_stairs.name=石灰混凝土楼梯 tile.concrete_magenta.name=洋红色混凝土 -tile.concrete_magenta_slab.name=洋红色混凝土台阶 +tile.concrete_magenta_slab.name=洋红色混凝土板 tile.concrete_magenta_stairs.name=洋红色混凝土楼梯 tile.concrete_orange.name=橙色混凝土 -tile.concrete_orange_slab.name=橙色混凝土台阶 +tile.concrete_orange_slab.name=橙色混凝土板 tile.concrete_orange_stairs.name=橙色混凝土楼梯 tile.concrete_pillar.name=钢筋混凝土柱 tile.concrete_pink.name=粉色混凝土 -tile.concrete_pink_slab.name=粉色混凝土台阶 +tile.concrete_pink_slab.name=粉色混凝土板 tile.concrete_pink_stairs.name=粉色混凝土楼梯 tile.concrete_purple.name=紫色混凝土 -tile.concrete_purple_slab.name=紫色混凝土台阶 +tile.concrete_purple_slab.name=紫色混凝土板 tile.concrete_purple_stairs.name=紫色混凝土楼梯 tile.concrete_red.name=红色混凝土 -tile.concrete_red_slab.name=红色混凝土台阶 +tile.concrete_red_slab.name=红色混凝土板 tile.concrete_red_stairs.name=红色混凝土楼梯 tile.concrete_silver.name=浅灰色混凝土 -tile.concrete_silver_slab.name=银色混凝土台阶 +tile.concrete_silver_slab.name=银色混凝土板 tile.concrete_silver_stairs.name=银色混凝土楼梯 -tile.concrete_slab.name=混凝土台阶 +tile.concrete_slab.name=混凝土楼板 tile.concrete_smooth.name=混凝土 -tile.concrete_smooth_slab.name=光滑混凝土台阶 +tile.concrete_smooth_slab.name=光滑混凝土板 tile.concrete_smooth_stairs.name=光滑的混凝土楼梯 tile.concrete_stairs.name=混凝土楼梯 tile.concrete_white.name=白色混凝土 -tile.concrete_white_slab.name=白色混凝土台阶 +tile.concrete_white_slab.name=白色混凝土板 tile.concrete_white_stairs.name=白色混凝土楼梯 tile.concrete_yellow.name=黄色混凝土 -tile.concrete_yellow_slab.name=黄色混凝土台阶 +tile.concrete_yellow_slab.name=黄色混凝土板 tile.concrete_yellow_stairs.name=黄色混凝土楼梯 -tile.control_panel0.name=控制面板 +tile.control_panel0.name=[WIP]控制面板 tile.corium_block.name=熔融堆芯 tile.crashed_bomb.name=哑弹 tile.crate.name=补给箱 @@ -3515,22 +3314,22 @@ tile.deco_pipe_rusted.name=生锈的钢制管道 tile.deco_rbmk.name=RBMK装饰块 tile.deco_rbmk_smooth.name=平滑RBMK装饰块 tile.deco_red_copper.name=紫铜装饰块 -tile.deco_sat_foeq.name=实验型核能PEAF-Mk.I FOEQ Duna探测器(装饰块) -tile.deco_sat_laser.name=轨道死光炮(装饰块) -tile.deco_sat_mapper.name=表面测绘卫星(装饰块) -tile.deco_sat_radar.name=雷达探测卫星(装饰块) -tile.deco_sat_resonator.name=X晶体共振卫星(装饰块) -tile.deco_sat_scanner.name=绘测和资源探测卫星(装饰块) +tile.deco_sat_foeq.name=PEAF - Mk.I FOEQ Duna 探测器,具有实验性核推进(Deco Block) +tile.deco_sat_laser.name=轨道死光炮(Deco Block) +tile.deco_sat_mapper.name=表面测绘卫星(Deco Block) +tile.deco_sat_radar.name=雷达测量卫星(Deco Block) +tile.deco_sat_resonator.name=Xenium 谐振器卫星(Deco Block) +tile.deco_sat_scanner.name=带深度资源扫描模块(Deco Block)的卫星 tile.deco_steel.name=钢装饰块 tile.deco_titanium.name=钛装饰块 tile.deco_tungsten.name=钨装饰块 tile.decon.name=玩家去污器 tile.decon_digamma.name=Digamma 净化器 -tile.depth_brick.name=深层砖 -tile.depth_dnt.name=DNT-强化深层砖 -tile.depth_nether_brick.name=下界深层砖 -tile.depth_nether_tiles.name=下界深层瓷砖 -tile.depth_tiles.name=深层瓷砖 +tile.depth_brick.name=深度砖 +tile.depth_dnt.name=DNT-强化深度砖 +tile.depth_nether_brick.name=下界深度砖 +tile.depth_nether_tiles.name=下界深度瓷砖 +tile.depth_tiles.name=深度瓷砖 tile.det_charge.name=炸药 tile.det_cord.name=炸药引信 tile.det_miner.name=采矿炸药 @@ -3540,14 +3339,14 @@ tile.dfc_emitter.name=DFC发射器 tile.dfc_injector.name=DFC燃料喷射器 tile.dfc_receiver.name=DFC接收器 tile.dfc_stabilizer.name=DFC稳定器 -tile.digamma_matter.name=迪伽马物质 +tile.digamma_matter.name=双股藻 tile.drill_pipe.name=钻杆 tile.ducrete.name=贫铀混凝土 tile.ducrete_brick.name=贫铀混凝土砖块 tile.ducrete_brick_slab.name=贫铀混凝土砖台阶 tile.ducrete_brick_stairs.name=贫铀混凝土砖楼梯 -tile.ducrete_reinforced.name=钢筋高密度贫铀混凝土砖块 -tile.ducrete_reinforced_slab.name=钢筋高密度贫铀混凝土台阶 +tile.ducrete_reinforced.name=强化高密度贫铀混凝土砖块 +tile.ducrete_reinforced_slab.name=钢筋高密度贫铀混凝土板 tile.ducrete_reinforced_stairs.name=钢筋高密度贫铀混凝土楼梯 tile.ducrete_slab.name=贫铀混凝土台阶 tile.ducrete_smooth.name=光滑的贫铀混凝土 @@ -3570,7 +3369,7 @@ tile.factory_titanium_hull.name=工厂外壳 tile.fallout.name=辐射尘 tile.fence_metal.name=铁丝网围栏 tile.field_disturber.name=高能场干扰器 -tile.fire_digamma.name=挥之不去的迪伽马之火 +tile.fire_digamma.name=挥之不去的迪伽玛之火 tile.fire_door.name=防火门 tile.fireworks.charges=已充能: %s tile.fireworks.color=颜色: %s @@ -3582,8 +3381,8 @@ tile.fluid_duct.name=通用流体管道 tile.fluid_duct_mk2.name=通用流体管道 tile.fluid_duct_solid.name=密封流体管道 tile.fraction_spacer.name=分馏塔分离器 -tile.frozen_dirt.name=冰冻泥土 -tile.frozen_grass.name=冰冻草地 +tile.frozen_dirt.name=冰冻土 +tile.frozen_grass.name=冰冻草 tile.frozen_log.name=冰冻原木 tile.frozen_planks.name=冰冻木板 tile.fusion_center.name=中心磁铁 @@ -3592,14 +3391,14 @@ tile.fusion_core_block.name=聚变反应堆控制 tile.fusion_hatch.name=聚变反应堆端口 tile.fusion_heater.name=等离子加热器 tile.fusion_motor.name=磁体马达 -tile.fwatz_conductor.name=4000K高温超导磁体 -tile.fwatz_cooler.name=再生冷却液储液罐散热器 -tile.fwatz_tank.name=再生冷却液储液罐 -tile.fwatz_scaffold.name=S.A.F.E 反应堆结构支架 -tile.fwatz_hatch.name=S.A.F.E 反应堆端口 -tile.fwatz_computer.name=奇点反聚变反应堆矩阵 -tile.fwatz_core.name=奇点反聚变反应堆核心(S.A.F.E) +tile.fwatz_computer.name=Watz聚变反应堆计算矩阵 +tile.fwatz_conductor.name=4000K超导磁体 +tile.fwatz_cooler.name=冷却液罐壳 +tile.fwatz_core.name=Watz聚变反应堆控制器 +tile.fwatz_hatch.name=Watz聚变反应堆端口 tile.fwatz_plasma.name=不稳定反Sa326等离子体 +tile.fwatz_scaffold.name=Watz聚变反应堆结构支架 +tile.fwatz_tank.name=冷却液罐 tile.gas_asbestos.name=石棉粉尘 tile.gas_coal.name=空气中的煤尘 tile.gas_duct.name=输气管道 @@ -3696,11 +3495,12 @@ tile.machine_condenser.name=蒸汽冷凝器 tile.machine_controller.name=反应堆遥控模块 tile.machine_converter_he_rf.name=HE→RF转换器 tile.machine_converter_rf_he.name=RF→HE转换器 -tile.machine_crystallizer.name=矿物酸化机 +tile.machine_crystallizer.name=矿物酸化器 tile.machine_cyclotron.name=回旋加速器 tile.machine_detector.name=功率检测器 tile.machine_deuterium.name=氘提取器 tile.machine_diesel.name=柴油发电机 +tile.machine_difurnace_ext.name=高炉风道 tile.machine_difurnace_off.name=高炉 tile.machine_difurnace_on.name=高炉 tile.machine_dineutronium_battery.name=Spark蓄电池 @@ -3745,7 +3545,7 @@ tile.machine_rtg_furnace_on.name=放射性同位素热力炉[RTG] tile.machine_rtg_green.name=韦德赛富集发电机 tile.machine_rtg_grey.name=放射性同位素发电机 tile.machine_rtg_orange.name=强RT发电机 -tile.machine_rtg_purple.name=反物质湮灭发电机 +tile.machine_rtg_purple.name=反物质湮灭发发电机 tile.machine_rtg_red.name=离子发生器 tile.machine_rtg_yellow.name=奥斯超级燃料反应堆 tile.machine_satlinker.name=卫星ID管理器 @@ -3756,7 +3556,6 @@ tile.machine_shredder.name=粉碎机 tile.machine_silex.name=激光同位素分离室 tile.machine_siren.name=警报器 tile.machine_solar_boiler.name=太阳能锅炉 -tile.machine_solar_boiler.desc=使用来自定日镜的阳光来加热流体 tile.machine_spp_bottom.name=ZPE电位发生器 [底部] tile.machine_spp_top.name=ZPE电位发生器 [顶部] tile.machine_storage_drum.name=核废料处理桶 @@ -3764,15 +3563,10 @@ tile.machine_telelinker.name=炮塔ID管理器 tile.machine_teleporter.name=传送机 tile.machine_tower_large.name=冷却塔 tile.machine_tower_small.name=辅助冷却塔 -tile.machine_transformer.name=顶端充电座 -tile.machine_transformer.desc=使用电源为玩家物品栏中的物品充电. 范围:上方3个方块 -tile.machine_transformer_20.name=底部充电座 -tile.machine_transformer_20.desc=使用电源为玩家物品栏中的物品充电. 范围:下方3个方块 -tile.machine_transformer_dnt.name=DNT顶端充电座 -tile.machine_transformer_dnt.desc=使用电源为玩家物品栏中的物品充电. 范围:上方3个方块 -tile.machine_transformer_dnt_20.name=DNT底部充电座 -tile.machine_transformer_dnt_20.desc=使用电源为玩家物品栏中的物品充电. 范围:下方3个方块 - +tile.machine_transformer.name=10k-20Hz变频器 +tile.machine_transformer_20.name=10k-1Hz变频器 +tile.machine_transformer_dnt.name=DNT-20Hz变频器 +tile.machine_transformer_dnt_20.name=DNT-1Hz变频器 tile.machine_turbine.name=汽轮机 tile.machine_turbofan.name=涡扇发动机 tile.machine_uf6_tank.name=六氟化铀储罐 @@ -3799,8 +3593,8 @@ tile.mine_shrap.name=破片地雷 tile.mud_block.name=毒泥 tile.muffler.name=消声器 tile.mush.name=发光真菌 -tile.mush_block.name=生长的发光真菌 -tile.mush_block_stem.name=生长的发光真菌茎 +tile.mush_block.name=生长的发光蘑菇 +tile.mush_block_stem.name=生长的发光蘑菇茎 tile.ntm_dirt.name=泥土 tile.nuke_boy.name=小男孩 tile.nuke_custom.name=自定义核弹 @@ -3825,12 +3619,12 @@ tile.ore_beryllium.name=铍矿石 tile.ore_cinnebar.name=朱砂矿石 tile.ore_coal_oil.name=含油煤矿石 tile.ore_coal_oil_burning.name=燃烧的含油煤矿石 -tile.ore_cobalt.name=钴矿石 +tile.ore_cobalt.name=Cobalt Ore tile.ore_coltan.name=钶钽铁矿 tile.ore_copper.name=铜矿石 tile.ore_daffergon.name=达夫贡矿石 tile.ore_depth_cinnebar.name=深层朱砂矿石 -tile.ore_depth_nether_neodymium.name=下界深层钕矿 +tile.ore_depth_nether_neodymium.name=下界深度钕矿 tile.ore_depth_zirconium.name=深层锆矿石 tile.ore_fluorite.name=氟石矿石 tile.ore_gneiss_asbestos.name=石棉矿页岩 @@ -3856,7 +3650,7 @@ tile.ore_meteor_titanium.name=钛矿陨石 tile.ore_meteor_tungsten.name=钨矿陨石 tile.ore_meteor_uranium.name=铀矿陨石 tile.ore_nether_coal.name=燃烧下界煤矿 -tile.ore_nether_cobalt.name=下界钴矿石 +tile.ore_nether_cobalt.name=Nether Cobalt Ore tile.ore_nether_fire.name=火矿石 tile.ore_nether_plutonium.name=下界钚矿石 tile.ore_nether_schrabidium.name=下界Sa326矿石 @@ -3896,12 +3690,12 @@ tile.pribris.name=RBMK石墨式反应堆残骸 tile.pribris_burning.name=燃烧的RBMK反应堆残骸 tile.pribris_digamma.name=发黑的RBMK反应堆残骸 tile.pribris_radiating.name=阴燃的RBMK反应堆残骸 -tile.qe_containment.name=QE 密封防辐射门 +tile.qe_containment.name=QE 遏制门 tile.qe_sliding.name=QE推拉门 tile.radiobox.name=无线怪物清除箱 tile.radiorec.name=坏掉的收音机 tile.radsensor.name=辐射传感器 -tile.radwater_block.name=核污染水 +tile.radwater_block.name=辐照水 tile.rail_booster.name=高速动力轨道 tile.rail_highspeed.name=高速轨道 tile.railgun_plasma.name=电磁炮 @@ -3918,7 +3712,7 @@ tile.rbmk_blank.desc=§e使 RBMK反应堆升温或者更慢降温。$§e并使 tile.rbmk_boiler.name=RBMK反应堆蒸汽管道 tile.rbmk_boiler.desc=§e如果温度足够高,将水转化为蒸汽$§e与 RBMK反应堆蒸汽导出器使用 tile.rbmk_console.name=RBMK石墨式反应堆控制台 -tile.rbmk_console.desc=§a使用背面的红石端口设置控制棒$§e功率 1-15 将控制棒设置为 100%-0%%$§e所以 功率15 就像 AZ-5 +tile.rbmk_console.desc=§6使用背面的红石端口设置控制棒$§e功率 1-15 将控制棒设置为 100%-0%%$§e所以 功率15 就像 AZ-5 tile.rbmk_control.name=RBMK反应堆控制棒 tile.rbmk_control.desc=§e它可以用于控制通过的中子。 tile.rbmk_control_auto.name=RBMK反应堆自动控制棒 @@ -3930,15 +3724,15 @@ tile.rbmk_loader.name=RBMK反应堆蒸汽导出器 tile.rbmk_moderator.name=RBMK反应堆石墨慢化剂 tile.rbmk_moderator.desc=§e它可以将通过的快中子转换为慢中子。 tile.rbmk_outgasser.name=RBMK反应堆辐照通道 -tile.rbmk_outgasser.desc=§e吸收入射的通量并用它进行辐照。 +tile.rbmk_outgasser.desc=§e吸收进入的中子并用它进行辐照。 tile.rbmk_reflector.name=RBMK反应堆碳化钨中子反射器 -tile.rbmk_reflector.desc=§e它可以将通量反射回原来的路径。 +tile.rbmk_reflector.desc=§e它可以将中子反射回原来的路径。 tile.rbmk_rod.name=RBMK反应堆燃料棒 tile.rbmk_rod.desc=§a它可以装有能产生热量的反应堆燃料棒。 tile.rbmk_rod_mod.name= RBMK反应堆慢化燃料棒 tile.rbmk_rod_mod.desc=§a和RBMK反应堆燃料棒一样,但将通过的快中子转换为慢中子。 tile.rbmk_rod_reasim.name= RBMK反应堆燃料棒(ReaSim) -tile.rbmk_rod_reasim.desc=§a与 RBMK反应堆燃料棒相同,但它在所有水平方向上随机发射通量。 +tile.rbmk_rod_reasim.desc=§a与 RBMK反应堆燃料棒相同,但它在所有水平方向上随机发射中子。 tile.rbmk_rod_reasim_mod.name= RBMK反应堆慢化燃料棒(ReaSim) tile.rbmk_rod_reasim_mod.desc=§a和RBMK反应堆燃料棒(ReaSim)一样,但是可以通过的快中子转换成慢中子 tile.rbmk_steam_inlet.name=RBMK ReaSim 进水口 @@ -3957,22 +3751,22 @@ tile.red_cable.name=紫铜电线 tile.red_pylon.name=电线杆 tile.red_wire_coated.name=密封紫铜电缆 tile.reinforced_brick.name=强化石头 -tile.reinforced_brick_slab.name=强化石台阶 -tile.reinforced_brick_stairs.name=强化石楼梯 +tile.reinforced_brick_slab.name=钢筋砖 +tile.reinforced_brick_stairs.name=钢筋砖楼梯 tile.reinforced_glass.name=强化玻璃 tile.reinforced_lamp_off.name=强化红石灯 tile.reinforced_lamp_on.name=强化红石灯 tile.reinforced_light.name=强化萤石 tile.reinforced_sand.name=强化砂石 -tile.reinforced_sand_slab.name=强化砂石台阶 -tile.reinforced_sand_stairs.name=强化砂石楼梯 +tile.reinforced_sand_slab.name=强化沙板 +tile.reinforced_sand_stairs.name=强化沙楼梯 tile.reinforced_stone.name=致密石头 -tile.reinforced_stone_slab.name=致密石台阶 -tile.reinforced_stone_stairs.name=致密石楼梯 +tile.reinforced_stone_slab.name=强化石台阶 +tile.reinforced_stone_stairs.name=强化石阶 tile.rejuvinator.name=再生装置 tile.residue.name=云残留 tile.round_airlock_door.name=圆形气闸门 -tile.rtg_polonium.name=PT 同位素电池 +tile.rtg_polonium.name=PT 同位素池 tile.safe.name=保险箱 tile.sand_boron.name=硼砂 tile.sand_boron_layer.name=硼砂层 @@ -3983,7 +3777,7 @@ tile.sand_polonium.name=钋沙 tile.sand_quartz.name=石英砂 tile.sand_uranium.name=铀沙 tile.sat_dock.name=卸货平台 -tile.schrabidic_block.name=Sa酸 +tile.schrabidic_block.name=舒拉比酸 tile.seal_controller.name=发射井舱门开关 tile.seal_frame.name=发射井舱门框架 tile.seal_hatch.name=发射井舱门 @@ -3995,16 +3789,16 @@ tile.sellafield_3.name=灼热的放射性熔融凝固物 tile.sellafield_4.name=地狱般的放射性熔融凝固物 tile.sellafield_core.name=放射性熔融凝固物核心 tile.sellafield_slaked.name=消沉的放射性熔融凝固物 -tile.silo_hatch.name=核弹发射井 +tile.silo_hatch.name=筒仓舱口 tile.sliding_blast_door.name=侧向滑动防爆门 tile.sliding_blast_door_2.name=侧向滑动防爆门 tile.sliding_seal_door.name=滑动密封门 -tile.small_hatch.name=小型舱口 +tile.small_hatch.name=小舱口 tile.solar_mirror.name=定日镜 tile.soyuz_capsule.name=货物着陆舱 tile.soyuz_launcher.name=联盟号发射平台 tile.spikes.name=地刺 -tile.spinny_light.name=旋转警示灯 +tile.spinny_light.name=旋转光 tile.steel_beam.name=钢梁 tile.steel_corner.name=钢墙角 tile.steel_grate.name=钢格栅 @@ -4024,7 +3818,7 @@ tile.struct_plasma_core.name=等离子加热器核心组件 tile.struct_scaffold.name=发射台骨架 tile.struct_soyuz_core.name=联盟号发射器核心组件 tile.substation.name=变电站 -tile.substation.desc=§6连接类型: §e四倍$§6连接距离: §e20m +tile.substation.desc=§6连接类型: §eQuadruple$§6连接距离: §e20m tile.taint.name=腐质 tile.taint_barrel.name=IMP残渣桶 tile.tape_recorder.name=录音机 @@ -4034,15 +3828,15 @@ tile.therm_endo.name=吸热炸弹 tile.therm_exo.name=放热炸弹 tile.tile_lab.name=实验室瓷砖 tile.tile_lab_broken.name=破损实验室瓷砖 -tile.tile_lab_broken_slab.name=破碎的实验室瓷砖台阶 +tile.tile_lab_broken_slab.name=破碎的实验室瓷砖板 tile.tile_lab_broken_stairs.name=破碎的实验室瓷砖楼梯 tile.tile_lab_cracked.name=开裂实验室瓷砖 -tile.tile_lab_cracked_slab.name=开裂的实验室瓷砖台阶 +tile.tile_lab_cracked_slab.name=开裂的实验室瓷砖板 tile.tile_lab_cracked_stairs.name=破裂的实验室瓷砖楼梯 -tile.tile_lab_slab.name=实验室瓷砖台阶 +tile.tile_lab_slab.name=实验室瓷砖大板 tile.tile_lab_stairs.name=实验室瓷砖楼梯 tile.toxic_block.name=绿色软泥 -tile.transition_seal.name=巨型安全门 +tile.transition_seal.name=过渡密封门 tile.turret_cheapo.name=奇普-加特林哨兵 tile.turret_chekhov.name=重机枪炮塔“契诃夫的枪” tile.turret_cwis.name=Mk-15“密集阵”近防系统 @@ -4057,7 +3851,7 @@ tile.turret_light.name=轻型机枪炮塔 tile.turret_maxwell.name=高能微波炮塔 "麦克斯韦" tile.turret_richard.name=火箭炮塔“理查德” tile.turret_rocket.name=火箭炮塔 -tile.turret_spitfire.name=重炮炮塔 +tile.turret_spitfire.name=目前没有名字[开发中] tile.turret_tau.name=陶子炮塔 tile.turret_tauon.name=XVL1456原型陶子发射器炮塔"陶恩" tile.vault_door.name=避难所防爆门 @@ -4070,8 +3864,8 @@ tile.volcanic_lava_block.name=火山熔岩 tile.volcano_core.name=火山核心 tile.waste_dirt.name=污染土 tile.waste_earth.name=死亡草地 -tile.waste_grass_tall.name=枯草 -tile.waste_leaves.name=枯叶 +tile.waste_grass_tall.name=废草 +tile.waste_leaves.name=废叶 tile.waste_log.name=烧焦原木 tile.waste_mycelium.name=发光菌丝 tile.waste_planks.name=烧焦木板 @@ -4114,9 +3908,9 @@ tile.machine_catalytic_cracker.name=催化裂化塔 tile.rbmk_heater.name=RBMK反应堆流体加热器 tile.rbmk_heater.desc=§e它被用来加热流体$§e如果热量高于沸腾液体的温度,则它会利用热量将其转化$§e热交换加热器用于传递热量并回收冷却液 tile.heat_boiler.name=大型锅炉 -tile.heat_boiler.desc=大型锅炉可被用来加热水或原油$需要外部热源$传热率: ΔT*0.01 TU/t$(Δ表示差值,T表示温度) +tile.heat_boiler.desc=大型锅炉可被用来加热水或原油$需要外部热源$热量转换速率: ΔT*0.01 TU/t tile.red_pylon_large.name=大型输电塔 -tile.red_pylon_large.desc=§6连接类型: §e四倍$§6连接距离: §e100m$§6这个塔架需要一个变电站! +tile.red_pylon_large.desc=§6连接类型: §eQuadruple$§6连接距离: §e100m$§6这个输电塔需要一个变电站! tile.rbmk_cooler.name=RBMK反应堆紧急冷却器 tile.rbmk_cooler.desc=§e如果堆芯温度超过 750°C,它会开始使用冷冻凝胶快速冷却 RBMK 通道$§e它用于在熔毁前为您争取时间,以便您有机会按下 AZ-5。 tile.uu_gigafactory.name=UU物质超级工厂 @@ -4125,24 +3919,6 @@ tile.machine_turbofan.desc=§e燃烧煤油以产生能量 tile.cable_diode.name=紫铜二极管 tile.cable_diode.desc=§6限制吞吐量并限制流向$§e使用螺丝刀提高吞吐量$§e使用手钻降低吞吐量$§e使用拆弹器更改网络优先级 tile.cable_detector.name=红石电源开关 -tile.radio_torch_sender.name=无线红石发射器 -tile.radio_torch_receiver.name=无线电接收器 -tile.heater_firebox.name=燃烧室 -tile.heater_firebox.desc=燃烧固体燃料以产生热量 -tile.furnace_steel.name=钢炉 -tile.furnace_steel.desc=非常大的熔炉,冶炼矿石时可提供加成。$这需要外部热源$传热率:ΔT*0.05tu/T$(Δ表示差值,T表示温度) -tile.machine_storage_drum.desc=核废料随着时间慢慢衰变。如果内部液体和气体核废料已满,则辐射将泄漏。 -tile.machine_waste_drum.desc=至少一侧需要有水接触。接触水的面越多,燃料冷却速度越快。 -tile.red_pylon.desc=§6连接类型: §e单倍$§6连接距离: §e25m -tile.bomb.tnt_enabled=[ 被破坏时点燃: 启用 ] -tile.bomb.tnt_disabled=[ 被破坏时点燃: 关闭 ] -tile.baleonitite_slaked.name=消沉的野火熔融凝固物 -tile.baleonitite_0.name=野火熔融凝固物 -tile.baleonitite_1.name=高温野火熔融凝固物 -tile.baleonitite_2.name=沸腾的野火熔融凝固物 -tile.baleonitite_3.name=灼热的野火熔融凝固物 -tile.baleonitite_4.name=地狱般的野火熔融凝固物 -tile.baleonitite_core.name=野火熔融凝固物核心 tool.ability.centrifuge=自动离心 tool.ability.crystallizer=自动结晶 @@ -4158,7 +3934,7 @@ tool.ability.smelter=自动熔炼 trait.asbestos=石棉 trait.blinding=致盲 trait.breeding=可在增殖反应堆中工作 %s 次 -trait.coal=煤尘 +trait.coal=煤炭粉尘 trait.digamma=迪伽马辐射 trait.drop=掉落物危险 trait.furnace=可在核熔炉中工作 %s 次 @@ -4203,12 +3979,18 @@ trait.rbmx.splitsWith=接受: %s trait.rbmx.xenon=铅元素堆积程度: %s trait.rbmx.xenonBurn=铅元素寂灭函数: %s trait.rbmx.xenonGen=铅元素产生函数: %s -trait.rbmk.meltdown=内部熔毁: %s trait.tile.cluster=只有在被玩家破坏时才会掉落 trait.tile.depth=只能被爆炸破坏 trait.unstable=不稳定 +trait.flammable=可燃烧 +trait.flammable.desc=§e提供 §4%sTU §e每桶. +trait.coolable=可冷却 +trait.coolable.desc=§b提供 §4%sTU §b每桶. +trait.boilable=可加热 +trait.boilable.desc=§b需要 §4%sTU §b每桶. + wavelengths.name.drx=迪伽马 -wavelengths.name.gamma=伽马射线 +wavelengths.name.gamma=伽马 wavelengths.name.ir=红外线 wavelengths.name.micro=微波 wavelengths.name.radio=无线电波 @@ -4307,7 +4089,7 @@ achievement.stratum.desc=快刹车, Mitts! achievement.tasteofblood=血的味道 achievement.tasteofblood.desc=这不是任何测试的一部分 - +armor.explosionImmune=免疫除爆炸伤害外的一切伤害 book.test.cover=停车坐爱枫林晚 book.test.page1=测试页面1 chem.XENON_OXY=增强林德循环制氙 @@ -4335,7 +4117,7 @@ item.ammo_fireext_sand.name=灭火器 硼砂罐 item.ammo_rocket_digamma.name=§4归 零§r item.book_guide.name=RBMK反应堆操作指导书 item.bucket_schrabidic_acid.name=一桶Sa酸 -item.canister_NITAN.name=桶装NITAN© 100号超级燃料 +item.canister_NITAN.name=桶装NITAN 100号超级燃料 item.cell_balefire.name=气态野火单元 item.cheese.name=奶酪 item.coffee.name=咖啡 @@ -4343,16 +4125,16 @@ item.coffee_radium.name=加镭咖啡 item.coltan_tool.name=钶钽铁矿指针 item.cube_power.name=电子块 item.fallout.name=一堆辐射尘 -item.gun_bolter_digamma.name=迪伽马爆弹枪 +item.gun_bolter_digamma.name=迪伽马Bolter item.gun_fireext.name=灭火器 -item.gun_mymy.name=Nietes软弹枪 +item.gun_mymy.name=Nietes item.gun_supershotgun.name=超级猎枪 item.journal_bj.name=被威士忌浸透的笔记本 item.journal_pip.name=生存主义者日记 item.journal_silver.name=承包商注释 item.missile_soyuz.name=联盟-FG运载火箭 item.mp_warhead_15_turbine.name=15号喷气发动机弹头 -item.particle_lutece.name=Lutece镥准粒子胶囊 +item.particle_lutece.name=Lutece准粒子 item.pipes_steel.desc=为了逃税,所以造价如此高昂. item.robes_boots.name=战地靴 item.robes_helmet.name=休闲兜帽 @@ -4400,32 +4182,15 @@ tile.sat_mapper.name=地表测绘卫星[装饰块] tile.sat_radar.name=雷达探测卫星[装饰块] tile.sat_resonator.name=X晶体共振卫星[装饰块] tile.sat_scanner.name=绘测和资源探测卫星[装饰块] - trait.explosive=高度易燃/易爆 trait.cryogenic=低温 / 寒冷 trait.hydro=与水反应 trait.toxic=毒性 -trait.contaminating=掉落物污染 -trait.contaminating.radius=污染半径: %sm -trait.cleanroom=洁净 -trait.cleanroom.desc=掉落的污染物品不会消失 -trait.dfcFuel=DFC燃料 -trait.dfcFuel.desc=§d输出功率 §5%s%% -trait.flammable=可燃 -trait.flammable.desc=§e每桶提供 §6%sTU §e的热量 -trait.coolable=可冷却 -trait.coolable.desc=§c每桶提供 §4%sTU §c的热量 -trait.boilable=可加热 -trait.boilable.desc=§b每桶需要 §3%sTU §b的热量 -trait.hotfluid=高温 -trait.antimatter=反物质湮灭 -trait.corrosivePlastic=腐蚀性 -trait.corrosiveIron=强腐蚀性 adjective.little=低 adjective.medium=中等 adjective.high=高 -adjective.veryhigh=剧 -adjective.extreme=极 +adjective.veryhigh=超高 +adjective.extreme=剧 hazard.prot=可防护: hazard.noprot=不可防护: hazard.bacteria=细菌/气溶胶 @@ -4433,86 +4198,9 @@ hazard.corrosive=腐蚀性烟雾 hazard.gasChlorine=化学气体 hazard.gasInert=惰性气体/窒息 hazard.gasMonoxide=一氧化碳 -hazard.light=强光 +hazard.light=光气 hazard.nerveAgent=神经毒剂 hazard.neverProtects=永远不能防护: hazard.particleCoarse=空气微粒 hazard.particleFine=微粒 -hazard.sand=眼睛刺激物 -hazard.radGas=放射性气体 - -tile.heater_rt.name=放射性同位素加热器 -tile.heater_rt.desc=由放射性同位素燃料靶丸产生热量 -container.heaterRadioThermal=放射性同位素加热器 -tile.machine_deuterium_extractor.name=氘提取器 -tile.machine_deuterium_tower.name=氘萃取塔 -container.machineMixer=工业搅拌机 -container.machineUUMixer=工业UU搅拌机 -tile.machine_mixer.name=工业搅拌机 -tile.machine_difurnace_ext.name=高炉烟道 -tile.machine_difurnace_rtg_off.name=核高炉 -tile.machine_difurnace_rtg_on.name=核高炉 -container.diFurnaceRTG=核高炉 -tile.machine_excavator.name=大型采矿钻机 -tile.red_wire_sealed.name=辐射密封紫铜电缆座 -tile.ore_bedrock_block.name=基岩矿石 -tile.ore_depth_nether_nitan.name=下界深层NITAN矿 -tile.fluid_duct_solid_sealed.name=辐射密封流体管 -tile.block_lignite.name=褐煤块 -tile.block_coke.name=焦炭块 -tile.block_coal_infernal.name=地狱煤块 -tile.block_solid_fuel.name=固体燃料块 -tile.block_solid_fuel_presto.name=Presto固体燃料块 -tile.block_solid_fuel_presto_triplet.name=增强型Presto固体燃料块 -tile.sliding_gate_door.name=小型QE 密封防辐射门 -tile.cluster_copper.name=铜矿簇 - -hbmfluid.heavywater=重水 -fluid.heavywater=重水 -hbmfluid.nitric_acid=硝酸 -fluid.nitric_acid=硝酸 -hbmfluid.solvent=有机溶剂 -fluid.solvent=有机溶剂 -hbmfluid.radiosolvent=高性能溶剂 -fluid.radiosolvent=高性能溶剂 -fluid.fishoil=鱼油 -fluid.sunfloweroil=葵花籽油 -fluid.colloid=胶体 -fluid.nitroglycerin=硝酸甘油 -fluid.tile.water=水 -fluid.tile.lava=岩浆 -hbmfluid.experience=经验汁 -fluid.experience=经验汁 - -item.drillbit_dnt.name=双聚中子态素钻头 -item.drillbit_dnt_diamond.name=双聚中子态素钻头(镶钻) -item.drillbit_desh.name=Desh钻头 -item.drillbit_desh_diamond.name=Desh钻头(镶钻) -item.drillbit_ferro.name=铀铁合金钻头 -item.drillbit_ferro_diamond.name=铀铁合金钻头(镶钻) -item.drillbit_hss.name=高速钢钻头 -item.drillbit_hss_diamond.name=高速钢钻头(镶钻) -item.drillbit_steel.name=钢钻头 -item.drillbit_steel_diamond.name=钢钻头(镶钻) -item.drillbit_tcalloy.name=锝钢钻头 -item.drillbit_tcalloy_diamond.name=锝钢钻头(镶钻) -item.euphemium_capacitor.name=Ep电容器 -item.gas_mask_filter_radon.name=欧米伽防毒面具过滤器 -desc.gui.rtg.heat=§e当前热等级: %s -desc.gui.rtgBFurnace.desc=热量越多,运行速度越快$热量超过最大值 %s 不会有任何影响$短半衰期的靶丸可能会衰变 -item.inf_water_mk3.name=超重型无限水罐 -item.inf_water_mk4.name=大屁股无限水坦克 -item.custom_sol.name=自定义核弹-Sa327棒 -item.custom_euph.name=自定义核弹-反质量棒 - - -turret.animals=被动目标:%s -turret.machines=以机械为目标: %s -turret.mobs=以怪物为目标: %s -turret.none=无 -turret.off=关 -turret.on=开 -turret.players=以玩家为目标:%s - -flare.ignition=点火装置 -flare.valve=流量阀 +hazard.sand=眼睛刺激物 \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/block/control_panel0.json b/src/main/resources/assets/hbm/models/block/control_panel0.json new file mode 100644 index 0000000000..5245e5d5c6 --- /dev/null +++ b/src/main/resources/assets/hbm/models/block/control_panel0.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "hbm:blocks/control_panel0" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/block/conveyor.mtl b/src/main/resources/assets/hbm/models/block/conveyor.mtl new file mode 100644 index 0000000000..dcfa2c2e5e --- /dev/null +++ b/src/main/resources/assets/hbm/models/block/conveyor.mtl @@ -0,0 +1,6 @@ +# Made in Blockbench 4.9.3 +newmtl m_bb126d08-7821-6e47-8032-b411bedee09a +map_Kd hbm:blocks/conveyor_side +newmtl m_faf1884d-366c-ce32-3278-6fc04005967d +map_Kd hbm:blocks/conveyor +newmtl none \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/block/conveyor.obj b/src/main/resources/assets/hbm/models/block/conveyor.obj new file mode 100644 index 0000000000..d85e17f0fb --- /dev/null +++ b/src/main/resources/assets/hbm/models/block/conveyor.obj @@ -0,0 +1,50 @@ +# Made in Blockbench 4.9.3 +mtllib conveyor.mtl + +o conveyor +v 1 0.25 1 +v 1 0.25 0 +v 1 0 1 +v 1 0 0 +v 0 0.25 1 +v 0 0.25 0 +v 0 0 1 +v 0 0 0 +vt 1 0.25 +vt 0 0.25 +vt 0 0 +vt 1 0 +vt 1 0 +vt 1 0.25 +vt 0 0.25 +vt 0 0 +vt 0 0 +vt 1 0 +vt 1 1 +vt 0 1 +vt 1 0 +vt 1 1 +vt 0 1 +vt 0 0 +vt 1 0.75 +vt 1 1 +vt 0 1 +vt 0 0.75 +vt 1 1 +vt 0 1 +vt 0 0.75 +vt 1 0.75 +vn 1 0 0 +vn -1 0 0 +vn 0 1 0 +vn 0 -1 0 +vn 0 0 1 +vn 0 0 -1 +usemtl m_bb126d08-7821-6e47-8032-b411bedee09a +f 2/1/1 1/2/1 3/3/1 4/4/1 +f 7/5/2 5/6/2 6/7/2 8/8/2 +usemtl m_faf1884d-366c-ce32-3278-6fc04005967d +f 5/9/3 1/10/3 2/11/3 6/12/3 +f 4/13/4 3/14/4 7/15/4 8/16/4 +f 3/17/5 1/18/5 5/19/5 7/20/5 +f 6/21/6 2/22/6 4/23/6 8/24/6 \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/block/conveyor_express.mtl b/src/main/resources/assets/hbm/models/block/conveyor_express.mtl new file mode 100644 index 0000000000..ba6edcc0f8 --- /dev/null +++ b/src/main/resources/assets/hbm/models/block/conveyor_express.mtl @@ -0,0 +1,6 @@ +# Made in Blockbench 4.9.3 +newmtl m_f3b9132b-3651-2704-8942-4a27662c81cb +map_Kd hbm:blocks/conveyor_side +newmtl m_957e10ff-6904-f724-abc6-e7ba0f73b574 +map_Kd hbm:blocks/conveyor_express +newmtl none \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/block/conveyor_express.obj b/src/main/resources/assets/hbm/models/block/conveyor_express.obj new file mode 100644 index 0000000000..b8bed51df6 --- /dev/null +++ b/src/main/resources/assets/hbm/models/block/conveyor_express.obj @@ -0,0 +1,50 @@ +# Made in Blockbench 4.9.3 +mtllib conveyor_express.mtl + +o cuboid +v 1 0.25 1 +v 1 0.25 0 +v 1 0 1 +v 1 0 0 +v 0 0.25 1 +v 0 0.25 0 +v 0 0 1 +v 0 0 0 +vt 1 0.25 +vt 0 0.25 +vt 0 0 +vt 1 0 +vt 1 0 +vt 1 0.25 +vt 0 0.25 +vt 0 0 +vt 0 0 +vt 1 0 +vt 1 1 +vt 0 1 +vt 1 0 +vt 1 1 +vt 0 1 +vt 0 0 +vt 1 0.75 +vt 1 1 +vt 0 1 +vt 0 0.75 +vt 1 1 +vt 0 1 +vt 0 0.75 +vt 1 0.75 +vn 1 0 0 +vn -1 0 0 +vn 0 1 0 +vn 0 -1 0 +vn 0 0 1 +vn 0 0 -1 +usemtl m_f3b9132b-3651-2704-8942-4a27662c81cb +f 2/1/1 1/2/1 3/3/1 4/4/1 +f 7/5/2 5/6/2 6/7/2 8/8/2 +usemtl m_957e10ff-6904-f724-abc6-e7ba0f73b574 +f 5/9/3 1/10/3 2/11/3 6/12/3 +f 4/13/4 3/14/4 7/15/4 8/16/4 +f 3/17/5 1/18/5 5/19/5 7/20/5 +f 6/21/6 2/22/6 4/23/6 8/24/6 \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/block/crane_ejector.json b/src/main/resources/assets/hbm/models/block/crane_ejector.json new file mode 100644 index 0000000000..4764ab50a2 --- /dev/null +++ b/src/main/resources/assets/hbm/models/block/crane_ejector.json @@ -0,0 +1,12 @@ +{ + "parent": "block/cube", + "textures": { + "down": "hbm:blocks/crane_out_top", + "up": "hbm:blocks/crane_out_top", + "north": "hbm:blocks/crane_in", + "south": "hbm:blocks/crane_out", + "west": "hbm:blocks/crane_out_side_turn_right", + "east": "hbm:blocks/crane_out_side_turn_left", + "particle": "hbm:blocks/crane_out_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/block/crane_inserter.json b/src/main/resources/assets/hbm/models/block/crane_inserter.json new file mode 100644 index 0000000000..a0668d75fe --- /dev/null +++ b/src/main/resources/assets/hbm/models/block/crane_inserter.json @@ -0,0 +1,12 @@ +{ + "parent": "block/cube", + "textures": { + "down": "hbm:blocks/crane_in_top", + "up": "hbm:blocks/crane_in_top", + "north": "hbm:blocks/crane_in", + "south": "hbm:blocks/crane_out", + "west": "hbm:blocks/crane_in_side_turn_right", + "east": "hbm:blocks/crane_in_side_turn_left", + "particle": "hbm:blocks/crane_in_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/item/control_panel0.json b/src/main/resources/assets/hbm/models/item/control_panel0.json new file mode 100644 index 0000000000..63a06d6d4c --- /dev/null +++ b/src/main/resources/assets/hbm/models/item/control_panel0.json @@ -0,0 +1,3 @@ +{ + "parent": "hbm:block/control_panel0" +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/item/conveyor.json b/src/main/resources/assets/hbm/models/item/conveyor.json new file mode 100644 index 0000000000..3449134bf2 --- /dev/null +++ b/src/main/resources/assets/hbm/models/item/conveyor.json @@ -0,0 +1,3 @@ +{ + "parent": "hbm:block/conveyor" +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/item/conveyor_express.json b/src/main/resources/assets/hbm/models/item/conveyor_express.json new file mode 100644 index 0000000000..3b3f58e47b --- /dev/null +++ b/src/main/resources/assets/hbm/models/item/conveyor_express.json @@ -0,0 +1,3 @@ +{ + "parent": "hbm:block/conveyor_express" +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/item/crane_ejector.json b/src/main/resources/assets/hbm/models/item/crane_ejector.json new file mode 100644 index 0000000000..e21c83bb44 --- /dev/null +++ b/src/main/resources/assets/hbm/models/item/crane_ejector.json @@ -0,0 +1,3 @@ +{ + "parent": "hbm:block/crane_ejector" +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/item/crane_inserter.json b/src/main/resources/assets/hbm/models/item/crane_inserter.json new file mode 100644 index 0000000000..1b27f3de9c --- /dev/null +++ b/src/main/resources/assets/hbm/models/item/crane_inserter.json @@ -0,0 +1,3 @@ +{ + "parent": "hbm:block/crane_inserter" +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/item/piston_electro.json b/src/main/resources/assets/hbm/models/item/piston_electro.json new file mode 100644 index 0000000000..8c8f93ae16 --- /dev/null +++ b/src/main/resources/assets/hbm/models/item/piston_electro.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "hbm:items/piston_electro" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/item/piston_hydraulic.json b/src/main/resources/assets/hbm/models/item/piston_hydraulic.json new file mode 100644 index 0000000000..3f4e92e6e9 --- /dev/null +++ b/src/main/resources/assets/hbm/models/item/piston_hydraulic.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "hbm:items/piston_hydraulic" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/item/piston_pneumatic.json b/src/main/resources/assets/hbm/models/item/piston_pneumatic.json new file mode 100644 index 0000000000..a671f68397 --- /dev/null +++ b/src/main/resources/assets/hbm/models/item/piston_pneumatic.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "hbm:items/piston_pneumatic" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/item/upgrade_ejector_1.json b/src/main/resources/assets/hbm/models/item/upgrade_ejector_1.json new file mode 100644 index 0000000000..5f8324c104 --- /dev/null +++ b/src/main/resources/assets/hbm/models/item/upgrade_ejector_1.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "hbm:items/upgrade_ejector_1" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/item/upgrade_ejector_2.json b/src/main/resources/assets/hbm/models/item/upgrade_ejector_2.json new file mode 100644 index 0000000000..a3462c4034 --- /dev/null +++ b/src/main/resources/assets/hbm/models/item/upgrade_ejector_2.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "hbm:items/upgrade_ejector_2" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/item/upgrade_ejector_3.json b/src/main/resources/assets/hbm/models/item/upgrade_ejector_3.json new file mode 100644 index 0000000000..7b5aa3893a --- /dev/null +++ b/src/main/resources/assets/hbm/models/item/upgrade_ejector_3.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "hbm:items/upgrade_ejector_3" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/item/upgrade_stack_1.json b/src/main/resources/assets/hbm/models/item/upgrade_stack_1.json new file mode 100644 index 0000000000..b2cbc4cf28 --- /dev/null +++ b/src/main/resources/assets/hbm/models/item/upgrade_stack_1.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "hbm:items/upgrade_stack_1" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/item/upgrade_stack_2.json b/src/main/resources/assets/hbm/models/item/upgrade_stack_2.json new file mode 100644 index 0000000000..f2c18ee8ae --- /dev/null +++ b/src/main/resources/assets/hbm/models/item/upgrade_stack_2.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "hbm:items/upgrade_stack_2" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/item/upgrade_stack_3.json b/src/main/resources/assets/hbm/models/item/upgrade_stack_3.json new file mode 100644 index 0000000000..322a2af5c9 --- /dev/null +++ b/src/main/resources/assets/hbm/models/item/upgrade_stack_3.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "hbm:items/upgrade_stack_3" + } +} \ No newline at end of file diff --git "a/src/main/resources/assets/hbm/models/item/\320\235\320\276\320\262\321\213\320\271 \321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271 \320\264\320\276\320\272\321\203\320\274\320\265\320\275\321\202.txt" "b/src/main/resources/assets/hbm/models/item/\320\235\320\276\320\262\321\213\320\271 \321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271 \320\264\320\276\320\272\321\203\320\274\320\265\320\275\321\202.txt" new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/main/resources/assets/hbm/textures/blocks/conveyor.png b/src/main/resources/assets/hbm/textures/blocks/conveyor.png index 07cda57ee2f05675799bdb4593733e1f623bbc1e..c9bd51ea5d40c124913e6aa7488270c3d25c6819 100644 GIT binary patch delta 351 zcmZo?dc!n9te%m9g_(hY!K3DNEs$a?4sv&5Sa(k5C6L3C?&#~tz_78O`%fY(kgpQp z6XKeYk#Vv^R#H+@O-;?z)b!3eO&=eh$jHdFv@{0?hoZ{7&j+NyKMB8wRq z_zrZuE9|u~y>^>B9|ICdP(U!a4PW{?A!D#OamVL?H zb1!bZFA|ZqD_xaEYVGDW-sVjPi2-72J<8m|$LeI&cupN^DNIQ`bYuPD7RSgL1{&PL rY^jNd7U=j$OljqWDXyQk<`3hnRqy9Nk1N8kFmMbCWoVE?7g1LwQ4P{wo4FC`k3h#YQ2bbG|5OM-BMy$184MW|vj@{nB zHUNHZ@ve&q24$cOl!1sa1E|;8+b7TT5wu2SpbSQ0PyjU@T<;Yz#`Kc4_Tvt9*E$YI z{vd+Zs0@_BNDQ9;gH5(Kd8Ut`H7WyTFcO0YS2YPsZd>{E00000NkvXXu0mjfp`l>U diff --git a/src/main/resources/assets/hbm/textures/blocks/conveyor.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/conveyor.png.mcmeta index d7b41bbd3d..9426ea7c63 100644 --- a/src/main/resources/assets/hbm/textures/blocks/conveyor.png.mcmeta +++ b/src/main/resources/assets/hbm/textures/blocks/conveyor.png.mcmeta @@ -1,3 +1,5 @@ { - "animation": { } + "animation": { + "frametime": 2 + } } diff --git a/src/main/resources/assets/hbm/textures/blocks/conveyor_express.png b/src/main/resources/assets/hbm/textures/blocks/conveyor_express.png new file mode 100644 index 0000000000000000000000000000000000000000..df5c9a664bf705b75409371b676cbc4110338757 GIT binary patch literal 921 zcmV;K17`e*P)EK|00004b3#c}2nYxW zd5Z5?`l~!1pfE}68S}+LMNx{r&MaiiG10#_@}aQ5H%q!GwhXJ=>MKYe)3 zyKyeo>}EXUYE#sIU~jIY4%{;&-& zI7k2}%aSxr+1uMANs=|k#bQBKRn&D&p63h?-vA4CcK3(eUrh1dQxpZU$rS;twODHb zm`o-N4ic90n>GUg=Nxx;cVW%qELoIgi7_V3kFMVXtTeFJlIQu88N_qmd%j-Xwi+zw zP0--{{G2pR$+8UZeQ-*W_VcY8#L(*ED#%_BiLbyu93S*j5km+|KU) zkml-^BWpvdqWZ6N_$C2F#3V_WOeUmh%6L4+ITv*3YGAG9@!GFM6gxdV4dZyr;<;{C zp%Tloq%6xd=U;KrTpavDT^6jhVM$q*0q`HNoHwgoh&AxOeJ>hFHdR&O zoWolCvkq=r4VtT40P;NF*v5D_vMdXAAU*?Gg7<#I8Cpi1a~NaRfEt~=U5O|sDohH~ z3x+8aQoR0n-J*QFr1qS5s{nuY$5pP>g~xlpQApcNVN#eBrrva_10ZaP^a9Sg4Kc-x zF(gUC=;ZCHkQ63`Np?Z9c!4nWpi><{yN$Bm?lCSRajff_`-^F-fx@IPp)f&zI@P#8 z*oLx<#Zh2d&L0#eg-KzGGw4C5DkdyEMdNrp23i^$sYKBLltxe*mBwe?>b4p@V2oM& zKQNt6HH<-B2Zas+${>Bo-UEV`yJDNI2Fc-b(?3D37v9qjH8 zLm`RDJ%pz$4z4gMObSzPI@JNJo-GoS^yMY*XR}!dcz@CUpHP?-CWVQ05ub6VDjyU@ z5th&`Ww~lqRX|Ja7cFHi<^NYHYoGWVe%j*al_lNSIX-sBfWm~rq%ifTPh8F$hKGLv zFr7{}bPzGqG^MWVa3A8^K?2+;ObXK~z)OcoH0VL68mr!Q5{u^pji4~ei3*d#^t?OO v!A5x6N{h`Hv-LY-Id2pug$aeJH=XJa5dQ-mcLDsZ00000NkvXXu0mjfO?IV0 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/conveyor_express.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/conveyor_express.png.mcmeta new file mode 100644 index 0000000000..bb8d631876 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/conveyor_express.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 1 + } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/conveyor_side.png b/src/main/resources/assets/hbm/textures/blocks/conveyor_side.png new file mode 100644 index 0000000000000000000000000000000000000000..5c9e30131e5f48b9c2474cc5d0adfae04dacfcf2 GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^0zmA*!3HFSYrjteQjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`ISV`@iy0XB4ude`@%$AjK*4rT7srqY_qWq7avo6NaXJ5pf$xDp--8u- zk9q!CHc8)D_GS0fCGtz}FmpO~Ja_LawtQ}R%z=Y(R@anEYqp*XI>k~j?`oXfccYbC z+wNH>^&GdIRvq}j<>2HqyS+~M8@xYM#(PQGdhJ){!1u0Q*Z7}smw78ck)Kh1@E!XZ l_Ldr!XUxx-o#L2oFjldw2~+abFa$b@!PC{xWt~$(695LfSoZ(` literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/conveyor_side.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/conveyor_side.png.mcmeta new file mode 100644 index 0000000000..bb8d631876 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/conveyor_side.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 1 + } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_in.png b/src/main/resources/assets/hbm/textures/blocks/crane_in.png new file mode 100644 index 0000000000000000000000000000000000000000..98f5652c1750e14d588c201873832984bb1d6e68 GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfjLe=QDV^`njxgN@xNAj-X{i literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_in_side_down.png b/src/main/resources/assets/hbm/textures/blocks/crane_in_side_down.png new file mode 100644 index 0000000000000000000000000000000000000000..9057604d062747565453a9bcac0e20cece7613ae GIT binary patch literal 421 zcmV;W0b2fvP)S5P-j}1&!B2X+e4vL{#Wo^i3?i_2eV?0JimYdJ#N` z3X15tkT$eElu(kz?08tSZqf*X14DLZXTJH#s^M@b{6p#h-EOzw6cP9J&$%e2h@yxv z3@rd)xm>ygKhXz?2udmEPt()_Hk%CqT5F6kmDQ^NZUkctS(agpsqCT(ptUXna{X-# zzq35n0g@zf7hxC{68#RE%_e~B)&a^@KdvS=a0`2f77}#eY;?nXK6i0(98=5N%d58A zZH}+|1Ra~4ZEbRIJYum}P?lPG;{dHzi=+OfgY?EDSGg>11f|pt8j7z6cF+mU{;_QAQeXH&R;&i~T;zI?tSU^RZU z>f4)#A3M53W>b4sgTX)=jRsolo%dgU3;qZq!g{^7OI)p1#Bsc{;lIcih6-U&tjwHm P00000NkvXXu0mjf`Q*5u literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_in_side_down_turn_left.png b/src/main/resources/assets/hbm/textures/blocks/crane_in_side_down_turn_left.png new file mode 100644 index 0000000000000000000000000000000000000000..ecbed86c18a44d4b6b96bc955dc8ba8b74af3c14 GIT binary patch literal 496 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0fk9KK~y+Tm65+n z!%!5)Z<2yWEFId}St%&=EgThn2X0-E;1_Myu6Q|A96%8jXCVRGOv|3zDUkVHmFKI*yYYhQpzV1R{bY zNkT*o$n^VtlaJ?lL{h%*kH_O)uNMSC6h+hNG>&89WHR~6fJ__MW;UCJVaR5V^ZB}e zL}`+!fd~Lw{1^nN-@C_T03JZ!@(U-Ce2Et;dsixztAms9P0a#D5%LggNhODSwOWl9 z#Gosn1`tsrB7%a50C32>B^IO6X#1?Qys8yD=k2Z2wq{Dz>vbW5Ulj&}!DhE(ujn6e zJUAJVUe9513FUGbMwgalG1iTzU9QD6O*lO;VmY)-@>c~R#bhK|+?qf$+qQ!{zaRDsOx)8RQj?IKW0oR|5iT*_il3TUTOm{n$2dlTIFQY04N9$ muFK9RsSTt!TqgJnN__+6R$*}{Z8A#$00003d4O{4$r>%y)1oO z#M`pj|Cr58X8TSS)Lg2vu2XMvYNVq8PrGw6$Ke1MCc&95nk$xGdjCE5k4s?7jMSS& zJ6&SdhAHfgB4fFJ z!`sUaZfWT#R-4TEZS~cxj)2GB3-!diLK}EJ5*(U15-b?Xm9iZ6-MV$4^YyNi%6wjL zneEor95o8H2}?hJW;_4P-{vLXkF;F59rkaLWZ<6z=V!TpZ)4w{!>}f7b!+x9d#38w zs>YKXEaX>LAIr&c;1plOTHp9Wn)gkdp;}7TVPHJ*rABzB`T8NS%Lg50X`wFMMXtRmMmGkc=4h|ixw_ixM0D8?(Xgh6DIWc_xJVn_4fAm^z?Lf zb#-=jW@l$ln>MYnu`x3EIvNo=RZSRTU$#@OG86LNl8g*X(`YZoSdBhZ*u;>!3YHZ zt~30(%JAz7!;ec0PYyDyoy73}Ci|E344=+2ygJ5ES65e2QBhb}$mMm>2BfpVBeIx* zf$tCqGm2_>H2?*Vd%8G=XauL8$;>}wz|)Y}|5d`|ZPCO@Y+i0s3+^4=Sorq;|Mfc` zonEqclIrV;IX~_*n@ZWLdCpqqY3A_HWS)rY#Ep{-!x(Lz|D3_CX!+brlgaX8aH5Yb z$9$nPMz=d|NxZyMb5UqRkZH4k&a`<8Y6^P=N|Y)uuVZSsmRFJJqyAoC@$Bw%SLVjt zKj^map~|IWOYgI-Saa86tC&&N-ERU6@%Qi9e<*I>VXq*!pJ9Kd{oIUm9n+PaO7~X2 z4-dJY|FFF-~=2TmaYT}|C9{wiM3b6R1ja_oKDp{u(D`QH|#J)5($ zIDgK;1cm>NhF_}oS_x~O4qB`l8Yy$Ub5Vxf{OfHubC%^wajo8bVv`P!^Ykp4s?4gaBrE5+pW1k2k;WyHzh+M=*X=!;)cEVKYuDB}?CxvB zx_7ze9yrBNwC-p^X#QI+7XRIM!%Q9SJUE}=y8QA@>2E6&4i{V4wdzmz&Rf%@;`wT7 z2bYbDE#sOn?JELT)UHp>VVYrXDYx>MdYyEM>)KVboVP4(c&)@+8!L3Z)N=3bx2HC| z|83{`%`r=V0o&&I%{OE28|jvQUwv8a$I?WdNq4396({_--5PUOQt9dAvVQ@F6Q3OW zqtm}WTP{|Lxu8kmLF$hmXVyhY=P!u)t~ks6utO*NI+l9JC)~~xy*6GsA`$?M1-{e> d&op0O1}z|)1BgN3Qt)ID<>~6@vd$@?2>>l(%l7~P literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_in_side_right_turn_down.png b/src/main/resources/assets/hbm/textures/blocks/crane_in_side_right_turn_down.png new file mode 100644 index 0000000000000000000000000000000000000000..fb2fca3ffb5f0a2a91f5716068b47d41691d52c0 GIT binary patch literal 530 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBuf-vKbiP>*~8hSll978Pprv}=39}W=N>)9-|Fm~4zv0Ysp ze0Tq_>+v=1-YwYvZ(3G;TXXZ|=I#dyS{jQKB1EGu@q2m9o}pGb@Ao_7zDEo1%&UI4 zbLabg>058-{^H-U@M_k~9uG~`jS5j}r#IEyfB*gWvP2W9PEQ53$r`NNHTK4xKNc^* z(y>VCT-xSv-s`2Z#~XiqWiB}P+2;Hv9Z#WxBL@>clw8qWdx`tvyGV5&XP${dO8ySb z3uf?{PdIDorRf{&vgD4y@r^4OqD>y$+x;RzY9EuV`vfiX4{=fx3iuyQQ`{QGyGT>J z_3=#E9Ud+3Yv+_KF4uZF@A6#djtJ&m5)Jn`6~0#OeJQ)c*O-yz-NS+vbJ># z>&9&R=$_rXp5w_e%zX+CYg@v#r=L!U;NIR>v@|HvD*krW?fHJoJsOWDDSEpH9+}?3 zKI?v>OV0YwbN+BfPu$$drOJOM+-zoj+@-I!!a?Uxzg(Q=@=*6bm)sqRckzYH36=B0 z*M@!U+Qb)Q1Zd*k~5G4tKnmaC<-bV`9@$!wj|Tulc)+XzSKO-~Z)I4Ro6x9Z+N|H@#lZ;^#NwHW|4j8lyOr| z^5y5BCIQo)mL2Vyc);eW>+-vKi}y#Z-DZ5@5101TQ@>c>?kHJsz0E>&>P`QX(y#YA zUwdb3yKj?%=`G*;Ta~)z{S1Eb;pB@4jm!;CE%@&7{o}h4t^d*4g<(;uih>FVdQ&MBb@0IHJIRsaA1 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_in_side_turn_left.png b/src/main/resources/assets/hbm/textures/blocks/crane_in_side_turn_left.png new file mode 100644 index 0000000000000000000000000000000000000000..9af7098f4cc2dd5c85eef1ccf30db816f7d60f7e GIT binary patch literal 517 zcmV+g0{Z=lP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0h&ofK~y+TrBc00 z!%!GKX#*NNwnHaJK?H}sg{$}y8mCS^f)8M;4O#ig?~T{8jZ#*ETB~3$%sH9g~4Djm=~CZ z1a+S0GP0N?y4@~H6hRQk1Q)_E#Aq}^r_(_cMHr9Am`uq5^@LidR=y|R4TZ14-vlu zSp<~VBxkNSj`vZk)udaJ$CVCPOcG`>N5a%Pm!yHsN!`wHIK=LG3l|5j80}r1$h?MM z^=E2Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0hmcdK~y+TrBbm@ z!$1sm5?Tmi>&^^{#L%x`VdE#DOr7`;pr64PFt8voAV2~kkUA7nwN0y5N~0uAlN^1% zIt>B_#FLzRzO!F!-x1rsYHL;etz%UH*Jdb+4-b!FJ8WjoUM4-Hf zWI?CXArr*+ecnitgl4lDuk-nwdAr@_^(O;ZAkTBkvW%wFDTQH3Q53Pcu1jyHE$Vi= zMMX$Nd>qH@7Xq+KrNXTYheI~O$3=_#wJeMMG)*}kSi=Wu_(Q+n=Ram4k+sR^%%gWL zLdQo`tJSz#5#S1BK#t>lO9mGaoMVU*9|VD}K-7T4tFtB3xI8$atsSEM^D`Qc$7GuP z&jMd6m`o-d1VcN3y{(f6g8}=$3IM1?c(qz(Atd9`0CIhZD`tQVBuO$1LxN%2k_^Zr zDhpso*|tsL16WMvuC6G5LEz$=9FC*pN&6dn+IO#sZXY#Q>UCYE&xG39f_rUc-@jY= z-VLdR0CS_!Xeit*p0D%|lsOoxxa|H;BIqr*0anO%L^Yw-S>)Dfa zKTjWj^W+{gy|b~1qR4bQ9h6c#|KB(NdQOYgYGp-SE|+9kwxjT0>>JW0bz9V!RpI~u N002ovPDHLkV1i7ou(JRF literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_in_side_up_turn_left.png b/src/main/resources/assets/hbm/textures/blocks/crane_in_side_up_turn_left.png new file mode 100644 index 0000000000000000000000000000000000000000..763c68afcb43742678492bca845eddfc1f256d05 GIT binary patch literal 507 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sEXgD|57Yp@DXLz$EqdRZE-$5`UbVupYNS}6Lh#V z_80#R0|}llT`O{ z7r*UJtZ(Sy-Fs!+Cl^+&FUEiAVt0M8}0t*3=v+S}m!X+I{x3@k2Z0RPzTs~p)!i0GncAd0jk`-i} zkSbX&@VaWR-G0e?*3%_kKFT}c#Cm4g%tQN_XRQmb22Wb_i4++&S zp{WX;f-Di=3T96Vs(QCMLZ?7|5!;j1rEGCCmd)IsuzFMZs&CSZeQIZ4y(;~AvGKEu z%(i=t7JmD@p)R~fqx#wM$1goT|Cq?z@X(?!HS&jhLVoBacOj1F+p^N;^zwQNS%Lg50X`wFMMXtRmMmGkc=4h|ixw_ixM0D8?(Xgh6DIWc_xJVn_4fAm^z?Lf zb#-=jW@l$ln>MYzy}h-yH8V4_rKP30xw)ySY08u-H8nLp{~2m)Ya1IItE;OgO`7Cz zox%AbLw$XHWo2bmRaJR;c}GV_Sy@?pe0*D5TU}jUNl8gVLqln4DbOLDoSgq}a{j-; z2n7GGGyJ*A@aqc0k4p?s4l=Br#PI(n`t~@QBhb}m?JRp4MG07o_Q`KxqYHjq|{{R2?$1IPx zdVF)QarOE3*8edE-A7X=Ey``-tbUenzArlXyZ}7 z-c4m^ADJD#r?`vnYJ!=L%fjmCRdOba(*y5h>g}1EXMUR@AT-SQ&g;oDmR&otVs6+g zl~*UDmQLwQv;7s@uqpG~@5BznS!Ht+8SdKK*j@b0eet#Q#fP#ln%_U3_}TMIse;Di z?ceK8pZUyJ_rqQC9LGa(w*?Y;x1aR30zJi-8sVAd>&u`8WOD#92wV!D45B<;{an^L HB{Ts5D+Jw3 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_in_top.png b/src/main/resources/assets/hbm/textures/blocks/crane_in_top.png new file mode 100644 index 0000000000000000000000000000000000000000..8b73aaf19fef571f453d12f82b916297b6d139a0 GIT binary patch literal 425 zcmV;a0apHrP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TE}W)z6-EKoqf{(v_L+nx2mp z$MHu002_p1`1O0iwp~0CwH8>GMOl_nnx?x!Q52>?7Xo?=#eyVB$cCuvng_;lq+u91 zivEcJ8?5U}%d&99Du}HP+HfmLfbZ{a?U)@904AMn;4X3X;@X&fk6;(j&uuL z)=wP)CztrNlaTIZ9|eG#Z_=|5FA7o zzXtz-u7azAASi-}o4a3&NIcgH710}R&cl1}dpLOmp@ePbz1mU87koE05!YsB=d{Qp z^|TXZgihV`oUvpw!N2S6ni^HF`c$v~@BO(N7cI|(ntI_O({X)anTEu&?C`xcR8KAYgN+|-=G?q+k8mt+m(1^Z)R#o9!t|8X zcG(?xq?jO%hCzuXY<&8p79_L3ef?j)Ns8hzPj1i|}$5PTd!_zq4BRew=(8h#ahqpHPrp?MXK&#IcS z1t)9JcI)V_{w0NFhcX#>I)bKIXt{)j`ASyb=N#TZdPRQG1#Is?x7=@D_ykeoXfMH= zVGd00BTrL_t(2&y`Y3PJ}=ZZIG2QA%Qy>6L#Ff zr4uiq?pPU5-~ncw%sDi1<=Q*Uaxg;pEeIJt3iz5gX&c>WC3LEa_v&v1K_LDk7Czti zl|7ClU!~A*7)FvLQ50FUvn(4mQRHD5@EViA)3&W7lx4{nP1ES%;UPya$;1a&-}iN0 ze@qgFAxuC&Cm{gBaHg^uJBr@7w`tIB;Y<({vmM3UYoE zShQ{1uXmezC;GiW5((OiqhoP;f91L^F;!I^N@ABp1B4f%l%GwLT@=OQX?1cYy_YY` zi^nAqp6AULhtaCR$8miAuzJ3}p-xWMb!Y%h<304CreRrDnx^2SSxQ|EaCRE{Y9TlQ z<>C6c<{1I|Vn&_JO*8q705l5Kp}%iYO;Qr_Jja0lc-~(^zCrx56djlV0000)=wP)CztrNlaTIZ9|eG#Z_=|5FA7o zzXtz-u7azAASi-}o4a3&NIcgH710}R&cl1}dpLOmp@ePbz1mU87koE05!YsB=d{Qp z^|TXZgihV`oUvpw!N2S6ni^HF`c$v~@BO(N7cI|(ntI_O({X)anTEu&?C`xcR8KAYgN+|-=G?q+k8mt+m(1^Z)R#o9!t|8X zcG(?xq?jO%hCzuXY<&8p79_L3ef?j)Ns8hzPj1i|}$5PTd!_zq4BRew=(8h#ahqpHPrp?MXK&#IcS z1t)9JcI)V_{w0NFhcX#>I)bKIXt{)j`ASyb=N#TZdPRQG1#Is?x7=@D_ykeoXfMH= zVGd00BHnL_t(2&y`X;PK8hu5|Mfj$=d} z&We65*f1_%LZduCS(XJtUDr!W%-(UFEgJ?k@XNZjZCfNB-u=f9AI8m{u#2K#8`hK% z0B2d2u(ZU)YWoGoc5&z_Dxx zw+PT?@OEP6DI2;9z{Xx|slRtoc2WrPJV%57xZXdpAW<$8SW%7u0000M4u`J96}dYTqZ0#(fItskpi$qiyYB?4 z)IF&SDEhun{6iApcDo&lDW$U3-&sNkrfFgv$2$OEp66nyjWsBxgb2W z!|>7AUDq8W#25)70HC#gX;w-RW5hXk1jHCi(=&)t3V?mzOTPrzw(XGl5hR-dLI?%$ z1zZj-%NT<(=2Fl7TI-((f0fL{M{1hpb3lE+aLjyGedy9!%Xx}d<_qAr=CcaGdr#Z8 zmuYgmTsyxR3E;iQId?JEs(-2&W7$i9Wm(=n;b-~=@_xsC)E6FVHkTh%ewp@E|HE z;#CT1L)$|LC0Xo_hwZMLw1VKkke%6?|Nm#QYCIkb|F9-Nzu&JUMZ|x@vooa>X_}HG zi3I>yE|+(FO;p92iUa!a1 za9C+R0j5#JVzHoZjrzs`y4^0 zTw|E411LaRtrnYSKnfb?yP|h62AUUEk$$!D@uiJtckuAy{?f;he7zxHJ%6$u#@XXf zoZcg|J9}26(Ma0uHd^bw_a9n)1QB7qUfU(ERx9#6-`ntC>>Hs5VxWSBnLq#l002ov JPDHLkV1l4Kw*>$I literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_out_side_down_turn_left.png b/src/main/resources/assets/hbm/textures/blocks/crane_out_side_down_turn_left.png new file mode 100644 index 0000000000000000000000000000000000000000..760f1c1f34839998da3280ee8aed12bad08caa87 GIT binary patch literal 513 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sEXgD|57Yp@DXLyf14V~B*!iEVY8B!&#Yyvjt_p)ZAl@DwUZxn9iL zD%F3yP)6Nz)6JZ1w{!Q#{lCX(WcH-8ul;LPZ_2*^rG_$#OqwF6EzQ(oV$iJPWm>_0 zSWt<<=0J*3q~7$3CQ0>2HqN{6y1jE-ocO&;-o^0Z#!nnO-;~Whs}{v@!8kmi`Qw7A zQtAPMf(%O;w-!X|h+SV-y-LKqulT7&*QCr@PAt`;7d{>+^}oVwVN-DGj;P7)ZPs)7 zB&KzoJ#;f`>$1z5N)PsMvGVjvKKuMLj#cr;BBebP0l+XkKI&jA- literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_out_side_down_turn_right.png b/src/main/resources/assets/hbm/textures/blocks/crane_out_side_down_turn_right.png new file mode 100644 index 0000000000000000000000000000000000000000..e9bd8e35259c231abea4f7d047508565d1d2a61d GIT binary patch literal 519 zcmV+i0{H!jP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0fI?HK~y+Tm6FX) z!cY)}rv;+8gbgd#nkFuID`dyY2dVZ!T)S{%;=-tj#<(B>Q^Jn~l0qs!rS+S8D;PG$ z6FQukduHy;v`(wllK(&x>h*f=iDX%3?UtCZIF2(Kjr#q5o-iJdt;oWPawp4B+eo+D zb@_{;2)kOXmdhn}ya^7fEt5wu=F`v)%1~XXZ zdETBH`yoP{p{*uQAREUh71zFh#EG6$Ya&h>D1~5g8@y_%%$%SheKxj zouD(&BA2pF^?z1gsZ@AV)Ux+80AL?3E89l52kZp3&9o&D0CjoF<#PN)XAAdK+e_a# zmZGQX)r<1OGv(o}+&?Rk?EN5lHB4mwsJ|_b9&$dq(*)o&n@wimi=ehS+I?`qa=q5{ z%*Hf<5DPYfzaa7rDTGmpUaP#;0000EWmrjOO-%qQ00008000000002eQ*~8k#&^978Pprv@5&9}W=MXTlnsIjtl^{dv~| zffxNPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!2kdb!2!6DYwZ940dGk}K~y+Tm66R# z!%z@~C!tj9w$Rdzdnvf+WB4X%z(rR+f)7y5^SBXQhzg3ha8Z%|WKn2H+nA=t@7@Ww z>P9@Y!?`o(%$+;&27`h82gcCr^{SIdS(X|dv1#!sXaIL~G?8lyfSD{?5(55so5t!hBB#@}qjf?7Wa$eczIo{QlS z&YksoT?J{HRwEGstLSt(5WNAQR)SiIF}MTU;Kj6uGZ>&Zfc!S-h?=Fndj=T=TnDM? zb~*UIuOpoYLATo_IiJswl2nfx%olAm8moJ{W&V-9?HRw+j79QC!}pI3f4`EO2ScQM z*(;tb6G`vP&++88;_1|89_W|WP50N2_ffNh2g1;d01?LPqk=GVM q_y7O^4rN$LW=%~1DgXcg2mk;800000(o>TF0000DH-?{LzWQ}`DPhhkV=j6v0fg-+Y!nY0PpWo`S(Dj-j+f^ya{^O#59$Bd^C_1@63II9C@aa{H~>X`_N0FH5S#+Sm&^^qLerg*r00riorypmB9;m1b&5rRrzf|l|BHC7=v&5i@ z>CVyBS6`PJta-XiuPSTntGjuH`hxshs+wG)ER*Iw;&q=?-ouls zf9AXYjQabR{u&D#$yfheZLsLc#Ql?w^G|axzr$d$@4dMc@18|@OjB3_&TT5%*?qK0 zTHp|?_rZ9DUyPh_7AC2e7=(e*!*~8VWsK978Pprv{$(I_w~_SD0n(ZHHMU597G> zK1nvo2L;EJJZ%^GtoWD7yoo!|QBYh@%W3k362VIXmrXw2**W>v+zO5D>F?$g%L|*% z^m$>Q(ER@QGnXsd)*g|)m>J}y>bWUGrzde|OqYj(QgKG~3RUCz=XL+2Mz%$ShF*N= z%$%|}PPwkUp@-M^a?bW>7sg+4?GJq=tooFBZz1H72(zU+r=; zVT;(huk*1)>q0xXX)jt{7;*giYqu_iMWr%xNr1Gq2Ybr;Ljv<|mT>7wN-%_&C_A3Y zTWWKjc_LrKith*6Rvg{H&r@b7w|iaoIoTe^MGP_59H!X3U*5Qwt0}=iq9NBzx~C=k z^rjD+4nGt)c{Qu`dArE^7THTCPyKJa{@SHJMQd$v?0eqmi;S;VRwdSz9Q*Tn+PnEP z1Af;<{ZA`KNb$ o^Ik{gGy-FUFEzq5&DWPf3&`dGVi33#JQ+lJy85}Sb4q9e072r)ng9R* literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_out_side_turn_left.png b/src/main/resources/assets/hbm/textures/blocks/crane_out_side_turn_left.png new file mode 100644 index 0000000000000000000000000000000000000000..86e9062ee265e1e90f90107531e7867900665180 GIT binary patch literal 519 zcmV+i0{H!jP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0h~!hK~y+TrBY2# z!axvxEhUN^frOKHW8#5-h2_M_pWqMR!~fwg@M7Y@sENjS;D9j}3gJ*nfl|8irfk{7 zlkp`lJF_$Mc6N5HcDt?c4~Rgc(b&5gl*%-@nzn{zS@3-yp649|rqgL&U=|YQ9*Z@G z!y#-MK@i9WgJBqAu~=X*7$AxwtX3;*HXCfWTNH~$tk>(Dgb1W*DhbQwQcm%_Z(Q~J z(jsF?k|2&_DWFeMn8*b*S={U2NRXfiIU0>HpU)+Sf?NriLA_p=lgs5Y+*S*pyFj$# ziKHCt>t++xYE`-=d0pv14~Q^}xe}(Wb4dzF2en#Ff*e+*Qo*I`iqLJRBl{Y>2BA9` zkH^0|U{bH!#i@9iPjU`so`%im&;bs{aU4u06A|IxpkF8yVB2z5K17oE)q%G8)0j-^ z82^d+kqCOKR4O5QrnQ27mWibAJPmNpB@gjy<{w{V{?{Gw@RHd|eH^Le4Ln8|K4moh z;PK%5_fR_lu`Sni6(`T1rduUUo6x>=x4+hGHiHN-z&HInfFHw|b(+H4cj5p5002ov JPDHLkV1mlF;gSFV literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_out_side_turn_right.png b/src/main/resources/assets/hbm/textures/blocks/crane_out_side_turn_right.png new file mode 100644 index 0000000000000000000000000000000000000000..12e34959f6304f488238bfc994a6d1797367d764 GIT binary patch literal 515 zcmV+e0{s1nP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0hmcdK~y+TrBcCa z!axw6#A<7AB7&#hOP~k;qaR}R-Y3h=%KWQmePZuC89=Ah#|%pv(1}z))c&y zK6vcR?!1}V*|j>Ij-r2n6Eqr)y{n;=&WSZ|3oOeb&+}+J9v>3S=W`>-3xWI|#Dd{) zNHz@L_jx0ZW7=#syl%H!w)_1)ug3^*f;3HOx7*QbwW2T#X}w-EUDu`CUXMnjk?9CR z#79xYzDWQUi$%W5Y&K&G?z1GgZ=q0NKS>gf2Y3ecdYvl_1_Q1bW(VhdOvb**c++fB zwOTbD2SK1akO4W4b5xA=J0s39M2SZN?x0qyWyiX;N~OZK;JV%B>UZ5PEfx!|j3Hy4 zPN%;+0G7)ob26E*FJc4(w#^a)lK_xm!Y`FdToGb?8bF>;;s6^P5Qq>&dmyePVn9Ao zJ^^-Axm>336;?#{rS2&GL?F?L!*LY9Yya#@`|bnL)0?)H`Z`s~2jL#f;6*d<`_Bj8 zdnA=5VB2c7S_*HA$)d6#Zv*0Ucl+yNMw|c#c+Sl1ZAf1HORU(WruibxJ7* z@S_8)Rx755=8J<+m%v?;Fc=JITBo_=IF7lW%}xq=5+H=AP2uCFct;|ZW!buSZ&4K0 zcHaaDz;?S`b}xV}h^`JrA7Bi0u3e*kbNTs=%NKKaeD%=JGyDCH1?TG7d6?%_&l%0cDr>VZZ;c~Qb!8^#eM*rl5J_6C){-a0000BePuq literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_out_side_up_turn_left.png b/src/main/resources/assets/hbm/textures/blocks/crane_out_side_up_turn_left.png new file mode 100644 index 0000000000000000000000000000000000000000..3a5c6636e786a5ef655616f16d07fe3025796a38 GIT binary patch literal 500 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sEXgD|57Yp@DXL%yerV~B3O6#lnNx zjxifPIj*V|n17(RlY6n6RO!K{WeytloW8+aBCpKLXKgYxoVVrhPUGiyW>$A!fB*fd zeSq`w%PYf_QX`|*bb5C`uPl`DSDSpwVE%dE6obI68s1l?N%FPx)=g4T%-eqZY?`wS z58H(JMjzhx!-@OvZ$7t4hv)Eag^ooTd*k}u7JsZb^Nqt{-g9^61_Oy#0&1Hgbn==W zSaEy^(Cs>8qP{0WatiapA3~Pmj_xK~Zohq5a*8AE0$-UCm$={Dog7(7OcR!^EHikW zwRP9mzj^DAdwk#behOFG>KTVOGW$+HttzKo@VX(fZ1>z$o~Z|w4jlgG5*|7sg@ySv z+xAS&<=5>t-|VqAG~KX1OuFP^j@jn$ZKtHC=k51DRdgxr>$ljSH>ZAj;W+Q!6px>^ zQ8gB7llHv`{`_R;qmPTF8m_-Bi(V`CpW|EE(pMgAk8fQ&d*Tc{r~^~ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_out_side_up_turn_right.png b/src/main/resources/assets/hbm/textures/blocks/crane_out_side_up_turn_right.png new file mode 100644 index 0000000000000000000000000000000000000000..18271a72f6260f0ab2f4adb1a9a405d9f40c7cc7 GIT binary patch literal 525 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sEXgD|57Yp@DXLx-n}V~BV3!Yz!&awCu(9QuNTvVX=U4J_*R$INx1yaoUR>>b5$8&*j&5SK zY_8fEks#s8+R7Ms{p%~a3k#*^Y)a};NMJ6Kn6SdkavytwdaC@-?4^yuI*EVV+zOx0 z*_|41v24}JS5KOE79PA)z2teh+LU_v<@37)UDyAaVpF48@!<%YL-zLDU#n!fk8Qsi zSg6`qkhePR*xefqLSk!J>Kk9M->ZmkvbVj?4U8zh)CkWsUtb0-Ae#e-LEuvGWDw=) L>gTe~DWM4fz|_%A literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_out_top.png b/src/main/resources/assets/hbm/textures/blocks/crane_out_top.png new file mode 100644 index 0000000000000000000000000000000000000000..868a3a856eab0cbb70bba3dc8d27d3b75cecdfd2 GIT binary patch literal 420 zcmV;V0bBlwP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TNg28_TlfHXX;|7^xPp z@R0$@DKDoJ+c*9ay)S%N_V(YrTwIIo^>(b-luuHyMh-4YI1`CLy!1sN6T14&_ zAIY!ZBm?{oJkR6%9fsk$y~4I_wmKOHVFqBDrew-}>MF!p=O3D)mbQHUYdmw4jOm77I%08Z3Yy2oW$ O0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D38_g$K~z{rb(d>z z99J2~|L4qgulCxzw&U2jIZ5Lt6sc4t5QIu85ki#EN|A_~N)>PV5z0#>UbK9RszSU0 z+IPG_;**fZC^yGmd%fPv+-DB|XJ&0SAxtu!-JLmSp7UIO&;O`zKHN4zFacoTcrIMm zg=0C;wnmW^&<0Svt1N}_@wmJyqfqdlr7WlipZ}JRfDdL+wgtnZl4(6zwLCX;9v7AgebJdp`E#0=sdJBh;{U`E{gz2iBeMUH^UmXbh*bh=e9L zIt{F>E}+wEVr9LHX3K-!Y(Tj+E>Y8b7oqlGjt7`1-b=KN-N_U;91G35gT+N3-6adR z-+hbzsQjSUuHtWh`8(VqLzLxE;{>VWqKFu!Z+9LtbT%AL&}jPTEYxxPy&uqTAsx$8 zMF{#k_~71MoLOB$v*E+@T?CUcT*gLkZ*5`w!dZq-!S`qdP1Z(2SG`@5z$+q}uF!6J zsPP%c(zyBE8)#abU~g{^!@&`wC+R}RIu3HBk#lJom=8SVps{6+l%IIn+4+`pa{^s& zB4T1Nmb|49#4%#+BhhsvR;~OjryLnGQ!)E;8dvyrWc;k3_xm^+O_+IxSr;RiCaCu= zqSigf>v=SL)zxJZO?ZDArpVI_Py0tWm_$&2{P@?#wq4X)HiqL7Ha8a0>n)TKsn_de zN`r&@qZp&T0d}4ZF&q^L!zq&7hWf)tcg(@ynCr^WXf)7jF&Z@&t(sk~+4e13mM{Yi zCexHJ37O6csVOj)Fy^eh1OBMJCZ>r&|2W2QQsC)fjK}>Dk9Nn{J&5sq5aEFLqQc@} z78iY17TBjZud+tyX`1RX7YZwf&z#p1B5^nEmm-QYsXo?7k%Rx~ZkDs(hWgXpx6CAr z#K-W-0?T7kSuThJKFB|cWiDmR3Z4!F@<0-lQPZ5zuqq#X{s}G7B@blH6%!noEGKZka5ucpwuA2ejf1*0HQp5{oHRMT33ff)1tc13gm=QkRqW)wsOnslfy~H1J@@Hme)!i92aiI zgIwX5Zya#;$I}T8>FYinxW@?X)BVrFqU6D)t!<=U2fE%~#O`2(+@a?Q4sT%*cEiQ; znGQBCZ(wPyjit?1wAQ-F92+V9WVKq@9}JOMzVJX}ZyKOCA8`>O*BtT6BzpV+_dfXuE4?=A zw9a>(k_Qg6QD2|qfz-M{MF!3vo)Hq0z`_PD!)2&{_{NL}&z|q&=uli%9kw(S@*pD* za(Z2^a!A?=3mE(|#5+4Xu((963CvhAqj;OEW6I|IP7b_u%A}G|mcZsk9vqZB$a2Ff zixG|^tZ!`LEYJC?EiWf{9C03b@c3ZHgD*aQ-#B)SYj<%p8J1jFUT(lAI5pQ@n$4UW zg*hhsBaB$uM`KB@kUXGOFY}<$cF^G9Gz;0{95}8*6cXnNtJSKL2UAi>v2*=D9t?#C z8N$@&cg?n@5N0;w+`-`}s(3*B6>Nue;j4IH$O9Ho$%ASM!h@8}Rm%H>2Xfec^Hn@> z;aLn_#S$JQv2B@IY>CU%y)NKumX-u7ycZtIc>o8YfIJku*|F zyMqAfXr>QVdh4w1*Ge8dnPwOW4`{{_)9uml7z484AdS(F6JAmB;1GVr1L_0qH`^r- zGBy|CfkQ!IGxnXXkIi#EEG~IiT3JA&yMUB+FwcYBp6LVOL6>W7u$dV8VzHIu_D|km z00iC!OY2+s^Vk1?BRm*Z8bNrFC5*&84;l@pgvw9fc@tJXhAn3?L4WsO_~7m@vD9gz zUUT4i4yJ5_B@aX&TsyyB^1ydBnyd-CV7&QuIW!+~^JqqE!wKL6#OTJecVN)o8Ka$-=VNX*N;npHdSL;XGrebwsd;L6X=O z2a7Cxfd^7yQXoM@2eI=wFf7tve2h}HGWq>p5y_{t*>*nCg)!58=M82Pc* zbTAqXnLIg`7aX{rq&HtFsmsA5s*~v;#e{h{=TkGx=ad;zaa?sw2pKOft$_)nsS+#C2{PcuX!$onT1>WC^U5h$(G2IA>T(9`JXY5Srsbff|cQ6K5wp zFzi5z1DL#}KA7i$5#0cG>3JU5!UI|{zh4NrUpVD}><^^vvz(Qp8S?#v2Ns>kROj@n zLYWNUaiR}0PAFwB6J}H}r~8G^-o7B2ajFlL%?*c`&)=&30>ejbn5HRzC#{nlPmbpH z3(G63r}{v6a7Yz0;_8Z4ombW(%RA*nk?WyPYVR_nr}{v6P-`x{pby*y?i0=|@oZ!3 z$~uIvO!&h!BbPnu`R16EkMUtkt?JHWf|d}rn~LVxu#zW(N) zuo#s%8$(k^zEU3u584Ygyz^u7z)WECRK*nI{=f075AR@YrG?hqexcF_mnwZ=i#}kj zx40(|eV|00&<9e1e#T;B_!eg3LiP)y4@w^F?pHiGIm8kfmNE-7mbs+59ERbwIZ(J^ zF;a6pV4e#P_>gFTkUWUB>=UXpQo@Fsq#qkD6M+RLQs9OC!U+!|R#O;cXmvNyUO9(m zZv*Y#CYmc3=s1lfS qR3ETEGKr+7#g7H6PNJc`2L1!qu1$xqLUmdI0000~41^@s6AM^iV00004b3#c}2nYxWd-|nJb8a%k2&^T!VZ6 zqYthM;{<0t#tJzp0Mlj1|H1wE_zB}U{!2;_BM5?$@gZO^#1zr2bZvW`;H!%RQ02q7 z@6ikc&KaCDs3vB!0)Va?7^jRimZ6ONR`-nC4bC~tdn?DsZ!YO$V!hk3n+66Q36-Uz zr>qQSCg7Fr(0{RMTc#8_y?sF89PYJw$=T+Tqmx5sGtX)nc;i+@c~DZ#9IDE^E9vT< z^$1*_NReEQ(6t3CU>r+oA1i~Uijgi6F1gC@m% zcV44qMevqI6<8cy9|kDTzU9H^pK)@$WKjjm!t!ELM1KVL$;lDoh3Ew59jirgqh+gQ zNm)3&Gdz6fHa|Rlj`?+6^Q>+#BB&^Zw>Nuk_dUi4PoBRd17=xxRF$j>3hgl6NHE2W z5kt<(%i+O>yLg^h% zKhgD(wvDvygzY19g>_>82kTwSom+?WePoP@gEXUUA_zEZh%qxxiM~%{RbtA(K9=tB zvkMT-oOpx38$lZxy-8q?;Kn_c~qpu?a z!^VE@KZ&di49pAxJ|V6^@zBuFi4!LtJ9g~<|NlVlC>RZakrM(HmR3%nTvHO{7Yt1Q zBN;FRe`i+(#yn?%M`SSr1K(i~W;~w1B87p0Dbmx$F{C2y?VXK%QI0%q7rA%8|9@(- z>aW=+0?&kI*c9(O#+!W7y=hYR+U)(;e#gH4b#J{i)AhdZ_4Rx8KS)2w-Y(a_oi&c3 za%&*ah7+~9pcFPCTpCyoHQc$*2IA2|s+{54*UulL%y{359oSX$S>ASYR@!%lx_xX* zpBHaA;M=g@B<8_?#yF#d03=UH<}w(0gBaTy zfn}^h`WD6$Iv~bvHlWKJ=3Hb`*vtZCj3~|9R1Z8BW_VroR`NDG!?mfg!qvb3)ibWi z&fEE*H?OATJVS~cFc6cOCsgJz81?fyJln{4!p4kY=5aQK&o`iw)-nle38$lZxy-8q?;Kn_c~qpu?a z!^VE@KZ&di49pAxJ|V6^adUI?(9qEC?(Sp9j{X1tA1E>kMnhnPgh10{aTQRmDGBlm z1}6TI3>bpHv#SE5owL9rvY3H^?=T269?xHq!oa}v+|$J|q$2L^+(3UNM*%ili+}(9 zpS@U^Q2IV`+UXL%KdXdv=lc4Tb4q<@v|sm7g5h`)gG@JLfezb&jg)g1-1~d0Snj&g z4t9(8J9@GO-!S*QuPnW?xUu`I@b-{1^4aE9p28Dd9blQtzqNe+W#jQ=70C+ z`H=em07Lxu^V|$;OT{Fy2Q@d1*SQ)nsU%a;vE+K)=J9u4 zyFZb8gceAw-~W5&@ob~~KhG!6`cz`|=R}<)!+PuAPd?rC%kpAg!~a3!g87eClV@FG zU^8Gy_BUjhXLQZHf$($ z&7T}ME?4BU=gU~F)U4%_IKa?jdz7K#RK$G-winVhKoyw`%n}V7mrF4COTLyqz);(~ z9;gy%{x*i%@}e-H6}^o2n3=&EpI&9SQ++pM&;D+6K9K7ef8>5%@=^TOe%ubh;?)KE z4)^cg2~{^uO>X!O^!EwAf++b1-&F5+e_?338$lZxy-8q?;Kn_c~qpu?a z!^VE@KZ&di49pAxJ|V6^adUI?oSdBQ?(PK(7X1JJA1E>kMnhnPgn)WiSqv!Glmz(& z0~7y91`NU9*;Rqj&RO6QS4 z|NE)tx#fZD*%xL%w`NN)W-ci1VyxJg%wT5BV7^?UVN`I42gs>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$jZRL%n;xc;tCW`OG{h2bSaQA3PwX%C>p z!^YFIb^EPPfB*7}nL(q$p5gV;4hF6SjtS+ly@HG)2Lu$}?~+nx(r93GIKsAd6RT0^ S54H24wC3sR=d#Wzp$Py!I6=Aq literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=M?75|Ln`LHopF%2*+Ar|)78kE z^~|fhUb4vK{Cex{CwOd5#qr8{*QL%>@BdY(eDLd&-|J7t|MzBO;nQFhuvj4C@Sq`x zp^@1OCeXwG;kWF*-JCYx>Z%X)vj1nrstTmd$j+hqfZc88WhnYl41CPIh5gND+XOA# fhFBknddD*k diff --git a/src/main/resources/assets/hbm/textures/gui/storage/gui_crane_ejector.png b/src/main/resources/assets/hbm/textures/gui/storage/gui_crane_ejector.png new file mode 100644 index 0000000000000000000000000000000000000000..a8905fe305646753aae87bf22e3e992ae5c662fd GIT binary patch literal 2756 zcmbW3dpH!>8^_O#k;%15Rup6LQ%$o{S!}a1{4i`T<1#cgqGUypJIQ5`*1AXTxs)xF z(T+myA$J;T$E7gjI)!mJE;Gh&+J1ljp6B>F|-B%B5)x9zDFP=AIh%+f%zJk+QJ1E0>2sqfaq;gLw(zz2W+O^wZry`B1>aa zBsHTNP1Z!$efJx*7XKNTn{A1u{U4G~ec*n{6Nw!oX?Ld+g*Ms}9_gAuA^N1YT04~y zm~|$3uc~KcobO!D@hO6F;Z6}Vi}@imUn*w4V`cdFx<$+)y>83Ah34b<%5G{d<>%ht z!gf(BEUDEa4Z7DGHiL5=Zm*7^!oo}U5!0s;_at5(=Pr#lAa_G`r`F}W4Op(NYuue{ z6&DZ);&OA23sGzPW&&rbGxcZXiOo$NW#yNZl_%=d&zwD*7!?&IwwRi9FwM~LYIK47 zqjQkAiyIl0+8WUoMbZca4u`Yi&G#GvsfUrs_RpW)Le~53GoViAame)@wQ9SOw_C&? ziRmt7l9yKn8F84QNb=I1LSihiGb;F?bhldgzjU(9Ag5BysxsiS+?m+d7H4@~URY{)UoIG$DE z9T#b!O4SiQh+fIM`u>1Zrq$)QEp08WE6&c7f6e)y_JeuN4LmbiY=50_ zVRdP8ca*r4haR20`6^LwXMCf3G@syeA~_sR zkL>;XJFL}a;YIotT`nI3(daD856@-EI?}S9vw$FCCM+tTR)OhRX~n+b>1n~Mb{z}X z-ni|-tU-)%Eam%q;xcG6o=1dR{rS^B?#^AEFl`K|)g3%Ezqp929QLrqFcLjqdNMQT z>a}i$@B5lkljJ$`1#zLPaVndSxxq_ecMjw>oqo_Kq$IsYTpR#$p!X#rb7?wiV`#Hhx zK0Ft3ggG(XGE5eMfr^~+ys6Rp+Zh8v=qtAPJgAv7$-I%E3eLx@Y$uow#~qZh4b^tC zVzBr^Q1Z~5vJ^iJ6vbB+PtZ?(@g#6t8IoM^?4mZR_Oshx2}aW@TqlYnX~-eWfmiFF z2rJHpnq^OF`}2|CgOs(2X=+zGjJA?sM6iV1^NXRdYB$v^alwXLamX_wYXY#nv)@bJ&caR>bp6rK16S{qZEL;Z)7~=8U~y zVu4xfyvr-=Jxg8Rp;mSKDz;YaOiv)^NaCsnV5yB_arW3@HMszvoAPlwD^dh?{`0n0 ztg;%c@gsV^E_{qIFs*@||HdKO72jE8%8oxx$M4n$j^$lP#-{%?&x()5I%_^n z=~YHS&E+Aaid8A&8&QQ@1hj`}@uA&Ec8SHJQpV6$T66O|n|n>Ycs&)+V~!D~JSq>m zW&5$C;V_gOlertbOOP-YMrVKmPFk2|1~3^Zxy~a>SwIb5$AkSFTMhh^{k=QOsSN{l zN6=9~Nm5dBX4}^;11KpQ2d)%j!k=4wTv%9$UI(?cwce{U^k2r3mSKR^l^bfyYUpB; zo5j_i6&X>C;lfosh`ZJ{42 zzin!2YO!i8sf01i1cC4V_!`JQ@DXJXvUw!%Kc0W9MWiQw=GlT z(;cRc?Sf$^W-m=P`1A^!#MeTe5^9->LtE|iU6r0Epv+c!#$7;UZJxWBUN43iuLkBy zVE_7JR6`$MF;DDm$P>`_WRpZDQY1+N)b94ACSsT(_Et{oe$e;lc}P_dcd^t1#}iD^ zeF9>SA1SSlXtspFfSA7kn;33ug`+WD1F^*ceAXqJEHT}PHppuTf8zB^gFXXS2MIyDZv|Y;De#tUxkG@U+f?DkHk)kiws($m zB^fb>A|f7sdB0NYwYZx(v_rmS;(b5F#r)j68dEA7*RN6466EK1z?&oYtFgM!3+s{- zl!1zvju+_eA4bV*;>LjJ5T{)rd3U$}=q_~i@w_l8w?|6w3;1GqJjv`bVjuOjazU(k z*gaMt%z)uS{O)@gYT51+uOw4@x-I0|aj%Dp*gM%kGd~#gSL3Cytl!Fy!l8SmL9zw} z{68sum?VOvOd!VD0hk)*p8@5keK9#XIlh(6Ud}>F6Z1$XMJ|{7jvY`@n42~1o#7s8 z22r{U1^d;&w}|r`q?U? z?vuaMCD-LHBH-C3Mg@Ww8T%RrRLubPbz2_HR^~j${8|x7CUce|T9VsVIXUI`&qx(R zuNN(|@kl}h@uy;_efxp`7E4Y$b&zk9a2;{ag_yn(tlK~`dE*32uDI~*@dBI_ElvI( h=jZDw`p4t?re5P(dy88jM(E2LrbZTqe;PPN{s-OF>(BrI literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/gui/storage/gui_crane_inserter.png b/src/main/resources/assets/hbm/textures/gui/storage/gui_crane_inserter.png new file mode 100644 index 0000000000000000000000000000000000000000..114a1561a704c5c6990e1ab8c4571c469c4c5518 GIT binary patch literal 1236 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6%N?Bp530R%N1DIGv=x2KC^ zNX4ADcLVbtMF_NAELv^OnsZp%@snKyM_ha4wC9RUzDBxkvNe-m|9QUW$y$eo{Sw?= z3%6}In{o2ILCtsB2Yc7fpHLbr`~S~P1D;T&3sd8z&lP?6d}WhP=sAJin^Jr4vpy)> zoog{`{)3{OA)!~lR;?{kyU?n8o@ymHPh2mLfHwvz( zH)EQ4Ij67J;cqc7s@GApA%_W60<4kmue8~mt?OP#g?^1-DYTH$Y2_%loBtXV&bI&J z)?Z(h8(&=$blJG!_S>-MpLag>Wzf&~C-xw&c7eSf(O&b*u( zoomlCv_1Z~U!zgRsa9l?C5oP_Ql}&W48sTp9Y17UVpvy)mzgu>Y&K_ zUYx^{b)1Y?{$8AM92m>H<|iu$Sc4+#uZ(o#twJ(l`LE2a%3XpSRVm6B%J#6rvWe|p zjtuP$mbPbp?hu{v_6AoD(5W$V@{UK7m>|I#GmeKPlpPOy@V0^*ng@3m+5b(K-oH9a zqAf9Y+Rk8#Yiby-=kFB%@EwslV5x*W`ob}Lx3X)N50Vy1 PgADL=^>bP0l+XkKX|T4? literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/piston_electro.png b/src/main/resources/assets/hbm/textures/items/piston_electro.png new file mode 100644 index 0000000000000000000000000000000000000000..3d8285ff9aaa202812e03438f257788b47a7150d GIT binary patch literal 370 zcmV-&0ge8NP)IH$GU-$zH=vnMCi$Tl|vLKo) z%Ths7NmkX(HNmmfBVOA~As>R2v}+4Pa@4!$op*9??s*0+xEYOfxqg^VjV4`w2$zfBz!2v{Sp7XSdeAe&m)vktPvp3 z^EMf0tv4s4VsO0UCj6R%Vtv=cVdde=di}Q?6oD%9|0D-t5E$Xt@uctk2_&AM1j4i! QeEvh}iF1>WUZrdrPTpY)4R`0ncN#c%=4gnYp`@B3o0_N`F a-}xJ*@t>{;GdrgfO)wOGqXsD57EMqb&g($DQ-eJ-PS2`wSW|8jbQY_kG`}^Hs$0 zc$_Px7+$q_OP*QIS6H1k_lqNJ+s1WWt!A%Gq?GyDdI~2+@zcX>d)8-#wSGlPnRmNg zqc$LlB0SG4NOH~L=`jFSr;RxXNz;@linNZk0D#G4g5x-x4?@f@x>Blg2U{ zMu6pf)nwC0_zScEDP`VdZ1U9XK?uP6>{cth2&U}*Y7crhn7u+X`B!^TGW_T}e*j1c VlqeEhmz)3q002ovPDHLkV1hcCpIHC^ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/upgrade_ejector_1.png b/src/main/resources/assets/hbm/textures/items/upgrade_ejector_1.png new file mode 100644 index 0000000000000000000000000000000000000000..6395bf3cec1670ac10ea0a3cdbf3be6d6de9ef61 GIT binary patch literal 403 zcmV;E0c`$>P)NklAs=6vzKYhb-dF9<7j3`~Zby=up}rbn8_79>&o+^%Gz3-9`Md@I4c)2PMxEXS0iM(J*a0O|g70JT*+I{B(Y|^I z_9HAF?lFjC0Kj9nE92W%3l8VFK2Lz{4o2wov7D@r<@O`Iyd7l}McQ~dStATTig%Ft zEhB4xyjs-&z@TJG`b78NZh$&4`>=gBNIF1`*nQrFcE3S$gH zh=PsrH>xcREek>j2q7@EtWpb&(CHth?6PxO*)(M$Gfl09W<58F`5~!7zCyO3COe$N x;ryg!RsRclHa)eK-6JK3|Yj?9<31Q<_9PkutTv!aO+h39@WwM0Xk+E z^&4cdEES;pNTf}ww z`p(e_3Q@3~OyUY_&jX<0IGOrtIxPT{b*Dxfb$ac2JZ`tY9jI`ua9w8absCOC?eZ1& z17>$OwC~U2_%;Xt=v1rNLeM@9VY8#`+ueh|i~8Zn{eY(z(lM}Ft?0B`0L({ADkaSw zM1He~+8-_!1%RRo$4d2@N|$&W1aa$0Y#~s+rc&3ID*ASp`Dm$4Hcc~*kC~5_`2HK^ z^N)j#t>b7PifNiiDN{CvpX6KUTNYAEq?Gh6E7L-H3Q=Xlh!ai2&{{}M;rNl{5li5<)r=>)oZGUTH-ez=_LB!xY&-IS2eZ7ebG${00000NkvXXu0mjf Dm2tIU literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/upgrade_ejector_3.png b/src/main/resources/assets/hbm/textures/items/upgrade_ejector_3.png new file mode 100644 index 0000000000000000000000000000000000000000..f791711268a7f4bf2d1d347e70dc67fecd9207aa GIT binary patch literal 373 zcmV-*0gC>KP)i7p{k|E6atNq?{TCiEvH5PT<%i9(v zrI;hn3TH86tc|Ag@5tZ*icF0yeNz@XsvrTR__?Mu#6&Tt)aEXGKvN*^tWI- z2SHoNg1~8^w}tK{8Kd2TN!Z1La|q7=jBM+Fp){uZ(0Yv>ZR388FCUmqN3_Kc;V-(( TYQ6ui00000NkvXXu0mjfulcG& literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/upgrade_stack_1.png b/src/main/resources/assets/hbm/textures/items/upgrade_stack_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a478d4b053f3a4e7692de9bf183283a2a4ed7f2f GIT binary patch literal 407 zcmV;I0cie-P)ycP~l?r{zw2Y4_yF2gBckuG7nw!F2)rAP~?o_VL6ZozlDpm0*V}hWnt3npur3r z?mYpUAtr%|+wlYdFfzM|KJOhvXBxV}Gq7Bv>bLut+FtsL%@8lI=`sj{LOr!T`2I)v z9hAY#AB-O2J4h^qZpJe&nOhLinFcajRBS;&RaK~}io5$+ZjW0~PCsKCD`sqM7}>_) zD~_vD)#XWPlBw;XUXwaeZjx>AS4d`| zC|GA2bf)F>zag_l?*89o3R)yTjUvl6>a_wb@C(@3r|~4A{a641002ovPDHLkV1j#y Bu3`WH literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/upgrade_stack_2.png b/src/main/resources/assets/hbm/textures/items/upgrade_stack_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b2bcf0eeb3a69a59ac84cb0999cebe5bcd162c0f GIT binary patch literal 405 zcmV;G0c!qLLP3IiG&^*|sY&|_ zZnLCCBa%^ahx8Zi|e$#JyxaYplInQ~|3jt)=lhFj#et2Y@tGm3fvF-jt5yOOob4L9fEv1|Ex%kvA6320z4nQ&g+17Oe{lFKCA zK^*G%t@eX^2eRx5rb*wie3@@L{k3izr#=%Ef%%HGU2ZVw4kLHdG!0GDxVs;P)&|`n zw*5x-=-rL6&?|`#CK#jj;nsz^pt!y&#~LJeK^=c{gUk9stVv`Sf{!E#)rIveL=_kH z0!6(L(*H(`l33fnlj+f3!qezwz9N^2&>nsOP;#v!vNP~G00000NkvXXu0mjfx1q3H literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/upgrade_stack_3.png b/src/main/resources/assets/hbm/textures/items/upgrade_stack_3.png new file mode 100644 index 0000000000000000000000000000000000000000..705d1dbded7373e7d5650abbdc82e1d512c2315e GIT binary patch literal 391 zcmV;20eJq2P)4BlgAmCiBu-M$-9e$d_z8@3a%%kq zaSmDC3yF&mX$A{78E9z4<#kA}UM_#|H$CL?K6lT(_W}x(1vJ?Msk)9<>5J## z`=>(Jpb4>je`T4AoKoSuGUBQ$G8PKv_WK+9Y=C?7X0( zog(F7rJnK`EVB!8ZK8{PG7_hs=R7*eEx+#Z`UXI+(Q6_q=b^+}=2~2F+a%$KT$<_0?gmNo5z*N797o!e$n#iY>DX%j}l)zaiJAaCbeK ll9nk?qs)ATwqBtnegRj-tP|^beUShF002ovPDHLkV1lMyr5OMK literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/control_panel/button0.png b/src/main/resources/assets/hbm/textures/models/control_panel/button0.png new file mode 100644 index 0000000000000000000000000000000000000000..4bd220cdebf33a33581f22ba10711483850fd13f GIT binary patch literal 1066 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NSs56Z83KGlTu+@kb^7$_GiT16J9qB<`STYpT)24g;^oViuU@@+?b@~L*RS8a zdGpq-TeolDzH{f!y?giW-@pIh!GnhnA3l2Y=<(ynPo6w^`t<3uXV0ELfBxddi~I_@bTlvPoF-0{`~pNmoHzxe*O0C+xPF^fBg9I^XJcB zzkdDx{rk_KKY#!J{r~?z(2=8HGz91w0yj9X-v-*pS>O>_%)r1c48n{Iv*t(u1vh)T zIEH8h`}VyQYBJzyQSMrFEr>Nrk3WN}=;>d1e;$j+|4yjgS2JexwSRiUT;iZrZR`0r z%l9>95(W*OW8s`>}jQsbBXPUDY_3O#E~tr=`2b zRG2rSjfZ1fTIQU%a|y-i%k^p|zh^x7ZbK8tRF20YQ=}w$p3T`7Tg~oM#CCPxi?rDc zy;b(HshdSC8CHj`eC#rF(_`_6g-;T$1qk=PWnaERnM);OA}I4Sc)I$ztaD0e0syth B=Jfyo literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/control_panel/control0.png b/src/main/resources/assets/hbm/textures/models/control_panel/control0.png new file mode 100644 index 0000000000000000000000000000000000000000..fa5cf1d5756dd60439a457128d8ee3dc076175f9 GIT binary patch literal 3990 zcmV;H4{7j;P)00009a7bBm000XU z000XU0RWnu7ytkdNJ&INRA>dwn)!=mM-|8K{_cC-)7=R@af#6&h$1c^f*4!~7!3gf zL5!jpw;$B}Ao)}BTfq2BB1%9b2x<%(1qBmh0x`xt8nFG>Qcfaj!e!f-r)?MD4 zNt9$}s$bt%%c)amuTyoO?_GXn_o|&+Zhe2Am$TzVS$gAfoGtS_FRt9(n$4H@eC4}c zlA~_pGO6GCi5t$IJ?Hy=lE$MXiQ}lu$}{^1M~BnjJo(Ik$jgg?+wb`3xr4)lvxiX> zg;6k>q>x*cUKLbH92R-;hu{5ez(6=?U&7`mKXc<^p2biagy}dPrEyJ6Oh-wah@Of+V>vFT8LQcIgk5Y6eD(_;&S&$ZgX7KZ&Cz%iBVAhpKQ!_VSBwP4!Z7q<(evWP z+>u_-8?;~6CW1dYoCT9)vN_&7F~P(sR`3^C7t<-r($MdH_1+&1AZra=`}$X5j<ngUU$+D6#G!VwjrLeZj8?;k$=vnRU%)IW67yP{;ACTW5I6mo0FXA2Y~`k=wQ*xH`#TzSHXtt6>R z)5MIJ_07YRy40r!cE_{y(oyWOc3yyZV`DU)psSn_^x){okEhYb#5K=bDLl63!6;&J*imjf82D9LF%puz*iRghfXNn+M-+}vOhy|i zV=OP1%CasUFN%65gkGG+AHVH`!rYYkd>N-{WW$r~G?pEr3>d(NVL(Dv1t#cH-)ceX z7<~lEA?z})f1)8o%OVXY;iB;1lcMmzt|b5NN@Rex%5pzm3Gr36T=w{fx*m|?hAEW- zk0@8sN}|aa#u^^jN*ijLDWs3g!60j&tRyDiFY*!!%DfEuCk%`dPezNCmU6Hz?l3}x zW>6&9V#U+6>TgT2=&MUZL%np(2fY=hg<+WvHTjSsn#w?y49W072$dFXA-W6tNE>jf zf~+767t19?Lp{Jf>Kj_pLXLqJq@3Oq6ZL=)5}Zm~!l0Or zS6{vBx()1VI&D!vvh@enVNYnpY(k~O(688VWEPg23eS)TrsGIep8ITzE$0?b4Ug3k z7W=3fGV<^DA`vwcOA`rlSvtE%eKsyeaJ^4hHA0H`#I>Z8W^NFeK30#~lgmt2eZ%AODfWkyd& zc7Ycqv8Bl&GZt&63)Bd_qY5U|In)5XA=WP(S{eTe@-pbk(y=VrcPP-5b;Yc!+yrQr z1FL%cU^UG5XJbny=aQ}<)C|I4yP~ycn=iSkqLegEnSd$CKv>oWIeSzE%t+Uv7+6l% z#>gyufO7@97T(qRorDv#)oe{I-3}bWsIR(3^n7c4La0khc8|E$j$;W8)5 zDamsr3muovKc(K6tTu@0wsP;?-*Zzq+|a2U?0ki=Nb*n-*4Bx+K1nG$I22Z2;Bytx z+2T(U6GSzKP8W7tfKE;Eg#wK_9BPq)r04=m%~@w+Tg5<>{6GMkPnJ_rPp7~GS#(DP zjuUo|2GVT!c5PA{5Zd!(2hEylO?@+BgNh3+w%f|>d?o}b+W2|Oib~@vCKaHk^J!LS zzMHKYv3CToRD{*F4@)5~5I3{jx0@xQuasO{M_V|@(^y4j>1*IvQn)HYnxKdLI%W(! z8Gr2$R=qV6B%#lIuEng}>X9{HhDGsjb};s=Q|f+|93niu4lINkrYbFiB7IBwg}P%BI?}gxv4Ih>!D+jrBu@vHy=basfqc<@VI(%@N`m0^}9Z&QNpb?_ZoEG-lr;k2+8dgTOFdc z6^yOw`?_9HFiRxK2z4vkQ+H2}7AGR32)J3p+`csp&zsE_K{vl^M@$X=i2XiSG)-CR zdftCAPJqyK!Oh1SOa&f-tSGTGH7MP;BhvLW6>Q~r+MGIiU{5^$$Ee_LS@)t1wD~4l z74s$5$Ew+4$$LXPoTOtUYwro|4O?$o+fcqx1>AU79DjZL7DFeadL=3~8<^r+WtJYd zM!GU14dIwi6j`^2{QJ}%CbUL(7;2Pqj~^qhXgqRjz?eA!FsI_;q!X2EBv4l4LsG;{ z(pbwpO|D84qOoG zXmy55VnIaWf~_wCou9RJi%M1&l+Y^>`|?M0U9ZQju(>34%MB`qCZdI|?qDJeXS3xM zeHfG)5SaSr(+8nd=V$8IjV3ZQ!J$|zbb77@zB0>%zX}@==|nAFujFEfHz4zc^$RNt z*;TIq(|$yntyF5w z8bL-J9I!^1@y!XublMqxpYAQq6&UXqph#M%%IEjb^%E^22;wx!S4gooW1o|g+gJlw z6h)wZw(#bQiq{r>J~i5WkQOt#L2{0|P@tJ&azhci=mcoX%)pk7G5Wl9;4TSLcXl?p zp>H7T?>0m>1EB5!$)>GQ0}=V*I0ix+3dW3ep4R|-NO+Z|U_uy&$#F_NqCQG>DmMjS zC;N7y-rO-9=w}}I^3|`sss`_T*<_A*-#ryDtNUTFM4R}W><95ewDFtsQ{P#ku5$V& zhT;sQhUll`ce**I$fqr=?if{M%Mv-kAVT*QKVh)|?zyp%Hi%ZEERrYWo0Nh5N45wT zvpFstu3XYPj9RvztFh0}35{i(fYBa^yT^HvX^M+)*4glQLbf|V_jtAwJnx!oU#XWU z;CIEWRVxt`+;R$-7&b~V#+a)$M1rW=;8Oz&%yf#?cGTlNE0HQ^yJTBrF(rhe*hE(5 zngqK8&rpDG01V0IP%dB+&qhBqU0E!a(R4a5mb}N+M#F$H9m!rmJVE4pxc}m4#;-02 z2h+p-?d=VR!Z2)GP@`FBzz-K40Eq}Ao}_8D%+4Ln2q|zSf)s_dH5zVMyZ~E!Pq1oh1Pg&%uc{=hFTOH>D4}=3NcnMk2!yWfll_*NfIxPruk?DGbAH+ zTZMQIg9_xKjKnAp&&54q08Ia9fobsLffBN&EJ#}Jd6SFxy znjOs+NV&H(;Y+3~>vhyy0DexOft6&A(Tm3bzluBkuf2Qj{{GhX#`ewzS;E2Llx$Em zTRm|3E{^oSN@|~1%a@)naIk6tU!oexhDYA0|O#l^PvYHd*;ulkoocPbe7frYp?8KV~{4=Sv|*hh%Rjf wm$>b7Hy)guDYem&-sCMlnUQ`mGT4m&3k9fi3=`9rg#Z8m07*qoM6N<$g2~>NZU6uP literal 0 HcmV?d00001 From a93c6ff4db39fd98c7892d06cb88906bb518bf0c Mon Sep 17 00:00:00 2001 From: TheSlize Date: Wed, 7 Feb 2024 23:05:25 +0300 Subject: [PATCH 2/3] Conveyor Update --- .../hbm/blocks/generic/BlockControlPanel.java | 86 +++--- .../hbm/blocks/generic/BlockNetherCoal.java | 4 +- .../java/com/hbm/blocks/generic/BlockOre.java | 283 ------------------ .../com/hbm/blocks/generic/BlockOutgas.java | 11 +- .../blocks/machine/DummyBlockFluidTank.java | 5 +- .../hbm/blocks/machine/MachineFluidTank.java | 2 +- .../blocks/machine/MachineFrackingTower.java | 1 - .../com/hbm/config/BedrockOreJsonConfig.java | 20 +- .../java/com/hbm/config/MachineConfig.java | 3 + .../com/hbm/entity/mob/EntityRADBeast.java | 46 ++- .../java/com/hbm/handler/ArmorModHandler.java | 2 + .../com/hbm/handler/MultiblockHandler.java | 13 +- .../com/hbm/inventory/AssemblerRecipes.java | 2 +- .../java/com/hbm/inventory/DFCRecipes.java | 1 - .../control_panel/ContainerControlEdit.java | 6 +- .../hbm/inventory/control_panel/Control.java | 83 +++-- .../inventory/control_panel/ControlEvent.java | 7 +- .../control_panel/ControlEventSystem.java | 4 +- .../inventory/control_panel/ControlPanel.java | 96 ++++-- .../control_panel/ControlRegistry.java | 38 ++- .../control_panel/DataValueFloat.java | 6 +- .../control_panel/GuiControlEdit.java | 28 +- .../control_panel/IControllable.java | 13 +- .../control_panel/NodeConnection.java | 33 +- .../inventory/control_panel/NodeElement.java | 10 +- .../inventory/control_panel/NodeSystem.java | 123 +++++--- .../hbm/inventory/control_panel/NodeType.java | 4 +- .../control_panel/SubElementEventEditor.java | 93 +++--- .../control_panel/SubElementItemChoice.java | 87 ++++-- .../control_panel/SubElementLinker.java | 82 +++-- .../control_panel/SubElementNodeEditor.java | 120 ++++++-- .../control_panel/SubElementPlacement.java | 257 ++++++++++++---- .../control_panel/controls/Button.java | 99 ------ .../inventory/control_panel/nodes/Node.java | 56 ++-- .../nodes/NodeEventBroadcast.java | 1 + .../control_panel/nodes/NodeGetVar.java | 7 + .../control_panel/nodes/NodeInput.java | 7 +- .../control_panel/nodes/NodeMath.java | 136 +++++---- .../control_panel/nodes/NodeSetVar.java | 10 + .../inventory/gui/GUIMachineUUCreator.java | 4 +- .../com/hbm/inventory/gui/GUINukeCustom.java | 14 +- .../com/hbm/items/machine/ItemFluidTank.java | 2 +- .../java/com/hbm/main/ResourceManager.java | 53 +++- .../hbm/packet/ControlPanelUpdatePacket.java | 15 +- .../java/com/hbm/packet/PacketDispatcher.java | 2 + .../hbm/render/item/ItemRenderLibrary.java | 22 +- .../render/tileentity/RenderControlPanel.java | 146 +++++++-- .../hbm/tileentity/TileEntityDoorGeneric.java | 19 +- .../machine/TileEntityControlPanel.java | 251 ++++++++++++++-- .../tileentity/machine/TileEntityDummy.java | 3 +- .../TileEntityMachineBoilerElectric.java | 2 +- .../machine/TileEntityMachineFluidTank.java | 71 ++++- .../machine/rbmk/TileEntityRBMKBase.java | 57 +++- .../machine/rbmk/TileEntityRBMKBoiler.java | 19 +- .../machine/rbmk/TileEntityRBMKConsole.java | 46 +-- .../machine/rbmk/TileEntityRBMKControl.java | 21 ++ .../rbmk/TileEntityRBMKControlAuto.java | 8 + .../rbmk/TileEntityRBMKControlManual.java | 48 +++ .../machine/rbmk/TileEntityRBMKCooler.java | 18 ++ .../rbmk/TileEntityRBMKCraneConsole.java | 112 ++++++- .../machine/rbmk/TileEntityRBMKHeater.java | 21 ++ .../machine/rbmk/TileEntityRBMKOutgasser.java | 20 ++ .../machine/rbmk/TileEntityRBMKRod.java | 28 ++ .../machine/rbmk/TileEntityRBMKStorage.java | 7 + .../assets/hbm/models/blocks/conveyor.obj | 50 ++++ .../hbm/models/control_panel/button0.obj | 121 ++++++++ .../hbm/models/control_panel/control0.obj | 55 ++++ 67 files changed, 2154 insertions(+), 966 deletions(-) delete mode 100644 src/main/java/com/hbm/blocks/generic/BlockOre.java delete mode 100644 src/main/java/com/hbm/inventory/control_panel/controls/Button.java create mode 100644 src/main/resources/assets/hbm/models/blocks/conveyor.obj create mode 100644 src/main/resources/assets/hbm/models/control_panel/button0.obj create mode 100644 src/main/resources/assets/hbm/models/control_panel/control0.obj diff --git a/src/main/java/com/hbm/blocks/generic/BlockControlPanel.java b/src/main/java/com/hbm/blocks/generic/BlockControlPanel.java index 2e5e71618a..acfa096cfd 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockControlPanel.java +++ b/src/main/java/com/hbm/blocks/generic/BlockControlPanel.java @@ -1,13 +1,12 @@ package com.hbm.blocks.generic; +import java.util.Map; import java.util.Random; -import org.lwjgl.opengl.GL11; - +import com.hbm.blocks.BlockControlPanelType; import com.hbm.blocks.ModBlocks; import com.hbm.interfaces.ICustomSelectionBox; -import com.hbm.inventory.control_panel.Control; -import com.hbm.inventory.control_panel.ControlEvent; +import com.hbm.inventory.control_panel.*; import com.hbm.items.ModItems; import com.hbm.main.ClientProxy; import com.hbm.main.MainRegistry; @@ -19,6 +18,8 @@ import net.minecraft.block.BlockHorizontal; import net.minecraft.block.material.Material; import net.minecraft.block.properties.IProperty; +import net.minecraft.block.properties.PropertyBool; +import net.minecraft.block.properties.PropertyDirection; import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.state.BlockFaceShape; import net.minecraft.block.state.BlockStateContainer; @@ -41,11 +42,16 @@ import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; +import org.lwjgl.opengl.GL11; + +import javax.annotation.Nonnull; public class BlockControlPanel extends BlockContainer implements ICustomSelectionBox { - public static final PropertyEnum FACING = BlockHorizontal.FACING; - + public static final PropertyBool UP = PropertyBool.create("up"); + public static final PropertyBool DOWN = PropertyBool.create("down"); + public static final PropertyDirection FACING = PropertyDirection.create("facing", EnumFacing.Plane.HORIZONTAL); + public BlockControlPanel(Material materialIn, String s) { super(materialIn); this.setUnlocalizedName(s); @@ -53,16 +59,16 @@ public BlockControlPanel(Material materialIn, String s) { ModBlocks.ALL_BLOCKS.add(this); } - + @Override public TileEntity createNewTileEntity(World worldIn, int meta) { - return new TileEntityControlPanel(); + TileEntityControlPanel te = new TileEntityControlPanel(); + te.panel = new ControlPanel(te, 0.25F, (float) Math.toRadians(20), 0, 0, 0.25F, 0); + return te; } @Override public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { - if(playerIn.isSneaking()) - return false; if(!worldIn.isRemote){ if(playerIn.getHeldItem(hand).getItem() == ModItems.screwdriver || playerIn.getHeldItem(hand).getItem() == ModItems.screwdriver_desh) playerIn.openGui(MainRegistry.instance, ModBlocks.guiID_control_panel, worldIn, pos.getX(), pos.getY(), pos.getZ()); @@ -70,7 +76,9 @@ public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, TileEntityControlPanel control = (TileEntityControlPanel)worldIn.getTileEntity(pos); Control ctrl = control.panel.getSelectedControl(playerIn.getPositionEyes(1), playerIn.getLook(1)); if(ctrl != null){ - NBTTagCompound dat = ControlEvent.newEvent("ctrl_button_press").writeToNBT(new NBTTagCompound()); + ControlEvent evt = ControlEvent.newEvent("ctrl_press"); + evt.setVar("isSneaking", new DataValueFloat(playerIn.isSneaking())); + NBTTagCompound dat = evt.writeToNBT(new NBTTagCompound()); dat.setInteger("click_control", ctrl.panel.controls.indexOf(ctrl)); PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(dat, pos)); return true; @@ -78,23 +86,20 @@ public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, } return true; } - + + @Nonnull @Override public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) { - switch(state.getValue(FACING)){ - case WEST: - return new AxisAlignedBB(0.5, 0, 0, 1, 0.3, 1); - case EAST: - return new AxisAlignedBB(0, 0, 0, 0.5, 0.3, 1); - case NORTH: - return new AxisAlignedBB(0, 0, 0.5, 1, 0.3, 1); - case SOUTH: - return new AxisAlignedBB(0, 0, 0, 1, 0.3, 0.5); - default: - return new AxisAlignedBB(0, 0, 0, 0, 0, 0); + TileEntity te = source.getTileEntity(pos); + if (te instanceof TileEntityControlPanel) { + AxisAlignedBB ret = ((TileEntityControlPanel) te).getBoundingBox(state.getValue(UP), state.getValue(DOWN), state.getValue(FACING)); + if (ret != null) { + return ret; + } } + return super.getBoundingBox(state, source, pos); } - + @Override public BlockFaceShape getBlockFaceShape(IBlockAccess worldIn, IBlockState state, BlockPos pos, EnumFacing face){ return BlockFaceShape.UNDEFINED; @@ -102,7 +107,10 @@ public BlockFaceShape getBlockFaceShape(IBlockAccess worldIn, IBlockState state, @Override public IBlockState getStateForPlacement(World world, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer, EnumHand hand){ - return this.getDefaultState().withProperty(FACING, placer.getHorizontalFacing().getOpposite()); + return this.getDefaultState() + .withProperty(FACING, placer.getHorizontalFacing().getOpposite()) + .withProperty(UP, facing.getIndex() == 1) + .withProperty(DOWN, facing.getIndex() == 0); } @Override @@ -114,6 +122,11 @@ public EnumBlockRenderType getRenderType(IBlockState state) { public Item getItemDropped(IBlockState state, Random rand, int fortune) { return Items.AIR; } + + @Override + public boolean isFullCube(IBlockState state) { + return false; + } @Override public boolean isOpaqueCube(IBlockState state) { @@ -152,7 +165,9 @@ public boolean renderBox(World world, EntityPlayer player, IBlockState state, Bl control.panel.transform.store(ClientProxy.AUX_GL_BUFFER); ClientProxy.AUX_GL_BUFFER.rewind(); GL11.glMultMatrix(ClientProxy.AUX_GL_BUFFER); - RenderGlobal.drawSelectionBoundingBox(ctrl.getBoundingBox(), 0, 0, 0, 0.4F); + if (ctrl.getBoundingBox() != null) + // offset to bury bottom lines + RenderGlobal.drawSelectionBoundingBox(ctrl.getBoundingBox().offset(0, -.01F, 0), 0, 0, 0, 0.4F); GL11.glPopMatrix(); return true; } @@ -161,24 +176,23 @@ public boolean renderBox(World world, EntityPlayer player, IBlockState state, Bl @Override protected BlockStateContainer createBlockState() { - return new BlockStateContainer(this, new IProperty[]{FACING}); + return new BlockStateContainer(this, UP, DOWN, FACING); } @Override public int getMetaFromState(IBlockState state) { - return ((EnumFacing)state.getValue(FACING)).getIndex(); + int up = state.getValue(UP) ? 1 : 0; + int down = state.getValue(DOWN) ? 1 : 0; + int facing = state.getValue(FACING).getIndex(); + return (up << 3) | (down << 2) | (facing - 2); } @Override public IBlockState getStateFromMeta(int meta) { - EnumFacing enumfacing = EnumFacing.getFront(meta); - - if (enumfacing.getAxis() == EnumFacing.Axis.Y) - { - enumfacing = EnumFacing.NORTH; - } - - return this.getDefaultState().withProperty(FACING, enumfacing); + return this.getDefaultState() + .withProperty(UP, ((meta >> 3) & 1) > 0) + .withProperty(DOWN, ((meta >> 2) & 1) > 0) + .withProperty(FACING, EnumFacing.getFront((meta & 3) + 2)); } @Override diff --git a/src/main/java/com/hbm/blocks/generic/BlockNetherCoal.java b/src/main/java/com/hbm/blocks/generic/BlockNetherCoal.java index 4fc5bd2208..c38c7bf3ec 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockNetherCoal.java +++ b/src/main/java/com/hbm/blocks/generic/BlockNetherCoal.java @@ -17,8 +17,8 @@ public class BlockNetherCoal extends BlockOutgas { - public BlockNetherCoal(Material mat, boolean randomTick, int rate, boolean onBreak, String s) { - super(mat, randomTick, rate, onBreak, s); + public BlockNetherCoal(boolean randomTick, int rate, boolean onBreak, String s) { + super(randomTick, rate, onBreak, s); } @Override diff --git a/src/main/java/com/hbm/blocks/generic/BlockOre.java b/src/main/java/com/hbm/blocks/generic/BlockOre.java deleted file mode 100644 index f951a8ee6f..0000000000 --- a/src/main/java/com/hbm/blocks/generic/BlockOre.java +++ /dev/null @@ -1,283 +0,0 @@ -package com.hbm.blocks.generic; - -import java.util.List; -import java.util.Random; - -import com.hbm.blocks.ModBlocks; -import com.hbm.items.ModItems; -import com.hbm.main.MainRegistry; -import com.hbm.potion.HbmPotion; -import com.hbm.interfaces.IItemHazard; -import com.hbm.modules.ItemHazardModule; -import com.hbm.saveddata.RadiationSavedData; - -import net.minecraft.block.Block; -import net.minecraft.block.SoundType; -import net.minecraft.block.material.Material; -import net.minecraft.block.state.IBlockState; -import net.minecraft.client.util.ITooltipFlag; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.init.Blocks; -import net.minecraft.init.Items; -import net.minecraft.util.EnumHand; -import net.minecraft.init.MobEffects; -import net.minecraft.init.SoundEvents; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.EnumParticleTypes; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraft.world.IBlockAccess; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; - -public class BlockOre extends Block implements IItemHazard { - - ItemHazardModule module; - public static int xp; - - public BlockOre(Material materialIn, String name, int harvestLvl, int xp) { - super(materialIn); - this.xp = xp; - this.setUnlocalizedName(name); - this.setRegistryName(name); - this.setCreativeTab(MainRegistry.controlTab); - this.setTickRandomly(false); - this.setHarvestLevel("pickaxe", harvestLvl); - this.module = new ItemHazardModule(); - ModBlocks.ALL_BLOCKS.add(this); - } - - public BlockOre(Material materialIn, String name, int harvestLvl) { - this(materialIn, name, harvestLvl, 2); - } - - public BlockOre(Material mat, SoundType sound, String name, int harvestLvl){ - this(mat, name, harvestLvl); - super.setSoundType(sound); - } - - @Override - public ItemHazardModule getModule() { - return module; - } - - @Override - public int getExpDrop(IBlockState state, IBlockAccess world, BlockPos pos, int fortune){ - return xp; - } - - @Override - public Item getItemDropped(IBlockState state, Random rand, int fortune) { - if(this == ModBlocks.waste_planks) { - return Items.COAL; - } - if(this == ModBlocks.ore_asbestos || this == ModBlocks.ore_gneiss_asbestos || this == ModBlocks.basalt_asbestos) - { - return ModItems.ingot_asbestos; - } - if(this == ModBlocks.ore_nether_fire){ - return rand.nextInt(10) == 0 ? ModItems.ingot_phosphorus : ModItems.powder_fire; - } - if(this == ModBlocks.ore_sulfur || this == ModBlocks.ore_nether_sulfur || this == ModBlocks.ore_meteor_sulfur || this == ModBlocks.basalt_sulfur){ - return ModItems.sulfur; - } - if(this == ModBlocks.ore_niter){ - return ModItems.niter; - } - if(this == ModBlocks.ore_fluorite){ - return ModItems.fluorite; - } - if(this == ModBlocks.ore_lignite){ - return ModItems.lignite; - } - if(this == ModBlocks.ore_rare || this == ModBlocks.ore_gneiss_rare) - { - switch(rand.nextInt(7)) { - case 0: return ModItems.fragment_boron; - case 1: return ModItems.fragment_cerium; - case 2: return ModItems.fragment_cobalt; - case 3: return ModItems.fragment_lanthanium; - case 4: return ModItems.fragment_neodymium; - case 5: return ModItems.fragment_niobium; - case 6: return ModItems.fragment_actinium; - } - } - if(this == ModBlocks.block_meteor) - { - return rand.nextInt(10) == 0 ? ModItems.plate_dalekanium : Item.getItemFromBlock(ModBlocks.block_meteor); - } - if(this == ModBlocks.block_meteor_cobble) - { - return ModItems.fragment_meteorite; - } - if(this == ModBlocks.block_meteor_broken) - { - return ModItems.fragment_meteorite; - } - if(this == ModBlocks.block_meteor_treasure) - { - switch(rand.nextInt(35)) { - case 0: return ModItems.coil_advanced_alloy; - case 1: return ModItems.plate_advanced_alloy; - case 2: return ModItems.powder_desh_mix; - case 3: return ModItems.ingot_desh; - case 4: return ModItems.battery_advanced; - case 5: return ModItems.battery_lithium_cell; - case 6: return ModItems.battery_advanced_cell; - case 7: return ModItems.nugget_schrabidium; - case 8: return ModItems.ingot_plutonium; - case 9: return ModItems.ingot_thorium_fuel; - case 10: return ModItems.ingot_u233; - case 11: return ModItems.turbine_tungsten; - case 12: return ModItems.ingot_dura_steel; - case 13: return ModItems.ingot_polymer; - case 14: return ModItems.ingot_tungsten; - case 15: return ModItems.ingot_combine_steel; - case 16: return ModItems.ingot_lanthanium; - case 17: return ModItems.ingot_actinium; - case 18: return Item.getItemFromBlock(ModBlocks.block_meteor); - case 19: return Item.getItemFromBlock(ModBlocks.fusion_heater); - case 20: return Item.getItemFromBlock(ModBlocks.fusion_core); - case 21: return Item.getItemFromBlock(ModBlocks.watz_element); - case 22: return Item.getItemFromBlock(ModBlocks.ore_rare); - case 23: return Item.getItemFromBlock(ModBlocks.fusion_conductor); - case 24: return Item.getItemFromBlock(ModBlocks.reactor_computer); - case 25: return Item.getItemFromBlock(ModBlocks.machine_diesel); - case 26: return Item.getItemFromBlock(ModBlocks.machine_rtg_grey); - case 27: return ModItems.pellet_rtg; - case 28: return ModItems.pellet_rtg_weak; - case 29: return ModItems.rtg_unit; - case 30: return ModItems.gun_spark_ammo; - case 31: return ModItems.gun_fatman_ammo; - case 32: return ModItems.gun_mirv_ammo; - case 33: return ModItems.gun_defabricator_ammo; - case 34: return ModItems.gun_osipr_ammo2; - } - } - if(this == ModBlocks.deco_aluminium) - { - return ModItems.ingot_aluminium; - } - if(this == ModBlocks.deco_beryllium) - { - return ModItems.ingot_beryllium; - } - if(this == ModBlocks.deco_lead) - { - return ModItems.ingot_lead; - } - if(this == ModBlocks.deco_red_copper) - { - return ModItems.ingot_red_copper; - } - if(this == ModBlocks.deco_steel) - { - return ModItems.ingot_steel; - } - if(this == ModBlocks.deco_titanium) - { - return ModItems.ingot_titanium; - } - if(this == ModBlocks.deco_tungsten) - { - return ModItems.ingot_tungsten; - } - if(this == ModBlocks.deco_asbestos) - { - return ModItems.ingot_asbestos; - } - if(this == ModBlocks.ore_cinnebar) { - return ModItems.cinnebar; - } - if(this == ModBlocks.ore_coltan) { - return ModItems.fragment_coltan; - } - if(this == ModBlocks.ore_cobalt || this == ModBlocks.ore_nether_cobalt) { - return ModItems.fragment_cobalt; - } - return super.getItemDropped(state, rand, fortune); - } - - @Override - public int quantityDropped(IBlockState state, int fortune, Random rand) { - if(this == ModBlocks.ore_sulfur || this == ModBlocks.ore_nether_sulfur || this == ModBlocks.ore_meteor_sulfur || this == ModBlocks.basalt_sulfur){ - return 2 + rand.nextInt(3) * fortune; - } - if(this == ModBlocks.block_niter){ - return 4 + rand.nextInt(3); - } - if(this == ModBlocks.ore_niter){ - return 1 + rand.nextInt(2) * fortune; - } - if(this == ModBlocks.ore_fluorite){ - return 2 + rand.nextInt(3) * fortune; - } - if(this == ModBlocks.ore_rare || this == ModBlocks.ore_gneiss_rare){ - return 4 + rand.nextInt(8); - } - if(this == ModBlocks.block_meteor_broken) - { - return 1 + rand.nextInt(3); - } - if(this == ModBlocks.block_meteor_treasure) - { - return 1 + rand.nextInt(3); - } - if(this == ModBlocks.ore_cobalt) { - return 4 + rand.nextInt(6); - } - if(this == ModBlocks.ore_nether_cobalt) { - return 5 + rand.nextInt(8); - } - return super.quantityDropped(state, fortune, rand); - } - - @Override - public int damageDropped(IBlockState state) { - return this == ModBlocks.waste_planks ? 1 : 0; - } - - - @Override - public void neighborChanged(IBlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos) { - if (world.getBlockState(pos.down()).getBlock() == ModBlocks.ore_oil_empty) { - world.setBlockState(pos, ModBlocks.ore_oil_empty.getDefaultState()); - world.setBlockState(pos.down(), ModBlocks.ore_oil.getDefaultState()); - } - } - - @Override - public void addInformation(ItemStack stack, World player, List tooltip, ITooltipFlag advanced) { - if(stack.getItem() == Item.getItemFromBlock(ModBlocks.ore_uranium) || stack.getItem() == Item.getItemFromBlock(ModBlocks.ore_gneiss_uranium) || stack.getItem() == Item.getItemFromBlock(ModBlocks.ore_nether_uranium)){ - tooltip.add("High-Radiation creates medium amounts of schrabidium inside this block"); - } - if(stack.getItem() == Item.getItemFromBlock(ModBlocks.ore_schrabidium) || stack.getItem() == Item.getItemFromBlock(ModBlocks.ore_gneiss_schrabidium) || stack.getItem() == Item.getItemFromBlock(ModBlocks.ore_nether_schrabidium)){ - tooltip.add("High-Radiation has created medium amounts of schrabidium inside this block"); - } - if(stack.getItem() == Item.getItemFromBlock(ModBlocks.ore_oil)){ - tooltip.add("You weren't supposed to mine that."); - tooltip.add("Come on, get a derrick you doofus."); - } - } - - @Override - public void onEntityWalk(World worldIn, BlockPos pos, Entity entity) { - if(entity instanceof EntityLivingBase) - this.module.applyEffects((EntityLivingBase)entity, 0.5F, 0, false, EnumHand.MAIN_HAND); - } - - @Override - public void onEntityCollidedWithBlock(World worldIn, BlockPos pos, IBlockState state, Entity entity){ - if(entity instanceof EntityLivingBase) - this.module.applyEffects((EntityLivingBase)entity, 0.5F, 0, false, EnumHand.MAIN_HAND); - } - - @Override - public Block setSoundType(SoundType sound) { - return super.setSoundType(sound); - } -} diff --git a/src/main/java/com/hbm/blocks/generic/BlockOutgas.java b/src/main/java/com/hbm/blocks/generic/BlockOutgas.java index cb10c4ad2e..b7b0d7032b 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockOutgas.java +++ b/src/main/java/com/hbm/blocks/generic/BlockOutgas.java @@ -10,7 +10,6 @@ import com.hbm.modules.ItemHazardModule; import net.minecraft.block.Block; -import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.Entity; import net.minecraft.init.Blocks; @@ -18,7 +17,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -public class BlockOutgas extends BlockOre implements IItemHazard { +public class BlockOutgas extends BlockNTMOre implements IItemHazard { boolean randomTick; int rate; @@ -27,8 +26,8 @@ public class BlockOutgas extends BlockOre implements IItemHazard { ItemHazardModule module; - public BlockOutgas(Material mat, boolean randomTick, int rate, boolean onBreak, String s) { - super(mat, s, 1); + public BlockOutgas(boolean randomTick, int rate, boolean onBreak, String s) { + super(s, 1); this.module = new ItemHazardModule(); this.setTickRandomly(randomTick); this.randomTick = randomTick; @@ -37,8 +36,8 @@ public BlockOutgas(Material mat, boolean randomTick, int rate, boolean onBreak, this.onNeighbour = false; } - public BlockOutgas(Material mat, boolean randomTick, int rate, boolean onBreak, boolean onNeighbour, String s) { - this(mat, randomTick, rate, onBreak, s); + public BlockOutgas(boolean randomTick, int rate, boolean onBreak, boolean onNeighbour, String s) { + this(randomTick, rate, onBreak, s); this.module = new ItemHazardModule(); this.onNeighbour = onNeighbour; } diff --git a/src/main/java/com/hbm/blocks/machine/DummyBlockFluidTank.java b/src/main/java/com/hbm/blocks/machine/DummyBlockFluidTank.java index 39b2797698..27c0c677d8 100644 --- a/src/main/java/com/hbm/blocks/machine/DummyBlockFluidTank.java +++ b/src/main/java/com/hbm/blocks/machine/DummyBlockFluidTank.java @@ -95,11 +95,10 @@ public Item getItemDropped(IBlockState state, Random rand, int fortune) { public ItemStack getPickBlock(IBlockState state, RayTraceResult target, World world, BlockPos pos, EntityPlayer player) { return new ItemStack(ModBlocks.machine_fluidtank); } - + @Override public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { - if(world.isRemote) - { + if(world.isRemote) { return true; } else if(!player.isSneaking()) { diff --git a/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java b/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java index 9d21f18fdd..9c339ca24b 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java +++ b/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java @@ -141,7 +141,7 @@ public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, Entity world.setBlockState(pos, world.getBlockState(pos).withProperty(FACING, EnumFacing.EAST), 2); if(MultiblockHandler.checkSpace(world, pos, MultiblockHandler.fluidTankDimensionEW)) { MultiblockHandler.fillUp(world, pos, MultiblockHandler.fluidTankDimensionEW, ModBlocks.dummy_block_fluidtank); - + // DummyBlockFluidTank.safeBreak = true; world.setBlockState(pos.add(1, 0, 1), ModBlocks.dummy_port_fluidtank.getDefaultState()); diff --git a/src/main/java/com/hbm/blocks/machine/MachineFrackingTower.java b/src/main/java/com/hbm/blocks/machine/MachineFrackingTower.java index 4d1c797416..06e756e369 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineFrackingTower.java +++ b/src/main/java/com/hbm/blocks/machine/MachineFrackingTower.java @@ -4,7 +4,6 @@ import com.hbm.blocks.ModBlocks; import com.hbm.handler.MultiblockHandler; import com.hbm.handler.MultiblockHandlerXR; -import com.hbm.interfaces.IMultiBlock; import com.hbm.lib.InventoryHelper; import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntityProxyCombo; diff --git a/src/main/java/com/hbm/config/BedrockOreJsonConfig.java b/src/main/java/com/hbm/config/BedrockOreJsonConfig.java index 256b3a9907..e79bd715f8 100644 --- a/src/main/java/com/hbm/config/BedrockOreJsonConfig.java +++ b/src/main/java/com/hbm/config/BedrockOreJsonConfig.java @@ -44,8 +44,24 @@ public static boolean isOreAllowed(int dimID, String ore){ } public static void setDefaults() { - addEntry(0, 30, Arrays.asList("orePlutonium", "oreQuartz", "oreInfernalCoal", "oreRedPhosphorus", "oreSchrabidium", "oreNeodymium", "oreNitanium"), false); - addEntry(-1, 60, Arrays.asList("orePlutonium", "oreQuartz", "oreInfernalCoal", "oreRedPhosphorus", "oreSchrabidium", "oreNeodymium", "oreNitanium"), true); + addEntry(0, 30, Arrays.asList( + "orePlutonium", + "oreQuartz", + "oreInfernalCoal", + "oreRedPhosphorus", + "oreSchrabidium", + "oreNeodymium", + "oreNitanium" + ), false); + addEntry(-1, 60, Arrays.asList( + "orePlutonium", + "oreQuartz", + "oreInfernalCoal", + "oreRedPhosphorus", + "oreSchrabidium", + "oreNeodymium", + "oreNitanium" + ), true); } public static void addEntry(int dimID, int rarity, List ores, Boolean isWhiteList){ diff --git a/src/main/java/com/hbm/config/MachineConfig.java b/src/main/java/com/hbm/config/MachineConfig.java index e6f2d43644..908a984c10 100644 --- a/src/main/java/com/hbm/config/MachineConfig.java +++ b/src/main/java/com/hbm/config/MachineConfig.java @@ -45,6 +45,8 @@ public class MachineConfig { public static int crateByteSize = 8; + public static int rbmkJumpTemp = 1250; + public static boolean isFluidAllowed(Fluid f){ boolean isInList = blacklistedMixerFluids.contains(f.getName()); if(uuMixerFluidListIsWhitelist) return isInList; @@ -97,5 +99,6 @@ public static void loadFromConfig(Configuration config) { blacklistedMixerFluids = CommonConfig.createConfigHashSet(config, CATEGORY_MACHINE, generateConfigName(26, "blacklistedUUMixerFluids"), "List of fluids that can not be made by UU Mixer. - (String)", "String", new String[]{ "liquid_osmiridium" }); crateByteSize = CommonConfig.createConfigInt(config, CATEGORY_MACHINE, generateConfigName(27, "crateMaxByteSize"), "Controls how big the maximum storage size of mined crates can be. Warning going beond 32kb can cause freezing/crashes. - (int)", 8); + rbmkJumpTemp = CommonConfig.createConfigInt(config, CATEGORY_MACHINE, generateConfigName(28, "rbmkJumpTemp"), "Controls at which rbmk column temperature the lid jumping begins. Can not be < 20°C. Set to > 1500°C to turn off. Default is 1250°C - (int)", 1250); } } diff --git a/src/main/java/com/hbm/entity/mob/EntityRADBeast.java b/src/main/java/com/hbm/entity/mob/EntityRADBeast.java index 1ff48acc75..edc106d9ed 100644 --- a/src/main/java/com/hbm/entity/mob/EntityRADBeast.java +++ b/src/main/java/com/hbm/entity/mob/EntityRADBeast.java @@ -208,32 +208,28 @@ protected Item getDropItem() { } @Override - protected void dropFewItems(boolean beenHit, int looting) { - if(beenHit) { - - if(looting > 0) { + protected void dropLoot(boolean wasRecentlyHit, int looting, DamageSource source) { + super.dropLoot(wasRecentlyHit, looting, source); + if(looting > 0) { this.dropItem(ModItems.nugget_polonium, looting); - } - - int count = this.rand.nextInt(3) + 1; - - for(int i = 0; i < count; i++) { - - int r = this.rand.nextInt(3); - - if(r == 0) { - this.dropItem(this.isWet() ? ModItems.waste_uranium : ModItems.rod_uranium_fuel_depleted, 1); - - } else if(r == 1) { - this.dropItem(this.isWet() ? ModItems.waste_mox : ModItems.rod_mox_fuel_depleted, 1); - - } else if(r == 2) { - this.dropItem(this.isWet() ? ModItems.waste_plutonium : ModItems.rod_plutonium_fuel_depleted, 1); - - } - } + } + + int count = this.rand.nextInt(3) + 1; + + for(int i = 0; i < count; i++) { + + int r = this.rand.nextInt(3); + + if(r == 0) { + this.dropItem(this.isWet() ? ModItems.waste_uranium : ModItems.rod_uranium_fuel_depleted, 1); + + } else if(r == 1) { + this.dropItem(this.isWet() ? ModItems.waste_mox : ModItems.rod_mox_fuel_depleted, 1); + + } else if(r == 2) { + this.dropItem(this.isWet() ? ModItems.waste_plutonium : ModItems.rod_plutonium_fuel_depleted, 1); + + } } } - - } diff --git a/src/main/java/com/hbm/handler/ArmorModHandler.java b/src/main/java/com/hbm/handler/ArmorModHandler.java index b412a14d0a..dc27463430 100644 --- a/src/main/java/com/hbm/handler/ArmorModHandler.java +++ b/src/main/java/com/hbm/handler/ArmorModHandler.java @@ -73,6 +73,8 @@ public static boolean isApplicable(ItemStack armor, ItemStack mod) { * @param mod */ public static void applyMod(ItemStack armor, ItemStack mod) { + + if(mod == null | mod.isEmpty()) return; if(!armor.hasTagCompound()) armor.setTagCompound(new NBTTagCompound()); diff --git a/src/main/java/com/hbm/handler/MultiblockHandler.java b/src/main/java/com/hbm/handler/MultiblockHandler.java index 61ddc5284d..407615b8b6 100644 --- a/src/main/java/com/hbm/handler/MultiblockHandler.java +++ b/src/main/java/com/hbm/handler/MultiblockHandler.java @@ -1,15 +1,25 @@ package com.hbm.handler; import com.hbm.interfaces.IDummy; +import com.hbm.main.MainRegistry; +import com.hbm.packet.NBTPacket; +import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.machine.TileEntityDummy; import net.minecraft.block.Block; +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.play.server.SPacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos.MutableBlockPos; import net.minecraft.world.World; +import net.minecraftforge.fml.common.network.NetworkRegistry; +import net.minecraftforge.fml.common.network.simpleimpl.IMessage; public class MultiblockHandler { @@ -128,8 +138,7 @@ public static boolean fillUp(World world, BlockPos pos, int[] i, Block block) { for(int b = y - i[3]; b <= y + i[2]; b++) { for(int c = z - i[5]; c <= z + i[4]; c++) { if(!(a == x && b == y && c == z)) { - if(!world.isRemote) - world.setBlockState(replace.setPos(a, b, c), block.getDefaultState()); + world.setBlockState(replace.setPos(a, b, c), block.getDefaultState()); TileEntity te = world.getTileEntity(replace.setPos(a, b, c)); if(te instanceof TileEntityDummy) { TileEntityDummy dummy = (TileEntityDummy)te; diff --git a/src/main/java/com/hbm/inventory/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/AssemblerRecipes.java index 4ab297b74a..827467f1db 100644 --- a/src/main/java/com/hbm/inventory/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/AssemblerRecipes.java @@ -1023,7 +1023,7 @@ private static void registerDefaults() { makeRecipe(new ComparableStack(ModBlocks.sliding_gate_door, 1), new AStack[]{new OreDictStack(PB.plate(), 4), new OreDictStack(STEEL.plate(), 12), new OreDictStack(ALLOY.plate(), 4), new ComparableStack(ModItems.plate_polymer, 2), new OreDictStack(STEEL.block(), 1), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.bolt_dura_steel, 2), new OreDictStack(KEY_WHITE, 2)}, 500); makeRecipe(new ComparableStack(ModBlocks.transition_seal, 1), new AStack[]{new ComparableStack(ModBlocks.cmb_brick_reinforced, 16), new OreDictStack(STEEL.plate(), 64), new OreDictStack(ALLOY.plate(), 40), new ComparableStack(ModItems.plate_polymer, 36), new OreDictStack(STEEL.block(), 24), new ComparableStack(ModItems.motor_desh, 16), new ComparableStack(ModItems.bolt_dura_steel, 12), new OreDictStack(KEY_YELLOW, 4)}, 5000); - makeRecipe(new ComparableStack(ModBlocks.control0, 1), new AStack[]{new ComparableStack(ModItems.circuit_targeting_tier5), new OreDictStack(STEEL.block(), 1), new ComparableStack(ModItems.wire_copper, 24), new ComparableStack(ModBlocks.pole_top)}, 100); + makeRecipe(new ComparableStack(ModBlocks.control_panel_custom, 1), new AStack[]{new ComparableStack(ModItems.circuit_targeting_tier5), new OreDictStack(STEEL.block(), 1), new ComparableStack(ModItems.wire_copper, 24), new ComparableStack(ModBlocks.pole_top)}, 100); makeRecipe(new ComparableStack(ModBlocks.railgun_plasma, 1), new AStack[]{new OreDictStack(STEEL.plate(), 24), new ComparableStack(ModItems.hull_big_steel, 2), new ComparableStack(ModItems.hull_small_steel, 6), new ComparableStack(ModItems.pipes_steel, 2), new ComparableStack(ModBlocks.machine_desh_battery, 4), new ComparableStack(ModItems.coil_copper, 16), new ComparableStack(ModItems.coil_copper_torus, 8), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.circuit_targeting_tier4, 4), new ComparableStack(ModItems.circuit_targeting_tier3, 2), new OreDictStack(ANY_PLASTIC.ingot(), 4)}, 500); /// HIDDEN /// diff --git a/src/main/java/com/hbm/inventory/DFCRecipes.java b/src/main/java/com/hbm/inventory/DFCRecipes.java index 6dfd61db56..a6408d2572 100644 --- a/src/main/java/com/hbm/inventory/DFCRecipes.java +++ b/src/main/java/com/hbm/inventory/DFCRecipes.java @@ -84,7 +84,6 @@ public static void register() { DFCRecipes.setRecipe(690000000000L, ModItems.gun_uboinik, new ItemStack(ModItems.gun_supershotgun)); DFCRecipes.setRecipe(1000000000000L, ModItems.undefined, new ItemStack(ModItems.glitch)); - DFCRecipes.setRecipe(10000000000000L, ModItems.rod_of_discord, new ItemStack(ModItems.wand)); DFCRecipes.setRecipe(12000000000000L, ModItems.battery_spark_cell_power, new ItemStack(ModItems.battery_creative)); DFCRecipes.setRecipe(69000000000000L, Items.WRITABLE_BOOK, new ItemStack(ModItems.book_of_)); } diff --git a/src/main/java/com/hbm/inventory/control_panel/ContainerControlEdit.java b/src/main/java/com/hbm/inventory/control_panel/ContainerControlEdit.java index 9ce84d5fe0..edab00ee01 100644 --- a/src/main/java/com/hbm/inventory/control_panel/ContainerControlEdit.java +++ b/src/main/java/com/hbm/inventory/control_panel/ContainerControlEdit.java @@ -24,19 +24,19 @@ public class ContainerControlEdit extends Container { public ContainerControlEdit(InventoryPlayer invPlayer, TileEntityControlPanel te) { control = te; - input = this.addSlotToContainer(new SlotItemHandlerDisableable(te.inventory, 0, 5, 51)); + input = this.addSlotToContainer(new SlotItemHandlerDisableable(te.inventory, 0, 8, 13)); for(int i = 0; i < 3; i++) { for(int j = 0; j < 9; j++) { - invSlots.add((SlotDisableable)this.addSlotToContainer(new SlotDisableable(invPlayer, j + i * 9 + 9, 48 + j * 18, 152 + i * 18))); + invSlots.add((SlotDisableable)this.addSlotToContainer(new SlotDisableable(invPlayer, j + i * 9 + 9, 73 + j * 18, 162 + i * 18))); } } for(int i = 0; i < 9; i++) { - invSlots.add((SlotDisableable)this.addSlotToContainer(new SlotDisableable(invPlayer, i, 48 + i * 18, 210))); + invSlots.add((SlotDisableable)this.addSlotToContainer(new SlotDisableable(invPlayer, i, 73 + i * 18, 220))); } } diff --git a/src/main/java/com/hbm/inventory/control_panel/Control.java b/src/main/java/com/hbm/inventory/control_panel/Control.java index 67d0e3d74a..12e6ee9630 100644 --- a/src/main/java/com/hbm/inventory/control_panel/Control.java +++ b/src/main/java/com/hbm/inventory/control_panel/Control.java @@ -10,6 +10,7 @@ import java.util.Map.Entry; import java.util.Set; +import com.hbm.inventory.control_panel.controls.ControlType; import com.hbm.render.amlfrom1710.IModelCustom; import net.minecraft.nbt.NBTBase; @@ -35,14 +36,28 @@ public abstract class Control { public Map varsPrev = new HashMap<>(); //A set of the custom variables the user is allowed to remove public Set customVarNames = new HashSet<>(); + // map of (static) initial configurations for a control e.g. color, size + public Map configMap = new HashMap<>(); public float posX; public float posY; - + + public Control(String name, ControlPanel panel){ this.name = name; this.panel = panel; } - + + public abstract ControlType getControlType(); + + public abstract float[] getSize(); + + public Map getConfigs() { + return configMap; + } + public void applyConfigs(Map configs) { + configMap = configs; + } + public void renderBatched(){}; public void render(){}; public List getOutEvents(){return Collections.emptyList();}; @@ -51,10 +66,27 @@ public Control(String name, ControlPanel panel){ public abstract IModelCustom getModel(); @SideOnly(Side.CLIENT) public abstract ResourceLocation getGuiTexture(); - public abstract AxisAlignedBB getBoundingBox(); - public abstract float[] getBox(); + + public AxisAlignedBB getBoundingBox() { + float width = getSize()[0]; + float length = getSize()[1]; + float height = getSize()[2]; + // offset to fix placement position error for controls not 1x1. + return new AxisAlignedBB(-width/2, 0, -length/2, width/2, height, length/2).offset(posX+((width>1?Math.abs(1-width)/2:(width-1)/2)), 0, posY+((length>1)? Math.abs(1-length)/2 : (length-1)/2)); +// .offset(posX+((width>1)?Math.abs(1-width/2):0), 0, posY+Math.abs(1-length)/2); +// GlStateManager.translate((width>1)? Math.abs(1-width)/2 : (width-1)/2, 0, (length>1)? Math.abs(1-length)/2 : 0); + } + + public float[] getBox() { + float width = getSize()[0]; + float length = getSize()[1]; + return new float[] {posX, posY, posX + width, posY + length}; + } + public abstract Control newControl(ControlPanel panel); + public abstract void populateDefaultNodes(List receiveEvents); + public void receiveEvent(ControlEvent evt){ NodeSystem sys = receiveNodeMap.get(evt.name); if(sys != null){ @@ -70,7 +102,7 @@ public DataValue getVar(String name){ public DataValue getGlobalVar(String name){ return panel.getVar(name); } - + public NBTTagCompound writeToNBT(NBTTagCompound tag){ tag.setString("name", ControlRegistry.getName(this.getClass())); tag.setString("myName", name); @@ -82,15 +114,16 @@ public NBTTagCompound writeToNBT(NBTTagCompound tag){ NBTTagCompound sendNodes = new NBTTagCompound(); for(Entry e : sendNodeMap.entrySet()){ - sendNodes.setTag(e.getKey(), e.getValue().writeToNBT(new NBTTagCompound())); + NBTTagCompound eventNodeMap = e.getValue().writeToNBT(new NBTTagCompound()); + sendNodes.setTag(e.getKey(), eventNodeMap); } - tag.setTag("sendNodes", sendNodes); + tag.setTag("SN", sendNodes); NBTTagCompound receiveNodes = new NBTTagCompound(); for(Entry e : receiveNodeMap.entrySet()){ receiveNodes.setTag(e.getKey(), e.getValue().writeToNBT(new NBTTagCompound())); } - tag.setTag("receiveNodes", receiveNodes); + tag.setTag("RN", receiveNodes); NBTTagCompound customVarNames = new NBTTagCompound(); int i = 0; @@ -98,7 +131,7 @@ public NBTTagCompound writeToNBT(NBTTagCompound tag){ customVarNames.setString("var" + i, s); i++; } - tag.setTag("customvarnames", customVarNames); + tag.setTag("customvars", customVarNames); NBTTagCompound connectedSet = new NBTTagCompound(); for(i = 0; i < this.connectedSet.size(); i ++){ @@ -106,10 +139,17 @@ public NBTTagCompound writeToNBT(NBTTagCompound tag){ connectedSet.setInteger("py"+i, this.connectedSet.get(i).getY()); connectedSet.setInteger("pz"+i, this.connectedSet.get(i).getZ()); } - tag.setTag("connectedset", connectedSet); + tag.setTag("conset", connectedSet); - tag.setFloat("posX", posX); - tag.setFloat("posY", posY); + tag.setFloat("X", posX); + tag.setFloat("Y", posY); + + NBTTagCompound configs = new NBTTagCompound(); + for (Entry e : configMap.entrySet()) { + configs.setTag(e.getKey(), e.getValue().writeToNBT()); + } + tag.setTag("configs", configs); + return tag; } @@ -126,25 +166,25 @@ public void readFromNBT(NBTTagCompound tag){ sendNodeMap.clear(); receiveNodeMap.clear(); - NBTTagCompound sendNodes = tag.getCompoundTag("sendNodes"); + NBTTagCompound sendNodes = tag.getCompoundTag("SN"); for(String s : sendNodes.getKeySet()){ NodeSystem sys = new NodeSystem(this); sendNodeMap.put(s, sys); sys.readFromNBT(sendNodes.getCompoundTag(s)); } - NBTTagCompound receiveNodes = tag.getCompoundTag("receiveNodes"); + NBTTagCompound receiveNodes = tag.getCompoundTag("RN"); for(String s : receiveNodes.getKeySet()){ NodeSystem sys = new NodeSystem(this); receiveNodeMap.put(s, sys); sys.readFromNBT(receiveNodes.getCompoundTag(s)); } - NBTTagCompound customVarNames = tag.getCompoundTag("customvarnames"); + NBTTagCompound customVarNames = tag.getCompoundTag("custonvars"); for(int i = 0; i < customVarNames.getKeySet().size(); i ++){ this.customVarNames.add(customVarNames.getString("var"+i)); } - NBTTagCompound connectedSet = tag.getCompoundTag("connectedset"); + NBTTagCompound connectedSet = tag.getCompoundTag("conset"); for(int i = 0; i < connectedSet.getKeySet().size()/3; i ++){ int x = connectedSet.getInteger("px"+i); int y = connectedSet.getInteger("py"+i); @@ -152,7 +192,14 @@ public void readFromNBT(NBTTagCompound tag){ this.connectedSet.add(new BlockPos(x, y, z)); } - this.posX = tag.getFloat("posX"); - this.posY = tag.getFloat("posY"); + this.posX = tag.getFloat("X"); + this.posY = tag.getFloat("Y"); + + NBTTagCompound configs = tag.getCompoundTag("configs"); + for (String e : configs.getKeySet()) { + configMap.put(e, DataValue.newFromNBT(configs.getTag(e))); + } } + + } diff --git a/src/main/java/com/hbm/inventory/control_panel/ControlEvent.java b/src/main/java/com/hbm/inventory/control_panel/ControlEvent.java index c87a85cd80..21279dc587 100644 --- a/src/main/java/com/hbm/inventory/control_panel/ControlEvent.java +++ b/src/main/java/com/hbm/inventory/control_panel/ControlEvent.java @@ -96,7 +96,12 @@ public static void init(){ register(new ControlEvent("lever_toggle").setVar("isOn", false)); register(new ControlEvent("spinny_light_power").setVar("isOn", false)); register(new ControlEvent("siren_set_state").setVar("isOn", false)); - register(new ControlEvent("ctrl_button_press")); + register(new ControlEvent("tank_set_mode").setVar("mode", 0)); + register(new ControlEvent("rbmk_ctrl_set_color").setVar("color", 0)); + register(new ControlEvent("rbmk_ctrl_set_level").setVar("level", 0)); + register(new ControlEvent("rbmk_crane_move").setVar("up", 0).setVar("down", 0).setVar("left", 0).setVar("right", 0)); + register(new ControlEvent("rbmk_crane_load")); + register(new ControlEvent("ctrl_press").setVar("isSneaking", false)); register(new ControlEvent("initialize")); } } diff --git a/src/main/java/com/hbm/inventory/control_panel/ControlEventSystem.java b/src/main/java/com/hbm/inventory/control_panel/ControlEventSystem.java index 66c4c82658..6809f00c8b 100644 --- a/src/main/java/com/hbm/inventory/control_panel/ControlEventSystem.java +++ b/src/main/java/com/hbm/inventory/control_panel/ControlEventSystem.java @@ -8,6 +8,7 @@ import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.event.world.WorldEvent; @@ -93,8 +94,9 @@ public void broadcastEvent(BlockPos from, ControlEvent evt, BlockPos pos){ if(map == null) return; IControllable c = map.get(pos); - if(c != null) + if(c != null) { c.receiveEvent(from, evt); + } } public void broadcastEvent(BlockPos from, ControlEvent evt, Collection positions){ diff --git a/src/main/java/com/hbm/inventory/control_panel/ControlPanel.java b/src/main/java/com/hbm/inventory/control_panel/ControlPanel.java index d747db0bd7..50d7779f0c 100644 --- a/src/main/java/com/hbm/inventory/control_panel/ControlPanel.java +++ b/src/main/java/com/hbm/inventory/control_panel/ControlPanel.java @@ -1,12 +1,14 @@ package com.hbm.inventory.control_panel; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.Map.Entry; +import com.hbm.main.MainRegistry; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.OpenGlHelper; +import org.lwjgl.opengl.GL11; import org.lwjgl.util.vector.Matrix4f; +import org.lwjgl.util.vector.Vector3f; import org.lwjgl.util.vector.Vector4f; import com.hbm.packet.ControlPanelUpdatePacket.VarUpdate; @@ -27,20 +29,30 @@ public class ControlPanel { //Variables that were changed in the last tick public List changedVars = new ArrayList<>(); //Global variables, accessible by every control as well as the owner tile entity for state like redstone - public Map globalVars = new HashMap<>(); - public Map globalVarsPrev = new HashMap<>(); + public Map globalVars = new LinkedHashMap<>(); + public Map globalVarsPrev = new LinkedHashMap<>(); //Client only transform for getting from panel local space to block space. Used for both rendering and figuring out which control a player clicks @SideOnly(Side.CLIENT) public Matrix4f transform; @SideOnly(Side.CLIENT) public Matrix4f inv_transform; - public float width; + public float height; + public float angle; // RADIANS + public float a_off; + public float b_off; + public float c_off; + public float d_off; - public ControlPanel(IControllable parent, float width, float height){ + public ControlPanel(IControllable parent, float height, float angle, float a_off, float b_off, float c_off, float d_off) { this.parent = parent; - this.width = width; this.height = height; + this.angle = angle; + this.a_off = a_off; + this.b_off = b_off; + this.c_off = c_off; + this.d_off = d_off; + } @SideOnly(Side.CLIENT) @@ -53,7 +65,12 @@ public ControlPanel setTransform(Matrix4f transform){ public void render(){ for(Control c : controls) { - c.render(); + float width = c.getSize()[0]; + float length = c.getSize()[1]; + GlStateManager.pushMatrix(); + GlStateManager.translate(((width>1?Math.abs(1-width)/2:(width-1)/2)), 0, ((length>1)? Math.abs(1-length)/2 : (length-1)/2)); + c.render(); + GlStateManager.popMatrix(); } } @@ -74,10 +91,10 @@ public void crossCheckVars(int idx, Map vars, Map configs = new HashMap<>(); + NBTTagCompound config_tag = ct.getCompoundTag("configs"); + for (String s : config_tag.getKeySet()) { + configs.put(s, DataValue.newFromNBT(config_tag.getTag(s))); + } + c.applyConfigs(configs); + this.controls.add(c); c.readFromNBT(ct); } - + + height = tag.getFloat("height"); + angle = tag.getFloat("angle"); + a_off = tag.getFloat("a_offset"); + b_off = tag.getFloat("b_offset"); + c_off = tag.getFloat("c_offset"); + d_off = tag.getFloat("d_offset"); } public void receiveEvent(BlockPos from, ControlEvent evt){ @@ -133,12 +170,6 @@ public void receiveEvent(BlockPos from, ControlEvent evt){ } } - public float[] getBox(){ - float wHalf = width * 0.5F; - float hHalf = height * 0.5F; - return new float[] { -wHalf, -hHalf, wHalf, hHalf }; - } - public DataValue getVar(String name){ return globalVars.getOrDefault(name, new DataValueFloat(0)); } @@ -157,16 +188,25 @@ public Control getSelectedControl(Vec3d pos, Vec3d direction){ double dist = Double.MAX_VALUE; Control ctrl = null; for(Control c : controls) { - RayTraceResult r = c.getBoundingBox().calculateIntercept(start, end); - - if(r != null && r.typeOfHit != Type.MISS) { - double newDist = r.hitVec.squareDistanceTo(start); - if(newDist < dist) { - dist = newDist; - ctrl = c; + if (c.getBoundingBox() != null) { + RayTraceResult r = c.getBoundingBox().calculateIntercept(start, end); + + if (r != null && r.typeOfHit != Type.MISS) { + double newDist = r.hitVec.squareDistanceTo(start); + if (newDist < dist) { + dist = newDist; + ctrl = c; + } } } } return ctrl; } + + public static float getSlopeHeightFromZ(float z, float height, float angle) { + double halfH = 0.5 * Math.tan(angle); + + return (float) ((height - halfH) + Math.tan(angle) * z); + } + } diff --git a/src/main/java/com/hbm/inventory/control_panel/ControlRegistry.java b/src/main/java/com/hbm/inventory/control_panel/ControlRegistry.java index bbd6850fd2..69fa8f2985 100644 --- a/src/main/java/com/hbm/inventory/control_panel/ControlRegistry.java +++ b/src/main/java/com/hbm/inventory/control_panel/ControlRegistry.java @@ -6,19 +6,38 @@ import java.util.Map; import java.util.Map.Entry; -import com.hbm.inventory.control_panel.controls.Button; +import com.hbm.inventory.control_panel.controls.*; public class ControlRegistry { - private static Map registry = new HashMap<>(); + public static Map registry = new HashMap<>(); private static Map, String> classToName = new HashMap<>(); - + private ControlRegistry(){ } public static void init(){ - registry.put("button", new Button("Button", null)); - + registry.put("button_push", new ButtonPush("Push Button", null)); + registry.put("button_emergency_push", new ButtonEmergencyPush("Emergency Push Button", null)); + registry.put("button_encased_push", new ButtonEncasedPush("Encased Push Button", null)); + + registry.put("switch_toggle", new SwitchToggle("Toggle Switch", null)); + registry.put("switch_rotary_toggle", new SwitchRotaryToggle("Rotary Toggle Switch", null)); + + registry.put("slider_vertical", new SliderVertical("Vertical Slider", null)); + + registry.put("knob_control", new KnobControl("Control Knob", null)); + + registry.put("display_7seg", new DisplaySevenSeg("7-seg Display", null)); + registry.put("display_text", new DisplayText("Text Display", null)); + + registry.put("dial_square", new DialSquare("Square Dial", null)); + registry.put("dial_large", new DialLarge("Large Dial", null)); + + registry.put("indicator_lamp", new IndicatorLamp("Indicator Lamp", null)); + + registry.put("label", new Label("Label", null)); + for(Entry e : registry.entrySet()){ classToName.put(e.getValue().getClass(), e.getKey()); } @@ -31,6 +50,15 @@ public static List getAllControls(){ return l; } + public static List getAllControlsOfType(ControlType type) { + List l = new ArrayList<>(); + for (Entry c : registry.entrySet()) + if (c.getValue().getControlType() == type) { + l.add(c.getKey()); + } + return l; + } + public static Control getNew(String name, ControlPanel panel){ return registry.get(name).newControl(panel); } diff --git a/src/main/java/com/hbm/inventory/control_panel/DataValueFloat.java b/src/main/java/com/hbm/inventory/control_panel/DataValueFloat.java index 671bca98d4..ff478a898c 100644 --- a/src/main/java/com/hbm/inventory/control_panel/DataValueFloat.java +++ b/src/main/java/com/hbm/inventory/control_panel/DataValueFloat.java @@ -10,7 +10,11 @@ public class DataValueFloat extends DataValue { public DataValueFloat(float f) { num = f; } - + + public DataValueFloat(boolean b) { + num = (b)? 1.0F : 0.0F; + } + @Override public float getNumber() { return num; diff --git a/src/main/java/com/hbm/inventory/control_panel/GuiControlEdit.java b/src/main/java/com/hbm/inventory/control_panel/GuiControlEdit.java index 04502b5cb0..ec1af2ec41 100644 --- a/src/main/java/com/hbm/inventory/control_panel/GuiControlEdit.java +++ b/src/main/java/com/hbm/inventory/control_panel/GuiControlEdit.java @@ -24,7 +24,7 @@ public class GuiControlEdit extends GuiContainer { - public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/control_panel/gui_control.png"); + public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/control_panel/gui_placement_back.png"); public float mouseX, mouseY; @@ -37,17 +37,22 @@ public class GuiControlEdit extends GuiContainer { public SubElementLinker linker; public SubElementEventEditor eventEditor; public SubElementNodeEditor nodeEditor; + public SubElementPanelResize panelResize; + public SubElementItemConfig itemConfig; + public SubElementVariables variables; public Control currentEditControl; - + public ScaledResolution res; + + public boolean isEditMode = false; // when editing an existing control public GuiControlEdit(InventoryPlayer i, TileEntityControlPanel te) { super(new ContainerControlEdit(i, te)); container = (ContainerControlEdit)this.inventorySlots; control = te; - this.xSize = 216; - this.ySize = 234; + this.xSize = 256; + this.ySize = 256; res = new ScaledResolution(Minecraft.getMinecraft()); } @@ -58,10 +63,15 @@ public void onGuiClosed(){ linker.onClose(); eventEditor.onClose(); nodeEditor.onClose(); + panelResize.onClose(); + itemConfig.onClose(); + variables.onClose(); NBTTagCompound tag = new NBTTagCompound(); control.panel.writeToNBT(tag); tag.setString("full_set", ""); PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(tag, control.getPos())); + control.updateTransform(); + isEditMode = false; } @Override @@ -78,12 +88,18 @@ public void initGui() { linker = new SubElementLinker(this); eventEditor = new SubElementEventEditor(this); nodeEditor = new SubElementNodeEditor(this); + panelResize = new SubElementPanelResize(this); + itemConfig = new SubElementItemConfig(this); + variables = new SubElementVariables(this); placement.initGui(); choice.initGui(); linker.initGui(); eventEditor.initGui(); nodeEditor.initGui(); - + panelResize.initGui(); + itemConfig.initGui(); + variables.initGui(); + subElementStack.addFirst(placement); placement.enableButtons(true); } @@ -96,7 +112,7 @@ public FontRenderer getFontRenderer(){ public T addButton(T buttonIn) { return super.addButton(buttonIn); } - + public int currentButtonId(){ return this.buttonList.size(); } diff --git a/src/main/java/com/hbm/inventory/control_panel/IControllable.java b/src/main/java/com/hbm/inventory/control_panel/IControllable.java index 92d6b004a1..5c30ac2ba7 100644 --- a/src/main/java/com/hbm/inventory/control_panel/IControllable.java +++ b/src/main/java/com/hbm/inventory/control_panel/IControllable.java @@ -2,16 +2,21 @@ import java.util.Collections; import java.util.List; +import java.util.Map; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; public interface IControllable { - public default List getInEvents(){return Collections.emptyList();} - public default List getOutEvents(){return Collections.emptyList();} - - public void receiveEvent(BlockPos from, ControlEvent e); + default List getInEvents(){return Collections.emptyList();} + default List getOutEvents(){return Collections.emptyList();} + + default Map getQueryData(){return Collections.emptyMap();} + + // here most things respond by sending the out event back + // -- a lazy fix for other controls that share a panel not receiving the broadcast event too. + default void receiveEvent(BlockPos from, ControlEvent e) {} public BlockPos getControlPos(); public World getControlWorld(); diff --git a/src/main/java/com/hbm/inventory/control_panel/NodeConnection.java b/src/main/java/com/hbm/inventory/control_panel/NodeConnection.java index 44db623e62..24a6876474 100644 --- a/src/main/java/com/hbm/inventory/control_panel/NodeConnection.java +++ b/src/main/java/com/hbm/inventory/control_panel/NodeConnection.java @@ -48,35 +48,35 @@ public NodeConnection(String name, Node p, int idx, boolean isInput, DataType ty public NBTTagCompound writeToNBT(NBTTagCompound tag, NodeSystem sys){ super.writeToNBT(tag, sys); - tag.setString("eleType", "connection"); +// tag.setString("eleType", "connection"); tag.setString("name", name); - tag.setInteger("connectionIdx", connectionIndex); - tag.setInteger("nodeIdx", sys.nodes.indexOf(connection)); - tag.setBoolean("isInput", isInput); - tag.setInteger("type", type.ordinal()); - tag.setTag("default", defaultValue.writeToNBT()); - tag.setBoolean("drawLine", drawsLine); + tag.setInteger("Ci", connectionIndex); + tag.setInteger("Ni", sys.nodes.indexOf(connection)); + tag.setBoolean("in", isInput); + tag.setInteger("T", type.ordinal()); + tag.setTag("D", defaultValue.writeToNBT()); + tag.setBoolean("DL", drawsLine); return tag; } public void readFromNBT(NBTTagCompound tag, NodeSystem sys){ super.readFromNBT(tag, sys); name = tag.getString("name"); - connectionIndex = tag.getInteger("connectionIdx"); - int nodeIdx = tag.getInteger("nodeIdx"); + connectionIndex = tag.getInteger("Ci"); + int nodeIdx = tag.getInteger("Ni"); if(nodeIdx == -1){ connection = null; } else { connection = sys.nodes.get(nodeIdx); } - isInput = tag.getBoolean("isInput"); - type = DataType.values()[tag.getInteger("type") % DataType.values().length]; - defaultValue = DataValue.newFromNBT(tag.getTag("default")); + isInput = tag.getBoolean("in"); + type = DataType.values()[tag.getInteger("T") % DataType.values().length]; + defaultValue = DataValue.newFromNBT(tag.getTag("D")); if(defaultValue == null){ type = DataType.NUMBER; defaultValue = new DataValueFloat(0); } - drawsLine = tag.getBoolean("drawLine"); + drawsLine = tag.getBoolean("DL"); builder = null; isTyping = false; } @@ -116,6 +116,13 @@ public NodeConnection removeConnection(){ } return null; } + + public NodeConnection setData(Node connection, int connectionIndex, boolean drawsLine) { + this.connection = connection; + this.connectionIndex = connectionIndex; + this.drawsLine = drawsLine; + return this; + } @Override public void resetOffset(){ diff --git a/src/main/java/com/hbm/inventory/control_panel/NodeElement.java b/src/main/java/com/hbm/inventory/control_panel/NodeElement.java index 69cd377b46..d7b80865d4 100644 --- a/src/main/java/com/hbm/inventory/control_panel/NodeElement.java +++ b/src/main/java/com/hbm/inventory/control_panel/NodeElement.java @@ -6,6 +6,7 @@ public class NodeElement { + public String name = "default"; public Node parent; public int index; public float offsetX; @@ -16,7 +17,14 @@ public NodeElement(Node parent, int idx){ this.index = idx; resetOffset(); } - + + public NodeElement(String name, Node parent, int idx){ + this.name = name; + this.parent = parent; + this.index = idx; + resetOffset(); + } + public void render(float mX, float mY){ } diff --git a/src/main/java/com/hbm/inventory/control_panel/NodeSystem.java b/src/main/java/com/hbm/inventory/control_panel/NodeSystem.java index 660c29c751..da1f9e3c73 100644 --- a/src/main/java/com/hbm/inventory/control_panel/NodeSystem.java +++ b/src/main/java/com/hbm/inventory/control_panel/NodeSystem.java @@ -1,11 +1,10 @@ package com.hbm.inventory.control_panel; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.Map.Entry; +import com.hbm.inventory.control_panel.nodes.NodeFunction; +import com.hbm.main.MainRegistry; import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; @@ -48,12 +47,16 @@ public class NodeSystem { protected float lastMouseX; @SideOnly(Side.CLIENT) protected float lastMouseY; - + public Control parent; public List nodes = new ArrayList<>(); public List outputNodes = new ArrayList<>(); private Map vars = new HashMap<>(); - + + // an array of subsystems owned by the various nodes sharing a system layer (sublayering is then done recursively) + // ○| ̄|_ <-- me + public Map subSystems = new HashMap<>(); + public NodeSystem(Control parent){ this.parent = parent; } @@ -79,46 +82,62 @@ public DataValue getVar(String name){ return val; } - public NBTTagCompound writeToNBT(NBTTagCompound tag){ + public NBTTagCompound writeToNBT(NBTTagCompound tag) { NBTTagCompound nodes = new NBTTagCompound(); - for(int i = 0; i < this.nodes.size(); i ++){ - nodes.setTag("node"+i, this.nodes.get(i).writeToNBT(new NBTTagCompound(), this)); + + for (int i = 0; i < this.nodes.size(); i ++) { + Node node = this.nodes.get(i); + NBTTagCompound nodeTag = node.writeToNBT(new NBTTagCompound(), this); + if (node instanceof NodeFunction) { + nodeTag.setTag("SS", subSystems.get(node).writeToNBT(new NBTTagCompound())); + } + nodes.setTag("n"+i, nodeTag); } - tag.setTag("nodes", nodes); - + tag.setTag("N", nodes); + NBTTagCompound vars = new NBTTagCompound(); - for(Entry e : this.vars.entrySet()) { + for (Entry e : this.vars.entrySet()) { vars.setTag(e.getKey(), e.getValue().writeToNBT()); } - tag.setTag("vars", vars); - + tag.setTag("V", vars); + return tag; } - - public void readFromNBT(NBTTagCompound tag){ + + public void readFromNBT(NBTTagCompound tag) { this.nodes.clear(); this.outputNodes.clear(); - NBTTagCompound nodes = tag.getCompoundTag("nodes"); - for(int i = 0; i < nodes.getKeySet().size(); i ++){ - Node node = Node.nodeFromNBT(nodes.getCompoundTag("node"+i), this); + this.subSystems.clear(); + + NBTTagCompound nodes = tag.getCompoundTag("N"); + for (int i = 0; i < nodes.getKeySet().size(); i ++) { + NBTTagCompound nodeTag = nodes.getCompoundTag("n"+i); + Node node = Node.nodeFromNBT(nodeTag, this); + + if (node instanceof NodeOutput) { + outputNodes.add((NodeOutput) node); + } + if (node instanceof NodeFunction && nodeTag.hasKey("SS")) { + NodeSystem subsystem = new NodeSystem(parent); + subsystem.readFromNBT(nodeTag.getCompoundTag("SS")); + subSystems.put(node, subsystem); + } this.nodes.add(node); - if(node instanceof NodeOutput) - outputNodes.add((NodeOutput)node); } - for(int i = 0; i < this.nodes.size(); i ++){ - this.nodes.get(i).readFromNBT(nodes.getCompoundTag("node"+i), this); + for (int i = 0; i < this.nodes.size(); i ++) { + this.nodes.get(i).readFromNBT(nodes.getCompoundTag("n"+i), this); } - - NBTTagCompound vars = tag.getCompoundTag("vars"); - for(String k : vars.getKeySet()) { + + NBTTagCompound vars = tag.getCompoundTag("V"); + for (String k : vars.getKeySet()) { NBTBase base = vars.getTag(k); DataValue val = DataValue.newFromNBT(base); - if(val != null) { + if (val != null) { this.vars.put(k, val); } } } - + @SideOnly(Side.CLIENT) public void removeClientData(){ nodeEditor = null; @@ -128,7 +147,7 @@ public void removeClientData(){ connectionInProgress = null; currentTypingBox = null; } - + @SideOnly(Side.CLIENT) public void render(float mX, float mY){ if(drag && !Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)){ @@ -138,6 +157,9 @@ public void render(float mX, float mY){ for(Node n : selectedNodes){ n.setPosition(n.posX+(gui.mouseX-lastMouseX)*nodeEditor.gridScale, n.posY+(gui.mouseY-lastMouseY)*nodeEditor.gridScale); } + for (Node n : nodes) { + n.setPosition(n.posX, n.posY); // to fix elements not rendering in edit mode + } lastMouseX = gui.mouseX; lastMouseY = gui.mouseY; } @@ -178,8 +200,13 @@ public void render(float mX, float mY){ public void addNode(Node n){ nodes.add(n); - if(n instanceof NodeOutput) - outputNodes.add((NodeOutput)n); + + if (n instanceof NodeFunction && !subSystems.containsKey(n)) { + subSystems.put(n, new NodeSystem(parent)); + } + if (n instanceof NodeOutput) { + outputNodes.add((NodeOutput) n); + } } public void removeNode(Node n){ @@ -189,6 +216,24 @@ public void removeNode(Node n){ outputNodes.remove(n); nodes.remove(n); } + + @SideOnly(Side.CLIENT) + public NodeElement getNodeElementPressed(float x, float y) { + lastMouseX = gui.mouseX; + lastMouseY = gui.mouseY; + float gridMX = (gui.mouseX-gui.getGuiLeft())*nodeEditor.gridScale + gui.getGuiLeft() + nodeEditor.gridX; + float gridMY = (gui.mouseY-gui.getGuiTop())*nodeEditor.gridScale + gui.getGuiTop() - nodeEditor.gridY; + for (int i = nodes.size()-1; i >= 0; i--) { + for (NodeElement e : nodes.get(i).otherElements) { + if (e instanceof NodeButton) { + if (e.onClick(gridMX, gridMY)) { + return e; + } + } + } + } + return null; + } @SideOnly(Side.CLIENT) public void onClick(float x, float y){ @@ -275,7 +320,7 @@ public void onClick(float x, float y){ activeNode = null; } } - + @SideOnly(Side.CLIENT) public void clickReleased(float x, float y){ float gridMX = (gui.mouseX-gui.getGuiLeft())*nodeEditor.gridScale + gui.getGuiLeft() + nodeEditor.gridX; @@ -335,13 +380,19 @@ public void resetCachedValues(){ } } - public void receiveEvent(ControlPanel panel, Control ctrl, ControlEvent evt){ - for(Node n : nodes){ - if(n instanceof NodeInput){ + public void receiveEvent(ControlPanel panel, Control ctrl, ControlEvent evt) { + resetCachedValues(); + for (Node n : nodes) { + if (n instanceof NodeInput) { ((NodeInput)n).setOutputFromVars(evt.vars); } + if (n instanceof NodeFunction) { + if (n.evaluate(0).getBoolean()) { + subSystems.get(n).receiveEvent(panel, ctrl, evt); + } + } } - for(NodeOutput o : outputNodes){ + for (NodeOutput o : outputNodes) { o.doOutput(panel.parent, ctrl.sendNodeMap, ctrl.connectedSet); } } diff --git a/src/main/java/com/hbm/inventory/control_panel/NodeType.java b/src/main/java/com/hbm/inventory/control_panel/NodeType.java index 8abe9de56f..1951b10984 100644 --- a/src/main/java/com/hbm/inventory/control_panel/NodeType.java +++ b/src/main/java/com/hbm/inventory/control_panel/NodeType.java @@ -5,8 +5,10 @@ public enum NodeType { INPUT(new float[]{0, 1, 0}), //Intermediate node for math. Has a drop down menu for operations like add, multiply, sin, abs, etc. MATH(new float[]{1, 1, 0}), + //for boolean functions: and, not, xor etc. + BOOLEAN(new float[]{1, 0, 1}), //Intermediate nodes for logic such as for loops and if statements. Each contains child node systems, which possibly produce outputs. - LOGIC(new float[]{0, 0, 1}), + LOGIC(new float[]{.4F, .4F, 1}), //The outputs that get evaluated, such as broadcasting a new event or setting an arbitrary variable OUTPUT(new float[]{1, 0, 0}); diff --git a/src/main/java/com/hbm/inventory/control_panel/SubElementEventEditor.java b/src/main/java/com/hbm/inventory/control_panel/SubElementEventEditor.java index 48a8dd8327..bf44023b12 100644 --- a/src/main/java/com/hbm/inventory/control_panel/SubElementEventEditor.java +++ b/src/main/java/com/hbm/inventory/control_panel/SubElementEventEditor.java @@ -4,7 +4,10 @@ import java.util.Iterator; import java.util.List; +import akka.Main; +import com.hbm.main.MainRegistry; import net.minecraft.client.gui.GuiButton; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.math.MathHelper; public class SubElementEventEditor extends SubElement { @@ -24,7 +27,8 @@ public class SubElementEventEditor extends SubElement { public GuiButton sendPageLeft; public GuiButton sendPageRight; public GuiButton done; - + public GuiButton back; + public SubElementEventEditor(GuiControlEdit gui){ super(gui); } @@ -33,11 +37,12 @@ public SubElementEventEditor(GuiControlEdit gui){ protected void initGui(){ int cX = gui.width/2; int cY = gui.height/2; - receivePageLeft = gui.addButton(new GuiButton(gui.currentButtonId(), cX-74, cY-29, 20, 20, "<")); - receivePageRight = gui.addButton(new GuiButton(gui.currentButtonId(), cX+76, cY-29, 20, 20, ">")); - sendPageLeft = gui.addButton(new GuiButton(gui.currentButtonId(), cX-74, cY+70, 20, 20, "<")); - sendPageRight = gui.addButton(new GuiButton(gui.currentButtonId(), cX+76, cY+70, 20, 20, ">")); - done = gui.addButton(new GuiButton(gui.currentButtonId(), cX-74, cY+92, 170, 20, "Done")); + receivePageLeft = gui.addButton(new GuiButton(gui.currentButtonId(), cX-62, cY-29, 20, 20, "<")); + receivePageRight = gui.addButton(new GuiButton(gui.currentButtonId(), cX+88, cY-29, 20, 20, ">")); + sendPageLeft = gui.addButton(new GuiButton(gui.currentButtonId(), cX-62, cY+70, 20, 20, "<")); + sendPageRight = gui.addButton(new GuiButton(gui.currentButtonId(), cX+88, cY+70, 20, 20, ">")); + done = gui.addButton(new GuiButton(gui.currentButtonId(), cX-62, cY+92, 170, 20, "Done")); + back = gui.addButton(new GuiButton(gui.currentButtonId(), gui.getGuiLeft()+7, gui.getGuiTop()+13, 30, 20, "Back")); super.initGui(); } @@ -48,6 +53,17 @@ protected void accumulateEventTypes(List list){ sendButtons.clear(); receiveEvents.clear(); sendEvents.clear(); + // these at top cus more consistent when u need to employ fuckery when getting an EventData node by indexing receivable[]. + for(String name : gui.currentEditControl.getOutEvents()){ + ControlEvent evt = ControlEvent.getRegisteredEvent(name); + if(!receiveEvents.contains(evt)) + receiveEvents.add(ControlEvent.getRegisteredEvent(name)); + } + for(String name : gui.currentEditControl.getInEvents()){ + ControlEvent evt = ControlEvent.getRegisteredEvent(name); + if(!receiveEvents.contains(evt)) + receiveEvents.add(ControlEvent.getRegisteredEvent(name)); + } for(IControllable c : list){ for(String name : c.getOutEvents()){ ControlEvent evt = ControlEvent.getRegisteredEvent(name); @@ -60,33 +76,29 @@ protected void accumulateEventTypes(List list){ sendEvents.add(ControlEvent.getRegisteredEvent(name)); } } - for(String name : gui.currentEditControl.getOutEvents()){ - ControlEvent evt = ControlEvent.getRegisteredEvent(name); - if(!receiveEvents.contains(evt)) - receiveEvents.add(ControlEvent.getRegisteredEvent(name)); - } - for(String name : gui.currentEditControl.getInEvents()){ - ControlEvent evt = ControlEvent.getRegisteredEvent(name); - if(!receiveEvents.contains(evt)) - receiveEvents.add(ControlEvent.getRegisteredEvent(name)); - } int cX = gui.width/2; int cY = gui.height/2; numReceivePages = (receiveEvents.size()+2)/3; for(int i = 0; i < receiveEvents.size(); i ++){ int offset = (i%3)*25; - receiveButtons.add(gui.addButton(new ButtonHoverText(i+1000, cX-74, cY-100+offset, 170, 20, receiveEvents.get(i).name, ""))); + receiveButtons.add(gui.addButton(new ButtonHoverText(i+1000, cX-62, cY-100+offset, 170, 20, receiveEvents.get(i).name, ""))); } currentReceivePage = MathHelper.clamp(currentReceivePage, 1, numReceivePages); numSendPages = (sendEvents.size()+2)/3; for(int i = 0; i < sendEvents.size(); i ++){ int offset = (i%3)*25; - sendButtons.add(gui.addButton(new ButtonHoverText(i+2000, cX-74, cY+5+offset, 170, 20, sendEvents.get(i).name, ""))); + sendButtons.add(gui.addButton(new ButtonHoverText(i+2000, cX-62, cY+5+offset, 170, 20, sendEvents.get(i).name, ""))); } currentSendPage = MathHelper.clamp(currentSendPage, 1, numSendPages); } + + public void populateDefaultNodes() { + if (!gui.isEditMode) { + gui.currentEditControl.populateDefaultNodes(receiveEvents); + } + } private void recalculateVisibleButtons(){ for(GuiButton b : receiveButtons){ @@ -120,18 +132,20 @@ protected void drawScreen(){ int cX = gui.width/2; int cY = gui.height/2; String text = currentReceivePage + "/" + numReceivePages; - gui.getFontRenderer().drawString(text, cX, cY-20, 0xFF777777, false); + gui.getFontRenderer().drawString(text, cX+12, cY-21, 0xFF777777, false); text = currentSendPage + "/" + numSendPages; - gui.getFontRenderer().drawString(text, cX, cY+82, 0xFF777777, false); + gui.getFontRenderer().drawString(text, cX+12, cY+76, 0xFF777777, false); text = "Receivable Events"; - gui.getFontRenderer().drawString(text, cX - gui.getFontRenderer().getStringWidth(text) / 2 + 10, cY-110, 0xFF777777, false); + gui.getFontRenderer().drawString(text, cX - gui.getFontRenderer().getStringWidth(text) / 2F + 22, cY-112, 0xFF777777, false); text = "Sendable Events"; - gui.getFontRenderer().drawString(text, cX - gui.getFontRenderer().getStringWidth(text) / 2 + 10, cY-5, 0xFF777777, false); + gui.getFontRenderer().drawString(text, cX - gui.getFontRenderer().getStringWidth(text) / 2F + 22, cY-5, 0xFF777777, false); } @Override protected void actionPerformed(GuiButton button){ - if(button == receivePageLeft){ + if (button == back) { + gui.popElement(); + } else if(button == receivePageLeft){ if(numReceivePages != 0){ currentReceivePage = Math.max(1, currentReceivePage - 1); recalculateVisibleButtons(); @@ -148,27 +162,20 @@ protected void actionPerformed(GuiButton button){ currentSendPage = Math.min(numSendPages, currentSendPage + 1); recalculateVisibleButtons(); } else if(button == done){ - Iterator itr = gui.currentEditControl.receiveNodeMap.values().iterator(); - while(itr.hasNext()){ - NodeSystem sys = itr.next(); - if(sys.outputNodes.isEmpty()) - itr.remove(); - } - itr = gui.currentEditControl.sendNodeMap.values().iterator(); - while(itr.hasNext()){ - NodeSystem sys = itr.next(); - if(sys.outputNodes.isEmpty()) - itr.remove(); - } - for(IControllable c : gui.linker.linked) - if(!gui.currentEditControl.connectedSet.contains(c.getControlPos())) + for(IControllable c : gui.linker.linked) { + if (!gui.currentEditControl.connectedSet.contains(c.getControlPos())) gui.currentEditControl.connectedSet.add(c.getControlPos()); - - float[] gridMouse = gui.placement.convertToGridSpace(gui.mouseX, gui.mouseY); + } gui.currentEditControl.receiveEvent(ControlEvent.newEvent("initialize")); - gui.currentEditControl.posX = gridMouse[0]; - gui.currentEditControl.posY = gridMouse[1]; - gui.placement.resetPrevPos(); + if (!gui.isEditMode) { + float[] gridMouse = gui.placement.convertToGridSpace(gui.mouseX, gui.mouseY); + gui.currentEditControl.posX = gridMouse[0]; + gui.currentEditControl.posY = gridMouse[1]; + gui.placement.resetPrevPos(); + } + else { + gui.currentEditControl = null; + } gui.resetStack(); } else { int i = receiveButtons.indexOf(button); @@ -210,6 +217,8 @@ protected void enableButtons(boolean enable){ sendPageRight.enabled = enable; done.visible = enable; done.enabled = enable; + back.visible = enable; + back.enabled = enable; } } diff --git a/src/main/java/com/hbm/inventory/control_panel/SubElementItemChoice.java b/src/main/java/com/hbm/inventory/control_panel/SubElementItemChoice.java index 6a0ed5f1b8..941e5f975e 100644 --- a/src/main/java/com/hbm/inventory/control_panel/SubElementItemChoice.java +++ b/src/main/java/com/hbm/inventory/control_panel/SubElementItemChoice.java @@ -3,9 +3,13 @@ import java.util.ArrayList; import java.util.List; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; import net.minecraft.client.gui.GuiButton; +import net.minecraft.util.ResourceLocation; public class SubElementItemChoice extends SubElement { + public static ResourceLocation bg_tex = new ResourceLocation(RefStrings.MODID + ":textures/gui/control_panel/gui_base.png"); public GuiButton pageLeft; public GuiButton pageRight; @@ -21,13 +25,18 @@ public SubElementItemChoice(GuiControlEdit gui){ protected void initGui(){ int cX = gui.width/2; int cY = gui.height/2; - pageLeft = gui.addButton(new GuiButton(gui.currentButtonId(), cX-75, cY+92, 20, 20, "<")); - pageRight = gui.addButton(new GuiButton(gui.currentButtonId(), cX+75, cY+92, 20, 20, ">")); - List controls = ControlRegistry.getAllControls(); - for(int i = 0; i < controls.size(); i ++){ - int offset = (i%7)*25; - buttons.add(gui.addButton(new GuiButton(i+1000, cX-70, cY-90 + offset, 160, 20, controls.get(i).name))); - } + pageLeft = gui.addButton(new GuiButton(gui.currentButtonId(), cX-80, cY+92, 15, 20, "<")); + pageRight = gui.addButton(new GuiButton(gui.currentButtonId(), cX+65, cY+92, 15, 20, ">")); + + buttons.add(gui.addButton(new GuiButton(1000, cX-80, (cY-90) + (0%7)*25, 160, 20, "Button"))); + buttons.add(gui.addButton(new GuiButton(1001, cX-80, (cY-90) + (1%7)*25, 160, 20, "Switch"))); + buttons.add(gui.addButton(new GuiButton(1002, cX-80, (cY-90) + (2%7)*25, 160, 20, "Display"))); + buttons.add(gui.addButton(new GuiButton(1003, cX-80, (cY-90) + (3%7)*25, 160, 20, "Indicator"))); + buttons.add(gui.addButton(new GuiButton(1004, cX-80, (cY-90) + (4%7)*25, 160, 20, "Knob"))); + buttons.add(gui.addButton(new GuiButton(1005, cX-80, (cY-90) + (5%7)*25, 160, 20, "Dial"))); + buttons.add(gui.addButton(new GuiButton(1006, cX-80, (cY-90) + (6%7)*25, 160, 20, "Label"))); + buttons.add(gui.addButton(new GuiButton(1007, cX-80, (cY-90) + (7%7)*25, 160, 20, "Slider"))); + numPages = (buttons.size()+6)/7; super.initGui(); } @@ -37,9 +46,15 @@ protected void drawScreen(){ int cX = gui.width/2; int cY = gui.height/2; String text = currentPage + "/" + numPages; - gui.getFontRenderer().drawString(text, cX, cY+100, 0xFF777777, false); - text = "Select item to add"; - gui.getFontRenderer().drawString(text, cX - gui.getFontRenderer().getStringWidth(text) / 2, cY-110, 0xFF777777, false); + gui.getFontRenderer().drawString(text, cX - gui.getFontRenderer().getStringWidth(text) / 2F, cY+98, 0xFF777777, false); + text = "Select Control Type"; + gui.getFontRenderer().drawString(text, cX - gui.getFontRenderer().getStringWidth(text) / 2F, cY-110, 0xFF777777, false); + } + + @Override + protected void renderBackground() { + gui.mc.getTextureManager().bindTexture(bg_tex); + gui.drawTexturedModalRect(gui.getGuiLeft(), gui.getGuiTop(), 0, 0, gui.getXSize(), gui.getYSize()); } private void recalculateVisibleButtons(){ @@ -55,7 +70,7 @@ private void recalculateVisibleButtons(){ buttons.get(i).enabled = true; } } - + @Override protected void actionPerformed(GuiButton button){ if(button == pageLeft){ @@ -65,21 +80,55 @@ protected void actionPerformed(GuiButton button){ currentPage = Math.min(numPages, currentPage + 1); recalculateVisibleButtons(); } else { - switch(button.id){ - case 1000: - gui.currentEditControl = ControlRegistry.getNew("button", gui.control.panel); - gui.pushElement(gui.linker); - break; + switch (button.id) { //TODO: clean + case 1000: + gui.currentEditControl = ControlRegistry.getNew("button_push", gui.control.panel); + gui.itemConfig.variants = ControlRegistry.getAllControlsOfType(gui.currentEditControl.getControlType()); + gui.pushElement(gui.itemConfig); + break; + case 1001: + gui.currentEditControl = ControlRegistry.getNew("switch_toggle", gui.control.panel); + gui.itemConfig.variants = ControlRegistry.getAllControlsOfType(gui.currentEditControl.getControlType()); + gui.pushElement(gui.itemConfig); + break; + case 1002: + gui.currentEditControl = ControlRegistry.getNew("display_7seg", gui.control.panel); + gui.itemConfig.variants = ControlRegistry.getAllControlsOfType(gui.currentEditControl.getControlType()); + gui.pushElement(gui.itemConfig); + break; + case 1003: + gui.currentEditControl = ControlRegistry.getNew("indicator_lamp", gui.control.panel); + gui.pushElement(gui.linker); + break; + case 1004: + gui.currentEditControl = ControlRegistry.getNew("knob_control", gui.control.panel); + gui.itemConfig.variants = ControlRegistry.getAllControlsOfType(gui.currentEditControl.getControlType()); + gui.pushElement(gui.itemConfig); + break; + case 1005: + gui.currentEditControl = ControlRegistry.getNew("dial_square", gui.control.panel); + gui.itemConfig.variants = ControlRegistry.getAllControlsOfType(gui.currentEditControl.getControlType()); + gui.pushElement(gui.itemConfig); + break; + case 1006: + gui.currentEditControl = ControlRegistry.getNew("label", gui.control.panel); + gui.itemConfig.variants = ControlRegistry.getAllControlsOfType(gui.currentEditControl.getControlType()); + gui.pushElement(gui.itemConfig); + break; + case 1007: + gui.currentEditControl = ControlRegistry.getNew("slider_vertical", gui.control.panel); + gui.pushElement(gui.linker); + break; } } } @Override - protected void enableButtons(boolean enable){ - if(enable){ + protected void enableButtons(boolean enable) { + if (enable) { recalculateVisibleButtons(); } else { - for(GuiButton b : buttons){ + for (GuiButton b : buttons) { b.visible = false; b.enabled = false; } diff --git a/src/main/java/com/hbm/inventory/control_panel/SubElementLinker.java b/src/main/java/com/hbm/inventory/control_panel/SubElementLinker.java index b5748ccd44..3ec43d79d1 100644 --- a/src/main/java/com/hbm/inventory/control_panel/SubElementLinker.java +++ b/src/main/java/com/hbm/inventory/control_panel/SubElementLinker.java @@ -9,7 +9,10 @@ import com.hbm.items.tool.ItemMultiDetonator; import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.machine.TileEntityDummy; import net.minecraft.block.Block; +import net.minecraft.block.state.IBlockState; import net.minecraft.client.gui.GuiButton; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; @@ -17,16 +20,19 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; +import net.minecraft.world.WorldServer; public class SubElementLinker extends SubElement { - public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/control_panel/gui_control_add_element.png"); + public static ResourceLocation inv_tex = new ResourceLocation(RefStrings.MODID + ":textures/gui/control_panel/gui_linker_add_element.png"); public GuiButton clear; public GuiButton accept; public GuiButton pageLeft; public GuiButton pageRight; public GuiButton cont; + public GuiButton back; + public List linked = new ArrayList<>(); public List linkedButtons = new ArrayList<>(); public int numPages = 1; @@ -40,28 +46,32 @@ public SubElementLinker(GuiControlEdit gui){ protected void initGui() { int cX = gui.width/2; int cY = gui.height/2; - clear = gui.addButton(new GuiButton(gui.currentButtonId(), cX-104, cY-112, 20, 20, "C")); - accept = gui.addButton(new GuiButton(gui.currentButtonId(), cX-104, cY-90, 20, 20, ">")); - pageLeft = gui.addButton(new GuiButton(gui.currentButtonId(), cX-73, cY-16, 20, 20, "<")); - pageRight = gui.addButton(new GuiButton(gui.currentButtonId(), cX+77, cY-16, 20, 20, ">")); - cont = gui.addButton(new GuiButton(gui.currentButtonId(), cX-73, cY+6, 170, 20, "Continue")); + clear = gui.addButton(new GuiButton(gui.currentButtonId(), cX-121, cY-93, 40, 20, "Clear")); + accept = gui.addButton(new GuiButton(gui.currentButtonId(), cX-101, cY-116, 20, 20, ">")); + pageLeft = gui.addButton(new GuiButton(gui.currentButtonId(), cX-60, cY-16, 20, 20, "<")); + pageRight = gui.addButton(new GuiButton(gui.currentButtonId(), cX+90, cY-16, 20, 20, ">")); + cont = gui.addButton(new GuiButton(gui.currentButtonId(), cX-60, cY+6, 170, 20, "Continue")); + super.initGui(); } @Override - protected void drawScreen(){ - int cX = gui.width/2; - int cY = gui.height/2; + protected void drawScreen() { + int cX = gui.width / 2; + int cY = gui.height / 2; + + ItemStack stack = gui.container.inventorySlots.get(0).getStack(); + accept.enabled = !stack.isEmpty() && stack.getItem() instanceof ItemMultiDetonator; + String text = currentPage + "/" + numPages; - gui.getFontRenderer().drawString(text, cX+4, cY-6, 0xFF777777, false); - text = "Creating links for new " + gui.currentEditControl.name; - gui.getFontRenderer().drawString(text, cX - gui.getFontRenderer().getStringWidth(text) / 2 + 10, cY-110, 0xFF777777, false); + gui.getFontRenderer().drawString(text, cX + 16, cY - 10, 0xFF777777, false); + text = "Create Links"; + gui.getFontRenderer().drawString(text, cX - gui.getFontRenderer().getStringWidth(text) / 2F + 10, cY - 110, 0xFF777777, false); } @Override protected void renderBackground() { - gui.mc.getTextureManager().bindTexture(texture); - + gui.mc.getTextureManager().bindTexture(inv_tex); gui.drawTexturedModalRect(gui.getGuiLeft(), gui.getGuiTop(), 0, 0, gui.getXSize(), gui.getYSize()); } @@ -71,8 +81,8 @@ private void recalculateVisibleButtons(){ b.enabled = false; } int idx = (currentPage-1)*3; - for(int i = idx; i < idx+3; i ++){ - if(i >= linkedButtons.size()) + for(int i = idx; i < idx+3; i ++) { + if(i >= linkedButtons.size() || i < 1) //TODO: when block gone, remove from linked break; linkedButtons.get(i).visible = true; linkedButtons.get(i).enabled = true; @@ -82,33 +92,47 @@ private void recalculateVisibleButtons(){ @Override protected void actionPerformed(GuiButton button){ World world = gui.control.getWorld(); + if(button == accept){ ItemStack stack = gui.container.inventorySlots.get(0).getStack(); if(!stack.isEmpty()){ if(stack.getItem() instanceof ItemMultiDetonator){ int[][] locs = ItemMultiDetonator.getLocations(stack); - for (int i = 0; i < locs[0].length; i++) { - BlockPos pos = new BlockPos(locs[0][i], locs[1][i], locs[2][i]); - Block b = world.getBlockState(pos).getBlock(); - if(b instanceof BlockDummyable){ - int[] core = ((BlockDummyable)b).findCore(world, pos.getX(), pos.getY(), pos.getZ()); - if(core != null){ - pos = new BlockPos(core[0], core[1], core[2]); + if (locs != null) { + for (int i = 0; i < locs[0].length; i++) { + BlockPos pos = new BlockPos(locs[0][i], locs[1][i], locs[2][i]); + Block b = world.getBlockState(pos).getBlock(); + if (b instanceof BlockDummyable) { + int[] core = ((BlockDummyable) b).findCore(world, pos.getX(), pos.getY(), pos.getZ()); + if (core != null) { + pos = new BlockPos(core[0], core[1], core[2]); + } + } + TileEntity te = world.getTileEntity(pos); + if (te instanceof TileEntityDummy) { + BlockPos bpos = ((TileEntityDummy) te).target; + if (bpos != null) + te = world.getTileEntity(((TileEntityDummy) te).target); + } + if (te instanceof IControllable && !linked.contains(te)) { + linked.add((IControllable) te); } } - TileEntity te = world.getTileEntity(pos); - if(te instanceof IControllable && !linked.contains(te)){ - linked.add((IControllable)te); - } + refreshButtons(); } } - refreshButtons(); } } else if(button == clear){ linked.clear(); + gui.currentEditControl.connectedSet.clear(); refreshButtons(); } else if(button == cont){ gui.eventEditor.accumulateEventTypes(linked); + gui.eventEditor.populateDefaultNodes(); + for(IControllable c : gui.linker.linked) { + if (!gui.currentEditControl.connectedSet.contains(c.getControlPos())) + gui.currentEditControl.connectedSet.add(c.getControlPos()); + } gui.pushElement(gui.eventEditor); } else if(button == pageLeft){ currentPage = Math.max(1, currentPage - 1); @@ -118,6 +142,7 @@ protected void actionPerformed(GuiButton button){ recalculateVisibleButtons(); } else if(linkedButtons.contains(button)){ int idx = linkedButtons.indexOf(button); + gui.currentEditControl.connectedSet.remove(linked.get(idx).getControlPos()); linked.remove(idx); refreshButtons(); } @@ -129,6 +154,7 @@ protected void refreshButtons(){ int i = 0; int cX = gui.width/2; int cY = gui.height/2; + for(IControllable c : linked){ BlockPos pos = c.getControlPos(); linkedButtons.add(new ButtonHoverText(gui.currentButtonId(), cX-73, cY-90 + i*22, 170, 20, "(" + pos.getX() + ", " + pos.getY() + ", " + pos.getZ() + ")", "")); diff --git a/src/main/java/com/hbm/inventory/control_panel/SubElementNodeEditor.java b/src/main/java/com/hbm/inventory/control_panel/SubElementNodeEditor.java index 285dbf0a92..36edf28493 100644 --- a/src/main/java/com/hbm/inventory/control_panel/SubElementNodeEditor.java +++ b/src/main/java/com/hbm/inventory/control_panel/SubElementNodeEditor.java @@ -1,22 +1,13 @@ package com.hbm.inventory.control_panel; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; +import com.hbm.inventory.control_panel.nodes.*; import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; import org.lwjgl.opengl.GL11; import org.lwjgl.util.vector.Matrix4f; -import com.hbm.inventory.control_panel.nodes.Node; -import com.hbm.inventory.control_panel.nodes.NodeCancelEvent; -import com.hbm.inventory.control_panel.nodes.NodeEventBroadcast; -import com.hbm.inventory.control_panel.nodes.NodeGetVar; -import com.hbm.inventory.control_panel.nodes.NodeInput; -import com.hbm.inventory.control_panel.nodes.NodeMath; -import com.hbm.inventory.control_panel.nodes.NodeSetVar; import com.hbm.lib.RefStrings; import com.hbm.main.ClientProxy; import com.hbm.render.RenderHelper; @@ -28,14 +19,17 @@ public class SubElementNodeEditor extends SubElement { - public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/control_panel/gui_control_grid.png"); + public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/control_panel/gui_placement_front.png"); public static ResourceLocation grid = new ResourceLocation(RefStrings.MODID + ":textures/gui/control_panel/grid.png"); - public GuiButton back; - + public GuiButton btn_back; + public GuiButton btn_variables; + public ItemList addMenu; private NodeSystem currentSystem; + private Deque systemHistoryStack = new ArrayDeque<>(); + private ControlEvent currentEvent; private List sendEvents; private boolean gridGrabbed = false; @@ -64,12 +58,25 @@ protected void setData(Map map, ControlEvent c, List(); + currentSystem.drag = false; + currentSystem.dragDist = 0; + } @Override protected void initGui(){ int cX = gui.width/2; int cY = gui.height/2; - back = gui.addButton(new GuiButton(gui.currentButtonId(), cX-104, cY-112, 20, 20, "<")); + btn_back = gui.addButton(new GuiButton(gui.currentButtonId(), gui.getGuiLeft()+7, gui.getGuiTop()+13, 30, 20, "Back")); + btn_variables = gui.addButton(new GuiButton(gui.currentButtonId(), gui.getGuiLeft()+54, gui.getGuiTop()+13, 58, 20, "Variables")); super.initGui(); } @@ -91,6 +98,8 @@ protected void keyTyped(char typedChar, int code){ node = new NodeInput(x, y, "Event Data").setVars(vars); } else if(s2.equals("Get Variable")){ node = new NodeGetVar(x, y, gui.currentEditControl); + } else if (s2.equals("Query Block")) { + node = new NodeQueryBlock(x, y, gui.currentEditControl); } if(node != null){ addMenu.close(); @@ -102,6 +111,7 @@ protected void keyTyped(char typedChar, int code){ }); list.addItems("Event Data"); list.addItems("Get Variable"); + list.addItems("Query Block"); return list; } else if(s.endsWith("Math")){ ItemList list = new ItemList(0, 0, 32, s2 -> { @@ -121,6 +131,50 @@ protected void keyTyped(char typedChar, int code){ }); list.addItems("Math Node"); return list; + } else if(s.endsWith("Boolean")){ + ItemList list = new ItemList(0, 0, 32, s2 -> { + final float x = (gui.mouseX-gui.getGuiLeft())*gridScale + gui.getGuiLeft() + gridX; + final float y = (gui.mouseY-gui.getGuiTop())*gridScale + gui.getGuiTop() - gridY; + Node node = null; + if(s2.equals("Boolean Node")){ + node = new NodeBoolean(x, y); + } + if(node != null){ + addMenu.close(); + addMenu = null; + currentSystem.addNode(node); + currentSystem.activeNode = node; + } + return null; + }); + list.addItems("Boolean Node"); + return list; + } else if(s.endsWith("Logic")){ + ItemList list = new ItemList(0, 0, 32, s2 -> { + final float x = (gui.mouseX-gui.getGuiLeft())*gridScale + gui.getGuiLeft() + gridX; + final float y = (gui.mouseY-gui.getGuiTop())*gridScale + gui.getGuiTop() - gridY; + Node node = null; + if (s2.equals("Function")) { + node = new NodeFunction(x, y); + } + else if (s2.equals("Buffer")) { + node = new NodeBuffer(x, y); + } + else if (s2.equals("Conditional")) { + node = new NodeConditional(x, y); + } + if (node != null) { + addMenu.close(); + addMenu = null; + currentSystem.addNode(node); + currentSystem.activeNode = node; + } + return null; + }); + list.addItems("Function"); + list.addItems("Buffer"); + list.addItems("Conditional"); + return list; } else if(s.endsWith("Output")){ ItemList list = new ItemList(0, 0, 32, s2 -> { final float x = (gui.mouseX-gui.getGuiLeft())*gridScale + gui.getGuiLeft() + gridX; @@ -152,7 +206,7 @@ protected void keyTyped(char typedChar, int code){ } return null; }); - addMenu.addItems("{expandable}Input", "{expandable}Output", "{expandable}Math", "{expandable}Logic"); + addMenu.addItems("{expandable}Input", "{expandable}Output", "{expandable}Math", "{expandable}Boolean", "{expandable}Logic"); } if(code == Keyboard.KEY_DELETE || code == Keyboard.KEY_X){ List selected = new ArrayList<>(currentSystem.selectedNodes); @@ -197,10 +251,10 @@ protected void drawScreen(){ GL11.glEnable(GL11.GL_SCISSOR_TEST); int cX = gui.width/2; int cY = gui.height/2; - int minX = (cX-78)*gui.res.getScaleFactor(); - int minY = (cY-111)*gui.res.getScaleFactor(); - int maxX = (cX+102)*gui.res.getScaleFactor(); - int maxY = (cY+69)*gui.res.getScaleFactor(); + int minX = (cX-72)*gui.res.getScaleFactor(); + int minY = (cY-114)*gui.res.getScaleFactor(); + int maxX = (cX+120)*gui.res.getScaleFactor(); + int maxY = (cY+78)*gui.res.getScaleFactor(); //System.out.println(cY); //System.out.println(Minecraft.getMinecraft().displayHeight/2); GL11.glScissor(minX, minY, maxX-minX, maxY-minY); @@ -252,6 +306,15 @@ protected void mouseClicked(int mouseX, int mouseY, int button){ addMenu = null; } } else if(button == 0){ + // doing this here for now cus i want buttons to be able to make gui changes + NodeElement pressed = currentSystem.getNodeElementPressed(mouseX, mouseY); + if (pressed != null) { + switch (pressed.name) { + case "Edit Body": { + descendSubsystem(pressed.parent); + } + } + } currentSystem.onClick(mouseX, mouseY); } if(button == 2){ @@ -273,13 +336,22 @@ protected void mouseReleased(int mouseX, int mouseY, int state){ @Override protected void actionPerformed(GuiButton button){ - if(button == back){ + if(button == btn_back){ if(currentSystem != null){ currentSystem.removeClientData(); currentSystem = null; + + if (!systemHistoryStack.isEmpty()) { + currentSystem = systemHistoryStack.getFirst(); + systemHistoryStack.pop(); + return; + } } gui.popElement(); } + if (button == btn_variables) { + gui.pushElement(gui.variables); + } } @Override @@ -292,8 +364,10 @@ public void onClose(){ @Override protected void enableButtons(boolean enable){ - back.enabled = enable; - back.visible = enable; + btn_back.enabled = enable; + btn_back.visible = enable; + btn_variables.enabled = enable; + btn_variables.visible = enable; } } diff --git a/src/main/java/com/hbm/inventory/control_panel/SubElementPlacement.java b/src/main/java/com/hbm/inventory/control_panel/SubElementPlacement.java index 34b92e1cd4..762d393ddf 100644 --- a/src/main/java/com/hbm/inventory/control_panel/SubElementPlacement.java +++ b/src/main/java/com/hbm/inventory/control_panel/SubElementPlacement.java @@ -1,5 +1,11 @@ package com.hbm.inventory.control_panel; +import com.hbm.inventory.control_panel.controls.DialLarge; +import com.hbm.inventory.control_panel.controls.DisplaySevenSeg; +import com.hbm.inventory.control_panel.controls.DisplayText; +import com.hbm.inventory.control_panel.controls.Label; +import com.hbm.main.ResourceManager; +import net.minecraft.item.EnumDyeColor; import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; import org.lwjgl.opengl.GL11; @@ -7,7 +13,6 @@ import com.hbm.lib.RefStrings; import com.hbm.main.ClientProxy; -import com.hbm.main.ResourceManager; import com.hbm.render.RenderHelper; import net.minecraft.client.Minecraft; @@ -21,22 +26,30 @@ public class SubElementPlacement extends SubElement { - public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/control_panel/gui_control_grid.png"); + public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/control_panel/gui_placement_front.png"); public static ResourceLocation grid = new ResourceLocation(RefStrings.MODID + ":textures/gui/control_panel/placement_grid.png"); public float ogPosX; public float ogPosY; public Control selectedControl; public boolean controlGrabbed = false; - - public GuiButton deleteElement; - public GuiButton newElement; + + public GuiButton btn_panelResize; + public GuiButton btn_security; + public GuiButton btn_connections; + public GuiButton btn_variables; + public GuiButton btn_newControl; + public GuiButton btn_editControl; + public GuiButton btn_deleteControl; + private boolean gridGrabbed = false; protected float gridX = 0; protected float gridY = 0; protected float gridScale = 0.1F; private float prevMouseX; private float prevMouseY; + + private int ctrl_index = 0; public SubElementPlacement(GuiControlEdit gui){ super(gui); @@ -46,8 +59,13 @@ public SubElementPlacement(GuiControlEdit gui){ protected void initGui() { int cX = gui.width/2; int cY = gui.height/2; - newElement = gui.addButton(new GuiButton(gui.currentButtonId(), cX-103, cY-76, 20, 20, "+")); - deleteElement = gui.addButton(new GuiButton(gui.currentButtonId(), cX-103, cY-98, 20, 20, "-")); + btn_panelResize = gui.addButton(new GuiButton(gui.currentButtonId(), gui.getGuiLeft()+7, gui.getGuiTop()+13, 43, 20, "Resize")); + btn_variables = gui.addButton(new GuiButton(gui.currentButtonId(), gui.getGuiLeft()+54, gui.getGuiTop()+13, 58, 20, "Variables")); + btn_security = gui.addButton(new GuiButton(gui.currentButtonId(), gui.getGuiLeft()+117, gui.getGuiTop()+13, 58, 20, "Security")); + btn_connections = gui.addButton(new GuiButton(gui.currentButtonId(), gui.getGuiLeft()+180, gui.getGuiTop()+13, 70, 20, "Connections")); + btn_newControl = gui.addButton(new GuiButton(gui.currentButtonId(), gui.getGuiLeft()+7, gui.getGuiTop()+47, 43, 20, "New")); + btn_editControl = gui.addButton(new GuiButton(gui.currentButtonId(), gui.getGuiLeft()+7, gui.getGuiTop()+69, 43, 20, "Edit")); + btn_deleteControl = gui.addButton(new GuiButton(gui.currentButtonId(), gui.getGuiLeft()+7, gui.getGuiTop()+91, 43, 20, "Delete")); float[] cGrid = convertToGridSpace(cX+10, cY+20); gridX = -cGrid[0]; gridY = cGrid[1]; @@ -69,12 +87,15 @@ public void resetPrevPos(){ prevMouseX = gui.mouseX; prevMouseY = gui.mouseY; } - + @Override protected void drawScreen() { float dWheel = Mouse.getDWheel(); float dScale = dWheel*gridScale*0.00075F; - + + btn_editControl.enabled = selectedControl != null; + btn_deleteControl.enabled = selectedControl != null; + //Correction so we scale around mouse position float prevX = (gui.mouseX-gui.getGuiLeft())*gridScale; float prevY = (gui.mouseY-gui.getGuiTop())*gridScale; @@ -83,23 +104,25 @@ protected void drawScreen() { float currentY = (gui.mouseY-gui.getGuiTop())*gridScale; gridX += prevX-currentX; gridY -= prevY-currentY; - + if(gridGrabbed || gui.currentEditControl != null){ float dX = (gui.mouseX-prevMouseX)*gridScale; float dY = (gui.mouseY-prevMouseY)*gridScale; if(gridGrabbed){ gridX -= dX; gridY += dY; - } else if(gui.currentEditControl != null){ + } else if(!gui.isEditMode) { gui.currentEditControl.posX += dX; gui.currentEditControl.posY += dY; } } if((prevMouseX != gui.mouseX || prevMouseY != gui.mouseY) && controlGrabbed){ + ctrl_index = gui.control.panel.controls.indexOf(selectedControl); gui.control.panel.controls.remove(selectedControl); gui.currentEditControl = selectedControl; selectedControl = null; controlGrabbed = false; + gui.control.markDirty(); } prevMouseX = gui.mouseX; prevMouseY = gui.mouseY; @@ -107,23 +130,33 @@ protected void drawScreen() { GL11.glEnable(GL11.GL_SCISSOR_TEST); int cX = gui.width/2; int cY = gui.height/2; - int minX = (cX-78)*gui.res.getScaleFactor(); - int minY = (cY-111)*gui.res.getScaleFactor(); - int maxX = (cX+102)*gui.res.getScaleFactor(); - int maxY = (cY+69)*gui.res.getScaleFactor(); + int minX = (cX-72)*gui.res.getScaleFactor(); + int minY = (cY-114)*gui.res.getScaleFactor(); + int maxX = (cX+120)*gui.res.getScaleFactor(); + int maxY = (cY+78)*gui.res.getScaleFactor(); GL11.glScissor(minX, minY, Math.max(maxX-minX, 0), Math.max(maxY-minY, 0)); gui.mc.getTextureManager().bindTexture(grid); - //float x = gridX/gui.getXSize(); - //float y = -gridY/gui.getYSize(); - //RenderHelper.drawGuiRectColor(gui.getGuiLeft(), gui.getGuiTop(), x, y, gui.getXSize(), gui.getYSize(), gridScale+x, gridScale+y, 0.2F, 0.2F, 0.2F, 1); - float[] box = gui.control.panel.getBox(); + + float baseSizeX = (1-(gui.control.panel.b_off+gui.control.panel.d_off)); + float baseSizeY = (1-(gui.control.panel.a_off+gui.control.panel.c_off)); + float panel_hyp = (float) (baseSizeY/Math.cos(Math.abs(gui.control.panel.angle))); + + float[] box = gui.control.getBox(); float[] pos1 = convertFromGridSpace(box[0]-0.03125F, box[1]-0.03125F); float[] pos2 = convertFromGridSpace(box[2]+0.03125F, box[3]+0.03125F); - float uScale = gui.control.panel.width/4; - float vScale = gui.control.panel.height/4; + + float uScale = (baseSizeX*10)/4; + float vScale = (panel_hyp*10)/4; RenderHelper.drawGuiRect(pos1[0], pos1[1], 0, 0, pos2[0]-pos1[0], pos2[1]-pos1[1], uScale+0.015625F, vScale+0.015625F); - + + // bottom,right lines to close the grid, cus somehow scaling the grid looks worse + GlStateManager.disableTexture2D(); + GlStateManager.color(.4F, .4F, .4F, 1); + RenderHelper.drawGuiRect(pos1[0], pos2[1]-(1/(gridScale*15)), 0, 0, pos2[0]-pos1[0], 1/(gridScale*15), uScale+0.015625F, 0.015625F); + RenderHelper.drawGuiRect(pos2[0]-(1/(gridScale*15)), pos1[1], 0, 0, 1/(gridScale*15), pos2[1]-pos1[1], 0.015625F, vScale+0.015625F); + GlStateManager.enableTexture2D(); + GL11.glPushMatrix(); float spX = gui.getGuiLeft(); @@ -139,8 +172,13 @@ protected void drawScreen() { float gridMX = (gui.mouseX-gui.getGuiLeft())*gridScale + gui.getGuiLeft() + gridX; float gridMY = (gui.mouseY-gui.getGuiTop())*gridScale + gui.getGuiTop() - gridY; renderItems(gridMX, gridMY); + GL11.glPopMatrix(); GL11.glDisable(GL11.GL_SCISSOR_TEST); + + if (selectedControl != null) { + gui.getFontRenderer().drawString("ID: " + selectedControl.panel.controls.indexOf(selectedControl), gui.getGuiLeft()+58, gui.getGuiTop()+230, 0x333333); + } } public void renderItems(float mx, float my){ @@ -151,15 +189,17 @@ public void renderItems(float mx, float my){ boolean ctrl = Keyboard.isKeyDown(Keyboard.KEY_LCONTROL); float prevX = gui.currentEditControl.posX; float prevY = gui.currentEditControl.posY; - if(ctrl){ - gui.currentEditControl.posX = (float)Math.round(prevX*4F)*0.25F; - gui.currentEditControl.posY = (float)Math.round(prevY*4F)*0.25F; + + if (!ctrl) { + gui.currentEditControl.posX = (float) Math.round(prevX*10)*.1F; + gui.currentEditControl.posY = (float) Math.round(prevY*10)*.1F; } + boolean canPlace = canPlace(); if(!canPlace) GlStateManager.colorMask(true, false, false, true); renderControl(gui.currentEditControl); - if(ctrl){ + if (!ctrl) { gui.currentEditControl.posX = prevX; gui.currentEditControl.posY = prevY; } @@ -167,19 +207,90 @@ public void renderItems(float mx, float my){ GlStateManager.colorMask(true, true, true, true); } } - + public void renderControl(Control c){ Tessellator tes = Tessellator.getInstance(); BufferBuilder buf = tes.getBuffer(); Minecraft.getMinecraft().getTextureManager().bindTexture(c.getGuiTexture()); - buf.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX_COLOR); - float[] box = c.getBox(); - float rgb = c == selectedControl ? 1 : 0.9F; - buf.pos(box[0], box[1], 0).tex(0, 0).color(rgb, rgb, rgb, 1).endVertex(); - buf.pos(box[0], box[3], 0).tex(0, 1).color(rgb, rgb, rgb, 1).endVertex(); - buf.pos(box[2], box[3], 0).tex(1, 1).color(rgb, rgb, rgb, 1).endVertex(); - buf.pos(box[2], box[1], 0).tex(1, 0).color(rgb, rgb, rgb, 1).endVertex(); - tes.draw(); + + if (c instanceof DisplaySevenSeg) { + for (int i = 0; i < c.getConfigs().get("digitCount").getNumber(); i++) { + buf.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX_COLOR); + float[] box = c.getBox(); + float cock = (box[2] - box[0]) / c.getConfigs().get("digitCount").getNumber(); + box[0] += cock * i; + box[2] = box[0] + cock; + float[] rgb = new float[]{1, (c == selectedControl) ? .8F : 1F, 1F}; + buf.pos(box[0], box[1], 0).tex(0, 0).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); + buf.pos(box[0], box[3], 0).tex(0, 1).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); + buf.pos(box[2], box[3], 0).tex(1, 1).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); + buf.pos(box[2], box[1], 0).tex(1, 0).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); + tes.draw(); + } + } + else if (c instanceof Label) { + Label label = (Label) c; + String text = label.getConfigs().get("text").toString(); + float scale = label.getConfigs().get("scale").getNumber()/500F; + + int r = (int) (label.getConfigs().get("colorR").getNumber()*255); + int g = (int) (label.getConfigs().get("colorG").getNumber()*255 * ((c == selectedControl) ? .5F : 1F)); + int b = (int) (label.getConfigs().get("colorB").getNumber()*255); + int rgb2 = (r << 16) | (g << 8) | b; + + GL11.glPushMatrix(); + GL11.glTranslated(c.posX, c.posY, 0); + GL11.glScalef(scale, scale, scale); + GL11.glTranslated(-c.posX, -c.posY, 0); + gui.getFontRenderer().drawString(text, c.posX, c.posY, rgb2, false); + GL11.glPopMatrix(); + } + else if (c instanceof DisplayText) { + DisplayText thing = (DisplayText) c; + + String text = thing.getVar("text").toString(); + float scale = thing.getConfigs().get("scale").getNumber()/500F; + + Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.white); + buf.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX_COLOR); + float[] box = c.getBox(); + float[] rgb = new float[]{.2F, (c == selectedControl) ? .1F : .2F, .2F}; + buf.pos(box[0], box[1], 0).tex(0, 0).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); + buf.pos(box[0], box[3], 0).tex(0, 1).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); + buf.pos(box[2], box[3], 0).tex(1, 1).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); + buf.pos(box[2], box[1], 0).tex(1, 0).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); + tes.draw(); + + EnumDyeColor dyeColor = thing.getVar("color").getEnum(EnumDyeColor.class); + int color = dyeColor.getColorValue(); + + GL11.glPushMatrix(); + GL11.glTranslated(c.posX, c.posY, 0); + GL11.glScalef(scale, scale, scale); + GL11.glTranslated(-c.posX, -c.posY, 0); + gui.getFontRenderer().drawString(text, c.posX, c.posY, color, false); + GL11.glPopMatrix(); + } + else if (c instanceof DialLarge) { + buf.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX_COLOR); + float[] box = c.getBox(); + float[] rgb = new float[]{1, (c == selectedControl) ? .8F : 1F, 1F}; + buf.pos(box[0], box[1], 0).tex(0, 0).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); + buf.pos(box[0], box[3], 0).tex(0, .5).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); + buf.pos(box[2], box[3], 0).tex(1, .5).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); + buf.pos(box[2], box[1], 0).tex(1, 0).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); + tes.draw(); + } + else { + buf.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX_COLOR); + float[] box = c.getBox(); + float[] rgb = new float[]{1, (c == selectedControl) ? .8F : 1F, 1F}; + buf.pos(box[0], box[1], 0).tex(0, 0).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); + buf.pos(box[0], box[3], 0).tex(0, 1).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); + buf.pos(box[2], box[3], 0).tex(1, 1).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); + buf.pos(box[2], box[1], 0).tex(1, 0).color(rgb[0], rgb[1], rgb[2], 1).endVertex(); + tes.draw(); + } } @Override @@ -188,25 +299,38 @@ protected void renderBackground() { gui.drawTexturedModalRect(gui.getGuiLeft(), gui.getGuiTop(), 0, 0, gui.getXSize(), gui.getYSize()); } - - @Override - protected void enableButtons(boolean enable) { - newElement.enabled = enable; - newElement.visible = enable; - deleteElement.enabled = enable; - deleteElement.visible = enable; - } - + @Override protected void actionPerformed(GuiButton button) { - if(button == newElement){ + if (button == btn_panelResize) { + gui.pushElement(gui.panelResize); + } + else if (button == btn_variables) { + gui.currentEditControl = selectedControl; // allows access to a selected control's local vars + gui.variables.isGlobalScope = true; + gui.pushElement(gui.variables); + } + else if (button == btn_newControl) { + gui.isEditMode = false; gui.pushElement(gui.choice); - } else if(button == deleteElement){ + } + else if (button == btn_editControl) { + if (selectedControl != null) { + gui.currentEditControl = selectedControl; + gui.itemConfig.last_control = null; + gui.itemConfig.variants = ControlRegistry.getAllControlsOfType(gui.currentEditControl.getControlType()); + gui.pushElement(gui.itemConfig); + gui.isEditMode = true; + selectedControl = null; + } + } + else if (button == btn_deleteControl) { + gui.isEditMode = false; gui.control.panel.controls.remove(selectedControl); selectedControl = null; } } - + protected boolean canPlace(){ if(gui.currentEditControl == null) return false; @@ -215,7 +339,7 @@ protected boolean canPlace(){ return false; } } - if(!RenderHelper.boxContainsOther(gui.control.panel.getBox(), gui.currentEditControl.getBox())) + if(!RenderHelper.boxContainsOther(gui.control.getBox(), gui.currentEditControl.getBox())) return false; return true; } @@ -225,15 +349,14 @@ protected void mouseClicked(int mouseX, int mouseY, int button){ float gridMX = (gui.mouseX-gui.getGuiLeft())*gridScale + gui.getGuiLeft() + gridX; float gridMY = (gui.mouseY-gui.getGuiTop())*gridScale + gui.getGuiTop() - gridY; if(button == 0){ - if(gui.currentEditControl != null){ + if(gui.currentEditControl != null) { float prevX = gui.currentEditControl.posX; float prevY = gui.currentEditControl.posY; - if(Keyboard.isKeyDown(Keyboard.KEY_LCONTROL)){ - gui.currentEditControl.posX = (float)Math.round(gui.currentEditControl.posX*4F)*0.25F; - gui.currentEditControl.posY = (float)Math.round(gui.currentEditControl.posY*4F)*0.25F; + if(!Keyboard.isKeyDown(Keyboard.KEY_LCONTROL)){ + gui.currentEditControl.posX = (float) Math.round(prevX*10)*.1F; + gui.currentEditControl.posY = (float) Math.round(prevY*10)*.1F; } if(canPlace()){ - gui.control.panel.controls.add(gui.currentEditControl); gui.currentEditControl = null; } else { @@ -266,17 +389,35 @@ protected void mouseReleased(int mouseX, int mouseY, int state){ } if(state == 0){ if(canPlace()){ - if(Keyboard.isKeyDown(Keyboard.KEY_LCONTROL)){ - gui.currentEditControl.posX = (float)Math.round(gui.currentEditControl.posX*4F)*0.25F; - gui.currentEditControl.posY = (float)Math.round(gui.currentEditControl.posY*4F)*0.25F; + if(!Keyboard.isKeyDown(Keyboard.KEY_LCONTROL)){ + gui.currentEditControl.posX = (float)Math.round(gui.currentEditControl.posX*10)*.1F; + gui.currentEditControl.posY = (float)Math.round(gui.currentEditControl.posY*10)*.1F; } - gui.control.panel.controls.add(gui.currentEditControl); + gui.control.panel.controls.add(ctrl_index, gui.currentEditControl); gui.currentEditControl = null; } controlGrabbed = false; } } - + + @Override + protected void enableButtons(boolean enable) { + btn_panelResize.enabled = enable; + btn_panelResize.visible = enable; + btn_variables.enabled = enable; + btn_variables.visible = enable; + btn_security.enabled = false; + btn_security.visible = enable; + btn_connections.enabled = false; + btn_connections.visible = enable; + btn_newControl.enabled = enable; + btn_newControl.visible = enable; + btn_editControl.enabled = enable; + btn_editControl.visible = enable; + btn_deleteControl.enabled = enable; + btn_deleteControl.visible = enable; + } + protected float[] convertToGridSpace(float x, float y){ float gridMX = (x-gui.getGuiLeft())*gridScale + gui.getGuiLeft() + gridX; float gridMY = (y-gui.getGuiTop())*gridScale + gui.getGuiTop() - gridY; diff --git a/src/main/java/com/hbm/inventory/control_panel/controls/Button.java b/src/main/java/com/hbm/inventory/control_panel/controls/Button.java deleted file mode 100644 index 7bfd7a73c8..0000000000 --- a/src/main/java/com/hbm/inventory/control_panel/controls/Button.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.hbm.inventory.control_panel.controls; - -import java.util.Arrays; -import java.util.List; - -import org.lwjgl.opengl.GL11; - -import com.hbm.inventory.control_panel.Control; -import com.hbm.inventory.control_panel.ControlPanel; -import com.hbm.inventory.control_panel.DataValueEnum; -import com.hbm.inventory.control_panel.DataValueFloat; -import com.hbm.main.ResourceManager; -import com.hbm.render.amlfrom1710.IModelCustom; -import com.hbm.render.amlfrom1710.Tessellator; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.GlStateManager; -import net.minecraft.client.renderer.OpenGlHelper; -import net.minecraft.client.renderer.vertex.DefaultVertexFormats; -import net.minecraft.item.EnumDyeColor; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; - -public class Button extends Control { - - public Button(String name, ControlPanel panel){ - super(name, panel); - vars.put("color", new DataValueEnum<>(EnumDyeColor.RED)); - vars.put("isLit", new DataValueFloat(0)); - } - - @Override - public void render(){ - GlStateManager.shadeModel(GL11.GL_SMOOTH); - Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.ctrl_button0_tex); - boolean lit = getVar("isLit").getBoolean(); - float lX = OpenGlHelper.lastBrightnessX; - float lY = OpenGlHelper.lastBrightnessY; - if(lit){ - OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240, 240); - } - Tessellator tes = Tessellator.instance; - //tes.startDrawingQuads(); - tes.startDrawing(GL11.GL_TRIANGLES, DefaultVertexFormats.POSITION_TEX_COLOR_NORMAL); - tes.setTranslation(posX, 0, posY); - float[] color = getVar("color").getEnum(EnumDyeColor.class).getColorComponentValues(); - float cMul = 0.6F; - if(lit) - cMul = 1; - tes.setColorRGBA_F(color[0]*cMul, color[1]*cMul, color[2]*cMul, 1F); - IModelCustom model = getModel(); - model.tessellatePart(tes, "button0_base"); - tes.draw(); - if(lit){ - OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, lX, lY); - } - tes.startDrawing(GL11.GL_TRIANGLES, DefaultVertexFormats.POSITION_TEX_COLOR_NORMAL); - tes.setTranslation(posX, 0, posY); - tes.setColorRGBA_F(0.4F, 0.4F, 0.4F, 1F); - model.tessellatePart(tes, "button0"); - tes.draw(); - GlStateManager.shadeModel(GL11.GL_FLAT); - } - - @Override - @SideOnly(Side.CLIENT) - public IModelCustom getModel(){ - return ResourceManager.ctrl_button0; - } - - @Override - @SideOnly(Side.CLIENT) - public ResourceLocation getGuiTexture(){ - return ResourceManager.ctrl_button0_gui_tex; - } - - @Override - public List getOutEvents(){ - return Arrays.asList("ctrl_button_press"); - } - - @Override - public AxisAlignedBB getBoundingBox(){ - return new AxisAlignedBB(-0.5, 0, -0.5, 0.5, 0.5, 0.5).offset(posX, 0, posY); - } - - @Override - public float[] getBox(){ - return new float[]{posX, posY, posX + 1, posY + 1}; - } - - @Override - public Control newControl(ControlPanel panel){ - return new Button(name, panel); - } - -} diff --git a/src/main/java/com/hbm/inventory/control_panel/nodes/Node.java b/src/main/java/com/hbm/inventory/control_panel/nodes/Node.java index 4f42bbac4f..1decc54fbd 100644 --- a/src/main/java/com/hbm/inventory/control_panel/nodes/Node.java +++ b/src/main/java/com/hbm/inventory/control_panel/nodes/Node.java @@ -3,15 +3,11 @@ import java.util.ArrayList; import java.util.List; +import com.hbm.inventory.control_panel.*; +import com.hbm.main.MainRegistry; +import net.minecraft.util.math.BlockPos; import org.lwjgl.opengl.GL11; -import com.hbm.inventory.control_panel.ControlEvent; -import com.hbm.inventory.control_panel.DataValue; -import com.hbm.inventory.control_panel.DataValueFloat; -import com.hbm.inventory.control_panel.NodeConnection; -import com.hbm.inventory.control_panel.NodeElement; -import com.hbm.inventory.control_panel.NodeSystem; -import com.hbm.inventory.control_panel.NodeType; import com.hbm.render.RenderHelper; import net.minecraft.client.Minecraft; @@ -29,7 +25,7 @@ public abstract class Node { public List otherElements = new ArrayList<>(); public List inputs = new ArrayList<>(); public List outputs = new ArrayList<>(); - + public boolean cacheValid = false; public DataValue[] evalCache = null; @@ -46,41 +42,41 @@ public NBTTagCompound writeToNBT(NBTTagCompound tag, NodeSystem sys){ for(int i = 0; i < this.inputs.size(); i ++){ inputs.setTag("con"+i, this.inputs.get(i).writeToNBT(new NBTTagCompound(), sys)); } - tag.setTag("inputs", inputs); + tag.setTag("in", inputs); NBTTagCompound outputs = new NBTTagCompound(); for(int i = 0; i < this.outputs.size(); i ++){ outputs.setTag("con"+i, this.outputs.get(i).writeToNBT(new NBTTagCompound(), sys)); } - tag.setTag("outputs", outputs); + tag.setTag("out", outputs); - tag.setInteger("type", getType().ordinal()); - tag.setFloat("posX", posX); - tag.setFloat("posY", posY); - tag.setFloat("size", size); + tag.setInteger("T", getType().ordinal()); + tag.setFloat("X", posX); + tag.setFloat("Y", posY); + tag.setFloat("S", size); return tag; } public void readFromNBT(NBTTagCompound tag, NodeSystem sys){ this.inputs.clear(); this.outputs.clear(); - NBTTagCompound inputs = tag.getCompoundTag("inputs"); + NBTTagCompound inputs = tag.getCompoundTag("in"); for(int i = 0; i < inputs.getKeySet().size(); i ++){ NodeConnection c = new NodeConnection(null, this, 0, false, null, new DataValueFloat(0)); c.readFromNBT(inputs.getCompoundTag("con"+i), sys); this.inputs.add(c); } - NBTTagCompound outputs = tag.getCompoundTag("outputs"); + NBTTagCompound outputs = tag.getCompoundTag("out"); for(int i = 0; i < outputs.getKeySet().size(); i ++){ NodeConnection c = new NodeConnection(null, this, 0, false, null, new DataValueFloat(0)); c.readFromNBT(outputs.getCompoundTag("con"+i), sys); this.outputs.add(c); } - this.posX = tag.getFloat("posX"); - this.posY = tag.getFloat("posY"); - this.size = tag.getFloat("size"); + this.posX = tag.getFloat("X"); + this.posY = tag.getFloat("Y"); + this.size = tag.getFloat("S"); cacheValid = false; } @@ -102,9 +98,25 @@ public static Node nodeFromNBT(NBTTagCompound tag, NodeSystem sys){ int ctrlIdx = tag.getInteger("controlIdx"); node = new NodeGetVar(0, 0, sys.parent.panel.controls.get(ctrlIdx)); break; - case "math": + case "queryBlock": + ctrlIdx = tag.getInteger("controlIdx"); + node = new NodeQueryBlock(0, 0, sys.parent.panel.controls.get(ctrlIdx)); + break; + case "math": node = new NodeMath(0, 0); break; + case "boolean": + node = new NodeBoolean(0, 0); + break; + case "function": + node = new NodeFunction(0, 0); + break; + case "buffer": + node = new NodeBuffer(0, 0); + break; + case "conditional": + node = new NodeConditional(0, 0); + break; case "setVar": int ctrlIdx2 = tag.getInteger("controlIdx"); node = new NodeSetVar(0, 0, sys.parent.panel.controls.get(ctrlIdx2)); @@ -153,7 +165,7 @@ public void render(float mX, float mY, boolean isActive, boolean isSelected){ outputs.get(i).render(mX, mY); for(int i = otherElements.size()-1; i >= 0; i --) otherElements.get(i).render(mX, mY); - + FontRenderer font = Minecraft.getMinecraft().fontRenderer; GL11.glPushMatrix(); GL11.glTranslated(posX, posY, 0); @@ -182,7 +194,7 @@ public boolean onClick(float x, float y){ } return false; } - + public float[] getBoundingBox(){ return new float[]{posX, posY, posX+40, posY+6+size}; } diff --git a/src/main/java/com/hbm/inventory/control_panel/nodes/NodeEventBroadcast.java b/src/main/java/com/hbm/inventory/control_panel/nodes/NodeEventBroadcast.java index b3baa1d8df..1f84727fd7 100644 --- a/src/main/java/com/hbm/inventory/control_panel/nodes/NodeEventBroadcast.java +++ b/src/main/java/com/hbm/inventory/control_panel/nodes/NodeEventBroadcast.java @@ -15,6 +15,7 @@ import com.hbm.inventory.control_panel.NodeSystem; import com.hbm.inventory.control_panel.NodeType; +import com.hbm.main.MainRegistry; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.util.math.BlockPos; diff --git a/src/main/java/com/hbm/inventory/control_panel/nodes/NodeGetVar.java b/src/main/java/com/hbm/inventory/control_panel/nodes/NodeGetVar.java index 66995c7920..74af5b84b0 100644 --- a/src/main/java/com/hbm/inventory/control_panel/nodes/NodeGetVar.java +++ b/src/main/java/com/hbm/inventory/control_panel/nodes/NodeGetVar.java @@ -88,6 +88,13 @@ public DataValue evaluate(int idx){ } } + public NodeGetVar setData(String varName, boolean isGlobal) { + this.varName = varName; + this.global = isGlobal; + this.outputs.get(0).type = evaluate(0).getType(); + return this; + } + @Override public NodeType getType(){ return NodeType.INPUT; diff --git a/src/main/java/com/hbm/inventory/control_panel/nodes/NodeInput.java b/src/main/java/com/hbm/inventory/control_panel/nodes/NodeInput.java index ed2d28ae4d..6da9ba8226 100644 --- a/src/main/java/com/hbm/inventory/control_panel/nodes/NodeInput.java +++ b/src/main/java/com/hbm/inventory/control_panel/nodes/NodeInput.java @@ -2,6 +2,7 @@ import java.util.Map; import java.util.Map.Entry; +import java.util.Objects; import com.hbm.inventory.control_panel.DataValue; import com.hbm.inventory.control_panel.NodeConnection; @@ -18,7 +19,7 @@ public NodeInput(float x, float y, String name){ super(x, y); this.name = name; } - + @Override public DataValue evaluate(int idx){ return outputs.get(idx).defaultValue; @@ -59,6 +60,10 @@ public NodeInput setVars(Map vars){ public NodeInput setOutputFromVars(Map vars){ for(NodeConnection c : outputs){ + if (Objects.equals(c.name, "from index")) { + c.enumSelector = null; + continue; + } c.setDefault(vars.get(c.name)); } return this; diff --git a/src/main/java/com/hbm/inventory/control_panel/nodes/NodeMath.java b/src/main/java/com/hbm/inventory/control_panel/nodes/NodeMath.java index b005ed6bb4..9d16c6a859 100644 --- a/src/main/java/com/hbm/inventory/control_panel/nodes/NodeMath.java +++ b/src/main/java/com/hbm/inventory/control_panel/nodes/NodeMath.java @@ -9,6 +9,7 @@ import com.hbm.inventory.control_panel.DataValue.DataType; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.math.MathHelper; public class NodeMath extends Node { @@ -56,39 +57,48 @@ public DataValue evaluate(int idx){ if(evals[i] == null) return null; } - switch(op){ - case ADD: - return evalCache[0] = new DataValueFloat(evals[0].getNumber()+evals[1].getNumber()); - case SUB: - return evalCache[0] = new DataValueFloat(evals[0].getNumber()-evals[1].getNumber()); - case MULT: - return evalCache[0] = new DataValueFloat(evals[0].getNumber()*evals[1].getNumber()); - case DIV: - return evalCache[0] = new DataValueFloat(evals[0].getNumber()/evals[1].getNumber()); - case POW: - return evalCache[0] = new DataValueFloat((float)Math.pow(evals[0].getNumber(), evals[1].getNumber())); - case LOG: - return evalCache[0] = new DataValueFloat((float)(Math.log(evals[0].getNumber())/Math.log(evals[1].getNumber()))); - case EXP: - return evalCache[0] = new DataValueFloat((float)Math.exp(evals[0].getNumber())); - case SQRT: - return evalCache[0] = new DataValueFloat((float)Math.sqrt(evals[0].getNumber())); - case ABS: - return evalCache[0] = new DataValueFloat(Math.abs(evals[0].getNumber())); - case EQUAL: - return evalCache[0] = new DataValueFloat(evals[0].getNumber() == evals[1].getNumber() ? 1 : 0); - case GREATER: - return evalCache[0] = new DataValueFloat(evals[0].getNumber() > evals[1].getNumber() ? 1 : 0); - case LESS: - return evalCache[0] = new DataValueFloat(evals[0].getNumber() < evals[1].getNumber() ? 1 : 0); - case GEQUAL: - return evalCache[0] = new DataValueFloat(evals[0].getNumber() >= evals[1].getNumber() ? 1 : 0); - case LEQUAL: - return evalCache[0] = new DataValueFloat(evals[0].getNumber() <= evals[1].getNumber() ? 1 : 0); + switch(op) { + case ADD: + return evalCache[0] = new DataValueFloat(evals[0].getNumber()+evals[1].getNumber()); + case SUB: + return evalCache[0] = new DataValueFloat(evals[0].getNumber()-evals[1].getNumber()); + case MULT: + return evalCache[0] = new DataValueFloat(evals[0].getNumber()*evals[1].getNumber()); + case DIV: + return evalCache[0] = new DataValueFloat(evals[0].getNumber()/evals[1].getNumber()); + case MOD: + return evalCache[0] = new DataValueFloat(evals[0].getNumber()%evals[1].getNumber()); + case POW: + return evalCache[0] = new DataValueFloat((float)Math.pow(evals[0].getNumber(), evals[1].getNumber())); + case LOG: + return evalCache[0] = new DataValueFloat((float)(Math.log(evals[0].getNumber())/Math.log(evals[1].getNumber()))); + case EXP: + return evalCache[0] = new DataValueFloat((float)Math.exp(evals[0].getNumber())); + case SQRT: + return evalCache[0] = new DataValueFloat((float)Math.sqrt(evals[0].getNumber())); + case ABS: + return evalCache[0] = new DataValueFloat(Math.abs(evals[0].getNumber())); + case EQUAL: + return evalCache[0] = new DataValueFloat(evals[0].getNumber() == evals[1].getNumber() ? 1 : 0); + case GREATER: + return evalCache[0] = new DataValueFloat(evals[0].getNumber() > evals[1].getNumber() ? 1 : 0); + case LESS: + return evalCache[0] = new DataValueFloat(evals[0].getNumber() < evals[1].getNumber() ? 1 : 0); + case GEQUAL: + return evalCache[0] = new DataValueFloat(evals[0].getNumber() >= evals[1].getNumber() ? 1 : 0); + case LEQUAL: + return evalCache[0] = new DataValueFloat(evals[0].getNumber() <= evals[1].getNumber() ? 1 : 0); + case CLAMP: + return evalCache[0] = new DataValueFloat(MathHelper.clamp(evals[0].getNumber(), evals[1].getNumber(), evals[2].getNumber())); } return evalCache[0] = null; } - + + public NodeMath setData(Operation op) { + setOperation(op); + return this; + } + public void setOperation(Operation op){ this.op = op; for(NodeConnection c : inputs){ @@ -97,33 +107,39 @@ public void setOperation(Operation op){ this.inputs.clear(); String s1 = "Input 1"; String s2 = "Input 2"; - switch(op){ - case EQUAL: - case GREATER: - case LESS: - case GEQUAL: - case LEQUAL: - case ADD: - case SUB: - case MULT: - case DIV: - case POW: - case LOG: - if(op == Operation.POW){ - s1 = "Base"; - s2 = "Exponent"; - } else if(op == Operation.LOG){ - s1 = "Value"; - s2 = "Base"; - } - inputs.add(new NodeConnection(s1, this, inputs.size(), true, DataType.NUMBER, new DataValueFloat(0))); - inputs.add(new NodeConnection(s2, this, inputs.size(), true, DataType.NUMBER, new DataValueFloat(0))); - break; - case EXP: - case SQRT: - case ABS: - inputs.add(new NodeConnection("Input", this, inputs.size(), true, DataType.NUMBER, new DataValueFloat(0))); - break; + switch(op) { + case EQUAL: + case GREATER: + case LESS: + case GEQUAL: + case LEQUAL: + case ADD: + case SUB: + case MULT: + case DIV: + case MOD: + case POW: + case LOG: + if(op == Operation.POW){ + s1 = "Base"; + s2 = "Exponent"; + } else if(op == Operation.LOG){ + s1 = "Value"; + s2 = "Base"; + } + inputs.add(new NodeConnection(s1, this, inputs.size(), true, DataType.NUMBER, new DataValueFloat(0))); + inputs.add(new NodeConnection(s2, this, inputs.size(), true, DataType.NUMBER, new DataValueFloat(0))); + break; + case EXP: + case SQRT: + case ABS: + inputs.add(new NodeConnection("Input", this, inputs.size(), true, DataType.NUMBER, new DataValueFloat(0))); + break; + case CLAMP: + inputs.add(new NodeConnection("Value", this, inputs.size(), true, DataType.NUMBER, new DataValueFloat(0))); + inputs.add(new NodeConnection("Min", this, inputs.size(), true, DataType.NUMBER, new DataValueFloat(0))); + inputs.add(new NodeConnection("Max", this, inputs.size(), true, DataType.NUMBER, new DataValueFloat(0))); + break; } recalcSize(); } @@ -143,6 +159,7 @@ public static enum Operation { SUB("Subtract"), MULT("Multiply"), DIV("Divide"), + MOD("Modulo"), POW("Power"), LOG("Logarithm"), EXP("Exponent"), @@ -152,8 +169,9 @@ public static enum Operation { GREATER("Greater"), LESS("Less"), GEQUAL("Greater/equal"), - LEQUAL("Less/equal"); - + LEQUAL("Less/equal"), + CLAMP("Clamp"); + public String name; private Operation(String name){ this.name = name; diff --git a/src/main/java/com/hbm/inventory/control_panel/nodes/NodeSetVar.java b/src/main/java/com/hbm/inventory/control_panel/nodes/NodeSetVar.java index 95b89b7695..549bc6482a 100644 --- a/src/main/java/com/hbm/inventory/control_panel/nodes/NodeSetVar.java +++ b/src/main/java/com/hbm/inventory/control_panel/nodes/NodeSetVar.java @@ -97,6 +97,16 @@ public boolean doOutput(IControllable from, Map sendNodeMap, return false; } + public NodeSetVar setData(String varName, boolean isGlobal) { + this.varName = varName; + this.global = isGlobal; + DataValue val = global ? ctrl.getGlobalVar(varName) : ctrl.getVar(varName); + this.inputs.get(0).type = val.getType(); + this.inputs.get(0).setDefault(val); + return this; + } + + @Override public NodeType getType(){ return NodeType.OUTPUT; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineUUCreator.java b/src/main/java/com/hbm/inventory/gui/GUIMachineUUCreator.java index 31a4200d46..626950eac6 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineUUCreator.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineUUCreator.java @@ -62,9 +62,9 @@ protected void drawGuiContainerForegroundLayer( int i, int j) { String producedmb = ""; if(this.uu_creator.producedmb * 20 > 1000) - producedmb = Library.getShortNumber((long)this.uu_creator.producedmb * 20) + " mb/s"; + producedmb = Library.getShortNumber((long)this.uu_creator.producedmb * 20) + " mB/s"; else - producedmb = this.uu_creator.producedmb * 20 + " mb/s"; + producedmb = this.uu_creator.producedmb * 20 + " mB/s"; this.fontRenderer.drawString(producedmb, 123 - this.fontRenderer.getStringWidth(producedmb), 40, 0xE700FF); diff --git a/src/main/java/com/hbm/inventory/gui/GUINukeCustom.java b/src/main/java/com/hbm/inventory/gui/GUINukeCustom.java index aa7d1513de..65c8c852f8 100644 --- a/src/main/java/com/hbm/inventory/gui/GUINukeCustom.java +++ b/src/main/java/com/hbm/inventory/gui/GUINukeCustom.java @@ -40,20 +40,20 @@ public void drawScreen(int mouseX, int mouseY, float partialTicks) { super.drawScreen(mouseX, mouseY, partialTicks); String[] text; - text = new String[] { TextFormatting.YELLOW + "Conventional Explosives (Level " + testNuke.tnt + "/" + BombConfig.maxCustomTNTRadius + ")", + text = new String[] { TextFormatting.YELLOW + "Conventional Explosives (Radius " + testNuke.tnt + "/" + BombConfig.maxCustomTNTRadius + ")", "Caps at " + BombConfig.maxCustomTNTRadius, "N²-like above level 75", TextFormatting.ITALIC + "\"Goes boom\"" }; this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 16, guiTop + 88, 18, 18, mouseX, mouseY, text); - text = new String[] { TextFormatting.YELLOW + "Nuclear (Level " + testNuke.nuke + "(" + testNuke.getNukeAdj() + ")/"+ BombConfig.maxCustomNukeRadius + ")", + text = new String[] { TextFormatting.YELLOW + "Nuclear (Radius " + testNuke.nuke + "(" + testNuke.getNukeAdj() + ")/"+ BombConfig.maxCustomNukeRadius + ")", "Requires TNT level 16", "Caps at " + BombConfig.maxCustomNukeRadius, "Has fallout", TextFormatting.ITALIC + "\"Now I am become death, destroyer of worlds.\"" }; this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 34, guiTop + 88, 18, 18, mouseX, mouseY, text); - text = new String[] { TextFormatting.YELLOW + "Thermonuclear (Level " + testNuke.hydro + "(" + testNuke.getHydroAdj() + ")/" + BombConfig.maxCustomHydroRadius + ")", + text = new String[] { TextFormatting.YELLOW + "Thermonuclear (Radius " + testNuke.hydro + "(" + testNuke.getHydroAdj() + ")/" + BombConfig.maxCustomHydroRadius + ")", "Requires nuclear level 100", "Caps at " + BombConfig.maxCustomHydroRadius, "Reduces added fallout by salted stage by 75%", @@ -61,13 +61,13 @@ public void drawScreen(int mouseX, int mouseY, float partialTicks) { TextFormatting.ITALIC + "the island of Elugelab disappear!\"" }; this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 52, guiTop + 88, 18, 18, mouseX, mouseY, text); - text = new String[] { TextFormatting.YELLOW + "Balefire (Level " + testNuke.bale + "/(" + testNuke.getBaleAdj() + ")/" + BombConfig.maxCustomBaleRadius + ")", + text = new String[] { TextFormatting.YELLOW + "Balefire (Radius " + testNuke.bale + "/(" + testNuke.getBaleAdj() + ")/" + BombConfig.maxCustomBaleRadius + ")", "Requires nuclear level 50", "Caps at " + BombConfig.maxCustomBaleRadius, TextFormatting.ITALIC + "\"Antimatter, Balefire, whatever.\"" }; this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 70, guiTop + 88, 18, 18, mouseX, mouseY, text); - text = new String[] { TextFormatting.YELLOW + "Salted (Level " + testNuke.dirty + "/" + BombConfig.maxCustomDirtyRadius + ")", + text = new String[] { TextFormatting.YELLOW + "Salted (Radius " + testNuke.dirty + "/" + BombConfig.maxCustomDirtyRadius + ")", "Extends fallout of nuclear and", "thermonuclear stages", "Caps at " + BombConfig.maxCustomDirtyRadius, @@ -75,14 +75,14 @@ public void drawScreen(int mouseX, int mouseY, float partialTicks) { this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 53, guiTop + 83, 25, 5, mouseX, mouseY, text); this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 53, guiTop + 106, 25, 5, mouseX, mouseY, text); - text = new String[] { TextFormatting.YELLOW + "Schrabidium (Level " + testNuke.schrab + "(" + testNuke.getSchrabAdj() + ")/" + BombConfig.maxCustomSchrabRadius + ")", + text = new String[] { TextFormatting.YELLOW + "Schrabidium (Radius " + testNuke.schrab + "(" + testNuke.getSchrabAdj() + ")/" + BombConfig.maxCustomSchrabRadius + ")", "Requires nuclear level 50", "Caps at " + BombConfig.maxCustomSchrabRadius, TextFormatting.ITALIC + "\"For the hundredth time,", TextFormatting.ITALIC + "you can't bypass these caps!\"" }; this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 88, guiTop + 88, 18, 18, mouseX, mouseY, text); - text = new String[] { TextFormatting.YELLOW + "Solinium (Level " + testNuke.sol + "(" + testNuke.getSolAdj() + ")/" + BombConfig.maxCustomSolRadius + ")", + text = new String[] { TextFormatting.YELLOW + "Solinium (Radius " + testNuke.sol + "(" + testNuke.getSolAdj() + ")/" + BombConfig.maxCustomSolRadius + ")", "Requires nuclear level 25", "Caps at " + BombConfig.maxCustomSolRadius, TextFormatting.ITALIC + "\"For the hundredth time,", diff --git a/src/main/java/com/hbm/items/machine/ItemFluidTank.java b/src/main/java/com/hbm/items/machine/ItemFluidTank.java index c008d5de43..48c2d2e571 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidTank.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidTank.java @@ -117,7 +117,7 @@ else if(this == ModItems.fluid_barrel_full) public void addInformation(ItemStack stack, World worldIn, List list, ITooltipFlag flagIn) { FluidStack f = FluidUtil.getFluidContained(stack); - String s = (f == null ? "0" : f.amount) + "/" + cap + " mb"; + String s = (f == null ? "0" : f.amount) + "/" + cap + " mB"; if(stack.getCount() > 1) s = stack.getCount() + "x " + s; list.add(s); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 984ddfc76e..e4331524a4 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -535,17 +535,50 @@ public class ResourceManager { public static final IModelCustom stopsign = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/weapons/stopsign.obj")); public static final IModelCustom gavel = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/gavel.obj")); public static final IModelCustom crucible = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/crucible.obj")); - - - //Control panel - public static final IModelCustom control_panel0 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/control_panel/control0.obj")); - public static final IModelCustom ctrl_button0 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/control_panel/button0.obj")); - public static final ResourceLocation control_panel0_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/control0.png"); - public static final ResourceLocation ctrl_button0_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/button0.png"); - public static final ResourceLocation ctrl_button0_gui_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/button0_gui.png"); - - //Textures TEs + // Control panel + public static final IModelCustom control_panel_custom = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/control_panel/control_panel_custom.obj")); + public static final IModelCustom control_panel_front = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/control_panel/control_panel_front.obj")); + + public static final ResourceLocation control_panel_custom_tex = new ResourceLocation(RefStrings.MODID, "textures/models/misc/control_panel.png"); + + // Controls + public static final IModelCustom ctrl_button_push = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/control_panel/button_push.obj")); + public static final IModelCustom ctrl_button_emergency_push = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/control_panel/button_emergency_push.obj")); + public static final IModelCustom ctrl_button_encased_push = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/control_panel/button_encased_push.obj")); + public static final IModelCustom ctrl_switch_toggle = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/control_panel/switch_toggle.obj")); + public static final IModelCustom ctrl_switch_rotary_toggle = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/control_panel/switch_rotary_toggle.obj")); + public static final IModelCustom ctrl_display_seven_seg = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/control_panel/display_seven_seg.obj")); + public static final IModelCustom ctrl_indicator_lamp = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/control_panel/indicator_lamp.obj")); + public static final IModelCustom ctrl_slider_vertical = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/control_panel/slider_vertical.obj")); + public static final IModelCustom ctrl_knob_control = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/control_panel/knob_control.obj")); + public static final IModelCustom ctrl_dial_square = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/control_panel/dial_square.obj")); + public static final IModelCustom ctrl_dial_large = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/control_panel/dial_large.obj")); + + public static final ResourceLocation ctrl_button_push_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/button_push.png"); + public static final ResourceLocation ctrl_button_emergency_push_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/button_emergency_push.png"); + public static final ResourceLocation ctrl_button_encased_push_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/button_encased_push.png"); + public static final ResourceLocation ctrl_switch_toggle_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/switch_toggle.png"); + public static final ResourceLocation ctrl_switch_rotary_toggle_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/switch_rotary_toggle.png"); + public static final ResourceLocation ctrl_display_seven_seg_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/display_7seg.png"); + public static final ResourceLocation ctrl_slider_vertical_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/slider_vertical.png"); + public static final ResourceLocation ctrl_knob_control_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/knob_control.png"); + public static final ResourceLocation ctrl_dial_square_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/dial_square.png"); + public static final ResourceLocation ctrl_dial_large_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/dial_large.png"); + + public static final ResourceLocation ctrl_button_push_gui_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/button_push_gui.png"); + public static final ResourceLocation ctrl_button_emergency_push_gui_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/button_emergency_push_gui.png"); + public static final ResourceLocation ctrl_button_encased_push_gui_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/button_encased_push_gui.png"); + public static final ResourceLocation ctrl_switch_toggle_gui_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/switch_toggle_gui.png"); + public static final ResourceLocation ctrl_switch_rotary_toggle_gui_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/switch_rotary_toggle_gui.png"); + public static final ResourceLocation ctrl_display_seven_seg_gui_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/display_7seg_gui.png"); + public static final ResourceLocation ctrl_indicator_lamp_gui_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/indicator_lamp_gui.png"); + public static final ResourceLocation ctrl_slider_vertical_gui_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/slider_vertical_gui.png"); + public static final ResourceLocation ctrl_knob_control_gui_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/knob_control_gui.png"); + public static final ResourceLocation ctrl_dial_square_gui_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/dial_square_gui.png"); + public static final ResourceLocation ctrl_dial_large_gui_tex = new ResourceLocation(RefStrings.MODID, "textures/models/control_panel/dial_large_gui.png"); + + //Textures TEs public static final ResourceLocation universal = new ResourceLocation(RefStrings.MODID, "textures/models/TheGadget3_.png"); //Freons Turrets Textures diff --git a/src/main/java/com/hbm/packet/ControlPanelUpdatePacket.java b/src/main/java/com/hbm/packet/ControlPanelUpdatePacket.java index 47458dfeef..686d2d214b 100644 --- a/src/main/java/com/hbm/packet/ControlPanelUpdatePacket.java +++ b/src/main/java/com/hbm/packet/ControlPanelUpdatePacket.java @@ -94,9 +94,12 @@ public void toBytes(ByteBuf buf){ NBTTagCompound tag = new NBTTagCompound(); int i = 0; for(VarUpdate u : toUpdate) { - buffer.writeInt(u.varListIdx); - buffer.writeString(u.varName); - tag.setTag("" + i, u.data.writeToNBT()); + if (u != null) { + buffer.writeInt(u.varListIdx); + buffer.writeString(u.varName); + if (u.data != null) + tag.setTag("" + i, u.data.writeToNBT()); + } i++; } buffer.writeCompoundTag(tag); @@ -122,9 +125,9 @@ public IMessage onMessage(ControlPanelUpdatePacket m, MessageContext ctx){ } } else { for(VarUpdate u : m.toUpdate) { - if(u.data != null) { + if(u.varName != null) { if(u.varListIdx == -1){ - if(u.varName == null){ + if(u.data == null){ control.globalVars.remove(u.varName); } else { control.globalVars.put(u.varName, u.data); @@ -132,7 +135,7 @@ public IMessage onMessage(ControlPanelUpdatePacket m, MessageContext ctx){ } else { if(u.varListIdx >= control.controls.size()) continue; - if(u.varName == null){ + if(u.data == null){ control.controls.get(u.varListIdx).vars.remove(u.varName); } else { control.controls.get(u.varListIdx).vars.put(u.varName, u.data); diff --git a/src/main/java/com/hbm/packet/PacketDispatcher.java b/src/main/java/com/hbm/packet/PacketDispatcher.java index 4cadd2a70f..e2fa1076f9 100644 --- a/src/main/java/com/hbm/packet/PacketDispatcher.java +++ b/src/main/java/com/hbm/packet/PacketDispatcher.java @@ -142,6 +142,8 @@ public static final void registerPackets(){ wrapper.registerMessage(NBTControlPacket.Handler.class, NBTControlPacket.class, i++, Side.SERVER); wrapper.registerMessage(AnvilCraftPacket.Handler.class, AnvilCraftPacket.class, i++, Side.SERVER); wrapper.registerMessage(ControlPanelUpdatePacket.Handler.class, ControlPanelUpdatePacket.class, i++, Side.CLIENT); +// wrapper.registerMessage(ControlPanelLinkerServerPacket.Handler.class, ControlPanelUpdatePacket.class, i++, Side.SERVER); +// wrapper.registerMessage(ControlPanelLinkerClientPacket.Handler.class, ControlPanelUpdatePacket.class, i++, Side.CLIENT); } public static void sendTo(IMessage message, EntityPlayerMP player){ diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index ba4ef41bb5..b5f455699e 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -1509,22 +1509,38 @@ public void renderCommon() { bindTexture(ResourceManager.fel_tex); ResourceManager.fel.renderAll(); GlStateManager.shadeModel(GL11.GL_FLAT); }}); - renderers.put(Item.getItemFromBlock(ModBlocks.control0), new ItemRenderBase() { + renderers.put(Item.getItemFromBlock(ModBlocks.control_panel_custom), new ItemRenderBase() { public void renderInventory() { GL11.glTranslated(-2.5, -1, 0); GL11.glScaled(12, 12, 12); } public void renderCommon() { GL11.glTranslated(1.5, 1, -1); - bindTexture(ResourceManager.control_panel0_tex); + bindTexture(ResourceManager.control_panel_custom_tex); GlStateManager.shadeModel(GL11.GL_SMOOTH); - ResourceManager.control_panel0.renderAll(); + ResourceManager.control_panel_custom.renderAll(); GlStateManager.shadeModel(GL11.GL_FLAT); } public boolean doNullTransform(){ return true; } }); +// renderers.put(Item.getItemFromBlock(ModBlocks.control_panel_front), new ItemRenderBase() { +// public void renderInventory() { +// GL11.glTranslated(-1, -2, 0); +// GL11.glScaled(5, 5, 5); +// } +// public void renderCommon() { +// GL11.glTranslated(1.5, .5, -1); +// bindTexture(ResourceManager.white); +// GlStateManager.shadeModel(GL11.GL_SMOOTH); +// ResourceManager.control_panel_front.renderAll(); +// GlStateManager.shadeModel(GL11.GL_FLAT); +// } +// public boolean doNullTransform(){ +// return true; +// } +// }); renderers.put(Item.getItemFromBlock(ModBlocks.large_vehicle_door), new ItemRenderBase(){ public void renderInventory() { GL11.glTranslated(0, -4, 0); diff --git a/src/main/java/com/hbm/render/tileentity/RenderControlPanel.java b/src/main/java/com/hbm/render/tileentity/RenderControlPanel.java index 336b2aa3ae..c0b78cca9a 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderControlPanel.java +++ b/src/main/java/com/hbm/render/tileentity/RenderControlPanel.java @@ -1,5 +1,12 @@ package com.hbm.render.tileentity; +import com.hbm.inventory.control_panel.ControlPanel; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.BufferBuilder; +import net.minecraft.client.renderer.vertex.DefaultVertexFormats; +import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; import com.hbm.main.ClientProxy; @@ -14,28 +21,133 @@ public class RenderControlPanel extends TileEntitySpecialRenderer> 2) == 1); + boolean isDown = ((te.getBlockMetadata() >> 3) == 1); + + if (isUp) { + GL11.glRotatef(-180, 1, 0, 0); + GL11.glRotatef(-90, 0, 0, 1); + GL11.glTranslated(0, -1, 0); + } else if (isDown) { + GL11.glRotatef(90, 0, 0, 1); + } else { + GL11.glTranslated(-.5, -.5, 0); + } + + GlStateManager.enableRescaleNormal(); +// bindTexture(ResourceManager.control_panel_custom_tex); + + GL11.glPushMatrix(); GL11.glTranslated(-0.5, 0, -0.5); - te.panel.transform.store(ClientProxy.AUX_GL_BUFFER); - ClientProxy.AUX_GL_BUFFER.rewind(); - GL11.glMultMatrix(ClientProxy.AUX_GL_BUFFER); - te.panel.render(); + + float a_off = te.panel.a_off; + float b_off = te.panel.b_off; + float c_off = te.panel.c_off; + float d_off = te.panel.d_off; + float height = te.panel.height; + float angle = te.panel.angle; + + float height1 = ControlPanel.getSlopeHeightFromZ(1-c_off, height, -angle); + float height0 = ControlPanel.getSlopeHeightFromZ(a_off, height, -angle); + + if (height != 0) { + GlStateManager.disableLighting(); + ResourceLocation texxy = new ResourceLocation(RefStrings.MODID + ":textures/models/misc/control_panel.png"); + bindTexture(texxy); + net.minecraft.client.renderer.Tessellator tess = net.minecraft.client.renderer.Tessellator.getInstance(); + BufferBuilder buf = tess.getBuffer(); + // back + buf.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); + buf.pos(a_off, 0, 1 - d_off).tex(1, 1).endVertex(); + buf.pos(a_off, height0, 1 - d_off).tex(1, 0).endVertex(); + buf.pos(a_off, height0, b_off).tex(0, 0).endVertex(); + buf.pos(a_off, 0, b_off).tex(0, 1).endVertex(); + // left + buf.pos(1 - c_off, 0, 1 - d_off).tex(1, 1).endVertex(); + buf.pos(1 - c_off, height1, 1 - d_off).tex(1, 0).endVertex(); + buf.pos(a_off, height0, 1 - d_off).tex(0, 0).endVertex(); + buf.pos(a_off, 0, 1 - d_off).tex(0, 1).endVertex(); + // right + buf.pos(a_off, 0, b_off).tex(1, 1).endVertex(); + buf.pos(a_off, height0, b_off).tex(1, 0).endVertex(); + buf.pos(1 - c_off, height1, b_off).tex(0, 0).endVertex(); + buf.pos(1 - c_off, 0, b_off).tex(0, 1).endVertex(); + // front + buf.pos(1 - c_off, 0, b_off).tex(1, 1).endVertex(); + buf.pos(1 - c_off, height1, b_off).tex(1, 0).endVertex(); + buf.pos(1 - c_off, height1, 1 - d_off).tex(0, 0).endVertex(); + buf.pos(1 - c_off, 0, 1 - d_off).tex(0, 1).endVertex(); +// // top + buf.pos(1 - c_off, height1, b_off).tex(1, 1).endVertex(); + buf.pos(a_off, height0, b_off).tex(1, 0).endVertex(); + buf.pos(a_off, height0, 1 - d_off).tex(0, 0).endVertex(); + buf.pos(1 - c_off, height1, 1 - d_off).tex(0, 1).endVertex(); + // bottom + buf.pos(1 - c_off, 0, 1 - d_off).tex(0, 1).endVertex(); + buf.pos(a_off, 0, 1 - d_off).tex(0, 0).endVertex(); + buf.pos(a_off, 0, b_off).tex(1, 0).endVertex(); + buf.pos(1 - c_off, 0, b_off).tex(1, 1).endVertex(); + tess.draw(); + } + + GlStateManager.enableLighting(); GlStateManager.disableRescaleNormal(); GL11.glPopMatrix(); + GL11.glPopMatrix(); } + + public void renderFrontPanel(TileEntityControlPanel te, double x, double y, double z, float partialTicks, int destroyStage, float alpha) { + GL11.glTranslated(x+.5F, y, z+.5F); + GL11.glPushMatrix(); + + switch(te.getBlockMetadata()) { + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; + } + + GL11.glPushMatrix(); + bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/models/control_panel/control_panel_front.png")); + ResourceManager.control_panel_front.renderAll(); + GL11.glPopMatrix(); + + GL11.glPopMatrix(); + } + } diff --git a/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java b/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java index 28da0c2452..6395313b6f 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java +++ b/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java @@ -49,9 +49,12 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase implements ITi private AudioWrapper audio; private AudioWrapper audio2; + // if a control panel sends a toggle from 0->1, it masters the door until toggled again. + private boolean toggledByPanel = false; + public TileEntityDoorGeneric(){ } - + @Override public void update(){ if(doorType == null) @@ -160,6 +163,10 @@ public void update(){ if(redstonePower == -1){ redstonePower = 0; } + + if (toggledByPanel) { + tryOpen(-1); + } } } @@ -235,6 +242,8 @@ public boolean tryToggle(int passcode){ } public boolean tryClose(int passcode){ + if (toggledByPanel) + return false; if(isLocked() && passcode != lock) return false; if(state == DoorState.OPEN) { @@ -376,9 +385,11 @@ public void broadcastControlEvt(){ } @Override - public void receiveEvent(BlockPos from, ControlEvent e){ - if(e.name.equals("door_toggle")){ - tryToggle((int)e.vars.get("passcode").getNumber()); + public void receiveEvent(BlockPos from, ControlEvent e) { + if (e.name.equals("door_toggle")) { + if (!isLocked() || (isLocked() && e.vars.get("passcode").getNumber() == lock)) { + toggledByPanel = !toggledByPanel; + } } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityControlPanel.java b/src/main/java/com/hbm/tileentity/machine/TileEntityControlPanel.java index 2d511dd35b..125a215517 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityControlPanel.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityControlPanel.java @@ -1,18 +1,30 @@ package com.hbm.tileentity.machine; -import java.util.Arrays; -import java.util.List; +import java.util.*; +import com.hbm.blocks.BlockControlPanelType; +import com.hbm.inventory.control_panel.*; +import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; +import com.hbm.packet.NBTControlPacket; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; +import net.minecraft.block.state.IBlockState; +import net.minecraft.item.EnumDyeColor; +import net.minecraft.item.ItemBlock; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.fml.common.Optional; import org.lwjgl.opengl.GL11; import org.lwjgl.util.vector.Matrix4f; import org.lwjgl.util.vector.Vector3f; import com.hbm.interfaces.IControlReceiver; -import com.hbm.inventory.control_panel.Control; -import com.hbm.inventory.control_panel.ControlEvent; -import com.hbm.inventory.control_panel.ControlEventSystem; -import com.hbm.inventory.control_panel.ControlPanel; -import com.hbm.inventory.control_panel.IControllable; import com.hbm.packet.ControlPanelUpdatePacket; import com.hbm.packet.PacketDispatcher; @@ -29,19 +41,21 @@ import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.items.ItemStackHandler; -public class TileEntityControlPanel extends TileEntity implements ITickable, IControllable, IControlReceiver { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityControlPanel extends TileEntity implements ITickable, IControllable, IControlReceiver, SimpleComponent { public ItemStackHandler inventory; public ControlPanel panel; + public BlockControlPanelType panelType = BlockControlPanelType.CUSTOM_PANEL; - public TileEntityControlPanel(){ + public TileEntityControlPanel() { inventory = new ItemStackHandler(1){ @Override protected void onContentsChanged(int slot){ markDirty(); } }; - panel = new ControlPanel(this, 8, 4); + this.panel = new ControlPanel(this, 0.25F, (float) Math.toRadians(20), 0, 0, 0.25F, 0); } @Override @@ -58,30 +72,59 @@ public void onLoad(){ } @SideOnly(Side.CLIENT) - public void loadClient(){ + public void updateTransform() { Matrix4f mat = new Matrix4f(); - mat.translate(new Vector3f(0.5F, 0, 0.5F)); - switch(getBlockMetadata()){ - case 4: - mat.rotate((float)Math.toRadians(180), new Vector3f(0, 1, 0)); - break; - case 2: - mat.rotate((float)Math.toRadians(90), new Vector3f(0, 1, 0)); - break; - case 5: - break; - case 3: - mat.rotate((float)Math.toRadians(270), new Vector3f(0, 1, 0)); - break; + + boolean isDown = ((getBlockMetadata() >> 2) == 1); + boolean isUp = ((getBlockMetadata() >> 3) == 1); + + // ○| ̄|_ + // it works, ignore + if (isUp) { + mat.translate(new Vector3f(0.5F, panel.height, 0.5F)); + rotateByMetadata(mat, getBlockMetadata()); + mat.rotate(-panel.angle, new Vector3f(0, 0, 1)); + mat.rotate((float) Math.toRadians(90), new Vector3f(0, 1, 0)); + } else if (isDown) { + mat.translate(new Vector3f(0.5F, 1-panel.height, 0.5F)); + rotateByMetadata(mat, getBlockMetadata()); + mat.rotate((float) Math.toRadians(180), new Vector3f(1, 0, 0)); + mat.rotate(-panel.angle, new Vector3f(0, 0, 1)); + mat.rotate((float) Math.toRadians(90), new Vector3f(0, 1, 0)); + } else { + mat.translate(new Vector3f(0.5F, 0, 0.5F)); + rotateByMetadata(mat, getBlockMetadata()); + mat.rotate((float) Math.toRadians(-90), new Vector3f(1, 0, 0)); + mat.rotate((float) Math.toRadians(-90), new Vector3f(0, 0, 1)); + mat.translate(new Vector3f(0, panel.height-0.5F, 0.5F)); + mat.rotate((float) Math.toRadians(-180), new Vector3f(0, 1, 0)); + mat.rotate(panel.angle, new Vector3f(1, 0, 0)); } - mat.translate(new Vector3f(-0.15F, 0.15F, -0.1F)); - mat.rotate(-0.528131795589244F, new Vector3f(0, 0, 1)); - mat.rotate((float)Math.toRadians(90), new Vector3f(0, 1, 0)); + mat.scale(new Vector3f(0.1F, 0.1F, 0.1F)); - + mat.translate(new Vector3f(0.5F, 0, 0.5F)); panel.setTransform(mat); } + private void rotateByMetadata(Matrix4f mat, int meta) { + switch ((meta & 3) + 2) { + case 4: + mat.rotate((float) Math.toRadians(180), new Vector3f(0, 1, 0)); + break; + case 2: + mat.rotate((float) Math.toRadians(90), new Vector3f(0, 1, 0)); + break; + case 3: + mat.rotate((float) Math.toRadians(270), new Vector3f(0, 1, 0)); + break; + } + } + + @SideOnly(Side.CLIENT) + public void loadClient(){ + updateTransform(); + } + @Override public void update(){ panel.update(); @@ -163,8 +206,8 @@ public void receiveControl(NBTTagCompound data){ ControlEvent evt = ControlEvent.readFromNBT(data); panel.controls.get(data.getInteger("click_control")).receiveEvent(evt); } - } + public void validate() { super.validate(); ControlEventSystem.get(this.world).addControllable(this); @@ -174,4 +217,154 @@ public void invalidate() { super.invalidate(); ControlEventSystem.get(this.world).removeControllable(this); } + + public float[] getBox() { + float baseSizeX = 1-(panel.b_off+panel.d_off); + float baseSizeY = 1-(panel.a_off+panel.c_off); + + double base_hyp = 1/Math.cos(Math.abs(panel.angle)); + double panel_hyp = baseSizeY/Math.cos(Math.abs(panel.angle)); + + float box_width = 10; + float box_height = (float) (base_hyp*10); + float minX = (-box_width/2) + (panel.d_off*box_width); + float minY = (-box_height/2) + (panel.a_off*box_height); + + return new float[] { minX, minY, minX+baseSizeX*10, (float) (minY+panel_hyp*10)}; + } + + public AxisAlignedBB getBoundingBox(boolean isUp, boolean isDown, EnumFacing facing) { + AxisAlignedBB defAABB = null; + float height1 = ControlPanel.getSlopeHeightFromZ(1-panel.c_off, panel.height, -panel.angle); + float height0 = ControlPanel.getSlopeHeightFromZ(panel.a_off, panel.height, -panel.angle); + + if (isUp) { + defAABB = new AxisAlignedBB(panel.d_off, 0, panel.a_off, 1 - panel.b_off, Math.max(height0, height1), 1 - panel.c_off); + } else if (isDown) { + defAABB = new AxisAlignedBB(1-panel.d_off, 1, panel.a_off, panel.b_off, 1-Math.max(height0, height1), 1-panel.c_off); + } else { + defAABB = new AxisAlignedBB(panel.d_off, 1-panel.a_off, 0, 1-panel.b_off, panel.c_off, Math.max(height0, height1)); + } + defAABB = rotateAABB(defAABB, facing); + + return defAABB; + } + + public static AxisAlignedBB rotateAABB(AxisAlignedBB box, EnumFacing facing){ + switch(facing){ + case NORTH: + return new AxisAlignedBB(1-box.minX, box.minY, 1-box.maxZ, 1-box.maxX, box.maxY, 1-box.minZ); + case SOUTH: + return box; + case EAST: + return new AxisAlignedBB(box.minZ, box.minY, 1-box.minX, box.maxZ, box.maxY, 1-box.maxX); + case WEST: + return new AxisAlignedBB(1-box.minZ, box.minY, box.minX, 1-box.maxZ, box.maxY, box.maxX); + default: + return box; + } + } + + // opencomputers interface + + @Override + public String getComponentName() { + return "control_panel"; + } + + @Callback() + public Object[] listControls(Context context, Arguments args) { + List ctrlList = new ArrayList<>(); + for (int i=0; i < panel.controls.size(); i++) { + ctrlList.add(panel.controls.get(i).name + " ("+i+")"); + } + return new Object[]{ctrlList}; + } + + @Callback() + public Object[] listGlobalVars(Context context, Arguments args) { + return new Object[]{panel.globalVars}; + } + + @Callback(doc = "getGlobalVar(name:str);") + public Object[] getGlobalVar(Context context, Arguments args) { + String name = args.checkString(0); + DataValue value = panel.getVar(name); + if (Objects.requireNonNull(value.getType()) == DataValue.DataType.NUMBER) { + return new Object[]{value.getNumber()}; + } + return new Object[]{value.toString()}; + } + + @Callback(doc = "setGlobalVar(name:str, value:[bool,str,double,int]);") + public Object[] setGlobalVar(Context context, Arguments args) { + String name = args.checkString(0); + + if (args.isBoolean(1)) + panel.globalVars.put(name, new DataValueFloat(args.checkBoolean(1))); + else if (args.isString(1)) + panel.globalVars.put(name, new DataValueString(args.checkString(1))); + else if (args.isDouble(1)) + panel.globalVars.put(name, new DataValueFloat((float) args.checkDouble(1))); + else if (args.isInteger(1)) + panel.globalVars.put(name, new DataValueFloat((float) args.checkInteger(1))); + else + return new Object[]{"ERROR: unsupported value type"}; + + return new Object[]{}; + } + + @Callback(doc = "listLocalVars(ID:int); list local vars for control ID.") + public Object[] listLocalVars(Context context, Arguments args) { + return new Object[]{panel.controls.get(args.checkInteger(0)).vars}; + } + + @Callback(doc = "getLocalVar(ID:int, name:str); get var for control ID.") + public Object[] getLocalVar(Context context, Arguments args) { + int index = args.checkInteger(0); + String name = args.checkString(1); + DataValue value = panel.controls.get(index).getVar(name); + if (Objects.requireNonNull(value.getType()) == DataValue.DataType.NUMBER) { + return new Object[]{value.getNumber()}; + } + return new Object[]{value.toString()}; + } + + @Callback(doc = "getLocalVar(ID:int, name:str, value:[bool,str,double,int]); set var for control ID.") + public Object[] setLocalVar(Context context, Arguments args) { + int index = args.checkInteger(0); + String name = args.checkString(1); + + if (args.isBoolean(2)) + panel.controls.get(index).vars.put(name, new DataValueFloat(args.checkBoolean(2))); + else if (args.isString(2)) { + DataValue value = panel.controls.get(index).vars.get(name); + String newValue = args.checkString(2); + + if (value.getType().equals(DataValue.DataType.ENUM)) { + if (((DataValueEnum) value).enumClass.equals(EnumDyeColor.class)) { + for (EnumDyeColor c : EnumDyeColor.values()) { + if (c.getName().equals(newValue)) { + panel.controls.get(index).vars.put(name, new DataValueEnum<>(EnumDyeColor.valueOf(newValue.toUpperCase()))); + return new Object[]{}; + } + } + return new Object[]{"ERROR: '" + newValue + "' not found for EnumDyeColor"}; + } + return new Object[]{"ERROR: unsupported enum class"}; + } + else { + panel.controls.get(index).vars.put(name, new DataValueString(newValue)); + } + } + else if (args.isDouble(2)) + panel.controls.get(index).vars.put(name, new DataValueFloat((float) args.checkDouble(2))); + else if (args.isInteger(2)) + panel.controls.get(index).vars.put(name, new DataValueFloat(args.checkInteger(2))); + else + return new Object[]{"ERROR: unsupported value type"}; + + return new Object[]{}; + } + } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityDummy.java b/src/main/java/com/hbm/tileentity/machine/TileEntityDummy.java index aad8d59085..0039120d4e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityDummy.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityDummy.java @@ -2,6 +2,8 @@ import com.hbm.interfaces.IMultiBlock; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.INBTPacketReceiver; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.play.server.SPacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; @@ -59,5 +61,4 @@ public SPacketUpdateTileEntity getUpdatePacket() { public NBTTagCompound getUpdateTag() { return this.writeToNBT(new NBTTagCompound()); } - } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java index a28c6e3326..fd7456dcee 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java @@ -153,8 +153,8 @@ public void update() { } if(power > 0) { - power -= 150; heat += Math.min(((double) power / (double) maxPower * 300), 150); + power = Math.max(power-150, 0); } else { heat -= 100; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFluidTank.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFluidTank.java index d05ef34de2..df22d1b733 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFluidTank.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFluidTank.java @@ -3,6 +3,8 @@ import com.hbm.forgefluid.FFUtils; import com.hbm.forgefluid.ModForgeFluids; import com.hbm.interfaces.ITankPacketAcceptor; +import com.hbm.inventory.control_panel.*; +import com.hbm.main.MainRegistry; import com.hbm.packet.FluidTankPacket; import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.TileEntityMachineBase; @@ -12,6 +14,8 @@ import net.minecraft.util.EnumFacing; import net.minecraft.util.ITickable; import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; @@ -23,8 +27,11 @@ import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.items.CapabilityItemHandler; +import scala.actors.threadpool.Arrays; -public class TileEntityMachineFluidTank extends TileEntityMachineBase implements ITickable, IFluidHandler, ITankPacketAcceptor { +import java.util.*; + +public class TileEntityMachineFluidTank extends TileEntityMachineBase implements ITickable, IFluidHandler, ITankPacketAcceptor, IControllable { public FluidTank tank; @@ -97,6 +104,9 @@ public void networkUnpack(NBTTagCompound nbt) { @Override public void handleButtonPacket(int value, int meta) { mode = (short) ((mode + 1) % modes); + if (!world.isRemote) { + broadcastControlEvt(); + } markDirty(); } @@ -212,4 +222,63 @@ public boolean hasCapability(Capability capability, EnumFacing facing) { } } + // control panel + + @Override + public Map getQueryData() { + Map data = new HashMap<>(); + + if (tank.getFluid() != null) { + data.put("t0_fluidType", new DataValueString(tank.getFluid().getLocalizedName())); + } + data.put("t0_fluidAmount", new DataValueFloat(tank.getFluidAmount())); + data.put("mode", new DataValueFloat(mode)); + + return data; + } + + @Override + public void receiveEvent(BlockPos from, ControlEvent e) { + if (e.name.equals("tank_set_mode")) { + mode = (short) (e.vars.get("mode").getNumber() % modes); + broadcastControlEvt(); + } + } + + public void broadcastControlEvt() { + ControlEventSystem.get(world).broadcastToSubscribed(this, ControlEvent.newEvent("tank_set_mode").setVar("mode", new DataValueFloat(mode))); + } + + @Override + public List getInEvents() { + return Collections.singletonList("tank_set_mode"); + } + + @Override + public List getOutEvents() { + return Collections.singletonList("tank_set_mode"); + } + + @Override + public void validate() { + super.validate(); + ControlEventSystem.get(world).addControllable(this); + } + + @Override + public void invalidate() { + super.invalidate(); + ControlEventSystem.get(world).removeControllable(this); + } + + @Override + public BlockPos getControlPos() { + return getPos(); + } + + @Override + public World getControlWorld() { + return getWorld(); + } + } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java index bfde1e07bc..0a1538fb42 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java @@ -1,11 +1,8 @@ package com.hbm.tileentity.machine.rbmk; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; +import com.hbm.inventory.control_panel.*; import org.lwjgl.opengl.GL11; import com.hbm.blocks.ModBlocks; @@ -14,6 +11,7 @@ import com.hbm.entity.projectile.EntityRBMKDebris; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; import com.hbm.items.machine.ItemRBMKRod; +import com.hbm.config.MachineConfig; import com.hbm.lib.ForgeDirection; import com.hbm.lib.HBMSoundHandler; import com.hbm.main.MainRegistry; @@ -48,7 +46,7 @@ import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -public abstract class TileEntityRBMKBase extends TileEntity implements INBTPacketReceiver, ITickable { +public abstract class TileEntityRBMKBase extends TileEntity implements INBTPacketReceiver, ITickable, IControllable { public static int rbmkHeight = 4; @@ -56,7 +54,6 @@ public abstract class TileEntityRBMKBase extends TileEntity implements INBTPacke public double jumpheight = 0.0D; public float downwardSpeed = 0.0F; public boolean falling = false; - public static final int jumpTemp = 1000; public static final byte gravity = 5; //in blocks per s^2 public int water; @@ -121,14 +118,14 @@ public void update() { } private void jump(){ - if(this.heat <= jumpTemp && !falling) + if(this.heat <= MachineConfig.rbmkJumpTemp && !falling) return; if(!falling){ // linear rise - if(this.heat > jumpTemp){ - if(this.jumpheight > 0 || world.rand.nextInt((int)(25D*maxHeat()/(this.heat-jumpTemp+200D))) == 0){ - double change = (this.heat-jumpTemp)*0.0002D; - double heightLimit = (this.heat-jumpTemp)*0.002D; + if(this.heat > MachineConfig.rbmkJumpTemp){ + if(this.jumpheight > 0 || world.rand.nextInt((int)(25D*maxHeat()/(this.heat-MachineConfig.rbmkJumpTemp+200D))) == 0){ + double change = (this.heat-MachineConfig.rbmkJumpTemp)*0.0002D; + double heightLimit = (this.heat-MachineConfig.rbmkJumpTemp)*0.002D; this.jumpheight = this.jumpheight + change; @@ -559,4 +556,40 @@ public static List getFancyStats(NBTTagCompound nbt) { public AxisAlignedBB getRenderBoundingBox() { return new AxisAlignedBB(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + 1, pos.getY() + 17, pos.getZ() + 1); } + + // control panel + + @Override + public Map getQueryData() { + Map data = new HashMap<>(); + + data.put("heat", new DataValueFloat((float) heat)); + data.put("RSIM_feed", new DataValueFloat(water)); + data.put("RSIM_steam", new DataValueFloat(steam)); + + return data; + } + + @Override + public void validate() { + super.validate(); + ControlEventSystem.get(world).addControllable(this); + } + + @Override + public void invalidate() { + super.invalidate(); + ControlEventSystem.get(world).removeControllable(this); + } + + @Override + public BlockPos getControlPos() { + return getPos(); + } + + @Override + public World getControlWorld() { + return getWorld(); + } + } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java index 4035c52b2a..36be2d4dd3 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java @@ -1,7 +1,6 @@ package com.hbm.tileentity.machine.rbmk; -import java.util.ArrayList; -import java.util.List; +import java.util.*; import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; @@ -9,6 +8,8 @@ import com.hbm.forgefluid.ModForgeFluids; import com.hbm.interfaces.IControlReceiver; import com.hbm.interfaces.ITankPacketAcceptor; +import com.hbm.inventory.control_panel.*; +import com.hbm.main.MainRegistry; import com.hbm.packet.FluidTankPacket; import com.hbm.packet.PacketDispatcher; import com.hbm.render.amlfrom1710.Vec3; @@ -301,4 +302,18 @@ public T getCapability(Capability capability, EnumFacing facing){ return CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY.cast(this); return super.getCapability(capability, facing); } + + // control panel + + @Override + public Map getQueryData() { + Map data = super.getQueryData(); + + data.put("feed", new DataValueFloat((float) feed.getFluidAmount())); + data.put("steam", new DataValueFloat((float) steam.getFluidAmount())); + data.put("steamType", new DataValueString(steamType.getName())); + + return data; + } + } \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java index 0291c3b6b5..f6bdb7b451 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java @@ -633,48 +633,48 @@ public Object[] getColumnData(Context context, Arguments args) { TileEntityRBMKBase column = (TileEntityRBMKBase) te; NBTTagCompound column_data = columns[i].data; - LinkedHashMap data_table = new LinkedHashMap<>(); + LinkedHashMap data_table = new LinkedHashMap<>(); data_table.put("type", column.getConsoleType().name()); - data_table.put("hullTemp", String.valueOf(column_data.getDouble("heat"))); - data_table.put("realSimWater", String.valueOf(column_data.getDouble("water"))); - data_table.put("realSimSteam", String.valueOf(column_data.getDouble("steam"))); - data_table.put("moderated", String.valueOf(column_data.getBoolean("moderated"))); - data_table.put("level", String.valueOf(column_data.getDouble("level"))); - data_table.put("color", String.valueOf(column_data.getShort("color"))); - data_table.put("enrichment", String.valueOf(column_data.getDouble("enrichment"))); - data_table.put("xenon", String.valueOf(column_data.getDouble("xenon"))); - data_table.put("coreSkinTemp", String.valueOf(column_data.getDouble("c_heat"))); - data_table.put("coreTemp", String.valueOf(column_data.getDouble("c_coreHeat"))); - data_table.put("coreMaxTemp", String.valueOf(column_data.getDouble("c_maxHeat"))); + data_table.put("hullTemp", column_data.getDouble("heat")); + data_table.put("realSimWater", column_data.getDouble("water")); + data_table.put("realSimSteam", column_data.getDouble("steam")); + data_table.put("moderated", column_data.getBoolean("moderated")); + data_table.put("level", column_data.getDouble("level")); + data_table.put("color", column_data.getShort("color")); + data_table.put("enrichment", column_data.getDouble("enrichment")); + data_table.put("xenon", column_data.getDouble("xenon")); + data_table.put("coreSkinTemp", column_data.getDouble("c_heat")); + data_table.put("coreTemp", column_data.getDouble("c_coreHeat")); + data_table.put("coreMaxTemp", column_data.getDouble("c_maxHeat")); if(te instanceof TileEntityRBMKRod){ TileEntityRBMKRod fuelChannel = (TileEntityRBMKRod)te; - data_table.put("fluxSlow", String.valueOf(fuelChannel.fluxSlow)); - data_table.put("fluxFast", String.valueOf(fuelChannel.fluxFast)); + data_table.put("fluxSlow", fuelChannel.fluxSlow); + data_table.put("fluxFast", fuelChannel.fluxFast); } if(te instanceof TileEntityRBMKBoiler){ TileEntityRBMKBoiler boiler = (TileEntityRBMKBoiler)te; - data_table.put("water", String.valueOf(boiler.feed.getFluidAmount())); - data_table.put("steam", String.valueOf(boiler.steam.getFluidAmount())); + data_table.put("water", boiler.feed.getFluidAmount()); + data_table.put("steam", boiler.steam.getFluidAmount()); } if(te instanceof TileEntityRBMKOutgasser){ TileEntityRBMKOutgasser irradiationChannel = (TileEntityRBMKOutgasser)te; - data_table.put("fluxProgress", String.valueOf(irradiationChannel.progress)); - data_table.put("requiredFlux", String.valueOf(irradiationChannel.duration)); + data_table.put("fluxProgress", irradiationChannel.progress); + data_table.put("requiredFlux", irradiationChannel.duration); } if(te instanceof TileEntityRBMKCooler){ TileEntityRBMKCooler coolingChannel = (TileEntityRBMKCooler)te; - data_table.put("degreesCooledPerTick", String.valueOf(coolingChannel.lastCooled)); - data_table.put("cryogel", String.valueOf(coolingChannel.tank.getFluidAmount())); + data_table.put("degreesCooledPerTick", coolingChannel.lastCooled); + data_table.put("cryogel", coolingChannel.tank.getFluidAmount()); } if(te instanceof TileEntityRBMKHeater){ TileEntityRBMKHeater heaterChannel = (TileEntityRBMKHeater)te; - data_table.put("coolant", String.valueOf(heaterChannel.tanks[0].getFluidAmount())); - data_table.put("hotcoolant", String.valueOf(heaterChannel.tanks[1].getFluidAmount())); + data_table.put("coolant", heaterChannel.tanks[0].getFluidAmount()); + data_table.put("hotcoolant", heaterChannel.tanks[1].getFluidAmount()); } return new Object[] {data_table}; @@ -692,7 +692,7 @@ public Object[] getRBMKPos(Context context, Arguments args) { return new Object[] {data_table}; } - return new Object[] {"No rbmkrod linked"}; + return new Object[] {null};//return null, its better to use this to tell there is nothing rather than a string saying so } @Callback(doc = "setLevel(level:double); set retraction of all control rods given 0≤level≤1") diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java index fea0c7322a..851c4da349 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java @@ -1,11 +1,20 @@ package com.hbm.tileentity.machine.rbmk; +import com.google.common.collect.Lists; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; +import com.hbm.inventory.control_panel.ControlEvent; +import com.hbm.inventory.control_panel.DataValue; +import com.hbm.inventory.control_panel.DataValueFloat; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.math.BlockPos; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; +import java.util.Collections; +import java.util.List; +import java.util.Map; + public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase { @SideOnly(Side.CLIENT) @@ -115,4 +124,16 @@ public NBTTagCompound getNBTForConsole() { data.setDouble("level", this.level); return data; } + + // control panel + + @Override + public Map getQueryData() { + Map data = super.getQueryData(); + + data.put("level", new DataValueFloat((float) this.level*100)); + + return data; + } + } \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlAuto.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlAuto.java index 93ee187d43..5843659e2f 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlAuto.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlAuto.java @@ -1,14 +1,21 @@ package com.hbm.tileentity.machine.rbmk; import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.control_panel.ControlEvent; +import com.hbm.inventory.control_panel.DataValue; import com.hbm.render.amlfrom1710.Vec3; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlManual.RBMKColor; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; +import java.util.Collections; +import java.util.List; +import java.util.Map; + public class TileEntityRBMKControlAuto extends TileEntityRBMKControl implements IControlReceiver { public RBMKFunction function = RBMKFunction.LINEAR; @@ -128,4 +135,5 @@ public static enum RBMKFunction { public ColumnType getConsoleType() { return ColumnType.CONTROL_AUTO; } + } \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java index bee2226c26..b8841829c3 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java @@ -1,12 +1,24 @@ package com.hbm.tileentity.machine.rbmk; +import com.google.common.collect.Lists; import com.hbm.blocks.machine.rbmk.RBMKControl; import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.control_panel.ControlEvent; +import com.hbm.inventory.control_panel.ControlEventSystem; +import com.hbm.inventory.control_panel.DataValue; +import com.hbm.inventory.control_panel.DataValueFloat; +import com.hbm.main.MainRegistry; import com.hbm.render.amlfrom1710.Vec3; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.math.BlockPos; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; public class TileEntityRBMKControlManual extends TileEntityRBMKControl implements IControlReceiver { @@ -130,4 +142,40 @@ public NBTTagCompound getNBTForConsole() { return data; } + + // control panel + + @Override + public Map getQueryData() { + Map data = super.getQueryData(); + + if (this.color != null) { + data.put("color", new DataValueFloat(this.color.ordinal())); + } + + return data; + } + + @Override + public void receiveEvent(BlockPos from, ControlEvent e) { + super.receiveEvent(from, e); + + if (e.name.equals("rbmk_ctrl_set_level")) { + this.startingLevel = this.level; + setTarget(Math.min(1, Math.max(0, e.vars.get("level").getNumber()/100))); + markDirty(); + } + if (e.name.equals("rbmk_ctrl_set_color")) { + this.color = RBMKColor.values()[(int) (e.vars.get("color").getNumber()) % RBMKColor.values().length - 1]; + } + } + + @Override + public List getInEvents() { + List events = new ArrayList<>(super.getInEvents()); + events.add("rbmk_ctrl_set_level"); + events.add("rbmk_ctrl_set_color"); + return events; + } + } \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java index 5a977df387..0c0e735059 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java @@ -1,5 +1,8 @@ package com.hbm.tileentity.machine.rbmk; +import com.hbm.inventory.control_panel.ControlEvent; +import com.hbm.inventory.control_panel.DataValue; +import com.hbm.inventory.control_panel.DataValueFloat; import com.hbm.lib.Library; import com.hbm.lib.HBMSoundHandler; import com.hbm.forgefluid.ModForgeFluids; @@ -14,6 +17,7 @@ import net.minecraft.util.EnumParticleTypes; import net.minecraft.init.SoundEvents; import net.minecraft.util.SoundCategory; +import net.minecraft.util.math.BlockPos; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTank; @@ -22,7 +26,9 @@ import net.minecraftforge.fluids.capability.CapabilityFluidHandler; import net.minecraftforge.common.capabilities.Capability; +import java.util.Collections; import java.util.List; +import java.util.Map; public class TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidHandler, ITankPacketAcceptor { @@ -190,4 +196,16 @@ public T getCapability(Capability capability, EnumFacing facing){ return CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY.cast(this); return super.getCapability(capability, facing); } + + // control panel + + @Override + public Map getQueryData() { + Map data = super.getQueryData(); + + data.put("coolant", new DataValueFloat(tank.getFluidAmount())); + + return data; + } + } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCraneConsole.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCraneConsole.java index d896a7fee9..1f47eace2c 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCraneConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCraneConsole.java @@ -1,13 +1,15 @@ package com.hbm.tileentity.machine.rbmk; -import java.util.List; +import java.util.*; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.machine.rbmk.RBMKBase; import com.hbm.capability.HbmCapability; import com.hbm.capability.HbmCapability.IHBMData; import com.hbm.handler.HbmKeybinds.EnumKeybind; +import com.hbm.inventory.control_panel.*; import com.hbm.items.machine.ItemRBMKRod; +import com.hbm.main.MainRegistry; import com.hbm.packet.NBTPacket; import com.hbm.lib.ForgeDirection; import com.hbm.packet.PacketDispatcher; @@ -25,6 +27,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.MathHelper; +import net.minecraft.world.World; import net.minecraftforge.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @@ -36,7 +39,7 @@ import li.cil.oc.api.network.SimpleComponent; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityRBMKCraneConsole extends TileEntityMachineBase implements ITickable, INBTPacketReceiver, SimpleComponent { +public class TileEntityRBMKCraneConsole extends TileEntityMachineBase implements ITickable, INBTPacketReceiver, SimpleComponent, IControllable { public int centerX; public int centerY; @@ -109,19 +112,21 @@ public void update() { progress = 0; goesDown = false; - if(!world.isRemote && this.canTargetInteract()) { - if(inventory.getStackInSlot(0).isEmpty()) { - IRBMKLoadable column = getColumnAtPos(); - inventory.setStackInSlot(0, column.provideNext()); - column.unload(); - } else { - getColumnAtPos().load(inventory.getStackInSlot(0)); - inventory.setStackInSlot(0, ItemStack.EMPTY); + if(!world.isRemote) { + ControlEventSystem.get(world).broadcastToSubscribed(this, ControlEvent.newEvent("rbmk_crane_load")); + + if (this.canTargetInteract()) { + if (inventory.getStackInSlot(0).isEmpty()) { + IRBMKLoadable column = getColumnAtPos(); + inventory.setStackInSlot(0, column.provideNext()); + column.unload(); + } else { + getColumnAtPos().load(inventory.getStackInSlot(0)); + inventory.setStackInSlot(0, ItemStack.EMPTY); + } + this.markDirty(); } - - this.markDirty(); } - } } else if(progress != 1) { @@ -203,7 +208,7 @@ else if(craneUp || craneDown || craneLeft || craneRight) //activating cooldown posLeft = MathHelper.clamp(posLeft, -spanR, spanL); if(!world.isRemote) { - + if(!inventory.getStackInSlot(0).isEmpty() && inventory.getStackInSlot(0).getItem() instanceof ItemRBMKRod) { this.loadedHeat = ItemRBMKRod.getHullHeat(inventory.getStackInSlot(0)); this.loadedEnrichment = ItemRBMKRod.getEnrichment(inventory.getStackInSlot(0)); @@ -229,6 +234,7 @@ else if(craneUp || craneDown || craneLeft || craneRight) //activating cooldown nbt.setBoolean("loaded", this.hasItemLoaded()); nbt.setDouble("loadedHeat", loadedHeat); nbt.setDouble("loadedEnrichment", loadedEnrichment); + nbt.setBoolean("goesDown", goesDown); } PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(nbt, pos), new TargetPoint(world.provider.getDimension(), pos.getX(), pos.getY(), pos.getZ(), 250)); } @@ -260,6 +266,13 @@ public void processInput(boolean inputUP, boolean inputDOWN, boolean inputLEFT, tiltLeft = -30; } } + + if (!world.isRemote && (up || down || left || right)) { + ControlEventSystem.get(world).broadcastToSubscribed(this, ControlEvent.newEvent("rbmk_crane_move") + .setVar("up", new DataValueFloat(up)).setVar("down", new DataValueFloat(down)) + .setVar("left", new DataValueFloat(left)).setVar("right", new DataValueFloat(right))); + } + } public boolean hasItemLoaded() { @@ -339,6 +352,7 @@ public void networkUnpack(NBTTagCompound nbt) { this.posLeft = nbt.getDouble("posLeft"); this.loadedHeat = nbt.getDouble("loadedHeat"); this.loadedEnrichment = nbt.getDouble("loadedEnrichment"); + this.goesDown = nbt.getBoolean("goesDown"); } public void setTarget(int x, int y, int z) { @@ -371,7 +385,7 @@ public void readFromNBT(NBTTagCompound nbt) { this.height = nbt.getInteger("height"); this.posFront = nbt.getDouble("posFront"); this.posLeft = nbt.getDouble("posLeft"); - + if(nbt.hasKey("inventory")) inventory.deserializeNBT(nbt.getCompoundTag("inventory")); super.readFromNBT(nbt); @@ -542,4 +556,72 @@ public Object[] getPos(Context context, Arguments args) { return new Object[] {-posLeft, posFront}; return new Object[] {"No crane found"}; } + + // control panel + + @Override + public Map getQueryData() { + Map data = new HashMap<>(); + if (setUpCrane) { + data.put("posX", new DataValueFloat((float) -posLeft)); + data.put("posY", new DataValueFloat((float) posFront)); + } + return data; + } + + @Override + public void receiveEvent(BlockPos from, ControlEvent e) { + switch (e.name) { + case "rbmk_crane_move": { + boolean up = e.vars.get("up").getBoolean(); + boolean down = e.vars.get("down").getBoolean(); + boolean left = e.vars.get("left").getBoolean(); + boolean right = e.vars.get("right").getBoolean(); + + if (setUpCrane && !isCraneLoading()) { + processInput(up, down, left, right); + } + break; + } + case "rbmk_crane_load": { + if (setUpCrane && !isCraneLoading()) { + goesDown = true; + } + break; + } + } + } + + @Override + public List getInEvents() { + return Arrays.asList("rbmk_crane_move", "rbmk_crane_load"); + } + + @Override + public List getOutEvents() { + return Arrays.asList("rbmk_crane_move", "rbmk_crane_load"); + } + + @Override + public void validate() { + super.validate(); + ControlEventSystem.get(world).addControllable(this); + } + + @Override + public void invalidate() { + super.invalidate(); + ControlEventSystem.get(world).removeControllable(this); + } + + @Override + public BlockPos getControlPos() { + return getPos(); + } + + @Override + public World getControlWorld() { + return getWorld(); + } + } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java index e664d8b390..1124f96015 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java @@ -1,6 +1,10 @@ package com.hbm.tileentity.machine.rbmk; import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.control_panel.ControlEvent; +import com.hbm.inventory.control_panel.DataValue; +import com.hbm.inventory.control_panel.DataValueFloat; +import com.hbm.inventory.control_panel.DataValueString; import com.hbm.items.ModItems; import com.hbm.blocks.BlockDummyable; import com.hbm.items.machine.ItemForgeFluidIdentifier; @@ -32,7 +36,9 @@ import net.minecraftforge.fml.common.network.NetworkRegistry.TargetPoint; import java.util.ArrayList; +import java.util.Collections; import java.util.List; +import java.util.Map; public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements IFluidHandler, ITankPacketAcceptor { @@ -260,4 +266,19 @@ public T getCapability(Capability capability, EnumFacing facing){ return CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY.cast(this); return super.getCapability(capability, facing); } + + // control panel + + @Override + public Map getQueryData() { + Map data = super.getQueryData(); + + data.put("t0_fluidType", new DataValueString(tankTypes[0].getName())); + data.put("t0_fluidAmount", new DataValueFloat((float) tanks[0].getFluidAmount())); + data.put("t1_fluidType", new DataValueString(tankTypes[1].getName())); + data.put("t1_fluidAmount", new DataValueFloat((float) tanks[1].getFluidAmount())); + + return data; + } + } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java index b2dd18d150..331e877162 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java @@ -1,6 +1,9 @@ package com.hbm.tileentity.machine.rbmk; +import java.util.Collections; import java.util.HashMap; +import java.util.List; +import java.util.Map; import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; @@ -9,6 +12,9 @@ import com.hbm.interfaces.ITankPacketAcceptor; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RBMKOutgasserRecipes; +import com.hbm.inventory.control_panel.ControlEvent; +import com.hbm.inventory.control_panel.DataValue; +import com.hbm.inventory.control_panel.DataValueFloat; import com.hbm.util.ContaminationUtil; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFluidIcon; @@ -296,4 +302,18 @@ public void unload() { inventory.setStackInSlot(1, ItemStack.EMPTY); this.markDirty(); } + + // control panel + + @Override + public Map getQueryData() { + Map data = super.getQueryData(); + + data.put("gas", new DataValueFloat(this.gas.getFluidAmount())); + data.put("progress", new DataValueFloat((float) this.progress)); + data.put("maxProgress", new DataValueFloat((float) this.duration)); + + return data; + } + } \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java index b48a9be2c7..bc704d8910 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -1,12 +1,18 @@ package com.hbm.tileentity.machine.rbmk; +import java.util.Collections; import java.util.List; +import java.util.Map; import com.hbm.config.MobConfig; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.rbmk.RBMKBase; import com.hbm.blocks.machine.rbmk.RBMKRod; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; +import com.hbm.inventory.control_panel.ControlEvent; +import com.hbm.inventory.control_panel.DataValue; +import com.hbm.inventory.control_panel.DataValueFloat; +import com.hbm.inventory.control_panel.DataValueString; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemRBMKRod; import com.hbm.lib.ForgeDirection; @@ -409,4 +415,26 @@ public void unload() { inventory.setStackInSlot(0, ItemStack.EMPTY); this.markDirty(); } + + // control panel + + @Override + public Map getQueryData() { + Map data = super.getQueryData(); + + if (inventory.getStackInSlot(0).getItem() instanceof ItemRBMKRod) { + ItemRBMKRod rod = ((ItemRBMKRod)inventory.getStackInSlot(0).getItem()); + data.put("rod_name", new DataValueString(rod.getUnlocalizedName())); + data.put("enrichment", new DataValueFloat((float) ItemRBMKRod.getEnrichment(inventory.getStackInSlot(0)))); + data.put("xenon", new DataValueFloat((float) ItemRBMKRod.getPoison(inventory.getStackInSlot(0)))); + data.put("c_heat", new DataValueFloat((float) ItemRBMKRod.getHullHeat(inventory.getStackInSlot(0)))); + data.put("c_coreHeat", new DataValueFloat((float) ItemRBMKRod.getCoreHeat(inventory.getStackInSlot(0)))); + data.put("c_maxHeat", new DataValueFloat((float) rod.meltingPoint)); + data.put("meltdown", new DataValueFloat((float) ItemRBMKRod.getMeltdownPercent(inventory.getStackInSlot(0)))); + } + data.put("flux", new DataValueFloat((float) this.fluxOut)); + + return data; + } + } \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java index 1bca67df25..c067ad37fb 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java @@ -1,11 +1,18 @@ package com.hbm.tileentity.machine.rbmk; +import com.hbm.inventory.control_panel.ControlEvent; +import com.hbm.inventory.control_panel.DataValue; import com.hbm.items.machine.ItemRBMKRod; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import net.minecraft.util.EnumFacing; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.BlockPos; + +import java.util.Collections; +import java.util.List; +import java.util.Map; public class TileEntityRBMKStorage extends TileEntityRBMKSlottedBase implements IRBMKLoadable { diff --git a/src/main/resources/assets/hbm/models/blocks/conveyor.obj b/src/main/resources/assets/hbm/models/blocks/conveyor.obj new file mode 100644 index 0000000000..d85e17f0fb --- /dev/null +++ b/src/main/resources/assets/hbm/models/blocks/conveyor.obj @@ -0,0 +1,50 @@ +# Made in Blockbench 4.9.3 +mtllib conveyor.mtl + +o conveyor +v 1 0.25 1 +v 1 0.25 0 +v 1 0 1 +v 1 0 0 +v 0 0.25 1 +v 0 0.25 0 +v 0 0 1 +v 0 0 0 +vt 1 0.25 +vt 0 0.25 +vt 0 0 +vt 1 0 +vt 1 0 +vt 1 0.25 +vt 0 0.25 +vt 0 0 +vt 0 0 +vt 1 0 +vt 1 1 +vt 0 1 +vt 1 0 +vt 1 1 +vt 0 1 +vt 0 0 +vt 1 0.75 +vt 1 1 +vt 0 1 +vt 0 0.75 +vt 1 1 +vt 0 1 +vt 0 0.75 +vt 1 0.75 +vn 1 0 0 +vn -1 0 0 +vn 0 1 0 +vn 0 -1 0 +vn 0 0 1 +vn 0 0 -1 +usemtl m_bb126d08-7821-6e47-8032-b411bedee09a +f 2/1/1 1/2/1 3/3/1 4/4/1 +f 7/5/2 5/6/2 6/7/2 8/8/2 +usemtl m_faf1884d-366c-ce32-3278-6fc04005967d +f 5/9/3 1/10/3 2/11/3 6/12/3 +f 4/13/4 3/14/4 7/15/4 8/16/4 +f 3/17/5 1/18/5 5/19/5 7/20/5 +f 6/21/6 2/22/6 4/23/6 8/24/6 \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/control_panel/button0.obj b/src/main/resources/assets/hbm/models/control_panel/button0.obj new file mode 100644 index 0000000000..5296c629aa --- /dev/null +++ b/src/main/resources/assets/hbm/models/control_panel/button0.obj @@ -0,0 +1,121 @@ +# Blender v2.92.0 OBJ File: 'control0.blend' +# www.blender.org +o button0 +v -0.500000 0.000000 0.500000 +v -0.500000 0.125000 0.500000 +v -0.500000 0.000000 -0.500000 +v -0.500000 0.125000 -0.500000 +v 0.500000 0.000000 0.500000 +v 0.500000 0.125000 0.500000 +v 0.500000 0.000000 -0.500000 +v 0.500000 0.125000 -0.500000 +vt 0.625000 0.062500 +vt 0.062500 0.000000 +vt 0.625000 0.000000 +vt 0.062500 0.062500 +vt 0.000000 0.625000 +vt 0.000000 0.062500 +vt 0.062500 0.625000 +vt 0.625000 0.687500 +vt 0.062500 0.687500 +vt 0.625000 0.625000 +vt 0.687500 0.062500 +vt 0.687500 0.625000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +s 1 +f 2/1/1 3/2/1 1/3/1 +f 4/4/2 7/5/2 3/6/2 +f 8/7/3 5/8/3 7/9/3 +f 6/10/4 1/11/4 5/12/4 +f 4/4/5 6/10/5 8/7/5 +f 2/1/1 4/4/1 3/2/1 +f 4/4/2 8/7/2 7/5/2 +f 8/7/3 6/10/3 5/8/3 +f 6/10/4 2/1/4 1/11/4 +f 4/4/5 2/1/5 6/10/5 +o button0_base +v 0.000000 0.125000 -0.289793 +v -0.204915 0.125000 -0.204915 +v -0.289793 0.125000 0.000000 +v -0.204915 0.125000 0.204915 +v 0.000000 0.125000 0.289793 +v 0.204915 0.125000 0.204915 +v 0.289793 0.125000 -0.000000 +v 0.204915 0.125000 -0.204915 +v -0.129996 0.252562 -0.129996 +v 0.000000 0.252562 -0.183842 +v -0.183842 0.252562 0.000000 +v -0.129996 0.252562 0.129996 +v 0.000000 0.252562 0.183842 +v 0.129996 0.252562 0.129996 +v 0.183842 0.252562 -0.000000 +v 0.129996 0.252562 -0.129996 +vt 0.712613 0.203252 +vt 0.796748 0.000132 +vt 0.999868 0.084267 +vt 0.250000 0.687500 +vt 0.125000 0.812500 +vt 0.125000 0.687500 +vt 0.000000 0.687500 +vt 0.000000 0.812500 +vt 0.937500 0.687500 +vt 0.812500 0.812500 +vt 0.812500 0.687500 +vt 0.687500 0.687500 +vt 0.687500 0.812500 +vt 0.625000 0.812500 +vt 0.625000 0.687500 +vt 0.500000 0.812500 +vt 0.500000 0.687500 +vt 0.375000 0.687500 +vt 0.375000 0.812500 +vt 0.250000 0.812500 +vt 0.999868 0.203252 +vt 0.915733 0.287387 +vt 0.796748 0.287387 +vt 0.712613 0.084267 +vt 0.915733 0.000132 +vt 0.937500 0.812500 +vn -0.0000 0.8638 0.5038 +vn 0.5038 0.8638 -0.0000 +vn 0.0000 0.8638 -0.5038 +vn -0.5439 0.6389 -0.5439 +vn -0.3562 0.8638 -0.3562 +vn -0.5038 0.8638 0.0000 +vn -0.7693 0.6389 0.0000 +vn -0.5439 0.6389 0.5439 +vn -0.3562 0.8638 0.3562 +vn -0.0000 0.6389 0.7693 +vn 0.5439 0.6389 0.5439 +vn 0.3562 0.8638 0.3562 +vn 0.7693 0.6389 -0.0000 +vn 0.3562 0.8638 -0.3562 +vn 0.5439 0.6389 -0.5439 +vn 0.0000 0.6389 -0.7693 +s 1 +f 21/13/6 23/14/7 18/15/8 +f 18/16/8 10/17/9 17/18/10 +f 19/19/11 10/17/9 11/20/12 +f 19/21/11 12/22/13 20/23/14 +f 21/24/6 12/22/13 13/25/15 +f 21/24/6 14/26/16 22/27/17 +f 22/27/17 15/28/18 23/29/7 +f 24/30/19 15/28/18 16/31/20 +f 24/30/19 9/32/21 18/16/8 +f 18/15/8 17/33/10 19/34/11 +f 19/34/11 20/35/14 21/13/6 +f 21/13/6 22/36/17 23/14/7 +f 23/14/7 24/37/19 18/15/8 +f 18/15/8 19/34/11 21/13/6 +f 18/16/8 9/32/21 10/17/9 +f 19/19/11 17/18/10 10/17/9 +f 19/21/11 11/38/12 12/22/13 +f 21/24/6 20/23/14 12/22/13 +f 21/24/6 13/25/15 14/26/16 +f 22/27/17 14/26/16 15/28/18 +f 24/30/19 23/29/7 15/28/18 +f 24/30/19 16/31/20 9/32/21 diff --git a/src/main/resources/assets/hbm/models/control_panel/control0.obj b/src/main/resources/assets/hbm/models/control_panel/control0.obj new file mode 100644 index 0000000000..b6514b6c06 --- /dev/null +++ b/src/main/resources/assets/hbm/models/control_panel/control0.obj @@ -0,0 +1,55 @@ +# Blender v2.92.0 OBJ File: 'control0.blend' +# www.blender.org +o Cube_Cube.001 +v -0.500000 0.000000 0.500000 +v -0.500000 0.300000 0.500000 +v -0.500000 0.000000 -0.500000 +v -0.500000 0.300000 -0.500000 +v 0.000000 0.000000 0.500000 +v 0.000000 0.000000 -0.500000 +v 0.000000 0.062174 0.500000 +v -0.407648 0.300000 0.500000 +v -0.407648 0.300000 -0.500000 +v 0.000000 0.062174 -0.500000 +vt 0.187559 0.187559 +vt 0.000095 0.812442 +vt 0.000094 0.187560 +vt 0.833766 0.000094 +vt 0.891475 0.000094 +vt 0.891475 0.187559 +vt 0.579034 0.851292 +vt 0.891475 0.812441 +vt 0.833766 0.999906 +vt 0.579034 0.812441 +vt 0.540183 0.812441 +vt 0.579034 0.187559 +vt 0.245268 0.187559 +vt 0.245269 0.812441 +vt 0.187560 0.812441 +vt 0.579034 0.148708 +vt 0.891475 0.999906 +vt 0.540182 0.187559 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.5039 0.8637 0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 2/1/1 3/2/1 1/3/1 +f 8/4/2 2/5/2 1/6/2 +f 10/7/3 3/8/3 9/9/3 +f 6/10/4 1/6/4 3/8/4 +f 10/11/5 5/12/5 6/10/5 +f 8/13/6 10/11/6 9/14/6 +f 4/15/7 8/13/7 9/14/7 +f 2/1/1 4/15/1 3/2/1 +f 1/6/2 5/12/2 7/16/2 +f 7/16/2 8/4/2 1/6/2 +f 6/10/3 3/8/3 10/7/3 +f 3/8/3 4/17/3 9/9/3 +f 6/10/4 5/12/4 1/6/4 +f 10/11/5 7/18/5 5/12/5 +f 8/13/6 7/18/6 10/11/6 +f 4/15/7 2/1/7 8/13/7 From f2d211685ee707b3fd39f9fa4c14e3f1f390a75a Mon Sep 17 00:00:00 2001 From: TheSlize Date: Thu, 8 Feb 2024 00:18:22 +0300 Subject: [PATCH 3/3] Conveyor update, try 3 --- .../hbm/blockstates/control_panel0.json | 8 -- .../hbm/models/block/control_panel0.json | 6 - .../hbm/models/control_panel/button0.obj | 121 ------------------ .../hbm/models/control_panel/control0.obj | 55 -------- ...1\203\320\274\320\265\320\275\321\202.txt" | 0 .../gui/control_panel/gui_control.png | Bin 1756 -> 0 bytes .../control_panel/gui_control_add_element.png | Bin 1898 -> 0 bytes .../gui/control_panel/gui_control_grid.png | Bin 1811 -> 0 bytes .../gui/control_panel/placement_grid.png | Bin 1230 -> 0 bytes .../textures/models/control_panel/button0.png | Bin 1066 -> 0 bytes .../models/control_panel/control0.png | Bin 3990 -> 0 bytes 11 files changed, 190 deletions(-) delete mode 100644 src/main/resources/assets/hbm/blockstates/control_panel0.json delete mode 100644 src/main/resources/assets/hbm/models/block/control_panel0.json delete mode 100644 src/main/resources/assets/hbm/models/control_panel/button0.obj delete mode 100644 src/main/resources/assets/hbm/models/control_panel/control0.obj delete mode 100644 "src/main/resources/assets/hbm/models/item/\320\235\320\276\320\262\321\213\320\271 \321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271 \320\264\320\276\320\272\321\203\320\274\320\265\320\275\321\202.txt" delete mode 100644 src/main/resources/assets/hbm/textures/gui/control_panel/gui_control.png delete mode 100644 src/main/resources/assets/hbm/textures/gui/control_panel/gui_control_add_element.png delete mode 100644 src/main/resources/assets/hbm/textures/gui/control_panel/gui_control_grid.png delete mode 100644 src/main/resources/assets/hbm/textures/gui/control_panel/placement_grid.png delete mode 100644 src/main/resources/assets/hbm/textures/models/control_panel/button0.png delete mode 100644 src/main/resources/assets/hbm/textures/models/control_panel/control0.png diff --git a/src/main/resources/assets/hbm/blockstates/control_panel0.json b/src/main/resources/assets/hbm/blockstates/control_panel0.json deleted file mode 100644 index d6e58781b6..0000000000 --- a/src/main/resources/assets/hbm/blockstates/control_panel0.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "variants": { - "facing=north": { "model": "hbm:control_panel0" }, - "facing=south": { "model": "hbm:control_panel0" }, - "facing=east": { "model": "hbm:control_panel0" }, - "facing=west": { "model": "hbm:control_panel0" } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/block/control_panel0.json b/src/main/resources/assets/hbm/models/block/control_panel0.json deleted file mode 100644 index 5245e5d5c6..0000000000 --- a/src/main/resources/assets/hbm/models/block/control_panel0.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "hbm:blocks/control_panel0" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/control_panel/button0.obj b/src/main/resources/assets/hbm/models/control_panel/button0.obj deleted file mode 100644 index 5296c629aa..0000000000 --- a/src/main/resources/assets/hbm/models/control_panel/button0.obj +++ /dev/null @@ -1,121 +0,0 @@ -# Blender v2.92.0 OBJ File: 'control0.blend' -# www.blender.org -o button0 -v -0.500000 0.000000 0.500000 -v -0.500000 0.125000 0.500000 -v -0.500000 0.000000 -0.500000 -v -0.500000 0.125000 -0.500000 -v 0.500000 0.000000 0.500000 -v 0.500000 0.125000 0.500000 -v 0.500000 0.000000 -0.500000 -v 0.500000 0.125000 -0.500000 -vt 0.625000 0.062500 -vt 0.062500 0.000000 -vt 0.625000 0.000000 -vt 0.062500 0.062500 -vt 0.000000 0.625000 -vt 0.000000 0.062500 -vt 0.062500 0.625000 -vt 0.625000 0.687500 -vt 0.062500 0.687500 -vt 0.625000 0.625000 -vt 0.687500 0.062500 -vt 0.687500 0.625000 -vn -1.0000 0.0000 0.0000 -vn 0.0000 0.0000 -1.0000 -vn 1.0000 0.0000 0.0000 -vn 0.0000 0.0000 1.0000 -vn 0.0000 1.0000 0.0000 -s 1 -f 2/1/1 3/2/1 1/3/1 -f 4/4/2 7/5/2 3/6/2 -f 8/7/3 5/8/3 7/9/3 -f 6/10/4 1/11/4 5/12/4 -f 4/4/5 6/10/5 8/7/5 -f 2/1/1 4/4/1 3/2/1 -f 4/4/2 8/7/2 7/5/2 -f 8/7/3 6/10/3 5/8/3 -f 6/10/4 2/1/4 1/11/4 -f 4/4/5 2/1/5 6/10/5 -o button0_base -v 0.000000 0.125000 -0.289793 -v -0.204915 0.125000 -0.204915 -v -0.289793 0.125000 0.000000 -v -0.204915 0.125000 0.204915 -v 0.000000 0.125000 0.289793 -v 0.204915 0.125000 0.204915 -v 0.289793 0.125000 -0.000000 -v 0.204915 0.125000 -0.204915 -v -0.129996 0.252562 -0.129996 -v 0.000000 0.252562 -0.183842 -v -0.183842 0.252562 0.000000 -v -0.129996 0.252562 0.129996 -v 0.000000 0.252562 0.183842 -v 0.129996 0.252562 0.129996 -v 0.183842 0.252562 -0.000000 -v 0.129996 0.252562 -0.129996 -vt 0.712613 0.203252 -vt 0.796748 0.000132 -vt 0.999868 0.084267 -vt 0.250000 0.687500 -vt 0.125000 0.812500 -vt 0.125000 0.687500 -vt 0.000000 0.687500 -vt 0.000000 0.812500 -vt 0.937500 0.687500 -vt 0.812500 0.812500 -vt 0.812500 0.687500 -vt 0.687500 0.687500 -vt 0.687500 0.812500 -vt 0.625000 0.812500 -vt 0.625000 0.687500 -vt 0.500000 0.812500 -vt 0.500000 0.687500 -vt 0.375000 0.687500 -vt 0.375000 0.812500 -vt 0.250000 0.812500 -vt 0.999868 0.203252 -vt 0.915733 0.287387 -vt 0.796748 0.287387 -vt 0.712613 0.084267 -vt 0.915733 0.000132 -vt 0.937500 0.812500 -vn -0.0000 0.8638 0.5038 -vn 0.5038 0.8638 -0.0000 -vn 0.0000 0.8638 -0.5038 -vn -0.5439 0.6389 -0.5439 -vn -0.3562 0.8638 -0.3562 -vn -0.5038 0.8638 0.0000 -vn -0.7693 0.6389 0.0000 -vn -0.5439 0.6389 0.5439 -vn -0.3562 0.8638 0.3562 -vn -0.0000 0.6389 0.7693 -vn 0.5439 0.6389 0.5439 -vn 0.3562 0.8638 0.3562 -vn 0.7693 0.6389 -0.0000 -vn 0.3562 0.8638 -0.3562 -vn 0.5439 0.6389 -0.5439 -vn 0.0000 0.6389 -0.7693 -s 1 -f 21/13/6 23/14/7 18/15/8 -f 18/16/8 10/17/9 17/18/10 -f 19/19/11 10/17/9 11/20/12 -f 19/21/11 12/22/13 20/23/14 -f 21/24/6 12/22/13 13/25/15 -f 21/24/6 14/26/16 22/27/17 -f 22/27/17 15/28/18 23/29/7 -f 24/30/19 15/28/18 16/31/20 -f 24/30/19 9/32/21 18/16/8 -f 18/15/8 17/33/10 19/34/11 -f 19/34/11 20/35/14 21/13/6 -f 21/13/6 22/36/17 23/14/7 -f 23/14/7 24/37/19 18/15/8 -f 18/15/8 19/34/11 21/13/6 -f 18/16/8 9/32/21 10/17/9 -f 19/19/11 17/18/10 10/17/9 -f 19/21/11 11/38/12 12/22/13 -f 21/24/6 20/23/14 12/22/13 -f 21/24/6 13/25/15 14/26/16 -f 22/27/17 14/26/16 15/28/18 -f 24/30/19 23/29/7 15/28/18 -f 24/30/19 16/31/20 9/32/21 diff --git a/src/main/resources/assets/hbm/models/control_panel/control0.obj b/src/main/resources/assets/hbm/models/control_panel/control0.obj deleted file mode 100644 index b6514b6c06..0000000000 --- a/src/main/resources/assets/hbm/models/control_panel/control0.obj +++ /dev/null @@ -1,55 +0,0 @@ -# Blender v2.92.0 OBJ File: 'control0.blend' -# www.blender.org -o Cube_Cube.001 -v -0.500000 0.000000 0.500000 -v -0.500000 0.300000 0.500000 -v -0.500000 0.000000 -0.500000 -v -0.500000 0.300000 -0.500000 -v 0.000000 0.000000 0.500000 -v 0.000000 0.000000 -0.500000 -v 0.000000 0.062174 0.500000 -v -0.407648 0.300000 0.500000 -v -0.407648 0.300000 -0.500000 -v 0.000000 0.062174 -0.500000 -vt 0.187559 0.187559 -vt 0.000095 0.812442 -vt 0.000094 0.187560 -vt 0.833766 0.000094 -vt 0.891475 0.000094 -vt 0.891475 0.187559 -vt 0.579034 0.851292 -vt 0.891475 0.812441 -vt 0.833766 0.999906 -vt 0.579034 0.812441 -vt 0.540183 0.812441 -vt 0.579034 0.187559 -vt 0.245268 0.187559 -vt 0.245269 0.812441 -vt 0.187560 0.812441 -vt 0.579034 0.148708 -vt 0.891475 0.999906 -vt 0.540182 0.187559 -vn -1.0000 0.0000 0.0000 -vn 0.0000 0.0000 1.0000 -vn 0.0000 0.0000 -1.0000 -vn 0.0000 -1.0000 0.0000 -vn 1.0000 0.0000 0.0000 -vn 0.5039 0.8637 0.0000 -vn 0.0000 1.0000 0.0000 -s off -f 2/1/1 3/2/1 1/3/1 -f 8/4/2 2/5/2 1/6/2 -f 10/7/3 3/8/3 9/9/3 -f 6/10/4 1/6/4 3/8/4 -f 10/11/5 5/12/5 6/10/5 -f 8/13/6 10/11/6 9/14/6 -f 4/15/7 8/13/7 9/14/7 -f 2/1/1 4/15/1 3/2/1 -f 1/6/2 5/12/2 7/16/2 -f 7/16/2 8/4/2 1/6/2 -f 6/10/3 3/8/3 10/7/3 -f 3/8/3 4/17/3 9/9/3 -f 6/10/4 5/12/4 1/6/4 -f 10/11/5 7/18/5 5/12/5 -f 8/13/6 7/18/6 10/11/6 -f 4/15/7 2/1/7 8/13/7 diff --git "a/src/main/resources/assets/hbm/models/item/\320\235\320\276\320\262\321\213\320\271 \321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271 \320\264\320\276\320\272\321\203\320\274\320\265\320\275\321\202.txt" "b/src/main/resources/assets/hbm/models/item/\320\235\320\276\320\262\321\213\320\271 \321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271 \320\264\320\276\320\272\321\203\320\274\320\265\320\275\321\202.txt" deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/main/resources/assets/hbm/textures/gui/control_panel/gui_control.png b/src/main/resources/assets/hbm/textures/gui/control_panel/gui_control.png deleted file mode 100644 index 9b2ba87b996b7f2ec7f6058f690defaece9d80f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1756 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911MRQ8&P5D>38$lZxy-8q?;Kn_c~qpu?a z!^VE@KZ&di49pAxJ|V6^@zBuFi4!LtJ9g~<|NlVlC>RZakrM(HmR3%nTvHO{7Yt1Q zBN;FRe`i+(#yn?%M`SSr1K(i~W;~w1B87p0Dbmx$F{C2y?VXK%QI0%q7rA%8|9@(- z>aW=+0?&kI*c9(O#+!W7y=hYR+U)(;e#gH4b#J{i)AhdZ_4Rx8KS)2w-Y(a_oi&c3 za%&*ah7+~9pcFPCTpCyoHQc$*2IA2|s+{54*UulL%y{359oSX$S>ASYR@!%lx_xX* zpBHaA;M=g@B<8_?#yF#d03=UH<}w(0gBaTy zfn}^h`WD6$Iv~bvHlWKJ=3Hb`*vtZCj3~|9R1Z8BW_VroR`NDG!?mfg!qvb3)ibWi z&fEE*H?OATJVS~cFc6cOCsgJz81?fyJln{4!p4kY=5aQK&o`iw)-nle38$lZxy-8q?;Kn_c~qpu?a z!^VE@KZ&di49pAxJ|V6^adUI?(9qEC?(Sp9j{X1tA1E>kMnhnPgh10{aTQRmDGBlm z1}6TI3>bpHv#SE5owL9rvY3H^?=T269?xHq!oa}v+|$J|q$2L^+(3UNM*%ili+}(9 zpS@U^Q2IV`+UXL%KdXdv=lc4Tb4q<@v|sm7g5h`)gG@JLfezb&jg)g1-1~d0Snj&g z4t9(8J9@GO-!S*QuPnW?xUu`I@b-{1^4aE9p28Dd9blQtzqNe+W#jQ=70C+ z`H=em07Lxu^V|$;OT{Fy2Q@d1*SQ)nsU%a;vE+K)=J9u4 zyFZb8gceAw-~W5&@ob~~KhG!6`cz`|=R}<)!+PuAPd?rC%kpAg!~a3!g87eClV@FG zU^8Gy_BUjhXLQZHf$($ z&7T}ME?4BU=gU~F)U4%_IKa?jdz7K#RK$G-winVhKoyw`%n}V7mrF4COTLyqz);(~ z9;gy%{x*i%@}e-H6}^o2n3=&EpI&9SQ++pM&;D+6K9K7ef8>5%@=^TOe%ubh;?)KE z4)^cg2~{^uO>X!O^!EwAf++b1-&F5+e_?338$lZxy-8q?;Kn_c~qpu?a z!^VE@KZ&di49pAxJ|V6^adUI?oSdBQ?(PK(7X1JJA1E>kMnhnPgn)WiSqv!Glmz(& z0~7y91`NU9*;Rqj&RO6QS4 z|NE)tx#fZD*%xL%w`NN)W-ci1VyxJg%wT5BV7^?UVN`I42gs>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$jZRL%n;xc;tCW`OG{h2bSaQA3PwX%C>p z!^YFIb^EPPfB*7}nL(q$p5gV;4hF6SjtS+ly@HG)2Lu$}?~+nx(r93GIKsAd6RT0^ S54H24wC3sR=d#Wzp$Py!I6=Aq diff --git a/src/main/resources/assets/hbm/textures/models/control_panel/button0.png b/src/main/resources/assets/hbm/textures/models/control_panel/button0.png deleted file mode 100644 index 4bd220cdebf33a33581f22ba10711483850fd13f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1066 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NSs56Z83KGlTu+@kb^7$_GiT16J9qB<`STYpT)24g;^oViuU@@+?b@~L*RS8a zdGpq-TeolDzH{f!y?giW-@pIh!GnhnA3l2Y=<(ynPo6w^`t<3uXV0ELfBxddi~I_@bTlvPoF-0{`~pNmoHzxe*O0C+xPF^fBg9I^XJcB zzkdDx{rk_KKY#!J{r~?z(2=8HGz91w0yj9X-v-*pS>O>_%)r1c48n{Iv*t(u1vh)T zIEH8h`}VyQYBJzyQSMrFEr>Nrk3WN}=;>d1e;$j+|4yjgS2JexwSRiUT;iZrZR`0r z%l9>95(W*OW8s`>}jQsbBXPUDY_3O#E~tr=`2b zRG2rSjfZ1fTIQU%a|y-i%k^p|zh^x7ZbK8tRF20YQ=}w$p3T`7Tg~oM#CCPxi?rDc zy;b(HshdSC8CHj`eC#rF(_`_6g-;T$1qk=PWnaERnM);OA}I4Sc)I$ztaD0e0syth B=Jfyo diff --git a/src/main/resources/assets/hbm/textures/models/control_panel/control0.png b/src/main/resources/assets/hbm/textures/models/control_panel/control0.png deleted file mode 100644 index fa5cf1d5756dd60439a457128d8ee3dc076175f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3990 zcmV;H4{7j;P)00009a7bBm000XU z000XU0RWnu7ytkdNJ&INRA>dwn)!=mM-|8K{_cC-)7=R@af#6&h$1c^f*4!~7!3gf zL5!jpw;$B}Ao)}BTfq2BB1%9b2x<%(1qBmh0x`xt8nFG>Qcfaj!e!f-r)?MD4 zNt9$}s$bt%%c)amuTyoO?_GXn_o|&+Zhe2Am$TzVS$gAfoGtS_FRt9(n$4H@eC4}c zlA~_pGO6GCi5t$IJ?Hy=lE$MXiQ}lu$}{^1M~BnjJo(Ik$jgg?+wb`3xr4)lvxiX> zg;6k>q>x*cUKLbH92R-;hu{5ez(6=?U&7`mKXc<^p2biagy}dPrEyJ6Oh-wah@Of+V>vFT8LQcIgk5Y6eD(_;&S&$ZgX7KZ&Cz%iBVAhpKQ!_VSBwP4!Z7q<(evWP z+>u_-8?;~6CW1dYoCT9)vN_&7F~P(sR`3^C7t<-r($MdH_1+&1AZra=`}$X5j<ngUU$+D6#G!VwjrLeZj8?;k$=vnRU%)IW67yP{;ACTW5I6mo0FXA2Y~`k=wQ*xH`#TzSHXtt6>R z)5MIJ_07YRy40r!cE_{y(oyWOc3yyZV`DU)psSn_^x){okEhYb#5K=bDLl63!6;&J*imjf82D9LF%puz*iRghfXNn+M-+}vOhy|i zV=OP1%CasUFN%65gkGG+AHVH`!rYYkd>N-{WW$r~G?pEr3>d(NVL(Dv1t#cH-)ceX z7<~lEA?z})f1)8o%OVXY;iB;1lcMmzt|b5NN@Rex%5pzm3Gr36T=w{fx*m|?hAEW- zk0@8sN}|aa#u^^jN*ijLDWs3g!60j&tRyDiFY*!!%DfEuCk%`dPezNCmU6Hz?l3}x zW>6&9V#U+6>TgT2=&MUZL%np(2fY=hg<+WvHTjSsn#w?y49W072$dFXA-W6tNE>jf zf~+767t19?Lp{Jf>Kj_pLXLqJq@3Oq6ZL=)5}Zm~!l0Or zS6{vBx()1VI&D!vvh@enVNYnpY(k~O(688VWEPg23eS)TrsGIep8ITzE$0?b4Ug3k z7W=3fGV<^DA`vwcOA`rlSvtE%eKsyeaJ^4hHA0H`#I>Z8W^NFeK30#~lgmt2eZ%AODfWkyd& zc7Ycqv8Bl&GZt&63)Bd_qY5U|In)5XA=WP(S{eTe@-pbk(y=VrcPP-5b;Yc!+yrQr z1FL%cU^UG5XJbny=aQ}<)C|I4yP~ycn=iSkqLegEnSd$CKv>oWIeSzE%t+Uv7+6l% z#>gyufO7@97T(qRorDv#)oe{I-3}bWsIR(3^n7c4La0khc8|E$j$;W8)5 zDamsr3muovKc(K6tTu@0wsP;?-*Zzq+|a2U?0ki=Nb*n-*4Bx+K1nG$I22Z2;Bytx z+2T(U6GSzKP8W7tfKE;Eg#wK_9BPq)r04=m%~@w+Tg5<>{6GMkPnJ_rPp7~GS#(DP zjuUo|2GVT!c5PA{5Zd!(2hEylO?@+BgNh3+w%f|>d?o}b+W2|Oib~@vCKaHk^J!LS zzMHKYv3CToRD{*F4@)5~5I3{jx0@xQuasO{M_V|@(^y4j>1*IvQn)HYnxKdLI%W(! z8Gr2$R=qV6B%#lIuEng}>X9{HhDGsjb};s=Q|f+|93niu4lINkrYbFiB7IBwg}P%BI?}gxv4Ih>!D+jrBu@vHy=basfqc<@VI(%@N`m0^}9Z&QNpb?_ZoEG-lr;k2+8dgTOFdc z6^yOw`?_9HFiRxK2z4vkQ+H2}7AGR32)J3p+`csp&zsE_K{vl^M@$X=i2XiSG)-CR zdftCAPJqyK!Oh1SOa&f-tSGTGH7MP;BhvLW6>Q~r+MGIiU{5^$$Ee_LS@)t1wD~4l z74s$5$Ew+4$$LXPoTOtUYwro|4O?$o+fcqx1>AU79DjZL7DFeadL=3~8<^r+WtJYd zM!GU14dIwi6j`^2{QJ}%CbUL(7;2Pqj~^qhXgqRjz?eA!FsI_;q!X2EBv4l4LsG;{ z(pbwpO|D84qOoG zXmy55VnIaWf~_wCou9RJi%M1&l+Y^>`|?M0U9ZQju(>34%MB`qCZdI|?qDJeXS3xM zeHfG)5SaSr(+8nd=V$8IjV3ZQ!J$|zbb77@zB0>%zX}@==|nAFujFEfHz4zc^$RNt z*;TIq(|$yntyF5w z8bL-J9I!^1@y!XublMqxpYAQq6&UXqph#M%%IEjb^%E^22;wx!S4gooW1o|g+gJlw z6h)wZw(#bQiq{r>J~i5WkQOt#L2{0|P@tJ&azhci=mcoX%)pk7G5Wl9;4TSLcXl?p zp>H7T?>0m>1EB5!$)>GQ0}=V*I0ix+3dW3ep4R|-NO+Z|U_uy&$#F_NqCQG>DmMjS zC;N7y-rO-9=w}}I^3|`sss`_T*<_A*-#ryDtNUTFM4R}W><95ewDFtsQ{P#ku5$V& zhT;sQhUll`ce**I$fqr=?if{M%Mv-kAVT*QKVh)|?zyp%Hi%ZEERrYWo0Nh5N45wT zvpFstu3XYPj9RvztFh0}35{i(fYBa^yT^HvX^M+)*4glQLbf|V_jtAwJnx!oU#XWU z;CIEWRVxt`+;R$-7&b~V#+a)$M1rW=;8Oz&%yf#?cGTlNE0HQ^yJTBrF(rhe*hE(5 zngqK8&rpDG01V0IP%dB+&qhBqU0E!a(R4a5mb}N+M#F$H9m!rmJVE4pxc}m4#;-02 z2h+p-?d=VR!Z2)GP@`FBzz-K40Eq}Ao}_8D%+4Ln2q|zSf)s_dH5zVMyZ~E!Pq1oh1Pg&%uc{=hFTOH>D4}=3NcnMk2!yWfll_*NfIxPruk?DGbAH+ zTZMQIg9_xKjKnAp&&54q08Ia9fobsLffBN&EJ#}Jd6SFxy znjOs+NV&H(;Y+3~>vhyy0DexOft6&A(Tm3bzluBkuf2Qj{{GhX#`ewzS;E2Llx$Em zTRm|3E{^oSN@|~1%a@)naIk6tU!oexhDYA0|O#l^PvYHd*;ulkoocPbe7frYp?8KV~{4=Sv|*hh%Rjf wm$>b7Hy)guDYem&-sCMlnUQ`mGT4m&3k9fi3=`9rg#Z8m07*qoM6N<$g2~>NZU6uP