mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-03-22 01:44:38 +00:00
Compare commits
76 Commits
1.0.27_X56
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6498777602 | ||
|
|
399f51097d | ||
|
|
6c68778fd0 | ||
|
|
da0d355565 | ||
|
|
94d37e3910 | ||
|
|
f50f93ec6c | ||
|
|
25271de81c | ||
|
|
24f53f4997 | ||
|
|
59d5db4f66 | ||
|
|
274aaede2b | ||
|
|
abe6efc52e | ||
|
|
c408a66e97 | ||
|
|
0bf5a82391 | ||
|
|
037f2a636b | ||
|
|
e8bbc53e36 | ||
|
|
2e27763092 | ||
|
|
b97970404a | ||
|
|
827aaf13e6 | ||
|
|
bf0ad9be66 | ||
|
|
185c049635 | ||
|
|
b8cccbca16 | ||
|
|
eaacba72c8 | ||
|
|
6678b76187 | ||
|
|
132bc10e50 | ||
|
|
2d9e645f9e | ||
|
|
f81adc816b | ||
|
|
bfc7790cae | ||
|
|
92706fdba3 | ||
|
|
4d28c091e1 | ||
|
|
6d3aaaf045 | ||
|
|
06c8928229 | ||
|
|
2049a05649 | ||
|
|
d80c0767d6 | ||
|
|
816ead946d | ||
|
|
7303ecbff6 | ||
|
|
a95b3761c6 | ||
|
|
d9353f5cc8 | ||
|
|
e9f59c7920 | ||
|
|
892e844f49 | ||
|
|
8bc5cf1c9d | ||
|
|
6ffc310f9a | ||
|
|
93e9f35f05 | ||
|
|
1ccad02a73 | ||
|
|
2396b23288 | ||
|
|
e3f43a5dc2 | ||
|
|
f6cca3fda6 | ||
|
|
f721b321fc | ||
|
|
09dd62b71d | ||
|
|
7ecafd73fc | ||
|
|
0b418c2f51 | ||
|
|
ae5f5d0ac1 | ||
|
|
2766bb5b73 | ||
|
|
60f7541a8d | ||
|
|
aa23ba19bc | ||
|
|
3c01133374 | ||
|
|
be1ef22576 | ||
|
|
7ecdb61226 | ||
|
|
be9373e652 | ||
|
|
e123b37a35 | ||
|
|
5d7fe1ac66 | ||
|
|
5253f9e818 | ||
|
|
1bd1c325be | ||
|
|
e547ee5b79 | ||
|
|
7577ffd665 | ||
|
|
73cb0e1db4 | ||
|
|
c8bfa6edcc | ||
|
|
96ae2a9a9c | ||
|
|
8146e68eaa | ||
|
|
b108bc1f57 | ||
|
|
21cd3a9eeb | ||
|
|
a1fc206006 | ||
|
|
2fc4e04b4c | ||
|
|
c98c83aa5d | ||
|
|
4f8b43ac89 | ||
|
|
f7e271629d | ||
|
|
82dd6f6358 |
93
changelog
93
changelog
@ -1,84 +1,19 @@
|
||||
## Added
|
||||
* Reasim RBMK control rods
|
||||
* Come in manual and auto variants, but not moderated
|
||||
* The same as standard control rods, except they need 5kHE/t
|
||||
* Have only a single cable connection at the bottom
|
||||
* Replace standard RBMK control rods when 528 mode is enabled
|
||||
* New RBMK fuels
|
||||
* UZrH
|
||||
* Made from MEU, zirconium and hydrogen in the PUREX
|
||||
* More efficient than MEU but with less durability
|
||||
* Has a new thermal coefficient mechanic, once the core heat exceeds 1000°C, reactivity drops down
|
||||
* Very high diffusion, meaning the core is considerably colder than on most fuels
|
||||
* RBMK Display panel
|
||||
* Single block that shows a 7x7 view of a linked RBMK
|
||||
* Doesn't have a GUI or tooltips or anything, only acts as a monitor
|
||||
* Ideal for >15x15 reactor monitoring, since the displays are tileable
|
||||
* Plasma forge
|
||||
* Plasma-powered assembly machine
|
||||
* Used to produce lategame items that until now were regular assembler recipes
|
||||
|
||||
## Changed
|
||||
* Updated RBMK visuals
|
||||
* The indentations on most RBMK passive elements have been removed, heavily reducing tri count and allowing face culling, making RBMKs render much more efficiently
|
||||
* The caps no longer render as part of the TESR and instead use much more performant ISBRH rendering
|
||||
* Due to most passive elements no longer needing TESRs for their caps, most parts no longer use any TESRs at all
|
||||
* This should fix various issues regarding lower-end hardware (especially Pojav) as well as issues with TESRs getting skipped due to the sheer number of things to render
|
||||
* Control rods now show their set color as part of the model
|
||||
* Improved buzzsaw tree detection
|
||||
* Instead of just clearing a pillar, it now tries to detect branches
|
||||
* The max size of trees that can be successfully harvested is now way bigger
|
||||
* This means that things like 2x2 jungle trees can now be automated
|
||||
* Annihilating radioactive items now creates that item's radiation value x5 as chunk radiation
|
||||
* The maximum per tick is a 1000 RAD/s increase to prevent world-destroying radiation levels from annihilating demon cores
|
||||
* The water door now has a skin that isn't rusted with less contrast
|
||||
* The containment door now has a lead-colored skin with a trefoil on it
|
||||
* Using a screwdriver on a beamline now toggles a window which flashes if a particle passes
|
||||
* Particles now start slowly and accelerate, instead of passing a fixed 10 components per tick, particles only do 1 component per tick, which increases by 1 every 1,000 momentum
|
||||
* RBMK absorber columns now heat up when exposed to neutrons
|
||||
* The type of neutron does not matter, only the quantity
|
||||
* 20 flux equals 1°C heatup
|
||||
* RBMK passive cooling has changed
|
||||
* The default value is now 2.5°C/t instead of 1
|
||||
* This value only applies to rods that have exposed sides, i.e. the edges of a reactor
|
||||
* There is now a second passive cooling variable used for rods on the inside (`dialPassiveCoolingInner`, 0.1°C/t by default)
|
||||
* The effective passive cooling value is scaled smoothly depending on how many sides are exposed, using `dialPassiveCoolingInner` with no exposed sides and `dialPassiveCooling` for rods with four exposed sides
|
||||
* Simply put, spindly RBMKs are now way less desirable, structural columns no longer just debuff the reactor and reactors that actually look like reactors are now more powerful
|
||||
* Chanced the way RBMK coolers work
|
||||
* Instead of using cryogel, coolers use 50mB of cold PFM per tick and return an equal amount of warm PFM
|
||||
* In a 5x5 square around the cooler, all components are cooled down by 200°C per tick, down to a minimum of 20°C
|
||||
* This renders that section of the reactor unsuitable for boiling water, however it means very high heat fuels can be used
|
||||
* Cold PFM is used up at a steady rate, even if the reactor is already cold
|
||||
* The RBMK structural column recipe now uses only half as many metal plates, and rubber instead of insulator
|
||||
* Changed the way reasim RBMK fuel channels work
|
||||
* Instead of six randomized neutron streams, reasim rods now use eight 75% strength streams in an even star pattern
|
||||
* The pattern is rotated in a random multiple of 9° (i.e. four possible angle variations)
|
||||
* RBMK steam channels now spawn steam particles if water is voided due to the steam buffer not being emptied in time
|
||||
* Rebalanced 528 mode
|
||||
* Increased the chance for most precision assembler recipes to succeed
|
||||
* Increased the chance for items to be salvaged by recycling
|
||||
* In expensive mode, the chances have been increased drastically compared to the old values
|
||||
* Added RoR functionality to some RBMK columns
|
||||
* Manual control rods can have their target height set, allowing them to be remote controlled without a console
|
||||
* All fuel channels can now provide values such as column heat, fuel skin heat, depletion and xenon poison
|
||||
* RBMK consoles and displays no longer show the temperature value of control rods as a red gradient, instead they show the control rods' color grouping
|
||||
* RBMK fuel rods can no longer be removed by hand if the skin temp exceeds 200°C
|
||||
* RBMK fuel rods can no longer be cycled via autoloader if the skin temp exceeds 1,000°C
|
||||
* For fully automated high powered reactors, it may now be necessary to read the depletion via RoR and then throttle the reactor with control rods
|
||||
* RBMK cranes can still remove any fuel, no matter how hot it is
|
||||
* RBMK fuel channels will now undergo meltdown if it is broken when a fuel rod is still loaded with a heat temperature of at least 1,500°C
|
||||
* The annihilator now creates pollution when destroying fluids, with a 200% pollution modifier
|
||||
* MOX fuel now uses plutonium-239 instead of RGP, and more uranium-238
|
||||
* This makes it a decent option for pu239 from the chicago pile without having to use HEP239
|
||||
* Doubled bismuth and tantalum yields from high-performance solvent bedrock ore processing
|
||||
* Hoppers and buckets can now be made out of steel
|
||||
* RoR gauges now show the lowest and highest configured value on the actual gauge
|
||||
* The steel sword now looks like a medival broad sword with the appropriate scale
|
||||
* All remaining items have been removed from the template folder, siren tracks and plate stamps are now made in the anvil
|
||||
* Gerald assembly now requires stellar flux
|
||||
* The restrictions for firing Folly (using the scope, waiting for the startup) no longer apply to NPCs (which can never fulfill them anyway), allowing them to actually use it
|
||||
|
||||
## Fixed
|
||||
* Fixed NBTStack serialization omitting the stack size most of the time, preventing deserialization (mainly in the precision assembler config)
|
||||
* Fixed precision assembler not being listed in the creative inventory
|
||||
* Fixed OpenComputers integration for the CCGT
|
||||
* Fixed tool abilities switching when clicking on a block with a special interaction
|
||||
* Fixed outdated info on the QMAW pages involving AA and BSCCO due to the fusion reactor update
|
||||
* Fixed ammo container giving 9mm instead of .22 for the akimbo target pistols
|
||||
* Fixed RBMK control rods incorrectly showing up in the red group when no group is set
|
||||
* Fixed fluid output direction being incorrect on boilers, causing them to break with pipe anchors
|
||||
* Fixed an issue where the industrial turbine's tendency to round up the possible operation counter would cause it to use up steam it doesn't actually have
|
||||
* Fixed yet another issue with the settings tool when copying automatic control rod settings
|
||||
* Fixed quad rocket launcher steering not working right
|
||||
* Fixed standard and industrial boilers not respecting the heating efficiency value of the fluid trait
|
||||
* Fixed copy tool integration for RBMK automatic control rods (again)
|
||||
* Fixed size 15 dual kerosene thruster not rendering at all
|
||||
* Fixed HUD/jetpack toggle popup not working at all on multiplayer servers
|
||||
* Fixed assembly machine NEI handler not being able to handle all thirteen inputs at once
|
||||
* Fixed RBMK fuel channels playing the meltdown sound when broken while hot with meltdowns disabled
|
||||
@ -1,6 +1,6 @@
|
||||
mod_version=1.0.27
|
||||
# Empty build number makes a release type
|
||||
mod_build_number=5628
|
||||
mod_build_number=5634
|
||||
|
||||
credits=HbMinecraft,\
|
||||
\ rodolphito (explosion algorithms),\
|
||||
|
||||
@ -8,14 +8,7 @@ import com.hbm.blocks.generic.*;
|
||||
import com.hbm.blocks.generic.BlockHazard.ExtDisplayEffect;
|
||||
import com.hbm.blocks.machine.*;
|
||||
import com.hbm.blocks.machine.albion.*;
|
||||
import com.hbm.blocks.machine.fusion.MachineFusionBoiler;
|
||||
import com.hbm.blocks.machine.fusion.MachineFusionBreeder;
|
||||
import com.hbm.blocks.machine.fusion.MachineFusionCollector;
|
||||
import com.hbm.blocks.machine.fusion.MachineFusionCoupler;
|
||||
import com.hbm.blocks.machine.fusion.MachineFusionKlystron;
|
||||
import com.hbm.blocks.machine.fusion.MachineFusionKlystronCreative;
|
||||
import com.hbm.blocks.machine.fusion.MachineFusionMHDT;
|
||||
import com.hbm.blocks.machine.fusion.MachineFusionTorus;
|
||||
import com.hbm.blocks.machine.fusion.*;
|
||||
import com.hbm.blocks.machine.pile.*;
|
||||
import com.hbm.blocks.machine.rbmk.*;
|
||||
import com.hbm.blocks.network.*;
|
||||
@ -887,6 +880,7 @@ public class ModBlocks {
|
||||
public static Block fusion_boiler;
|
||||
public static Block fusion_mhdt;
|
||||
public static Block fusion_coupler;
|
||||
public static Block fusion_plasma_forge;
|
||||
|
||||
public static Block machine_icf_press;
|
||||
public static Block icf_component;
|
||||
@ -1097,6 +1091,8 @@ public class ModBlocks {
|
||||
public static Block rbmk_console;
|
||||
public static Block rbmk_crane_console;
|
||||
public static Block rbmk_display;
|
||||
public static Block rbmk_key_pad;
|
||||
public static Block rbmk_gauge;
|
||||
public static Block rbmk_autoloader;
|
||||
public static Block rbmk_loader;
|
||||
public static Block rbmk_steam_inlet;
|
||||
@ -2001,6 +1997,7 @@ public class ModBlocks {
|
||||
fusion_boiler = new MachineFusionBoiler().setBlockName("fusion_boiler").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
fusion_mhdt = new MachineFusionMHDT().setBlockName("fusion_mhdt").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
fusion_coupler = new MachineFusionCoupler().setBlockName("fusion_coupler").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
fusion_plasma_forge = new MachineFusionPlasmaForge().setBlockName("fusion_plasma_forge").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
|
||||
machine_icf_press = new MachineICFPress().setBlockName("machine_icf_press").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
icf = new MachineICF().setBlockName("icf").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
@ -2117,6 +2114,8 @@ public class ModBlocks {
|
||||
rbmk_console = new RBMKConsole().setBlockName("rbmk_console").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_console");
|
||||
rbmk_crane_console = new RBMKCraneConsole().setBlockName("rbmk_crane_console").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_crane_console");
|
||||
rbmk_display = new RBMKDisplay().setBlockName("rbmk_display").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_display");
|
||||
rbmk_key_pad = new RBMKKeyPad().setBlockName("rbmk_key_pad").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_display");
|
||||
rbmk_gauge = new RBMKGauge().setBlockName("rbmk_gauge").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_display");
|
||||
rbmk_autoloader = new RBMKAutoloader().setBlockName("rbmk_autoloader").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_autoloader");
|
||||
rbmk_loader = new RBMKLoader(Material.iron).setBlockName("rbmk_loader").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_loader");
|
||||
rbmk_steam_inlet = new RBMKInlet(Material.iron).setBlockName("rbmk_steam_inlet").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_steam_inlet");
|
||||
@ -3109,6 +3108,8 @@ public class ModBlocks {
|
||||
GameRegistry.registerBlock(rbmk_console, rbmk_console.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(rbmk_crane_console, rbmk_crane_console.getUnlocalizedName());
|
||||
register(rbmk_display);
|
||||
register(rbmk_key_pad);
|
||||
register(rbmk_gauge);
|
||||
register(rbmk_autoloader);
|
||||
register(rbmk_loader);
|
||||
register(rbmk_steam_inlet);
|
||||
@ -3358,6 +3359,7 @@ public class ModBlocks {
|
||||
register(fusion_boiler);
|
||||
register(fusion_mhdt);
|
||||
register(fusion_coupler);
|
||||
register(fusion_plasma_forge);
|
||||
|
||||
register(watz_element);
|
||||
register(watz_cooler);
|
||||
|
||||
@ -0,0 +1,38 @@
|
||||
package com.hbm.blocks.machine.fusion;
|
||||
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||
import com.hbm.tileentity.machine.fusion.TileEntityFusionPlasmaForge;
|
||||
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class MachineFusionPlasmaForge extends BlockDummyable {
|
||||
|
||||
public MachineFusionPlasmaForge() {
|
||||
super(Material.iron);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World world, int meta) {
|
||||
if(meta >= 12) return new TileEntityFusionPlasmaForge();
|
||||
if(meta >= 6) return new TileEntityProxyCombo().inventory().power().fluid();
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||
return this.standardOpenBehavior(world, x, y, z, player, 0);
|
||||
}
|
||||
|
||||
@Override public int[] getDimensions() { return new int[] { 4, 0, 5, 5, 5, 5 }; }
|
||||
@Override public int getOffset() { return 5; }
|
||||
|
||||
@Override
|
||||
public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) {
|
||||
super.fillSpace(world, x, y, z, dir, o);
|
||||
}
|
||||
}
|
||||
@ -225,7 +225,9 @@ public abstract class RBMKBase extends BlockDummyable implements IToolable, ILoo
|
||||
world.spawnEntityInWorld(new EntityItem(world, pos[0] + 0.5, pos[1] + 0.5 + RBMKDials.getColumnHeight(world), pos[2] + 0.5, new ItemStack(ModItems.rbmk_lid_glass)));
|
||||
}
|
||||
|
||||
rbmk.explodeOnBroken = false;
|
||||
world.setBlockMetadataWithNotify(pos[0], pos[1], pos[2], DIR_NO_LID.ordinal() + offset, 3);
|
||||
rbmk.explodeOnBroken = true;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
@ -1,57 +1,19 @@
|
||||
package com.hbm.blocks.machine.rbmk;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.render.block.ISBRHUniversal;
|
||||
import com.hbm.render.util.RenderBlocksNT;
|
||||
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKDisplay;
|
||||
|
||||
import api.hbm.block.IToolable;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockContainer;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.renderer.RenderBlocks;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class RBMKDisplay extends BlockContainer implements ISBRHUniversal, IToolable {
|
||||
|
||||
public RBMKDisplay() {
|
||||
super(Material.iron);
|
||||
}
|
||||
|
||||
@Override public int getRenderType() { return renderID; }
|
||||
@Override public boolean isOpaqueCube() { return false; }
|
||||
@Override public boolean renderAsNormalBlock() { return false; }
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public boolean shouldSideBeRendered(IBlockAccess world, int x, int y, int z, int side) {
|
||||
return true;
|
||||
}
|
||||
public class RBMKDisplay extends RBMKMiniPanelBase implements IToolable {
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World world, int meta) {
|
||||
return new TileEntityRBMKDisplay();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) {
|
||||
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
|
||||
if(i == 0) world.setBlockMetadataWithNotify(x, y, z, 2, 2);
|
||||
if(i == 1) world.setBlockMetadataWithNotify(x, y, z, 5, 2);
|
||||
if(i == 2) world.setBlockMetadataWithNotify(x, y, z, 3, 2);
|
||||
if(i == 3) world.setBlockMetadataWithNotify(x, y, z, 4, 2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) {
|
||||
if(tool != ToolType.SCREWDRIVER)
|
||||
@ -64,33 +26,4 @@ public class RBMKDisplay extends BlockContainer implements ISBRHUniversal, ITool
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderInventoryBlock(Block block, int meta, int modelId, Object renderBlocks) {
|
||||
|
||||
GL11.glPushMatrix();
|
||||
RenderBlocks renderer = (RenderBlocks) renderBlocks;
|
||||
GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F);
|
||||
GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
|
||||
|
||||
renderer.setRenderBounds(0.25D, 0D, 0D, 1D, 1D, 1D);
|
||||
RenderBlocksNT.renderStandardInventoryBlock(block, meta, renderer);
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, Object renderBlocks) {
|
||||
RenderBlocksNT renderer = RenderBlocksNT.INSTANCE.setWorld(world);
|
||||
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z));
|
||||
tessellator.setColorOpaque_F(1, 1, 1);
|
||||
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
|
||||
renderer.setRenderBounds(meta == 4 ? 0.25D : 0D, 0D, meta == 2 ? 0.25D : 0D, meta == 5 ? 0.75D : 1D, 1D, meta == 3 ? 0.75D : 1D);
|
||||
renderer.renderStandardBlock(block, x, y, z);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
25
src/main/java/com/hbm/blocks/machine/rbmk/RBMKGauge.java
Normal file
25
src/main/java/com/hbm/blocks/machine/rbmk/RBMKGauge.java
Normal file
@ -0,0 +1,25 @@
|
||||
package com.hbm.blocks.machine.rbmk;
|
||||
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKGauge;
|
||||
|
||||
import api.hbm.block.IToolable;
|
||||
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class RBMKGauge extends RBMKMiniPanelBase implements IToolable {
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World world, int meta) {
|
||||
return new TileEntityRBMKGauge();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) {
|
||||
if(tool != ToolType.SCREWDRIVER) return false;
|
||||
if(world.isRemote) FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
51
src/main/java/com/hbm/blocks/machine/rbmk/RBMKKeyPad.java
Normal file
51
src/main/java/com/hbm/blocks/machine/rbmk/RBMKKeyPad.java
Normal file
@ -0,0 +1,51 @@
|
||||
package com.hbm.blocks.machine.rbmk;
|
||||
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKKeyPad;
|
||||
|
||||
import api.hbm.block.IToolable;
|
||||
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class RBMKKeyPad extends RBMKMiniPanelBase implements IToolable {
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World world, int meta) {
|
||||
return new TileEntityRBMKKeyPad();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) {
|
||||
if(tool != ToolType.SCREWDRIVER) return false;
|
||||
if(world.isRemote) FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||
if(world.isRemote) return true;
|
||||
if(player.isSneaking()) return false;
|
||||
|
||||
if(hitX != 0 && hitX != 1 && hitZ != 0 && hitZ != 1 && side != 0 && side != 1) {
|
||||
|
||||
TileEntityRBMKKeyPad tile = (TileEntityRBMKKeyPad) world.getTileEntity(x, y, z);
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
|
||||
int indexHit = 0;
|
||||
|
||||
if(meta == 2 && hitX < 0.5) indexHit = 1;
|
||||
if(meta == 3 && hitX > 0.5) indexHit = 1;
|
||||
if(meta == 4 && hitZ > 0.5) indexHit = 1;
|
||||
if(meta == 5 && hitZ < 0.5) indexHit = 1;
|
||||
|
||||
if(hitY < 0.5) indexHit += 2;
|
||||
|
||||
if(!tile.keys[indexHit].active) return false;
|
||||
tile.keys[indexHit].click();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,87 @@
|
||||
package com.hbm.blocks.machine.rbmk;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.lib.Library;
|
||||
import com.hbm.render.block.ISBRHUniversal;
|
||||
import com.hbm.render.util.RenderBlocksNT;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockContainer;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.renderer.RenderBlocks;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public abstract class RBMKMiniPanelBase extends BlockContainer implements ISBRHUniversal {
|
||||
|
||||
public RBMKMiniPanelBase() {
|
||||
super(Material.iron);
|
||||
}
|
||||
|
||||
@Override public int getRenderType() { return renderID; }
|
||||
@Override public boolean isOpaqueCube() { return false; }
|
||||
@Override public boolean renderAsNormalBlock() { return false; }
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public boolean shouldSideBeRendered(IBlockAccess world, int x, int y, int z, int side) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) {
|
||||
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
setBlockBounds(0, 0, 0, 1, 1, 1);
|
||||
|
||||
if(meta == Library.POS_X.ordinal()) setBlockBounds(0, 0, 0, 0.75F, 1, 1);
|
||||
if(meta == Library.POS_Z.ordinal()) setBlockBounds(0, 0, 0, 1, 1, 0.75F);
|
||||
if(meta == Library.NEG_X.ordinal()) setBlockBounds(0.25F, 0, 0, 1, 1, 1);
|
||||
if(meta == Library.NEG_Z.ordinal()) setBlockBounds(0, 0, 0.25F, 1, 1, 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) {
|
||||
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
|
||||
if(i == 0) world.setBlockMetadataWithNotify(x, y, z, 2, 2);
|
||||
if(i == 1) world.setBlockMetadataWithNotify(x, y, z, 5, 2);
|
||||
if(i == 2) world.setBlockMetadataWithNotify(x, y, z, 3, 2);
|
||||
if(i == 3) world.setBlockMetadataWithNotify(x, y, z, 4, 2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderInventoryBlock(Block block, int meta, int modelId, Object renderBlocks) {
|
||||
|
||||
GL11.glPushMatrix();
|
||||
RenderBlocks renderer = (RenderBlocks) renderBlocks;
|
||||
GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F);
|
||||
GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
|
||||
|
||||
renderer.setRenderBounds(0.25D, 0D, 0D, 1D, 1D, 1D);
|
||||
RenderBlocksNT.renderStandardInventoryBlock(block, meta, renderer);
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, Object renderBlocks) {
|
||||
RenderBlocksNT renderer = RenderBlocksNT.INSTANCE.setWorld(world);
|
||||
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z));
|
||||
tessellator.setColorOpaque_F(1, 1, 1);
|
||||
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
|
||||
renderer.setRenderBounds(meta == 4 ? 0.25D : 0D, 0D, meta == 2 ? 0.25D : 0D, meta == 5 ? 0.75D : 1D, 1D, meta == 3 ? 0.75D : 1D);
|
||||
renderer.renderStandardBlock(block, x, y, z);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -5,6 +5,7 @@ import com.hbm.items.machine.ItemRBMKLid;
|
||||
import com.hbm.items.machine.ItemRBMKRod;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||
import com.hbm.tileentity.machine.rbmk.RBMKDials;
|
||||
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKRod;
|
||||
|
||||
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
||||
@ -41,9 +42,9 @@ public class RBMKRod extends RBMKBase {
|
||||
|
||||
@Override
|
||||
public void breakBlock(World world, int x, int y, int z, Block block, int meta) {
|
||||
if(meta >= this.offset) {
|
||||
if(meta >= this.offset && !RBMKDials.getMeltdownsDisabled(world)) {
|
||||
TileEntityRBMKRod tile = (TileEntityRBMKRod) world.getTileEntity(x, y, z);
|
||||
if(tile != null) {
|
||||
if(tile != null && tile.explodeOnBroken) {
|
||||
if(tile.slots[0] != null && tile.slots[0].getItem() instanceof ItemRBMKRod && ItemRBMKRod.getHullHeat(tile.slots[0]) >= 1500) {
|
||||
tile.meltdown();
|
||||
}
|
||||
@ -81,7 +82,7 @@ public class RBMKRod extends RBMKBase {
|
||||
if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemRBMKRod && rbmk.slots[0] == null) {
|
||||
rbmk.slots[0] = player.getHeldItem().copy();
|
||||
rbmk.slots[0].stackSize = 1;
|
||||
player.getHeldItem().stackSize--;
|
||||
if(!player.capabilities.isCreativeMode) player.getHeldItem().stackSize--;
|
||||
world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, "hbm:item.upgradePlug", 1.0F, 1.0F);
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.hbm.blocks.machine.rbmk;
|
||||
|
||||
import com.hbm.tileentity.TileEntityProxyInventory;
|
||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKRodReaSim;
|
||||
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
@ -14,13 +14,8 @@ public class RBMKRodReaSim extends RBMKRod {
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World world, int meta) {
|
||||
|
||||
if(meta >= this.offset)
|
||||
return new TileEntityRBMKRodReaSim();
|
||||
|
||||
if(hasExtra(meta))
|
||||
return new TileEntityProxyInventory();
|
||||
|
||||
if(meta >= this.offset) return new TileEntityRBMKRodReaSim();
|
||||
if(hasExtra(meta)) return new TileEntityProxyCombo().inventory();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -9,17 +9,15 @@ 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 org.lwjgl.input.Keyboard;
|
||||
|
||||
import com.hbm.blocks.ILookOverlay;
|
||||
import com.hbm.interfaces.IControlReceiver;
|
||||
import com.hbm.inventory.fluid.FluidType;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.inventory.fluid.tank.FluidTank;
|
||||
import com.hbm.inventory.gui.GUIPump;
|
||||
import com.hbm.items.machine.IItemFluidIdentifier;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.packet.toserver.NBTControlPacket;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
import com.hbm.tileentity.TileEntityLoadedBase;
|
||||
import com.hbm.util.BobMathUtil;
|
||||
@ -35,10 +33,6 @@ import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.block.BlockContainer;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.audio.PositionedSoundRecord;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.client.gui.GuiTextField;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
@ -50,7 +44,6 @@ import net.minecraft.util.ChatComponentTranslation;
|
||||
import net.minecraft.util.ChatStyle;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
@ -346,98 +339,4 @@ public class FluidPump extends BlockContainer implements INBTBlockTransformable,
|
||||
throw new NoSuchMethodException();
|
||||
}
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public static class GUIPump extends GuiScreen {
|
||||
|
||||
protected final TileEntityFluidPump pump;
|
||||
|
||||
private GuiTextField textPlacementPriority;
|
||||
private GuiButton buttonPressure;
|
||||
private GuiButton buttonPriority;
|
||||
private int pressure;
|
||||
private int priority;
|
||||
|
||||
public GUIPump(TileEntityFluidPump pump) {
|
||||
this.pump = pump;
|
||||
this.pressure = pump.tank[0].getPressure();
|
||||
this.priority = pump.priority.ordinal();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initGui() {
|
||||
Keyboard.enableRepeatEvents(true);
|
||||
|
||||
textPlacementPriority = new GuiTextField(fontRendererObj, this.width / 2 - 150, 100, 90, 20);
|
||||
textPlacementPriority.setText("" + pump.bufferSize);
|
||||
textPlacementPriority.setMaxStringLength(5);
|
||||
|
||||
buttonPressure = new GuiButton(0, this.width / 2 - 50, 100, 90, 20, pressure + " PU");
|
||||
|
||||
buttonPriority = new GuiButton(1, this.width / 2 + 50, 100, 90, 20, pump.priority.name());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawScreen(int mouseX, int mouseY, float partialTicks) {
|
||||
drawDefaultBackground();
|
||||
|
||||
drawString(fontRendererObj, "Throughput:", this.width / 2 - 150, 80, 0xA0A0A0);
|
||||
drawString(fontRendererObj, "(max. 10,000mB)", this.width / 2 - 150, 90, 0xA0A0A0);
|
||||
textPlacementPriority.drawTextBox();
|
||||
|
||||
drawString(fontRendererObj, "Pressure:", this.width / 2 - 50, 80, 0xA0A0A0);
|
||||
buttonPressure.drawButton(mc, mouseX, mouseY);
|
||||
|
||||
drawString(fontRendererObj, "Priority:", this.width / 2 + 50, 80, 0xA0A0A0);
|
||||
buttonPriority.drawButton(mc, mouseX, mouseY);
|
||||
|
||||
super.drawScreen(mouseX, mouseY, partialTicks);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onGuiClosed() {
|
||||
Keyboard.enableRepeatEvents(false);
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
|
||||
data.setByte("pressure", (byte) pressure);
|
||||
data.setByte("priority", (byte) priority);
|
||||
|
||||
try { data.setInteger("capacity", Integer.parseInt(textPlacementPriority.getText())); } catch(Exception ex) {}
|
||||
|
||||
PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, pump.xCoord, pump.yCoord, pump.zCoord));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void keyTyped(char typedChar, int keyCode) {
|
||||
super.keyTyped(typedChar, keyCode);
|
||||
if(textPlacementPriority.textboxKeyTyped(typedChar, keyCode)) return;
|
||||
|
||||
if(keyCode == 1 || keyCode == this.mc.gameSettings.keyBindInventory.getKeyCode()) {
|
||||
this.mc.thePlayer.closeScreen();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void mouseClicked(int mouseX, int mouseY, int mouseButton) {
|
||||
super.mouseClicked(mouseX, mouseY, mouseButton);
|
||||
textPlacementPriority.mouseClicked(mouseX, mouseY, mouseButton);
|
||||
|
||||
if(buttonPressure.mousePressed(mc, mouseX, mouseY)) {
|
||||
this.pressure++;
|
||||
if(pressure > 5) pressure = 0;
|
||||
buttonPressure.displayString = pressure + " PU";
|
||||
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
|
||||
}
|
||||
|
||||
if(buttonPriority.mousePressed(mc, mouseX, mouseY)) {
|
||||
this.priority++;
|
||||
if(priority >= ConnectionPriority.values().length) priority = 0;
|
||||
buttonPriority.displayString = EnumUtil.grabEnumSafely(ConnectionPriority.class, priority).name();
|
||||
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
|
||||
}
|
||||
}
|
||||
|
||||
@Override public boolean doesGuiPauseGame() { return false; }
|
||||
}
|
||||
}
|
||||
|
||||
@ -81,19 +81,16 @@ public class WorldConfig {
|
||||
public static boolean enableSulfurCave = true;
|
||||
public static boolean enableAsbestosCave = true;
|
||||
|
||||
// public static int radioStructure = 500;
|
||||
public static int antennaStructure = 250;
|
||||
public static int atomStructure = 500;
|
||||
public static int dungeonStructure = 64;
|
||||
public static int relayStructure = 500;
|
||||
public static int satelliteStructure = 500;
|
||||
// public static int factoryStructure = 1000;
|
||||
public static int dudStructure = 500;
|
||||
public static int spaceshipStructure = 1000;
|
||||
public static int barrelStructure = 5000;
|
||||
public static int geyserWater = 3000;
|
||||
public static int geyserChlorine = 3000;
|
||||
public static int geyserVapor = 500;
|
||||
public static int geyserVapor = 250;
|
||||
public static int capsuleStructure = 100;
|
||||
public static int arcticStructure = 500;
|
||||
public static int jungleStructure = 2000;
|
||||
@ -204,13 +201,10 @@ public class WorldConfig {
|
||||
enableAsbestosCave = CommonConfig.createConfigBool(config, CATEGORY_OREGEN, "2.C01_enableAsbestosCave", "Toggles asbestos caves", true);
|
||||
|
||||
final String CATEGORY_DUNGEON = CommonConfig.CATEGORY_DUNGEONS;
|
||||
// radioStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.00_radioSpawn", "Spawn radio station on every nTH chunk", 500);
|
||||
antennaStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.01_antennaSpawn", "Spawn antenna on every nTH chunk", 250);
|
||||
atomStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.02_atomSpawn", "Spawn power plant on every nTH chunk", 500);
|
||||
dungeonStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.04_dungeonSpawn", "Spawn library dungeon on every nTH chunk", 64);
|
||||
relayStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.05_relaySpawn", "Spawn relay on every nTH chunk", 500);
|
||||
satelliteStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.06_satelliteSpawn", "Spawn satellite dish on every nTH chunk", 500);
|
||||
// factoryStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.09_factorySpawn", "Spawn factory on every nTH chunk", 1000);
|
||||
dudStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.10_dudSpawn", "Spawn dud on every nTH chunk", 500);
|
||||
spaceshipStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.11_spaceshipSpawn", "Spawn spaceship on every nTH chunk", 1000);
|
||||
barrelStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.12_barrelSpawn", "Spawn waste tank on every nTH chunk", 5000);
|
||||
@ -220,7 +214,7 @@ public class WorldConfig {
|
||||
vaultfreq = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.16_vaultSpawn", "Spawn locked safe on every nTH chunk", 2500);
|
||||
geyserWater = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.17_geyserWaterSpawn", "Spawn water geyser on every nTH chunk", 3000);
|
||||
geyserChlorine = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.18_geyserChlorineSpawn", "Spawn poison geyser on every nTH chunk", 3000);
|
||||
geyserVapor = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.19_geyserVaporSpawn", "Spawn vapor geyser on every nTH chunk", 500);
|
||||
geyserVapor = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.19_geyserVaporSpawn", "Spawn vapor geyser on every nTH chunk", 250);
|
||||
capsuleStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.21_capsuleSpawn", "Spawn landing capsule on every nTH chunk", 100);
|
||||
arcticStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.22_arcticVaultSpawn", "Spawn arctic code vault on every nTH chunk", 500);
|
||||
jungleStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.23_jungleDungeonSpawn", "Spawn jungle dungeon on every nTH chunk", 2000);
|
||||
@ -245,13 +239,10 @@ public class WorldConfig {
|
||||
craterBiomeOuterRad = (float) CommonConfig.createConfigDouble(config, CATEGORY_BIOMES, "17.R02_craterBiomeOuterRad", "RAD/s for the outer crater biome", 0.5D);
|
||||
craterBiomeWaterMult = (float) CommonConfig.createConfigDouble(config, CATEGORY_BIOMES, "17.R03_craterBiomeWaterMult", "Multiplier for RAD/s in crater biomes when in water", 5D);
|
||||
|
||||
// radioStructure = CommonConfig.setDefZero(radioStructure, 1000);
|
||||
antennaStructure = CommonConfig.setDefZero(antennaStructure, 1000);
|
||||
atomStructure = CommonConfig.setDefZero(atomStructure, 1000);
|
||||
dungeonStructure = CommonConfig.setDefZero(dungeonStructure, 1000);
|
||||
relayStructure = CommonConfig.setDefZero(relayStructure, 1000);
|
||||
satelliteStructure = CommonConfig.setDefZero(satelliteStructure, 1000);
|
||||
// factoryStructure = CommonConfig.setDefZero(factoryStructure, 1000);
|
||||
dudStructure = CommonConfig.setDefZero(dudStructure, 1000);
|
||||
spaceshipStructure = CommonConfig.setDefZero(spaceshipStructure, 1000);
|
||||
barrelStructure = CommonConfig.setDefZero(barrelStructure, 1000);
|
||||
|
||||
@ -174,8 +174,8 @@ public class MineralRecipes {
|
||||
GameRegistry.addShapelessRecipe(new ItemStack(ModItems.billet_neptunium_fuel, 3), new Object[] { ModItems.billet_u238, ModItems.billet_u238, ModItems.billet_neptunium });
|
||||
GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_neptunium_fuel, 1), new Object[] { "nuggetNeptunium237", "nuggetNeptunium237", "nuggetUranium238", "nuggetUranium238", "nuggetUranium238", "nuggetUranium238" }));
|
||||
GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_neptunium_fuel, 1), new Object[] { "tinyNp237", "tinyNp237", "tinyU238", "tinyU238", "tinyU238", "tinyU238" }));
|
||||
GameRegistry.addShapelessRecipe(new ItemStack(ModItems.billet_mox_fuel, 3), new Object[] { ModItems.billet_uranium_fuel, "billetUranium238", "billetPlutonium239" });
|
||||
GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_mox_fuel, 1), new Object[] { "nuggetPlutonium239", "nuggetPlutonium239", "nuggetUranium238", "nuggetUranium238", ModItems.nugget_uranium_fuel, ModItems.nugget_uranium_fuel }));
|
||||
GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_mox_fuel, 3), new Object[] { ModItems.billet_uranium_fuel, ModItems.billet_uranium_fuel, "billetPlutonium239" }));
|
||||
GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_mox_fuel, 1), new Object[] { "nuggetPlutonium239", "nuggetPlutonium239", ModItems.nugget_uranium_fuel, ModItems.nugget_uranium_fuel, ModItems.nugget_uranium_fuel, ModItems.nugget_uranium_fuel }));
|
||||
GameRegistry.addShapelessRecipe(new ItemStack(ModItems.billet_schrabidium_fuel, 3), new Object[] { ModItems.billet_schrabidium, ModItems.billet_neptunium, ModItems.billet_beryllium });
|
||||
GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_schrabidium_fuel, 1), new Object[] { ModItems.nugget_schrabidium, ModItems.nugget_schrabidium, "nuggetNeptunium237", "nuggetNeptunium237", ModItems.nugget_beryllium, ModItems.nugget_beryllium }));
|
||||
GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_schrabidium_fuel, 1), new Object[] { ModItems.nugget_schrabidium, ModItems.nugget_schrabidium, "tinyNp237", "tinyNp237", ModItems.nugget_beryllium, ModItems.nugget_beryllium }));
|
||||
|
||||
@ -5,12 +5,15 @@ import com.hbm.handler.ArmorModHandler;
|
||||
import com.hbm.handler.HbmKeybinds.EnumKeybind;
|
||||
import com.hbm.items.armor.ItemModShield;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.packet.toclient.PlayerInformPacket;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
|
||||
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
@ -86,9 +89,9 @@ public class HbmPlayerProps implements IExtendedEntityProperties {
|
||||
this.enableBackpack = !this.enableBackpack;
|
||||
|
||||
if(this.enableBackpack)
|
||||
MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "Jetpack ON", MainRegistry.proxy.ID_JETPACK);
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.GREEN + "Jetpack ON", MainRegistry.proxy.ID_JETPACK, 1000), (EntityPlayerMP) player);
|
||||
else
|
||||
MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "Jetpack OFF", MainRegistry.proxy.ID_JETPACK);
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.RED + "Jetpack OFF", MainRegistry.proxy.ID_JETPACK, 1000), (EntityPlayerMP) player);
|
||||
}
|
||||
}
|
||||
if (key == EnumKeybind.TOGGLE_MAGNET){
|
||||
@ -96,9 +99,9 @@ public class HbmPlayerProps implements IExtendedEntityProperties {
|
||||
this.enableMagnet = !this.enableMagnet;
|
||||
|
||||
if(this.enableMagnet)
|
||||
MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "Magnet ON", MainRegistry.proxy.ID_MAGNET);
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.GREEN + "Magnet ON", MainRegistry.proxy.ID_MAGNET, 1000), (EntityPlayerMP) player);
|
||||
else
|
||||
MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "Magnet OFF", MainRegistry.proxy.ID_MAGNET);
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.GREEN + "Magnet ON", MainRegistry.proxy.ID_MAGNET, 1000), (EntityPlayerMP) player);
|
||||
}
|
||||
}
|
||||
if(key == EnumKeybind.TOGGLE_HEAD) {
|
||||
@ -107,9 +110,9 @@ public class HbmPlayerProps implements IExtendedEntityProperties {
|
||||
this.enableHUD = !this.enableHUD;
|
||||
|
||||
if(this.enableHUD)
|
||||
MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "HUD ON", MainRegistry.proxy.ID_HUD);
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.GREEN + "HUD ON", MainRegistry.proxy.ID_HUD, 1000), (EntityPlayerMP) player);
|
||||
else
|
||||
MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "HUD OFF", MainRegistry.proxy.ID_HUD);
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.GREEN + "HUD ON", MainRegistry.proxy.ID_HUD, 1000), (EntityPlayerMP) player);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -3,6 +3,9 @@ package com.hbm.handler.nei;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.inventory.recipes.AssemblyMachineRecipes;
|
||||
import com.hbm.inventory.recipes.loader.GenericRecipe;
|
||||
import com.hbm.inventory.recipes.loader.GenericRecipes;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
|
||||
public class AssemblyMachineRecipeHandler extends NEIGenericRecipeHandler {
|
||||
|
||||
@ -10,9 +13,20 @@ public class AssemblyMachineRecipeHandler extends NEIGenericRecipeHandler {
|
||||
super(ModBlocks.machine_assembly_machine.getLocalizedName(), AssemblyMachineRecipes.INSTANCE, ModBlocks.machine_assembly_machine);
|
||||
}
|
||||
|
||||
public AssemblyMachineRecipeHandler(String displayName, GenericRecipes recipeSet, Block... machines) { super(displayName, recipeSet, machines); }
|
||||
|
||||
@Override public String getRecipeID() { return "ntmAssemblyMachine"; }
|
||||
|
||||
@Override public int getInputXOffset(GenericRecipe recipe, int inputCount) { return recipe.inputItem != null && recipe.inputItem.length > 9 ? 18 : 0; }
|
||||
@Override public int getOutputXOffset(GenericRecipe recipe, int outputCount) { return recipe.inputItem != null && recipe.inputItem.length > 9 ? 18 : 0; }
|
||||
@Override public int getMachineXOffset(GenericRecipe recipe) { return recipe.inputItem != null && recipe.inputItem.length > 9 ? 18 : 0; }
|
||||
@Override public int getInputXOffset(GenericRecipe recipe, int inputCount) { return inputCount > 12 ? -9 : inputCount > 9 ? 18 : 0; }
|
||||
@Override public int getOutputXOffset(GenericRecipe recipe, int outputCount) { return getOffset(recipe); }
|
||||
@Override public int getMachineXOffset(GenericRecipe recipe) { return getOffset(recipe); }
|
||||
|
||||
public int getOffset(GenericRecipe recipe) {
|
||||
int length = 0;
|
||||
if(recipe.inputItem != null) length += recipe.inputItem.length;
|
||||
if(recipe.inputFluid != null) length += recipe.inputFluid.length;
|
||||
if(length > 12) return 27;
|
||||
if(length > 9) return 18;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,13 @@
|
||||
package com.hbm.handler.nei;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.inventory.recipes.PlasmaForgeRecipes;
|
||||
|
||||
public class PlasmaForgeRecipeHandler extends AssemblyMachineRecipeHandler {
|
||||
|
||||
public PlasmaForgeRecipeHandler() {
|
||||
super(ModBlocks.fusion_plasma_forge.getLocalizedName(), PlasmaForgeRecipes.INSTANCE, ModBlocks.fusion_plasma_forge);
|
||||
}
|
||||
|
||||
@Override public String getRecipeID() { return "ntmPlasmaForge"; }
|
||||
}
|
||||
@ -271,6 +271,11 @@ public class RecipesCommon {
|
||||
public List<ItemStack> extractForNEI() {
|
||||
return Arrays.asList(new ItemStack[] {this.toStack()});
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.stacksize + "x" + (this.item != null ? this.item.getUnlocalizedName() : "null") + "@" + this.meta;
|
||||
}
|
||||
}
|
||||
|
||||
public static class NBTStack extends ComparableStack {
|
||||
@ -374,6 +379,11 @@ public class RecipesCommon {
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.stacksize + "x" + (this.item != null ? this.item.getUnlocalizedName() : "null") + "@" + this.meta + "?" + this.nbt;
|
||||
}
|
||||
}
|
||||
|
||||
public static class OreDictStack extends AStack {
|
||||
@ -490,6 +500,11 @@ public class RecipesCommon {
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.stacksize + "x" + this.name;
|
||||
}
|
||||
}
|
||||
|
||||
public static class MetaBlock {
|
||||
|
||||
@ -0,0 +1,70 @@
|
||||
package com.hbm.inventory.container;
|
||||
|
||||
import com.hbm.inventory.SlotCraftingOutput;
|
||||
import com.hbm.inventory.SlotNonRetarded;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.util.InventoryUtil;
|
||||
|
||||
import api.hbm.energymk2.IBatteryItem;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ContainerMachinePlasmaForge extends ContainerBase {
|
||||
|
||||
public ContainerMachinePlasmaForge(InventoryPlayer invPlayer, IInventory assembler) {
|
||||
super(invPlayer, assembler);
|
||||
|
||||
// Battery
|
||||
this.addSlotToContainer(new SlotNonRetarded(assembler, 0, 152, 82));
|
||||
// Schematic
|
||||
this.addSlotToContainer(new SlotNonRetarded(assembler, 1, 35, 81));
|
||||
// Booster
|
||||
this.addSlotToContainer(new SlotNonRetarded(assembler, 2, 98, 116));
|
||||
// Input
|
||||
this.addSlots(assembler, 3, 8, 18, 3, 4);
|
||||
// Output
|
||||
this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, assembler, 15, 116, 36));
|
||||
|
||||
this.playerInv(invPlayer, 8, 162);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack transferStackInSlot(EntityPlayer player, int index) {
|
||||
ItemStack slotOriginal = null;
|
||||
Slot slot = (Slot) this.inventorySlots.get(index);
|
||||
|
||||
if(slot != null && slot.getHasStack()) {
|
||||
ItemStack slotStack = slot.getStack();
|
||||
slotOriginal = slotStack.copy();
|
||||
|
||||
if(index <= tile.getSizeInventory() - 1) {
|
||||
SlotCraftingOutput.checkAchievements(player, slotStack);
|
||||
if(!this.mergeItemStack(slotStack, tile.getSizeInventory(), this.inventorySlots.size(), true)) {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
|
||||
if(slotOriginal.getItem() instanceof IBatteryItem || slotOriginal.getItem() == ModItems.battery_creative) {
|
||||
if(!this.mergeItemStack(slotStack, 0, 1, false)) return null;
|
||||
} else if(slotOriginal.getItem() == ModItems.blueprints) {
|
||||
if(!this.mergeItemStack(slotStack, 1, 2, false)) return null;
|
||||
} else {
|
||||
if(!InventoryUtil.mergeItemStack(this.inventorySlots, slotStack, 2, 15, false)) return null;
|
||||
}
|
||||
}
|
||||
|
||||
if(slotStack.stackSize == 0) {
|
||||
slot.putStack(null);
|
||||
} else {
|
||||
slot.onSlotChanged();
|
||||
}
|
||||
|
||||
slot.onPickupFromSlot(player, slotStack);
|
||||
}
|
||||
|
||||
return slotOriginal;
|
||||
}
|
||||
}
|
||||
@ -31,7 +31,7 @@ public class ContainerRBMKRod extends Container {
|
||||
@Override
|
||||
public ItemStack slotClick(int index, int button, int mode, EntityPlayer player) {
|
||||
|
||||
if(index == 0) {
|
||||
if(index == 0 && !player.capabilities.isCreativeMode) {
|
||||
|
||||
if(rbmk.coldEnoughForManual()) {
|
||||
return super.slotClick(index, button, mode, player);
|
||||
@ -58,7 +58,7 @@ public class ContainerRBMKRod extends Container {
|
||||
var3 = var5.copy();
|
||||
|
||||
if(par2 <= rbmk.getSizeInventory() - 1) {
|
||||
if(!rbmk.coldEnoughForManual()) return null;
|
||||
if(!rbmk.coldEnoughForManual() && !player.capabilities.isCreativeMode) return null;
|
||||
if(!this.mergeItemStack(var5, rbmk.getSizeInventory(), this.inventorySlots.size(), true)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -1,66 +1,21 @@
|
||||
package com.hbm.inventory.container;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
//@invtweaks.api.container.ChestContainer(rowSize = 5)
|
||||
public class ContainerSafe extends Container {
|
||||
@invtweaks.api.container.ChestContainer(rowSize = 5, isLargeChest = false)
|
||||
public class ContainerSafe extends ContainerCrateBase {
|
||||
|
||||
private IInventory diFurnace;
|
||||
|
||||
public ContainerSafe(InventoryPlayer invPlayer, IInventory tedf) {
|
||||
diFurnace = tedf;
|
||||
public ContainerSafe(InventoryPlayer invPlayer, IInventory te) {
|
||||
super(invPlayer,te);
|
||||
|
||||
for(int i = 0; i < 3; i++) {
|
||||
for(int j = 0; j < 5; j++) {
|
||||
this.addSlotToContainer(new Slot(tedf, j + i * 5, 8 + j * 18 + 18 * 2, 18 + i * 18));
|
||||
this.addSlotToContainer(new Slot(te, j + i * 5, 8 + j * 18 + 18 * 2, 18 + 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, 84 + i * 18 + 2));
|
||||
}
|
||||
}
|
||||
|
||||
for(int i = 0; i < 9; i++) {
|
||||
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142 + 2));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) {
|
||||
ItemStack var3 = null;
|
||||
Slot var4 = (Slot) this.inventorySlots.get(par2);
|
||||
|
||||
if(var4 != null && var4.getHasStack()) {
|
||||
ItemStack var5 = var4.getStack();
|
||||
var3 = var5.copy();
|
||||
|
||||
if(par2 <= diFurnace.getSizeInventory() - 1) {
|
||||
if(!this.mergeItemStack(var5, diFurnace.getSizeInventory(), this.inventorySlots.size(), true)) {
|
||||
return null;
|
||||
}
|
||||
} else if(!this.mergeItemStack(var5, 0, diFurnace.getSizeInventory(), false)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if(var5.stackSize == 0) {
|
||||
var4.putStack((ItemStack) null);
|
||||
} else {
|
||||
var4.onSlotChanged();
|
||||
}
|
||||
}
|
||||
|
||||
return var3;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canInteractWith(EntityPlayer player) {
|
||||
return diFurnace.isUseableByPlayer(player);
|
||||
this.playerInv(invPlayer, 8, 32 + 18 * 3, 90 + (18 * 3));
|
||||
}
|
||||
}
|
||||
|
||||
140
src/main/java/com/hbm/inventory/gui/GUIMachinePlasmaForge.java
Normal file
140
src/main/java/com/hbm/inventory/gui/GUIMachinePlasmaForge.java
Normal file
@ -0,0 +1,140 @@
|
||||
package com.hbm.inventory.gui;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.inventory.container.ContainerMachinePlasmaForge;
|
||||
import com.hbm.inventory.recipes.PlasmaForgeRecipe;
|
||||
import com.hbm.inventory.recipes.PlasmaForgeRecipes;
|
||||
import com.hbm.inventory.recipes.loader.GenericRecipe;
|
||||
import com.hbm.items.machine.ItemBlueprints;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.render.util.GaugeUtil;
|
||||
import com.hbm.tileentity.machine.fusion.TileEntityFusionPlasmaForge;
|
||||
import com.hbm.util.BobMathUtil;
|
||||
import com.hbm.util.i18n.I18nUtil;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.OpenGlHelper;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
public class GUIMachinePlasmaForge extends GuiInfoContainer {
|
||||
|
||||
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/reactors/gui_fusion_plasmaforge.png");
|
||||
private TileEntityFusionPlasmaForge forge;
|
||||
|
||||
public GUIMachinePlasmaForge(InventoryPlayer invPlayer, TileEntityFusionPlasmaForge tedf) {
|
||||
super(new ContainerMachinePlasmaForge(invPlayer, tedf));
|
||||
forge = tedf;
|
||||
|
||||
this.xSize = 176;
|
||||
this.ySize = 244;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawScreen(int mouseX, int mouseY, float f) {
|
||||
super.drawScreen(mouseX, mouseY, f);
|
||||
|
||||
forge.inputTank.renderTankInfo(this, mouseX, mouseY, guiLeft + 80, guiTop + 18, 16, 52);
|
||||
|
||||
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 18, 16, 62, forge.power, forge.maxPower);
|
||||
|
||||
if(guiLeft + 7 <= mouseX && guiLeft + 7 + 18 > mouseX && guiTop + 80 < mouseY && guiTop + 80 + 18 >= mouseY) {
|
||||
if(this.forge.plasmaModule.recipe != null && PlasmaForgeRecipes.INSTANCE.recipeNameMap.containsKey(this.forge.plasmaModule.recipe)) {
|
||||
GenericRecipe recipe = (GenericRecipe) PlasmaForgeRecipes.INSTANCE.recipeNameMap.get(this.forge.plasmaModule.recipe);
|
||||
this.func_146283_a(recipe.print(), mouseX, mouseY);
|
||||
} else {
|
||||
this.drawCreativeTabHoveringText(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("gui.recipe.setRecipe"), mouseX, mouseY);
|
||||
}
|
||||
}
|
||||
|
||||
PlasmaForgeRecipe recipe = (PlasmaForgeRecipe) PlasmaForgeRecipes.INSTANCE.recipeNameMap.get(forge.plasmaModule.recipe);
|
||||
|
||||
if(recipe != null) {
|
||||
drawCustomInfoStat(mouseX, mouseY, guiLeft + 25, guiTop + 115, 18, 18, mouseX, mouseY, EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + BobMathUtil.getShortNumber(forge.plasmaEnergySync) + "KyU / " + BobMathUtil.getShortNumber(recipe.ignitionTemp) + "KyU");
|
||||
} else {
|
||||
drawCustomInfoStat(mouseX, mouseY, guiLeft + 25, guiTop + 115, 18, 18, mouseX, mouseY, "0TU / 0TU");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void mouseClicked(int x, int y, int button) {
|
||||
super.mouseClicked(x, y, button);
|
||||
|
||||
if(this.checkClick(x, y, 7, 80, 18, 18)) GUIScreenRecipeSelector.openSelector(PlasmaForgeRecipes.INSTANCE, forge, forge.plasmaModule.recipe, 0, ItemBlueprints.grabPool(forge.slots[1]), this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer(int i, int j) {
|
||||
String name = this.forge.hasCustomInventoryName() ? this.forge.getInventoryName() : I18n.format(this.forge.getInventoryName());
|
||||
|
||||
this.fontRendererObj.drawString(name, 70 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
|
||||
this.fontRendererObj.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_) {
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||
|
||||
int p = (int) (forge.power * 61 / forge.maxPower);
|
||||
drawTexturedModalRect(guiLeft + 152, guiTop + 80 - p, 176, 62 - p, 16, p);
|
||||
|
||||
if(forge.plasmaModule.progress > 0) {
|
||||
int j = (int) Math.ceil(70 * forge.plasmaModule.progress);
|
||||
drawTexturedModalRect(guiLeft + 62, guiTop + 81, 176, 62, j, 16);
|
||||
}
|
||||
|
||||
PlasmaForgeRecipe recipe = (PlasmaForgeRecipe) PlasmaForgeRecipes.INSTANCE.recipeNameMap.get(forge.plasmaModule.recipe);
|
||||
|
||||
/// LEFT LED
|
||||
if(forge.didProcess) {
|
||||
drawTexturedModalRect(guiLeft + 51, guiTop + 76, 195, 0, 3, 6);
|
||||
} else if(recipe != null) {
|
||||
drawTexturedModalRect(guiLeft + 51, guiTop + 76, 192, 0, 3, 6);
|
||||
}
|
||||
|
||||
/// RIGHT LED
|
||||
if(forge.didProcess) {
|
||||
drawTexturedModalRect(guiLeft + 56, guiTop + 76, 195, 0, 3, 6);
|
||||
} else if(recipe != null && forge.power >= recipe.power) {
|
||||
drawTexturedModalRect(guiLeft + 56, guiTop + 76, 192, 0, 3, 6);
|
||||
}
|
||||
|
||||
double inputGauge = recipe == null ? 0 : Math.min(((double) forge.plasmaEnergySync / (double) recipe.ignitionTemp), 1.5) / 1.5D;
|
||||
double boosterGauge = 0;
|
||||
|
||||
// input energy
|
||||
GaugeUtil.drawSmoothGauge(guiLeft + 34, guiTop + 124, this.zLevel, inputGauge, 5, 2, 1, 0xA00000);
|
||||
// output genergy
|
||||
GaugeUtil.drawSmoothGauge(guiLeft + 70, guiTop + 124, this.zLevel, boosterGauge, 5, 2, 1, 0xA00000);
|
||||
|
||||
this.renderItem(recipe != null ? recipe.getIcon() : TEMPLATE_FOLDER, 8, 81);
|
||||
|
||||
if(recipe != null && recipe.inputItem != null) {
|
||||
for(int i = 0; i < recipe.inputItem.length; i++) {
|
||||
Slot slot = (Slot) this.inventorySlots.inventorySlots.get(forge.plasmaModule.inputSlots[i]);
|
||||
if(!slot.getHasStack()) this.renderItem(recipe.inputItem[i].extractForCyclingDisplay(20), slot.xDisplayPosition, slot.yDisplayPosition, 10F);
|
||||
}
|
||||
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||
OpenGlHelper.glBlendFunc(770, 771, 1, 0);
|
||||
GL11.glColor4f(1F, 1F, 1F, 0.5F);
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
this.zLevel = 300F;
|
||||
for(int i = 0; i < recipe.inputItem.length; i++) {
|
||||
Slot slot = (Slot) this.inventorySlots.inventorySlots.get(forge.plasmaModule.inputSlots[i]);
|
||||
if(!slot.getHasStack()) drawTexturedModalRect(guiLeft + slot.xDisplayPosition, guiTop + slot.yDisplayPosition, slot.xDisplayPosition, slot.yDisplayPosition, 16, 16);
|
||||
}
|
||||
this.zLevel = 0F;
|
||||
GL11.glColor4f(1F, 1F, 1F, 1F);
|
||||
GL11.glDisable(GL11.GL_BLEND);
|
||||
}
|
||||
|
||||
forge.inputTank.renderTank(guiLeft + 80, guiTop + 70, this.zLevel, 16, 52);
|
||||
}
|
||||
}
|
||||
112
src/main/java/com/hbm/inventory/gui/GUIPump.java
Normal file
112
src/main/java/com/hbm/inventory/gui/GUIPump.java
Normal file
@ -0,0 +1,112 @@
|
||||
package com.hbm.inventory.gui;
|
||||
|
||||
import org.lwjgl.input.Keyboard;
|
||||
|
||||
import com.hbm.blocks.network.FluidPump.TileEntityFluidPump;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.packet.toserver.NBTControlPacket;
|
||||
import com.hbm.util.EnumUtil;
|
||||
|
||||
import api.hbm.energymk2.IEnergyReceiverMK2.ConnectionPriority;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.audio.PositionedSoundRecord;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.client.gui.GuiTextField;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class GUIPump extends GuiScreen {
|
||||
|
||||
protected final TileEntityFluidPump pump;
|
||||
|
||||
private GuiTextField textPlacementPriority;
|
||||
private GuiButton buttonPressure;
|
||||
private GuiButton buttonPriority;
|
||||
private int pressure;
|
||||
private int priority;
|
||||
|
||||
public GUIPump(TileEntityFluidPump pump) {
|
||||
this.pump = pump;
|
||||
this.pressure = pump.tank[0].getPressure();
|
||||
this.priority = pump.priority.ordinal();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initGui() {
|
||||
Keyboard.enableRepeatEvents(true);
|
||||
|
||||
textPlacementPriority = new GuiTextField(fontRendererObj, this.width / 2 - 150, 100, 90, 20);
|
||||
textPlacementPriority.setText("" + pump.bufferSize);
|
||||
textPlacementPriority.setMaxStringLength(5);
|
||||
|
||||
buttonPressure = new GuiButton(0, this.width / 2 - 50, 100, 90, 20, pressure + " PU");
|
||||
|
||||
buttonPriority = new GuiButton(1, this.width / 2 + 50, 100, 90, 20, pump.priority.name());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawScreen(int mouseX, int mouseY, float partialTicks) {
|
||||
drawDefaultBackground();
|
||||
|
||||
drawString(fontRendererObj, "Throughput:", this.width / 2 - 150, 80, 0xA0A0A0);
|
||||
drawString(fontRendererObj, "(max. 10,000mB)", this.width / 2 - 150, 90, 0xA0A0A0);
|
||||
textPlacementPriority.drawTextBox();
|
||||
|
||||
drawString(fontRendererObj, "Pressure:", this.width / 2 - 50, 80, 0xA0A0A0);
|
||||
buttonPressure.drawButton(mc, mouseX, mouseY);
|
||||
|
||||
drawString(fontRendererObj, "Priority:", this.width / 2 + 50, 80, 0xA0A0A0);
|
||||
buttonPriority.drawButton(mc, mouseX, mouseY);
|
||||
|
||||
super.drawScreen(mouseX, mouseY, partialTicks);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onGuiClosed() {
|
||||
Keyboard.enableRepeatEvents(false);
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
|
||||
data.setByte("pressure", (byte) pressure);
|
||||
data.setByte("priority", (byte) priority);
|
||||
|
||||
try { data.setInteger("capacity", Integer.parseInt(textPlacementPriority.getText())); } catch(Exception ex) {}
|
||||
|
||||
PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, pump.xCoord, pump.yCoord, pump.zCoord));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void keyTyped(char typedChar, int keyCode) {
|
||||
super.keyTyped(typedChar, keyCode);
|
||||
if(textPlacementPriority.textboxKeyTyped(typedChar, keyCode)) return;
|
||||
|
||||
if(keyCode == 1 || keyCode == this.mc.gameSettings.keyBindInventory.getKeyCode()) {
|
||||
this.mc.thePlayer.closeScreen();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void mouseClicked(int mouseX, int mouseY, int mouseButton) {
|
||||
super.mouseClicked(mouseX, mouseY, mouseButton);
|
||||
textPlacementPriority.mouseClicked(mouseX, mouseY, mouseButton);
|
||||
|
||||
if(buttonPressure.mousePressed(mc, mouseX, mouseY)) {
|
||||
this.pressure++;
|
||||
if(pressure > 5) pressure = 0;
|
||||
buttonPressure.displayString = pressure + " PU";
|
||||
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
|
||||
}
|
||||
|
||||
if(buttonPriority.mousePressed(mc, mouseX, mouseY)) {
|
||||
this.priority++;
|
||||
if(priority >= ConnectionPriority.values().length) priority = 0;
|
||||
buttonPriority.displayString = EnumUtil.grabEnumSafely(ConnectionPriority.class, priority).name();
|
||||
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
|
||||
}
|
||||
}
|
||||
|
||||
@Override public boolean doesGuiPauseGame() { return false; }
|
||||
}
|
||||
175
src/main/java/com/hbm/inventory/gui/GUIScreenRBMKGauge.java
Normal file
175
src/main/java/com/hbm/inventory/gui/GUIScreenRBMKGauge.java
Normal file
@ -0,0 +1,175 @@
|
||||
package com.hbm.inventory.gui;
|
||||
|
||||
import org.lwjgl.input.Keyboard;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.packet.toserver.NBTControlPacket;
|
||||
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKGauge;
|
||||
import com.hbm.util.i18n.I18nUtil;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.audio.PositionedSoundRecord;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.client.gui.GuiTextField;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
public class GUIScreenRBMKGauge extends GuiScreen {
|
||||
|
||||
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_rbmk_gauge.png");
|
||||
public TileEntityRBMKGauge keypad;
|
||||
protected int xSize = 256;
|
||||
protected int ySize = 204;
|
||||
protected int guiLeft;
|
||||
protected int guiTop;
|
||||
|
||||
protected GuiTextField[] color = new GuiTextField[4];
|
||||
protected GuiTextField[] label = new GuiTextField[4];
|
||||
protected GuiTextField[] rtty = new GuiTextField[4];
|
||||
protected GuiTextField[] min = new GuiTextField[4];
|
||||
protected GuiTextField[] max = new GuiTextField[4];
|
||||
protected boolean[] active = new boolean[4];
|
||||
protected boolean[] polling = new boolean[4];
|
||||
|
||||
public GUIScreenRBMKGauge(TileEntityRBMKGauge keypad) {
|
||||
this.keypad = keypad;
|
||||
|
||||
this.xSize = 256;
|
||||
this.ySize = 204;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initGui() {
|
||||
super.initGui();
|
||||
this.guiLeft = (this.width - this.xSize) / 2;
|
||||
this.guiTop = (this.height - this.ySize) / 2;
|
||||
|
||||
Keyboard.enableRepeatEvents(true);
|
||||
|
||||
int oX = 4;
|
||||
int oY = 4;
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
String col = Integer.toHexString(keypad.gauges[i].color);
|
||||
while(col.length() < 6) col = "0" + col;
|
||||
color[i] = new GuiTextField(this.fontRendererObj, guiLeft + 27 + oX, guiTop + 55 + oY + i * 36, 72 - oX * 2, 14);
|
||||
GUIScreenRBMKKeyPad.setupTextFieldStandard(color[i], 6, col);
|
||||
label[i] = new GuiTextField(this.fontRendererObj, guiLeft + 175 + oX, guiTop + 55 + oY + i * 36, 72 - oX * 2, 14);
|
||||
GUIScreenRBMKKeyPad.setupTextFieldStandard(label[i], 15, keypad.gauges[i].label);
|
||||
rtty[i] = new GuiTextField(this.fontRendererObj, guiLeft + 27 + oX, guiTop + 73 + oY + i * 36, 72 - oX * 2, 14);
|
||||
GUIScreenRBMKKeyPad.setupTextFieldStandard(rtty[i], 10, keypad.gauges[i].rtty);
|
||||
min[i] = new GuiTextField(this.fontRendererObj, guiLeft + 121 + oX, guiTop + 73 + oY + i * 36, 52 - oX * 2, 14);
|
||||
GUIScreenRBMKKeyPad.setupTextFieldStandard(min[i], 32, keypad.gauges[i].min + "");
|
||||
max[i] = new GuiTextField(this.fontRendererObj, guiLeft + 195 + oX, guiTop + 73 + oY + i * 36, 52 - oX * 2, 14);
|
||||
GUIScreenRBMKKeyPad.setupTextFieldStandard(max[i], 32, keypad.gauges[i].max + "");
|
||||
|
||||
active[i] = keypad.gauges[i].active;
|
||||
polling[i] = keypad.gauges[i].polling;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawScreen(int mouseX, int mouseY, float f) {
|
||||
this.drawDefaultBackground();
|
||||
this.drawGuiContainerBackgroundLayer(f, mouseX, mouseY);
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
this.drawGuiContainerForegroundLayer(mouseX, mouseY);
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
}
|
||||
|
||||
private void drawGuiContainerForegroundLayer(int x, int y) {
|
||||
String name = I18nUtil.resolveKey("container.rbmkGauge");
|
||||
this.fontRendererObj.drawString(name, this.guiLeft + this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, this.guiTop + 6, 4210752);
|
||||
}
|
||||
|
||||
private void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) {
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
if(this.active[i]) drawTexturedModalRect(guiLeft + 111, guiTop + i * 36 + 54, 18, 204, 16, 16);
|
||||
if(this.polling[i]) drawTexturedModalRect(guiLeft + 128, guiTop + i * 36 + 53, 0, 204, 18, 18);
|
||||
}
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
this.color[i].drawTextBox();
|
||||
this.label[i].drawTextBox();
|
||||
this.rtty[i].drawTextBox();
|
||||
this.min[i].drawTextBox();
|
||||
this.max[i].drawTextBox();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void mouseClicked(int x, int y, int b) {
|
||||
super.mouseClicked(x, y, b);
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
if(guiLeft + 111 <= x && guiLeft + 111 + 16 > x && guiTop + i * 36 + 54 < y && guiTop + i * 36 + 54 + 16 >= y) {
|
||||
this.active[i] = !this.active[i];
|
||||
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 0.5F + (this.active[i] ? 0.25F : 0F)));
|
||||
return;
|
||||
}
|
||||
|
||||
if(guiLeft + 128 <= x && guiLeft + 128 + 18 > x && guiTop + i * 36 + 53 < y && guiTop + i * 36 + 53 + 18 >= y) {
|
||||
this.polling[i] = !this.polling[i];
|
||||
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 0.5F + (this.polling[i] ? 0.25F : 0F)));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if(guiLeft + 209 <= x && guiLeft + 209 + 18 > x && guiTop + 17 < y && guiTop + 17 + 18 >= y) {
|
||||
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
byte active = 0;
|
||||
byte polling = 0;
|
||||
for(int i = 0; i < 4; i++) {
|
||||
if(this.active[i]) active |= 1 << i;
|
||||
if(this.polling[i]) polling |= 1 << i;
|
||||
}
|
||||
data.setByte("active", active);
|
||||
data.setByte("polling", polling);
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
try { data.setInteger("color" + i, Integer.parseInt(this.color[i].getText(), 16)); } catch(Exception ex) { }
|
||||
data.setString("label" + i, this.label[i].getText());
|
||||
data.setString("rtty" + i, this.rtty[i].getText());
|
||||
try { data.setInteger("min" + i, Integer.parseInt(this.min[i].getText())); } catch(Exception ex) { }
|
||||
try { data.setInteger("max" + i, Integer.parseInt(this.max[i].getText())); } catch(Exception ex) { }
|
||||
}
|
||||
PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, keypad.xCoord, keypad.yCoord, keypad.zCoord));
|
||||
return;
|
||||
}
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
this.color[i].mouseClicked(x, y, b);
|
||||
this.label[i].mouseClicked(x, y, b);
|
||||
this.rtty[i].mouseClicked(x, y, b);
|
||||
this.min[i].mouseClicked(x, y, b);
|
||||
this.max[i].mouseClicked(x, y, b);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void keyTyped(char c, int b) {
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
if(this.color[i].textboxKeyTyped(c, b)) return;
|
||||
if(this.label[i].textboxKeyTyped(c, b)) return;
|
||||
if(this.rtty[i].textboxKeyTyped(c, b)) return;
|
||||
if(this.min[i].textboxKeyTyped(c, b)) return;
|
||||
if(this.max[i].textboxKeyTyped(c, b)) return;
|
||||
}
|
||||
|
||||
if(b == 1 || b == this.mc.gameSettings.keyBindInventory.getKeyCode()) {
|
||||
this.mc.thePlayer.closeScreen();
|
||||
this.mc.setIngameFocus();
|
||||
}
|
||||
}
|
||||
|
||||
@Override public void onGuiClosed() { Keyboard.enableRepeatEvents(false); }
|
||||
@Override public boolean doesGuiPauseGame() { return false; }
|
||||
}
|
||||
176
src/main/java/com/hbm/inventory/gui/GUIScreenRBMKKeyPad.java
Normal file
176
src/main/java/com/hbm/inventory/gui/GUIScreenRBMKKeyPad.java
Normal file
@ -0,0 +1,176 @@
|
||||
package com.hbm.inventory.gui;
|
||||
|
||||
import org.lwjgl.input.Keyboard;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.packet.toserver.NBTControlPacket;
|
||||
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKKeyPad;
|
||||
import com.hbm.util.i18n.I18nUtil;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.audio.PositionedSoundRecord;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.client.gui.GuiTextField;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
public class GUIScreenRBMKKeyPad extends GuiScreen {
|
||||
|
||||
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_rbmk_keypad.png");
|
||||
public TileEntityRBMKKeyPad keypad;
|
||||
protected int xSize = 256;
|
||||
protected int ySize = 204;
|
||||
protected int guiLeft;
|
||||
protected int guiTop;
|
||||
|
||||
protected GuiTextField[] color = new GuiTextField[4];
|
||||
protected GuiTextField[] label = new GuiTextField[4];
|
||||
protected GuiTextField[] rtty = new GuiTextField[4];
|
||||
protected GuiTextField[] cmd = new GuiTextField[4];
|
||||
protected boolean[] active = new boolean[4];
|
||||
protected boolean[] polling = new boolean[4];
|
||||
|
||||
public GUIScreenRBMKKeyPad(TileEntityRBMKKeyPad keypad) {
|
||||
this.keypad = keypad;
|
||||
|
||||
this.xSize = 256;
|
||||
this.ySize = 204;
|
||||
}
|
||||
|
||||
public static void setupTextFieldStandard(GuiTextField field, int length, String def) {
|
||||
field.setTextColor(0x00ff00);
|
||||
field.setDisabledTextColour(0x00ff00);
|
||||
field.setEnableBackgroundDrawing(false);
|
||||
field.setMaxStringLength(length);
|
||||
field.setText(def != null ? def : "");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initGui() {
|
||||
super.initGui();
|
||||
this.guiLeft = (this.width - this.xSize) / 2;
|
||||
this.guiTop = (this.height - this.ySize) / 2;
|
||||
|
||||
Keyboard.enableRepeatEvents(true);
|
||||
|
||||
int oX = 4;
|
||||
int oY = 4;
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
String col = Integer.toHexString(keypad.keys[i].color);
|
||||
while(col.length() < 6) col = "0" + col;
|
||||
color[i] = new GuiTextField(this.fontRendererObj, guiLeft + 27 + oX, guiTop + 55 + oY + i * 36, 72 - oX * 2, 14);
|
||||
setupTextFieldStandard(color[i], 6, col);
|
||||
label[i] = new GuiTextField(this.fontRendererObj, guiLeft + 175 + oX, guiTop + 55 + oY + i * 36, 72 - oX * 2, 14);
|
||||
setupTextFieldStandard(label[i], 15, keypad.keys[i].label);
|
||||
rtty[i] = new GuiTextField(this.fontRendererObj, guiLeft + 27 + oX, guiTop + 73 + oY + i * 36, 72 - oX * 2, 14);
|
||||
setupTextFieldStandard(rtty[i], 10, keypad.keys[i].rtty);
|
||||
cmd[i] = new GuiTextField(this.fontRendererObj, guiLeft + 121 + oX, guiTop + 73 + oY + i * 36, 126 - oX * 2, 14);
|
||||
setupTextFieldStandard(cmd[i], 32, keypad.keys[i].command);
|
||||
|
||||
active[i] = keypad.keys[i].active;
|
||||
polling[i] = keypad.keys[i].polling;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawScreen(int mouseX, int mouseY, float f) {
|
||||
this.drawDefaultBackground();
|
||||
this.drawGuiContainerBackgroundLayer(f, mouseX, mouseY);
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
this.drawGuiContainerForegroundLayer(mouseX, mouseY);
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
}
|
||||
|
||||
private void drawGuiContainerForegroundLayer(int x, int y) {
|
||||
String name = I18nUtil.resolveKey("container.rbmkKeyPad");
|
||||
this.fontRendererObj.drawString(name, this.guiLeft + this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, this.guiTop + 6, 4210752);
|
||||
}
|
||||
|
||||
private void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) {
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
if(this.active[i]) drawTexturedModalRect(guiLeft + 111, guiTop + i * 36 + 54, 18, 204, 16, 16);
|
||||
if(this.polling[i]) drawTexturedModalRect(guiLeft + 128, guiTop + i * 36 + 53, 0, 204, 18, 18);
|
||||
}
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
this.color[i].drawTextBox();
|
||||
this.label[i].drawTextBox();
|
||||
this.rtty[i].drawTextBox();
|
||||
this.cmd[i].drawTextBox();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void mouseClicked(int x, int y, int b) {
|
||||
super.mouseClicked(x, y, b);
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
if(guiLeft + 111 <= x && guiLeft + 111 + 16 > x && guiTop + i * 36 + 54 < y && guiTop + i * 36 + 54 + 16 >= y) {
|
||||
this.active[i] = !this.active[i];
|
||||
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 0.5F + (this.active[i] ? 0.25F : 0F)));
|
||||
return;
|
||||
}
|
||||
|
||||
if(guiLeft + 128 <= x && guiLeft + 128 + 18 > x && guiTop + i * 36 + 53 < y && guiTop + i * 36 + 53 + 18 >= y) {
|
||||
this.polling[i] = !this.polling[i];
|
||||
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 0.5F + (this.polling[i] ? 0.25F : 0F)));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if(guiLeft + 209 <= x && guiLeft + 209 + 18 > x && guiTop + 17 < y && guiTop + 17 + 18 >= y) {
|
||||
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
byte active = 0;
|
||||
byte polling = 0;
|
||||
for(int i = 0; i < 4; i++) {
|
||||
if(this.active[i]) active |= 1 << i;
|
||||
if(this.polling[i]) polling |= 1 << i;
|
||||
}
|
||||
data.setByte("active", active);
|
||||
data.setByte("polling", polling);
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
try { data.setInteger("color" + i, Integer.parseInt(this.color[i].getText(), 16)); } catch(Exception ex) { }
|
||||
data.setString("label" + i, this.label[i].getText());
|
||||
data.setString("rtty" + i, this.rtty[i].getText());
|
||||
data.setString("cmd" + i, this.cmd[i].getText());
|
||||
}
|
||||
PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, keypad.xCoord, keypad.yCoord, keypad.zCoord));
|
||||
return;
|
||||
}
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
this.color[i].mouseClicked(x, y, b);
|
||||
this.label[i].mouseClicked(x, y, b);
|
||||
this.rtty[i].mouseClicked(x, y, b);
|
||||
this.cmd[i].mouseClicked(x, y, b);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void keyTyped(char c, int b) {
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
if(this.color[i].textboxKeyTyped(c, b)) return;
|
||||
if(this.label[i].textboxKeyTyped(c, b)) return;
|
||||
if(this.rtty[i].textboxKeyTyped(c, b)) return;
|
||||
if(this.cmd[i].textboxKeyTyped(c, b)) return;
|
||||
}
|
||||
|
||||
if(b == 1 || b == this.mc.gameSettings.keyBindInventory.getKeyCode()) {
|
||||
this.mc.thePlayer.closeScreen();
|
||||
this.mc.setIngameFocus();
|
||||
}
|
||||
}
|
||||
|
||||
@Override public void onGuiClosed() { Keyboard.enableRepeatEvents(false); }
|
||||
@Override public boolean doesGuiPauseGame() { return false; }
|
||||
}
|
||||
@ -71,7 +71,6 @@ public class GUIScreenRadioTorchController extends GuiScreen {
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
}
|
||||
|
||||
|
||||
private void drawGuiContainerForegroundLayer(int x, int y) {
|
||||
String name = I18nUtil.resolveKey("container.rttyController");
|
||||
this.fontRendererObj.drawString(name, this.guiLeft + this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, this.guiTop + 6, 4210752);
|
||||
|
||||
@ -12,9 +12,6 @@ import org.lwjgl.opengl.GL12;
|
||||
|
||||
import com.hbm.inventory.recipes.CrucibleRecipes;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemCassette;
|
||||
import com.hbm.items.machine.ItemStamp;
|
||||
import com.hbm.items.machine.ItemStamp.StampType;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
@ -56,17 +53,7 @@ public class GUIScreenTemplateFolder extends GuiScreen {
|
||||
|
||||
this.isJournal = item != ModItems.template_folder;
|
||||
|
||||
if(!this.isJournal) {
|
||||
// Stamps
|
||||
for(ItemStack i : ItemStamp.stamps.get(StampType.PLATE)) allStacks.add(i.copy());
|
||||
for(ItemStack i : ItemStamp.stamps.get(StampType.WIRE)) allStacks.add(i.copy());
|
||||
for(ItemStack i : ItemStamp.stamps.get(StampType.CIRCUIT)) allStacks.add(i.copy());
|
||||
|
||||
// Tracks
|
||||
for(int i = 1; i < ItemCassette.TrackType.values().length; i++) {
|
||||
allStacks.add(new ItemStack(ModItems.siren_track, 1, i));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(!this.isJournal) {
|
||||
|
||||
|
||||
@ -140,7 +140,7 @@ public class Mats {
|
||||
public static final NTMMaterial MAT_ALLOY = makeSmeltable(_AS + 2, ALLOY, 0xFF8330, 0x700000, 0xFF7318).setAutogen(WIRE, DUST, DENSEWIRE, PLATE, CASTPLATE, BLOCK).m();
|
||||
public static final NTMMaterial MAT_DURA = makeSmeltable(_AS + 3, DURA, 0x82A59C, 0x06281E, 0x42665C).setAutogen(BOLT, DUST, PLATE, CASTPLATE, PIPE, BLOCK, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, GRIP).m();
|
||||
public static final NTMMaterial MAT_DESH = makeSmeltable(_AS + 12, DESH, 0xFF6D6D, 0x720000, 0xF22929).setAutogen(DUST, CASTPLATE, BLOCK, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, STOCK, GRIP).m();
|
||||
public static final NTMMaterial MAT_STAR = makeSmeltable(_AS + 5, STAR, 0xCCCCEA, 0x11111A, 0xA5A5D3).setAutogen(DUST, DENSEWIRE, BLOCK).m();
|
||||
public static final NTMMaterial MAT_STAR = makeSmeltable(_AS + 5, STAR, 0xCCCCEA, 0x11111A, 0xA5A5D3).setAutogen(DUST, DENSEWIRE, CASTPLATE, BLOCK).m();
|
||||
public static final NTMMaterial MAT_FERRO = makeSmeltable(_AS + 7, FERRO, 0xB7B7C9, 0x101022, 0x6B6B8B).setAutogen(CASTPLATE, HEAVYBARREL, HEAVYRECEIVER).m();
|
||||
public static final NTMMaterial MAT_TCALLOY = makeSmeltable(_AS + 6, TCALLOY, 0xD4D6D6, 0x323D3D, 0x9CA6A6).setAutogen(DUST, CASTPLATE, WELDEDPLATE, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER).m();
|
||||
public static final NTMMaterial MAT_CDALLOY = makeSmeltable(_AS + 13, CDALLOY, 0xF7DF8F, 0x604308, 0xFBD368).setAutogen(CASTPLATE, WELDEDPLATE, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER).m();
|
||||
|
||||
@ -8,7 +8,6 @@ import static com.hbm.inventory.OreDictManager.*;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.blocks.generic.BlockCap.EnumCapBlock;
|
||||
import com.hbm.blocks.machine.BlockICFLaserComponent.EnumICFPart;
|
||||
import com.hbm.config.GeneralConfig;
|
||||
import com.hbm.inventory.FluidStack;
|
||||
import com.hbm.inventory.OreDictManager;
|
||||
@ -83,10 +82,6 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
|
||||
.inputItems(new OreDictStack(DESH.ingot(), 4), new OreDictStack(ANY_PLASTIC.dust(), 2), new OreDictStack(DURA.ingot(), 1)));
|
||||
this.register(new GenericRecipe("ass.platebismuth").setup(200, 100).outputItems(new ItemStack(ModItems.plate_bismuth, 1))
|
||||
.inputItems(new ComparableStack(ModItems.nugget_bismuth, 2), new OreDictStack(U238.billet(), 2), new OreDictStack(NB.dust(), 1)));
|
||||
this.register(new GenericRecipe("ass.plateeuphemium").setup(600, 100).outputItems(new ItemStack(ModItems.plate_euphemium, 1))
|
||||
.inputItems(new OreDictStack(EUPH.ingot(), 4), new OreDictStack(AT.dust(), 3), new OreDictStack(BI.dust(), 1), new OreDictStack(VOLCANIC.gem(), 1), new OreDictStack(OSMIRIDIUM.ingot())));
|
||||
this.register(new GenericRecipe("ass.platednt").setup(600, 100).outputItems(new ItemStack(ModItems.plate_dineutronium, 4))
|
||||
.inputItems(new OreDictStack(DNT.ingot(), 4), new ComparableStack(ModItems.powder_spark_mix, 2), new OreDictStack(DESH.ingot(), 1)));
|
||||
|
||||
// expensive parts
|
||||
this.register(new GenericRecipe("ass.exsteelplating").setup(200, 400).outputItems(new ItemStack(ModItems.item_expensive, 1, EnumExpensiveType.STEEL_PLATING.ordinal()))
|
||||
@ -424,32 +419,6 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
|
||||
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CHIP_QUANTUM))
|
||||
.inputFluids(new FluidStack(Fluids.PERFLUOROMETHYL_COLD, 8_000))
|
||||
.outputFluids(new FluidStack(Fluids.PERFLUOROMETHYL, 8_000)));
|
||||
|
||||
this.register(new GenericRecipe("ass.fensusan").setup(1_200, 100).outputItems(new ItemStack(ModBlocks.machine_battery_redd, 1))
|
||||
.inputItems(new ComparableStack(ModItems.ingot_electronium, 64),
|
||||
new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_QUANTUM),
|
||||
new OreDictStack(OSMIRIDIUM.plateWelded(), 64),
|
||||
new OreDictStack(OSMIRIDIUM.plateWelded(), 64),
|
||||
new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 64),
|
||||
new OreDictStack(CMB.plateCast(), 32),
|
||||
new OreDictStack(MAGTUNG.wireDense(), 32),
|
||||
new ComparableStack(ModItems.plate_dineutronium, 64),
|
||||
new ComparableStack(ModItems.powder_magic, 64),
|
||||
new ComparableStack(ModItems.ingot_u238m2),
|
||||
new ComparableStack(ModItems.ingot_cft, 64),
|
||||
new ComparableStack(ModItems.ingot_cft, 64))
|
||||
.inputItemsEx(new ComparableStack(ModItems.ingot_electronium, 64),
|
||||
new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_QUANTUM),
|
||||
new ComparableStack(ModItems.item_expensive, 64, EnumExpensiveType.BRONZE_TUBES),
|
||||
new ComparableStack(ModItems.item_expensive, 64, EnumExpensiveType.FERRO_PLATING),
|
||||
new OreDictStack(OSMIRIDIUM.plateWelded(), 64),
|
||||
new OreDictStack(OSMIRIDIUM.plateWelded(), 64),
|
||||
new OreDictStack(OSMIRIDIUM.plateWelded(), 64),
|
||||
new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 64),
|
||||
new OreDictStack(CMB.plateCast(), 64),
|
||||
new ComparableStack(ModItems.ingot_u238m2),
|
||||
new ComparableStack(ModItems.ingot_cft, 64),
|
||||
new ComparableStack(ModItems.ingot_cft, 64)));
|
||||
|
||||
// fluid tanks
|
||||
this.register(new GenericRecipe("ass.tank").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_fluidtank, 1))
|
||||
@ -603,55 +572,6 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
|
||||
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 6, EnumExpensiveType.LEAD_PLATING), new OreDictStack(ANY_RESISTANTALLOY.plateWelded()))
|
||||
.setPools528(GenericRecipes.POOL_PREFIX_528 + "tcalloy"));
|
||||
|
||||
// ICF
|
||||
this.register(new GenericRecipe("ass.icfcell").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.CELL.ordinal()))
|
||||
.inputItems(new ComparableStack(ModItems.ingot_cft, 2), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 4), new ComparableStack(ModBlocks.glass_quartz, 16))
|
||||
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.BRONZE_TUBES), new ComparableStack(ModItems.ingot_cft, 8), new ComparableStack(ModBlocks.glass_quartz, 16))
|
||||
.setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte"));
|
||||
this.register(new GenericRecipe("ass.icfemitter").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.EMITTER.ordinal()))
|
||||
.inputItems(new OreDictStack(W.plateWelded(), 4), new OreDictStack(MAGTUNG.wireDense(), 16))
|
||||
.inputItemsEx(new OreDictStack(W.plateWelded(), 8), new OreDictStack(MAGTUNG.wireDense(), 16))
|
||||
.inputFluids(new FluidStack(Fluids.XENON, 16_000))
|
||||
.setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte"));
|
||||
this.register(new GenericRecipe("ass.icfcapacitor").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.CAPACITOR.ordinal()))
|
||||
.inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 1), new OreDictStack(ND.wireDense(), 16), new OreDictStack(SBD.wireDense(), 2))
|
||||
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 3, EnumExpensiveType.FERRO_PLATING), new OreDictStack(ND.wireDense(), 16), new OreDictStack(SBD.wireDense(), 2))
|
||||
.setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte"));
|
||||
this.register(new GenericRecipe("ass.icfturbo").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.TURBO.ordinal()))
|
||||
.inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 2), new OreDictStack(DNT.wireDense(), 4), new OreDictStack(SBD.wireDense(), 4))
|
||||
.inputItemsEx(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 8), new OreDictStack(DNT.wireDense(), 8), new OreDictStack(SBD.wireDense(), 4))
|
||||
.setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte"));
|
||||
this.register(new GenericRecipe("ass.icfcasing").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.CASING.ordinal()))
|
||||
.inputItems(new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 4), new OreDictStack(BIGMT.plateCast(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16))
|
||||
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.BRONZE_TUBES), new OreDictStack(BIGMT.plateCast(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16))
|
||||
.setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte"));
|
||||
this.register(new GenericRecipe("ass.icfport").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.PORT.ordinal()))
|
||||
.inputItems(new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new OreDictStack(ND.wireDense(), 16))
|
||||
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.BRONZE_TUBES), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new OreDictStack(ND.wireDense(), 16))
|
||||
.setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte"));
|
||||
this.register(new GenericRecipe("ass.icfcontroller").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_controller, 1))
|
||||
.inputItems(new ComparableStack(ModItems.ingot_cft, 16), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID))
|
||||
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.BRONZE_TUBES), new ComparableStack(ModItems.ingot_cft, 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 32, EnumCircuitType.BISMOID), new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.COMPUTER))
|
||||
.setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte"));
|
||||
this.register(new GenericRecipe("ass.icfscaffold").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_component, 1, 0))
|
||||
.inputItems(new OreDictStack(STEEL.plateWelded(), 4), new OreDictStack(TI.plateWelded(), 2))
|
||||
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.STEEL_PLATING))
|
||||
.setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte"));
|
||||
this.register(new GenericRecipe("ass.icfvessel").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_component, 1, 1))
|
||||
.inputItems(new ComparableStack(ModItems.ingot_cft, 1), new OreDictStack(CMB.plateCast(), 1), new OreDictStack(W.plateWelded(), 2))
|
||||
.setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte"));
|
||||
this.register(new GenericRecipe("ass.icfstructural").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_component, 1, 3))
|
||||
.inputItems(new OreDictStack(STEEL.plateWelded(), 2), new OreDictStack(CU.plateWelded(), 2), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 1))
|
||||
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.BRONZE_TUBES), new OreDictStack(STEEL.plateWelded(), 8))
|
||||
.setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte"));
|
||||
this.register(new GenericRecipe("ass.icfcore").setup(1_200, 100).outputItems(new ItemStack(ModBlocks.struct_icf_core, 1))
|
||||
.inputItems(new OreDictStack(CMB.plateWelded(), 16), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 16), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 16), new OreDictStack(SBD.wireDense(), 32), new ComparableStack(ModItems.circuit, 32, EnumCircuitType.BISMOID), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.QUANTUM))
|
||||
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 16, EnumExpensiveType.BRONZE_TUBES), new OreDictStack(CMB.plateWelded(), 16), new OreDictStack(SBD.wireDense(), 32), new ComparableStack(ModItems.circuit, 32, EnumCircuitType.QUANTUM), new ComparableStack(ModItems.item_expensive, 16, EnumExpensiveType.COMPUTER))
|
||||
.setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte"));
|
||||
this.register(new GenericRecipe("ass.icfpress").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_icf_press, 1))
|
||||
.inputItems(new OreDictStack(GOLD.plateCast(), 8), new ComparableStack(ModItems.motor, 4), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BISMOID))
|
||||
.setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte"));
|
||||
|
||||
// upgrades
|
||||
if(no528) {
|
||||
this.register(new GenericRecipe("ass.overdrive1").setup(200, 100).outputItems(new ItemStack(ModItems.upgrade_overdrive_1, 1))
|
||||
@ -982,22 +902,6 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
|
||||
.inputItems(new ComparableStack(ModItems.seg_15, 1), new OreDictStack(WEAPONSTEEL.plate(), 32), new OreDictStack(OreDictManager.getReflector(), 16), new ComparableStack(ModItems.powder_magic, 8), new ComparableStack(ModItems.egg_balefire_shard, 4), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 16), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.CONTROLLER))
|
||||
.setPools528(GenericRecipes.POOL_PREFIX_528 + "controller"));
|
||||
|
||||
// weapons
|
||||
this.register(new GenericRecipe("ass.schrabhammer").setup(6_000, 100).outputItems(new ItemStack(ModItems.schrabidium_hammer, 1))
|
||||
.inputItems(
|
||||
new OreDictStack(SA326.block(), 35),
|
||||
new ComparableStack(ModItems.billet_yharonite, 64),
|
||||
new ComparableStack(ModItems.billet_yharonite, 64),
|
||||
new ComparableStack(ModItems.coin_ufo, 1),
|
||||
new ComparableStack(ModItems.fragment_meteorite, 64),
|
||||
new ComparableStack(ModItems.fragment_meteorite, 64),
|
||||
new ComparableStack(ModItems.fragment_meteorite, 64),
|
||||
new ComparableStack(ModItems.fragment_meteorite, 64),
|
||||
new ComparableStack(ModItems.fragment_meteorite, 64),
|
||||
new ComparableStack(ModItems.fragment_meteorite, 64),
|
||||
new ComparableStack(ModItems.fragment_meteorite, 64),
|
||||
new ComparableStack(ModItems.fragment_meteorite, 64)));
|
||||
|
||||
// ammo
|
||||
this.register(new GenericRecipe("ass.50bmgsm").setup(100, 100).outputItems(new ItemStack(ModItems.ammo_standard, 6, EnumAmmo.BMG50_SM.ordinal()))
|
||||
.inputItems(new ComparableStack(ModItems.casing, 1, EnumCasingType.LARGE_STEEL), new OreDictStack(ANY_SMOKELESS.dust(), 6), new OreDictStack(STAR.ingot(), 3))
|
||||
@ -1102,30 +1006,6 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
|
||||
new ComparableStack(ModItems.thruster_small, 1),
|
||||
new ComparableStack(ModItems.photo_panel, 12),
|
||||
new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_LITHIUM)));
|
||||
this.register(new GenericRecipe("ass.gerald").setup(6_000, 100).outputItems(new ItemStack(ModItems.sat_gerald, 1))
|
||||
.inputItems(new OreDictStack(SBD.plateCast(), 64),
|
||||
new OreDictStack(SBD.plateCast(), 64),
|
||||
new OreDictStack(BSCCO.wireDense(), 64),
|
||||
new OreDictStack(BSCCO.wireDense(), 64),
|
||||
new ComparableStack(ModBlocks.det_nuke, 64),
|
||||
new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE),
|
||||
new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE),
|
||||
new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE),
|
||||
new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE),
|
||||
new ComparableStack(ModItems.circuit, 64, EnumCircuitType.CONTROLLER_QUANTUM),
|
||||
new ComparableStack(ModItems.coin_ufo, 1))
|
||||
.inputItemsEx(new OreDictStack(SBD.plateCast(), 64),
|
||||
new OreDictStack(BSCCO.wireDense(), 64),
|
||||
new ComparableStack(ModBlocks.det_nuke, 64),
|
||||
new ComparableStack(ModItems.item_expensive, 64, EnumExpensiveType.BRONZE_TUBES),
|
||||
new ComparableStack(ModItems.item_expensive, 64, EnumExpensiveType.BRONZE_TUBES),
|
||||
new ComparableStack(ModItems.item_expensive, 64, EnumExpensiveType.BRONZE_TUBES),
|
||||
new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE),
|
||||
new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE),
|
||||
new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE),
|
||||
new ComparableStack(ModItems.circuit, 64, EnumCircuitType.CONTROLLER_QUANTUM),
|
||||
new ComparableStack(ModItems.item_expensive, 64, EnumExpensiveType.COMPUTER),
|
||||
new ComparableStack(ModItems.coin_ufo, 1)).setPools(GenericRecipes.POOL_PREFIX_DISCOVER + "gerald"));
|
||||
|
||||
this.register(new GenericRecipe("ass.emptypackage").setup(40, 100).outputItems(new ItemStack(ModItems.fluid_pack_empty, 1))
|
||||
.inputItems(new OreDictStack(TI.plate(), 4), new OreDictStack(ANY_PLASTIC.ingot(), 2)));
|
||||
@ -1154,7 +1034,6 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
|
||||
new ComparableStack(ModItems.motor_bismuth, 3)));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static HashMap getRecipes() {
|
||||
|
||||
@ -0,0 +1,33 @@
|
||||
package com.hbm.inventory.recipes;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.inventory.recipes.loader.GenericRecipe;
|
||||
import com.hbm.util.BobMathUtil;
|
||||
import com.hbm.util.i18n.I18nUtil;
|
||||
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
|
||||
public class PlasmaForgeRecipe extends GenericRecipe {
|
||||
|
||||
// minimum plasma energy to perform the recipe
|
||||
public long ignitionTemp;
|
||||
|
||||
public PlasmaForgeRecipe(String name) { super(name); }
|
||||
|
||||
public PlasmaForgeRecipe setInputEnergy(long ignitionTemp) { this.ignitionTemp = ignitionTemp; return this; }
|
||||
|
||||
public List<String> print() {
|
||||
List<String> list = new ArrayList();
|
||||
list.add(EnumChatFormatting.YELLOW + this.getLocalizedName());
|
||||
|
||||
duration(list);
|
||||
power(list);
|
||||
list.add(EnumChatFormatting.LIGHT_PURPLE + I18nUtil.resolveKey("gui.recipe.fusionIn") + ": " + BobMathUtil.getShortNumber(ignitionTemp) + "TU/t");
|
||||
input(list);
|
||||
output(list);
|
||||
|
||||
return list;
|
||||
}
|
||||
}
|
||||
206
src/main/java/com/hbm/inventory/recipes/PlasmaForgeRecipes.java
Normal file
206
src/main/java/com/hbm/inventory/recipes/PlasmaForgeRecipes.java
Normal file
@ -0,0 +1,206 @@
|
||||
package com.hbm.inventory.recipes;
|
||||
|
||||
import static com.hbm.inventory.OreDictManager.*;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.stream.JsonWriter;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.blocks.machine.BlockICFLaserComponent.EnumICFPart;
|
||||
import com.hbm.inventory.FluidStack;
|
||||
import com.hbm.inventory.RecipesCommon.AStack;
|
||||
import com.hbm.inventory.RecipesCommon.ComparableStack;
|
||||
import com.hbm.inventory.RecipesCommon.OreDictStack;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.inventory.recipes.loader.GenericRecipe;
|
||||
import com.hbm.inventory.recipes.loader.GenericRecipes;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.ItemEnums.EnumExpensiveType;
|
||||
import com.hbm.items.ItemGenericPart.EnumPartType;
|
||||
import com.hbm.items.machine.ItemFluidIcon;
|
||||
import com.hbm.items.machine.ItemBatteryPack.EnumBatteryPack;
|
||||
import com.hbm.items.machine.ItemCircuit.EnumCircuitType;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class PlasmaForgeRecipes extends GenericRecipes<PlasmaForgeRecipe> {
|
||||
|
||||
public static final PlasmaForgeRecipes INSTANCE = new PlasmaForgeRecipes();
|
||||
|
||||
@Override public int inputItemLimit() { return 12; }
|
||||
@Override public int inputFluidLimit() { return 1; }
|
||||
@Override public int outputItemLimit() { return 1; }
|
||||
@Override public int outputFluidLimit() { return 0; }
|
||||
|
||||
@Override public String getFileName() { return "hbmPlasmaForge.json"; }
|
||||
@Override public PlasmaForgeRecipe instantiateRecipe(String name) { return new PlasmaForgeRecipe(name); }
|
||||
|
||||
@Override
|
||||
public void registerDefaults() {
|
||||
|
||||
// Plates
|
||||
this.register((PlasmaForgeRecipe) new PlasmaForgeRecipe("plsm.plateeuphemium").setInputEnergy(1_000_000).setup(600, 10_000_000).outputItems(new ItemStack(ModItems.plate_euphemium, 1))
|
||||
.inputItems(new OreDictStack(EUPH.ingot(), 4), new OreDictStack(AT.dust(), 3), new OreDictStack(BI.dust(), 1), new OreDictStack(VOLCANIC.gem(), 1), new OreDictStack(OSMIRIDIUM.ingot())));
|
||||
this.register((PlasmaForgeRecipe) new PlasmaForgeRecipe("plsm.platednt").setInputEnergy(1_000_000).setup(600, 10_000_000).outputItems(new ItemStack(ModItems.plate_dineutronium, 4))
|
||||
.inputItems(new OreDictStack(DNT.ingot(), 4), new ComparableStack(ModItems.powder_spark_mix, 2), new OreDictStack(DESH.ingot(), 1)));
|
||||
|
||||
// ICF
|
||||
this.register((PlasmaForgeRecipe) new PlasmaForgeRecipe("plsm.icfcell").setInputEnergy(1_000_000).setup(200, 10_000_000).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.CELL.ordinal()))
|
||||
.inputItems(new ComparableStack(ModItems.ingot_cft, 2), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 4), new ComparableStack(ModBlocks.glass_quartz, 16))
|
||||
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.BRONZE_TUBES), new ComparableStack(ModItems.ingot_cft, 8), new ComparableStack(ModBlocks.glass_quartz, 16))
|
||||
.setPools528(PlasmaForgeRecipes.POOL_PREFIX_528 + "chlorophyte"));
|
||||
this.register((PlasmaForgeRecipe) new PlasmaForgeRecipe("plsm.icfemitter").setInputEnergy(1_000_000).setup(200, 10_000_000).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.EMITTER.ordinal()))
|
||||
.inputItems(new OreDictStack(W.plateWelded(), 4), new OreDictStack(MAGTUNG.wireDense(), 16))
|
||||
.inputItemsEx(new OreDictStack(W.plateWelded(), 8), new OreDictStack(MAGTUNG.wireDense(), 16))
|
||||
.inputFluids(new FluidStack(Fluids.XENON, 16_000))
|
||||
.setPools528(PlasmaForgeRecipes.POOL_PREFIX_528 + "chlorophyte"));
|
||||
this.register((PlasmaForgeRecipe) new PlasmaForgeRecipe("plsm.icfcapacitor").setInputEnergy(1_000_000).setup(200, 10_000_000).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.CAPACITOR.ordinal()))
|
||||
.inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 1), new OreDictStack(ND.wireDense(), 16), new OreDictStack(SBD.wireDense(), 2))
|
||||
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 3, EnumExpensiveType.FERRO_PLATING), new OreDictStack(ND.wireDense(), 16), new OreDictStack(SBD.wireDense(), 2))
|
||||
.setPools528(PlasmaForgeRecipes.POOL_PREFIX_528 + "chlorophyte"));
|
||||
this.register((PlasmaForgeRecipe) new PlasmaForgeRecipe("plsm.icfturbo").setInputEnergy(1_000_000).setup(200, 10_000_000).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.TURBO.ordinal()))
|
||||
.inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 2), new OreDictStack(DNT.wireDense(), 4), new OreDictStack(SBD.wireDense(), 4))
|
||||
.inputItemsEx(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 8), new OreDictStack(DNT.wireDense(), 8), new OreDictStack(SBD.wireDense(), 4))
|
||||
.setPools528(PlasmaForgeRecipes.POOL_PREFIX_528 + "chlorophyte"));
|
||||
this.register((PlasmaForgeRecipe) new PlasmaForgeRecipe("plsm.icfcasing").setInputEnergy(1_000_000).setup(200, 10_000_000).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.CASING.ordinal()))
|
||||
.inputItems(new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 4), new OreDictStack(BIGMT.plateCast(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16))
|
||||
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.BRONZE_TUBES), new OreDictStack(BIGMT.plateCast(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16))
|
||||
.setPools528(PlasmaForgeRecipes.POOL_PREFIX_528 + "chlorophyte"));
|
||||
this.register((PlasmaForgeRecipe) new PlasmaForgeRecipe("plsm.icfport").setInputEnergy(1_000_000).setup(200, 10_000_000).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.PORT.ordinal()))
|
||||
.inputItems(new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new OreDictStack(ND.wireDense(), 16))
|
||||
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.BRONZE_TUBES), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new OreDictStack(ND.wireDense(), 16))
|
||||
.setPools528(PlasmaForgeRecipes.POOL_PREFIX_528 + "chlorophyte"));
|
||||
this.register((PlasmaForgeRecipe) new PlasmaForgeRecipe("plsm.icfcontroller").setInputEnergy(1_000_000).setup(200, 10_000_000).outputItems(new ItemStack(ModBlocks.icf_controller, 1))
|
||||
.inputItems(new ComparableStack(ModItems.ingot_cft, 16), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID))
|
||||
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.BRONZE_TUBES), new ComparableStack(ModItems.ingot_cft, 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 32, EnumCircuitType.BISMOID), new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.COMPUTER))
|
||||
.setPools528(PlasmaForgeRecipes.POOL_PREFIX_528 + "chlorophyte"));
|
||||
this.register((PlasmaForgeRecipe) new PlasmaForgeRecipe("plsm.icfscaffold").setInputEnergy(1_000_000).setup(200, 10_000_000).outputItems(new ItemStack(ModBlocks.icf_component, 1, 0))
|
||||
.inputItems(new OreDictStack(STEEL.plateWelded(), 4), new OreDictStack(TI.plateWelded(), 2))
|
||||
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.STEEL_PLATING))
|
||||
.setPools528(PlasmaForgeRecipes.POOL_PREFIX_528 + "chlorophyte"));
|
||||
this.register((PlasmaForgeRecipe) new PlasmaForgeRecipe("plsm.icfvessel").setInputEnergy(1_000_000).setup(200, 10_000_000).outputItems(new ItemStack(ModBlocks.icf_component, 1, 1))
|
||||
.inputItems(new ComparableStack(ModItems.ingot_cft, 1), new OreDictStack(CMB.plateCast(), 1), new OreDictStack(W.plateWelded(), 2))
|
||||
.setPools528(PlasmaForgeRecipes.POOL_PREFIX_528 + "chlorophyte"));
|
||||
this.register((PlasmaForgeRecipe) new PlasmaForgeRecipe("plsm.icfstructural").setInputEnergy(1_000_000).setup(200, 10_000_000).outputItems(new ItemStack(ModBlocks.icf_component, 1, 3))
|
||||
.inputItems(new OreDictStack(STEEL.plateWelded(), 2), new OreDictStack(CU.plateWelded(), 2), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 1))
|
||||
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.BRONZE_TUBES), new OreDictStack(STEEL.plateWelded(), 8))
|
||||
.setPools528(PlasmaForgeRecipes.POOL_PREFIX_528 + "chlorophyte"));
|
||||
this.register((PlasmaForgeRecipe) new PlasmaForgeRecipe("plsm.icfcore").setInputEnergy(1_000_000).setup(1_200, 10_000_000).outputItems(new ItemStack(ModBlocks.struct_icf_core, 1))
|
||||
.inputItems(new OreDictStack(CMB.plateWelded(), 16), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 16), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 16), new OreDictStack(SBD.wireDense(), 32), new ComparableStack(ModItems.circuit, 32, EnumCircuitType.BISMOID), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.QUANTUM))
|
||||
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 16, EnumExpensiveType.BRONZE_TUBES), new OreDictStack(CMB.plateWelded(), 16), new OreDictStack(SBD.wireDense(), 32), new ComparableStack(ModItems.circuit, 32, EnumCircuitType.QUANTUM), new ComparableStack(ModItems.item_expensive, 16, EnumExpensiveType.COMPUTER))
|
||||
.setPools528(PlasmaForgeRecipes.POOL_PREFIX_528 + "chlorophyte"));
|
||||
this.register((PlasmaForgeRecipe) new PlasmaForgeRecipe("plsm.icfpress").setInputEnergy(1_000_000).setup(200, 10_000_000).outputItems(new ItemStack(ModBlocks.machine_icf_press, 1))
|
||||
.inputItems(new OreDictStack(GOLD.plateCast(), 8), new ComparableStack(ModItems.motor, 4), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BISMOID))
|
||||
.setPools528(PlasmaForgeRecipes.POOL_PREFIX_528 + "chlorophyte"));
|
||||
|
||||
// weapons
|
||||
this.register((PlasmaForgeRecipe) new PlasmaForgeRecipe("plsm.schrabhammer").setInputEnergy(25_000_000).setup(6_000, 10_000_000).outputItems(new ItemStack(ModItems.schrabidium_hammer, 1))
|
||||
.inputItems(
|
||||
new OreDictStack(SA326.block(), 35),
|
||||
new ComparableStack(ModItems.billet_yharonite, 64),
|
||||
new ComparableStack(ModItems.billet_yharonite, 64),
|
||||
new ComparableStack(ModItems.coin_ufo, 1),
|
||||
new ComparableStack(ModItems.fragment_meteorite, 64),
|
||||
new ComparableStack(ModItems.fragment_meteorite, 64),
|
||||
new ComparableStack(ModItems.fragment_meteorite, 64),
|
||||
new ComparableStack(ModItems.fragment_meteorite, 64),
|
||||
new ComparableStack(ModItems.fragment_meteorite, 64),
|
||||
new ComparableStack(ModItems.fragment_meteorite, 64),
|
||||
new ComparableStack(ModItems.fragment_meteorite, 64),
|
||||
new ComparableStack(ModItems.fragment_meteorite, 64)));
|
||||
|
||||
this.register((PlasmaForgeRecipe) new PlasmaForgeRecipe("ass.fensusan").setInputEnergy(50_000_000).setup(1_200, 50_000_000).outputItems(new ItemStack(ModBlocks.machine_battery_redd, 1))
|
||||
.inputItems(new ComparableStack(ModItems.ingot_electronium, 64),
|
||||
new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_QUANTUM),
|
||||
new OreDictStack(OSMIRIDIUM.plateWelded(), 64),
|
||||
new OreDictStack(OSMIRIDIUM.plateWelded(), 64),
|
||||
new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 64),
|
||||
new OreDictStack(CMB.plateCast(), 32),
|
||||
new OreDictStack(MAGTUNG.wireDense(), 32),
|
||||
new ComparableStack(ModItems.plate_dineutronium, 64),
|
||||
new ComparableStack(ModItems.powder_magic, 64),
|
||||
new ComparableStack(ModItems.ingot_u238m2),
|
||||
new ComparableStack(ModItems.ingot_cft, 64),
|
||||
new ComparableStack(ModItems.ingot_cft, 64))
|
||||
.inputItemsEx(new ComparableStack(ModItems.ingot_electronium, 64),
|
||||
new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_QUANTUM),
|
||||
new ComparableStack(ModItems.item_expensive, 64, EnumExpensiveType.BRONZE_TUBES),
|
||||
new ComparableStack(ModItems.item_expensive, 64, EnumExpensiveType.FERRO_PLATING),
|
||||
new OreDictStack(OSMIRIDIUM.plateWelded(), 64),
|
||||
new OreDictStack(OSMIRIDIUM.plateWelded(), 64),
|
||||
new OreDictStack(OSMIRIDIUM.plateWelded(), 64),
|
||||
new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 64),
|
||||
new OreDictStack(CMB.plateCast(), 64),
|
||||
new ComparableStack(ModItems.ingot_u238m2),
|
||||
new ComparableStack(ModItems.ingot_cft, 64),
|
||||
new ComparableStack(ModItems.ingot_cft, 64)));
|
||||
|
||||
this.register((PlasmaForgeRecipe) new PlasmaForgeRecipe("plsm.gerald").setInputEnergy(25_000_000).setup(6_000, 50_000_000).outputItems(new ItemStack(ModItems.sat_gerald, 1))
|
||||
.inputItems(new OreDictStack(SBD.plateCast(), 64),
|
||||
new OreDictStack(SBD.plateCast(), 64),
|
||||
new OreDictStack(BSCCO.wireDense(), 64),
|
||||
new OreDictStack(BSCCO.wireDense(), 64),
|
||||
new ComparableStack(ModBlocks.det_nuke, 64),
|
||||
new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE),
|
||||
new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE),
|
||||
new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE),
|
||||
new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE),
|
||||
new ComparableStack(ModItems.circuit, 64, EnumCircuitType.CONTROLLER_QUANTUM),
|
||||
new ComparableStack(ModItems.coin_ufo, 1))
|
||||
.inputItemsEx(new OreDictStack(SBD.plateCast(), 64),
|
||||
new OreDictStack(BSCCO.wireDense(), 64),
|
||||
new ComparableStack(ModBlocks.det_nuke, 64),
|
||||
new ComparableStack(ModItems.item_expensive, 64, EnumExpensiveType.BRONZE_TUBES),
|
||||
new ComparableStack(ModItems.item_expensive, 64, EnumExpensiveType.BRONZE_TUBES),
|
||||
new ComparableStack(ModItems.item_expensive, 64, EnumExpensiveType.BRONZE_TUBES),
|
||||
new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE),
|
||||
new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE),
|
||||
new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE),
|
||||
new ComparableStack(ModItems.circuit, 64, EnumCircuitType.CONTROLLER_QUANTUM),
|
||||
new ComparableStack(ModItems.item_expensive, 64, EnumExpensiveType.COMPUTER),
|
||||
new ComparableStack(ModItems.coin_ufo, 1)).setPools(PlasmaForgeRecipes.POOL_PREFIX_DISCOVER + "gerald"));
|
||||
|
||||
// really, really boring fucking temp recipes
|
||||
this.register((PlasmaForgeRecipe) new PlasmaForgeRecipe("plsm.dfccore").setInputEnergy(50_000_000).setup(1_200, 100_000_000).outputItems(new ItemStack(ModBlocks.dfc_core)).inputFluids(new FluidStack(Fluids.STELLAR_FLUX, 12_000))
|
||||
.inputItems(new OreDictStack(OSMIRIDIUM.plateWelded(), 16), new OreDictStack(DNT.wireDense(), 16), new ComparableStack(ModItems.circuit, 12, EnumCircuitType.CONTROLLER_QUANTUM), new ComparableStack(ModItems.singularity_spark), new ComparableStack(ModItems.powder_chlorophyte, 64)));
|
||||
this.register((PlasmaForgeRecipe) new PlasmaForgeRecipe("plsm.dfcemitter").setInputEnergy(50_000_000).setup(600, 10_000_000).outputItems(new ItemStack(ModBlocks.dfc_emitter)).inputFluids(new FluidStack(Fluids.STELLAR_FLUX, 4_000))
|
||||
.inputItems(new OreDictStack(OSMIRIDIUM.plateWelded(), 16), new OreDictStack(STAR.wireDense(), 16), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CONTROLLER_QUANTUM)));
|
||||
this.register((PlasmaForgeRecipe) new PlasmaForgeRecipe("plsm.dfcreceiver").setInputEnergy(50_000_000).setup(600, 10_000_000).outputItems(new ItemStack(ModBlocks.dfc_receiver)).inputFluids(new FluidStack(Fluids.STELLAR_FLUX, 4_000))
|
||||
.inputItems(new OreDictStack(OSMIRIDIUM.plateWelded(), 16), new OreDictStack(STAR.plateCast(), 16), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CONTROLLER_QUANTUM)));
|
||||
this.register((PlasmaForgeRecipe) new PlasmaForgeRecipe("plsm.dfcinjector").setInputEnergy(50_000_000).setup(600, 10_000_000).outputItems(new ItemStack(ModBlocks.dfc_injector)).inputFluids(new FluidStack(Fluids.STELLAR_FLUX, 4_000))
|
||||
.inputItems(new OreDictStack(OSMIRIDIUM.plateWelded(), 16), new OreDictStack(BIGMT.plateCast(), 16), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CONTROLLER_ADVANCED)));
|
||||
this.register((PlasmaForgeRecipe) new PlasmaForgeRecipe("plsm.dfcstabilizer").setInputEnergy(50_000_000).setup(600, 10_000_000).outputItems(new ItemStack(ModBlocks.dfc_stabilizer)).inputFluids(new FluidStack(Fluids.STELLAR_FLUX, 4_000))
|
||||
.inputItems(new OreDictStack(OSMIRIDIUM.plateWelded(), 16), new OreDictStack(SBD.wireDense(), 16), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CONTROLLER_QUANTUM)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readExtraData(JsonElement element, PlasmaForgeRecipe recipe) {
|
||||
JsonObject obj = (JsonObject) element;
|
||||
recipe.ignitionTemp = obj.get("ignitionTemp").getAsLong();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeExtraData(PlasmaForgeRecipe recipe, JsonWriter writer) throws IOException {
|
||||
writer.name("ignitionTemp").value(recipe.ignitionTemp);
|
||||
}
|
||||
|
||||
public static HashMap getRecipes() {
|
||||
HashMap<Object, Object> recipes = new HashMap<Object, Object>();
|
||||
|
||||
for(GenericRecipe recipe : INSTANCE.recipeOrderedList) {
|
||||
List input = new ArrayList();
|
||||
if(recipe.inputItem != null) for(AStack stack : recipe.inputItem) input.add(stack);
|
||||
if(recipe.inputFluid != null) for(FluidStack stack : recipe.inputFluid) input.add(ItemFluidIcon.make(stack));
|
||||
List output = new ArrayList();
|
||||
if(recipe.outputItem != null) for(IOutput stack : recipe.outputItem) output.add(stack.getAllPossibilities());
|
||||
recipes.put(input.toArray(), output.toArray());
|
||||
}
|
||||
|
||||
return recipes;
|
||||
}
|
||||
}
|
||||
@ -274,20 +274,18 @@ public class SILEXRecipes {
|
||||
// MOX //
|
||||
recipes.put(new ComparableStack(ModItems.rbmk_pellet_mox, 1, i), new SILEXRecipe(600, 100, 1)
|
||||
.addOut(new ItemStack(ModItems.nugget_mox_fuel), 84 - i * 20)
|
||||
.addOut(i < 1 ? new ItemStack(ModItems.nugget_pu239) : new ItemStack(ModItems.nugget_pu_mix), 6 + i * 4)
|
||||
.addOut(new ItemStack(ModItems.nugget_pu_mix), 6 + i * 4)
|
||||
.addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), 2 + 3 * i)
|
||||
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 3 + 5 * i)
|
||||
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), 3 + 5 * i)
|
||||
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM240.ordinal()), 2 + 3 * i) );
|
||||
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), 5 + 8 * i) );
|
||||
|
||||
//TODO: Readd xenon processing if/when the NEI handler can display more than 6 outputs properly
|
||||
recipes.put(new ComparableStack(ModItems.rbmk_pellet_mox, 1, i + 5), new SILEXRecipe(600, 100, 1) //Plutonium processing isn't possible w/o fucking up the NEI handler or removing xenon
|
||||
.addOut(new ItemStack(ModItems.nugget_mox_fuel), 84 - i * 20) //To prevent people from taking advantage of differing waste types, conform to the latter
|
||||
.addOut(i < 1 ? new ItemStack(ModItems.nugget_pu239) : new ItemStack(ModItems.nugget_pu_mix), 6 + i * 4)
|
||||
recipes.put(new ComparableStack(ModItems.rbmk_pellet_mox, 1, i + 5), new SILEXRecipe(600, 100, 1)
|
||||
.addOut(new ItemStack(ModItems.powder_xe135_tiny), 1)
|
||||
.addOut(new ItemStack(ModItems.nugget_mox_fuel), 83 - i * 20)
|
||||
.addOut(new ItemStack(ModItems.nugget_pu_mix), 6 + i * 4)
|
||||
.addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), 2 + 3 * i)
|
||||
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 3 + 5 * i)
|
||||
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), 3 + 5 * i)
|
||||
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM240.ordinal()), 2 + 3 * i) );
|
||||
.addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), 5 + 8 * i) );
|
||||
|
||||
// LEAUS //
|
||||
recipes.put(new ComparableStack(ModItems.rbmk_pellet_leaus, 1, i), new SILEXRecipe(600, 100, 2)
|
||||
|
||||
@ -166,7 +166,9 @@ public class AnvilRecipes extends SerializableRecipe {
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(EMERALD.dust()), new AnvilOutput(new ItemStack(Items.emerald))).setTier(3));
|
||||
|
||||
registerConstructionRecipes();
|
||||
registerConstructionStamps();
|
||||
registerConstructionAmmo();
|
||||
registerConstructionSirens();
|
||||
registerConstructionUpgrades();
|
||||
registerConstructionRecycling();
|
||||
}
|
||||
@ -578,6 +580,34 @@ public class AnvilRecipes extends SerializableRecipe {
|
||||
}
|
||||
}
|
||||
|
||||
public static void registerConstructionStamps() {
|
||||
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_stone_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_stone_plate))).setTier(1));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_stone_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_stone_wire))).setTier(1));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_stone_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_stone_circuit))).setTier(1));
|
||||
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_iron_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_iron_plate))).setTier(1));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_iron_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_iron_wire))).setTier(1));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_iron_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_iron_circuit))).setTier(1));
|
||||
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_steel_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_steel_plate))).setTier(2));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_steel_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_steel_wire))).setTier(2));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_steel_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_steel_circuit))).setTier(2));
|
||||
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_titanium_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_titanium_plate))).setTier(2));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_titanium_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_titanium_wire))).setTier(2));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_titanium_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_titanium_circuit))).setTier(2));
|
||||
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_obsidian_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_obsidian_plate))).setTier(2));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_obsidian_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_obsidian_wire))).setTier(2));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_obsidian_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_obsidian_circuit))).setTier(2));
|
||||
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_desh_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_desh_plate))).setTier(3));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_desh_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_desh_wire))).setTier(3));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.stamp_desh_flat, 1),new AnvilOutput(new ItemStack(ModItems.stamp_desh_circuit))).setTier(3));
|
||||
|
||||
}
|
||||
|
||||
public static void registerConstructionAmmo() {
|
||||
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.stamp_iron_flat), new OreDictStack(GUNMETAL.ingot(), 2)}, new AnvilOutput(new ItemStack(ModItems.stamp_9))).setTier(2));
|
||||
@ -597,6 +627,14 @@ public class AnvilRecipes extends SerializableRecipe {
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 28))).setTier(2));
|
||||
}
|
||||
|
||||
public static void registerConstructionSirens() {
|
||||
for(int i = 1; i < 21; i++) {
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new AStack[] {new OreDictStack(STEEL.plate()), new ComparableStack(ModItems.plate_polymer)}, new AnvilOutput(new ItemStack(ModItems.siren_track, 1, i))).setTier(2).setOverlay(OverlayType.CONSTRUCTION));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public static void registerConstructionUpgrades() { }
|
||||
|
||||
public static void registerConstructionRecycling() {
|
||||
|
||||
@ -74,17 +74,20 @@ public class GenericRecipe {
|
||||
public GenericRecipe setPools528(String... pools) { if(GeneralConfig.enable528) { this.blueprintPools = pools; for(String pool : pools) GenericRecipes.addToPool(pool, this); } return this; }
|
||||
public GenericRecipe setGroup(String autoSwitch, GenericRecipes set) { this.autoSwitchGroup = autoSwitch; set.addToGroup(autoSwitch, this); return this; }
|
||||
|
||||
public GenericRecipe inputItems(AStack... input) { this.inputItem = input; for(AStack stack : this.inputItem) if(exceedsStackLimit(stack)) throw new IllegalArgumentException("AStack in " + this.name + " exceeds stack limit!"); return this; }
|
||||
public GenericRecipe inputItemsEx(AStack... input) { if(!GeneralConfig.enableExpensiveMode) return this; this.inputItem = input; for(AStack stack : this.inputItem) if(exceedsStackLimit(stack)) throw new IllegalArgumentException("AStack in " + this.name + " exceeds stack limit!"); return this; }
|
||||
public GenericRecipe inputItems(AStack... input) { this.inputItem = input; for(AStack stack : this.inputItem) checkStackLimit(stack); return this; }
|
||||
public GenericRecipe inputItemsEx(AStack... input) { if(!GeneralConfig.enableExpensiveMode) return this; this.inputItem = input; for(AStack stack : this.inputItem) checkStackLimit(stack); return this; }
|
||||
public GenericRecipe inputFluids(FluidStack... input) { this.inputFluid = input; return this; }
|
||||
public GenericRecipe inputFluidsEx(FluidStack... input) { if(!GeneralConfig.enableExpensiveMode) return this; this.inputFluid = input; return this; }
|
||||
public GenericRecipe outputItems(IOutput... output) { this.outputItem = output; return this; }
|
||||
public GenericRecipe outputFluids(FluidStack... output) { this.outputFluid = output; return this; }
|
||||
|
||||
private boolean exceedsStackLimit(AStack stack) {
|
||||
if(stack instanceof ComparableStack && stack.stacksize > ((ComparableStack) stack).item.getItemStackLimit(((ComparableStack) stack).toStack())) return true;
|
||||
if(stack.stacksize > 64) return true;
|
||||
return false;
|
||||
private void checkStackLimit(AStack stack) {
|
||||
int max = 64;
|
||||
if(stack instanceof ComparableStack) {
|
||||
ComparableStack comp = (ComparableStack) stack;
|
||||
max = comp.item.getItemStackLimit(comp.toStack());
|
||||
}
|
||||
if(stack.stacksize > max) throw new IllegalArgumentException("AStack " + stack + " in " + this.name + " exceeds stack limit of " + max + "!");
|
||||
}
|
||||
|
||||
public GenericRecipe outputItems(ItemStack... output) {
|
||||
|
||||
@ -94,6 +94,7 @@ public abstract class SerializableRecipe {
|
||||
recipeHandlers.add(PUREXRecipes.INSTANCE);
|
||||
recipeHandlers.add(FusionRecipes.INSTANCE);
|
||||
recipeHandlers.add(PrecAssRecipes.INSTANCE);
|
||||
recipeHandlers.add(PlasmaForgeRecipes.INSTANCE);
|
||||
|
||||
recipeHandlers.add(new MatDistribution());
|
||||
recipeHandlers.add(new CustomMachineRecipes());
|
||||
|
||||
@ -2061,7 +2061,6 @@ public class ModItems {
|
||||
public static Item hazmat_grey_kit;
|
||||
public static Item kit_custom;
|
||||
|
||||
public static Item legacy_toolbox;
|
||||
public static Item toolbox;
|
||||
|
||||
public static Item loot_10;
|
||||
@ -3956,9 +3955,8 @@ public class ModItems {
|
||||
hazmat_kit = new ItemStarterKit().setUnlocalizedName("hazmat_kit").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":hazmat_kit");
|
||||
hazmat_red_kit = new ItemStarterKit().setUnlocalizedName("hazmat_red_kit").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":hazmat_red_kit");
|
||||
hazmat_grey_kit = new ItemStarterKit().setUnlocalizedName("hazmat_grey_kit").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":hazmat_grey_kit");
|
||||
kit_custom = new ItemKitCustom().setUnlocalizedName("kit_custom").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":kit");
|
||||
kit_custom = new ItemKitCustom().setUnlocalizedName("kit_custom").setCreativeTab(null).setTextureName(RefStrings.MODID + ":kit");
|
||||
toolbox = new ItemToolBox().setUnlocalizedName("toolbox").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":kit_toolbox");
|
||||
legacy_toolbox = new ItemKitNBT().setUnlocalizedName("toolbox_legacy").setContainerItem(toolbox).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":kit_toolbox");
|
||||
|
||||
loot_10 = new ItemLootCrate().setUnlocalizedName("loot_10").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":loot_10");
|
||||
loot_15 = new ItemLootCrate().setUnlocalizedName("loot_15").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":loot_15");
|
||||
@ -6671,7 +6669,6 @@ public class ModItems {
|
||||
GameRegistry.registerItem(hazmat_grey_kit, hazmat_grey_kit.getUnlocalizedName());
|
||||
GameRegistry.registerItem(kit_custom, kit_custom.getUnlocalizedName());
|
||||
GameRegistry.registerItem(euphemium_kit, euphemium_kit.getUnlocalizedName());
|
||||
GameRegistry.registerItem(legacy_toolbox, legacy_toolbox.getUnlocalizedName());
|
||||
GameRegistry.registerItem(toolbox, toolbox.getUnlocalizedName());
|
||||
|
||||
//Misile Loot Boxes
|
||||
|
||||
@ -2,9 +2,6 @@ package com.hbm.items.machine;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.util.i18n.I18nUtil;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
@ -12,7 +9,6 @@ import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
@ -97,36 +93,27 @@ public class ItemCassette extends Item {
|
||||
SOUND;
|
||||
};
|
||||
|
||||
public ItemCassette()
|
||||
{
|
||||
this.setHasSubtypes(true);
|
||||
this.setMaxDamage(0);
|
||||
}
|
||||
public ItemCassette() {
|
||||
this.setHasSubtypes(true);
|
||||
this.setMaxDamage(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void getSubItems(Item item, CreativeTabs tabs, List list)
|
||||
{
|
||||
for (int i = 1; i < TrackType.values().length; ++i)
|
||||
{
|
||||
list.add(new ItemStack(item, 1, i));
|
||||
}
|
||||
}
|
||||
public void getSubItems(Item item, CreativeTabs tabs, List list) {
|
||||
for(int i = 1; i < TrackType.values().length; ++i) {
|
||||
list.add(new ItemStack(item, 1, i));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool)
|
||||
{
|
||||
|
||||
if(!(stack.getItem() instanceof ItemCassette))
|
||||
return;
|
||||
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) {
|
||||
if(!(stack.getItem() instanceof ItemCassette)) return;
|
||||
|
||||
list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("info.templatefolder", I18nUtil.resolveKey(ModItems.template_folder.getUnlocalizedName() + ".name")));
|
||||
list.add("");
|
||||
|
||||
list.add("Siren sound cassette:");
|
||||
list.add(" Name: " + TrackType.getEnum(stack.getItemDamage()).getTrackTitle());
|
||||
list.add(" Type: " + TrackType.getEnum(stack.getItemDamage()).getType().name());
|
||||
list.add(" Volume: " + TrackType.getEnum(stack.getItemDamage()).getVolume());
|
||||
list.add("Siren sound cassette:");
|
||||
list.add(" Name: " + TrackType.getEnum(stack.getItemDamage()).getTrackTitle());
|
||||
list.add(" Type: " + TrackType.getEnum(stack.getItemDamage()).getType().name());
|
||||
list.add(" Volume: " + TrackType.getEnum(stack.getItemDamage()).getVolume());
|
||||
}
|
||||
|
||||
public static TrackType getType(ItemStack stack) {
|
||||
@ -136,47 +123,31 @@ public class ItemCassette extends Item {
|
||||
return TrackType.NULL;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public boolean requiresMultipleRenderPasses()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
public boolean requiresMultipleRenderPasses() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerIcons(IIconRegister p_94581_1_)
|
||||
{
|
||||
super.registerIcons(p_94581_1_);
|
||||
public void registerIcons(IIconRegister p_94581_1_) {
|
||||
super.registerIcons(p_94581_1_);
|
||||
this.overlayIcon = p_94581_1_.registerIcon("hbm:cassette_overlay");
|
||||
}
|
||||
|
||||
this.overlayIcon = p_94581_1_.registerIcon("hbm:cassette_overlay");
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public IIcon getIconFromDamageForRenderPass(int p_77618_1_, int p_77618_2_)
|
||||
{
|
||||
return p_77618_2_ == 1 ? this.overlayIcon : super.getIconFromDamageForRenderPass(p_77618_1_, p_77618_2_);
|
||||
}
|
||||
public IIcon getIconFromDamageForRenderPass(int meta, int pass) {
|
||||
return pass == 1 ? this.overlayIcon : super.getIconFromDamageForRenderPass(meta, pass);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public int getColorFromItemStack(ItemStack stack, int p_82790_2_)
|
||||
{
|
||||
if (p_82790_2_ == 0)
|
||||
{
|
||||
return 16777215;
|
||||
}
|
||||
else
|
||||
{
|
||||
int j = TrackType.getEnum(stack.getItemDamage()).getColor();
|
||||
|
||||
if (j < 0)
|
||||
{
|
||||
j = 16777215;
|
||||
}
|
||||
|
||||
return j;
|
||||
}
|
||||
}
|
||||
public int getColorFromItemStack(ItemStack stack, int pass) {
|
||||
if(pass == 0) return 16777215;
|
||||
int j = TrackType.getEnum(stack.getItemDamage()).getColor();
|
||||
if(j < 0) j = 16777215;
|
||||
return j;
|
||||
}
|
||||
}
|
||||
|
||||
@ -54,7 +54,9 @@ public class ItemRBMKLid extends Item {
|
||||
world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, ModBlocks.concrete_smooth.stepSound.func_150496_b(), (ModBlocks.concrete_smooth.stepSound.getVolume() + 1.0F) / 2.0F, ModBlocks.concrete_smooth.stepSound.getPitch() * 0.8F);
|
||||
}
|
||||
|
||||
tile.explodeOnBroken = false;
|
||||
world.setBlockMetadataWithNotify(pos[0], pos[1], pos[2], meta + RBMKBase.offset, 3);
|
||||
tile.explodeOnBroken = true;
|
||||
stack.stackSize--;
|
||||
|
||||
return true;
|
||||
|
||||
@ -4,7 +4,6 @@ import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
@ -34,11 +33,7 @@ public class ItemStamp extends Item {
|
||||
stamps.put(type, list);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) {
|
||||
if(this.type == StampType.PLATE || this.type == StampType.WIRE || this.type == StampType.CIRCUIT)
|
||||
list.add("[CREATED USING TEMPLATE FOLDER]");
|
||||
}
|
||||
|
||||
|
||||
/** Params can't take an ItemStack, for some reason it crashes during init */
|
||||
public StampType getStampType(Item item, int meta) {
|
||||
|
||||
@ -130,7 +130,7 @@ public class ItemBedrockOreNew extends Item {
|
||||
public static enum BedrockOreType {
|
||||
// primary sulfuric solvent radsolvent
|
||||
LIGHT_METAL( 0xFFFFFF, 0x353535, "light", o(MAT_IRON, 9), o(MAT_COPPER, 9), o(MAT_TITANIUM, 6), o(MAT_BAUXITE, 9), o(MAT_CRYOLITE, 3), o(MAT_CHLOROCALCITE, 5), o(MAT_LITHIUM, 5), o(MAT_SODIUM, 3), o(MAT_CHLOROCALCITE, 6), o(MAT_LITHIUM, 6), o(MAT_SODIUM, 6)),
|
||||
HEAVY_METAL( 0x868686, 0x000000, "heavy", o(MAT_TUNGSTEN, 9), o(MAT_LEAD, 9), o(MAT_GOLD, 2), o(MAT_GOLD, 2), o(MAT_BERYLLIUM, 3), o(MAT_TUNGSTEN, 9), o(MAT_LEAD, 9), o(MAT_GOLD, 5), o(MAT_BISMUTH, 1), o(MAT_TANTALIUM, 1), o(MAT_GOLD, 6)),
|
||||
HEAVY_METAL( 0x868686, 0x000000, "heavy", o(MAT_TUNGSTEN, 9), o(MAT_LEAD, 9), o(MAT_GOLD, 2), o(MAT_GOLD, 2), o(MAT_BERYLLIUM, 3), o(MAT_TUNGSTEN, 9), o(MAT_LEAD, 9), o(MAT_GOLD, 5), o(MAT_BISMUTH, 2), o(MAT_TANTALIUM, 2), o(MAT_GOLD, 6)),
|
||||
RARE_EARTH( 0xE6E6B6, 0x1C1C00, "rare", o(MAT_COBALT, 5), o(MAT_RAREEARTH, 5),o(MAT_BORON, 5), o(MAT_LANTHANIUM, 3), o(MAT_NIOBIUM, 4), o(MAT_NEODYMIUM, 3), o(MAT_STRONTIUM, 3), o(MAT_ZIRCONIUM, 3), o(MAT_NIOBIUM, 5), o(MAT_NEODYMIUM, 5), o(MAT_STRONTIUM, 3)),
|
||||
ACTINIDE( 0xC1C7BD, 0x2B3227, "actinide", o(MAT_URANIUM, 4), o(MAT_THORIUM, 4), o(MAT_RADIUM, 2), o(MAT_RADIUM, 2), o(MAT_POLONIUM, 2), o(MAT_RADIUM, 2), o(MAT_RADIUM, 2), o(MAT_POLONIUM, 2), o(MAT_TECHNETIUM, 1), o(MAT_TECHNETIUM, 1), o(MAT_U238, 1)),
|
||||
NON_METAL( 0xAFAFAF, 0x0F0F0F, "nonmetal", o(MAT_COAL, 9), o(MAT_SULFUR, 9), o(MAT_LIGNITE, 9), o(MAT_KNO, 6), o(MAT_FLUORITE, 6), o(MAT_PHOSPHORUS, 5), o(MAT_FLUORITE, 6), o(MAT_SULFUR, 6), o(MAT_CHLOROCALCITE, 6), o(MAT_SILICON, 2), o(MAT_SILICON, 2)),
|
||||
|
||||
@ -68,7 +68,7 @@ public class ItemKitNBT extends Item {
|
||||
}
|
||||
|
||||
public static ItemStack create(ItemStack... contents) {
|
||||
ItemStack stack = new ItemStack(ModItems.legacy_toolbox);
|
||||
ItemStack stack = new ItemStack(ModItems.kit_custom);
|
||||
stack.stackTagCompound = new NBTTagCompound();
|
||||
ItemStackUtil.addStacksToNBT(stack, contents);
|
||||
|
||||
|
||||
@ -36,6 +36,7 @@ import com.hbm.util.DamageResistanceHandler.DamageClass;
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
@ -128,9 +129,11 @@ public class XFactoryFolly {
|
||||
};
|
||||
|
||||
public static BiFunction<ItemStack, LambdaContext, Boolean> LAMBDA_CAN_FIRE = (stack, ctx) -> {
|
||||
if(!ItemGunBaseNT.getIsAiming(stack)) return false;
|
||||
if(ItemGunBaseNT.getLastAnim(stack, ctx.configIndex) != GunAnimation.SPINUP) return false;
|
||||
if(ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex) < 100) return false;
|
||||
if(ctx.entity instanceof EntityPlayer) {
|
||||
if(!ItemGunBaseNT.getIsAiming(stack)) return false;
|
||||
if(ItemGunBaseNT.getLastAnim(stack, ctx.configIndex) != GunAnimation.SPINUP) return false;
|
||||
if(ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex) < 100) return false;
|
||||
}
|
||||
return ctx.config.getReceivers(stack)[0].getMagazine(stack).getAmount(stack, ctx.inventory) > 0;
|
||||
};
|
||||
|
||||
|
||||
@ -247,18 +247,6 @@ public class HbmWorldGen implements IWorldGenerator {
|
||||
new LibraryDungeon().generate(world, rand, x, y, z);
|
||||
}
|
||||
|
||||
if(biome.temperature == 0.5F || biome.temperature == 2.0F) {
|
||||
if(WorldConfig.relayStructure > 0 && rand.nextInt(WorldConfig.relayStructure) == 0) {
|
||||
for(int a = 0; a < 1; a++) {
|
||||
int x = i + rand.nextInt(16);
|
||||
int z = j + rand.nextInt(16);
|
||||
int y = world.getHeightValue(x, z);
|
||||
|
||||
new Relay().generate(world, rand, x, y, z);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(WorldConfig.dudStructure > 0 && rand.nextInt(WorldConfig.dudStructure) == 0) {
|
||||
int x = i + 8 + rand.nextInt(16);
|
||||
int z = j + 8 + rand.nextInt(16);
|
||||
@ -398,11 +386,14 @@ public class HbmWorldGen implements IWorldGenerator {
|
||||
int x = i + rand.nextInt(16);
|
||||
int z = j + rand.nextInt(16);
|
||||
int y = world.getHeightValue(x, z);
|
||||
|
||||
if(world.getBlock(x, y, z) == Blocks.stone)
|
||||
world.setBlock(x, y, z, ModBlocks.geysir_vapor);
|
||||
else if(world.getBlock(x, y - 1, z) == Blocks.stone)
|
||||
world.setBlock(x, y - 1, z, ModBlocks.geysir_vapor);
|
||||
|
||||
for(int k = 1; k >= -1; k--) {
|
||||
if(world.getBlock(x, y + k, z) == Blocks.stone) {
|
||||
world.setBlock(x, y + k, z, ModBlocks.geysir_vapor);
|
||||
MainRegistry.logger.info("[Debug] Successfully spawned vapor geyser at " + x + " " + z);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (rand.nextInt(1000) == 0) {
|
||||
|
||||
@ -3,7 +3,7 @@ package com.hbm.lib;
|
||||
public class RefStrings {
|
||||
public static final String MODID = "hbm";
|
||||
public static final String NAME = "Hbm's Nuclear Tech Mod";
|
||||
public static final String VERSION = "1.0.27 BETA (5628)";
|
||||
public static final String VERSION = "1.0.27 BETA (5634)";
|
||||
//HBM's Beta Naming Convention:
|
||||
//V T (X)
|
||||
//V -> next release version
|
||||
|
||||
@ -411,6 +411,8 @@ public class ClientProxy extends ServerProxy {
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCraneConsole.class, new RenderCraneConsole());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKConsole.class, new RenderRBMKConsole());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKDisplay.class, new RenderRBMKDisplay());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKKeyPad.class, new RenderRBMKKeyPad());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKGauge.class, new RenderRBMKGauge());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKRod.class, new RenderRBMKFuelChannel());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKRodReaSim.class, new RenderRBMKFuelChannel());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKAutoloader.class, new RenderRBMKAutoloader());
|
||||
@ -429,6 +431,7 @@ public class ClientProxy extends ServerProxy {
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFusionBoiler.class, new RenderFusionBoiler());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFusionMHDT.class, new RenderFusionMHDT());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFusionCoupler.class, new RenderFusionCoupler());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFusionPlasmaForge.class, new RenderFusionPlasmaForge());
|
||||
//Watz
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWatz.class, new RenderWatz());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWatzPump.class, new RenderWatzPump());
|
||||
@ -485,6 +488,7 @@ public class ClientProxy extends ServerProxy {
|
||||
double[] tir = new double[] {0, 0, 0};
|
||||
double[] sir = new double[] {1, 1, 1};
|
||||
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.steel_sword, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp, sfp, rir, tir, sir));
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.titanium_sword, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp, sfp, rir, tir, sir));
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.alloy_sword, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp, sfp, rir, tir, sir));
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.desh_sword, new ItemRenderTransformer(rtp, ttp_low, stp, rfp, tfp, sfp, rir, tir, sir));
|
||||
|
||||
@ -293,6 +293,8 @@ public class CraftingManager {
|
||||
|
||||
addRecipeAuto(new ItemStack(ModBlocks.machine_autocrafter, 1), new Object[] { "SCS", "MWM", "SCS", 'S', STEEL.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE), 'M', ModItems.motor, 'W', Blocks.crafting_table });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.machine_funnel, 1), new Object[] { "S S", "SRS", " S ", 'S', STEEL.ingot(), 'R', REDSTONE.dust() });
|
||||
addRecipeAuto(new ItemStack(Blocks.hopper, 1), new Object[] { "S S", "S S", " S ", 'S', STEEL.ingot() });
|
||||
addRecipeAuto(new ItemStack(Items.bucket, 1), new Object[] { "S S", " S ", 'S', STEEL.ingot() });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.machine_waste_drum, 1), new Object[] { "LRL", "BRB", "LRL", 'L', PB.ingot(), 'B', Blocks.iron_bars, 'R', ModItems.rod_quad_empty });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.machine_press, 1), new Object[] { "IRI", "IPI", "IBI", 'I', IRON.ingot(), 'R', Blocks.furnace, 'B', IRON.block(), 'P', Blocks.piston });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.machine_ammo_press, 1), new Object[] { "IPI", "C C", "SSS", 'I', IRON.ingot(), 'P', Blocks.piston, 'C', CU.ingot(), 'S', Blocks.stone });
|
||||
@ -723,11 +725,6 @@ public class CraftingManager {
|
||||
addShapelessAuto(new ItemStack(ModItems.ams_catalyst_euphemium, 1), new Object[] { ModItems.ams_catalyst_blank, ModItems.rune_dagaz, ModItems.rune_dagaz, ModItems.rune_thurisaz, ModItems.rune_thurisaz, EUPH.dust(), EUPH.dust(), EUPH.dust(), EUPH.dust() });
|
||||
addShapelessAuto(new ItemStack(ModItems.ams_catalyst_schrabidium, 1), new Object[] { ModItems.ams_catalyst_blank, ModItems.rune_dagaz, ModItems.rune_hagalaz, ModItems.rune_thurisaz, ModItems.rune_thurisaz, SA326.dust(), SA326.dust(), SA326.dust(), SA326.dust() });
|
||||
addShapelessAuto(new ItemStack(ModItems.ams_catalyst_dineutronium, 1), new Object[] { ModItems.ams_catalyst_blank, ModItems.rune_hagalaz, ModItems.rune_hagalaz, ModItems.rune_thurisaz, ModItems.rune_thurisaz, DNT.dust(), DNT.dust(), DNT.dust(), DNT.dust() });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.dfc_core, 1), new Object[] { "DLD", "LML", "DLD", 'D', ModItems.ingot_bismuth, 'L', DNT.block(), 'M', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BISMOID) });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.dfc_emitter, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateWelded(), 'D', ModItems.plate_desh, 'T', new ItemStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_QUANTUM.ordinal()), 'X', ModItems.crystal_xen, 'L', ModItems.sat_head_laser });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.dfc_receiver, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateWelded(), 'D', ModItems.plate_desh, 'T', new ItemStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_QUANTUM.ordinal()), 'X', ModBlocks.block_dineutronium, 'L', STEEL.shell() });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.dfc_injector, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateWelded(), 'D', CMB.plate(), 'T', ModBlocks.machine_fluidtank, 'X', ModItems.motor, 'L', STEEL.pipe() });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.dfc_stabilizer, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateWelded(), 'D', ModItems.plate_desh, 'T', ModItems.singularity_spark, 'X', ModBlocks.hadron_coil_alloy, 'L', ModItems.crystal_xen });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.barrel_plastic, 1), new Object[] { "IPI", "I I", "IPI", 'I', ModItems.plate_polymer, 'P', AL.plate() });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.barrel_steel, 1), new Object[] { "IPI", "I I", "IPI", 'I', STEEL.plate(), 'P', STEEL.ingot() });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.barrel_tcalloy, 1), new Object[] { "IPI", "I I", "IPI", 'I', "ingotTcAlloy", 'P', TI.plate() });
|
||||
@ -792,7 +789,8 @@ public class CraftingManager {
|
||||
addRecipeAuto(new ItemStack(ModBlocks.rbmk_steam_inlet, 1), new Object[] { "SCS", "CBC", "SCS", 'S', STEEL.ingot(), 'C', IRON.plate(), 'B', ModItems.tank_steel });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.rbmk_steam_outlet, 1), new Object[] { "SCS", "CBC", "SCS", 'S', STEEL.ingot(), 'C', CU.plate(), 'B', ModItems.tank_steel });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.rbmk_display, 1), new Object[] { "B", "C", "D", 'B', B.ingot(), 'D', ModBlocks.deco_rbmk, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE) });
|
||||
//addRecipeAuto(new ItemStack(ModBlocks.rbmk_heatex, 1), new Object[] { "SCS", "CBC", "SCS", 'S', STEEL.ingot(), 'C', CU.plate(), 'B', ModItems.pipes_steel });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.rbmk_key_pad, 1), new Object[] { "B", "C", "D", 'B', ModBlocks.radio_torch_sender, 'D', ModBlocks.deco_rbmk, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ANALOG) });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.rbmk_gauge, 1), new Object[] { "B", "C", "D", 'B', ModBlocks.radio_torch_receiver, 'D', ModBlocks.deco_rbmk, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE) });
|
||||
|
||||
addRecipeAuto(new ItemStack(ModBlocks.deco_rbmk, 8), new Object[] { "R", 'R', ModBlocks.rbmk_blank });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.deco_rbmk_smooth, 1), new Object[] { "R", 'R', ModBlocks.deco_rbmk });
|
||||
|
||||
@ -258,7 +258,6 @@ public class MainRegistry {
|
||||
polaroidID = rand.nextInt(18) + 1;
|
||||
}
|
||||
|
||||
ShadyUtil.test();
|
||||
loadConfig(PreEvent);
|
||||
HbmPotion.init();
|
||||
|
||||
@ -1516,6 +1515,7 @@ public class MainRegistry {
|
||||
ignoreMappings.add("hbm:item.tritium_deuterium_cake");
|
||||
ignoreMappings.add("hbm:item.redcoil_capacitor");
|
||||
ignoreMappings.add("hbm:item.euphemium_capacitor");
|
||||
ignoreMappings.add("hbm:item.toolbox_legacy");
|
||||
|
||||
/// REMAP ///
|
||||
remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses);
|
||||
@ -1523,7 +1523,6 @@ public class MainRegistry {
|
||||
remapItems.put("hbm:item.briquette_lignite", ModItems.briquette);
|
||||
remapItems.put("hbm:item.antiknock", ModItems.fuel_additive);
|
||||
remapItems.put("hbm:item.kit_toolbox_empty", ModItems.toolbox);
|
||||
remapItems.put("hbm:item.kit_toolbox", ModItems.legacy_toolbox);
|
||||
|
||||
for(MissingMapping mapping : event.get()) {
|
||||
|
||||
|
||||
@ -42,6 +42,7 @@ public class NEIRegistry {
|
||||
handlers.add(new CrystallizerRecipeHandler());
|
||||
handlers.add(new BookRecipeHandler());
|
||||
handlers.add(new FusionRecipeHandler());
|
||||
handlers.add(new PlasmaForgeRecipeHandler());
|
||||
handlers.add(new SILEXRecipeHandler());
|
||||
handlers.add(new FuelPoolHandler());
|
||||
handlers.add(new RBMKRodDisassemblyHandler());
|
||||
|
||||
@ -136,7 +136,7 @@ public class ResourceManager {
|
||||
public static final IModelCustom epress_head = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/epress_head.obj"));
|
||||
public static final IModelCustom conveyor_press = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/conveyor_press.obj"));
|
||||
public static final IModelCustom ammo_press = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/ammo_press.obj")).asVBO();
|
||||
|
||||
|
||||
//Annihilator
|
||||
public static final IModelCustom annihilator = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/annihilator.obj")).asVBO();
|
||||
|
||||
@ -249,6 +249,7 @@ public class ResourceManager {
|
||||
public static final IModelCustom fusion_boiler = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/fusion/boiler.obj")).asVBO();
|
||||
public static final IModelCustom fusion_mhdt = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/fusion/mhdt.obj")).asVBO();
|
||||
public static final IModelCustom fusion_coupler = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/fusion/coupler.obj")).asVBO();
|
||||
public static final IModelCustom fusion_plasma_forge = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/fusion/plasma_forge.obj")).asVBO();
|
||||
|
||||
//ICF
|
||||
public static final IModelCustom icf = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/reactors/icf.obj")).asVBO();
|
||||
@ -320,11 +321,13 @@ public class ResourceManager {
|
||||
//Doors
|
||||
public static AnimatedModel transition_seal = ColladaLoader.load(new ResourceLocation(RefStrings.MODID, "models/doors/seal.dae"), true);
|
||||
public static Animation transition_seal_anim = ColladaLoader.loadAnim(24040, new ResourceLocation(RefStrings.MODID, "models/doors/seal.dae"));
|
||||
|
||||
|
||||
//PheoDoors
|
||||
public static final ResourceLocation pheo_fire_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/fire_door.png");
|
||||
public static final ResourceLocation pheo_fire_door_black_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/fire_door_black.png");
|
||||
public static final ResourceLocation pheo_fire_door_orange_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/fire_door_orange.png");
|
||||
public static final ResourceLocation pheo_fire_door_yellow_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/fire_door_yellow.png");
|
||||
public static final ResourceLocation pheo_fire_door_trefoil_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/fire_door_trefoil.png");
|
||||
public static IModelCustomNamed pheo_fire_door = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/pheodoors/fire_door.obj")).asVBO();
|
||||
public static final ResourceLocation pheo_airlock_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/airlock_door.png");
|
||||
public static final ResourceLocation pheo_airlock_door_clean_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/airlock_door_clean.png");
|
||||
@ -334,11 +337,14 @@ public class ResourceManager {
|
||||
public static IModelCustomNamed pheo_blast_door = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/pheodoors/blast_door.obj")).asVBO();
|
||||
public static final ResourceLocation pheo_containment_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/containment_door.png");
|
||||
public static final ResourceLocation pheo_containment_door_trefoil_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/containment_door_trefoil.png");
|
||||
public static final ResourceLocation pheo_containment_door_trefoil_yellow_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/containment_door_trefoil_yellow.png");
|
||||
public static IModelCustomNamed pheo_containment_door = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/pheodoors/containment_door.obj")).asVBO();
|
||||
public static final ResourceLocation pheo_seal_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/seal_door.png");
|
||||
public static IModelCustomNamed pheo_seal_door = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/pheodoors/seal_door.obj")).asVBO();
|
||||
public static final ResourceLocation pheo_secure_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/secure_door.png");
|
||||
public static final ResourceLocation pheo_secure_door_grey_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/secure_door_grey.png");
|
||||
public static final ResourceLocation pheo_secure_door_black_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/secure_door_black.png");
|
||||
public static final ResourceLocation pheo_secure_door_yellow_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/secure_door_yellow.png");
|
||||
public static IModelCustomNamed pheo_secure_door = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/pheodoors/secure_door.obj")).asVBO();
|
||||
public static final ResourceLocation pheo_sliding_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/sliding_door.png");
|
||||
public static IModelCustomNamed pheo_sliding_door = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/pheodoors/sliding_door.obj")).asVBO();
|
||||
@ -573,7 +579,7 @@ public class ResourceManager {
|
||||
public static final ResourceLocation conveyor_press_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/conveyor_press.png");
|
||||
public static final ResourceLocation conveyor_press_belt_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/conveyor_press_belt.png");
|
||||
public static final ResourceLocation ammo_press_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/ammo_press.png");
|
||||
|
||||
|
||||
//Annihilator
|
||||
public static final ResourceLocation annihilator_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/annihilator.png");
|
||||
public static final ResourceLocation annihilator_belt_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/annihilator_belt.png");
|
||||
@ -718,6 +724,7 @@ public class ResourceManager {
|
||||
public static final ResourceLocation fusion_boiler_tex = new ResourceLocation(RefStrings.MODID, "textures/models/fusion/boiler.png");
|
||||
public static final ResourceLocation fusion_mhdt_tex = new ResourceLocation(RefStrings.MODID, "textures/models/fusion/mhdt.png");
|
||||
public static final ResourceLocation fusion_coupler_tex = new ResourceLocation(RefStrings.MODID, "textures/models/fusion/coupler.png");
|
||||
public static final ResourceLocation fusion_plasma_forge_tex = new ResourceLocation(RefStrings.MODID, "textures/models/fusion/plasma_forge.png");
|
||||
|
||||
//ICF
|
||||
public static final ResourceLocation icf_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/icf.png");
|
||||
@ -852,7 +859,7 @@ public class ResourceManager {
|
||||
public static final ResourceLocation substation_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/substation.png");
|
||||
public static final ResourceLocation wire_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/wire.png");
|
||||
public static final ResourceLocation wire_greyscale_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/wire_greyscale.png");
|
||||
|
||||
|
||||
//Pipes
|
||||
public static final ResourceLocation pipe_anchor_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/pipe_anchor.png");
|
||||
public static final ResourceLocation fluid_pump_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/fluid_diode.png");
|
||||
@ -1613,11 +1620,15 @@ public class ResourceManager {
|
||||
public static final HFRWavefrontObjectVBO rbmk_crane = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/crane.obj")).asVBO();
|
||||
public static final HFRWavefrontObjectVBO rbmk_autoloader = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/autoloader.obj")).asVBO();
|
||||
public static final HFRWavefrontObjectVBO rbmk_console = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/rbmk_console.obj")).asVBO();
|
||||
public static final HFRWavefrontObjectVBO rbmk_button = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/button.obj")).asVBO();
|
||||
public static final HFRWavefrontObjectVBO rbmk_gauge = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/gauge.obj")).asVBO();
|
||||
public static final HFRWavefrontObject rbmk_debris = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/debris.obj")).noSmooth();
|
||||
public static final ResourceLocation rbmk_crane_console_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/crane_console.png");
|
||||
public static final ResourceLocation rbmk_crane_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/rbmk_crane.png");
|
||||
public static final ResourceLocation rbmk_autoloader_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/rbmk_autoloader.png");
|
||||
public static final ResourceLocation rbmk_console_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/rbmk_control.png");
|
||||
public static final ResourceLocation rbmk_keypad_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/keypad.png");
|
||||
public static final ResourceLocation rbmk_gauge_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/gauge.png");
|
||||
public static final HFRWavefrontObject hev_battery = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/blocks/battery.obj")).noSmooth();
|
||||
public static final HFRWavefrontObject anvil = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/blocks/anvil.obj")).noSmooth();
|
||||
public static final HFRWavefrontObject crystal_power = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/blocks/crystals_power.obj")).noSmooth();
|
||||
|
||||
@ -0,0 +1,37 @@
|
||||
package com.hbm.module.machine;
|
||||
|
||||
import com.hbm.inventory.fluid.tank.FluidTank;
|
||||
import com.hbm.inventory.recipes.PlasmaForgeRecipes;
|
||||
import com.hbm.inventory.recipes.loader.GenericRecipe;
|
||||
import com.hbm.inventory.recipes.loader.GenericRecipes;
|
||||
import com.hbm.util.BobMathUtil;
|
||||
|
||||
import api.hbm.energymk2.IEnergyHandlerMK2;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ModuleMachinePlasma extends ModuleMachineBase {
|
||||
|
||||
public ModuleMachinePlasma(int index, IEnergyHandlerMK2 battery, ItemStack[] slots) {
|
||||
super(index, battery, slots);
|
||||
this.inputSlots = new int[12];
|
||||
this.outputSlots = new int[1];
|
||||
this.inputTanks = new FluidTank[1];
|
||||
this.outputTanks = new FluidTank[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public GenericRecipes getRecipeSet() {
|
||||
return PlasmaForgeRecipes.INSTANCE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setupTanks(GenericRecipe recipe) {
|
||||
super.setupTanks(recipe);
|
||||
if(recipe == null) return;
|
||||
for(int i = 0; i < inputTanks.length; i++) if(recipe.inputFluid != null && recipe.inputFluid.length > i) inputTanks[i].changeTankSize(BobMathUtil.max(inputTanks[i].getFill(), recipe.inputFluid[i].fill * 2, 16_000));
|
||||
}
|
||||
|
||||
public ModuleMachinePlasma itemInput(int from) { for(int i = 0; i < inputSlots.length; i++) inputSlots[i] = from + i; return this; }
|
||||
public ModuleMachinePlasma itemOutput(int a) { outputSlots[0] = a; return this; }
|
||||
public ModuleMachinePlasma fluidInput(FluidTank a) { inputTanks[0] = a; return this; }
|
||||
}
|
||||
@ -0,0 +1,186 @@
|
||||
package com.hbm.render.tileentity;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.item.ItemRenderBase;
|
||||
import com.hbm.tileentity.machine.fusion.TileEntityFusionPlasmaForge;
|
||||
import com.hbm.util.BobMathUtil;
|
||||
import com.hbm.util.Clock;
|
||||
|
||||
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.client.IItemRenderer;
|
||||
|
||||
public class RenderFusionPlasmaForge extends TileEntitySpecialRenderer implements IItemRendererProvider {
|
||||
|
||||
@Override
|
||||
public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) {
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(x + 0.5, y, z + 0.5);
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
|
||||
GL11.glRotatef(90, 0F, 1F, 0F);
|
||||
|
||||
switch(tile.getBlockMetadata() - BlockDummyable.offset) {
|
||||
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;
|
||||
}
|
||||
|
||||
TileEntityFusionPlasmaForge forge = (TileEntityFusionPlasmaForge) tile;
|
||||
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
bindTexture(ResourceManager.fusion_plasma_forge_tex);
|
||||
ResourceManager.fusion_plasma_forge.renderPart("Body");
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glRotated(20, 0, 1, 0);
|
||||
GL11.glPushMatrix();
|
||||
ResourceManager.fusion_plasma_forge.renderPart("SliderStriker");
|
||||
GL11.glTranslated(-2.75, 2.5, 0);
|
||||
GL11.glRotated(-20, 0, 0, 1);
|
||||
GL11.glTranslated(2.75, -2.5, 0);
|
||||
ResourceManager.fusion_plasma_forge.renderPart("ArmLowerStriker");
|
||||
GL11.glTranslated(-2.75, 3.75, 0);
|
||||
GL11.glRotated(30, 0, 0, 1);
|
||||
GL11.glTranslated(2.75, -3.75, 0);
|
||||
ResourceManager.fusion_plasma_forge.renderPart("ArmUpperStriker");
|
||||
GL11.glTranslated(-1.5, 3.75, 0);
|
||||
GL11.glRotated(20, 0, 0, 1);
|
||||
GL11.glTranslated(1.5, -3.75, 0);
|
||||
ResourceManager.fusion_plasma_forge.renderPart("StrikerMount");
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(0, 3.375, 0.5);
|
||||
GL11.glRotated(30, 1, 0, 0);
|
||||
GL11.glTranslated(0, -3.375, -0.5);
|
||||
ResourceManager.fusion_plasma_forge.renderPart("StrikerRight");
|
||||
GL11.glTranslated(0, -0.5, 0);
|
||||
ResourceManager.fusion_plasma_forge.renderPart("PistonRight");
|
||||
GL11.glPopMatrix();
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(0, 3.375, -0.5);
|
||||
GL11.glRotated(-30, 1, 0, 0);
|
||||
GL11.glTranslated(0, -3.375, 0.5);
|
||||
ResourceManager.fusion_plasma_forge.renderPart("StrikerLeft");
|
||||
GL11.glTranslated(0, -0.5, 0);
|
||||
ResourceManager.fusion_plasma_forge.renderPart("PistonLeft");
|
||||
GL11.glPopMatrix();
|
||||
GL11.glPopMatrix();
|
||||
|
||||
GL11.glPushMatrix();
|
||||
ResourceManager.fusion_plasma_forge.renderPart("SliderJet");
|
||||
GL11.glTranslated(2.75, 2.5, 0);
|
||||
GL11.glRotated(20, 0, 0, 1);
|
||||
GL11.glTranslated(-2.75, -2.5, 0);
|
||||
ResourceManager.fusion_plasma_forge.renderPart("ArmLowerJet");
|
||||
GL11.glTranslated(2.75, 3.75, 0);
|
||||
GL11.glRotated(-20, 0, 0, 1);
|
||||
GL11.glTranslated(-2.75, -3.75, 0);
|
||||
ResourceManager.fusion_plasma_forge.renderPart("ArmUpperJet");
|
||||
GL11.glTranslated(1.5, 3.75, 0);
|
||||
GL11.glRotated(-30, 0, 0, 1);
|
||||
GL11.glTranslated(-1.5, -3.75, 0);
|
||||
ResourceManager.fusion_plasma_forge.renderPart("Jet");
|
||||
GL11.glPopMatrix();
|
||||
GL11.glPopMatrix();
|
||||
|
||||
if(forge.plasmaEnergySync <= 0) {
|
||||
GL11.glColor3f(0F, 0F, 0F);
|
||||
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
||||
ResourceManager.fusion_plasma_forge.renderPart("Plasma");
|
||||
GL11.glEnable(GL11.GL_TEXTURE_2D);
|
||||
GL11.glColor3f(1F, 1F, 1F);
|
||||
} else {
|
||||
RenderArcFurnace.fullbright(true);
|
||||
long time = Clock.get_ms() + forge.timeOffset;
|
||||
float alpha = 0.5F + (float) (Math.sin(time / 500D) * 0.25F);
|
||||
double mainOsc = BobMathUtil.sps(time / 750D) % 1D;
|
||||
double glowOsc = Math.sin(time / 1000D) % 1D;
|
||||
double glowExtra = time / 10000D % 1D;
|
||||
|
||||
GL11.glColor3f(forge.plasmaRed * alpha, forge.plasmaGreen * alpha, forge.plasmaBlue * alpha);
|
||||
GL11.glMatrixMode(GL11.GL_TEXTURE);
|
||||
GL11.glLoadIdentity();
|
||||
bindTexture(ResourceManager.fusion_plasma_tex);
|
||||
GL11.glTranslated(0, mainOsc, 0);
|
||||
ResourceManager.fusion_plasma_forge.renderPart("Plasma");
|
||||
GL11.glMatrixMode(GL11.GL_TEXTURE);
|
||||
GL11.glLoadIdentity();
|
||||
GL11.glMatrixMode(GL11.GL_MODELVIEW);
|
||||
|
||||
GL11.glDisable(GL11.GL_ALPHA_TEST);
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE);
|
||||
GL11.glDepthMask(false);
|
||||
|
||||
GL11.glColor3f(forge.plasmaRed * 2, forge.plasmaGreen * 2, forge.plasmaBlue * 2);
|
||||
|
||||
GL11.glMatrixMode(GL11.GL_TEXTURE);
|
||||
GL11.glLoadIdentity();
|
||||
bindTexture(ResourceManager.fusion_plasma_glow_tex);
|
||||
GL11.glTranslated(0, glowOsc + glowExtra, 0);
|
||||
ResourceManager.fusion_plasma_forge.renderPart("Plasma");
|
||||
GL11.glMatrixMode(GL11.GL_TEXTURE);
|
||||
GL11.glLoadIdentity();
|
||||
GL11.glMatrixMode(GL11.GL_MODELVIEW);
|
||||
|
||||
glowOsc = Math.sin(time / 600D + 2) % 1D;
|
||||
glowExtra = time / 5000D % 1D;
|
||||
GL11.glMatrixMode(GL11.GL_TEXTURE);
|
||||
GL11.glLoadIdentity();
|
||||
bindTexture(ResourceManager.fusion_plasma_glow_tex);
|
||||
GL11.glTranslated(0, glowOsc + glowExtra, 0);
|
||||
ResourceManager.fusion_plasma_forge.renderPart("Plasma");
|
||||
GL11.glMatrixMode(GL11.GL_TEXTURE);
|
||||
GL11.glLoadIdentity();
|
||||
GL11.glMatrixMode(GL11.GL_MODELVIEW);
|
||||
|
||||
GL11.glEnable(GL11.GL_ALPHA_TEST);
|
||||
GL11.glDisable(GL11.GL_BLEND);
|
||||
GL11.glDepthMask(true);
|
||||
|
||||
RenderArcFurnace.fullbright(false);
|
||||
}
|
||||
GL11.glColor3f(1F, 1F, 1F);
|
||||
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getItemForRenderer() {
|
||||
return Item.getItemFromBlock(ModBlocks.fusion_plasma_forge);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemRenderer getRenderer() {
|
||||
return new ItemRenderBase() {
|
||||
public void renderInventory() {
|
||||
GL11.glTranslated(0, -1, 0);
|
||||
GL11.glScaled(2.75, 2.75, 2.75);
|
||||
GL11.glRotated(90, 0, 1, 0);
|
||||
}
|
||||
public void renderCommon() {
|
||||
GL11.glScaled(0.5, 0.5, 0.5);
|
||||
GL11.glRotatef(90, 0F, 1F, 0F);
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
bindTexture(ResourceManager.fusion_plasma_forge_tex);
|
||||
ResourceManager.fusion_plasma_forge.renderAllExcept("Plasma");
|
||||
|
||||
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
||||
GL11.glColor3f(0F, 0F, 0F);
|
||||
ResourceManager.fusion_plasma_forge.renderPart("Plasma");
|
||||
GL11.glColor3f(1F, 1F, 1F);
|
||||
GL11.glEnable(GL11.GL_TEXTURE_2D);
|
||||
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
}};
|
||||
}
|
||||
}
|
||||
@ -73,6 +73,8 @@ public class RenderRBMKConsole extends TileEntitySpecialRenderer {
|
||||
double color = 0.65D + (i % 2) * 0.05D;
|
||||
tess.setColorOpaque_F((float) (color + ((1 - color) * heat)), (float) color, (float) color);
|
||||
}
|
||||
|
||||
if(col.data.getByte("indicator") > 0) tess.setColorOpaque_F(1F, 1F, 0F);
|
||||
|
||||
drawColumn(tess, kx, ky, kz, 0, 0);
|
||||
|
||||
|
||||
@ -61,6 +61,8 @@ public class RenderRBMKDisplay extends TileEntitySpecialRenderer {
|
||||
tess.setColorOpaque_F((float) (color + ((1 - color) * heat)), (float) color, (float) color);
|
||||
}
|
||||
|
||||
if(col.data.getByte("indicator") > 0) tess.setColorOpaque_F(1F, 1F, 0F);
|
||||
|
||||
drawColumn(tess, kx, ky, kz);
|
||||
|
||||
switch(col.type) {
|
||||
|
||||
113
src/main/java/com/hbm/render/tileentity/RenderRBMKGauge.java
Normal file
113
src/main/java/com/hbm/render/tileentity/RenderRBMKGauge.java
Normal file
@ -0,0 +1,113 @@
|
||||
package com.hbm.render.tileentity;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKGauge;
|
||||
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKGauge.GaugeUnit;
|
||||
import com.hbm.util.BobMathUtil;
|
||||
import com.hbm.util.ColorUtil;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.FontRenderer;
|
||||
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.MathHelper;
|
||||
|
||||
public class RenderRBMKGauge extends TileEntitySpecialRenderer {
|
||||
|
||||
@Override
|
||||
public void renderTileEntityAt(TileEntity te, double x, double y, double z, float interp) {
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(x + 0.5, y, z + 0.5);
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
TileEntityRBMKGauge gauge = (TileEntityRBMKGauge) te;
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
GaugeUnit unit = gauge.gauges[i];
|
||||
if(!unit.active) continue;
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(0.25, (i / 2) * -0.5 + 0.25, (i % 2) * -0.5 + 0.25);
|
||||
|
||||
GL11.glColor3f(1F, 1F, 1F);
|
||||
this.bindTexture(ResourceManager.rbmk_gauge_tex);
|
||||
ResourceManager.rbmk_gauge.renderPart("Gauge");
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glColor3f(ColorUtil.fr(unit.color), ColorUtil.fg(unit.color), ColorUtil.fb(unit.color));
|
||||
|
||||
double value = unit.lastRenderValue + (unit.renderValue - unit.lastRenderValue) * interp;
|
||||
int lower = Math.min(unit.min, unit.max);
|
||||
int upper = Math.max(unit.min, unit.max);
|
||||
if(lower == upper) upper += 1;
|
||||
int range = upper - lower;
|
||||
double angle = (double) (value - lower) / (double) range * 50D;
|
||||
if(unit.min > unit.max) angle = 50 - angle;
|
||||
|
||||
angle = MathHelper.clamp_double(angle, 0, 80);
|
||||
|
||||
GL11.glTranslated(0, 0.4375, -0.125);
|
||||
GL11.glRotated(angle - 85, -1, 0, 0);
|
||||
GL11.glTranslated(0, -0.4375, 0.125);
|
||||
|
||||
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
||||
RenderArcFurnace.fullbright(true);
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
ResourceManager.rbmk_gauge.renderPart("Needle");
|
||||
RenderArcFurnace.fullbright(false);
|
||||
GL11.glEnable(GL11.GL_TEXTURE_2D);
|
||||
|
||||
GL11.glPopMatrix();
|
||||
|
||||
FontRenderer font = Minecraft.getMinecraft().fontRenderer;
|
||||
int height = font.FONT_HEIGHT;
|
||||
|
||||
double lineScale = 0.0025D;
|
||||
String lineLower = unit.min <= 10_000 ? unit.min + "" : BobMathUtil.getShortNumber(unit.min);
|
||||
String lineUpper = unit.max <= 10_000 ? unit.max + "" : BobMathUtil.getShortNumber(unit.max);
|
||||
|
||||
for(int j = 0; j < 2; j++) {
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(0, 0.4375, -0.125);
|
||||
GL11.glRotated(10 + j * 50, -1, 0, 0);
|
||||
GL11.glTranslated(0, -0.4375, 0.125);
|
||||
|
||||
GL11.glTranslated(0.032, 0.4375, 0.125);
|
||||
GL11.glScaled(lineScale, -lineScale, lineScale);
|
||||
GL11.glNormal3f(0.0F, 0.0F, -1.0F);
|
||||
GL11.glRotatef(90, 0, 1, 0);
|
||||
font.drawString(j == 0 ? lineLower : lineUpper, 0, -height / 2, 0x000000);
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
if(unit.label != null && !unit.label.isEmpty()) {
|
||||
|
||||
GL11.glTranslated(0.01, 0.3125, 0);
|
||||
int width = font.getStringWidth(unit.label);
|
||||
float f3 = Math.min(0.0125F, 0.4F / Math.max(width, 1));
|
||||
GL11.glScalef(f3, -f3, f3);
|
||||
GL11.glNormal3f(0.0F, 0.0F, -1.0F);
|
||||
GL11.glRotatef(90, 0, 1, 0);
|
||||
|
||||
RenderArcFurnace.fullbright(true);
|
||||
font.drawString(unit.label, - width / 2, - height / 2, 0x00ff00);
|
||||
RenderArcFurnace.fullbright(false);
|
||||
}
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,81 @@
|
||||
package com.hbm.render.tileentity;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKKeyPad;
|
||||
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKKeyPad.KeyUnit;
|
||||
import com.hbm.util.ColorUtil;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.FontRenderer;
|
||||
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
|
||||
public class RenderRBMKKeyPad extends TileEntitySpecialRenderer {
|
||||
|
||||
@Override
|
||||
public void renderTileEntityAt(TileEntity te, double x, double y, double z, float interp) {
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(x + 0.5, y, z + 0.5);
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
TileEntityRBMKKeyPad keypad = (TileEntityRBMKKeyPad) te;
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
KeyUnit key = keypad.keys[i];
|
||||
if(!key.active) continue;
|
||||
|
||||
boolean glow = key.isPressed;
|
||||
float mult = glow ? 1F : 0.65F;
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(0.25, (i / 2) * -0.5 + 0.25, (i % 2) * -0.5 + 0.25);
|
||||
|
||||
GL11.glColor3f(1F, 1F, 1F);
|
||||
this.bindTexture(ResourceManager.rbmk_keypad_tex);
|
||||
ResourceManager.rbmk_button.renderPart("Socket");
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(key.isPressed ? -0.03125 : 0, 0, 0);
|
||||
GL11.glColor3f(ColorUtil.fr(key.color) * mult, ColorUtil.fg(key.color) * mult, ColorUtil.fb(key.color) * mult);
|
||||
|
||||
if(glow) {
|
||||
RenderArcFurnace.fullbright(true);
|
||||
GL11.glEnable(GL11.GL_LIGHTING); // we want a glow, but normal lighting should still apply
|
||||
}
|
||||
ResourceManager.rbmk_button.renderPart("Button");
|
||||
if(glow) RenderArcFurnace.fullbright(false);
|
||||
|
||||
GL11.glPopMatrix();
|
||||
|
||||
FontRenderer font = Minecraft.getMinecraft().fontRenderer;
|
||||
int height = font.FONT_HEIGHT;
|
||||
if(key.label != null && !key.label.isEmpty()) {
|
||||
|
||||
GL11.glTranslated(0.01, 0.3125, 0);
|
||||
int width = font.getStringWidth(key.label);
|
||||
float f3 = Math.min(0.0125F, 0.4F / Math.max(width, 1));
|
||||
GL11.glScalef(f3, -f3, f3);
|
||||
GL11.glNormal3f(0.0F, 0.0F, -1.0F);
|
||||
GL11.glRotatef(90, 0, 1, 0);
|
||||
|
||||
RenderArcFurnace.fullbright(true);
|
||||
font.drawString(key.label, - width / 2, - height / 2, 0x00ff00);
|
||||
RenderArcFurnace.fullbright(false);
|
||||
}
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
}
|
||||
@ -38,6 +38,7 @@ public class MissilePart {
|
||||
MissilePart.registerPart(ModItems.mp_thruster_10_xenon, PartType.THRUSTER, 0.5, 1, ResourceManager.mp_t_10_xenon, ResourceManager.mp_t_10_xenon_tex);
|
||||
//
|
||||
MissilePart.registerPart(ModItems.mp_thruster_15_kerosene, PartType.THRUSTER, 1.5, 1.5, ResourceManager.mp_t_15_kerosene, ResourceManager.mp_t_15_kerosene_tex);
|
||||
MissilePart.registerPart(ModItems.mp_thruster_15_kerosene_dual, PartType.THRUSTER, 1, 1.5, ResourceManager.mp_t_15_kerosene_dual, ResourceManager.mp_t_15_kerosene_dual_tex);
|
||||
MissilePart.registerPart(ModItems.mp_thruster_15_kerosene_triple, PartType.THRUSTER, 1, 1.5, ResourceManager.mp_t_15_kerosene_triple, ResourceManager.mp_t_15_kerosene_dual_tex);
|
||||
MissilePart.registerPart(ModItems.mp_thruster_15_solid, PartType.THRUSTER, 0.5, 1, ResourceManager.mp_t_15_solid, ResourceManager.mp_t_15_solid_tex);
|
||||
MissilePart.registerPart(ModItems.mp_thruster_15_solid_hexdecuple, PartType.THRUSTER, 0.5, 1, ResourceManager.mp_t_15_solid_hexdecuple, ResourceManager.mp_t_15_solid_hexdecuple_tex);
|
||||
|
||||
@ -105,12 +105,12 @@ public abstract class DoorDecl {
|
||||
};
|
||||
|
||||
public static final DoorDecl VAULT_DOOR = new DoorDecl() {
|
||||
|
||||
|
||||
@Override
|
||||
public IRenderDoors getSEDNARenderer() {
|
||||
return RenderVaultDoor.INSTANCE;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BusAnimation getBusAnimation(byte state, byte skinIndex) {
|
||||
if(state == TileEntityDoorGeneric.STATE_OPENING) return new BusAnimation()
|
||||
@ -121,13 +121,13 @@ public abstract class DoorDecl {
|
||||
.addBus("SLIDE", new BusAnimationSequence().setPos(1, 0, 0).addPos(0, 0, 0, 4_000));
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override public int getSkinCount() { return 7; }
|
||||
|
||||
@Override public int timeToOpen() { return 120; }
|
||||
@Override public int[][] getDoorOpenRanges() { return new int[][] { {-1, 1, 0, 3, 3, 2} }; }
|
||||
@Override public int[] getDimensions() { return new int[] { 4, 0, 0, 0, 2, 2 }; }
|
||||
|
||||
|
||||
@Override public int[][] getExtraDimensions() { return new int[][] { {0, 0, 1, -1, 2, 2} }; };
|
||||
|
||||
@Override
|
||||
@ -135,10 +135,10 @@ public abstract class DoorDecl {
|
||||
if(!open || y == 0) return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 1, 1);
|
||||
else return super.getBlockBound(x, y, z, open, forCollision);
|
||||
}
|
||||
|
||||
|
||||
public Consumer<TileEntityDoorGeneric> onUpdate = (door) -> {
|
||||
if(door.getWorldObj().isRemote) return;
|
||||
|
||||
|
||||
if(door.state == door.STATE_OPENING) {
|
||||
if(door.openTicks == 0) door.getWorldObj().playSoundEffect(door.xCoord, door.yCoord, door.zCoord, "hbm:block.vaultScrapeNew", 1.0F, 1.0F);
|
||||
for(int i = 45; i <= 115; i += 10)
|
||||
@ -149,22 +149,22 @@ public abstract class DoorDecl {
|
||||
if(door.openTicks == i) door.getWorldObj().playSoundEffect(door.xCoord, door.yCoord, door.zCoord, "hbm:block.vaultThudNew", 1.0F, 1.0F);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@Override public Consumer<TileEntityDoorGeneric> onDoorUpdate() { return onUpdate; }
|
||||
};
|
||||
|
||||
|
||||
public static final DoorDecl FIRE_DOOR = new DoorDecl() {
|
||||
|
||||
@Override public String getOpenSoundEnd() { return "hbm:door.wghStop"; }
|
||||
@Override public String getOpenSoundLoop() { return "hbm:door.wghStart"; }
|
||||
@Override public String getSoundLoop2() { return "hbm:door.alarm6"; }
|
||||
@Override public float getSoundVolume() { return 2; }
|
||||
|
||||
|
||||
@Override
|
||||
public IRenderDoors getSEDNARenderer() {
|
||||
return RenderFireDoor.INSTANCE;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BusAnimation getBusAnimation(byte state, byte skinIndex) {
|
||||
if(state == TileEntityDoorGeneric.STATE_OPENING) return new BusAnimation().addBus("DOOR", new BusAnimationSequence().setPos(0, 0, 0).addPos(0, 1, 0, this.timeToOpen() * 50));
|
||||
@ -173,17 +173,19 @@ public abstract class DoorDecl {
|
||||
}
|
||||
|
||||
public ResourceLocation[] skins;
|
||||
|
||||
|
||||
@SideOnly(Side.CLIENT) @Override public ResourceLocation[] getSEDNASkins() {
|
||||
if(skins == null) skins = new ResourceLocation[] {
|
||||
ResourceManager.pheo_fire_door_tex,
|
||||
ResourceManager.pheo_fire_door_black_tex,
|
||||
ResourceManager.pheo_fire_door_orange_tex,
|
||||
ResourceManager.pheo_fire_door_yellow_tex,
|
||||
ResourceManager.pheo_fire_door_trefoil_tex
|
||||
};
|
||||
return skins;
|
||||
}
|
||||
|
||||
public int getSkinCount() { return 3; }
|
||||
|
||||
public int getSkinCount() { return 5; }
|
||||
|
||||
@Override public int timeToOpen() { return 160; }
|
||||
@Override public int[][] getDoorOpenRanges() { return new int[][] { { -1, 0, 0, 3, 4, 1 } }; }
|
||||
@ -201,18 +203,18 @@ public abstract class DoorDecl {
|
||||
};
|
||||
|
||||
public static final DoorDecl SLIDE_DOOR = new DoorDecl() {
|
||||
|
||||
|
||||
@Override public String getOpenSoundEnd() { return "hbm:door.sliding_door_opened"; }
|
||||
@Override public String getCloseSoundEnd() { return "hbm:door.sliding_door_shut"; }
|
||||
@Override public String getOpenSoundLoop() { return "hbm:door.sliding_door_opening"; }
|
||||
@Override public String getSoundLoop2() { return "hbm:door.sliding_door_opening"; }
|
||||
@Override public float getSoundVolume() { return 2; }
|
||||
|
||||
|
||||
@Override
|
||||
public IRenderDoors getSEDNARenderer() {
|
||||
return RenderSlidingBlastDoor.INSTANCE;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BusAnimation getBusAnimation(byte state, byte skinIndex) {
|
||||
if(state == TileEntityDoorGeneric.STATE_OPENING) return new BusAnimation()
|
||||
@ -245,12 +247,12 @@ public abstract class DoorDecl {
|
||||
@Override public String getOpenSoundEnd() { return "hbm:door.sliding_seal_stop"; }
|
||||
@Override public String getOpenSoundStart() { return "hbm:door.sliding_seal_open"; }
|
||||
@Override public float getSoundVolume() { return 2; }
|
||||
|
||||
|
||||
@Override
|
||||
public IRenderDoors getSEDNARenderer() {
|
||||
return RenderSealDoor.INSTANCE;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BusAnimation getBusAnimation(byte state, byte skinIndex) {
|
||||
if(state == TileEntityDoorGeneric.STATE_OPENING) return new BusAnimation().addBus("DOOR", new BusAnimationSequence().setPos(0, 0, 0).addPos(0, 1, 0, this.timeToOpen() * 50));
|
||||
@ -277,12 +279,12 @@ public abstract class DoorDecl {
|
||||
@Override public String getOpenSoundEnd() { return "hbm:door.garage_stop"; }
|
||||
@Override public String getOpenSoundLoop() { return "hbm:door.garage_move"; }
|
||||
@Override public float getSoundVolume() { return 2; }
|
||||
|
||||
|
||||
@Override
|
||||
public IRenderDoors getSEDNARenderer() {
|
||||
return RenderSecureDoor.INSTANCE;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BusAnimation getBusAnimation(byte state, byte skinIndex) {
|
||||
if(state == TileEntityDoorGeneric.STATE_OPENING) return new BusAnimation().addBus("DOOR", new BusAnimationSequence().setPos(0, 0, 0).addPos(0, 1, 0, this.timeToOpen() * 50));
|
||||
@ -307,16 +309,18 @@ public abstract class DoorDecl {
|
||||
}
|
||||
|
||||
public ResourceLocation[] skins;
|
||||
|
||||
|
||||
@Override public ResourceLocation[] getSEDNASkins() {
|
||||
if(skins == null) skins = new ResourceLocation[] {
|
||||
ResourceManager.pheo_secure_door_tex,
|
||||
ResourceManager.pheo_secure_door_grey_tex
|
||||
ResourceManager.pheo_secure_door_grey_tex,
|
||||
ResourceManager.pheo_secure_door_black_tex,
|
||||
ResourceManager.pheo_secure_door_yellow_tex
|
||||
};
|
||||
return skins;
|
||||
}
|
||||
|
||||
public int getSkinCount() { return 2; }
|
||||
|
||||
public int getSkinCount() { return 4; }
|
||||
};
|
||||
|
||||
public static final DoorDecl ROUND_AIRLOCK_DOOR = new DoorDecl() {
|
||||
@ -324,12 +328,12 @@ public abstract class DoorDecl {
|
||||
@Override public String getOpenSoundEnd() { return "hbm:door.garage_stop"; }
|
||||
@Override public String getOpenSoundLoop() { return "hbm:door.garage_move"; }
|
||||
@Override public float getSoundVolume() { return 2; }
|
||||
|
||||
|
||||
@Override
|
||||
public IRenderDoors getSEDNARenderer() {
|
||||
return RenderAirlockDoor.INSTANCE;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BusAnimation getBusAnimation(byte state, byte skinIndex) {
|
||||
if(state == TileEntityDoorGeneric.STATE_OPENING) return new BusAnimation().addBus("DOOR", new BusAnimationSequence().setPos(0, 0, 0).addPos(0, 1, 0, this.timeToOpen() * 50));
|
||||
@ -338,7 +342,7 @@ public abstract class DoorDecl {
|
||||
}
|
||||
|
||||
public ResourceLocation[] skins;
|
||||
|
||||
|
||||
@SideOnly(Side.CLIENT) @Override public ResourceLocation[] getSEDNASkins() {
|
||||
if(skins == null) skins = new ResourceLocation[] {
|
||||
ResourceManager.pheo_airlock_door_tex,
|
||||
@ -347,7 +351,7 @@ public abstract class DoorDecl {
|
||||
};
|
||||
return skins;
|
||||
}
|
||||
|
||||
|
||||
public int getSkinCount() { return 3; }
|
||||
|
||||
@Override
|
||||
@ -372,12 +376,12 @@ public abstract class DoorDecl {
|
||||
@Override public String getOpenSoundLoop() { return "hbm:door.qe_sliding_opening"; };
|
||||
@Override public float getSoundVolume() { return 2; }
|
||||
@Override public int timeToOpen() { return 10; };
|
||||
|
||||
|
||||
@Override
|
||||
public IRenderDoors getSEDNARenderer() {
|
||||
return RenderSlidingDoor.INSTANCE;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BusAnimation getBusAnimation(byte state, byte skinIndex) {
|
||||
if(state == TileEntityDoorGeneric.STATE_OPENING) return new BusAnimation().addBus("DOOR", new BusAnimationSequence().setPos(0, 0, 0).addPos(0, 1, 0, this.timeToOpen() * 50));
|
||||
@ -405,12 +409,12 @@ public abstract class DoorDecl {
|
||||
@Override public String getOpenSoundEnd() { return "hbm:door.wgh_stop"; };
|
||||
@Override public String getOpenSoundLoop() { return "hbm:door.wgh_start"; };
|
||||
@Override public float getSoundVolume() { return 2; }
|
||||
|
||||
|
||||
@Override
|
||||
public IRenderDoors getSEDNARenderer() {
|
||||
return RenderContainmentDoor.INSTANCE;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BusAnimation getBusAnimation(byte state, byte skinIndex) {
|
||||
if(state == TileEntityDoorGeneric.STATE_OPENING) return new BusAnimation().addBus("DOOR", new BusAnimationSequence().setPos(0, 0, 0).addPos(0, 1, 0, this.timeToOpen() * 50));
|
||||
@ -419,16 +423,17 @@ public abstract class DoorDecl {
|
||||
}
|
||||
|
||||
public ResourceLocation[] skins;
|
||||
|
||||
|
||||
@SideOnly(Side.CLIENT) @Override public ResourceLocation[] getSEDNASkins() {
|
||||
if(skins == null) skins = new ResourceLocation[] {
|
||||
ResourceManager.pheo_containment_door_tex,
|
||||
ResourceManager.pheo_containment_door_trefoil_tex
|
||||
ResourceManager.pheo_containment_door_trefoil_tex,
|
||||
ResourceManager.pheo_containment_door_trefoil_yellow_tex
|
||||
};
|
||||
return skins;
|
||||
}
|
||||
|
||||
@Override public int getSkinCount() { return 2; }
|
||||
|
||||
@Override public int getSkinCount() { return 3; }
|
||||
|
||||
@Override public int timeToOpen() { return 160; };
|
||||
@Override public int[][] getDoorOpenRanges() { return new int[][] { { -1, 0, 0, 3, 3, 1 } }; }
|
||||
@ -452,12 +457,12 @@ public abstract class DoorDecl {
|
||||
@Override public String getCloseSoundStart() { return null; };
|
||||
@Override public String getCloseSoundEnd() { return "hbm:door.lever"; };
|
||||
@Override public float getSoundVolume() { return 2; }
|
||||
|
||||
|
||||
@Override
|
||||
public IRenderDoors getSEDNARenderer() {
|
||||
return RenderWaterDoor.INSTANCE;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BusAnimation getBusAnimation(byte state, byte skinIndex) {
|
||||
if(state == TileEntityDoorGeneric.STATE_OPENING) return new BusAnimation()
|
||||
@ -470,7 +475,7 @@ public abstract class DoorDecl {
|
||||
}
|
||||
|
||||
public ResourceLocation[] skins;
|
||||
|
||||
|
||||
@SideOnly(Side.CLIENT) @Override public ResourceLocation[] getSEDNASkins() {
|
||||
if(skins == null) skins = new ResourceLocation[] {
|
||||
ResourceManager.pheo_water_door_tex,
|
||||
@ -478,7 +483,7 @@ public abstract class DoorDecl {
|
||||
};
|
||||
return skins;
|
||||
}
|
||||
|
||||
|
||||
@Override public int getSkinCount() { return 2; }
|
||||
|
||||
@Override
|
||||
@ -540,7 +545,7 @@ public abstract class DoorDecl {
|
||||
@Override public int[][] getDoorOpenRanges() { return new int[][] { { 1, 0, 1, -3, 3, 0 }, { 0, 0, 1, -3, 3, 0 }, { -1, 0, 1, -3, 3, 0 } }; }
|
||||
@Override public float getDoorRangeOpenTime(int ticks, int idx) { return getNormTime(ticks, 20, 20); };
|
||||
|
||||
|
||||
|
||||
@Override public int getBlockOffset() { return 2; }
|
||||
@Override public int[] getDimensions() { return new int[] { 0, 0, 2, 2, 2, 2 }; }
|
||||
@Override @SideOnly(Side.CLIENT) public ResourceLocation getTextureForPart(String partName) { return ResourceManager.silo_hatch_tex; }
|
||||
@ -594,7 +599,7 @@ public abstract class DoorDecl {
|
||||
@Override public int[][] getDoorOpenRanges() { return new int[][] { { 2, 0, 1, -3, 3, 0 }, { 1, 0, 2, -5, 3, 0 }, { 0, 0, 2, -5, 3, 0 }, { -1, 0, 2, -5, 3, 0 }, { -2, 0, 1, -3, 3, 0 } }; }
|
||||
@Override public float getDoorRangeOpenTime(int ticks, int idx) { return getNormTime(ticks, 20, 20); };
|
||||
|
||||
|
||||
|
||||
@Override public int getBlockOffset() { return 3; }
|
||||
@Override public int[] getDimensions() { return new int[] { 0, 0, 3, 3, 3, 3 }; }
|
||||
@Override @SideOnly(Side.CLIENT) public ResourceLocation getTextureForPart(String partName) { return ResourceManager.silo_hatch_large_tex; }
|
||||
@ -608,12 +613,12 @@ public abstract class DoorDecl {
|
||||
@Override public String getOpenSoundEnd() { return "hbm:door.garage_stop"; }
|
||||
@Override public String getOpenSoundLoop() { return "hbm:door.garage_move"; };
|
||||
@Override public float getSoundVolume() { return 2; }
|
||||
|
||||
|
||||
@Override
|
||||
public IRenderDoors getSEDNARenderer() {
|
||||
return RenderVehicleDoor.INSTANCE;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BusAnimation getBusAnimation(byte state, byte skinIndex) {
|
||||
if(state == TileEntityDoorGeneric.STATE_OPENING) return new BusAnimation().addBus("DOOR", new BusAnimationSequence().setPos(0, 0, 0).addPos(0, 1, 0, this.timeToOpen() * 50));
|
||||
@ -643,7 +648,7 @@ public abstract class DoorDecl {
|
||||
public abstract int[][] getDoorOpenRanges();
|
||||
public abstract int[] getDimensions();
|
||||
public int[][] getExtraDimensions() { return null; };
|
||||
|
||||
|
||||
public int getBlockOffset() { return 0; }
|
||||
public boolean remoteControllable() { return false; }
|
||||
|
||||
@ -708,29 +713,29 @@ public abstract class DoorDecl {
|
||||
|
||||
public ResourceLocation[] getSEDNASkins() { return null; }
|
||||
public boolean hasSkins() { return getSkinCount() > 0; }
|
||||
|
||||
|
||||
public int getSkinCount() { return 0; }
|
||||
|
||||
|
||||
public ResourceLocation getCyclingSkins() {
|
||||
ResourceLocation[] skins = this.getSEDNASkins();
|
||||
int index = (int) ((Clock.get_ms() % (skins.length * 1000)) / 1000);
|
||||
return skins[index];
|
||||
}
|
||||
|
||||
|
||||
public ResourceLocation getSkinFromIndex(int index) {
|
||||
ResourceLocation[] skins = this.getSEDNASkins();
|
||||
return skins[Math.abs(index) % skins.length];
|
||||
}
|
||||
|
||||
|
||||
// keyframe animation system sneakily stitched into the door decl
|
||||
public IRenderDoors getSEDNARenderer() { return null; }
|
||||
public BusAnimation getBusAnimation(byte state, byte skinIndex) { return null; }
|
||||
|
||||
|
||||
public com.hbm.render.anim.HbmAnimations.Animation getSEDNAAnim(byte state, byte skinIndex) {
|
||||
BusAnimation anim = this.getBusAnimation(state, skinIndex);
|
||||
if(anim != null) return new com.hbm.render.anim.HbmAnimations.Animation("DOOR_ANIM", System.currentTimeMillis(), anim);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
public Consumer<TileEntityDoorGeneric> onDoorUpdate() { return null; }
|
||||
}
|
||||
|
||||
@ -403,6 +403,8 @@ public class TileMappings {
|
||||
put(TileEntityCraneConsole.class, "tileentity_rbmk_crane_console");
|
||||
put(TileEntityRBMKConsole.class, "tileentity_rbmk_console");
|
||||
put(TileEntityRBMKDisplay.class, "tileentity_rbmk_display");
|
||||
put(TileEntityRBMKKeyPad.class, "tileentity_rbmk_keypad");
|
||||
put(TileEntityRBMKGauge.class, "tileentity_rbmk_gauge");
|
||||
put(TileEntityRBMKInlet.class, "tileentity_rbmk_inlet");
|
||||
put(TileEntityRBMKOutlet.class, "tileentity_rbmk_outlet");
|
||||
put(TileEntityRBMKAutoloader.class, "tileentity_rbmk_autoloader");
|
||||
@ -418,6 +420,7 @@ public class TileMappings {
|
||||
put(TileEntityFusionBoiler.class, "tileentity_fusion_boiler");
|
||||
put(TileEntityFusionMHDT.class, "tileentity_fusion_mhdt");
|
||||
put(TileEntityFusionCoupler.class, "tileentity_fusion_coupler");
|
||||
put(TileEntityFusionPlasmaForge.class, "tileentity_fusion_plasma_forge");
|
||||
}
|
||||
|
||||
private static void putNetwork() {
|
||||
|
||||
@ -12,5 +12,5 @@ public interface IFusionPowerReceiver {
|
||||
* fusionPower is the per-port output adjusted for the amount of connected receivers (i.e. when boilers share output energy)
|
||||
* neutronPower is a fixed value provided by the recipe
|
||||
*/
|
||||
public void receiveFusionPower(long fusionPower, double neutronPower);
|
||||
public void receiveFusionPower(long fusionPower, double neutronPower, float r, float g, float b);
|
||||
}
|
||||
|
||||
@ -87,7 +87,7 @@ public class TileEntityFusionBoiler extends TileEntityLoadedBase implements IFlu
|
||||
@Override public boolean receivesFusionPower() { return true; }
|
||||
|
||||
@Override
|
||||
public void receiveFusionPower(long fusionPower, double neutronPower) {
|
||||
public void receiveFusionPower(long fusionPower, double neutronPower, float r, float g, float b) {
|
||||
this.plasmaEnergy = fusionPower;
|
||||
|
||||
int waterCycles = Math.min(tanks[0].getFill(), tanks[1].getMaxFill() - tanks[1].getFill());
|
||||
|
||||
@ -267,7 +267,7 @@ public class TileEntityFusionBreeder extends TileEntityMachineBase implements IF
|
||||
}
|
||||
|
||||
@Override public boolean receivesFusionPower() { return false; }
|
||||
@Override public void receiveFusionPower(long fusionPower, double neutronPower) { this.neutronEnergy = neutronPower; doProgress(); }
|
||||
@Override public void receiveFusionPower(long fusionPower, double neutronPower, float r, float g, float b) { this.neutronEnergy = neutronPower; doProgress(); }
|
||||
|
||||
@Override public FluidTank[] getReceivingTanks() { return new FluidTank[] {tanks[0]}; }
|
||||
@Override public FluidTank[] getSendingTanks() { return new FluidTank[] {tanks[1]}; }
|
||||
|
||||
@ -62,7 +62,7 @@ public class TileEntityFusionCoupler extends TileEntityLoadedBase implements IFu
|
||||
@Override public boolean receivesFusionPower() { return true; }
|
||||
|
||||
@Override
|
||||
public void receiveFusionPower(long fusionPower, double neutronPower) {
|
||||
public void receiveFusionPower(long fusionPower, double neutronPower, float r, float g, float b) {
|
||||
|
||||
// more copy pasted crap code ! ! !
|
||||
if(klystronNode != null && klystronNode.net != null) {
|
||||
|
||||
@ -159,7 +159,7 @@ public class TileEntityFusionMHDT extends TileEntityLoadedBase implements IEnerg
|
||||
}
|
||||
|
||||
@Override public boolean receivesFusionPower() { return true; }
|
||||
@Override public void receiveFusionPower(long fusionPower, double neutronPower) { this.plasmaEnergy = fusionPower; }
|
||||
@Override public void receiveFusionPower(long fusionPower, double neutronPower, float r, float g, float b) { this.plasmaEnergy = fusionPower; }
|
||||
|
||||
@Override
|
||||
public void serialize(ByteBuf buf) {
|
||||
|
||||
@ -0,0 +1,268 @@
|
||||
package com.hbm.tileentity.machine.fusion;
|
||||
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import com.hbm.interfaces.IControlReceiver;
|
||||
import com.hbm.inventory.container.ContainerMachinePlasmaForge;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.inventory.fluid.tank.FluidTank;
|
||||
import com.hbm.inventory.gui.GUIMachinePlasmaForge;
|
||||
import com.hbm.inventory.recipes.PlasmaForgeRecipe;
|
||||
import com.hbm.inventory.recipes.PlasmaForgeRecipes;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.lib.Library;
|
||||
import com.hbm.module.machine.ModuleMachinePlasma;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
import com.hbm.tileentity.TileEntityMachineBase;
|
||||
import com.hbm.uninos.GenNode;
|
||||
import com.hbm.uninos.INetworkProvider;
|
||||
import com.hbm.uninos.UniNodespace;
|
||||
import com.hbm.uninos.networkproviders.PlasmaNetworkProvider;
|
||||
import com.hbm.util.BobMathUtil;
|
||||
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||
import com.hbm.util.fauxpointtwelve.DirPos;
|
||||
|
||||
import api.hbm.energymk2.IEnergyReceiverMK2;
|
||||
import api.hbm.fluidmk2.IFluidStandardReceiverMK2;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityFusionPlasmaForge extends TileEntityMachineBase implements IFusionPowerReceiver, IEnergyReceiverMK2, IFluidStandardReceiverMK2, IControlReceiver, IGUIProvider {
|
||||
|
||||
public FluidTank inputTank;
|
||||
|
||||
public long power;
|
||||
public long maxPower = 10_000_000;
|
||||
public boolean didProcess;
|
||||
|
||||
public float plasmaRed;
|
||||
public float plasmaGreen;
|
||||
public float plasmaBlue;
|
||||
public long plasmaEnergy;
|
||||
public long plasmaEnergySync;
|
||||
protected GenNode receiverNode;
|
||||
protected GenNode providerNode;
|
||||
|
||||
public int timeOffset = -1;
|
||||
|
||||
public ModuleMachinePlasma plasmaModule;
|
||||
|
||||
public TileEntityFusionPlasmaForge() {
|
||||
super(16);
|
||||
this.inputTank = new FluidTank(Fluids.NONE, 16_000);
|
||||
|
||||
this.plasmaModule = new ModuleMachinePlasma(0, this, slots)
|
||||
.itemInput(3).itemOutput(15).fluidInput(inputTank);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "container.machinePlasmaForge";
|
||||
}
|
||||
|
||||
@Override public boolean receivesFusionPower() { return true; }
|
||||
@Override public void receiveFusionPower(long fusionPower, double neutronPower, float r, float g, float b) {
|
||||
this.plasmaEnergy = fusionPower;
|
||||
this.plasmaRed = r;
|
||||
this.plasmaGreen = g;
|
||||
this.plasmaBlue = b;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
|
||||
if(maxPower <= 0) this.maxPower = 1_000_000;
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
|
||||
this.plasmaEnergySync = this.plasmaEnergy;
|
||||
this.plasmaEnergy = 0;
|
||||
|
||||
ForgeDirection rot = ForgeDirection.getOrientation(this.getBlockMetadata() - 10).getRotation(ForgeDirection.UP);
|
||||
if(receiverNode == null || receiverNode.expired) receiverNode = this.createNode(PlasmaNetworkProvider.THE_PROVIDER, rot);
|
||||
if(providerNode == null || providerNode.expired) providerNode = this.createNode(PlasmaNetworkProvider.THE_PROVIDER, rot.getOpposite());
|
||||
|
||||
if(receiverNode != null && receiverNode.hasValidNet()) receiverNode.net.addReceiver(this);
|
||||
if(providerNode != null && providerNode.hasValidNet()) providerNode.net.addProvider(this); // technically unused, but good to have when we do something else with the plasma nets
|
||||
|
||||
PlasmaForgeRecipe recipe = (PlasmaForgeRecipe) PlasmaForgeRecipes.INSTANCE.recipeNameMap.get(plasmaModule.recipe);
|
||||
if(recipe != null) this.maxPower = recipe.power * 100;
|
||||
|
||||
this.maxPower = BobMathUtil.max(this.power, this.maxPower, 100_000);
|
||||
this.power = Library.chargeTEFromItems(slots, 0, power, maxPower);
|
||||
|
||||
for(DirPos pos : getConPos()) {
|
||||
this.trySubscribe(worldObj, pos);
|
||||
if(inputTank.getTankType() != Fluids.NONE) this.trySubscribe(inputTank.getTankType(), worldObj, pos);
|
||||
}
|
||||
|
||||
double speed = 1D;
|
||||
double pow = 1D;
|
||||
|
||||
boolean ignition = recipe != null ? recipe.ignitionTemp <= this.plasmaEnergySync : true;
|
||||
|
||||
this.plasmaModule.update(speed, pow, ignition, slots[1]);
|
||||
this.didProcess = this.plasmaModule.didProcess;
|
||||
if(this.plasmaModule.markDirty) this.markDirty();
|
||||
|
||||
if(providerNode != null && providerNode.hasValidNet()) {
|
||||
|
||||
for(Object o : providerNode.net.receiverEntries.entrySet()) {
|
||||
Entry<Object, Long> entry = (Entry<Object, Long>) o;
|
||||
|
||||
if(entry.getKey() instanceof IFusionPowerReceiver) {
|
||||
long powerReceived = (long) Math.ceil(this.plasmaEnergySync * 0.75);
|
||||
((IFusionPowerReceiver) entry.getKey()).receiveFusionPower(powerReceived, 0, plasmaRed, plasmaGreen, plasmaBlue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.networkPackNT(100);
|
||||
} else {
|
||||
|
||||
if(timeOffset == -1) this.timeOffset = worldObj.rand.nextInt(30_000);
|
||||
}
|
||||
}
|
||||
|
||||
public GenNode createNode(INetworkProvider provider, ForgeDirection dir) {
|
||||
GenNode node = UniNodespace.getNode(worldObj, xCoord + dir.offsetX * 5, yCoord + 2, zCoord + dir.offsetZ * 5, provider);
|
||||
if(node != null) return node;
|
||||
|
||||
node = new GenNode(provider,
|
||||
new BlockPos(xCoord + dir.offsetX * 5, yCoord + 2, zCoord + dir.offsetZ * 5))
|
||||
.setConnections(new DirPos(xCoord + dir.offsetX * 6, yCoord + 2, zCoord + dir.offsetZ * 6, dir));
|
||||
|
||||
UniNodespace.createNode(worldObj, node);
|
||||
|
||||
return node;
|
||||
}
|
||||
|
||||
public DirPos[] getConPos() {
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10);
|
||||
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||
|
||||
return new DirPos[] {
|
||||
new DirPos(xCoord + dir.offsetX * 6 - rot.offsetX * 2, yCoord, zCoord + dir.offsetZ * 6 - rot.offsetZ * 2, dir),
|
||||
new DirPos(xCoord + dir.offsetX * 6 - rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 6 - rot.offsetZ * 1, dir),
|
||||
new DirPos(xCoord + dir.offsetX * 6 + rot.offsetX * 0, yCoord, zCoord + dir.offsetZ * 6 + rot.offsetZ * 0, dir),
|
||||
new DirPos(xCoord + dir.offsetX * 6 + rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 6 + rot.offsetZ * 1, dir),
|
||||
new DirPos(xCoord + dir.offsetX * 6 + rot.offsetX * 2, yCoord, zCoord + dir.offsetZ * 6 + rot.offsetZ * 2, dir),
|
||||
new DirPos(xCoord - dir.offsetX * 6 - rot.offsetX * 2, yCoord, zCoord - dir.offsetZ * 6 - rot.offsetZ * 2, dir.getOpposite()),
|
||||
new DirPos(xCoord - dir.offsetX * 6 - rot.offsetX * 1, yCoord, zCoord - dir.offsetZ * 6 - rot.offsetZ * 1, dir.getOpposite()),
|
||||
new DirPos(xCoord - dir.offsetX * 6 + rot.offsetX * 0, yCoord, zCoord - dir.offsetZ * 6 + rot.offsetZ * 0, dir.getOpposite()),
|
||||
new DirPos(xCoord - dir.offsetX * 6 + rot.offsetX * 1, yCoord, zCoord - dir.offsetZ * 6 + rot.offsetZ * 1, dir.getOpposite()),
|
||||
new DirPos(xCoord - dir.offsetX * 6 + rot.offsetX * 2, yCoord, zCoord - dir.offsetZ * 6 + rot.offsetZ * 2, dir.getOpposite()),
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serialize(ByteBuf buf) {
|
||||
super.serialize(buf);
|
||||
this.inputTank.serialize(buf);
|
||||
buf.writeFloat(plasmaRed);
|
||||
buf.writeFloat(plasmaGreen);
|
||||
buf.writeFloat(plasmaBlue);
|
||||
buf.writeLong(plasmaEnergySync);
|
||||
buf.writeLong(power);
|
||||
buf.writeLong(maxPower);
|
||||
buf.writeBoolean(didProcess);
|
||||
this.plasmaModule.serialize(buf);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserialize(ByteBuf buf) {
|
||||
super.deserialize(buf);
|
||||
this.inputTank.deserialize(buf);
|
||||
this.plasmaRed = buf.readFloat();
|
||||
this.plasmaGreen = buf.readFloat();
|
||||
this.plasmaBlue = buf.readFloat();
|
||||
this.plasmaEnergySync = buf.readLong();
|
||||
this.power = buf.readLong();
|
||||
this.maxPower = buf.readLong();
|
||||
this.didProcess = buf.readBoolean();
|
||||
this.plasmaModule.deserialize(buf);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
super.readFromNBT(nbt);
|
||||
this.inputTank.readFromNBT(nbt, "i");
|
||||
this.power = nbt.getLong("power");
|
||||
this.maxPower = nbt.getLong("maxPower");
|
||||
this.plasmaModule.readFromNBT(nbt);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound nbt) {
|
||||
super.writeToNBT(nbt);
|
||||
this.inputTank.writeToNBT(nbt, "i");
|
||||
nbt.setLong("power", power);
|
||||
nbt.setLong("maxPower", maxPower);
|
||||
this.plasmaModule.writeToNBT(nbt);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isItemValidForSlot(int slot, ItemStack stack) {
|
||||
if(slot == 0) return true; // battery
|
||||
if(slot == 1 && stack.getItem() == ModItems.blueprints) return true;
|
||||
// TODO booster material
|
||||
if(this.plasmaModule.isItemValid(slot, stack)) return true; // recipe input crap
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canExtractItem(int i, ItemStack itemStack, int j) {
|
||||
return i == 15 || this.plasmaModule.isSlotClogged(i);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getAccessibleSlotsFromSide(int side) {
|
||||
return new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
|
||||
}
|
||||
|
||||
@Override public long getPower() { return power; }
|
||||
@Override public void setPower(long power) { this.power = power; }
|
||||
@Override public long getMaxPower() { return maxPower; }
|
||||
|
||||
@Override public FluidTank[] getReceivingTanks() { return new FluidTank[] {inputTank}; }
|
||||
@Override public FluidTank[] getAllTanks() { return new FluidTank[] {inputTank}; }
|
||||
|
||||
@Override public boolean hasPermission(EntityPlayer player) { return this.isUseableByPlayer(player); }
|
||||
|
||||
@Override
|
||||
public void receiveControl(NBTTagCompound data) {
|
||||
if(data.hasKey("index") && data.hasKey("selection")) {
|
||||
int index = data.getInteger("index");
|
||||
String selection = data.getString("selection");
|
||||
if(index == 0) {
|
||||
this.plasmaModule.recipe = selection;
|
||||
this.markChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
AxisAlignedBB bb = null;
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getRenderBoundingBox() {
|
||||
if(bb == null) bb = AxisAlignedBB.getBoundingBox(xCoord - 5, yCoord, zCoord - 5, xCoord + 5, yCoord + 6, zCoord + 6);
|
||||
return bb;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public double getMaxRenderDistanceSquared() {
|
||||
return 65536.0D;
|
||||
}
|
||||
|
||||
@Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMachinePlasmaForge(player.inventory, this); }
|
||||
@Override @SideOnly(Side.CLIENT) public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachinePlasmaForge(player.inventory, this); }
|
||||
}
|
||||
@ -169,6 +169,9 @@ public class TileEntityFusionTorus extends TileEntityCooledBase implements IGUIP
|
||||
|
||||
boolean ignition = recipe != null ? recipe.ignitionTemp <= this.klystronEnergy : true;
|
||||
|
||||
float r = 0F;
|
||||
float g = 0F;
|
||||
float b = 0F;
|
||||
this.plasmaEnergy = 0;
|
||||
this.fuelConsumption = 0;
|
||||
this.fusionModule.preUpdate(factor, collectors * 0.5D);
|
||||
@ -178,6 +181,9 @@ public class TileEntityFusionTorus extends TileEntityCooledBase implements IGUIP
|
||||
if(didProcess && recipe != null) {
|
||||
this.plasmaEnergy = (long) Math.ceil(recipe.outputTemp * factor);
|
||||
this.fuelConsumption = factor;
|
||||
r = recipe.r;
|
||||
g = recipe.g;
|
||||
b = recipe.b;
|
||||
}
|
||||
|
||||
double outputIntensity = this.getOuputIntensity(receiverCount);
|
||||
@ -192,7 +198,7 @@ public class TileEntityFusionTorus extends TileEntityCooledBase implements IGUIP
|
||||
|
||||
if(entry.getKey() instanceof IFusionPowerReceiver) {
|
||||
long powerReceived = (long) Math.ceil(this.plasmaEnergy * outputIntensity);
|
||||
((IFusionPowerReceiver) entry.getKey()).receiveFusionPower(powerReceived, outputFlux);
|
||||
((IFusionPowerReceiver) entry.getKey()).receiveFusionPower(powerReceived, outputFlux, r, g, b);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -52,16 +52,21 @@ public class TileEntityCraneConsole extends TileEntityLoadedBase implements Simp
|
||||
public double lastPosLeft = 0;
|
||||
public double posFront = 0;
|
||||
public double posLeft = 0;
|
||||
public double syncFront = 0;
|
||||
public double syncLeft = 0;
|
||||
private static final double speed = 0.05D;
|
||||
|
||||
private boolean goesDown = false;
|
||||
public double lastProgress = 1D;
|
||||
public double progress = 1D;
|
||||
public double syncProgress = 1D;
|
||||
|
||||
private ItemStack loadedItem;
|
||||
private boolean hasLoaded = false;
|
||||
public double loadedHeat;
|
||||
public double loadedEnrichment;
|
||||
|
||||
private int turnProgress;
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
@ -69,38 +74,58 @@ public class TileEntityCraneConsole extends TileEntityLoadedBase implements Simp
|
||||
if(worldObj.isRemote) {
|
||||
lastTiltFront = tiltFront;
|
||||
lastTiltLeft = tiltLeft;
|
||||
}
|
||||
|
||||
lastPosFront = posFront;
|
||||
lastPosLeft = posLeft;
|
||||
lastProgress = progress;
|
||||
|
||||
if(goesDown) {
|
||||
|
||||
if(progress > 0) {
|
||||
progress -= 0.04D;
|
||||
if(this.turnProgress > 0) {
|
||||
this.posFront = this.posFront + ((this.syncFront - this.posFront) / (double) this.turnProgress);
|
||||
this.posLeft = this.posLeft + ((this.syncLeft - this.posLeft) / (double) this.turnProgress);
|
||||
this.progress = this.progress + ((this.syncProgress - this.progress) / (double) this.turnProgress);
|
||||
--this.turnProgress;
|
||||
} else {
|
||||
progress = 0;
|
||||
goesDown = false;
|
||||
|
||||
if(!worldObj.isRemote && this.canTargetInteract()) {
|
||||
IRBMKLoadable column = getColumnAtPos();
|
||||
if(column != null) { // canTargetInteract already assumes this, but there seems to be some freak race conditions that cause the column to be null anyway
|
||||
if(this.loadedItem != null) {
|
||||
column.load(this.loadedItem);
|
||||
this.loadedItem = null;
|
||||
} else {
|
||||
this.loadedItem = column.provideNext();
|
||||
column.unload();
|
||||
}
|
||||
|
||||
this.markDirty();
|
||||
}
|
||||
}
|
||||
|
||||
this.posFront = this.syncFront;
|
||||
this.posLeft = this.syncLeft;
|
||||
this.progress = this.syncProgress;
|
||||
}
|
||||
} else if(progress != 1) {
|
||||
}
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
TileEntityRBMKBase aboveColumn = this.getColumnAtPos();
|
||||
if(aboveColumn != null) aboveColumn.craneIndicator = 10;
|
||||
|
||||
if(goesDown) {
|
||||
|
||||
if(progress > 0) {
|
||||
progress -= 0.04D;
|
||||
} else {
|
||||
progress = 0;
|
||||
goesDown = false;
|
||||
|
||||
if(aboveColumn instanceof IRBMKLoadable && this.canTargetInteract((IRBMKLoadable) aboveColumn)) {
|
||||
IRBMKLoadable column = (IRBMKLoadable) aboveColumn;
|
||||
if(column != null) { // canTargetInteract already assumes this, but there seems to be some freak race conditions that cause the column to be null anyway
|
||||
if(this.loadedItem != null) {
|
||||
column.load(this.loadedItem);
|
||||
this.loadedItem = null;
|
||||
} else {
|
||||
this.loadedItem = column.provideNext();
|
||||
column.unload();
|
||||
}
|
||||
|
||||
progress += 0.04D;
|
||||
|
||||
if(progress > 1D) {
|
||||
progress = 1D;
|
||||
this.markDirty();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
} else if(progress != 1) {
|
||||
|
||||
progress += 0.04D;
|
||||
|
||||
if(progress > 1D) {
|
||||
progress = 1D;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -181,12 +206,10 @@ public class TileEntityCraneConsole extends TileEntityLoadedBase implements Simp
|
||||
}
|
||||
|
||||
public boolean isAboveValidTarget() {
|
||||
return getColumnAtPos() != null;
|
||||
return getLoadableAtPos() != null;
|
||||
}
|
||||
|
||||
public boolean canTargetInteract() {
|
||||
|
||||
IRBMKLoadable column = getColumnAtPos();
|
||||
public boolean canTargetInteract(IRBMKLoadable column) {
|
||||
|
||||
if(column == null)
|
||||
return false;
|
||||
@ -198,7 +221,7 @@ public class TileEntityCraneConsole extends TileEntityLoadedBase implements Simp
|
||||
}
|
||||
}
|
||||
|
||||
public IRBMKLoadable getColumnAtPos() {
|
||||
public TileEntityRBMKBase getColumnAtPos() {
|
||||
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset);
|
||||
ForgeDirection left = dir.getRotation(ForgeDirection.DOWN);
|
||||
@ -214,15 +237,19 @@ public class TileEntityCraneConsole extends TileEntityLoadedBase implements Simp
|
||||
int[] pos = ((BlockDummyable)b).findCore(worldObj, x, y, z);
|
||||
if(pos != null) {
|
||||
TileEntityRBMKBase column = (TileEntityRBMKBase)worldObj.getTileEntity(pos[0], pos[1], pos[2]);
|
||||
if(column instanceof IRBMKLoadable) {
|
||||
return (IRBMKLoadable) column;
|
||||
}
|
||||
return column;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public IRBMKLoadable getLoadableAtPos() {
|
||||
TileEntityRBMKBase column = this.getColumnAtPos();
|
||||
if(column instanceof IRBMKLoadable) return (IRBMKLoadable) column;
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serialize(ByteBuf buf) {
|
||||
buf.writeBoolean(this.setUpCrane);
|
||||
@ -239,6 +266,7 @@ public class TileEntityCraneConsole extends TileEntityLoadedBase implements Simp
|
||||
buf.writeInt(this.height);
|
||||
buf.writeDouble(this.posFront);
|
||||
buf.writeDouble(this.posLeft);
|
||||
buf.writeDouble(this.progress);
|
||||
buf.writeBoolean(this.hasItemLoaded());
|
||||
buf.writeDouble(this.loadedHeat);
|
||||
buf.writeDouble(this.loadedEnrichment);
|
||||
@ -247,10 +275,6 @@ public class TileEntityCraneConsole extends TileEntityLoadedBase implements Simp
|
||||
|
||||
@Override
|
||||
public void deserialize(ByteBuf buf) {
|
||||
lastPosFront = posFront;
|
||||
lastPosLeft = posLeft;
|
||||
lastProgress = progress;
|
||||
|
||||
this.setUpCrane = buf.readBoolean();
|
||||
if (this.setUpCrane) {
|
||||
this.craneRotationOffset = buf.readInt();
|
||||
@ -262,8 +286,9 @@ public class TileEntityCraneConsole extends TileEntityLoadedBase implements Simp
|
||||
this.spanL = buf.readInt();
|
||||
this.spanR = buf.readInt();
|
||||
this.height = buf.readInt();
|
||||
this.posFront = buf.readDouble();
|
||||
this.posLeft = buf.readDouble();
|
||||
this.syncFront = buf.readDouble();
|
||||
this.syncLeft = buf.readDouble();
|
||||
this.syncProgress = buf.readDouble();
|
||||
this.hasLoaded = buf.readBoolean();
|
||||
this.loadedHeat = buf.readDouble();
|
||||
this.loadedEnrichment = buf.readDouble();
|
||||
|
||||
@ -56,6 +56,9 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase {
|
||||
public static final int maxWater = 16000;
|
||||
public int reasimSteam;
|
||||
public static final int maxSteam = 16000;
|
||||
public int craneIndicator;
|
||||
|
||||
public static boolean explodeOnBroken = true;
|
||||
|
||||
public boolean hasLid() {
|
||||
|
||||
@ -103,6 +106,8 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase {
|
||||
public void updateEntity() {
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
|
||||
if(this.craneIndicator > 0) this.craneIndicator--;
|
||||
|
||||
this.worldObj.theProfiler.startSection("rbmkBase_heat_movement");
|
||||
moveHeat();
|
||||
@ -286,6 +291,7 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase {
|
||||
buf.writeDouble(this.heat);
|
||||
buf.writeInt(this.reasimWater);
|
||||
buf.writeInt(this.reasimSteam);
|
||||
buf.writeByte((byte) this.craneIndicator);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -293,6 +299,7 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase {
|
||||
this.heat = buf.readDouble();
|
||||
this.reasimWater = buf.readInt();
|
||||
this.reasimSteam = buf.readInt();
|
||||
this.craneIndicator = buf.readByte();
|
||||
}
|
||||
|
||||
public void getDiagData(NBTTagCompound nbt) {
|
||||
|
||||
@ -100,6 +100,7 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon
|
||||
columns[index] = new RBMKColumn(rbmk.getConsoleType(), rbmk.getNBTForConsole());
|
||||
columns[index].data.setDouble("heat", rbmk.heat);
|
||||
columns[index].data.setDouble("maxHeat", rbmk.maxHeat());
|
||||
columns[index].data.setByte("indicator", (byte) rbmk.craneIndicator);
|
||||
if(rbmk.isModerated()) columns[index].data.setBoolean("moderated", true); //false is the default anyway and not setting it when we don't need to reduces cruft
|
||||
|
||||
if(te instanceof TileEntityRBMKRod) {
|
||||
@ -136,8 +137,7 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon
|
||||
|
||||
RBMKColumn col = this.columns[i];
|
||||
|
||||
if(col == null)
|
||||
continue;
|
||||
if(col == null) continue;
|
||||
|
||||
switch(screen.type) {
|
||||
case COL_TEMP:
|
||||
|
||||
@ -23,7 +23,6 @@ import net.minecraftforge.common.util.ForgeDirection;
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase implements SimpleComponent, CompatHandler.OCComponent, IEnergyReceiverMK2 {
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public double lastLevel;
|
||||
public double level;
|
||||
public static final double speed = 0.00277D; // it takes around 18 seconds for the thing to fully extend
|
||||
|
||||
@ -198,7 +198,8 @@ public class TileEntityRBMKControlManual extends TileEntityRBMKControl implement
|
||||
@Override
|
||||
public String[] getFunctionInfo() {
|
||||
return new String[] {
|
||||
PREFIX_FUNCTION + "setrods" + NAME_SEPARATOR + "percent"
|
||||
PREFIX_FUNCTION + "setrods" + NAME_SEPARATOR + "percent",
|
||||
PREFIX_FUNCTION + "extendrods" + NAME_SEPARATOR + "percent"
|
||||
};
|
||||
}
|
||||
|
||||
@ -212,6 +213,13 @@ public class TileEntityRBMKControlManual extends TileEntityRBMKControl implement
|
||||
return null;
|
||||
}
|
||||
|
||||
if((PREFIX_FUNCTION + "extendrods").equals(name) && params.length > 0) {
|
||||
int percent = IRORInteractive.parseInt(params[0], -100, 100);
|
||||
this.targetLevel = MathHelper.clamp_double(this.targetLevel + percent / 100D, 0D, 1D);
|
||||
this.markDirty();
|
||||
return null;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -76,11 +76,12 @@ public class TileEntityRBMKDisplay extends TileEntityLoadedBase {
|
||||
|
||||
if(te instanceof TileEntityRBMKBase) {
|
||||
|
||||
TileEntityRBMKBase rbmk = (TileEntityRBMKBase)te;
|
||||
TileEntityRBMKBase rbmk = (TileEntityRBMKBase) te;
|
||||
|
||||
columns[index] = new RBMKColumn(rbmk.getConsoleType(), rbmk.getNBTForConsole());
|
||||
columns[index].data.setDouble("heat", rbmk.heat);
|
||||
columns[index].data.setDouble("maxHeat", rbmk.maxHeat());
|
||||
columns[index].data.setByte("indicator", (byte) rbmk.craneIndicator);
|
||||
|
||||
if(te instanceof TileEntityRBMKControlManual) {
|
||||
TileEntityRBMKControlManual control = (TileEntityRBMKControlManual) te;
|
||||
|
||||
@ -0,0 +1,203 @@
|
||||
package com.hbm.tileentity.machine.rbmk;
|
||||
|
||||
import com.hbm.interfaces.IControlReceiver;
|
||||
import com.hbm.inventory.gui.GUIScreenRBMKGauge;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
import com.hbm.tileentity.TileEntityLoadedBase;
|
||||
import com.hbm.tileentity.network.RTTYSystem;
|
||||
import com.hbm.tileentity.network.RTTYSystem.RTTYChannel;
|
||||
import com.hbm.util.BufferUtil;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class TileEntityRBMKGauge extends TileEntityLoadedBase implements IGUIProvider, IControlReceiver {
|
||||
|
||||
/* __________
|
||||
* / /|
|
||||
* /________ / |
|
||||
* | __ __ | |
|
||||
* |(_\) (_\)| |
|
||||
* | __ __ | |
|
||||
* |(_\) (_\)| /
|
||||
* |_________|/
|
||||
*/
|
||||
|
||||
public GaugeUnit[] gauges = new GaugeUnit[4];
|
||||
|
||||
public TileEntityRBMKGauge() {
|
||||
for(int i = 0; i < 4; i++) this.gauges[i] = new GaugeUnit(i);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
|
||||
for(int i = 0; i < 4; i++) this.gauges[i].update();
|
||||
|
||||
this.networkPackNT(50);
|
||||
} else {
|
||||
|
||||
for(int i = 0; i < 4; i++) this.gauges[i].updateClient();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serialize(ByteBuf buf) {
|
||||
super.serialize(buf);
|
||||
for(int i = 0; i < 4; i++) this.gauges[i].serialize(buf);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserialize(ByteBuf buf) {
|
||||
super.deserialize(buf);
|
||||
for(int i = 0; i < 4; i++) this.gauges[i].deserialize(buf);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
super.readFromNBT(nbt);
|
||||
|
||||
for(int i = 0; i < 4; i++) this.gauges[i].readFromNBT(nbt, i);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound nbt) {
|
||||
super.writeToNBT(nbt);
|
||||
|
||||
for(int i = 0; i < 4; i++) this.gauges[i].writeToNBT(nbt, i);
|
||||
}
|
||||
|
||||
public class GaugeUnit {
|
||||
|
||||
/** If the value should be pulled from the RTTY system every tick, otherwise only on state change */
|
||||
public boolean polling;
|
||||
/** Color of the gauge needle */
|
||||
public int color;
|
||||
/** Label on the gauge as rendered on the panel */
|
||||
public String label = "";
|
||||
/** What channel to read values from */
|
||||
public String rtty = "";
|
||||
/** The minium value handled by the gauge */
|
||||
public int min = 0;
|
||||
/** The maximum value of the gauge, i.e. where the red area begins */
|
||||
public int max = 100;
|
||||
/** The current read value of the gauge, i.e. the needle position */
|
||||
public int value;
|
||||
/** For smoothig */
|
||||
public double renderValue;
|
||||
public double lastRenderValue;
|
||||
/** Whether this gauge is visible on the panel */
|
||||
public boolean active;
|
||||
|
||||
public GaugeUnit(int initialIndex) {
|
||||
if(initialIndex == 0) color = 0x800000;
|
||||
if(initialIndex == 1) color = 0x804000;
|
||||
if(initialIndex == 2) color = 0x808000;
|
||||
if(initialIndex == 3) color = 0x000080;
|
||||
label = "Gauge " + (initialIndex + 1);
|
||||
}
|
||||
|
||||
public void updateClient() {
|
||||
this.lastRenderValue = this.renderValue;
|
||||
double delta = value - renderValue;
|
||||
this.renderValue += delta * 0.1D;
|
||||
}
|
||||
|
||||
public void update() {
|
||||
if(!active) return;
|
||||
if(rtty == null || rtty.isEmpty()) return;
|
||||
|
||||
RTTYChannel chan = RTTYSystem.listen(worldObj, rtty);
|
||||
int sigVal = 0;
|
||||
|
||||
if(chan != null && chan.timeStamp < worldObj.getTotalWorldTime() - 1) chan = null;
|
||||
|
||||
// always accept new signals
|
||||
if(chan != null && chan.signal != null) {
|
||||
try { sigVal = Integer.parseInt(chan.signal.toString()); } catch(Exception ex) { }
|
||||
this.value = sigVal;
|
||||
} else {
|
||||
// if there's no new signal and we're polling, set to 0
|
||||
if(polling) this.value = 0;
|
||||
}
|
||||
}
|
||||
|
||||
public void serialize(ByteBuf buf) {
|
||||
buf.writeBoolean(active);
|
||||
buf.writeBoolean(polling);
|
||||
buf.writeInt(color);
|
||||
BufferUtil.writeString(buf, label);
|
||||
BufferUtil.writeString(buf, rtty);
|
||||
buf.writeInt(min);
|
||||
buf.writeInt(max);
|
||||
buf.writeInt(value);
|
||||
}
|
||||
|
||||
public void deserialize(ByteBuf buf) {
|
||||
active = buf.readBoolean();
|
||||
polling = buf.readBoolean();
|
||||
color = buf.readInt();
|
||||
label = BufferUtil.readString(buf);
|
||||
rtty = BufferUtil.readString(buf);
|
||||
min = buf.readInt();
|
||||
max = buf.readInt();
|
||||
value = buf.readInt();
|
||||
}
|
||||
|
||||
public void readFromNBT(NBTTagCompound nbt, int index) {
|
||||
this.active = nbt.getBoolean("active" + index);
|
||||
this.polling = nbt.getBoolean("polling" + index);
|
||||
this.color = nbt.getInteger("color" + index);
|
||||
this.label = nbt.getString("label" + index);
|
||||
this.rtty = nbt.getString("rtty" + index);
|
||||
this.min = nbt.getInteger("min" + index);
|
||||
this.max = nbt.getInteger("max" + index);
|
||||
this.value = nbt.getInteger("value" + index);
|
||||
}
|
||||
|
||||
public void writeToNBT(NBTTagCompound nbt, int index) {
|
||||
nbt.setBoolean("active" + index, active);
|
||||
nbt.setBoolean("polling" + index, polling);
|
||||
nbt.setInteger("color" + index, color);
|
||||
nbt.setString("label" + index, label);
|
||||
nbt.setString("rtty" + index, rtty);
|
||||
nbt.setInteger("min" + index, min);
|
||||
nbt.setInteger("max" + index, max);
|
||||
nbt.setInteger("value" + index, value);
|
||||
}
|
||||
}
|
||||
|
||||
@Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; }
|
||||
@Override public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIScreenRBMKGauge(this); }
|
||||
|
||||
@Override
|
||||
public boolean hasPermission(EntityPlayer player) {
|
||||
return player.getDistanceSq(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) < 15 * 15;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void receiveControl(NBTTagCompound data) {
|
||||
|
||||
int active = data.getByte("active");
|
||||
int polling = data.getByte("polling");
|
||||
for(int i = 0; i < 4; i++) {
|
||||
this.gauges[i].active = (active & (1 << i)) != 0;
|
||||
this.gauges[i].polling = (polling & (1 << i)) != 0;
|
||||
}
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
GaugeUnit gauge = this.gauges[i];
|
||||
gauge.color = MathHelper.clamp_int(data.getInteger("color" + i), 0, 0xffffff);
|
||||
gauge.label = data.getString("label" + i);
|
||||
gauge.rtty = data.getString("rtty" + i);
|
||||
gauge.min = data.getInteger("min" + i);
|
||||
gauge.max = data.getInteger("max" + i);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,199 @@
|
||||
package com.hbm.tileentity.machine.rbmk;
|
||||
|
||||
import com.hbm.interfaces.IControlReceiver;
|
||||
import com.hbm.inventory.gui.GUIScreenRBMKKeyPad;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
import com.hbm.tileentity.TileEntityLoadedBase;
|
||||
import com.hbm.tileentity.network.RTTYSystem;
|
||||
import com.hbm.util.BufferUtil;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class TileEntityRBMKKeyPad extends TileEntityLoadedBase implements IGUIProvider, IControlReceiver {
|
||||
|
||||
/* __________
|
||||
* / /|
|
||||
* /________ / |
|
||||
* | __ __ | |
|
||||
* ||__| |__|| |
|
||||
* | __ __ | |
|
||||
* ||__| |__|| /
|
||||
* |_________|/
|
||||
*/
|
||||
|
||||
public KeyUnit[] keys = new KeyUnit[4];
|
||||
|
||||
public TileEntityRBMKKeyPad() {
|
||||
for(int i = 0; i < 4; i++) this.keys[i] = new KeyUnit(i);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
|
||||
for(int i = 0; i < 4; i++) this.keys[i].update();
|
||||
|
||||
this.networkPackNT(50);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serialize(ByteBuf buf) {
|
||||
super.serialize(buf);
|
||||
for(int i = 0; i < 4; i++) this.keys[i].serialize(buf);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserialize(ByteBuf buf) {
|
||||
super.deserialize(buf);
|
||||
for(int i = 0; i < 4; i++) this.keys[i].deserialize(buf);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
super.readFromNBT(nbt);
|
||||
|
||||
for(int i = 0; i < 4; i++) this.keys[i].readFromNBT(nbt, i);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound nbt) {
|
||||
super.writeToNBT(nbt);
|
||||
|
||||
for(int i = 0; i < 4; i++) this.keys[i].writeToNBT(nbt, i);
|
||||
}
|
||||
|
||||
public class KeyUnit {
|
||||
|
||||
/** If the output should be per tick, allows the "is pressed" state */
|
||||
public boolean polling;
|
||||
/** If the button is toggled, assuming polling is enabled */
|
||||
public boolean isPressed;
|
||||
/** Color of the button as rendered on the panel */
|
||||
public int color;
|
||||
/** Label on the button as rendered on the panel */
|
||||
public String label = "";
|
||||
/** What channel to send the command over */
|
||||
public String rtty = "";
|
||||
/** What to send when pressed */
|
||||
public String command = "";
|
||||
/** Whether this button is enabled and can be pressed */
|
||||
public boolean active;
|
||||
/** For non-polling buttons, the time until the button visually upresses */
|
||||
public int clickTimer;
|
||||
|
||||
public KeyUnit(int initialIndex) {
|
||||
if(initialIndex == 0) color = 0xff0000;
|
||||
if(initialIndex == 1) color = 0xffff00;
|
||||
if(initialIndex == 2) color = 0x0080ff;
|
||||
if(initialIndex == 3) color = 0x00ff00;
|
||||
label = "Button " + (initialIndex + 1);
|
||||
}
|
||||
|
||||
public void click() {
|
||||
if(!active) return;
|
||||
|
||||
if(!polling) {
|
||||
if(canSend()) RTTYSystem.broadcast(worldObj, rtty, command);
|
||||
this.isPressed = true;
|
||||
this.clickTimer = 7;
|
||||
} else {
|
||||
this.isPressed = !this.isPressed;
|
||||
TileEntityRBMKKeyPad.this.markDirty();
|
||||
}
|
||||
|
||||
worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "random.click", 1F, this.isPressed ? 1F : 0.75F);
|
||||
}
|
||||
|
||||
public void update() {
|
||||
if(!active) return;
|
||||
|
||||
if(polling && isPressed) {
|
||||
if(canSend()) RTTYSystem.broadcast(worldObj, rtty, command);
|
||||
}
|
||||
|
||||
if(!polling && isPressed) {
|
||||
if(this.clickTimer-- <= 0) {
|
||||
this.isPressed = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean canSend() {
|
||||
return rtty != null && !rtty.isEmpty() && command != null && !command.isEmpty();
|
||||
}
|
||||
|
||||
public void serialize(ByteBuf buf) {
|
||||
buf.writeBoolean(active);
|
||||
buf.writeBoolean(polling);
|
||||
buf.writeBoolean(isPressed);
|
||||
buf.writeInt(color);
|
||||
BufferUtil.writeString(buf, label);
|
||||
BufferUtil.writeString(buf, rtty);
|
||||
BufferUtil.writeString(buf, command);
|
||||
}
|
||||
|
||||
public void deserialize(ByteBuf buf) {
|
||||
active = buf.readBoolean();
|
||||
polling = buf.readBoolean();
|
||||
isPressed = buf.readBoolean();
|
||||
color = buf.readInt();
|
||||
label = BufferUtil.readString(buf);
|
||||
rtty = BufferUtil.readString(buf);
|
||||
command = BufferUtil.readString(buf);
|
||||
}
|
||||
|
||||
public void readFromNBT(NBTTagCompound nbt, int index) {
|
||||
this.active = nbt.getBoolean("active" + index);
|
||||
this.polling = nbt.getBoolean("polling" + index);
|
||||
this.isPressed = nbt.getBoolean("isPressed" + index);
|
||||
this.color = nbt.getInteger("color" + index);
|
||||
this.label = nbt.getString("label" + index);
|
||||
this.rtty = nbt.getString("rtty" + index);
|
||||
this.command = nbt.getString("command" + index);
|
||||
}
|
||||
|
||||
public void writeToNBT(NBTTagCompound nbt, int index) {
|
||||
nbt.setBoolean("active" + index, active);
|
||||
nbt.setBoolean("polling" + index, polling);
|
||||
nbt.setBoolean("isPressed" + index, isPressed);
|
||||
nbt.setInteger("color" + index, color);
|
||||
nbt.setString("label" + index, label);
|
||||
nbt.setString("rtty" + index, rtty);
|
||||
nbt.setString("command" + index, command);
|
||||
}
|
||||
}
|
||||
|
||||
@Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; }
|
||||
@Override public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIScreenRBMKKeyPad(this); }
|
||||
|
||||
@Override
|
||||
public boolean hasPermission(EntityPlayer player) {
|
||||
return player.getDistanceSq(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) < 15 * 15;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void receiveControl(NBTTagCompound data) {
|
||||
|
||||
int active = data.getByte("active");
|
||||
int polling = data.getByte("polling");
|
||||
for(int i = 0; i < 4; i++) {
|
||||
this.keys[i].active = (active & (1 << i)) != 0;
|
||||
this.keys[i].polling = (polling & (1 << i)) != 0;
|
||||
}
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
KeyUnit key = this.keys[i];
|
||||
key.color = MathHelper.clamp_int(data.getInteger("color" + i), 0, 0xffffff);
|
||||
key.label = data.getString("label" + i);
|
||||
key.rtty = data.getString("rtty" + i);
|
||||
key.command = data.getString("cmd" + i);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -106,7 +106,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM
|
||||
public void invalidate() {
|
||||
super.invalidate();
|
||||
|
||||
if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod && ItemRBMKRod.getHullHeat(slots[0]) >= 150) {
|
||||
if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod && ItemRBMKRod.getHullHeat(slots[0]) >= 150 && !RBMKDials.getMeltdownsDisabled(worldObj)) {
|
||||
this.meltdown();
|
||||
}
|
||||
}
|
||||
@ -558,11 +558,11 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM
|
||||
|
||||
@Override
|
||||
public String provideRORValue(String name) {
|
||||
if((PREFIX_VALUE + "columnheat").equals(name)) return "" + this.heat;
|
||||
if((PREFIX_VALUE + "columnheat").equals(name)) return "" + (int) this.heat;
|
||||
if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) {
|
||||
if((PREFIX_VALUE + "rodheat").equals(name)) return "" + ItemRBMKRod.getHullHeat(slots[0]);
|
||||
if((PREFIX_VALUE + "depletion").equals(name)) return "" + (100 - ItemRBMKRod.getEnrichment(slots[0]) * 100);
|
||||
if((PREFIX_VALUE + "xenon").equals(name)) return "" + (ItemRBMKRod.getPoison(slots[0]) * 100);
|
||||
if((PREFIX_VALUE + "rodheat").equals(name)) return "" + (int) ItemRBMKRod.getHullHeat(slots[0]);
|
||||
if((PREFIX_VALUE + "depletion").equals(name)) return "" + (int) (100 - ItemRBMKRod.getEnrichment(slots[0]) * 100);
|
||||
if((PREFIX_VALUE + "xenon").equals(name)) return "" + (int) (ItemRBMKRod.getPoison(slots[0]));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -20,7 +20,7 @@ import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityRadioTorchController extends TileEntityLoadedBase implements IControlReceiver {
|
||||
|
||||
public String channel;
|
||||
public String channel = "";
|
||||
public String prev;
|
||||
public boolean polling = false;
|
||||
|
||||
|
||||
@ -8,6 +8,7 @@ import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
@ -427,7 +428,7 @@ public class DamageResistanceHandler {
|
||||
@SubscribeEvent
|
||||
public void onEntityAttacked(LivingAttackEvent event) {
|
||||
if(event.source.isDamageAbsolute()) return;
|
||||
|
||||
|
||||
EntityLivingBase e = event.entityLiving;
|
||||
float amount = event.ammount;
|
||||
|
||||
@ -443,6 +444,7 @@ public class DamageResistanceHandler {
|
||||
|
||||
@SubscribeEvent
|
||||
public void onEntityDamaged(LivingHurtEvent event) {
|
||||
|
||||
event.ammount = calculateDamage(event.entityLiving, event.source, event.ammount, currentPDT, currentPDR);
|
||||
if(event.entityLiving instanceof IResistanceProvider) {
|
||||
IResistanceProvider irp = (IResistanceProvider) event.entityLiving;
|
||||
@ -454,10 +456,10 @@ public class DamageResistanceHandler {
|
||||
if(source.isExplosion()) return CATEGORY_EXPLOSION;
|
||||
if(source.isFireDamage()) return CATEGORY_FIRE;
|
||||
if(source.isProjectile()) return CATEGORY_PHYSICAL;
|
||||
if(source.damageType.equals(DamageClass.LASER.name())) return CATEGORY_ENERGY;
|
||||
if(source.damageType.equals(DamageClass.MICROWAVE.name())) return CATEGORY_ENERGY;
|
||||
if(source.damageType.equals(DamageClass.SUBATOMIC.name())) return CATEGORY_ENERGY;
|
||||
if(source.damageType.equals(DamageClass.ELECTRIC.name())) return CATEGORY_ENERGY;
|
||||
if(source.damageType.toLowerCase(Locale.US).equals(DamageClass.LASER.name().toLowerCase(Locale.US))) return CATEGORY_ENERGY;
|
||||
if(source.damageType.toLowerCase(Locale.US).equals(DamageClass.MICROWAVE.name().toLowerCase(Locale.US))) return CATEGORY_ENERGY;
|
||||
if(source.damageType.toLowerCase(Locale.US).equals(DamageClass.SUBATOMIC.name().toLowerCase(Locale.US))) return CATEGORY_ENERGY;
|
||||
if(source.damageType.toLowerCase(Locale.US).equals(DamageClass.ELECTRIC.name().toLowerCase(Locale.US))) return CATEGORY_ENERGY;
|
||||
if(source == DamageSource.cactus) return CATEGORY_PHYSICAL;
|
||||
if(source instanceof EntityDamageSource) return CATEGORY_PHYSICAL;
|
||||
return source.damageType;
|
||||
@ -546,7 +548,7 @@ public class DamageResistanceHandler {
|
||||
return source.isUnblockable() ? null : otherResistance;
|
||||
}
|
||||
|
||||
public ResistanceStats addExact(String type, float threshold, float resistance) { exactResistances.put(type, new Resistance(threshold, resistance)); return this; }
|
||||
public ResistanceStats addExact(String type, float threshold, float resistance) { exactResistances.put(type.toLowerCase(Locale.US), new Resistance(threshold, resistance)); return this; }
|
||||
public ResistanceStats addCategory(String type, float threshold, float resistance) { categoryResistances.put(type, new Resistance(threshold, resistance)); return this; }
|
||||
public ResistanceStats setOther(float threshold, float resistance) { otherResistance = new Resistance(threshold, resistance); return this; }
|
||||
|
||||
|
||||
@ -1,11 +1,7 @@
|
||||
package com.hbm.util;
|
||||
|
||||
import com.google.common.collect.Sets;
|
||||
import com.hbm.config.GeneralConfig;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import cpw.mods.fml.relauncher.ReflectionHelper;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.util.Base64;
|
||||
@ -60,18 +56,6 @@ public class ShadyUtil {
|
||||
hashes.add("31da6223a100ed348ceb3254ceab67c9cc102cb2a04ac24de0df3ef3479b1036");
|
||||
}
|
||||
|
||||
public static final int c = 0x3d;
|
||||
public static String initializer = "Ur bp7mN-@UFZKXBx9N[/>M'k\\7\\9m3b";
|
||||
public static String signature = "dYPq\\YzrNpfn[ZDxdk7PS2jhTY72cZT7SoH|\\WL3dIznfC";
|
||||
public static String mask = "E#?V,%l!nb4 ik_wJ@(&k4o>Wq";
|
||||
public static String checksum = "dpXt\\Xnr\\Yzm";
|
||||
public static String testCase = "dYPq\\YzrNm3FUH;P[ZTq";
|
||||
public static String testValue = "WGm?";
|
||||
public static String smTest1 = "hgwS";
|
||||
public static String smTest2 = "8Sfw";
|
||||
public static String smTest3 = "j11D";
|
||||
public static String smTest4 = "s783";
|
||||
|
||||
public static Set<String> contributors = Sets.newHashSet(new String[] {
|
||||
"06ab7c03-55ce-43f8-9d3c-2850e3c652de", //mustang_rudolf
|
||||
"5bf069bc-5b46-4179-aafe-35c0a07dee8b", //JMF781
|
||||
@ -79,18 +63,10 @@ public class ShadyUtil {
|
||||
});
|
||||
|
||||
// simple cryptographic utils
|
||||
public static String encode(String msg) { return Base64.getEncoder().encodeToString(msg.getBytes()); }
|
||||
public static String decode(String msg) { return new String(Base64.getDecoder().decode(msg)); }
|
||||
@Deprecated public static String encode(String msg) { return Base64.getEncoder().encodeToString(msg.getBytes()); }
|
||||
@Deprecated public static String decode(String msg) { return new String(Base64.getDecoder().decode(msg)); }
|
||||
|
||||
public static String offset(String msg, int o) {
|
||||
byte[] bytes = msg.getBytes();
|
||||
for(int i = 0; i < bytes.length; i++) {
|
||||
bytes[i] += o;
|
||||
}
|
||||
return new String(bytes);
|
||||
}
|
||||
|
||||
/** Encryptor for the h-cat answer strings */
|
||||
/** complete fucking shit */
|
||||
public static String smoosh(String s1, String s2, String s3, String s4) {
|
||||
|
||||
Random rand = new Random();
|
||||
@ -132,23 +108,4 @@ public class ShadyUtil {
|
||||
} catch(NoSuchAlgorithmException e) { }
|
||||
return "";
|
||||
}
|
||||
|
||||
public static void test() {
|
||||
if(!GeneralConfig.enableDebugMode) return; //only run in debug mode
|
||||
|
||||
//unit test for smooshing
|
||||
MainRegistry.logger.debug(smoosh(smTest1, smTest2, smTest3, smTest4));
|
||||
|
||||
try {
|
||||
Class test = Class.forName(decode(offset(signature, -2)));
|
||||
Field field = ReflectionHelper.findField(test, decode(offset(checksum, -2)));
|
||||
if(field != null) {
|
||||
System.out.println("TEST SECTION START");
|
||||
//Class toLoad = Class.forName(decode(offset(testCase, -2)));
|
||||
//Field toRead = ReflectionHelper.findField(toLoad, decode(offset(testValue, -2)));
|
||||
//ModEventHandler.reference = toRead;
|
||||
System.out.println("TEST SECTION END");
|
||||
}
|
||||
} catch(Throwable e) { }
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -463,6 +463,7 @@ container.rbmkBoiler=RBMK Dampfkanal
|
||||
container.rbmkControl=RBMK Steuerstäbe
|
||||
container.rbmkControlAuto=RBMK Automatische Steuerstäbe
|
||||
container.rbmkHeater=RBMK Heizer
|
||||
container.rbmkKeyPad=Redstone-over-Radio Tastenfeld
|
||||
container.rbmkOutgasser=RBMK Bestrahlungskanal
|
||||
container.rbmkReaSim=RBMK Brennstäbe (ReaSim)
|
||||
container.rbmkRod=RBMK Brennstäbe
|
||||
@ -4888,7 +4889,9 @@ tile.rbmk_control_reasim.name=RBMK Steuerstäbe (ReaSim)
|
||||
tile.rbmk_control_reasim_auto.name=RBMK Automatische Steuerstäbe (ReaSim)
|
||||
tile.rbmk_crane_console.name=RBMK Kransteuerung
|
||||
tile.rbmk_display.name=RBMK Anzeigepanel
|
||||
tile.rbmk_gauge.name=Redstone-over-Radio Meter
|
||||
tile.rbmk_heater.name=RBMK-Heizer
|
||||
tile.rbmk_key_pad.name=Redstone-over-Radio Tastenfeld
|
||||
tile.rbmk_loader.name=RBMK-Dampfadapter
|
||||
tile.rbmk_moderator.name=RBMK Graphitmoderator
|
||||
tile.rbmk_outgasser.name=RBMK Bestrahlungskanal
|
||||
|
||||
@ -870,6 +870,7 @@ container.rbmkBoiler=RBMK Steam Channel
|
||||
container.rbmkControl=RBMK Control Rods
|
||||
container.rbmkControlAuto=RBMK Automatic Control Rods
|
||||
container.rbmkHeater=RBMK Fluid Heater
|
||||
container.rbmkKeyPad=Redstone-over-Radio Keypad
|
||||
container.rbmkOutgasser=RBMK Irradiation Channel
|
||||
container.rbmkReaSim=RBMK Fuel Rod (ReaSim)
|
||||
container.rbmkRod=RBMK Fuel Rod
|
||||
@ -6167,7 +6168,9 @@ tile.rbmk_control_reasim.name=RBMK Control Rods (ReaSim)
|
||||
tile.rbmk_control_reasim_auto.name=RBMK Automatic Control Rods (ReaSim)
|
||||
tile.rbmk_crane_console.name=RBMK Crane Console
|
||||
tile.rbmk_display.name=RBMK Display Panel
|
||||
tile.rbmk_gauge.name=Redstone-over-Radio Gauge
|
||||
tile.rbmk_heater.name=RBMK Fluid Heater
|
||||
tile.rbmk_key_pad.name=Redstone-over-Radio Keypad
|
||||
tile.rbmk_loader.name=RBMK Steam Connector
|
||||
tile.rbmk_loader.desc=Allows RBMKs to have both water and steam connections at the bottom$Place one water pipe below the RBMK column, then the connector,$then connect the steam duct to the connector.
|
||||
tile.rbmk_moderator.name=RBMK Graphite Moderator
|
||||
|
||||
@ -866,7 +866,7 @@ container.rbmkBoiler=Паровой канал РБМК
|
||||
container.rbmkControl=Регулирующие стержни РБМК
|
||||
container.rbmkControlAuto=Автоматические регулирующие стержни РБМК
|
||||
container.rbmkHeater=Жидкостный нагреватель РБМК
|
||||
container.rbmkOutgasser=Стержень облучения РБМК
|
||||
container.rbmkOutgasser=Колонна облучение РБМК
|
||||
container.rbmkReaSim=Топливные стержни РБМК (РеаСим)
|
||||
container.rbmkRod=Топливные стержни РБМК
|
||||
container.rbmkStorage=Колонна-хранилище РБМК
|
||||
@ -1303,134 +1303,6 @@ gui.weapon.quality.utility=Утилитарное
|
||||
gui.weapon.quality.secret=СЕКРЕТНОЕ
|
||||
gui.weapon.quality.debug=ОТЛАДКА
|
||||
|
||||
gun.make.ARMALITE=Armalite
|
||||
gun.make.AUTO_ORDINANCE=Корпорация Авто-Орденс
|
||||
gun.make.BAE=БАЕ Системс
|
||||
gun.make.BENELLI=Бенелли Арми СПА
|
||||
gun.make.BLACK_MESA=Исследовательский комплекс Чёрная Меза
|
||||
gun.make.CERIX=Церикс Магнус
|
||||
gun.make.COLT=Colt's Manufacturing Company
|
||||
gun.make.COMBINE=Вселенский Союз
|
||||
gun.make.CUBE=Куб 2: Sauerbraten
|
||||
gun.make.DRG=Deep Rock Galactic
|
||||
gun.make.ENZINGER=Энзингер Юнион
|
||||
gun.make.EQUESTRIA=Equestria Missile Systems
|
||||
gun.make.FLIMFLAM=ФлимФлэм Индастриз
|
||||
gun.make.F_STRONG=Форт Стронг
|
||||
gun.make.GLORIA=Gloria GmbH
|
||||
gun.make.HASBRO=Хасбро
|
||||
gun.make.H_AND_K=Heckler & Koch
|
||||
gun.make.H_AND_R=Harrington & Richardson
|
||||
gun.make.IF=Огненные Подковы
|
||||
gun.make.IMI=Военная Промышленность Израиля
|
||||
gun.make.IMI_BIGMT=IMI / Большая Гора
|
||||
gun.make.LANGFORD=Langford Research Laboratories
|
||||
gun.make.LUNA=Корпус Лунной Обороны
|
||||
gun.make.MAGNUM_R_IMI=Magnum Research / Israel Military Industries
|
||||
gun.make.MANN=Манн Ко.
|
||||
gun.make.MAXIM=Хайрам Максим
|
||||
gun.make.METRO=Оружейники Метро
|
||||
gun.make.MWT=Лаборатории прототипов МВТ
|
||||
gun.make.NAWS=Kayarm Industries
|
||||
gun.make.ERFURT=Erfurter Maschinenfabrik Geipel
|
||||
gun.make.NONE=-
|
||||
gun.make.RAYTHEON=Raytheon Missile Systems
|
||||
gun.make.REMINGTON=Remington Arms
|
||||
gun.make.ROCKWELL=Корпорация "Рокуэлл"
|
||||
gun.make.ROCKWELL_U=Корпорация "Рокуэлл"?
|
||||
gun.make.RYAN=Ryan Industries
|
||||
gun.make.SAAB=Saab Bofors Dynamics
|
||||
gun.make.SACO=Saco Defense / US Ordnance
|
||||
gun.make.TULSKY=Тульский Оружейный Завод
|
||||
gun.make.UAC=Объединённая Аэрокосмическая Корпорация
|
||||
gun.make.UNKNOWN=???
|
||||
gun.make.WESTTEK=WestTek
|
||||
gun.make.WGW=Wilhelm-Gustloff-Werke
|
||||
gun.make.WINCHESTER=Winchester Repeating Arms Company
|
||||
gun.make.WINCHESTER_BIGMT=Winchester Repeating Arms Company / Большая Гора
|
||||
|
||||
gun.name.ar15_50=Модификация AR-15 под .50 BMG
|
||||
gun.name.baeAR=Стандартная винтовка британнской армии
|
||||
gun.name.bel=Катапульта для жар-яиц
|
||||
gun.name.benelli=Benelli M4 Super 90
|
||||
gun.name.benelliDrum=Benelli M4 Super 90 (Барабанный магазин)
|
||||
gun.name.bio=RI No. 2 Mark 1
|
||||
gun.name.bolter=Болтер модели "Мантикора"
|
||||
gun.name.congoLake=Помповый гранатомет Congo Lake
|
||||
gun.name.cPython=Colt Python
|
||||
gun.name.cz53=Персональный миниган CZ53
|
||||
gun.name.cz57=Миниган "Мститель" CZ57
|
||||
gun.name.dart=Игломёт
|
||||
gun.name.deagle=IMI Desert Eagle
|
||||
gun.name.emp=Проектор ЭМИ-сфер
|
||||
gun.name.extinguisher=6кг огнетушитель PROTEX
|
||||
gun.name.ffiV=FFI Viper
|
||||
gun.name.ffiVInox=FFI Viper Inox
|
||||
gun.name.ffiVLead=FFI Viper Lead
|
||||
gun.name.ffiVN1=FFI Viper N1
|
||||
gun.name.ffiVN2=FFI Viper N2
|
||||
gun.name.ffiVUltra=FFI Viper Ultra
|
||||
gun.name.ffivBling=FFI Viper Bling
|
||||
gun.name.ffivSatur=FFI Viper D-25A
|
||||
gun.name.g36=Heckler & Koch Gewehr 36
|
||||
gun.name.gPistol=Granatpistole HK69
|
||||
gun.name.gustav=Безоткатная винтовка "Карл-Густав" M1
|
||||
gun.name.ifHorseshoe=IF-18 "Подкова"
|
||||
gun.name.ifPit=IF-18 "Подкова" - Бездонная яма
|
||||
gun.name.ifScope=IF-18 "Подкова" с прицелом
|
||||
gun.name.ifStorm=IF-18 "Подкова" - Сильвер Шторм
|
||||
gun.name.ifVanity=IF-18 "Подкова" - Ванити
|
||||
gun.name.karl=M1 Karl-Gerät
|
||||
gun.name.ks23=KS-23
|
||||
gun.name.lacunae=Тётушка Лакунэ
|
||||
gun.name.lasetDet=Hopeville Laser Detonator
|
||||
gun.name.lunaAR=1936 Bishamonten type Assault Rifle
|
||||
gun.name.lunaGun=1958 Lunatic Gun (Revised)
|
||||
gun.name.lunaHLR=1944 Chang'e type LMG
|
||||
gun.name.lunaShotty=1978 Guan Yu type Scattergun (Revision 1)
|
||||
gun.name.lunaSMG=1936 Ānanda type SMG
|
||||
gun.name.lunaSniper=1909 Rāhula type Anti-Material Rifle
|
||||
gun.name.lunaTWR=Time Warp Rifle
|
||||
gun.name.m2=Browning machine gun, cal. .50, M2, HB
|
||||
gun.name.m42=Тактическая ядерная катапульта M-42
|
||||
gun.name.m42MIRV=Экспериментальная РГН M-42
|
||||
gun.name.m60=Пулемёт калибра 7.62мм M60
|
||||
gun.name.maxim=Пулемёт "Максим"
|
||||
gun.name.maximDouble=Сдвоенный пулемёт "Максим"
|
||||
gun.name.mg3=Universal-Maschinengewehr Modell 3
|
||||
gun.name.mp40=Maschinenpistole 40
|
||||
gun.name.nerf=Неизвестный бластер NERF
|
||||
gun.name.osipr=Стандартная пульсовая винтовка Патруля
|
||||
gun.name.panz=Raketenpanzerbüchse 54
|
||||
gun.name.quadro=Счетверённый переносной ракетный гранатомёт
|
||||
gun.name.remington870=Remington 870
|
||||
gun.name.revolverCursed=Стандартный пистолет британнской армии
|
||||
gun.name.sauer=Дробовик Sauer
|
||||
gun.name.spas12=Franchi SPAS-12
|
||||
gun.name.spiw=H&R SPIW
|
||||
gun.name.stinger=FIM-92 Stinger man-portable air-defense system
|
||||
gun.name.stingerOneSky=The One Sky Stinger
|
||||
gun.name.supershotty=Двуствольный дробовик
|
||||
gun.name.tau=Тау-пушка XVL1456
|
||||
gun.name.tommy9=Модификация пистолета-пулемёта M1A1 под 9мм
|
||||
gun.name.tommy=Пистолет-пулемёт M1A1
|
||||
gun.name.topaz=Тяжёлый огнемёт
|
||||
gun.name.uacCarbine=UAC-41 Carbine
|
||||
gun.name.uacDeagle=UAC-H54 "Martian Raptor" Automag
|
||||
gun.name.uacDMR=UAC-30 Designated Marksman Rifle
|
||||
gun.name.uacLMG=UAC-49 Light Machine Gun
|
||||
gun.name.uacPistol=UAC .45 Standard Issue Handgun
|
||||
gun.name.uacSMG=UAC Compact Sub-Machine Gun
|
||||
gun.name.uboinik=Револьверный дробовик "Убойник"
|
||||
gun.name.uzi=IMI Uzi
|
||||
gun.name.uziSatur=IMI Uzi D-25A
|
||||
gun.name.win1887=Winchester Model 1887
|
||||
gun.name.win1887Inox=Winchester Model 1887 Inox
|
||||
gun.name.win20Inox=Winchester Model 20 Inox
|
||||
gun.name.win20Poly=Winchester Model 20 Polymer
|
||||
gun.name.win20Satur=Winchester Model 20 D-25A
|
||||
gun.name.zomg=Пушка отрицательной энергии EMC101
|
||||
|
||||
hadron.analysis=Анализ...
|
||||
hadron.buttonOn=Камера анализа (если есть) включена
|
||||
hadron.buttonOff=Камера анализа выключена
|
||||
@ -1829,106 +1701,6 @@ 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_percussion.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 калибра
|
||||
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 Магнум (ДУ)
|
||||
item.ammo_44_phosphorus.name=Пуля калибра .44 Магнум (БФ)
|
||||
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_45.name=.45 ACP Round
|
||||
item.ammo_45_ap.name=Пуля 45-го калибра ACP (Бронебойная)
|
||||
item.ammo_45_du.name=Пуля 45-го калибра ACP (С урановым наконечником)
|
||||
item.ammo_4gauge.name=Картечь 4 калибра
|
||||
item.ammo_4gauge_balefire.name=23мм Жар-граната
|
||||
item.ammo_4gauge_canister.name=23мм Ракета (Картечь)
|
||||
item.ammo_4gauge_claw.name=Картечь 4 калибра (Клешни)
|
||||
item.ammo_4gauge_explosive.name=23мм граната
|
||||
item.ammo_4gauge_flechette.name=Игольчатая картечь 4 калибра
|
||||
item.ammo_4gauge_flechette_phosphorus.name=Игольчатая картечь 4 калибра (БФ)
|
||||
item.ammo_4gauge_kampf.name=23мм Ракета
|
||||
item.ammo_4gauge_semtex.name=23мм Шахтёрский заряд
|
||||
item.ammo_4gauge_sleek.name=Картечь 4 калибра (IF-R&D)
|
||||
item.ammo_4gauge_slug.name=Твёрдая Стальная пуля 4 калибра
|
||||
item.ammo_4gauge_titan.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 (ДУ)
|
||||
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 (ДУ)
|
||||
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 (БФ)
|
||||
item.ammo_50bmg_sleek.name=Патрон калибра .50 BMG (IF-R&D)
|
||||
item.ammo_50bmg_star.name=Патрон калибра .50 BMG (Звёздный металл)
|
||||
item.ammo_secret.bmg50_black.name=Патрон калибра .50 BMG (Простреливающий)
|
||||
item.ammo_556.name=5.56мм патрон
|
||||
item.ammo_556_ap.name=5.56мм патрон (Бронебойный)
|
||||
item.ammo_556_chlorophyte.name=5.56мм патрон (Хлорофит)
|
||||
item.ammo_556_du.name=5.56мм патрон (ДУ)
|
||||
item.ammo_556_flechette.name=Игольчатый 5.56-патрон
|
||||
item.ammo_556_flechette_chlorophyte.name=Игольчатый 5.56-патрон (Хлорофит)
|
||||
item.ammo_556_flechette_du.name=Игольчатый 5.56-патрон (Урановый бронебойный)
|
||||
item.ammo_556_flechette_incendiary.name=Игольчатый 5.56-патрон (Зажигательный)
|
||||
item.ammo_556_flechette_phosphorus.name=Игольчатый 5.56-патрон (Фосфорный наконечник)
|
||||
item.ammo_556_flechette_sleek.name=Игольчатый 5.56-патрон (IF-R&D)
|
||||
item.ammo_556_k.name=5.56мм К-Патрон
|
||||
item.ammo_556_phosphorus.name=5.56мм патрон (БФ)
|
||||
item.ammo_556_sleek.name=5.56мм патрон (IF-R&D)
|
||||
item.ammo_556_star.name=5.56мм патрон (Звёздный металл)
|
||||
item.ammo_556_tracer.name=5.56мм патрон (Трассирующий снаряд)
|
||||
item.ammo_5mm.name=5-мм патрон
|
||||
item.ammo_5mm_chlorophyte.name=5-мм патрон (Хлорофит)
|
||||
item.ammo_5mm_du.name=5-мм патрон (ДУ)
|
||||
item.ammo_5mm_explosive.name=5-мм патрон (Взрывной)
|
||||
item.ammo_5mm_star.name=5-мм патрон (Звёздный металл)
|
||||
item.ammo_75bolt.name=Магазин болтов .75 (30rnd)
|
||||
item.ammo_75bolt_incendiary.name=Магазин зажигательных болтов .75 (30rnd)
|
||||
item.ammo_75bolt_he.name=Магазин фугасных болтов .75 (30rnd)
|
||||
item.ammo_762.name=7.62мм патрон
|
||||
item.ammo_762_ap.name=7.62мм патрон (Бронебойный)
|
||||
item.ammo_762_du.name=7.62мм патрон (С урановым наконечником)
|
||||
item.ammo_762_k.name=7.62 мм K-образный патрон
|
||||
item.ammo_762_phosphorus.name=7.62мм патрон (БФ)
|
||||
item.ammo_762_tracer.name=7.62мм патрон (Трассирующий)
|
||||
item.ammo_9mm.name=9-мм патрон
|
||||
item.ammo_9mm_ap.name=9-мм патрон (Бронебойный)
|
||||
item.ammo_9mm_chlorophyte.name=9-мм патрон (Хлорофит)
|
||||
item.ammo_9mm_du.name=9-мм патрон (ДУ)
|
||||
item.ammo_9mm_rocket.name=9-мм ракета
|
||||
item.ammo_arty.name=16-дюймовый артиллерийский снаряд
|
||||
item.ammo_arty_cargo.name=16-дюймовый артиллерийский снаряд для экспресс-доставки
|
||||
item.ammo_arty_chlorine.name=Хлорный 16-дюймовый артиллерийский снаряд
|
||||
@ -1943,39 +1715,18 @@ item.ammo_arty_phosphorus.name=Фосфорный 16-дюймовый артил
|
||||
item.ammo_bag.name=Сумка для боеприпасов
|
||||
item.ammo_bag_infinite.name=Бесконечная сумка для боеприпасов
|
||||
item.ammo_arty_phosphorus_multi.name=Фосфорный 16-дюймовый мульти-снаряд
|
||||
item.ammo_cell.name=Энерго-патроны
|
||||
item.ammo_coilgun.name=Вольфрамовый шар для гаусс-пушки
|
||||
item.ammo_coilgun_du.name=Ферроурановый шар для гаусс-пушки
|
||||
item.ammo_coilgun_rubber.name=Резиновый шар для гаусс-пушки
|
||||
item.ammo_container.name=Контейнер с боеприпасами
|
||||
item.ammo_container.desc=Выдаёт патроны не более чем для трёх оружий с хотбара.
|
||||
item.ammo_container.1.desc=Выдаёт патроны не более чем для трёх оружий с хотбара.$Это не распространяется на мини-ядерные заряды и прочие высокоуровневые боеприпасы.
|
||||
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_nuclear.name=Серебряная пуля (Атомная)
|
||||
item.ammo_fuel.name=Бак с дизелем
|
||||
item.ammo_fuel_gas.name=Бак с газом
|
||||
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_he.name=40мм граната (Фугасная)
|
||||
item.ammo_grenade_incendiary.name=40мм граната (Зажигательная)
|
||||
item.ammo_grenade_kampf.name=40мм-Ракета
|
||||
item.ammo_grenade_leadburster.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мм граната (Химическая)
|
||||
item.ammo_grenade_tracer.name=40мм Учебная граната
|
||||
item.ammo_himars_standard.name=227-мм управляемый артиллерийский ракетный снаряд
|
||||
item.ammo_himars_standard_he.name=227-мм управляемый артиллерийский ракетный снаряд (Фугасный)
|
||||
item.ammo_himars_standard_lava.name=227-мм управляемый артиллерийский ракетный снаряд (Лава)
|
||||
@ -1984,56 +1735,24 @@ item.ammo_himars_standard_tb.name=227-мм управляемый артилле
|
||||
item.ammo_himars_standard_wp.name=227-мм управляемый артиллерийский ракетный снаряд (БФ)
|
||||
item.ammo_himars_single.name=610-мм управляемый артиллерийский ракетный снаряд
|
||||
item.ammo_himars_single_tb.name=610-мм управляемый артиллерийский ракетный снаряд (Термобарический)
|
||||
item.ammo_luna.name=Лунный снайперский саботажный снаряд
|
||||
item.ammo_luna_explosive.name=Лунный снайперский взрывной снаряд
|
||||
item.ammo_luna_incendiary.name=Лунный снайперский зажигательный снаряд
|
||||
item.ammo_mirv.name=МИРВ-минизаряд
|
||||
item.ammo_mirv_high.name=МИРВ-минизаряд (Высокомощный)
|
||||
item.ammo_mirv_low.name=МИРВ-минизаряд (Маломощный)
|
||||
item.ammo_mirv_safe.name=МИРВ-минизаряд (Безопасный)
|
||||
item.ammo_mirv_special.name=МИЛВ-минизаряд
|
||||
item.ammo_nuke.name=Ядерный минизаряд
|
||||
item.ammo_nuke_barrel.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_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-мм ракета (Фугасная)
|
||||
item.ammo_rocket_incendiary.name=84-мм ракета (Зажигательная)
|
||||
item.ammo_rocket_nuclear.name=84-мм ракета (Привет)
|
||||
item.ammo_rocket_phosphorus.name=84-мм ракета (БФ)
|
||||
item.ammo_rocket_rpc.name=84-мм Ракета-Бензопила
|
||||
item.ammo_rocket_shrapnel.name=84-мм ракета (Осколочная)
|
||||
item.ammo_rocket_sleek.name=84-мм ракета (IF-R&D)
|
||||
item.ammo_rocket_toxic.name=84-мм ракета (Химическая)
|
||||
item.ammo_shell.name=240мм Снаряд
|
||||
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
|
||||
item.ammo_secret.bmg50_equestrian.name=Патрон калибра .50 BMG (Разрушитель)
|
||||
item.ammo_secret.folly_nuke.name=Серебрянная пуля, ядерная
|
||||
item.ammo_secret.bmg50_equestrian.name=Патрон .50 BMG (Разрушитель)
|
||||
item.ammo_secret.folly_nuke.name=Серебрянная пуля (Ядерная)
|
||||
item.ammo_secret.folly_sm.name=Серебрянная пуля
|
||||
item.ammo_secret.g12_equestrian.name=12-й калибр Railway Spike Shot
|
||||
item.ammo_secret.m44_equestrian.name=.44 магнум Разрыватель голов
|
||||
item.ammo_secret.p35_800.name=.35-800 V9
|
||||
item.ammo_secret.p35_800_bl.name=.35-800 V9 (Чёрная Молния)
|
||||
item.ammo_secret.g12_equestrian.name=Картечь 12-го калибра (Железнодорожная гвоздь)
|
||||
item.ammo_secret.m44_equestrian.name=Патрон .44 магнум (Разрыватель голов)
|
||||
item.ammo_secret.p35_800.name=Патрон .35-800 V9
|
||||
item.ammo_secret.p35_800_bl.name=Патрон .35-800 V9 (Чёрная Молния)
|
||||
item.ammo_secret.bmg50_black.name=Патрон .50 BMG (Простреливающий)
|
||||
item.ammo_standard.b75.name=.75 болт
|
||||
item.ammo_standard.b75_exp.name=.75 болт (Взрывной)
|
||||
item.ammo_standard.b75_inc.name=.75 болт (Зажигательный)
|
||||
item.ammo_standard.bmg50_ap.name=.50 BMG патрон (Бронебойный)
|
||||
item.ammo_standard.bmg50_he.name=.50 BMG патрон (Разрывной)
|
||||
item.ammo_standard.bmg50_du.name=.50 BMG патрон (Обеднённый уран)
|
||||
item.ammo_standard.bmg50_fmj.name=.50 BMG патрон (Цельнометаллическая оболочка)
|
||||
item.ammo_standard.bmg50_sm.name=.50 BMG патрон (Звёздный Металл)
|
||||
item.ammo_standard.bmg50_jhp.name=.50 BMG патрон (Экспансивный+)
|
||||
item.ammo_standard.bmg50_sp.name=.50 BMG патрон (Экспансивный)
|
||||
item.ammo_standard.bmg50_ap.name=Патрон .50 BMG (Бронебойный)
|
||||
item.ammo_standard.bmg50_he.name=Патрон .50 BMG (Разрывной)
|
||||
item.ammo_standard.bmg50_du.name=Патрон .50 BMG (Обеднённый уран)
|
||||
item.ammo_standard.bmg50_fmj.name=Патрон .50 BMG (Цельнометаллическая оболочка)
|
||||
item.ammo_standard.bmg50_sm.name=Патрон .50 BMG (Звёздный Металл)
|
||||
item.ammo_standard.bmg50_jhp.name=Патрон .50 BMG (Экспансивный+)
|
||||
item.ammo_standard.bmg50_sp.name=Патрон .50 BMG (Экспансивный)
|
||||
item.ammo_standard.capacitor.name=Оружейный конденсатор (Стандартный)
|
||||
item.ammo_standard.capacitor_ir.name=Оружейный конденсатор (Коротковолновой)
|
||||
item.ammo_standard.capacitor_overcharge.name=Оружейный конденсатор (Перегруженный)
|
||||
@ -2223,7 +1942,7 @@ item.battery_creative.name=Бесконечная батарейка
|
||||
item.battery_pack.battery_lead.name=Свинцово-серная батарея
|
||||
item.battery_pack.battery_lithium.name=Литий-ионная батарея
|
||||
item.battery_pack.battery_quantum.name=Квантовая батарея
|
||||
item.battery_pack.battery_redstone.name=Краснокаменная батарея
|
||||
item.battery_pack.battery_redstone.name=Редстоуновая батарея
|
||||
item.battery_pack.battery_schrabidium.name=Шрабидиевая батарея
|
||||
item.battery_pack.battery_sodium.name=Натриево-железная батарея
|
||||
item.battery_pack.capacitor_bismuth.name=Висмутовый конденсатор
|
||||
@ -2343,10 +2062,11 @@ item.billet_u235.name=Заготовка урана-235
|
||||
item.billet_u238.name=Заготовка урана-238
|
||||
item.billet_uranium.name=Заготовка урана
|
||||
item.billet_uranium_fuel.name=Заготовка уранового топлива
|
||||
item.billet_uzh.name=Заготовка урана-циркониевого гидрида
|
||||
item.billet_yharonite.name=Заготовка яронита
|
||||
item.billet_zfb_am_mix.name=Заготовка ЦТС америция реакторного качества
|
||||
item.billet_zfb_bismuth.name=Заготовка ЦТС висмута
|
||||
item.billet_zfb_pu241.name=Заготовка ЦТС плутония-241
|
||||
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=Биомасса
|
||||
@ -3145,6 +2865,7 @@ item.gun_lag.name=Комически длинный пистолет
|
||||
item.gun_laser_pistol.name=Лазерный пистолет
|
||||
item.gun_laser_pistol_morning_glory.name=Лазерный пистолет "Morning Glory"
|
||||
item.gun_laser_pistol_pew_pew.name=Лазерный пистолет "Pew Pew"
|
||||
item.gun_lasrifle.name=Лазерная винтовка
|
||||
item.gun_liberator.name=Дробовик "Liberator"
|
||||
item.gun_light_revolver.name=Револьвер переломного действия
|
||||
item.gun_light_revolver_atlas.name=Револьвер "Atlas"
|
||||
@ -3379,10 +3100,10 @@ item.item_expensive.heavy_frame.name=Тяжёлый каркас
|
||||
item.item_expensive.lead_plating.name=Радиационно-стойкое покрытие
|
||||
item.item_expensive.plastic.name=Пластиковые панели
|
||||
item.item_expensive.steel_plating.name=Стальная обшивка с болтовым соединением
|
||||
item.item_secret.aberrator.name=Часть Аберратора
|
||||
item.item_secret.canister.name=Композит SB-26
|
||||
item.item_secret.aberrator.name=Часть "Aberrator"
|
||||
item.item_secret.canister.name=Композит "SB-26"
|
||||
item.item_secret.controller.name=Проприетарный блок управления
|
||||
item.item_secret.folly.name=Фрагмент Безумия
|
||||
item.item_secret.folly.name=Фрагмент "Folly"
|
||||
item.item_secret.selenium_steel.name=Слиток селениевой стали
|
||||
item.iv_blood.name=Пакет с кровью
|
||||
item.iv_empty.name=Пакет для внутривенного введения
|
||||
@ -3980,33 +3701,33 @@ item.pellet_mercury.name=Ртутные гранулы
|
||||
item.pellet_mes.name=Среднеобогащённая шрабидиевая Ватцз-пеллета
|
||||
item.pellet_meteorite.name=Метеоритные гранулы
|
||||
item.pellet_neptunium.name=Нептуниевая Ватцз-пеллета
|
||||
item.pellet_rtg.name=РИТЭГ-пеллета из плутония-238
|
||||
item.pellet_rtg.name=РИТЭГ-пеллета (Плутоний-238)
|
||||
item.pellet_rtg.desc=РИТЭГ-пеллета для бесконечной энергии! (почти)
|
||||
item.pellet_rtg_actinium.name=РИТЭГ-пеллета из актиния-227
|
||||
item.pellet_rtg_actinium.name=РИТЭГ-пеллета (Актиний-227)
|
||||
item.pellet_rtg_actinium.desc=Сияние голубого света и бета-лучей.
|
||||
item.pellet_rtg_americium.name=РИТЭГ-пеллета из америция-241
|
||||
item.pellet_rtg_americium.name=РИТЭГ-пеллета (Америций-241)
|
||||
item.pellet_rtg_americium.desc=Редкий и надежный, старый добрый Америций!
|
||||
item.pellet_rtg_berkelium.name=РИТЭГ-пеллета из берклия-248
|
||||
item.pellet_rtg_berkelium.desc=Экзотический источник альфа-излучения, служит дольше, чем америций!
|
||||
item.pellet_rtg_cobalt.name=РИТЭГ-пеллета из кобальта-60
|
||||
item.pellet_rtg_cobalt.name=РИТЭГ-пеллета (Кобальт-60)
|
||||
item.pellet_rtg_cobalt.desc=Не лучший для РИТЭГ энергии, но хорош для гамма-радиации!
|
||||
item.pellet_rtg_depleted.bismuth.name=Распавшаяся РИТЭГ-пеллета висмута
|
||||
item.pellet_rtg_depleted.lead.name=Распавшаяся РИТЭГ-пеллета свинца
|
||||
item.pellet_rtg_depleted.neptunium.name=Распавшаяся РИТЭГ-пеллета нептуния
|
||||
item.pellet_rtg_depleted.mercury.name=Распавшаяся РИТЭГ-пеллета ртути
|
||||
item.pellet_rtg_depleted.nickel.name=Распавшаяся РИТЭГ-пеллета никеля
|
||||
item.pellet_rtg_depleted.zirconium.name=Распавшаяся РИТЭГ-пеллета циркония
|
||||
item.pellet_rtg_lead.name=РИТЭГ-пеллета из свинца-209
|
||||
item.pellet_rtg_depleted.bismuth.name=Распавшаяся РИТЭГ-пеллета (Висмут)
|
||||
item.pellet_rtg_depleted.lead.name=Распавшаяся РИТЭГ-пеллета (Свинец)
|
||||
item.pellet_rtg_depleted.neptunium.name=Распавшаяся РИТЭГ-пеллета (Нептуний)
|
||||
item.pellet_rtg_depleted.mercury.name=Распавшаяся РИТЭГ-пеллета (Ртуть)
|
||||
item.pellet_rtg_depleted.nickel.name=Распавшаяся РИТЭГ-пеллета (Никель)
|
||||
item.pellet_rtg_depleted.zirconium.name=Распавшаяся РИТЭГ-пеллета (Цирконий)
|
||||
item.pellet_rtg_lead.name=РИТЭГ-пеллета (Свинец-209)
|
||||
item.pellet_rtg_lead.desc=Излучение приведет к неминуемой смерти.
|
||||
item.pellet_rtg_gold.name=РИТЭГ-пеллета из золота-198
|
||||
item.pellet_rtg_gold.name=РИТЭГ-пеллета (Золото-198)
|
||||
item.pellet_rtg_gold.desc=Изготовлена из редкого, очень нестабильного изотопа золота.
|
||||
item.pellet_rtg_polonium.name=РИТЭГ-пеллета из полония-210
|
||||
item.pellet_rtg_polonium.name=РИТЭГ-пеллета (Полоний-210)
|
||||
item.pellet_rtg_polonium.desc=Мощная РИТЭГ-пеллета, изготовленная из лучшего полония!
|
||||
item.pellet_rtg_strontium.name=РИТЭГ-пеллета из стронция-90
|
||||
item.pellet_rtg_strontium.name=РИТЭГ-пеллета (Стронций-90)
|
||||
item.pellet_rtg_strontium.desc=Известен штату Калифорния...
|
||||
item.pellet_rtg_radium.name=РИТЭГ-пеллета из радия-226
|
||||
item.pellet_rtg_radium.name=РИТЭГ-пеллета (Радий-226)
|
||||
item.pellet_rtg_radium.desc=Отличная стартовая пеллета, полученная из натурального радия!
|
||||
item.pellet_rtg_weak.name=Слабая урановая РИТЭГ-топливная пеллета
|
||||
item.pellet_rtg_weak.name=РИТЭГ-пеллета (Слабый уран)
|
||||
item.pellet_rtg_weak.desc=Более дешёвая и слабая пеллета, теперь с большим количеством U238!
|
||||
item.pellet_schrabidium.name=Чистая шрабидиевая Ватцз-пеллета
|
||||
item.photo_panel.name=Фотоэлектрическая панель
|
||||
@ -4063,13 +3784,13 @@ item.plate_desh.name=Составная пластина из деш
|
||||
item.plate_dineutronium.name=Составная пластина из динейтрония
|
||||
item.plate_dura_steel.name=Пластина быстрорежущей стали
|
||||
item.plate_euphemium.name=Составная пластина из эвфемия
|
||||
item.plate_fuel_mox.name=МОКС-топливная пластина
|
||||
item.plate_fuel_pu238be.name=Плутоний-238-Бериллевая топливная пластина
|
||||
item.plate_fuel_pu239.name=Высокообогащённая плутониевая-239 топливная пластина
|
||||
item.plate_fuel_ra226be.name=Радий-226-Бериллевая топливная пластина
|
||||
item.plate_fuel_sa326.name=Высокообогащённая шрабидий-326 топливная пластина
|
||||
item.plate_fuel_u233.name=Высокообогащённая уран-233 топливная пластина
|
||||
item.plate_fuel_u235.name=Высокообогащённая уран-235 топливная пластина
|
||||
item.plate_fuel_mox.name=Топливная пластина (МОКС)
|
||||
item.plate_fuel_pu238be.name=Топливная пластина (Плутоний-238-бериллий)
|
||||
item.plate_fuel_pu239.name=Топливная пластина (Высокообогащённый плутоний-239)
|
||||
item.plate_fuel_ra226be.name=Топливная пластина (Радий-226-бериллий)
|
||||
item.plate_fuel_sa326.name=Топливная пластина (Высокообогащённый шрабидий-326)
|
||||
item.plate_fuel_u233.name=Топливная пластина (Высокообогащённый уран-233)
|
||||
item.plate_fuel_u235.name=Топливная пластина (Высокообогащённый уран-235)
|
||||
item.plate_gold.name=Золотая пластина
|
||||
item.plate_gunmetal.name=Пластина пушечной бронзы
|
||||
item.plate_iron.name=Железная пластина
|
||||
@ -4224,51 +3945,51 @@ item.protection_charm.name=Талисман защиты
|
||||
item.prototype_kit.name=Комплект Прототипа
|
||||
item.pudding.name=Пудинг
|
||||
item.pudding.desc=Что, если бы он сделал?$Что, если бы он не сделал?$Что, если бы если мир был сделан из пуддинга?
|
||||
item.pwr_fuel.bfb_am_mix.name=Стержень ВВЭР ЦБР с реакторным америцием
|
||||
item.pwr_fuel.bfb_pu241.name=Стержень ВВЭР ЦБР с плутонием-241
|
||||
item.pwr_fuel.hea242.name=Топливный стержень ВВЭР с высокообогащённым америцием-242
|
||||
item.pwr_fuel.hen237.name=Топливный стержень ВВЭР с высокообогащённым нептунием-237
|
||||
item.pwr_fuel.hep239.name=Топливный стержень ВВЭР с высокообогащённым плутонием-239
|
||||
item.pwr_fuel.hep241.name=Топливный стержень ВВЭР с высокообогащённым плутонием-241
|
||||
item.pwr_fuel.hes326.name=Топливный стержень ВВЭР с высокообогащённым шрабидием-326
|
||||
item.pwr_fuel.hes327.name=Топливный стержень ВВЭР с высокообогащённым шрабидием-327
|
||||
item.pwr_fuel.heu233.name=Топливный стержень ВВЭР с высокообогащённым ураном-233
|
||||
item.pwr_fuel.heu235.name=Топливный стержень ВВЭР с высокообогащённым ураном-235
|
||||
item.pwr_fuel.mea.name=Топливный стержень ВВЭР со среднеобогащённым америцием
|
||||
item.pwr_fuel.men.name=Топливный стержень ВВЭР со среднеобогащённым нептунием
|
||||
item.pwr_fuel.mep.name=Топливный стержень ВВЭР со среднеобогащённым плутонием
|
||||
item.pwr_fuel.meu.name=Топливный стержень ВВЭР со среднеобогащённым ураном
|
||||
item.pwr_fuel.mox.name=Топливный стержень ВВЭР с МОКС-топливом
|
||||
item.pwr_fuel_depleted.bfb_am_mix.name=Обеднённый стержень ВВЭР ЦБР с реакторным америцием
|
||||
item.pwr_fuel_depleted.bfb_pu241.name=Обеднённый стержень ВВЭР ЦБР с плутонием-241
|
||||
item.pwr_fuel_depleted.hea242.name=Обеднённый топливный стержень ВВЭР с высокообогащённым америцием-242
|
||||
item.pwr_fuel_depleted.hen237.name=Обеднённый топливный стержень ВВЭР с высокообогащённым нептунием-237
|
||||
item.pwr_fuel_depleted.hep239.name=Обеднённый топливный стержень ВВЭР с высокообогащённым плутонием-239
|
||||
item.pwr_fuel_depleted.hep241.name=Обеднённый топливный стержень ВВЭР с высокообогащённым плутонием-241
|
||||
item.pwr_fuel_depleted.hes326.name=Обеднённый топливный стержень ВВЭР с высокообогащённым шрабидием-326
|
||||
item.pwr_fuel_depleted.hes327.name=Обеднённый топливный стержень ВВЭР с высокообогащённым шрабидием-327
|
||||
item.pwr_fuel_depleted.heu233.name=Обеднённый топливный стержень ВВЭР с высокообогащённым ураном-233
|
||||
item.pwr_fuel_depleted.heu235.name=Обеднённый топливный стержень ВВЭР с высокообогащённым ураном-235
|
||||
item.pwr_fuel_depleted.mea.name=Обеднённый топливный стержень ВВЭР со среднеобогащённым америцием
|
||||
item.pwr_fuel_depleted.men.name=Обеднённый топливный стержень ВВЭР со среднеобогащённым нептунием
|
||||
item.pwr_fuel_depleted.mep.name=Обеднённый топливный стержень ВВЭР со среднеобогащённым плутонием
|
||||
item.pwr_fuel_depleted.meu.name=Обеднённый топливный стержень ВВЭР со среднеобогащённым ураном
|
||||
item.pwr_fuel_depleted.mox.name=Обеднённый топливный стержень ВВЭР с МОКС-топливом
|
||||
item.pwr_fuel_hot.bfb_am_mix.name=Горячий стержень ВВЭР ЦБР с реакторным америцием
|
||||
item.pwr_fuel_hot.bfb_pu241.name=Горячий стержень ВВЭР ЦБР с плутонием-241
|
||||
item.pwr_fuel_hot.hea242.name=Горячий стержень ВВЭР с высокообогащённым америцием-242
|
||||
item.pwr_fuel_hot.hen237.name=Горячий стержень ВВЭР с высокообогащённым нептунием-237
|
||||
item.pwr_fuel_hot.hep239.name=Горячий стержень ВВЭР с высокообогащённым плутонием-239
|
||||
item.pwr_fuel_hot.hep241.name=Горячий стержень ВВЭР с высокообогащённым плутонием-241
|
||||
item.pwr_fuel_hot.hes326.name=Горячий стержень ВВЭР с высокообогащённым шрабидием-326
|
||||
item.pwr_fuel_hot.hes327.name=Горячий стержень ВВЭР с высокообогащённым шрабидием-327
|
||||
item.pwr_fuel_hot.heu233.name=Горячий стержень ВВЭР с высокообогащённым ураном-233
|
||||
item.pwr_fuel_hot.heu235.name=Горячий стержень ВВЭР с высокообогащённым ураном-235
|
||||
item.pwr_fuel_hot.mea.name=Горячий стержень ВВЭР со среднеобогащённым америцием
|
||||
item.pwr_fuel_hot.men.name=Горячий стержень ВВЭР со среднеобогащённым нептунием
|
||||
item.pwr_fuel_hot.mep.name=Горячий стержень ВВЭР со среднеобогащённым плутонием
|
||||
item.pwr_fuel_hot.meu.name=Горячий стержень ВВЭР со среднеобогащённым ураном
|
||||
item.pwr_fuel_hot.mox.name=Горячий стержень ВВЭР с МОКС-топливом
|
||||
item.pwr_fuel.bfb_am_mix.name=Топливный стержень ВВЭР (Реакторный америций ВБР)
|
||||
item.pwr_fuel.bfb_pu241.name=Топливный стержень ВВЭР (Плутоний-241 ВБР)
|
||||
item.pwr_fuel.hea242.name=Топливный стержень ВВЭР (Высокообогащённый америций-242)
|
||||
item.pwr_fuel.hen237.name=Топливный стержень ВВЭР (Высокообогащённый нептуний-237)
|
||||
item.pwr_fuel.hep239.name=Топливный стержень ВВЭР (Высокообогащённый плутоний-239)
|
||||
item.pwr_fuel.hep241.name=Топливный стержень ВВЭР (Высокообогащённый плутоний-241)
|
||||
item.pwr_fuel.hes326.name=Топливный стержень ВВЭР (Высокообогащённый шрабидий-326)
|
||||
item.pwr_fuel.hes327.name=Топливный стержень ВВЭР (Высокообогащённый шрабидий-327)
|
||||
item.pwr_fuel.heu233.name=Топливный стержень ВВЭР (Высокообогащённый уран-233)
|
||||
item.pwr_fuel.heu235.name=Топливный стержень ВВЭР (Высокообогащённый уран-235)
|
||||
item.pwr_fuel.mea.name=Топливный стержень ВВЭР (Среднеобогащённый америций-242)
|
||||
item.pwr_fuel.men.name=Топливный стержень ВВЭР (Среднеобогащённый нептуний)
|
||||
item.pwr_fuel.mep.name=Топливный стержень ВВЭР (Среднеобогащённый плутоний)
|
||||
item.pwr_fuel.meu.name=Топливный стержень ВВЭР (Среднеобогащённый уран)
|
||||
item.pwr_fuel.mox.name=Топливный стержень ВВЭР (МОКС)
|
||||
item.pwr_fuel_depleted.bfb_am_mix.name=Обеднённый топливный стержень ВВЭР (Реакторный америций ВБР)
|
||||
item.pwr_fuel_depleted.bfb_pu241.name=Обеднённый топливный стержень ВВЭР (Плутоний-241 ВБР)
|
||||
item.pwr_fuel_depleted.hea242.name=Обеднённый топливный стержень ВВЭР (Высокообогащённый америций-242)
|
||||
item.pwr_fuel_depleted.hen237.name=Обеднённый топливный стержень ВВЭР (Высокообогащённый нептуний-237)
|
||||
item.pwr_fuel_depleted.hep239.name=Обеднённый топливный стержень ВВЭР (Высокообогащённый плутоний-239)
|
||||
item.pwr_fuel_depleted.hep241.name=Обеднённый топливный стержень ВВЭР (Высокообогащённый плутоний-241)
|
||||
item.pwr_fuel_depleted.hes326.name=Обеднённый топливный стержень ВВЭР (Высокообогащённый шрабидий-326)
|
||||
item.pwr_fuel_depleted.hes327.name=Обеднённый топливный стержень ВВЭР (Высокообогащённый шрабидий-327)
|
||||
item.pwr_fuel_depleted.heu233.name=Обеднённый топливный стержень ВВЭР (Высокообогащённый уран-233)
|
||||
item.pwr_fuel_depleted.heu235.name=Обеднённый топливный стержень ВВЭР (Высокообогащённый уран-235)
|
||||
item.pwr_fuel_depleted.mea.name=Обеднённый топливный стержень ВВЭР (Среднеобогащённый америций-242)
|
||||
item.pwr_fuel_depleted.men.name=Обеднённый топливный стержень ВВЭР (Среднеобогащённый нептуний)
|
||||
item.pwr_fuel_depleted.mep.name=Обеднённый топливный стержень ВВЭР (Среднеобогащённый плутоний)
|
||||
item.pwr_fuel_depleted.meu.name=Обеднённый топливный стержень ВВЭР (Среднеобогащённый уран)
|
||||
item.pwr_fuel_depleted.mox.name=Обеднённый топливный стержень ВВЭР (МОКС)
|
||||
item.pwr_fuel_hot.bfb_am_mix.name=Горячий топливный стержень ВВЭР (Реакторный америций ВБР)
|
||||
item.pwr_fuel_hot.bfb_pu241.name=Горячий топливный стержень ВВЭР (Плутоний-241 ВБР)
|
||||
item.pwr_fuel_hot.hea242.name=Горячий топливный стержень ВВЭР (Высокообогащённый америций-242)
|
||||
item.pwr_fuel_hot.hen237.name=Горячий топливный стержень ВВЭР (Высокообогащённый нептуний-237)
|
||||
item.pwr_fuel_hot.hep239.name=Горячий топливный стержень ВВЭР (Высокообогащённый плутоний-239)
|
||||
item.pwr_fuel_hot.hep241.name=Горячий топливный стержень ВВЭР (Высокообогащённый плутоний-241)
|
||||
item.pwr_fuel_hot.hes326.name=Горячий топливный стержень ВВЭР (Высокообогащённый шрабидий-326)
|
||||
item.pwr_fuel_hot.hes327.name=Горячий топливный стержень ВВЭР (Высокообогащённый шрабидий-327)
|
||||
item.pwr_fuel_hot.heu233.name=Горячий топливный стержень ВВЭР (Высокообогащённый уран-233)
|
||||
item.pwr_fuel_hot.heu235.name=Горячий топливный стержень ВВЭР (Высокообогащённый уран-235)
|
||||
item.pwr_fuel_hot.mea.name=Горячий топливный стержень ВВЭР (Среднеобогащённый америций-242)
|
||||
item.pwr_fuel_hot.men.name=Горячий топливный стержень ВВЭР (Среднеобогащённый нептуний)
|
||||
item.pwr_fuel_hot.mep.name=Горячий топливный стержень ВВЭР (Среднеобогащённый плутоний)
|
||||
item.pwr_fuel_hot.meu.name=Горячий топливный стержень ВВЭР (Среднеобогащённый уран)
|
||||
item.pwr_fuel_hot.mox.name=Горячий топливный стержень ВВЭР (МОКС)
|
||||
item.pwr_printer.name=Слайсер ВВЭР
|
||||
item.quartz_plutonium.name=Плутонический кварц
|
||||
item.radar_linker.name=Радарный соединитель
|
||||
@ -4282,71 +4003,73 @@ item.rag.desc=Бросьте в воду, чтобы намочить.$Нажм
|
||||
item.rag_damp.name=Влажная тряпка
|
||||
item.rag_piss.name=Пропитанная мочой тряпка
|
||||
item.rangefinder.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_hea241.name=Высокообогащённый америциевый-241 топливный стержень РБМК
|
||||
item.rbmk_fuel_hea242.name=Высокообогащённый америциевый-242 топливный стержень РБМК
|
||||
item.rbmk_fuel_heaus.name=Высокообогащённый австралиевый топливный стержень РБМК
|
||||
item.rbmk_fuel_hen.name=Высокообогащённый нептуниевый топливный стержень РБМК
|
||||
item.rbmk_fuel_hes.name=Высокообогащённый шрабидиевый топливный стержень РБМК
|
||||
item.rbmk_fuel_hep.name=Высокообогащённый плутониевый-239 топливный стержень РБМК
|
||||
item.rbmk_fuel_hep241.name=Высокообогащённый плутониевый-241 топливный стержень РБМК
|
||||
item.rbmk_fuel_heu233.name=Высокообогащённый урановый-233 топливный стержень РБМК
|
||||
item.rbmk_fuel_heu235.name=Высокообогащённый урановый-235 топливный стержень РБМК
|
||||
item.rbmk_fuel_lea.name=Низкообогащённый америциевый топливный стержень РБМК
|
||||
item.rbmk_fuel_leaus.name=Низкообогащённый австралиевый топливный стержень РБМК
|
||||
item.rbmk_fuel_lep.name=Низкообогащённый плутониевый-239 топливный стержень РБМК
|
||||
item.rbmk_fuel_les.name=Низкообогащённый шрабидиевый топливный стержень РБМК
|
||||
item.rbmk_fuel_mea.name=Среднеобогащённый америциевый топливный стержень РБМК
|
||||
item.rbmk_fuel_men.name=Среднеобогащённый нептуниевый топливный стержень РБМК
|
||||
item.rbmk_fuel_mep.name=Среднеобогащённый плутониевый-239 топливный стержень РБМК
|
||||
item.rbmk_fuel_mes.name=Среднеобогащённый шрабидиевый топливный стержень РБМК
|
||||
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_thmeu.name=Ториево-урановый среднеобогащённый топливный стержень РБМК
|
||||
item.rbmk_fuel_ueu.name=Необогащённый урановый топливный стержень РБМК
|
||||
item.rbmk_fuel_zfb_am_mix.name=Америций реакторного качества ЦТС стержень РБМК
|
||||
item.rbmk_fuel_zfb_bismuth.name=Висмутовый ЦТС стержень РБМК
|
||||
item.rbmk_fuel_zfb_pu241.name=Плутоний-241 ЦТС стержень РБМК
|
||||
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_hea241.name=Топливный стержень РБМК (Высокообогащённый америций-241)
|
||||
item.rbmk_fuel_hea242.name=Топливный стержень РБМК (Высокообогащённый америций-242)
|
||||
item.rbmk_fuel_heaus.name=Топливный стержень РБМК (Высокообогащённый австралий)
|
||||
item.rbmk_fuel_hen.name=Топливный стержень РБМК (Высокообогащённый нептуний)
|
||||
item.rbmk_fuel_hes.name=Топливный стержень РБМК (Высокообогащённый шрабидий)
|
||||
item.rbmk_fuel_hep.name=Топливный стержень РБМК (Высокообогащённый плутоний-239)
|
||||
item.rbmk_fuel_hep241.name=Топливный стержень РБМК (Высокообогащённый плутоний-241)
|
||||
item.rbmk_fuel_heu233.name=Топливный стержень РБМК (Высокообогащённый уран-233)
|
||||
item.rbmk_fuel_heu235.name=Топливный стержень РБМК (Высокообогащённый уран-235)
|
||||
item.rbmk_fuel_lea.name=Топливный стержень РБМК (Низкообогащённый америций)
|
||||
item.rbmk_fuel_leaus.name=Топливный стержень РБМК (Низкообогащённый австралий)
|
||||
item.rbmk_fuel_lep.name=Топливный стержень РБМК (Низкообогащённый плутоний-239)
|
||||
item.rbmk_fuel_les.name=Топливный стержень РБМК (Низкообогащённый шрабидий)
|
||||
item.rbmk_fuel_mea.name=Топливный стержень РБМК (Среднеобогащённый америций)
|
||||
item.rbmk_fuel_men.name=Топливный стержень РБМК (Среднеобогащённый нептуний)
|
||||
item.rbmk_fuel_mep.name=Топливный стержень РБМК (Среднеобогащённый плутоний-239)
|
||||
item.rbmk_fuel_mes.name=Топливный стержень РБМК (Среднеобогащённый шрабидий)
|
||||
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_thmeu.name=Топливный стержень РБМК (Среднеобогащённый торий-уран)
|
||||
item.rbmk_fuel_ueu.name=Топливный стержень РБМК (Необогащённый уран)
|
||||
item.rbmk_fuel_uzh.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_hea241.name=Высокообогащённая америциевая-241 топливная пеллета
|
||||
item.rbmk_pellet_hea242.name=Высокообогащённая америциевая-242 топливная пеллета
|
||||
item.rbmk_pellet_heaus.name=Высокообогащённая австралиевая топливная пеллета
|
||||
item.rbmk_pellet_hen.name=Высокообогащённая нептуниевая топливная пеллета
|
||||
item.rbmk_pellet_hep239.name=Высокообогащённая плутониевая-239 топливная пеллета
|
||||
item.rbmk_pellet_hep241.name=Высокообогащённая плутониевая-241 топливная пеллета
|
||||
item.rbmk_pellet_heu233.name=Высокообогащённая урановая-233 топливная пеллета
|
||||
item.rbmk_pellet_heu235.name=Высокообогащённая урановая-235 топливная пеллета
|
||||
item.rbmk_pellet_hes.name=Высокообогащённая шрабидиевая топливная пеллета
|
||||
item.rbmk_pellet_lea.name=Низкообогащённая америциевая топливная пеллета
|
||||
item.rbmk_pellet_leaus.name=Низкообогащённая австралиевая топливная пеллета
|
||||
item.rbmk_pellet_lep.name=Низкообогащённая плутониевая топливная пеллета
|
||||
item.rbmk_pellet_les.name=Низкообогащённая шрабидиевая топливная пеллета
|
||||
item.rbmk_pellet_mea.name=Среднеобогащённая америциевая топливная пеллета
|
||||
item.rbmk_pellet_men.name=Среднеобогащённая нептуниевая топливная пеллета
|
||||
item.rbmk_pellet_mep.name=Среднеобогащённая плутониевая топливная пеллета
|
||||
item.rbmk_pellet_mes.name=Среднеобогащённая шрабидиевая топливная пеллета
|
||||
item.rbmk_pellet_meu.name=Среднеобогащённая урановая топливная пеллета
|
||||
item.rbmk_pellet_mox.name=МОКС топливная пеллета
|
||||
item.rbmk_pellet_po210be.name=Полоний-210-Бериллиевая пеллета
|
||||
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_zfb_am_mix.name=ЦТС пеллета америция реакторного качества
|
||||
item.rbmk_pellet_zfb_bismuth.name=Висмутовая ЦТС пеллета
|
||||
item.rbmk_pellet_zfb_pu241.name=Плутоний-241 ЦТС пеллета
|
||||
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_hea241.name=Топливная пеллета (Высокообогащённый америций-241)
|
||||
item.rbmk_pellet_hea242.name=Топливная пеллета (Высокообогащённый америций-242)
|
||||
item.rbmk_pellet_heaus.name=Топливная пеллета (Высокообогащённый австралий)
|
||||
item.rbmk_pellet_hen.name=Топливная пеллета (Высокообогащённый нептуний)
|
||||
item.rbmk_pellet_hep239.name=Топливная пеллета (Высокообогащённый плутоний-239)
|
||||
item.rbmk_pellet_hep241.name=Топливная пеллета (Высокообогащённый плутоний-241)
|
||||
item.rbmk_pellet_heu233.name=Топливная пеллета (Высокообогащённый уран-233)
|
||||
item.rbmk_pellet_heu235.name=Топливная пеллета (Высокообогащённый уран-235)
|
||||
item.rbmk_pellet_hes.name=Топливная пеллета (Высокообогащённый шрабидий)
|
||||
item.rbmk_pellet_lea.name=Топливная пеллета (Низкообогащённый америций)
|
||||
item.rbmk_pellet_leaus.name=Топливная пеллета (Низкообогащённый австралий)
|
||||
item.rbmk_pellet_lep.name=Топливная пеллета (Низкообогащённый плутоний)
|
||||
item.rbmk_pellet_les.name=Топливная пеллета (Низкообогащённый шрабидий)
|
||||
item.rbmk_pellet_mea.name=Топливная пеллета (Среднеобогащённый америций)
|
||||
item.rbmk_pellet_men.name=Топливная пеллета (Среднеобогащённый нептуний)
|
||||
item.rbmk_pellet_mep.name=Топливная пеллета (Среднеобогащённый плутоний)
|
||||
item.rbmk_pellet_mes.name=Топливная пеллета (Среднеобогащённый шрабидий)
|
||||
item.rbmk_pellet_meu.name=Топливная пеллета (Среднеобогащённый уран)
|
||||
item.rbmk_pellet_mox.name=Топливная пеллета (МОКС)
|
||||
item.rbmk_pellet_po210be.name=Пеллета источника нейтронов (Полоний-210-Бериллий)
|
||||
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_uzh.name=Топливная пеллета (Уран-циркония гидрид)
|
||||
item.rbmk_pellet_zfb_am_mix.name=Топливная пеллета (Реакторный америций ЦБР)
|
||||
item.rbmk_pellet_zfb_bismuth.name=Топливная пеллета (Висмут ЦБР)
|
||||
item.rbmk_pellet_zfb_pu241.name=Топливная пеллета (Плутоний-241 ЦБР)
|
||||
item.rbmk_tool.name=Устройство для соединения консоли РБМК
|
||||
item.rbmk_tool.desc=Shift+ПКМ по РБМК чтобы запомнить его позицию,$shift+ПКМ по консоли чтобы соединить!
|
||||
item.rbmk_tool.linked=Позиция установлена!
|
||||
@ -4526,28 +4249,28 @@ item.rod_verticium.name=Verticium Rod
|
||||
item.rod_waste.name=Стержень с ядерными отходами
|
||||
item.rod_water.name=Стержень с водой
|
||||
item.rod_weidanium.name=Weidanium Rod
|
||||
item.rod_zirnox_empty.name=Пустой стержень Цирнокс
|
||||
item.rod_zirnox_natural_uranium_fuel.name=Необогащённый урановый топливный стержень Цирнокс
|
||||
item.rod_zirnox_uranium_fuel.name=Урановый топливный стержень Цирнокс
|
||||
item.rod_zirnox_th232.name=Торий-232 стержень Цирнокс
|
||||
item.rod_zirnox_thorium_fuel.name=Ториевый топливный стержень Цирнокс
|
||||
item.rod_zirnox_mox_fuel.name=МОКС-топливный стержень Цирнокс
|
||||
item.rod_zirnox_plutonium_fuel.name=Плутониевый топливный стержень Цирнокс
|
||||
item.rod_zirnox_u233_fuel.name=Уран-233 топливный стержень Цирнокс
|
||||
item.rod_zirnox_u235_fuel.name=Уран-235 топливный стержень Цирнокс
|
||||
item.rod_zirnox_les_fuel.name=Низкообогащённый шрабидиевый топливный стержень Цирнокс
|
||||
item.rod_zirnox_lithium.name=Литиевый стержень Цирнокс
|
||||
item.rod_zirnox_tritium.name=Тритиевый стержень Цирнокс
|
||||
item.rod_zirnox_zfb_mox.name=ЦТС МОКС-топливный стержень Цирнокс
|
||||
item.rod_zirnox_natural_uranium_fuel_depleted.name=Обеднённый необогащённый урановый топливный стержень Цирнокс
|
||||
item.rod_zirnox_uranium_fuel_depleted.name=Обеднённый урановый топливный стержень Цирнокс
|
||||
item.rod_zirnox_thorium_fuel_depleted.name=Обеднённый ториевый топливный стержень Цирнокс
|
||||
item.rod_zirnox_mox_fuel_depleted.name=Обеднённый МОКС-топливный стержень Цирнокс
|
||||
item.rod_zirnox_plutonium_fuel_depleted.name=Обеднённый плутониевый топливный стержень Цирнокс
|
||||
item.rod_zirnox_u233_fuel_depleted.name=Обеднённый уран-233 топливный стержень Цирнокс
|
||||
item.rod_zirnox_u235_fuel_depleted.name=Обеднённый уран-235 топливный стержень Цирнокс
|
||||
item.rod_zirnox_les_fuel_depleted.name=Обеднённый низкообогащённый шрабидиевый топливный стержень Цирнокс
|
||||
item.rod_zirnox_zfb_mox_depleted.name=Обеднённый ЦТС МОКС-топливный стержень Цирнокс
|
||||
item.rod_zirnox_empty.name=Стержень Цирнокс (Пустой)
|
||||
item.rod_zirnox_natural_uranium_fuel.name=Топливный стержень Цирнокс (Природный уран)
|
||||
item.rod_zirnox_uranium_fuel.name=Топливный стержень Цирнокс (Топливный уран)
|
||||
item.rod_zirnox_th232.name=Топливный стержень Цирнокс (Торий-232)
|
||||
item.rod_zirnox_thorium_fuel.name=Топливный стержень Цирнокс (Топливный торий)
|
||||
item.rod_zirnox_mox_fuel.name=Топливный стержень Цирнокс (МОКС)
|
||||
item.rod_zirnox_plutonium_fuel.name=Топливный стержень Цирнокс (Топливный плутоний)
|
||||
item.rod_zirnox_u233_fuel.name=Топливный стержень Цирнокс (Уран-233)
|
||||
item.rod_zirnox_u235_fuel.name=Топливный стержень Цирнокс (Уран-235)
|
||||
item.rod_zirnox_les_fuel.name=Топливный стержень Цирнокс (Низкообогащённый шрабидий)
|
||||
item.rod_zirnox_lithium.name=Стержень Цирнокс (Литий)
|
||||
item.rod_zirnox_tritium.name=Стержень Цирнокс (Тритий)
|
||||
item.rod_zirnox_zfb_mox.name=Топливный стержень Цирнокс (ЦБР МОКС)
|
||||
item.rod_zirnox_natural_uranium_fuel_depleted.name=Обеднённый топливный стержень Цирнокс (Природный уран)
|
||||
item.rod_zirnox_uranium_fuel_depleted.name=Обеднённый топливный стержень Цирнокс (Топливный уран)
|
||||
item.rod_zirnox_thorium_fuel_depleted.name=Обеднённый топливный стержень Цирнокс (Топливный торий)
|
||||
item.rod_zirnox_mox_fuel_depleted.name=Обеднённый топливный стержень Цирнокс (МОКС)
|
||||
item.rod_zirnox_plutonium_fuel_depleted.name=Обеднённый топливный стержень Цирнокс (Топливный плутоний)
|
||||
item.rod_zirnox_u233_fuel_depleted.name=Обеднённый топливный стержень Цирнокс (Уран-233)
|
||||
item.rod_zirnox_u235_fuel_depleted.name=Обеднённый топливный стержень Цирнокс (Уран-235)
|
||||
item.rod_zirnox_les_fuel_depleted.name=Обеднённый топливный стержень Цирнокс (Низкообогащённый шрабидий)
|
||||
item.rod_zirnox_zfb_mox_depleted.name=Обеднённый топливный стержень Цирнокс (ЦБР МОКС)
|
||||
item.rotor_steel.name=Большой стальной ротор
|
||||
item.rpa_boots.name=Ботинки силовой брони Оставшихся
|
||||
item.rpa_helmet.name=Шлем силовой брони Оставшихся
|
||||
@ -4888,48 +4611,48 @@ item.warhead_nuclear.name=Ядерная боеголовка
|
||||
item.warhead_thermo_endo.name=Эндотермическая боеголовка
|
||||
item.warhead_thermo_exo.name=Экзотермическая боеголовка
|
||||
item.warhead_volcano.name=Тектоническая боеголовка
|
||||
item.waste_mox.name=Обеднённое МОКС-топливо
|
||||
item.waste_natural_uranium.name=Обеднённое природное урановое топливо
|
||||
item.waste_plate_mox.name=Обеднённая МОКС-топливная пластина
|
||||
item.waste_plate_pu238be.name=Обеднённая плутоний-238-бериллевая топливная пластина
|
||||
item.waste_plate_pu239.name=Обеднённая высокообогащённая плутониевая-239 топливная пластина
|
||||
item.waste_plate_ra226be.name=Обеднённая радий-226-бериллевая топливная пластина
|
||||
item.waste_plate_sa326.name=Обеднённая высокообогащённая шрабидий-326 топливная пластина
|
||||
item.waste_plate_u233.name=Обеднённая высокообогащённая уран-233 топливная пластина
|
||||
item.waste_plate_u235.name=Обеднённая высокообогащённая уран-235 топливная пластина
|
||||
item.waste_plutonium.name=Обеднённое плутониевое топливо
|
||||
item.waste_schrabidium.name=Обеднённое шрабидиевое топливо
|
||||
item.waste_thorium.name=Обеднённое ториевое топливо
|
||||
item.waste_u235.name=Обеднённое уран-235 топливо
|
||||
item.waste_u233.name=Обеднённое уран-233 топливо
|
||||
item.waste_uranium.name=Обеднённое урановое топливо
|
||||
item.waste_zfb_mox.name=Обеднённое ЦТС МОКС-топливо
|
||||
item.waste_mox.name=Обеднённое топливо (МОКС)
|
||||
item.waste_natural_uranium.name=Обеднённое топливо (Природный уран)
|
||||
tem.waste_plate_mox.name=Обеднённая топливная пластина (МОКС)
|
||||
item.waste_plate_pu238be.name=Обеднённая топливная пластина (Плутоний-238-бериллий)
|
||||
item.waste_plate_pu239.name=Обеднённая топливная пластина (Высокообогащённый плутоний-239)
|
||||
item.waste_plate_ra226be.name=Обеднённая топливная пластина (Радий-226-бериллий)
|
||||
item.waste_plate_sa326.name=Обеднённая топливная пластина (Высокообогащённый шрабидий-326)
|
||||
item.waste_plate_u233.name=Обеднённая топливная пластина (Высокообогащённый уран-233)
|
||||
item.waste_plate_u235.name=Обеднённая топливная пластина (Высокообогащённый уран-235)
|
||||
item.waste_plutonium.name=Обеднённое топливо (Топливный плутоний)
|
||||
item.waste_schrabidium.name=Обеднённое топливо (Шрабидий)
|
||||
item.waste_thorium.name=Обеднённое топливо (Топливный торий)
|
||||
item.waste_u235.name=Обеднённое топливо (Уран-235)
|
||||
item.waste_u233.name=Обеднённое топливо (Уран-233)
|
||||
item.waste_uranium.name=Обеднённое топливо (Топливный уран)
|
||||
item.waste_zfb_mox.name=Обеднённое топливо (ЦБР МОКС)
|
||||
item.watch.name=Сломанные карманные часы
|
||||
item.watch.desc=Маленькие синие карманные часы.$На стекле есть несколько трещин,$и несколько осколков отсутствуют.$Перестали тикать в 2:34.
|
||||
item.watz_pellet.boron.name=Поглощающая Ватцз-пеллета из бора
|
||||
item.watz_pellet.du.name=Поглощающая Ватцз-пеллета из обеднённого урана
|
||||
item.watz_pellet.hes.name=Ватцз-пеллета из высокообогащённого шрабидия
|
||||
item.watz_pellet.lead.name=Поглощающая Ватцз-пеллета из свинца
|
||||
item.watz_pellet.les.name=Ватцз-пеллета из низкообогащённого шрабидия
|
||||
item.watz_pellet.mes.name=Ватцз-пеллета из среднеобогащённого шрабидия
|
||||
item.watz_pellet.mep.name=Ватцз-пеллета из среднеобогащённого плутония
|
||||
item.watz_pellet.meu.name=Ватцз-пеллета из среднеобогащённого урана
|
||||
item.watz_pellet.nqd.name=Ватцз-пеллета из обогащённого наквадаха
|
||||
item.watz_pellet.nqr.name=Ватцз-пеллета из наквадрии
|
||||
item.watz_pellet.hen.name=Ватцз-пеллета из высокообогащённого нептуния
|
||||
item.watz_pellet.schrabidium.name=Ватцз-пеллета из чистого шрабидия
|
||||
item.watz_pellet_depleted.boron.name=Поглощающая Ватцз-пеллета из бора (Обеднённая)
|
||||
item.watz_pellet_depleted.du.name=Поглощающая Ватцз-пеллета из обеднённого урана (Обеднённая)
|
||||
item.watz_pellet_depleted.hes.name=Ватцз-пеллета из высокообогащённого шрабидия (Обеднённая)
|
||||
item.watz_pellet_depleted.lead.name=Поглощающая Ватцз-пеллета из свинца (Обеднённая)
|
||||
item.watz_pellet_depleted.les.name=Ватцз-пеллета из низкообогащённого шрабидия (Обеднённая)
|
||||
item.watz_pellet_depleted.mes.name=Ватцз-пеллета из среднеобогащённого шрабидия (Обеднённая)
|
||||
item.watz_pellet_depleted.mep.name=Ватцз-пеллета из среднеобогащённого плутония (Обеднённая)
|
||||
item.watz_pellet_depleted.meu.name=Ватцз-пеллета из среднеобогащённого урана (Обеднённая)
|
||||
item.watz_pellet_depleted.nqd.name=Ватцз-пеллета из обогащённого наквадаха (Обеднённая)
|
||||
item.watz_pellet_depleted.nqr.name=Ватцз-пеллета из наквадрии (Обеднённая)
|
||||
item.watz_pellet_depleted.hen.name=Ватцз-пеллета из высокообогащённого нептуния (Обеднённая)
|
||||
item.watz_pellet_depleted.schrabidium.name=Ватцз-пеллета из чистого шрабидия (Обёдненная)
|
||||
item.watz_pellet.boron.name=Поглощающая Ватцз-гранула (Бор)
|
||||
item.watz_pellet.du.name=Поглощающая Ватцз-гранула (Обеднённый уран)
|
||||
item.watz_pellet.hes.name=Ватцз-гранула (Высокообогащённый шрабидий)
|
||||
item.watz_pellet.lead.name=Поглощающая Ватцз-гранула (Свинец)
|
||||
item.watz_pellet.les.name=Ватцз-гранула (Низкообогащённый шрабидий)
|
||||
item.watz_pellet.mes.name=Ватцз-гранула (Среднеобогащённый шрабидий)
|
||||
item.watz_pellet.mep.name=Ватцз-гранула (Среднеобогащённый плутоний)
|
||||
item.watz_pellet.meu.name=Ватцз-гранула (Среднеобогащённый уран)
|
||||
item.watz_pellet.nqd.name=Ватцз-гранула (Обогащённый наквадах)
|
||||
item.watz_pellet.nqr.name=Ватцз-гранула (Наквадрия)
|
||||
item.watz_pellet.hen.name=Ватцз-гранула (Высокообогащённый нептуний)
|
||||
item.watz_pellet.schrabidium.name=Ватцз-гранула (Шрабидий)
|
||||
item.watz_pellet_depleted.boron.name=Обеднённая поглощающая Ватцз-гранула (Бор)
|
||||
item.watz_pellet_depleted.du.name=Обеднённая поглощающая Ватцз-гранула (Обеднённый уран)
|
||||
item.watz_pellet_depleted.hes.name=Обеднённая Ватцз-гранула (Высокообогащённый шрабидий)
|
||||
item.watz_pellet_depleted.lead.name=Обеднённая поглощающая Ватцз-гранула (Свинец)
|
||||
item.watz_pellet_depleted.les.name=Обеднённая Ватцз-гранула (Низкообогащённый шрабидий)
|
||||
item.watz_pellet_depleted.mes.name=Обеднённая Ватцз-гранула (Среднеобогащённый шрабидий)
|
||||
item.watz_pellet_depleted.mep.name=Обеднённая Ватцз-гранула (Среднеобогащённый плутоний)
|
||||
item.watz_pellet_depleted.meu.name=Обеднённая Ватцз-гранула (Среднеобогащённый уран)
|
||||
item.watz_pellet_depleted.nqd.name=Обеднённая Ватцз-гранула (Обогащённый наквадах)
|
||||
item.watz_pellet_depleted.nqr.name=Обеднённая Ватцз-гранула (Наквадрия)
|
||||
item.watz_pellet_depleted.hen.name=Обеднённая Ватцз-гранула (Высокообогащённый нептуний)
|
||||
item.watz_pellet_depleted.schrabidium.name=Обеднённая Ватцз-гранула (Шрабидий)
|
||||
item.weapon_bat.name=Любимица Ричарда
|
||||
item.weapon_bat_nail.name=Клише
|
||||
item.weapon_golf_club.name=Клюшка русского бандита
|
||||
@ -6241,21 +5964,24 @@ tile.rbmk_cooler.name=Охладитель РБМК
|
||||
tile.rbmk_control.name=Регулирующие стержни РБМК
|
||||
tile.rbmk_control_auto.name=Автоматические регулирующие стержни РБМК
|
||||
tile.rbmk_control_mod.name=Замедляющие регулирующие стержни РБМК
|
||||
tile.rbmk_control_reasim.name=Регулирующие стержни РБМК (РеаСим)
|
||||
tile.rbmk_control_reasim_auto.name=Автоматические регулирующие стержни РБМК (РеаСим)
|
||||
tile.rbmk_crane_console.name=Консоль крана РБМК
|
||||
tile.rbmk_display.name=Дисплей панель РБМК
|
||||
tile.rbmk_heater.name=Жидкостный нагреватель РБМК
|
||||
tile.rbmk_loader.name=Паровой проводник РБМК
|
||||
tile.rbmk_loader.desc=Позволяет РБМК иметь внизу соединения для воды и пара$Поместите одну водную трубу под колонной РБМК, затем проводник,$потом подключите паропровод к проводнику.
|
||||
tile.rbmk_moderator.name=Графитовый замедлитель РБМК
|
||||
tile.rbmk_outgasser.name=Стержень облучения РБМК
|
||||
tile.rbmk_outgasser.name=Колонна облучения РБМК
|
||||
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_inlet.desc=Подает воду в колонны RBMK, если включены ReaSim бойлеры$Подключается к колоннам RBMK сбоку
|
||||
tile.rbmk_steam_inlet.desc=Подает воду в колонны РБМК, если включены ReaSim бойлеры$Подключается к колоннам РБМК сбоку
|
||||
tile.rbmk_steam_outlet.name=Порт вывода пара РБМК РеаСим
|
||||
tile.rbmk_steam_outlet.desc=Извлекает перегретый пар из колонн РБМК, если включены ReaSim бойлеры$Подключается к колоннам RBMK сбоку
|
||||
tile.rbmk_steam_outlet.desc=Извлекает перегретый пар из колонн РБМК, если включены ReaSim бойлеры$Подключается к колоннам РБМК сбоку
|
||||
tile.rbmk_storage.name=Колонна-хранилище РБМК
|
||||
tile.rbmk.dodd.heat=Температура колонны
|
||||
tile.rbmk.dodd.reasimWater=Вода РеаСим
|
||||
@ -6304,6 +6030,14 @@ tile.rbmk.dodd.steam_amt=Количество пара
|
||||
tile.rbmk.dodd.cryo_amt=Количество крио
|
||||
tile.rbmk.dodd.gas_amt=Количество газа
|
||||
tile.rbmk.dodd.fuel_amt=Количество топлива
|
||||
tile.rbmk.dodd.t0=Количество холодного перфторометан
|
||||
tile.rbmk.dodd.t0_max=Максимально холодного перфторометан
|
||||
tile.rbmk.dodd.t0_type=Тип холодный перфторометан(ID)
|
||||
tile.rbmk.dodd.t0_p=Давление холодного перфторометан
|
||||
tile.rbmk.dodd.t1=Количество перфторометан
|
||||
tile.rbmk.dodd.t1_max=Максимально перфторометан
|
||||
tile.rbmk.dodd.t1_type=Тип перфторометан(ID)
|
||||
tile.rbmk.dodd.t1_p=Давление перфторометан
|
||||
tile.reactor_computer.name=Контроллер реактора
|
||||
tile.reactor_conductor.name=Бойлер реактора
|
||||
tile.reactor_control.name=Регулирующие стержни
|
||||
@ -6418,7 +6152,7 @@ tile.stones_slab.lightstone.1.name=Плита из светлокаменной
|
||||
tile.stones_slab.lightstone.2.name=Плита из светлокаменного кирпича
|
||||
tile.struct_icf_core.name=Ядро инерциального термоядерного реактора (ICF)
|
||||
tile.struct_iter_core.name=Ядро термоядерного реактора
|
||||
tile.struct_torus_core.name=Ядро основной камеры
|
||||
tile.struct_torus_core.name=Ядро основной камеры (термоядерный реактор)
|
||||
tile.struct_launcher.name=Блок-компонент пусковой площадки
|
||||
tile.struct_launcher_core.name=Ядро компактной пусковой площадки
|
||||
tile.struct_launcher_core_large.name=Ядро большой пусковой площадки
|
||||
@ -6646,10 +6380,4 @@ desc.gui.upgrade.overdrive= * §7Перегруз§r: Стакается до 3-
|
||||
desc.gui.upgrade.power= * §1Энергосбережение§r: Стакается до 3-х уровней
|
||||
desc.gui.upgrade.speed= * §4Скорость§r: Стакается до 3-х уровней
|
||||
|
||||
// Last updated 15.02.2026 by RayzerHan //
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Last updated 08.03.2026 by RayzerHan //
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -3815,7 +3815,7 @@ item.rbmk_pellet_mox.name=MOX燃料芯块
|
||||
item.rbmk_pellet_po210be.name=钋210-铍 中子源芯块
|
||||
item.rbmk_pellet_pu238be.name=钚238-铍 中子源芯块
|
||||
item.rbmk_pellet_ra226be.name=镭226-铍 中子源芯块
|
||||
item.rbmk_pellet_thmeu.name=ThMEU 中浓缩度铀-233导向钍燃料芯块
|
||||
item.rbmk_pellet_thmeu.name=ThMEU 浓缩度铀-235导向钍燃料芯块
|
||||
item.rbmk_pellet_ueu.name=未浓缩铀燃料芯块
|
||||
item.rbmk_pellet_zfb_am_mix.name=ZFB 燃料级镅燃料芯块
|
||||
item.rbmk_pellet_zfb_bismuth.name=ZFB 铋燃料芯块
|
||||
@ -4271,20 +4271,20 @@ item.twinkie.name=小蛋糕
|
||||
item.ullapool_caber.name=阿勒浦长木杆
|
||||
item.undefined.name=形态未定义物质
|
||||
item.upgrade_5g.name=5G辐射发射器升级
|
||||
item.upgrade_afterburn_1.name=一级粉色机器升级
|
||||
item.upgrade_afterburn_2.name=二级粉色机器升级
|
||||
item.upgrade_afterburn_3.name=三级粉色机器升级
|
||||
item.upgrade_afterburn_1.name=一级加力燃烧升级
|
||||
item.upgrade_afterburn_2.name=二级加力燃烧升级
|
||||
item.upgrade_afterburn_3.name=三级加力燃烧升级
|
||||
item.upgrade_centrifuge.name=采矿激光升级-自动离心
|
||||
item.upgrade_crystallizer.name=采矿激光升级-自动结晶
|
||||
item.upgrade_effect_1.name=一级绿色机器升级
|
||||
item.upgrade_effect_2.name=二级绿色机器升级
|
||||
item.upgrade_effect_3.name=三级绿色机器升级
|
||||
item.upgrade_effect_1.name=一级效率升级
|
||||
item.upgrade_effect_2.name=二级效率升级
|
||||
item.upgrade_effect_3.name=三级效率升级
|
||||
item.upgrade_ejector_1.name=一级弹射速度升级
|
||||
item.upgrade_ejector_2.name=二级弹射速度升级
|
||||
item.upgrade_ejector_3.name=三级弹射速度升级
|
||||
item.upgrade_fortune_1.name=一级紫色机器升级
|
||||
item.upgrade_fortune_2.name=二级紫色机器升级
|
||||
item.upgrade_fortune_3.name=三级紫色机器升级
|
||||
item.upgrade_fortune_1.name=一级时运升级
|
||||
item.upgrade_fortune_2.name=二级时运升级
|
||||
item.upgrade_fortune_3.name=三级时运升级
|
||||
item.upgrade_gc_speed.name=气体离心机超频升级
|
||||
item.upgrade_health.name=粉色力场发生器升级
|
||||
item.upgrade_muffler.name=消音器
|
||||
@ -4292,16 +4292,16 @@ item.upgrade_nullifier.name=采矿激光升级-自动销毁
|
||||
item.upgrade_overdrive_1.name=一级超速传动机器升级
|
||||
item.upgrade_overdrive_2.name=二级超速传动机器升级
|
||||
item.upgrade_overdrive_3.name=三级超速传动机器升级
|
||||
item.upgrade_power_1.name=一级蓝色机器升级
|
||||
item.upgrade_power_2.name=二级蓝色机器升级
|
||||
item.upgrade_power_3.name=三级蓝色机器升级
|
||||
item.upgrade_power_1.name=一级节能升级
|
||||
item.upgrade_power_2.name=二级节能升级
|
||||
item.upgrade_power_3.name=三级节能升级
|
||||
item.upgrade_radius.name=青色力场发生器升级
|
||||
item.upgrade_screm.name=采矿激光升级-目 力 科 学 家
|
||||
item.upgrade_shredder.name=采矿激光升级-自动粉碎
|
||||
item.upgrade_smelter.name=采矿激光升级-自动熔炼
|
||||
item.upgrade_speed_1.name=一级红色机器升级
|
||||
item.upgrade_speed_2.name=二级红色机器升级
|
||||
item.upgrade_speed_3.name=三级红色机器升级
|
||||
item.upgrade_speed_1.name=一级速度升级
|
||||
item.upgrade_speed_2.name=二级速度升级
|
||||
item.upgrade_speed_3.name=三级速度升级
|
||||
item.upgrade_stack_1.name=一级堆叠弹出升级
|
||||
item.upgrade_stack_2.name=二级堆叠弹出升级
|
||||
item.upgrade_stack_3.name=三级堆叠弹出升级
|
||||
@ -6019,7 +6019,7 @@ tile.wood_structure.roof.name=木质地板
|
||||
tile.wood_structure.scaffold.name=木质脚手架
|
||||
item.gun_amat.name=反器材步枪
|
||||
tile.fluid_pump.name=流量控制泵
|
||||
item.ammo_secret.bmg50_black.name=.50BMG旁道者弹药
|
||||
item.ammo_secret.bmg50_black.name=.50BMG穿透弹药
|
||||
item.ammo_standard.bmg50_sm.name=.50BMG子弹(星辉)
|
||||
item.gun_amat_penance.name=忏悔
|
||||
item.gun_amat_subtlety.name=明敏
|
||||
@ -6430,3 +6430,17 @@ item.ncrpa_plate.name=NCR游侠动力装甲 胸甲
|
||||
tile.machine_industrial_turbine.name=工业汽轮机
|
||||
tile.machine_industrial_turbine.desc=效率: 100%%
|
||||
tile.red_connector_super.name=大型电力连接器
|
||||
item.billet_uzh.name=铀氢锆燃料坯料
|
||||
item.rbmk_fuel_uzh.name=RBMK反应堆铀氢锆燃料棒
|
||||
item.rbmk_pellet_uzh.name=铀氢锆燃料芯块
|
||||
tile.rbmk_control_reasim.name=RBMK反应堆控制棒 (ReaSim)
|
||||
tile.rbmk_control_reasim_auto.name=RBMK反应堆自动控制棒 (ReaSim)
|
||||
tile.rbmk_display.name=RBMK显示面板
|
||||
tile.rbmk.dodd.t0=冷四氟甲烷储量
|
||||
tile.rbmk.dodd.t0_max=冷四氟甲烷容量
|
||||
tile.rbmk.dodd.t0_type=冷四氟甲烷种类
|
||||
tile.rbmk.dodd.t0_p=冷四氟甲烷压力
|
||||
tile.rbmk.dodd.t1=四氟甲烷储量
|
||||
tile.rbmk.dodd.t1_max=四氟甲烷容量
|
||||
tile.rbmk.dodd.t1_type=四氟甲烷种类
|
||||
tile.rbmk.dodd.t1_p=四氟甲烷压力
|
||||
|
||||
@ -11,7 +11,8 @@
|
||||
"content": {
|
||||
"en_US": "Made in a [[blast furnace|Blast Furnace]] from [[steel|Steel]] and [[Minecraft grade copper|Minecraft Grade Copper]]. Makes better-than-diamond gear. Also used in some high-powered magnets for the [[exposure chamber|Exposure Chamber]].",
|
||||
"uk_UA": "Виготовлено в [[доменній печі|Blast Furnace]] зі [[сталі|Steel]] та [[червоної міді|Minecraft Grade Copper]]. З нього робиться спорядження краще за алмазне. Також використовується в деяких потужних магнітах для [[термоядерного реактору|Fusion Reactor]] та [[камери опромінювання|Exposure Chamber]].",
|
||||
"ru_RU": "Изготовлено в [[доменной печи|Blast Furnace]] из [[стали|Steel]] и [[красной меди|Minecraft Grade Copper]]. Из него делают инструменты, превосходящие алмазные. Также используется в некоторых мощных магнитах для [[термоядерного реактора|Fusion Reactor]] и [[камеры облучения|Exposure Chamber]].",
|
||||
"ru_RU": "Изготовлено в [[доменной печи|Blast Furnace]] из [[стали|Steel]] и [[красной меди|Minecraft Grade Copper]]. Из него делают инструменты, превосходящие алмазные. Также используется в некоторых мощных магнитах для [[камеры облучения|Exposure Chamber]].",
|
||||
"zh_CN": "在[[高炉|Blast Furnace]]中使用[[钢|Steel]]和[[紫铜|Minecraft Grade Copper]]制成。其制成的工具比钻石更加优质。同时也能用于制作[[聚变反应堆|Fusion Reactor]]和[[辐照舱|Exposure Chamber]]的高能磁铁。"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -11,7 +11,8 @@
|
||||
"content": {
|
||||
"en_US": "Powerful superconductor, used in high tier circuits and coils for the [[particle accelerator|Particle Accelerator]] as well as the [[fusion reactor|Fusion Reactor Vessel]]. Requires [[bismuth|Bismuth]], and is therefore only obtainable after building an [[RBMK]].",
|
||||
"uk_UA": "Потужний надпровідник, що використовується у високоякісних платах та котушках для [[прискорювача часток|Particle Accelerator]]. Потребує [[вісмут|Bismuth]], і тому доступний лише після побудови [[РБМК|RBMK]].",
|
||||
"ru_RU": "Мощный сверхпроводник, используемый в высокоуровневых цепях и катушках для [[ускорителя частиц|Particle Accelerator]]. Требует [[висмут|Bismuth]], и поэтому доступен только после постройки [[РБМК|RBMK]].",
|
||||
"ru_RU": "Мощный сверхпроводник, используемый в высокоуровневых процессорах и катушках для [[ускорителя частиц|Particle Accelerator]], а также для [[термоядерного реактора|Fusion Reactor Vessel]]. Требует [[висмут|Bismuth]], и поэтому доступен только после постройки [[РБМК|RBMK]].",
|
||||
"zh_CN": "强力的超导体,用于制作高等级的电路及用于[[粒子加速器|Particle Accelerator]]的线圈。需要[[铋|Bismuth]]制作,因此只能在建造[[RBMK]]后获得。"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -7,7 +7,8 @@
|
||||
"zh_CN": "RBMK硼中子吸收器"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "The absorber simply blocks neutrons from passing. Neutrons that leave the [[RBMK]] will cause radiation to leak out, while this can be prevented by simply blocking off the entire side with solid blocks, the absorber has the small advantage of being able to transfer heat. While it's rarely useful to use an absorber instead of a [[reflector|RBMK Tungsten Carbide Neutron Reflector]], some high-heat reactor designs with linear or exponential fuels may benefit from using absorbers to separate incompatible fuel rods.",
|
||||
"en_US": "The absorber simply blocks neutrons from passing. Neutrons that leave the [[RBMK]] will cause radiation to leak out, and while this can be prevented by simply blocking off the entire side with solid blocks, the absorber has the small advantages of being able to transfer heat through it as well as generate heat from the neutron flux it absorbs. While it's rarely useful to use an absorber instead of a [[reflector|RBMK Tungsten Carbide Neutron Reflector]], some high-heat reactor designs with linear or exponential fuels may benefit from using absorbers to separate incompatible fuel rods.",
|
||||
"zh_CN": "中子吸收器会直接阻止中子通过。离开[[RBMK]]的中子会造成 辐射,虽然用固体方块把整个反应堆的边缘包住就可以挡住辐射,但中子吸收 器有一个小优点——可以传递热量。虽然很多情况下[[中子反射器|RBMK Tungsten Carbide Neutron Reflector]]比中子吸 收器更有用,但在某些含有线性或指数型燃料棒的高热量反应堆设计中,用中 子吸收器分隔不能相邻的燃料棒也不失为一种选择。"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -7,7 +7,6 @@
|
||||
"zh_CN": "RBMK燃料自动装填机"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "The autoloader is an advanced component of an [[RBMK]] that can be placed on top of [[fuel channels|RBMK Fuel Channel]]. The autoloader has two inventory grids, one for fresh fuel, and one for spent fuel, as well as a selector for the fuel depletion percentage which can be changed in 5% increments. If the [[fuel rod's|RBMK Fuel Rod]] depletion of the connected fuel channel exceeds the configured percentage, the autoloader will drop down, remove the spent fuel and insert a new fuel rod. The autoloader can be automated using hoppers or conveyors, the item access ports are on the very top.",
|
||||
"zh_CN": "RBMK燃料自动装填机是一种高级的[[RBMK]]部件, 需要放置在[[燃料通道|RBMK Fuel Channel]]的顶部。燃料自动装填机的物品栏内有两组格子, 一组用于储存新燃料,另一组用于储存使用过的燃料;其GUI中还有一个用 于设定燃料消耗程度的框,分度值为5%。若下方[[燃料棒|RBMK Fuel Rod]]的消耗 程度超过了设定的比例,燃料自动装填机就会下降并拔出使用过的燃料棒,同 时插入新燃料棒。燃料自动装填机可通过漏斗或传送带自动化,其物品接口位 于最顶部。"
|
||||
"en_US": "The autoloader is an advanced component of an [[RBMK]] that can be placed on top of [[fuel channels|RBMK Fuel Channel]]. The autoloader has two inventory grids, one for fresh fuel, and one for spent fuel, as well as a selector for the fuel enrichment percentage (i.e. 100% - depletion percentage) which can be changed in 5% increments. If the [[fuel rod's|RBMK Fuel Rod]] enrichment of the connected fuel channel is lower than the configured percentage, the autoloader will drop down, remove the spent fuel and insert a new fuel rod. The autoloader can be automated using hoppers or conveyors, the item access ports are on the very top."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -7,7 +7,8 @@
|
||||
"zh_CN": "RBMK蒸汽管道"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "The RBMK steam channel is the primary way for the [[RBMK]] to be cooled, and to extract energy from it. The steam channel will use as much water as it can at once to cool itself down to the target temperature, i.e. the temperature of the steam type that is configured in the compressor. Since [[fuel channels|RBMK Fuel Channel]] are the only parts in the RBMK that actively heat up, it's recommended to put the steam channels as close as possible to them. Like most RBMK components, the steam channels do not block neutrons, so they can be connected cardinally to fuel channels.<br><br>The compressor settings allow higher density steam to be output, however, higher density steam is hotter, which means that the steam channel's ability to cool is limited. Despite this, higher density steam means that more water can flow through the channel, increasing the amount of cooling that can be done. In practice, most reactors will work fine with regular uncompressed steam. The compressor can be configured remotely via the [[console|RBMK Console]].<br><br>The steam channel only accepts water from the bottom and outputs steam at the top. Using an [[RBMK steam connector|RBMK Steam Connector]], both fluids can be handled from the bottom.",
|
||||
"en_US": "The RBMK steam channel is the primary way for the [[RBMK]] to be cooled, and to extract energy from it. The steam channel will use as much water as it can at once to cool itself down to the target temperature, i.e. the temperature of the steam type that is configured in the compressor. Since [[fuel channels|RBMK Fuel Channel]] are the only parts in the RBMK that actively heat up, it's recommended to put the steam channels as close as possible to them. Like most RBMK components, the steam channels do not block neutrons, so they can be connected cardinally to fuel channels.<br><br>The compressor settings allow higher density steam to be output, but higher density steam is hotter, which means that the reactor as a whole must run at a higher temperature, leaving less margin for safety. However, higher density steam generates more power, assuming the reactor can handle the higher temperature without having to be throttled. In practice, most reactors will work fine with regular uncompressed steam. The compression level can be configured remotely via the [[console|RBMK Console]].<br><br>The steam channel only accepts water from the bottom and outputs steam at the top. An [[RBMK steam connector|RBMK Steam Connector]] can be placed underneath the water pipe on a steam channel to allow steam extraction from the bottom as well.",
|
||||
"zh_CN": "RBMK蒸汽管道是冷却[[RBMK]]和通过RBMK发电的主要方式。 蒸汽管道会使用尽可能多的水将自身冷却至目标温度(即设定的蒸汽压缩等级 对应的蒸汽的温度)。[[燃料通道|RBMK Fuel Channel]]是RBMK中唯一能够主动产热的部件, 因此建议将蒸汽管道放置在距离燃料通道尽量近的地方。与大多数RBMK部件 类似,蒸汽管道不会阻挡中子,因此其可以与燃料通道直接接触。<br><br>通过调整蒸汽压缩等级可以使蒸汽管道输出高等级蒸汽,但高等级蒸汽温度更 高,进而会使得蒸汽管道的冷却能力受到限制;然而,蒸汽压缩等级更高也意 味着蒸汽管道中的水流量更大,这又提高了冷却总量。在实际操作中,大多数 反应堆都能在使用普通蒸汽时正常工作。蒸汽压缩等级可通过[[控制台|RBMK Console]]远程调整。<br><br>蒸汽管道只从底部接收水并从顶部输出蒸汽,使用[[RBMK蒸汽导出器|RBMK Steam Connector]]可 使两种流体都能从底部输入输出。"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -7,7 +7,8 @@
|
||||
"zh_CN": "RBMK石墨式反应堆控制台"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "The RBMK console allows monitoring and control over an [[RBMK]] over a 15x15 block area. While technically optional, it is usually an important part in most successful RBMKs. To use the console, shift-click the central position of the RBMK with an RBMK linker, then shift-click the console.<br><br>The console has a display that shows fuel status and component heat as part of its model, this alone allows the reactor's status to be determined easily from afar, even without using the GUI. In addition, the console has six displays which can be configured to show various infos. To configure, open the GUI, select the columns that should be monitored, click the \"Assign selected columns\" button, and then click on the monitor type button until it shows the desired info.<br><br>On the bottom, the console's GUI also shows a graph of the total neutron flux that is being detected by the [[fuel channels|RBMK Fuel Channel]], making it easy to detect changes such as a drop in reaction due to fuel depletion or hazardous reaction spikes.<br><br>In the center, there are colored buttons which can quickly select all [[control rods|RBMK Control Rods]] in that color group with left click, or assign all selected control rods a color group with right click. In addition, there is a small text field that can set the control rod extraction level of all selected control rods. Finally, the small white/red gradient button allows to cycle between the compression settions on selected [[steam channels|RBMK Steam Channel]].",
|
||||
"en_US": "The RBMK console allows monitoring and control over an [[RBMK]] over a 15x15 block area. While technically optional, it is usually an important part in most successful RBMKs. To use the console, shift-click the central position of the RBMK with an RBMK linker, then shift-click the console.<br><br>The console has a display that shows fuel status and component heat as part of its model, this alone allows the reactor's status to be determined easily from afar, even without using the GUI. In addition, the console has six displays which can be configured to show various infos. To configure, open the GUI, select the columns that should be monitored, click the \"Assign selected columns\" button, and then click on the monitor type button until it shows the desired info.<br><br>On the bottom, the console's GUI also shows a graph of the total neutron flux that is being detected by the [[fuel channels|RBMK Fuel Channel]], making it easy to detect changes such as a drop in the reaction due to fuel depletion or a hazardous reaction spike.<br><br>In the center, there are colored buttons which can quickly select all [[control rods|RBMK Control Rods]] in that color group with left click, or assign all selected control rods a color group with right click. In addition, there is a small text field that can set the extraction level of all selected control rods. Finally, there is a small white/red gradient button which cycles through the compression settings on selected [[steam channels|RBMK Steam Channel]].",
|
||||
"zh_CN": "RBMK石墨式反应堆控制台可以监测并控制15x15方块范围内的[[RBMK]] 反应堆部件。RBMK控制台在技术上不是必需的,但通常是绝大多数成功的 RBMK的重要组成部分。要使用RBMK控制台,需要先用RBMK连接装置 潜行右击反应堆的中心位置,再潜行右击控制台。<br><br>控制台的模型上具有一个显示燃料状态和反应堆部件温度的屏幕,这个屏幕使 反应堆的状态可以很容易地从远处监测,甚至完全不用打开GUI就能做到。 此外,控制台还含有六个可以显示多种信息的屏幕,其显示内容可以配置;若 要配置其显示内容,则需要打开GUI并选择需要监测的柱体,之后点击“绑 定所选柱体”按钮,再点击检测项目按钮,直到出现想要的内容。<br><br>控制台GUI底部还有一个显示[[燃料通道|RBMK Fuel Channel]]检测到的总中子通量的图表,通 过这个图表可以很容易监测到燃料消耗导致的反应剧烈程度下降,或是危险的 中子通量激增。<br><br>对GUI中部的彩色按钮点击左键,可以选择所有相应颜色的[[控制棒|RBMK Control Rods]], 点击右键则可以将选定的控制棒分配至相应颜色的组别。彩色按钮下方的文本 框可用于设置所有选定的燃料棒的抽出程度。最后一个红白渐变色按钮可以切 换选定的[[蒸汽管道|RBMK Steam Channel]]的压缩等级。"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -7,7 +7,9 @@
|
||||
"zh_CN": "RBMK反应堆自动控制棒"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "Automatic control rods, unlike the standard [[RBMK control rods|RBMK Control Rods]], cannot be controlled manually, instead they can be configured to adjust their insertion level based on their own component heat. A minimum and maximum heat, along with a minimum and maximum level which correspond to those values can be set, as well as a curve which defines the behavior between those levels.<br><br>It is possible, but not recommended, to have a reactor that runs solely on automatic control rods. They do see occasional use for smoothing out reaction spikes and for controlling the neutron sources on subcritical reactors.",
|
||||
"en_US": "Automatic control rods, unlike the standard [[RBMK control rods|RBMK Control Rods]], cannot be controlled manually, instead they must be configured to adjust their insertion level based on their own temperature. A minimum and maximum temperature, along with a minimum and maximum extraction level which corresponds to those values can be set, as well as a curve which defines the behavior between those levels.<br><br>It is possible, but not recommended, to have a reactor that runs solely on automatic control rods. They do see occasional use for smoothing out reaction spikes and for controlling the neutron sources on subcritical reactors.",
|
||||
"zh_CN": "自动升降的控制棒,与[[RBMK反应堆控制棒|RBMK Control Rods]]不同,其不能手动控制, 而是需要进行设定,设定后即可根据自身温度调整控制棒插入程度。可以设定 的项目有最低温度和最高温度、对应的控制棒最低和最高插入程度,以及定义 其在两个极值之间行为的曲线。<br><br>尽管有可能搭建出一个只使用自动控制棒的反应堆,但不建议这么做。自动控 制棒偶尔会用于抹平中子通量尖峰和在亚临界反应堆中控制中子源。"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -7,7 +7,8 @@
|
||||
"zh_CN": "RBMK反应堆控制棒"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "The RBMK control rods can be used to throttle or even turn off an [[RBMK]]. Neutrons that pass throguh the control rod will be reduced proportional to the rod's insertion, a 100% inserted control rod will block off all incoming neutrons, a 50% inserted control rod will only block half. Control rods can also be controlled remotely via the [[RBMK console|RBMK Console]].<br><br>Moderated control rods function in much the same manner, except that they convert fast neutrons into slow neutrons, much like how a [[moderator|RBMK Graphite Moderator]] would.<br><br>[[Automatic control rods|RBMK Automatic Control Rods]] have a similar purpose, except that they will automatically adjust their level based on the reactor's temperature.<br><br>Due to minor complications in their design, control rods may cause reaction spikes when being inserted a far distance at once, practice caution when using the AZ-5.",
|
||||
"en_US": "The RBMK control rods can be used to throttle or even turn off an [[RBMK]]. Neutrons that pass through the control rod will be reduced proportionally to the rod's insertion, meaning a 100% inserted control rod will block off all incoming neutrons, a 50% inserted control rod will only block half, and so on. Control rods can also be controlled remotely via the [[RBMK console|RBMK Console]].<br><br>Moderated control rods function in much the same manner, except that they convert fast neutrons into slow neutrons, much like how a [[moderator|RBMK Graphite Moderator]] would.<br><br>[[Automatic control rods|RBMK Automatic Control Rods]] have a similar purpose, except that they will automatically adjust their level based on the reactor's temperature.<br><br>Due to minor complications in their design, control rods may cause reaction spikes when being inserted a far distance at once, practice caution when using the AZ-5.",
|
||||
"zh_CN": "控制棒可用于限制[[RBMK]]反应堆的功率,或者直接关停反应堆。 通过控制棒的中子会按照控制棒的插入比例减少,100%插入的控制棒会阻 挡所有进入的中子,而50%插入的控制棒只会阻挡一半中子。控制棒也可通过 [[RBMK控制台|RBMK Console]]远程控制。<br><br>慢化控制棒的工作方式与普通控制棒大体相同,但其会把快中子转换为慢中子, 类似[[慢化剂|RBMK Graphite Moderator]]。<br><br>[[自动控制棒|RBMK Automatic Control Rods]]的目的相同,但其会根据反应堆的温度自行调整插入比例。<br><br>由于尖端设计有一定缺陷,控制棒在从高处一次性插到底时可能会引起中子通 量尖峰,在使用AZ-5按钮时尤其需要注意。"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -7,6 +7,7 @@
|
||||
"zh_CN": "RBMK冷却器"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "The cooler is an optional component that can be used to cool an [[RBMK]], however unlike the [[steam channel|RBMK Steam Channel]], the cooler does not allow the heat to be extracted and used. The RBMK cooler uses up cold perfluoromethyl and outputs regular PFM at a constant rate of 50mB/t, and rapidly cools down all RBMK components in a 5x5 area."
|
||||
"en_US": "The cooler is an optional component that can be used to cool an [[RBMK]], however unlike the [[steam channel|RBMK Steam Channel]], the cooler does not allow the heat to be extracted and used. The RBMK cooler uses up cold perfluoromethyl and outputs regular PFM at a constant rate of 50mB/t, and rapidly cools down all RBMK components in a 5x5 area by 200°C/t."
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -7,7 +7,8 @@
|
||||
"zh_CN": "RBMK起重机控制台"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "The RBMK crane console allows fuel rods to be extracted, transported and inserted safely from a distance. Linking to an [[RBMK]] works similarly as it does with a [[RBMK console|RBMK Console]] using the RBMK linker tool. Once linked, the console spawns the crane over the RBMK. the crane can be controlled when standing in front of the console, using arrow keys by default to move it, and the enter key to load or unload a fuel rod. The crane's loading capabilities are compatible with all variants of the [[fuel channel|RBMK Fuel Channel]] and the [[storage column|RBMK Storage Column]].",
|
||||
"en_US": "The RBMK crane console allows fuel rods to be extracted, transported and inserted safely from a distance. Linking to an [[RBMK]] works similarly as it does with a [[RBMK console|RBMK Console]] using the RBMK linker tool. Once linked, the console spawns the crane over the RBMK. The crane can be controlled when standing in front of the console, using arrow keys by default to move it, and the enter key to load or unload a fuel rod. The crane's loading capabilities are compatible with all variants of the [[fuel channel|RBMK Fuel Channel]] and the [[storage column|RBMK Storage Column]].",
|
||||
"zh_CN": "RBMK起重机控制台用于在远距离安全提取、移动和插入燃料棒。用RBMK 连接装置将其连接至[[RBMK]]的方法与连接[[RBMK控制台|RBMK Console]]的方法相同。 一旦连接成功,控制台就会在反应堆上方生成起重机。操作起重机需要站在起 重机控制台前,默认使用方向键移动吊臂,按回车键装载或卸载燃料棒。起重 机的装卸能力与所有种类的[[燃料通道|RBMK Fuel Channel]]和[[燃料棒存储棒|RBMK Storage Column]]兼容。"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -7,7 +7,8 @@
|
||||
"zh_CN": "RBMK流体加热器"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "The RBMK fluid heater provides an alternate way of cooling the [[RBMK]] compared to the [[RBMK steam channel|RBMK Steam Channel]]. Instead of boiling water into turbine-usable steam, it heats up a type of coolant which may be used in different ways. Hot coolant can be used in a [[heat exchanging heater|Heat Exchanging Heater]] to either power certain machines directly, or to boil water in a [[boiler|Boiler]], creating a secondary loop. Do note that the used coolant needs to be heat exchanger compatible, [[PWR]]-exclusive coolants like liquid sodium will not work in an RBMK.<br><br>Just like in a steam channel, the cold coolant normally enters the bottom and the hot coolant exits from the top. Both connections can be on the bottom when using an [[RBMK steam connector|RBMK Steam Connector]].",
|
||||
"en_US": "The RBMK fluid heater provides an alternate way of cooling the [[RBMK]] compared to the [[RBMK steam channel|RBMK Steam Channel]]. Instead of boiling water into turbine-usable steam, it heats up a type of coolant which may be used in different ways. Hot coolant can be used in a [[heat exchanging heater|Heat Exchanging Heater]] to either power certain machines directly, or to boil water in a [[boiler|Boiler]], creating a secondary loop. Do note that the coolant used needs to be compatible with the fluid heater, [[PWR]]-exclusive coolants like liquid sodium will not work in an RBMK.<br><br>Just like in a steam channel, the cold coolant normally enters the bottom and the hot coolant exits from the top. Both connections can be on the bottom when using an [[RBMK steam connector|RBMK Steam Connector]].",
|
||||
"zh_CN": "RBMK流体加热器提供了使用[[RBMK蒸汽管道|RBMK Steam Channel]]以外冷却[[RBMK]] 的另一种方法。其并不直接将水加热为可用于涡轮的蒸汽,而是加热冷却剂, 被加热的冷却剂可以有多种用途。热冷却剂可以在[[换热加热器|Heat Exchanging Heater]]中放出热量, 以直接驱动部分机器,或者在 [[锅炉|Boiler]]中加热水,进而形成二级循环。需要注意的是,使用的冷却液必须可用于流体加热 器,[[PWR]]独占的冷却剂不能在RBMK中使用。<br><br>与蒸汽管道相同,冷却剂通常从底部进入,热冷却剂从顶部输出。使用 [[RBMK蒸汽导出器|RBMK Steam Connector]]时两种流体都可从底部输入输出。"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
10283
src/main/resources/assets/hbm/models/fusion/plasma_forge.obj
Normal file
10283
src/main/resources/assets/hbm/models/fusion/plasma_forge.obj
Normal file
File diff suppressed because it is too large
Load Diff
76
src/main/resources/assets/hbm/models/rbmk/button.obj
Normal file
76
src/main/resources/assets/hbm/models/rbmk/button.obj
Normal file
@ -0,0 +1,76 @@
|
||||
# Blender v2.79 (sub 0) OBJ File: ''
|
||||
# www.blender.org
|
||||
o Socket
|
||||
v 0.000000 0.406250 -0.156250
|
||||
v 0.062500 0.406250 0.156250
|
||||
v 0.000000 0.406250 0.156250
|
||||
v 0.062500 0.718750 0.156250
|
||||
v 0.000000 0.718750 0.156250
|
||||
v 0.000000 0.718750 -0.156250
|
||||
v 0.062500 0.406250 -0.156250
|
||||
v 0.062500 0.718750 -0.156250
|
||||
vt 0.076923 0.857143
|
||||
vt 0.461538 1.000000
|
||||
vt 0.076923 1.000000
|
||||
vt 0.461538 0.142857
|
||||
vt 0.461538 0.857143
|
||||
vt 0.538462 0.142857
|
||||
vt 0.538462 0.857143
|
||||
vt 0.076923 0.000000
|
||||
vt 0.461538 0.000000
|
||||
vt 0.076923 0.142857
|
||||
vt 0.000000 0.857143
|
||||
vt 0.000000 0.142857
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 1.0000 -0.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 -0.0000 1.0000
|
||||
s off
|
||||
f 4/1/1 6/2/1 5/3/1
|
||||
f 4/1/2 7/4/2 8/5/2
|
||||
f 8/5/3 1/6/3 6/7/3
|
||||
f 7/4/4 3/8/4 1/9/4
|
||||
f 2/10/5 5/11/5 3/12/5
|
||||
f 4/1/1 8/5/1 6/2/1
|
||||
f 4/1/2 2/10/2 7/4/2
|
||||
f 8/5/3 7/4/3 1/6/3
|
||||
f 7/4/4 2/10/4 3/8/4
|
||||
f 2/10/5 4/1/5 5/11/5
|
||||
o Button
|
||||
v 0.125000 0.687500 -0.125000
|
||||
v 0.125000 0.437500 0.125000
|
||||
v 0.125000 0.437500 -0.125000
|
||||
v 0.062500 0.687500 0.125000
|
||||
v 0.062500 0.687500 -0.125000
|
||||
v 0.062500 0.437500 -0.125000
|
||||
v 0.062500 0.437500 0.125000
|
||||
v 0.125000 0.687500 0.125000
|
||||
vt 0.615385 0.285714
|
||||
vt 0.538462 0.857143
|
||||
vt 0.538462 0.285714
|
||||
vt 0.923077 0.285714
|
||||
vt 0.615385 0.142857
|
||||
vt 0.923077 0.142857
|
||||
vt 0.615385 0.857143
|
||||
vt 0.923077 1.000000
|
||||
vt 0.615385 1.000000
|
||||
vt 0.923077 0.857143
|
||||
vt 1.000000 0.285714
|
||||
vt 1.000000 0.857143
|
||||
vn 0.0000 -0.0000 1.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 1.0000 -0.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
s off
|
||||
f 10/13/6 12/14/6 15/15/6
|
||||
f 11/16/7 15/17/7 14/18/7
|
||||
f 16/19/8 13/20/8 12/21/8
|
||||
f 16/19/9 11/16/9 9/22/9
|
||||
f 9/22/10 14/23/10 13/24/10
|
||||
f 10/13/6 16/19/6 12/14/6
|
||||
f 11/16/7 10/13/7 15/17/7
|
||||
f 16/19/8 9/22/8 13/20/8
|
||||
f 16/19/9 10/13/9 11/16/9
|
||||
f 9/22/10 11/16/10 14/23/10
|
||||
440
src/main/resources/assets/hbm/models/rbmk/gauge.obj
Normal file
440
src/main/resources/assets/hbm/models/rbmk/gauge.obj
Normal file
@ -0,0 +1,440 @@
|
||||
# Blender v2.79 (sub 0) OBJ File: ''
|
||||
# www.blender.org
|
||||
o Needle
|
||||
v 0.031250 0.562500 -0.109375
|
||||
v 0.031250 0.437500 -0.109375
|
||||
v 0.031250 0.562500 -0.140625
|
||||
v 0.031250 0.437500 -0.140625
|
||||
v 0.031250 0.656250 -0.125000
|
||||
v 0.046875 0.656250 -0.125000
|
||||
v 0.046875 0.562500 -0.109375
|
||||
v 0.046875 0.437500 -0.109375
|
||||
v 0.046875 0.437500 -0.140625
|
||||
v 0.046875 0.562500 -0.140625
|
||||
vt -0.002146 -0.002232
|
||||
vt -0.002146 -0.002232
|
||||
vt -0.002146 -0.002232
|
||||
vt -0.002146 -0.002232
|
||||
vt -0.002146 -0.002232
|
||||
vt -0.002146 -0.002232
|
||||
vt -0.002146 -0.002232
|
||||
vt -0.002146 -0.002232
|
||||
vt -0.002146 -0.002232
|
||||
vt -0.002146 -0.002232
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.1644 -0.9864
|
||||
vn 0.0000 0.1644 0.9864
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
s off
|
||||
f 8/1/1 9/2/1 10/3/1
|
||||
f 5/4/2 10/3/2 3/5/2
|
||||
f 1/6/3 6/7/3 5/4/3
|
||||
f 3/5/4 9/2/4 4/8/4
|
||||
f 2/9/5 7/10/5 1/6/5
|
||||
f 6/7/1 7/10/1 10/3/1
|
||||
f 7/10/1 8/1/1 10/3/1
|
||||
f 5/4/2 6/7/2 10/3/2
|
||||
f 1/6/3 7/10/3 6/7/3
|
||||
f 3/5/4 10/3/4 9/2/4
|
||||
f 2/9/5 8/1/5 7/10/5
|
||||
o Gauge
|
||||
v 0.062500 0.687500 0.125000
|
||||
v 0.000000 0.718750 -0.156250
|
||||
v 0.000000 0.718750 0.156250
|
||||
v 0.062500 0.437500 -0.125000
|
||||
v 0.062500 0.687500 -0.125000
|
||||
v 0.000000 0.406250 -0.156250
|
||||
v 0.000000 0.406250 0.156250
|
||||
v 0.062500 0.437500 0.125000
|
||||
v 0.062500 0.718750 0.156250
|
||||
v 0.062500 0.718750 -0.156250
|
||||
v 0.062500 0.406250 -0.156250
|
||||
v 0.062500 0.406250 0.156250
|
||||
v 0.031250 0.687500 0.125000
|
||||
v 0.031250 0.687500 -0.125000
|
||||
v 0.031250 0.437500 -0.125000
|
||||
v 0.031250 0.437500 0.125000
|
||||
v 0.031250 0.463180 0.123708
|
||||
v 0.031250 0.455398 0.124389
|
||||
v 0.031250 0.457733 0.061446
|
||||
v 0.031250 0.449950 0.062127
|
||||
v 0.036250 0.463180 0.123708
|
||||
v 0.036250 0.455398 0.124389
|
||||
v 0.036250 0.457733 0.061446
|
||||
v 0.036250 0.449950 0.062127
|
||||
v 0.031250 0.687500 0.050000
|
||||
v 0.031250 0.505978 0.115470
|
||||
v 0.031250 0.498432 0.117492
|
||||
v 0.031250 0.489802 0.055100
|
||||
v 0.031250 0.482255 0.057122
|
||||
v 0.036250 0.505978 0.115470
|
||||
v 0.036250 0.498432 0.117492
|
||||
v 0.036250 0.489802 0.055100
|
||||
v 0.036250 0.482255 0.057122
|
||||
v 0.031250 0.546695 0.099926
|
||||
v 0.031250 0.539614 0.103228
|
||||
v 0.031250 0.520281 0.043282
|
||||
v 0.031250 0.513201 0.046584
|
||||
v 0.036250 0.546695 0.099926
|
||||
v 0.036250 0.539614 0.103228
|
||||
v 0.036250 0.520281 0.043282
|
||||
v 0.036250 0.513201 0.046584
|
||||
v 0.031250 0.584094 0.077548
|
||||
v 0.031250 0.577694 0.082029
|
||||
v 0.031250 0.548245 0.026350
|
||||
v 0.031250 0.541846 0.030832
|
||||
v 0.036250 0.584094 0.077548
|
||||
v 0.036250 0.577694 0.082029
|
||||
v 0.036250 0.548245 0.026350
|
||||
v 0.036250 0.541846 0.030832
|
||||
v 0.031250 0.617039 0.049015
|
||||
v 0.031250 0.611515 0.054539
|
||||
v 0.031250 0.572845 0.004820
|
||||
v 0.031250 0.567320 0.010345
|
||||
v 0.036250 0.617039 0.049015
|
||||
v 0.036250 0.611515 0.054539
|
||||
v 0.036250 0.572845 0.004820
|
||||
v 0.036250 0.567320 0.010345
|
||||
v 0.031250 0.644529 0.015194
|
||||
v 0.031250 0.640047 0.021594
|
||||
v 0.031250 0.593332 -0.020654
|
||||
v 0.031250 0.588850 -0.014255
|
||||
v 0.036250 0.644529 0.015194
|
||||
v 0.036250 0.640047 0.021594
|
||||
v 0.036250 0.593332 -0.020654
|
||||
v 0.036250 0.588850 -0.014255
|
||||
v 0.031250 0.665728 -0.022886
|
||||
v 0.031250 0.662426 -0.015805
|
||||
v 0.031250 0.609084 -0.049299
|
||||
v 0.031250 0.605782 -0.042219
|
||||
v 0.036250 0.665728 -0.022886
|
||||
v 0.036250 0.662426 -0.015805
|
||||
v 0.036250 0.609084 -0.049299
|
||||
v 0.036250 0.605782 -0.042219
|
||||
v 0.031250 0.679992 -0.064068
|
||||
v 0.031250 0.677970 -0.056522
|
||||
v 0.031250 0.619622 -0.080245
|
||||
v 0.031250 0.617600 -0.072698
|
||||
v 0.036250 0.679992 -0.064068
|
||||
v 0.036250 0.677970 -0.056522
|
||||
v 0.036250 0.619622 -0.080245
|
||||
v 0.036250 0.617600 -0.072698
|
||||
v 0.031250 0.686889 -0.107102
|
||||
v 0.031250 0.686208 -0.099320
|
||||
v 0.031250 0.624627 -0.112550
|
||||
v 0.031250 0.623946 -0.104767
|
||||
v 0.036250 0.686889 -0.107102
|
||||
v 0.036250 0.686208 -0.099320
|
||||
v 0.036250 0.624627 -0.112550
|
||||
v 0.036250 0.623946 -0.104767
|
||||
vt 0.428571 0.142857
|
||||
vt 0.500000 0.857143
|
||||
vt 0.428571 0.857143
|
||||
vt 0.071429 1.000000
|
||||
vt 0.071429 0.857143
|
||||
vt -0.000000 0.142857
|
||||
vt 0.071429 0.142857
|
||||
vt 0.142857 0.214286
|
||||
vt 0.071429 0.785714
|
||||
vt 0.142857 0.785714
|
||||
vt 0.428571 -0.000000
|
||||
vt 0.392857 0.785714
|
||||
vt 0.107143 0.785714
|
||||
vt 0.107143 0.214286
|
||||
vt 0.392857 0.214286
|
||||
vt 1.000000 1.000000
|
||||
vt 0.785714 1.000000
|
||||
vt 1.000000 0.428571
|
||||
vt 0.392857 0.285714
|
||||
vt 0.107143 0.142857
|
||||
vt 0.107143 0.285714
|
||||
vt 0.357143 0.785714
|
||||
vt 0.428571 0.214286
|
||||
vt 0.357143 0.214286
|
||||
vt 0.107143 0.714286
|
||||
vt 0.107143 0.857143
|
||||
vt 0.193750 0.857143
|
||||
vt 0.571429 0.285714
|
||||
vt 0.642857 0.142857
|
||||
vt 0.642857 0.285714
|
||||
vt 0.500000 0.142857
|
||||
vt 0.500000 0.285714
|
||||
vt 0.642857 0.000000
|
||||
vt 0.571429 0.142857
|
||||
vt 0.571429 0.000000
|
||||
vt 0.571429 0.428571
|
||||
vt 0.642857 0.428571
|
||||
vt 0.714286 0.285714
|
||||
vt 0.714286 0.142857
|
||||
vt 0.642857 1.000000
|
||||
vt 0.500000 0.428571
|
||||
vt 0.785714 0.428571
|
||||
vt 0.571429 0.285714
|
||||
vt 0.642857 0.142857
|
||||
vt 0.642857 0.285714
|
||||
vt 0.500000 0.142857
|
||||
vt 0.500000 0.285714
|
||||
vt 0.642857 0.000000
|
||||
vt 0.571429 0.142857
|
||||
vt 0.571429 0.000000
|
||||
vt 0.571429 0.428571
|
||||
vt 0.642857 0.428571
|
||||
vt 0.714286 0.285714
|
||||
vt 0.714286 0.142857
|
||||
vt 0.571429 0.285714
|
||||
vt 0.642857 0.142857
|
||||
vt 0.642857 0.285714
|
||||
vt 0.500000 0.142857
|
||||
vt 0.500000 0.285714
|
||||
vt 0.642857 0.000000
|
||||
vt 0.571429 0.142857
|
||||
vt 0.571429 0.000000
|
||||
vt 0.571429 0.428571
|
||||
vt 0.642857 0.428571
|
||||
vt 0.714286 0.285714
|
||||
vt 0.714286 0.142857
|
||||
vt 0.571429 0.285714
|
||||
vt 0.642857 0.142857
|
||||
vt 0.642857 0.285714
|
||||
vt 0.500000 0.142857
|
||||
vt 0.500000 0.285714
|
||||
vt 0.642857 0.000000
|
||||
vt 0.571429 0.142857
|
||||
vt 0.571429 0.000000
|
||||
vt 0.571429 0.428571
|
||||
vt 0.642857 0.428571
|
||||
vt 0.714286 0.285714
|
||||
vt 0.714286 0.142857
|
||||
vt 0.571429 0.285714
|
||||
vt 0.642857 0.142857
|
||||
vt 0.642857 0.285714
|
||||
vt 0.500000 0.142857
|
||||
vt 0.500000 0.285714
|
||||
vt 0.642857 0.000000
|
||||
vt 0.571429 0.142857
|
||||
vt 0.571429 0.000000
|
||||
vt 0.571429 0.428571
|
||||
vt 0.642857 0.428571
|
||||
vt 0.714286 0.285714
|
||||
vt 0.714286 0.142857
|
||||
vt 0.571429 0.285714
|
||||
vt 0.642857 0.142857
|
||||
vt 0.642857 0.285714
|
||||
vt 0.500000 0.142857
|
||||
vt 0.500000 0.285714
|
||||
vt 0.642857 0.000000
|
||||
vt 0.571429 0.142857
|
||||
vt 0.571429 0.000000
|
||||
vt 0.571429 0.428571
|
||||
vt 0.642857 0.428571
|
||||
vt 0.714286 0.285714
|
||||
vt 0.714286 0.142857
|
||||
vt 0.571429 0.285714
|
||||
vt 0.642857 0.142857
|
||||
vt 0.642857 0.285714
|
||||
vt 0.500000 0.142857
|
||||
vt 0.500000 0.285714
|
||||
vt 0.642857 0.000000
|
||||
vt 0.571429 0.142857
|
||||
vt 0.571429 0.000000
|
||||
vt 0.571429 0.428571
|
||||
vt 0.642857 0.428571
|
||||
vt 0.714286 0.285714
|
||||
vt 0.714286 0.142857
|
||||
vt 0.571429 0.285714
|
||||
vt 0.642857 0.142857
|
||||
vt 0.642857 0.285714
|
||||
vt 0.500000 0.142857
|
||||
vt 0.500000 0.285714
|
||||
vt 0.642857 0.000000
|
||||
vt 0.571429 0.142857
|
||||
vt 0.571429 0.000000
|
||||
vt 0.571429 0.428571
|
||||
vt 0.642857 0.428571
|
||||
vt 0.714286 0.285714
|
||||
vt 0.714286 0.142857
|
||||
vt 0.571429 0.285714
|
||||
vt 0.642857 0.142857
|
||||
vt 0.642857 0.285714
|
||||
vt 0.500000 0.142857
|
||||
vt 0.500000 0.285714
|
||||
vt 0.642857 0.000000
|
||||
vt 0.571429 0.142857
|
||||
vt 0.571429 0.000000
|
||||
vt 0.571429 0.428571
|
||||
vt 0.642857 0.428571
|
||||
vt 0.714286 0.285714
|
||||
vt 0.714286 0.142857
|
||||
vt 0.500000 0.142857
|
||||
vt 0.428571 1.000000
|
||||
vt -0.000000 0.857143
|
||||
vt 0.071429 0.214286
|
||||
vt 0.071429 -0.000000
|
||||
vt 0.392857 0.142857
|
||||
vt 0.428571 0.785714
|
||||
vt 0.392857 0.857143
|
||||
vt 0.392857 0.714286
|
||||
vt 0.500000 1.000000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 0.0000 -0.0000 1.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 -0.9962 0.0872
|
||||
vn 0.0000 -0.0872 -0.9962
|
||||
vn 0.0000 0.0872 0.9962
|
||||
vn 0.0000 0.9962 -0.0872
|
||||
vn 0.0000 -0.9659 0.2588
|
||||
vn 0.0000 -0.2588 -0.9659
|
||||
vn 0.0000 0.2588 0.9659
|
||||
vn 0.0000 0.9659 -0.2588
|
||||
vn 0.0000 -0.9063 0.4226
|
||||
vn 0.0000 -0.4226 -0.9063
|
||||
vn 0.0000 0.4226 0.9063
|
||||
vn 0.0000 0.9063 -0.4226
|
||||
vn 0.0000 -0.8192 0.5736
|
||||
vn 0.0000 -0.5736 -0.8192
|
||||
vn 0.0000 0.5736 0.8192
|
||||
vn 0.0000 0.8192 -0.5736
|
||||
vn 0.0000 -0.7071 0.7071
|
||||
vn 0.0000 -0.7071 -0.7071
|
||||
vn 0.0000 0.7071 0.7071
|
||||
vn 0.0000 0.7071 -0.7071
|
||||
vn 0.0000 -0.5736 0.8192
|
||||
vn 0.0000 -0.8192 -0.5736
|
||||
vn 0.0000 0.8191 0.5736
|
||||
vn 0.0000 0.5736 -0.8192
|
||||
vn 0.0000 -0.4226 0.9063
|
||||
vn 0.0000 -0.9063 -0.4226
|
||||
vn 0.0000 0.9063 0.4226
|
||||
vn 0.0000 0.4226 -0.9063
|
||||
vn 0.0000 -0.2588 0.9659
|
||||
vn 0.0000 -0.9659 -0.2588
|
||||
vn 0.0000 0.9659 0.2588
|
||||
vn 0.0000 0.2588 -0.9659
|
||||
vn 0.0000 -0.0872 0.9962
|
||||
vn 0.0000 -0.9962 -0.0872
|
||||
vn 0.0000 0.9962 0.0872
|
||||
vn 0.0000 0.0872 -0.9962
|
||||
vn 0.0000 0.8192 0.5736
|
||||
vn 0.0000 -0.9962 -0.0871
|
||||
s off
|
||||
f 21/11/6 12/12/6 20/13/6
|
||||
f 20/13/7 13/14/7 19/15/7
|
||||
f 19/15/8 17/16/8 22/17/8
|
||||
f 18/18/6 23/19/6 11/20/6
|
||||
f 22/17/9 16/21/9 21/11/9
|
||||
f 15/22/10 19/15/10 11/23/10
|
||||
f 18/24/10 21/11/10 14/25/10
|
||||
f 14/25/10 20/13/10 15/22/10
|
||||
f 11/23/10 22/17/10 18/24/10
|
||||
f 24/26/10 35/27/10 25/28/10
|
||||
f 14/29/7 26/30/7 18/31/7
|
||||
f 15/32/8 25/33/8 14/34/8
|
||||
f 11/35/9 23/36/9 35/37/9
|
||||
f 32/38/10 33/39/10 31/40/10
|
||||
f 30/41/11 32/38/11 28/42/11
|
||||
f 29/43/12 34/44/12 30/45/12
|
||||
f 28/46/13 31/40/13 27/47/13
|
||||
f 27/48/14 33/39/14 29/49/14
|
||||
f 35/50/10 26/51/10 25/52/10
|
||||
f 41/53/10 42/54/10 40/55/10
|
||||
f 39/56/15 41/53/15 37/57/15
|
||||
f 38/58/16 43/59/16 39/60/16
|
||||
f 37/61/17 40/55/17 36/62/17
|
||||
f 36/63/18 42/54/18 38/64/18
|
||||
f 49/65/10 50/66/10 48/67/10
|
||||
f 47/68/19 49/65/19 45/69/19
|
||||
f 46/70/20 51/71/20 47/72/20
|
||||
f 45/73/21 48/67/21 44/74/21
|
||||
f 44/75/22 50/66/22 46/76/22
|
||||
f 57/77/10 58/78/10 56/79/10
|
||||
f 55/80/23 57/77/23 53/81/23
|
||||
f 54/82/24 59/83/24 55/84/24
|
||||
f 53/85/25 56/79/25 52/86/25
|
||||
f 52/87/26 58/78/26 54/88/26
|
||||
f 65/89/10 66/90/10 64/91/10
|
||||
f 63/92/27 65/89/27 61/93/27
|
||||
f 62/94/28 67/95/28 63/96/28
|
||||
f 61/97/29 64/91/29 60/98/29
|
||||
f 60/99/30 66/90/30 62/100/30
|
||||
f 73/101/10 74/102/10 72/103/10
|
||||
f 71/104/31 73/101/31 69/105/31
|
||||
f 70/106/32 75/107/32 71/108/32
|
||||
f 69/109/33 72/103/33 68/110/33
|
||||
f 68/111/34 74/102/34 70/112/34
|
||||
f 81/113/10 82/114/10 80/115/10
|
||||
f 79/116/35 81/113/35 77/117/35
|
||||
f 78/118/36 83/119/36 79/120/36
|
||||
f 77/121/37 80/115/37 76/122/37
|
||||
f 76/123/38 82/114/38 78/124/38
|
||||
f 89/125/10 90/126/10 88/127/10
|
||||
f 87/128/39 89/125/39 85/129/39
|
||||
f 86/130/40 91/131/40 87/132/40
|
||||
f 85/133/41 88/127/41 84/134/41
|
||||
f 84/135/42 90/126/42 86/136/42
|
||||
f 97/137/10 98/138/10 96/139/10
|
||||
f 95/140/43 97/137/43 93/141/43
|
||||
f 94/142/44 99/143/44 95/144/44
|
||||
f 93/145/45 96/139/45 92/146/45
|
||||
f 92/147/46 98/138/46 94/148/46
|
||||
f 21/11/6 16/149/6 12/12/6
|
||||
f 20/13/7 12/150/7 13/14/7
|
||||
f 19/15/8 13/151/8 17/16/8
|
||||
f 18/18/6 26/152/6 23/19/6
|
||||
f 22/17/9 17/153/9 16/21/9
|
||||
f 15/22/10 20/13/10 19/15/10
|
||||
f 18/24/10 22/17/10 21/11/10
|
||||
f 14/25/10 21/11/10 20/13/10
|
||||
f 11/23/10 19/15/10 22/17/10
|
||||
f 14/29/7 25/154/7 26/30/7
|
||||
f 15/32/8 24/155/8 25/33/8
|
||||
f 24/156/9 15/157/9 35/37/9
|
||||
f 15/157/9 11/35/9 35/37/9
|
||||
f 32/38/10 34/44/10 33/39/10
|
||||
f 30/41/11 34/44/11 32/38/11
|
||||
f 29/43/12 33/39/12 34/44/12
|
||||
f 28/46/13 32/38/13 31/40/13
|
||||
f 27/48/14 31/40/14 33/39/14
|
||||
f 35/50/10 23/158/10 26/51/10
|
||||
f 41/53/10 43/59/10 42/54/10
|
||||
f 39/56/15 43/59/15 41/53/15
|
||||
f 38/58/16 42/54/16 43/59/16
|
||||
f 37/61/17 41/53/17 40/55/17
|
||||
f 36/63/18 40/55/18 42/54/18
|
||||
f 49/65/10 51/71/10 50/66/10
|
||||
f 47/68/19 51/71/19 49/65/19
|
||||
f 46/70/20 50/66/20 51/71/20
|
||||
f 45/73/21 49/65/21 48/67/21
|
||||
f 44/75/22 48/67/22 50/66/22
|
||||
f 57/77/10 59/83/10 58/78/10
|
||||
f 55/80/23 59/83/23 57/77/23
|
||||
f 54/82/24 58/78/24 59/83/24
|
||||
f 53/85/25 57/77/25 56/79/25
|
||||
f 52/87/26 56/79/26 58/78/26
|
||||
f 65/89/10 67/95/10 66/90/10
|
||||
f 63/92/27 67/95/27 65/89/27
|
||||
f 62/94/28 66/90/28 67/95/28
|
||||
f 61/97/29 65/89/29 64/91/29
|
||||
f 60/99/30 64/91/30 66/90/30
|
||||
f 73/101/10 75/107/10 74/102/10
|
||||
f 71/104/31 75/107/31 73/101/31
|
||||
f 70/106/32 74/102/32 75/107/32
|
||||
f 69/109/47 73/101/47 72/103/47
|
||||
f 68/111/34 72/103/34 74/102/34
|
||||
f 81/113/10 83/119/10 82/114/10
|
||||
f 79/116/35 83/119/35 81/113/35
|
||||
f 78/118/36 82/114/36 83/119/36
|
||||
f 77/121/37 81/113/37 80/115/37
|
||||
f 76/123/38 80/115/38 82/114/38
|
||||
f 89/125/10 91/131/10 90/126/10
|
||||
f 87/128/39 91/131/39 89/125/39
|
||||
f 86/130/40 90/126/40 91/131/40
|
||||
f 85/133/41 89/125/41 88/127/41
|
||||
f 84/135/42 88/127/42 90/126/42
|
||||
f 97/137/10 99/143/10 98/138/10
|
||||
f 95/140/43 99/143/43 97/137/43
|
||||
f 94/142/48 98/138/48 99/143/48
|
||||
f 93/145/45 97/137/45 96/139/45
|
||||
f 92/147/46 96/139/46 98/138/46
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 651 B After Width: | Height: | Size: 968 B |
Binary file not shown.
|
Before Width: | Height: | Size: 618 B After Width: | Height: | Size: 949 B |
Binary file not shown.
|
Before Width: | Height: | Size: 407 B After Width: | Height: | Size: 674 B |
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user