Merge branch 'HbmMods:master' into master

This commit is contained in:
George Paton 2024-05-08 17:48:29 +10:00 committed by GitHub
commit 1c9c7f47fb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
33 changed files with 4525 additions and 152 deletions

View File

@ -1,42 +0,0 @@
## Added
* New meteorite ores
* All previous meteorite ores have been removed (each took up an entire block ID...) which have been replaced with a single block that uses metadata
* There's now only five variants with the contents chosen to be especially useful in earlygame: iron, copper, aluminium, rare earth and cobalt
* Each ore smelts into 16 items, except for cobalt which yields only 4 ingots
* All meteorite ores are now equally likely to spawn
* The new ores can only be smelted, shredding or other processing is not possible
## Changed
* The Souyz' recipe is now available in the standard template folder
* Removed some unused crap
* UV lamps (2 IDs)
* AMS (9 IDs)
* Rotary engine (1 ID)
* FWatz (8 IDs)
* Meteorite ores (10 IDs)
* Tiny nuclear rector (1 ID)
* The small oil heaters are no longer craftable and the NEI handler has been removed, however existing ones can still be used
* The loot pool for meteorite treasure blocks has been updated
* Treasures are no longer senselessly progression breaking, radioactive or plain stupid (whole-ass machines inside meteorites)
* The treasure now consists of mainly some rarer earlygame ingots, circuits, some gear, a small selection of armor mods and alexandrite (rare)
* Schraranium processing now yields neptunium as a byproduct instead of plutonium, making neptunium easier to automate outside of the cyclotron
* Using the guide book now opens a link to the new wiki
* Certain earlygame things can now be recycled like stirling engines and gears
* Antenna part recycling has been moved to the anvil
* NTM's pickaxes now have a break speed bonus for glass
* Renamed the foundry slag outlet to foundry spill outlet because people always assume it's for slag and only slag (it is not)
* The description for heatable/coolable fluid tags is now written in the same line as the label
* Rubber can now be made from acidizing latex with sour gas (requires just 25mB)
* Heating oil can now be reformed into naphtha
* Coker naphtha can now also be reformed like the other naphtha types (yields refgas instead of petgas as a byproduct)
## Fixed
* Fixed DFC receivers not outputting power
* Fixed the custom machine NEI handlers not working
* Fixed a potential crash caused by invalid assembly templates
* Fixed general weirdness with the schrabidium transmutator item IO
* Fixed certain tooltips using the backslash escape character despite not needing them
* Hopefully fixed the immense lag caused by tom post impact mechanics, burning grass will now only spread 20% of the time (instead of 100) and the world destruction handler will only process half the blocks per chunk
* Hopefully fixed an issue where substations would not reliably connect to cable blocks
* Fixed assembler rendering bugging out with Angelica installed and a door template loaded
* Fixed medium pylon localizations

View File

@ -1,6 +1,6 @@
mod_version=1.0.27 mod_version=1.0.27
# Empty build number makes a release type # Empty build number makes a release type
mod_build_number=4942 mod_build_number=4956
credits=HbMinecraft,\ credits=HbMinecraft,\
\ rodolphito (explosion algorithms),\ \ rodolphito (explosion algorithms),\
@ -20,6 +20,7 @@ credits=HbMinecraft,\
\ Pashtet (russian localization),\ \ Pashtet (russian localization),\
\ Bismarck (chinese localization),\ \ Bismarck (chinese localization),\
\ Maksymisio (polish localization)\ \ Maksymisio (polish localization)\
\ el3ctro4ndre (italian localization),\
\ Pu-238 (Tom impact effects),\ \ Pu-238 (Tom impact effects),\
\ UFFR (RTGs, guns, casings, euphemium capacitor),\ \ UFFR (RTGs, guns, casings, euphemium capacitor),\
\ Frooz (models),\ \ Frooz (models),\

View File

@ -7,7 +7,6 @@ import com.hbm.tileentity.IGUIProvider;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiScreen;
@ -22,6 +21,7 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetworkManager; import net.minecraft.network.NetworkManager;
import net.minecraft.network.Packet; import net.minecraft.network.Packet;
import net.minecraft.network.play.server.S35PacketUpdateTileEntity; import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
import net.minecraft.stats.StatList;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.MathHelper; import net.minecraft.util.MathHelper;
@ -71,20 +71,28 @@ public class BlockBobble extends BlockContainer implements IGUIProvider {
} }
@Override @Override
public void breakBlock(World world, int x, int y, int z, Block block, int meta) { public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) {
if(!world.isRemote) { if(!player.capabilities.isCreativeMode) {
TileEntityBobble entity = (TileEntityBobble) world.getTileEntity(x, y, z); harvesters.set(player);
if(entity != null) { if(!world.isRemote) {
EntityItem item = new EntityItem(world, x + 0.5, y, z + 0.5, new ItemStack(this, 1, entity.type.ordinal())); TileEntityBobble entity = (TileEntityBobble) world.getTileEntity(x, y, z);
item.motionX = 0; if(entity != null) {
item.motionY = 0; EntityItem item = new EntityItem(world, x + 0.5, y, z + 0.5, new ItemStack(this, 1, entity.type.ordinal()));
item.motionZ = 0; item.motionX = 0;
world.spawnEntityInWorld(item); item.motionY = 0;
item.motionZ = 0;
world.spawnEntityInWorld(item);
}
} }
harvesters.set(null);
} }
}
super.breakBlock(world, x, y, z, block, meta); @Override
public void harvestBlock(World world, EntityPlayer player, int x, int y, int z, int meta) {
player.addStat(StatList.mineBlockStatArray[getIdFromBlock(this)], 1);
player.addExhaustion(0.025F);
} }
@Override @Override

View File

@ -10,7 +10,6 @@ import com.hbm.tileentity.IGUIProvider;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiScreen;
@ -25,6 +24,7 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetworkManager; import net.minecraft.network.NetworkManager;
import net.minecraft.network.Packet; import net.minecraft.network.Packet;
import net.minecraft.network.play.server.S35PacketUpdateTileEntity; import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
import net.minecraft.stats.StatList;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.MathHelper; import net.minecraft.util.MathHelper;
@ -66,20 +66,28 @@ public class BlockSnowglobe extends BlockContainer implements IGUIProvider {
} }
@Override @Override
public void breakBlock(World world, int x, int y, int z, Block block, int meta) { public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) {
if(!world.isRemote) { if(!player.capabilities.isCreativeMode) {
TileEntitySnowglobe entity = (TileEntitySnowglobe) world.getTileEntity(x, y, z); harvesters.set(player);
if(entity != null) { if(!world.isRemote) {
EntityItem item = new EntityItem(world, x + 0.5, y, z + 0.5, new ItemStack(this, 1, entity.type.ordinal())); TileEntitySnowglobe entity = (TileEntitySnowglobe) world.getTileEntity(x, y, z);
item.motionX = 0; if(entity != null) {
item.motionY = 0; EntityItem item = new EntityItem(world, x + 0.5, y, z + 0.5, new ItemStack(this, 1, entity.type.ordinal()));
item.motionZ = 0; item.motionX = 0;
world.spawnEntityInWorld(item); item.motionY = 0;
item.motionZ = 0;
world.spawnEntityInWorld(item);
}
} }
harvesters.set(null);
} }
}
super.breakBlock(world, x, y, z, block, meta); @Override
public void harvestBlock(World world, EntityPlayer player, int x, int y, int z, int meta) {
player.addStat(StatList.mineBlockStatArray[getIdFromBlock(this)], 1);
player.addExhaustion(0.025F);
} }
@Override @Override

View File

@ -7,14 +7,22 @@ import java.util.Locale;
import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ILookOverlay;
import com.hbm.blocks.ITooltipProvider; import com.hbm.blocks.ITooltipProvider;
import com.hbm.inventory.fluid.FluidType;
import com.hbm.items.machine.IItemFluidIdentifier;
import com.hbm.main.MainRegistry;
import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.TileEntityProxyCombo;
import com.hbm.tileentity.machine.TileEntityHeaterHeatex; import com.hbm.tileentity.machine.TileEntityHeaterHeatex;
import com.hbm.util.I18nUtil; import com.hbm.util.I18nUtil;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.ChatComponentTranslation;
import net.minecraft.util.ChatStyle;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
@ -45,7 +53,34 @@ public class HeaterHeatex extends BlockDummyable implements ILookOverlay, IToolt
@Override @Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { 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);
if(world.isRemote) {
return true;
} else {
int[] pos = this.findCore(world, x, y, z);
if(pos == null)
return false;
if(player.isSneaking()) {
TileEntityHeaterHeatex trialEntity = (TileEntityHeaterHeatex) world.getTileEntity(pos[0], pos[1], pos[2]);
if(trialEntity != null) {
if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IItemFluidIdentifier) {
FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, pos[0], pos[1], pos[2], player.getHeldItem());
trialEntity.tanks[0].setTankType(type);
trialEntity.markDirty();
player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!")));
return true;
}
}
} else {
FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]);
}
return true;
}
} }
@Override @Override

View File

@ -101,17 +101,17 @@ public class MachineBigAssTank9000 extends BlockDummyable implements IPersistent
TileEntityMachineBAT9000 trialEntity = (TileEntityMachineBAT9000) world.getTileEntity(pos[0], pos[1], pos[2]); TileEntityMachineBAT9000 trialEntity = (TileEntityMachineBAT9000) world.getTileEntity(pos[0], pos[1], pos[2]);
if(trialEntity != null) { if(trialEntity != null) {
if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IItemFluidIdentifier) { if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IItemFluidIdentifier) {
FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, pos[0], pos[1], pos[2], player.getHeldItem()); FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, pos[0], pos[1], pos[2], player.getHeldItem());
trialEntity.tank.setTankType(type); trialEntity.tank.setTankType(type);
trialEntity.markDirty(); trialEntity.markDirty();
player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!"))); player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!")));
} }
} }
return true; return true;
}else { } else {
return true; return true;
} }
} }

View File

@ -1,12 +1,15 @@
package com.hbm.blocks.machine; package com.hbm.blocks.machine;
import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.BlockDummyable;
import com.hbm.handler.MultiblockHandlerXR;
import com.hbm.tileentity.TileEntityProxyCombo;
import com.hbm.tileentity.machine.TileEntityICF; import com.hbm.tileentity.machine.TileEntityICF;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class MachineICF extends BlockDummyable { public class MachineICF extends BlockDummyable {
@ -17,6 +20,7 @@ public class MachineICF extends BlockDummyable {
@Override @Override
public TileEntity createNewTileEntity(World world, int meta) { public TileEntity createNewTileEntity(World world, int meta) {
if(meta >= 12) return new TileEntityICF(); if(meta >= 12) return new TileEntityICF();
if(meta >= 6) return new TileEntityProxyCombo().inventory().fluid();
return null; return null;
} }
@ -30,6 +34,31 @@ public class MachineICF extends BlockDummyable {
return 1; return 1;
} }
@Override
public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) {
super.fillSpace(world, x, y, z, dir, o);
MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o , y + 3, z + dir.offsetZ * o, new int[] {1, 1, -1, 2, 8, 8}, this, dir);
MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o , y + 3, z + dir.offsetZ * o, new int[] {1, 1, 2, -1, 8, 8}, this, dir);
x += dir.offsetX * o;
z += dir.offsetZ * o;
this.makeExtra(world, x , y + 5, z);
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
this.makeExtra(world, x + dir.offsetX * 2 + rot.offsetX * 6 , y + 3, z + dir.offsetZ * 2 + rot.offsetZ * 6);
this.makeExtra(world, x + dir.offsetX * 2 - rot.offsetX * 6 , y + 3, z + dir.offsetZ * 2 - rot.offsetZ * 6);
this.makeExtra(world, x - dir.offsetX * 2 + rot.offsetX * 6 , y + 3, z - dir.offsetZ * 2 + rot.offsetZ * 6);
this.makeExtra(world, x - dir.offsetX * 2 - rot.offsetX * 6 , y + 3, z - dir.offsetZ * 2 - rot.offsetZ * 6);
}
@Override
protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) {
if(!super.checkRequirement(world, x, y, z, dir, o)) return false;
//if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {4, -3, 1, 1, 1, 1}, x, y, z, dir)) return false;
return true;
}
@Override @Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
return super.standardOpenBehavior(world, x, y, z, player, 0); return super.standardOpenBehavior(world, x, y, z, player, 0);

View File

@ -1,17 +1,28 @@
package com.hbm.blocks.machine; package com.hbm.blocks.machine;
import com.hbm.lib.RefStrings; import java.util.List;
import com.hbm.blocks.ITooltipProvider;
import com.hbm.lib.RefStrings;
import com.hbm.main.MainRegistry;
import com.hbm.tileentity.machine.TileEntityICFPress;
import com.hbm.util.I18nUtil;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IIcon; import net.minecraft.util.IIcon;
import net.minecraft.world.World; import net.minecraft.world.World;
public class MachineICFPress extends BlockContainer { public class MachineICFPress extends BlockContainer implements ITooltipProvider {
@SideOnly(Side.CLIENT) private IIcon iconTop; @SideOnly(Side.CLIENT) private IIcon iconTop;
@ -21,7 +32,7 @@ public class MachineICFPress extends BlockContainer {
@Override @Override
public TileEntity createNewTileEntity(World world, int meta) { public TileEntity createNewTileEntity(World world, int meta) {
return null; return new TileEntityICFPress();
} }
@Override @Override
@ -36,4 +47,22 @@ public class MachineICFPress extends BlockContainer {
public IIcon getIcon(int side, int metadata) { public IIcon getIcon(int side, int metadata) {
return side == 1 ? this.iconTop : (side == 0 ? this.iconTop : this.blockIcon); return side == 1 ? this.iconTop : (side == 0 ? this.iconTop : this.blockIcon);
} }
@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;
} else if(!player.isSneaking()) {
FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z);
return true;
} else {
return false;
}
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
for(String s : I18nUtil.resolveKeyArray(((Block)this).getUnlocalizedName() + ".desc")) list.add(EnumChatFormatting.YELLOW + s);
}
} }

View File

@ -478,6 +478,7 @@ public class EntityChemical extends EntityThrowableNT {
int meta = worldObj.getBlockMetadata(x, y, z); int meta = worldObj.getBlockMetadata(x, y, z);
if(block == Blocks.cobblestone) worldObj.setBlock(x, y, z, Blocks.mossy_cobblestone); if(block == Blocks.cobblestone) worldObj.setBlock(x, y, z, Blocks.mossy_cobblestone);
if(block == Blocks.stonebrick && meta == 0) worldObj.setBlock(x, y, z, Blocks.stonebrick, 1, 3); if(block == Blocks.stonebrick && meta == 0) worldObj.setBlock(x, y, z, Blocks.stonebrick, 1, 3);
if(block == ModBlocks.waste_earth) worldObj.setBlock(x, y, z, Blocks.grass);
if(block == ModBlocks.brick_concrete) worldObj.setBlock(x, y, z, ModBlocks.brick_concrete_mossy); if(block == ModBlocks.brick_concrete) worldObj.setBlock(x, y, z, ModBlocks.brick_concrete_mossy);
if(block == ModBlocks.concrete_brick_slab && meta % 8 == 0) worldObj.setBlock(x, y, z, ModBlocks.concrete_brick_slab, meta + 1, 3); if(block == ModBlocks.concrete_brick_slab && meta % 8 == 0) worldObj.setBlock(x, y, z, ModBlocks.concrete_brick_slab, meta + 1, 3);
if(block == ModBlocks.brick_concrete_stairs) worldObj.setBlock(x, y, z, ModBlocks.brick_concrete_mossy_stairs, meta, 3); if(block == ModBlocks.brick_concrete_stairs) worldObj.setBlock(x, y, z, ModBlocks.brick_concrete_mossy_stairs, meta, 3);

View File

@ -0,0 +1,55 @@
package com.hbm.inventory.container;
import com.hbm.inventory.SlotTakeOnly;
import com.hbm.tileentity.machine.TileEntityICFPress;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
public class ContainerICFPress extends Container {
private TileEntityICFPress press;
public ContainerICFPress(InventoryPlayer invPlayer, TileEntityICFPress tedf) {
press = tedf;
//Empty Capsule
this.addSlotToContainer(new Slot(tedf, 0, 98, 18));
//Filled Capsule
this.addSlotToContainer(new SlotTakeOnly(tedf, 1, 98, 54));
//Filled Muon
this.addSlotToContainer(new Slot(tedf, 2, 8, 18));
//Empty Muon
this.addSlotToContainer(new SlotTakeOnly(tedf, 3, 8, 54));
//Solid Fuels
this.addSlotToContainer(new Slot(tedf, 4, 62, 54));
this.addSlotToContainer(new Slot(tedf, 5, 134, 54));
//Fluid IDs
this.addSlotToContainer(new Slot(tedf, 6, 62, 18));
this.addSlotToContainer(new Slot(tedf, 7, 134, 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, 97 + i * 18));
}
}
for(int i = 0; i < 9; i++) {
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 155));
}
}
@Override
public ItemStack transferStackInSlot(EntityPlayer player, int id) {
return null;
}
@Override
public boolean canInteractWith(EntityPlayer player) {
return press.isUseableByPlayer(player);
}
}

View File

@ -6,7 +6,6 @@ import com.hbm.tileentity.machine.TileEntityMachineDiesel;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
import net.minecraft.inventory.ICrafting;
import net.minecraft.inventory.Slot; import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -39,13 +38,7 @@ public class ContainerMachineDiesel extends Container {
} }
@Override @Override
public void addCraftingToCrafters(ICrafting crafting) { public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) {
super.addCraftingToCrafters(crafting);
}
@Override
public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2)
{
ItemStack var3 = null; ItemStack var3 = null;
Slot var4 = (Slot) this.inventorySlots.get(par2); Slot var4 = (Slot) this.inventorySlots.get(par2);

View File

@ -578,19 +578,19 @@ public class Fluids {
HOTCRACKOIL.addTraits(new FT_Coolable(CRACKOIL, 1, 1, 10).setEff(CoolingType.HEATEXCHANGER, 1.0D)); HOTCRACKOIL.addTraits(new FT_Coolable(CRACKOIL, 1, 1, 10).setEff(CoolingType.HEATEXCHANGER, 1.0D));
HOTCRACKOIL_DS.addTraits(new FT_Coolable(CRACKOIL_DS, 1, 1, 10).setEff(CoolingType.HEATEXCHANGER, 1.0D)); HOTCRACKOIL_DS.addTraits(new FT_Coolable(CRACKOIL_DS, 1, 1, 10).setEff(CoolingType.HEATEXCHANGER, 1.0D));
COOLANT.addTraits(new FT_Heatable().setEff(HeatingType.HEATEXCHANGER, 1.0D).setEff(HeatingType.PWR, 1.0D).addStep(300, 1, COOLANT_HOT, 1)); COOLANT.addTraits(new FT_Heatable().setEff(HeatingType.HEATEXCHANGER, 1.0D).setEff(HeatingType.PWR, 1.0D).setEff(HeatingType.ICF, 1.0D).addStep(300, 1, COOLANT_HOT, 1));
COOLANT_HOT.addTraits(new FT_Coolable(COOLANT, 1, 1, 300).setEff(CoolingType.HEATEXCHANGER, 1.0D)); COOLANT_HOT.addTraits(new FT_Coolable(COOLANT, 1, 1, 300).setEff(CoolingType.HEATEXCHANGER, 1.0D));
MUG.addTraits(new FT_Heatable().setEff(HeatingType.HEATEXCHANGER, 1.0D).setEff(HeatingType.PWR, 1.0D).addStep(400, 1, MUG_HOT, 1), new FT_PWRModerator(1.15D)); MUG.addTraits(new FT_Heatable().setEff(HeatingType.HEATEXCHANGER, 1.0D).setEff(HeatingType.PWR, 1.0D).setEff(HeatingType.ICF, 1.25D).addStep(400, 1, MUG_HOT, 1), new FT_PWRModerator(1.15D));
MUG_HOT.addTraits(new FT_Coolable(MUG, 1, 1, 400).setEff(CoolingType.HEATEXCHANGER, 1.0D)); MUG_HOT.addTraits(new FT_Coolable(MUG, 1, 1, 400).setEff(CoolingType.HEATEXCHANGER, 1.0D));
BLOOD.addTraits(new FT_Heatable().setEff(HeatingType.HEATEXCHANGER, 1.0D).addStep(500, 1, BLOOD_HOT, 1)); BLOOD.addTraits(new FT_Heatable().setEff(HeatingType.HEATEXCHANGER, 1.0D).setEff(HeatingType.ICF, 1.25D).addStep(500, 1, BLOOD_HOT, 1));
BLOOD_HOT.addTraits(new FT_Coolable(BLOOD, 1, 1, 500).setEff(CoolingType.HEATEXCHANGER, 1.0D)); BLOOD_HOT.addTraits(new FT_Coolable(BLOOD, 1, 1, 500).setEff(CoolingType.HEATEXCHANGER, 1.0D));
HEAVYWATER.addTraits(new FT_Heatable().setEff(HeatingType.PWR, 1.0D).addStep(300, 1, HEAVYWATER_HOT, 1), new FT_PWRModerator(1.25D)); HEAVYWATER.addTraits(new FT_Heatable().setEff(HeatingType.PWR, 1.0D).addStep(300, 1, HEAVYWATER_HOT, 1), new FT_PWRModerator(1.25D));
HEAVYWATER_HOT.addTraits(new FT_Coolable(HEAVYWATER, 1, 1, 300).setEff(CoolingType.HEATEXCHANGER, 1.0D)); HEAVYWATER_HOT.addTraits(new FT_Coolable(HEAVYWATER, 1, 1, 300).setEff(CoolingType.HEATEXCHANGER, 1.0D));
SODIUM.addTraits(new FT_Heatable().setEff(HeatingType.PWR, 2.5D).addStep(400, 1, SODIUM_HOT, 1)); SODIUM.addTraits(new FT_Heatable().setEff(HeatingType.PWR, 2.5D).setEff(HeatingType.ICF, 3D).addStep(400, 1, SODIUM_HOT, 1));
SODIUM_HOT.addTraits(new FT_Coolable(SODIUM, 1, 1, 400).setEff(CoolingType.HEATEXCHANGER, 1.0D)); SODIUM_HOT.addTraits(new FT_Coolable(SODIUM, 1, 1, 400).setEff(CoolingType.HEATEXCHANGER, 1.0D));
THORIUM_SALT.addTraits(new FT_Heatable().setEff(HeatingType.PWR, 1.0D).addStep(400, 1, THORIUM_SALT_HOT, 1), new FT_PWRModerator(2.5D)); THORIUM_SALT.addTraits(new FT_Heatable().setEff(HeatingType.PWR, 1.0D).addStep(400, 1, THORIUM_SALT_HOT, 1), new FT_PWRModerator(2.5D));

View File

@ -70,7 +70,8 @@ public class FT_Heatable extends FluidTrait {
public static enum HeatingType { public static enum HeatingType {
BOILER("Boilable"), BOILER("Boilable"),
HEATEXCHANGER("Heatable"), HEATEXCHANGER("Heatable"),
PWR("PWR Coolant"); PWR("PWR Coolant"),
ICF("ICF Coolant");
public String name; public String name;

View File

@ -39,11 +39,11 @@ public class GUIHeaterHeatex extends GuiInfoContainer {
super.initGui(); super.initGui();
Keyboard.enableRepeatEvents(true); Keyboard.enableRepeatEvents(true);
this.fieldCycles = new GuiTextField(this.fontRendererObj, guiLeft + 74, guiTop + 31, 28, 10); this.fieldCycles = new GuiTextField(this.fontRendererObj, guiLeft + 73, guiTop + 31, 30, 10);
initText(this.fieldCycles); initText(this.fieldCycles);
this.fieldCycles.setText(String.valueOf(heater.amountToCool)); this.fieldCycles.setText(String.valueOf(heater.amountToCool));
this.fieldDelay = new GuiTextField(this.fontRendererObj, guiLeft + 74, guiTop + 49, 28, 10); this.fieldDelay = new GuiTextField(this.fontRendererObj, guiLeft + 73, guiTop + 49, 30, 10);
initText(this.fieldDelay); initText(this.fieldDelay);
this.fieldDelay.setText(String.valueOf(heater.tickDelay)); this.fieldDelay.setText(String.valueOf(heater.tickDelay));
} }
@ -52,7 +52,7 @@ public class GUIHeaterHeatex extends GuiInfoContainer {
field.setTextColor(0x00ff00); field.setTextColor(0x00ff00);
field.setDisabledTextColour(0x00ff00); field.setDisabledTextColour(0x00ff00);
field.setEnableBackgroundDrawing(false); field.setEnableBackgroundDrawing(false);
field.setMaxStringLength(4); field.setMaxStringLength(5);
} }
@Override @Override

View File

@ -33,6 +33,7 @@ public class GUIICF extends GuiInfoContainer {
icf.tanks[2].renderTankInfo(this, x, y, guiLeft + 224, guiTop + 18, 16, 70); icf.tanks[2].renderTankInfo(this, x, y, guiLeft + 224, guiTop + 18, 16, 70);
this.drawCustomInfoStat(x, y, guiLeft + 8, guiTop + 18, 16, 70, x, y, icf.maxLaser <= 0 ? "OFFLINE" : (BobMathUtil.getShortNumber(icf.laser) + "TU - " + (icf.laser * 1000 / icf.maxLaser) / 10D + "%")); this.drawCustomInfoStat(x, y, guiLeft + 8, guiTop + 18, 16, 70, x, y, icf.maxLaser <= 0 ? "OFFLINE" : (BobMathUtil.getShortNumber(icf.laser) + "TU - " + (icf.laser * 1000 / icf.maxLaser) / 10D + "%"));
this.drawCustomInfoStat(x, y, guiLeft + 187, guiTop + 89, 18, 18, x, y, BobMathUtil.getShortNumber(icf.heat) + " / " + BobMathUtil.getShortNumber(icf.maxHeat) + "TU");
} }
@Override @Override
@ -53,7 +54,7 @@ public class GUIICF extends GuiInfoContainer {
drawTexturedModalRect(guiLeft + 8, guiTop + 88 - p, 212, 192 - p, 16, p); drawTexturedModalRect(guiLeft + 8, guiTop + 88 - p, 212, 192 - p, 16, p);
} }
GaugeUtil.drawSmoothGauge(guiLeft + 196, guiTop + 98, this.zLevel, 0D, 5, 2, 1, 0xFF00AF); GaugeUtil.drawSmoothGauge(guiLeft + 196, guiTop + 98, this.zLevel, (double) icf.heat / (double) icf.maxHeat, 5, 2, 1, 0xFF00AF);
icf.tanks[0].renderTank(guiLeft + 44, guiTop + 88, this.zLevel, 16, 70); icf.tanks[0].renderTank(guiLeft + 44, guiTop + 88, this.zLevel, 16, 70);
icf.tanks[1].renderTank(guiLeft + 188, guiTop + 88, this.zLevel, 16, 70); icf.tanks[1].renderTank(guiLeft + 188, guiTop + 88, this.zLevel, 16, 70);

View File

@ -0,0 +1,46 @@
package com.hbm.inventory.gui;
import org.lwjgl.opengl.GL11;
import com.hbm.inventory.container.ContainerICFPress;
import com.hbm.lib.RefStrings;
import com.hbm.tileentity.machine.TileEntityICFPress;
import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.util.ResourceLocation;
public class GUIICFPress extends GuiInfoContainer {
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_icf_press.png");
private TileEntityICFPress diesel;
public GUIICFPress(InventoryPlayer invPlayer, TileEntityICFPress tedf) {
super(new ContainerICFPress(invPlayer, tedf));
diesel = tedf;
this.xSize = 176;
this.ySize = 179;
}
@Override
public void drawScreen(int mouseX, int mouseY, float f) {
super.drawScreen(mouseX, mouseY, f);
}
@Override
protected void drawGuiContainerForegroundLayer(int i, int j) {
String name = this.diesel.hasCustomInventoryName() ? this.diesel.getInventoryName() : I18n.format(this.diesel.getInventoryName());
this.fontRendererObj.drawString(name, this.xSize / 2 - 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);
}
}

View File

@ -1081,7 +1081,8 @@ public class AnvilRecipes {
constructionRecipes.add(new AnvilConstructionRecipe( constructionRecipes.add(new AnvilConstructionRecipe(
new ComparableStack(ModBlocks.rbmk_control_auto), new AnvilOutput[] { new ComparableStack(ModBlocks.rbmk_control_auto), new AnvilOutput[] {
new AnvilOutput(new ItemStack(ModBlocks.rbmk_control, 1)), new AnvilOutput(new ItemStack(ModBlocks.rbmk_control, 1)),
new AnvilOutput(new ItemStack(ModItems.circuit_targeting_tier1, 2)) new AnvilOutput(new ItemStack(ModItems.circuit_targeting_tier1, 1)),
new AnvilOutput(new ItemStack(ModItems.crt_display, 1))
}).setTier(4)); }).setTier(4));
constructionRecipes.add(new AnvilConstructionRecipe( constructionRecipes.add(new AnvilConstructionRecipe(
new ComparableStack(ModBlocks.rbmk_rod_reasim), new AnvilOutput[] { new ComparableStack(ModBlocks.rbmk_rod_reasim), new AnvilOutput[] {

View File

@ -3841,8 +3841,8 @@ public class ModItems {
watz_pellet_depleted = new ItemWatzPellet().setUnlocalizedName("watz_pellet_depleted").setTextureName(RefStrings.MODID + ":watz_pellet"); watz_pellet_depleted = new ItemWatzPellet().setUnlocalizedName("watz_pellet_depleted").setTextureName(RefStrings.MODID + ":watz_pellet");
icf_pellet_empty = new Item().setUnlocalizedName("icf_pellet_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":icf_pellet_empty"); icf_pellet_empty = new Item().setUnlocalizedName("icf_pellet_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":icf_pellet_empty");
icf_pellet = new Item().setUnlocalizedName("icf_pellet").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":icf_pellet"); icf_pellet = new ItemICFPellet().setUnlocalizedName("icf_pellet").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":icf_pellet");
icf_pellet_depleted = new Item().setUnlocalizedName("icf_pellet_depleted").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":icf_pellet"); icf_pellet_depleted = new Item().setUnlocalizedName("icf_pellet_depleted").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":icf_pellet");
trinitite = new ItemNuclearWaste().setUnlocalizedName("trinitite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":trinitite_new"); trinitite = new ItemNuclearWaste().setUnlocalizedName("trinitite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":trinitite_new");
nuclear_waste_long = new ItemWasteLong().setUnlocalizedName("nuclear_waste_long").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nuclear_waste_long"); nuclear_waste_long = new ItemWasteLong().setUnlocalizedName("nuclear_waste_long").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nuclear_waste_long");

View File

@ -0,0 +1,165 @@
package com.hbm.items.machine;
import java.util.List;
import java.util.Locale;
import com.hbm.items.ModItems;
import com.hbm.lib.RefStrings;
import com.hbm.util.BobMathUtil;
import com.hbm.util.EnumUtil;
import com.hbm.util.I18nUtil;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IIcon;
public class ItemICFPellet extends Item {
protected IIcon iconBG;
public static enum EnumICFFuel {
HYDROGEN( 0x4040FF, 1.0D, 1.0D, 1.0D),
DEUTERIUM( 0x2828CB, 1.0D, 1.0D, 1.0D),
TRITIUM( 0x000092, 1.0D, 1.0D, 1.0D),
HELIUM3( 0xFFF09F, 1.0D, 1.0D, 1.0D), //hey you
HELIUM4( 0xFF9B60, 1.0D, 1.0D, 1.0D), //yes you
LITHIUM( 0xE9E9E9, 1.0D, 1.0D, 1.0D), //fuck off
BERYLLIUM( 0xA79D80, 1.0D, 1.0D, 1.0D),
BORON( 0x697F89, 1.0D, 1.0D, 1.0D),
CARBON( 0x454545, 1.0D, 1.0D, 1.0D),
OXYGEN( 0xB4E2FF, 1.0D, 1.0D, 1.0D),
SODIUM( 0xDFE4E7, 1.0D, 1.0D, 1.0D),
//aluminium, silicon, phosphorus
CHLORINE( 0xDAE598, 1.0D, 1.0D, 1.0D),
CALCIUM( 0xD2C7A9, 1.0D, 1.0D, 1.0D),
//titanium
;
public int color;
public double reactionMult;
public double depletionSpeed;
public double fusingDifficulty;
private EnumICFFuel(int color, double react, double depl, double laser) {
this.color = color;
this.reactionMult = react;
this.depletionSpeed = depl;
this.fusingDifficulty = laser;
}
}
public ItemICFPellet() {
this.setMaxStackSize(1);
}
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs tab, List list) {
list.add(this.setup(EnumICFFuel.DEUTERIUM, EnumICFFuel.TRITIUM, false));
list.add(this.setup(EnumICFFuel.HELIUM3, EnumICFFuel.HELIUM4, false));
list.add(this.setup(EnumICFFuel.LITHIUM, EnumICFFuel.OXYGEN, false));
list.add(this.setup(EnumICFFuel.SODIUM, EnumICFFuel.CHLORINE, true));
list.add(this.setup(EnumICFFuel.BERYLLIUM, EnumICFFuel.CALCIUM, true));
}
public static long getMaxDepletion(ItemStack stack) {
long base = 50_000_000_000L;
base /= getType(stack, true).depletionSpeed;
base /= getType(stack, false).depletionSpeed;
return base;
}
public static long getFusingDifficulty(ItemStack stack) {
long base = 10_000_000L;
base *= getType(stack, true).fusingDifficulty * getType(stack, false).fusingDifficulty;
if(stack.hasTagCompound() && stack.stackTagCompound.getBoolean("muon")) base /= 4;
return base;
}
public static long getDepletion(ItemStack stack) {
if(!stack.hasTagCompound()) return 0L;
return stack.stackTagCompound.getLong("depletion");
}
public static long react(ItemStack stack, long heat) {
if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound();
stack.stackTagCompound.setLong("depletion", stack.stackTagCompound.getLong("depletion") + heat);
return (long) (heat * getType(stack, true).reactionMult * getType(stack, false).reactionMult);
}
public static ItemStack setup(EnumICFFuel type1, EnumICFFuel type2, boolean muon) {
return setup(new ItemStack(ModItems.icf_pellet), type1, type2, muon);
}
public static ItemStack setup(ItemStack stack, EnumICFFuel type1, EnumICFFuel type2, boolean muon) {
if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound();
stack.stackTagCompound.setByte("type1", (byte) type1.ordinal());
stack.stackTagCompound.setByte("type2", (byte) type2.ordinal());
stack.stackTagCompound.setBoolean("muon", muon);
return stack;
}
public static EnumICFFuel getType(ItemStack stack, boolean first) {
if(!stack.hasTagCompound()) return first ? EnumICFFuel.DEUTERIUM : EnumICFFuel.TRITIUM;
return EnumUtil.grabEnumSafely(EnumICFFuel.class, stack.stackTagCompound.getByte("type" + (first ? 1 : 2)));
}
@Override
public boolean showDurabilityBar(ItemStack stack) {
return getDurabilityForDisplay(stack) > 0D;
}
@Override
public double getDurabilityForDisplay(ItemStack stack) {
return (double) getDepletion(stack) / (double) getMaxDepletion(stack);
}
@Override
@SideOnly(Side.CLIENT)
public boolean requiresMultipleRenderPasses() {
return true;
}
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IIconRegister reg) {
super.registerIcons(reg);
this.iconBG = reg.registerIcon(RefStrings.MODID + ":icf_pellet_bg");
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIconFromDamageForRenderPass(int meta, int pass) {
return pass == 1 ? super.getIconFromDamageForRenderPass(meta, pass) : this.iconBG;
}
@Override
@SideOnly(Side.CLIENT)
public int getColorFromItemStack(ItemStack stack, int pass) {
if(pass == 0) {
EnumICFFuel type1 = this.getType(stack, true);
EnumICFFuel type2 = this.getType(stack, false);
int r = (((type1.color & 0xff0000) >> 16) + ((type2.color & 0xff0000) >> 16)) / 2;
int g = (((type1.color & 0x00ff00) >> 8) + ((type2.color & 0x00ff00) >> 8)) / 2;
int b = ((type1.color & 0x0000ff) + (type2.color & 0x0000ff)) / 2;
return r << 16 | g << 8 | b;
}
return 0xffffff;
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) {
list.add(EnumChatFormatting.GREEN + "Depletion: " + String.format(Locale.US, "%.1f", getDurabilityForDisplay(stack) * 100D) + "%");
list.add(EnumChatFormatting.YELLOW + "Fuel: " + I18nUtil.resolveKey("icffuel." + getType(stack, true).name().toLowerCase(Locale.US)) + " / " + I18nUtil.resolveKey("icffuel." + getType(stack, false).name().toLowerCase(Locale.US)));
list.add(EnumChatFormatting.YELLOW + "Heat required: " + BobMathUtil.getShortNumber(this.getFusingDifficulty(stack)) + "TU");
if(stack.hasTagCompound() && stack.stackTagCompound.getBoolean("muon")) list.add(EnumChatFormatting.DARK_AQUA + "Muon catalyzed!");
}
}

View File

@ -3,7 +3,7 @@ package com.hbm.lib;
public class RefStrings { public class RefStrings {
public static final String MODID = "hbm"; public static final String MODID = "hbm";
public static final String NAME = "Hbm's Nuclear Tech Mod"; public static final String NAME = "Hbm's Nuclear Tech Mod";
public static final String VERSION = "1.0.27 BETA (4942)"; public static final String VERSION = "1.0.27 BETA (4956)";
//HBM's Beta Naming Convention: //HBM's Beta Naming Convention:
//V T (X) //V T (X)
//V -> next release version //V -> next release version

View File

@ -153,28 +153,10 @@ public class CraftingManager {
addShapelessAuto(new ItemStack(ModItems.biomass, 4), new Object[] { Items.sugar, ModItems.powder_sawdust, ModItems.powder_sawdust, KEY_LEAVES, KEY_LEAVES, KEY_LEAVES, KEY_LEAVES, KEY_LEAVES, KEY_LEAVES }); addShapelessAuto(new ItemStack(ModItems.biomass, 4), new Object[] { Items.sugar, ModItems.powder_sawdust, ModItems.powder_sawdust, KEY_LEAVES, KEY_LEAVES, KEY_LEAVES, KEY_LEAVES, KEY_LEAVES, KEY_LEAVES });
addShapelessAuto(new ItemStack(ModItems.biomass, 4), new Object[] { Items.sugar, ModItems.powder_sawdust, ModItems.powder_sawdust, Blocks.pumpkin }); addShapelessAuto(new ItemStack(ModItems.biomass, 4), new Object[] { Items.sugar, ModItems.powder_sawdust, ModItems.powder_sawdust, Blocks.pumpkin });
addShapelessAuto(new ItemStack(ModItems.biomass, 4), new Object[] { Items.sugar, ModItems.powder_sawdust, ModItems.powder_sawdust, Blocks.melon_block }); addShapelessAuto(new ItemStack(ModItems.biomass, 4), new Object[] { Items.sugar, ModItems.powder_sawdust, ModItems.powder_sawdust, Blocks.melon_block });
addShapelessAuto(new ItemStack(ModItems.biomass, 4), new Object[] { Items.sugar, ModItems.powder_sawdust, ModItems.powder_sawdust, Blocks.cactus, Blocks.cactus, Blocks.cactus });
addShapelessAuto(new ItemStack(ModItems.biomass, 4), new Object[] { Items.sugar, ModItems.powder_sawdust, ModItems.powder_sawdust, Items.wheat, Items.wheat, Items.wheat, Items.wheat, Items.wheat, Items.wheat }); addShapelessAuto(new ItemStack(ModItems.biomass, 4), new Object[] { Items.sugar, ModItems.powder_sawdust, ModItems.powder_sawdust, Items.wheat, Items.wheat, Items.wheat, Items.wheat, Items.wheat, Items.wheat });
addShapelessAuto(new ItemStack(ModItems.biomass, 4), new Object[] { DictFrame.fromOne(ModBlocks.plant_flower, EnumFlowerType.WEED), DictFrame.fromOne(ModBlocks.plant_flower, EnumFlowerType.WEED), DictFrame.fromOne(ModBlocks.plant_flower, EnumFlowerType.WEED), DictFrame.fromOne(ModBlocks.plant_flower, EnumFlowerType.WEED), DictFrame.fromOne(ModBlocks.plant_flower, EnumFlowerType.WEED), DictFrame.fromOne(ModBlocks.plant_flower, EnumFlowerType.WEED) }); addShapelessAuto(new ItemStack(ModItems.biomass, 4), new Object[] { DictFrame.fromOne(ModBlocks.plant_flower, EnumFlowerType.WEED), DictFrame.fromOne(ModBlocks.plant_flower, EnumFlowerType.WEED), DictFrame.fromOne(ModBlocks.plant_flower, EnumFlowerType.WEED), DictFrame.fromOne(ModBlocks.plant_flower, EnumFlowerType.WEED), DictFrame.fromOne(ModBlocks.plant_flower, EnumFlowerType.WEED), DictFrame.fromOne(ModBlocks.plant_flower, EnumFlowerType.WEED) });
//addRecipeAuto(new ItemStack(ModItems.part_lithium), new Object[] { "P", "D", "P", 'P', STEEL.plate(), 'D', LI.dust() });
//addRecipeAuto(new ItemStack(ModItems.part_beryllium), new Object[] { "P", "D", "P", 'P', STEEL.plate(), 'D', BE.dust() });
//addRecipeAuto(new ItemStack(ModItems.part_carbon), new Object[] { "P", "D", "P", 'P', STEEL.plate(), 'D', COAL.dust() });
//addRecipeAuto(new ItemStack(ModItems.part_copper), new Object[] { "P", "D", "P", 'P', STEEL.plate(), 'D', CU.dust() });
//addRecipeAuto(new ItemStack(ModItems.part_plutonium), new Object[] { "P", "D", "P", 'P', STEEL.plate(), 'D', "dustPlutonium" });
//addRecipeAuto(new ItemStack(ModItems.pellet_rtg, 1), new Object[] { "IPI", "PPP", "IPI", 'I', IRON.plate(), 'P', "tinyPu238" });
//addRecipeAuto(new ItemStack(ModItems.pellet_rtg_weak, 1), new Object[] { "IUI", "UPU", "IUI", 'I', IRON.plate(), 'P', "tinyPu238", 'U', "tinyU238" });
//addRecipeAuto(new ItemStack(ModItems.tritium_deuterium_cake, 1), new Object[] { "DLD", "LTL", "DLD", 'L', "ingotLithium", 'D', ModItems.cell_deuterium, 'T', ModItems.cell_tritium });
//addRecipeAuto(new ItemStack(ModItems.pellet_schrabidium, 1), new Object[] { "IPI", "PPP", "IPI", 'I', IRON.plate(), 'P', SA326.ingot() });
//addRecipeAuto(new ItemStack(ModItems.pellet_hes, 1), new Object[] { "IPI", "PPP", "IPI", 'I', IRON.plate(), 'P', ModItems.ingot_hes });
//addRecipeAuto(new ItemStack(ModItems.pellet_mes, 1), new Object[] { "IPI", "PPP", "IPI", 'I', IRON.plate(), 'P', ModItems.ingot_schrabidium_fuel });
//addRecipeAuto(new ItemStack(ModItems.pellet_les, 1), new Object[] { "IPI", "PPP", "IPI", 'I', IRON.plate(), 'P', ModItems.ingot_les });
//addRecipeAuto(new ItemStack(ModItems.pellet_beryllium, 1), new Object[] { "IPI", "PPP", "IPI", 'I', IRON.plate(), 'P', BE.ingot() });
//addRecipeAuto(new ItemStack(ModItems.pellet_neptunium, 1), new Object[] { "IPI", "PPP", "IPI", 'I', IRON.plate(), 'P', "ingotNeptunium" });
//addRecipeAuto(new ItemStack(ModItems.pellet_lead, 1), new Object[] { "IPI", "PPP", "IPI", 'I', IRON.plate(), 'P', PB.ingot() });
//addRecipeAuto(new ItemStack(ModItems.pellet_advanced, 1), new Object[] { "IPI", "PPP", "IPI", 'I', IRON.plate(), 'P', ModItems.ingot_advanced_alloy });
addRecipeAuto(new ItemStack(ModItems.coil_copper, 1), new Object[] { "WWW", "WIW", "WWW", 'W', ModItems.wire_red_copper, 'I', IRON.ingot() }); addRecipeAuto(new ItemStack(ModItems.coil_copper, 1), new Object[] { "WWW", "WIW", "WWW", 'W', ModItems.wire_red_copper, 'I', IRON.ingot() });
addRecipeAuto(new ItemStack(ModItems.coil_advanced_alloy, 1), new Object[] { "WWW", "WIW", "WWW", 'W', ModItems.wire_advanced_alloy, 'I', IRON.ingot() }); addRecipeAuto(new ItemStack(ModItems.coil_advanced_alloy, 1), new Object[] { "WWW", "WIW", "WWW", 'W', ModItems.wire_advanced_alloy, 'I', IRON.ingot() });
addRecipeAuto(new ItemStack(ModItems.coil_gold, 1), new Object[] { "WWW", "WIW", "WWW", 'W', ModItems.wire_gold, 'I', IRON.ingot() }); addRecipeAuto(new ItemStack(ModItems.coil_gold, 1), new Object[] { "WWW", "WIW", "WWW", 'W', ModItems.wire_gold, 'I', IRON.ingot() });
@ -191,12 +173,6 @@ public class CraftingManager {
addRecipeAuto(new ItemStack(ModItems.motor, 2), new Object[] { " R ", "ICI", " T ", 'R', ModItems.wire_red_copper, 'T', ModItems.coil_copper_torus, 'I', STEEL.plate(), 'C', ModItems.coil_copper }); addRecipeAuto(new ItemStack(ModItems.motor, 2), new Object[] { " R ", "ICI", " T ", 'R', ModItems.wire_red_copper, 'T', ModItems.coil_copper_torus, 'I', STEEL.plate(), 'C', ModItems.coil_copper });
addRecipeAuto(new ItemStack(ModItems.motor_desh, 1), new Object[] { "PCP", "DMD", "PCP", 'P', ANY_PLASTIC.ingot(), 'C', ModItems.coil_gold_torus, 'D', DESH.ingot(), 'M', ModItems.motor }); addRecipeAuto(new ItemStack(ModItems.motor_desh, 1), new Object[] { "PCP", "DMD", "PCP", 'P', ANY_PLASTIC.ingot(), 'C', ModItems.coil_gold_torus, 'D', DESH.ingot(), 'M', ModItems.motor });
addRecipeAuto(new ItemStack(ModItems.motor_bismuth, 1), new Object[] { "BCB", "SDS", "BCB", 'B', BI.nugget(), 'C', ModBlocks.hadron_coil_alloy, 'S', STEEL.plateCast(), 'D', DURA.ingot() }); addRecipeAuto(new ItemStack(ModItems.motor_bismuth, 1), new Object[] { "BCB", "SDS", "BCB", 'B', BI.nugget(), 'C', ModBlocks.hadron_coil_alloy, 'S', STEEL.plateCast(), 'D', DURA.ingot() });
//addRecipeAuto(new ItemStack(ModItems.centrifuge_element, 1), new Object[] { " T ", "WTW", "RMR", 'R', ModItems.wire_red_copper, 'T', ModItems.tank_steel, 'M', ModItems.motor, 'W', ModItems.coil_tungsten });
//addRecipeAuto(new ItemStack(ModItems.centrifuge_tower, 1), new Object[] { "LL", "EE", "EE", 'E', ModItems.centrifuge_element, 'L', KEY_BLUE });
//addRecipeAuto(new ItemStack(ModItems.reactor_core, 1), new Object[] { "LNL", "N N", "LNL", 'N', getReflector(), 'L', PB.plate() });
//addRecipeAuto(new ItemStack(ModItems.rtg_unit, 1), new Object[] { "TIT", "PCP", "TIT", 'T', ModItems.thermo_element, 'I', PB.ingot(), 'P', ModItems.board_copper, 'C', ModItems.circuit_copper });
//addRecipeAuto(new ItemStack(ModItems.thermo_unit_empty, 1), new Object[] { "TTT", " S ", "P P", 'S', STEEL.ingot(), 'P', TI.plate(), 'T', ModItems.coil_copper_torus });
//addRecipeAuto(new ItemStack(ModItems.levitation_unit, 1), new Object[] { "CSC", "TAT", "PSP", 'C', ModItems.coil_copper, 'S', ModItems.nugget_schrabidium, 'T', ModItems.coil_tungsten, 'P', TI.plate(), 'A', STEEL.ingot() });
addRecipeAuto(new ItemStack(ModItems.deuterium_filter, 1), new Object[] { "TST", "SCS", "TST", 'T', ANY_RESISTANTALLOY.ingot(), 'S', S.dust(), 'C', ModItems.catalyst_clay }); addRecipeAuto(new ItemStack(ModItems.deuterium_filter, 1), new Object[] { "TST", "SCS", "TST", 'T', ANY_RESISTANTALLOY.ingot(), 'S', S.dust(), 'C', ModItems.catalyst_clay });
addRecipeAuto(new ItemStack(ModItems.fins_flat, 1), new Object[] { "IP", "PP", "IP", 'P', STEEL.plate(), 'I', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModItems.fins_flat, 1), new Object[] { "IP", "PP", "IP", 'P', STEEL.plate(), 'I', STEEL.ingot() });

View File

@ -162,6 +162,7 @@ public class TileMappings {
put(TileEntityMachineMiniRTG.class, "tileentity_mini_rtg"); put(TileEntityMachineMiniRTG.class, "tileentity_mini_rtg");
put(TileEntityITER.class, "tileentity_iter"); put(TileEntityITER.class, "tileentity_iter");
put(TileEntityBlockICF.class, "tileentity_block_icf"); put(TileEntityBlockICF.class, "tileentity_block_icf");
put(TileEntityICFPress.class, "tileentity_icf_press");
put(TileEntityICFController.class, "tileentity_icf_controller"); put(TileEntityICFController.class, "tileentity_icf_controller");
put(TileEntityICF.class, "tileentity_icf"); put(TileEntityICF.class, "tileentity_icf");
put(TileEntityMachinePlasmaHeater.class, "tileentity_plasma_heater"); put(TileEntityMachinePlasmaHeater.class, "tileentity_plasma_heater");

View File

@ -23,6 +23,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
@ -227,7 +228,7 @@ public class TileEntityHeaterHeatex extends TileEntityMachineBase implements IHe
@Override @Override
public void receiveControl(NBTTagCompound data) { public void receiveControl(NBTTagCompound data) {
if(data.hasKey("toCool")) this.amountToCool = Math.max(data.getInteger("toCool"), 1); if(data.hasKey("toCool")) this.amountToCool = MathHelper.clamp_int(data.getInteger("toCool"), 1, tanks[0].getMaxFill());
if(data.hasKey("delay")) this.tickDelay = Math.max(data.getInteger("delay"), 1); if(data.hasKey("delay")) this.tickDelay = Math.max(data.getInteger("delay"), 1);
this.markChanged(); this.markChanged();

View File

@ -3,9 +3,16 @@ package com.hbm.tileentity.machine;
import com.hbm.inventory.container.ContainerICF; import com.hbm.inventory.container.ContainerICF;
import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.inventory.fluid.trait.FT_Heatable;
import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingStep;
import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingType;
import com.hbm.inventory.gui.GUIICF; import com.hbm.inventory.gui.GUIICF;
import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemICFPellet;
import com.hbm.lib.Library;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.fauxpointtwelve.DirPos;
import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.fluid.IFluidStandardTransceiver;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
@ -15,22 +22,26 @@ import net.minecraft.client.gui.GuiScreen;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider, IFluidStandardTransceiver { public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider, IFluidStandardTransceiver {
public long laser; public long laser;
public long maxLaser; public long maxLaser;
public long heat;
public static final long maxHeat = 1_000_000_000_000L;
public FluidTank[] tanks; public FluidTank[] tanks;
public TileEntityICF() { public TileEntityICF() {
super(12); super(12);
this.tanks = new FluidTank[3]; this.tanks = new FluidTank[3];
this.tanks[0] = new FluidTank(Fluids.COOLANT, 256_000); this.tanks[0] = new FluidTank(Fluids.SODIUM, 512_000);
this.tanks[1] = new FluidTank(Fluids.COOLANT_HOT, 256_000); this.tanks[1] = new FluidTank(Fluids.SODIUM_HOT, 512_000);
this.tanks[2] = new FluidTank(Fluids.STELLAR_FLUX, 16_000); this.tanks[2] = new FluidTank(Fluids.STELLAR_FLUX, 24_000);
} }
@Override @Override
@ -43,7 +54,73 @@ public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider
if(!worldObj.isRemote) { if(!worldObj.isRemote) {
for(int i = 0; i < 3; i++) tanks[i].setFill(tanks[i].getMaxFill()); tanks[0].setType(11, slots);
for(DirPos pos : getConPos()) {
this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
}
this.heat += this.laser * 0.25D;
boolean markDirty = false;
//eject depleted pellet
if(slots[5] != null && slots[5].getItem() == ModItems.icf_pellet_depleted) {
for(int i = 6; i < 11; i++) {
if(slots[i] == null) {
slots[i] = slots[5].copy();
slots[5] = null;
markDirty = true;
break;
}
}
}
//insert fresh pellet
if(slots[5] == null) {
for(int i = 0; i < 5; i++) {
if(slots[i] != null && slots[i].getItem() == ModItems.icf_pellet) {
slots[5] = slots[i].copy();
slots[i] = null;
markDirty = true;
break;
}
}
}
if(slots[5] != null && slots[5].getItem() == ModItems.icf_pellet) {
this.heat += ItemICFPellet.react(slots[5], this.laser);
if(ItemICFPellet.getDepletion(slots[5]) >= ItemICFPellet.getMaxDepletion(slots[5])) {
slots[5] = new ItemStack(ModItems.icf_pellet_depleted);
markDirty = true;
}
tanks[2].setFill(tanks[2].getFill() + (int) Math.ceil(this.heat * 10D / this.maxHeat));
if(tanks[2].getFill() > tanks[2].getMaxFill()) tanks[2].setFill(tanks[2].getMaxFill());
}
if(tanks[0].getTankType().hasTrait(FT_Heatable.class)) {
FT_Heatable trait = tanks[0].getTankType().getTrait(FT_Heatable.class);
HeatingStep step = trait.getFirstStep();
tanks[1].setTankType(step.typeProduced);
int coolingCycles = tanks[0].getFill() / step.amountReq;
int heatingCycles = (tanks[1].getMaxFill() - tanks[1].getFill()) / step.amountProduced;
int heatCycles = (int) (this.heat / 4 / step.heatReq * trait.getEfficiency(HeatingType.ICF)); //25% cooling per tick
int cycles = Math.min(coolingCycles, Math.min(heatingCycles, heatCycles));
tanks[0].setFill(tanks[0].getFill() - step.amountReq * cycles);
tanks[1].setFill(tanks[1].getFill() + step.amountProduced * cycles);
this.heat -= step.heatReq * cycles;
}
for(DirPos pos : getConPos()) {
this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
this.sendFluid(tanks[2], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
}
this.heat *= 0.999D;
if(this.heat > this.maxHeat) this.heat = this.maxHeat;
if(markDirty) this.markDirty();
this.networkPackNT(150); this.networkPackNT(150);
this.laser = 0; this.laser = 0;
@ -51,10 +128,24 @@ public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider
} }
} }
public DirPos[] getConPos() {
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10);
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
return new DirPos[] {
new DirPos(xCoord, yCoord + 6, zCoord, Library.POS_Y),
new DirPos(xCoord, yCoord - 1, zCoord, Library.NEG_Y),
new DirPos(xCoord + dir.offsetX * 3 + rot.offsetX * 6, yCoord + 3, zCoord + dir.offsetZ * 3 + rot.offsetZ * 6, dir),
new DirPos(xCoord + dir.offsetX * 3 - rot.offsetX * 6, yCoord + 3, zCoord + dir.offsetZ * 3 - rot.offsetZ * 6, dir),
new DirPos(xCoord - dir.offsetX * 3 + rot.offsetX * 6, yCoord + 3, zCoord - dir.offsetZ * 3 + rot.offsetZ * 6, dir.getOpposite()),
new DirPos(xCoord - dir.offsetX * 3 - rot.offsetX * 6, yCoord + 3, zCoord - dir.offsetZ * 3 - rot.offsetZ * 6, dir.getOpposite())
};
}
@Override public void serialize(ByteBuf buf) { @Override public void serialize(ByteBuf buf) {
super.serialize(buf); super.serialize(buf);
buf.writeLong(laser); buf.writeLong(laser);
buf.writeLong(maxLaser); buf.writeLong(maxLaser);
buf.writeLong(heat);
for(int i = 0; i < 3; i++) tanks[i].serialize(buf); for(int i = 0; i < 3; i++) tanks[i].serialize(buf);
} }
@ -62,12 +153,13 @@ public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider
super.deserialize(buf); super.deserialize(buf);
this.laser = buf.readLong(); this.laser = buf.readLong();
this.maxLaser = buf.readLong(); this.maxLaser = buf.readLong();
this.heat = buf.readLong();
for(int i = 0; i < 3; i++) tanks[i].deserialize(buf); for(int i = 0; i < 3; i++) tanks[i].deserialize(buf);
} }
@Override @Override
public boolean isItemValidForSlot(int slot, ItemStack stack) { public boolean isItemValidForSlot(int slot, ItemStack stack) {
return slot < 5; return slot < 5 && stack.getItem() == ModItems.icf_pellet;
} }
@Override @Override
@ -82,6 +174,22 @@ public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider
return io; return io;
} }
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
for(int i = 0; i < 3; i++) tanks[i].readFromNBT(nbt, "t" + i);
this.heat = nbt.getLong("heat");
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
for(int i = 0; i < 3; i++) tanks[i].writeToNBT(nbt, "t" + i);
nbt.setLong("heat", heat);
}
@Override @Override
public boolean isUseableByPlayer(EntityPlayer player) { public boolean isUseableByPlayer(EntityPlayer player) {
if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) { if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) {

View File

@ -220,7 +220,7 @@ public class TileEntityICFController extends TileEntityTickingBase implements IE
@Override @Override
public long getMaxPower() { public long getMaxPower() {
return (long) (Math.sqrt(capacitorCount) * 5_000_000 + Math.sqrt(Math.min(turbochargerCount, capacitorCount)) * 10_000_000); return (long) (Math.sqrt(capacitorCount) * 2_500_000 + Math.sqrt(Math.min(turbochargerCount, capacitorCount)) * 5_000_000);
} }
AxisAlignedBB bb = null; AxisAlignedBB bb = null;

View File

@ -0,0 +1,71 @@
package com.hbm.tileentity.machine;
import com.hbm.inventory.container.ContainerICFPress;
import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.inventory.gui.GUIICFPress;
import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityMachineBase;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import io.netty.buffer.ByteBuf;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.world.World;
public class TileEntityICFPress extends TileEntityMachineBase implements IGUIProvider {
public FluidTank[] tanks;
public int muon;
public static final int maxMuon = 16;
public TileEntityICFPress() {
super(8);
this.tanks = new FluidTank[2];
this.tanks[0] = new FluidTank(Fluids.DEUTERIUM, 16_000);
this.tanks[1] = new FluidTank(Fluids.TRITIUM, 16_000);
}
@Override
public String getName() {
return "container.machineICFPress";
}
@Override
public void updateEntity() {
if(!worldObj.isRemote) {
this.networkPackNT(15);
}
}
@Override public void serialize(ByteBuf buf) {
super.serialize(buf);
buf.writeByte((byte) muon);
tanks[0].serialize(buf);
tanks[1].serialize(buf);
}
@Override public void deserialize(ByteBuf buf) {
super.deserialize(buf);
this.muon = buf.readByte();
tanks[0].deserialize(buf);
tanks[1].deserialize(buf);
}
@Override
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
return new ContainerICFPress(player.inventory, this);
}
@Override
@SideOnly(Side.CLIENT)
public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
return new GUIICFPress(player.inventory, this);
}
}

View File

@ -7,6 +7,7 @@ import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.inventory.fluid.trait.FT_Flammable; import com.hbm.inventory.fluid.trait.FT_Flammable;
import com.hbm.inventory.fluid.trait.FT_Polluting; import com.hbm.inventory.fluid.trait.FT_Polluting;
import com.hbm.inventory.fluid.trait.FluidTrait.FluidReleaseType; import com.hbm.inventory.fluid.trait.FluidTrait.FluidReleaseType;
import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Amat;
import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Gaseous; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Gaseous;
import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Liquid; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Liquid;
import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Viscous; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Viscous;
@ -49,6 +50,10 @@ public class TileEntityMachineDrain extends TileEntityLoadedBase implements IFlu
PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50));
if(tank.getFill() > 0) { if(tank.getFill() > 0) {
if(tank.getTankType().hasTrait(FT_Amat.class)) {
worldObj.newExplosion(null, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, 10F, true, true);
return;
}
int toSpill = Math.max(tank.getFill() / 2, 1); int toSpill = Math.max(tank.getFill() / 2, 1);
tank.setFill(tank.getFill() - toSpill); tank.setFill(tank.getFill() - toSpill);
FT_Polluting.pollute(worldObj, xCoord, yCoord, zCoord, tank.getTankType(), FluidReleaseType.SPILL, toSpill); FT_Polluting.pollute(worldObj, xCoord, yCoord, zCoord, tank.getTankType(), FluidReleaseType.SPILL, toSpill);

View File

@ -362,6 +362,7 @@ container.machineElectricBoiler=Elektrischer Ölwärmer
container.machineElectrolyser=Electrolysegerät container.machineElectrolyser=Electrolysegerät
container.machineFEL=FEL container.machineFEL=FEL
container.machineFunnel=Kombinationstrichter container.machineFunnel=Kombinationstrichter
container.machineICF=ICF
container.machineITER=Kernfusionsreaktor container.machineITER=Kernfusionsreaktor
container.machineLargeTurbine=Industrielle Dampfturbine container.machineLargeTurbine=Industrielle Dampfturbine
container.machineLiquefactor=Verflüssiger container.machineLiquefactor=Verflüssiger
@ -766,6 +767,7 @@ hbmfluid.solvent=Lösungsmittel
hbmfluid.sourgas=Saures Gas hbmfluid.sourgas=Saures Gas
hbmfluid.spentsteam=Niedrigdruckdampf hbmfluid.spentsteam=Niedrigdruckdampf
hbmfluid.steam=Dampf hbmfluid.steam=Dampf
hbmfluid.stellar_flux=Sternenflux
hbmfluid.sulfuric_acid=Schwefelsäure hbmfluid.sulfuric_acid=Schwefelsäure
hbmfluid.sunfloweroil=Sonnenblumenkernöl hbmfluid.sunfloweroil=Sonnenblumenkernöl
hbmfluid.superhotsteam=Superverdichteter Dampf hbmfluid.superhotsteam=Superverdichteter Dampf
@ -892,6 +894,20 @@ matshape.nuggets=%s Nuggets
matshape.quantum=%s Quantum matshape.quantum=%s Quantum
matshape.quanta=%s Quanta matshape.quanta=%s Quanta
icffuel.beryllium=Beryllium
icffuel.boron=Bor
icffuel.carbon=Kohlenstoff
icffuel.calcium=Kalzium
icffuel.chlorine=Chlor
icffuel.deuterium=Deuterium
icffuel.helium3=Helium-3
icffuel.helium4=Helium-4
icffuel.hydrogen=Wasserstoff
icffuel.lithium=Lithium
icffuel.oxygen=Sauerstoff
icffuel.sodium=Natrium
icffuel.tritium=Tritium
info.asbestos=Meine Lunge brennt. info.asbestos=Meine Lunge brennt.
info.coaldust=Das Atmen fällt mir schwer. info.coaldust=Das Atmen fällt mir schwer.
info.coil=Spulenstärke info.coil=Spulenstärke
@ -2099,6 +2115,9 @@ item.hull_big_steel.name=Große Stahlhülle
item.hull_big_titanium.name=Große Titanhülle item.hull_big_titanium.name=Große Titanhülle
item.hull_small_aluminium.name=Kleine Aluminiumhülle item.hull_small_aluminium.name=Kleine Aluminiumhülle
item.hull_small_steel.name=Kleine Stahlhülle item.hull_small_steel.name=Kleine Stahlhülle
item.icf_pellet.name=ICF-Brennstoffpellet
item.icf_pellet_depleted.name=Erschöpftes ICF-Brennstoffpellet
item.icf_pellet_empty.name=Leeres ICF-Brennstoffpellet
item.igniter.name=Zünder item.igniter.name=Zünder
item.industrial_magnet.name=Industriemagnet item.industrial_magnet.name=Industriemagnet
item.inf_antimatter.name=Unendlicher Antimaterietank item.inf_antimatter.name=Unendlicher Antimaterietank
@ -4081,6 +4100,15 @@ tile.heater_oven.desc=Erzeugt Wärme aus Festbrennstoff.$Nimmt von unten Wärme
tile.hev_battery.name=Anzugs-Batterie tile.hev_battery.name=Anzugs-Batterie
tile.machine_hydrotreater.name=Hydrotreater tile.machine_hydrotreater.name=Hydrotreater
tile.impact_dirt.name=Versengte Erde tile.impact_dirt.name=Versengte Erde
tile.icf.name=Trägheitsfusionsreaktor (ICF)
tile.icf_block.name=ICF-Laser
tile.icf_controller.name=ICF-Lasersteuerung
tile.icf_laser_component.capacitor.name=ICF-Laser-Kondensator
tile.icf_laser_component.casing.name=ICF-Laser-Gehäuse
tile.icf_laser_component.cell.name=ICF-Laser-Zelle
tile.icf_laser_component.emitter.name=ICF-Laser-Blitzröhre
tile.icf_laser_component.port.name=ICF-Laser-Anschluss
tile.icf_laser_component.turbo.name=ICF-Laser-Turbolader
tile.iter.name=Kernfusionsreaktor tile.iter.name=Kernfusionsreaktor
tile.ladder_aluminium.name=Aluminiumleiter tile.ladder_aluminium.name=Aluminiumleiter
tile.ladder_cobalt.name=Kobaltleiter tile.ladder_cobalt.name=Kobaltleiter

View File

@ -755,6 +755,7 @@ container.machineElectricBoiler=Electric Oil Heater
container.machineElectrolyser=Electrolysis Machine container.machineElectrolyser=Electrolysis Machine
container.machineFEL=FEL container.machineFEL=FEL
container.machineFunnel=Combinator Funnel container.machineFunnel=Combinator Funnel
container.machineICF=ICF
container.machineITER=Fusion Reactor container.machineITER=Fusion Reactor
container.machineLargeTurbine=Industrial Steam Turbine container.machineLargeTurbine=Industrial Steam Turbine
container.machineLiquefactor=Liquefactor container.machineLiquefactor=Liquefactor
@ -1457,6 +1458,7 @@ hbmfluid.solvent=Solvent
hbmfluid.sourgas=Sour Gas hbmfluid.sourgas=Sour Gas
hbmfluid.spentsteam=Low-Pressure Steam hbmfluid.spentsteam=Low-Pressure Steam
hbmfluid.steam=Steam hbmfluid.steam=Steam
hbmfluid.stellar_flux=Stellar Flux
hbmfluid.sulfuric_acid=Sulfuric Acid hbmfluid.sulfuric_acid=Sulfuric Acid
hbmfluid.sunfloweroil=Sunflower Seed Oil hbmfluid.sunfloweroil=Sunflower Seed Oil
hbmfluid.superhotsteam=Super Dense Steam hbmfluid.superhotsteam=Super Dense Steam
@ -1594,6 +1596,20 @@ matshape.nuggets=%s Nuggets
matshape.quantum=%s Quantum matshape.quantum=%s Quantum
matshape.quanta=%s Quanta matshape.quanta=%s Quanta
icffuel.beryllium=Beryllium
icffuel.boron=Boron
icffuel.carbon=Carbon
icffuel.calcium=Calcium
icffuel.chlorine=Chlorine
icffuel.deuterium=Deuterium
icffuel.helium3=Helium-3
icffuel.helium4=Helium-4
icffuel.hydrogen=Hydrogen
icffuel.lithium=Lithium
icffuel.oxygen=Oxygen
icffuel.sodium=Sodium
icffuel.tritium=Tritium
info.asbestos=My lungs are burning. info.asbestos=My lungs are burning.
info.coaldust=It's hard to breathe here. info.coaldust=It's hard to breathe here.
info.coil=Coil Strength info.coil=Coil Strength
@ -2884,6 +2900,9 @@ item.hull_big_titanium.name=Big Titanium Shell
item.hull_small_aluminium.name=Small Aluminium Shell item.hull_small_aluminium.name=Small Aluminium Shell
item.hull_small_aluminium.desc=Can be inserted into drilled graphite item.hull_small_aluminium.desc=Can be inserted into drilled graphite
item.hull_small_steel.name=Small Steel Shell item.hull_small_steel.name=Small Steel Shell
item.icf_pellet.name=ICF Fuel Pellet
item.icf_pellet_depleted.name=Depleted ICF Fuel Pellet
item.icf_pellet_empty.name=Empty ICF Fuel Pellet
item.igniter.name=Igniter item.igniter.name=Igniter
item.igniter.desc=(Used by right-clicking the Prototype)$It's a green metal handle with a$bright red button and a small lid.$At the bottom, the initials N.E. are$engraved. Whoever N.E. was, he had$a great taste in shades of green. item.igniter.desc=(Used by right-clicking the Prototype)$It's a green metal handle with a$bright red button and a small lid.$At the bottom, the initials N.E. are$engraved. Whoever N.E. was, he had$a great taste in shades of green.
item.industrial_magnet.name=Industrial Magnet item.industrial_magnet.name=Industrial Magnet
@ -5141,6 +5160,15 @@ tile.heater_oven.desc=Burns solid fuel to produce heat.$Accepts heat from the bo
tile.hev_battery.name=Suit Battery tile.hev_battery.name=Suit Battery
tile.machine_hydrotreater.name=Hydrotreater tile.machine_hydrotreater.name=Hydrotreater
tile.impact_dirt.name=Scorched Dirt tile.impact_dirt.name=Scorched Dirt
tile.icf.name=Inertial Confinement Fusion Reactor (ICF)
tile.icf_block.name=ICF Laser
tile.icf_controller.name=ICF Laser Controller
tile.icf_laser_component.capacitor.name=ICF Laser Capacitor
tile.icf_laser_component.casing.name=ICF Laser Casing
tile.icf_laser_component.cell.name=ICF Laser Cell
tile.icf_laser_component.emitter.name=ICF Laser Flash Tube
tile.icf_laser_component.port.name=ICF Laser Port
tile.icf_laser_component.turbo.name=ICF Laser Turbocharger
tile.iter.name=Fusion Reactor tile.iter.name=Fusion Reactor
tile.ladder_aluminium.name=Aluminium Ladder tile.ladder_aluminium.name=Aluminium Ladder
tile.ladder_cobalt.name=Cobalt Ladder tile.ladder_cobalt.name=Cobalt Ladder
@ -5241,6 +5269,7 @@ tile.machine_gascent.name=Gas Centrifuge
tile.machine_generator.name=Nuclear Reactor (Old) tile.machine_generator.name=Nuclear Reactor (Old)
tile.machine_geo.name=Geothermal Electric Generator tile.machine_geo.name=Geothermal Electric Generator
tile.machine_hephaestus.name=Geothermal Heat Exchanger tile.machine_hephaestus.name=Geothermal Heat Exchanger
tile.machine_icf_press.desc=If only there was something that would tell me how or if this thing works$Something like a changelog or something like that$Alas, I'm too fucking stupid to read something like that anyway
tile.machine_industrial_boiler.name=Industrial Boiler tile.machine_industrial_boiler.name=Industrial Boiler
tile.machine_industrial_boiler.desc=Large boiler that can boil water or heat up oil.$Requires external heat source.$Heat transfer rate: ΔT*0.01 TU/t$Cannot explode tile.machine_industrial_boiler.desc=Large boiler that can boil water or heat up oil.$Requires external heat source.$Heat transfer rate: ΔT*0.01 TU/t$Cannot explode
tile.machine_industrial_generator.name=Industrial Generator tile.machine_industrial_generator.name=Industrial Generator

File diff suppressed because it is too large Load Diff

View File

@ -235,33 +235,33 @@ cannery.hadron.1=Это компонент ядра ускорителя час
cannery.hadron.2=Частицы выбрасываются отсюда cannery.hadron.2=Частицы выбрасываются отсюда
cannery.hadron.3=И в круговых ускорителях возвращаются сюда cannery.hadron.3=И в круговых ускорителях возвращаются сюда
cannery.hadron.4=Сегмент катушки строится с помощью 8 плотных катушек, в середине которых ничего нет (или ядро) cannery.hadron.4=Сегмент катушки строится с помощью 8 плотных катушек, в середине которых ничего нет (или ядро)
cannery.hadron.5= Этот сегмент катушки также должен быть заключен в оболочку ускорителя частиц cannery.hadron.5=Этот сегмент катушки также должен быть заключен в обшивку ускорителя частиц
cannery.hadron.6=Для доступа к компоненту ядра вам потребуется добавить один или несколько терминалов доступа cannery.hadron.6=Для доступа к компоненту ядра вам потребуется добавить один или несколько терминалов доступа
cannery.hadron.7=Для работы основного компонента также потребуется питание, добавьте разъем питания на одной из граней cannery.hadron.7=Для работы основного компонента также потребуется питание, добавьте порт питания на одной из граней
cannery.hadron.8=Ускорителю потребуется достаточное количество штекеров питания, чтобы обеспечить по крайней мере 10KHE электроэнергии на единицу прочности катушки cannery.hadron.8=Ускорителю потребуется достаточное количество портов питания, чтобы обеспечить по крайней мере 10KHE электроэнергии на единицу силы катушки
cannery.hadron.9= Обратите внимание, что сегмент катушки, который оборачивается вокруг основного компонента, не учитывается при расчете прочности катушки cannery.hadron.9=Обратите внимание, что сегмент катушки, который оборачивается вокруг ядра, не учитывается при расчете силы катушки
cannery.hadron.10= Для чисто линейных ускорителей этот сегмент катушки также не требуется cannery.hadron.10=Для чисто линейных ускорителей этот сегмент катушки также не требуется
cannery.hadron.11=Для круговых ускорителей необходимо добавить углы для изменения направления частицы cannery.hadron.11=Для круговых ускорителей необходимо добавить углы для изменения направления частицы
cannery.hadron.12= Внешние угловые катушки можно совсем не добавлять cannery.hadron.12=Внешние угловые катушки можно совсем не добавлять
cannery.hadron.13= Последняя часть нашего ускорителя - камера анализа, которая представляет собой пустую камеру 3x3x3, окруженную блоками камеры анализа cannery.hadron.13=Последняя часть нашего ускорителя - камера анализа, которая представляет собой пустую камеру 3x3x3, окруженную блоками камеры анализа
cannery.hadron.14=Ваш готовый ускоритель частиц должен выглядеть примерно так! cannery.hadron.14=Ваш готовый ускоритель частиц должен выглядеть примерно так!
cannery.hadron.math.0= Сила неодимовой катушки: 50 cannery.hadron.math.0=Сила неодимовой катушки: 50
cannery.hadron.math.1=50 x 8 x 10KHE = 400 x 10KHE = 4MHE cannery.hadron.math.1=50 x 8 x 10KHE = 400 x 10KHE = 4MHE
cannery.hadron.math.2=Прочность металлической катушки: 1,000 cannery.hadron.math.2=Сила звёзднометаллической катушки: 1,000
cannery.hadron.math.3=1,000 x 8 x 10KHE = 8,000 x 10KHE = 80MHE cannery.hadron.math.3=1,000 x 8 x 10KHE = 8,000 x 10KHE = 80MHE
cannery.schottky=Диод с частицами Шоттки cannery.schottky=Диод с частицами Шоттки
cannery.schottky.0=Это диод Шоттки для частиц. Он позволяет создавать более сложные конструкции ускорителей частиц и экономить электроэнергию cannery.schottky.0=Это диод Шоттки для частиц. Он позволяет создавать более сложные конструкции ускорителей частиц и экономить электроэнергию
cannery.schottky.1=По умолчанию он блокирует все частицы и должен быть настроен с помощью отвертки cannery.schottky.1=По умолчанию он блокирует все частицы и должен быть настроен с помощью отвертки
cannery.schottky.2=Это лицо теперь будет принимать входящие частицы cannery.schottky.2=Эта сторона теперь будет принимать входящие частицы
cannery.schottky.3=А это лицо будет выбрасывать входящие частицы cannery.schottky.3=А эта будет выбрасывать входящие частицы
cannery.schottky.4=Диод теперь имеет два выхода и будет вести себя квантовым образом, создавая виртуальные частицы для каждого выхода cannery.schottky.4=Диод теперь имеет два выхода и будет вести себя квантовым образом, создавая виртуальные частицы для каждого выхода
cannery.schottky.5=Когда все виртуальные частицы достигнут аналитической камеры, будет выбрана частица с наименьшим импульсом, необходимым для текущего рецепта cannery.schottky.5=Когда все виртуальные частицы достигнут аналитической камеры, будет выбрана частица с наименьшим импульсом, необходимым для текущего рецепта
cannery.schottky.6= Выбранная частица подвергается коллапсу волновой функции и становится реальной, потребляя только ту энергию, которая требуется коллапсирующей частице cannery.schottky.6=Выбранная частица подвергается коллапсу волновой функции и становится реальной, потребляя только ту энергию, которая требуется коллапсирующей частице
cannery.schottky.7= Если какие-либо виртуальные частицы сталкиваются с неправильными сегментами, все виртуальные частицы отбрасываются, а вместо них коллапсирует ошибочная частица cannery.schottky.7=Если какие-либо виртуальные частицы сталкиваются с неправильными сегментами, все виртуальные частицы отбрасываются, а вместо них коллапсирует ошибочная частица
cannery.schottky.8= Обратите внимание, что виртуальные частицы никогда не будут использовать один и тот же выход диода дважды. Бесконечные циклы будут неудачными, но повторный вход в диод в остальном будет нормальным cannery.schottky.8=Обратите внимание, что виртуальные частицы никогда не будут использовать один и тот же выход диода дважды. Бесконечные циклы будут неудачными, но повторный вход в диод в остальном будет нормальным
cannery.schottky.9= Ваш диод Шоттки для частиц должен быть правильно заключен, со свободными путями для каждого выхода пересечения cannery.schottky.9=Ваш диод Шоттки для частиц должен быть правильно заключен, со свободными путями для каждого выхода пересечения
potion.hbm_taint=Порча potion.hbm_taint=Порча
potion.hbm_mutation=Заражённое порчей сердце potion.hbm_mutation=Заражённое порчей сердце
@ -741,6 +741,16 @@ desc.misc.lshift=§8Удерживайте <§e§oLSHIFT§8§o> %s
desc.gui.turbinegas.automode=§2Автоматический режим турбины§r$Нажав кнопку "AUTO", турбина автоматически$отрегулирует выработку электроэнергии$в зависимости от мощности, требуемой от сети desc.gui.turbinegas.automode=§2Автоматический режим турбины§r$Нажав кнопку "AUTO", турбина автоматически$отрегулирует выработку электроэнергии$в зависимости от мощности, требуемой от сети
desc.gui.turbinegas.fuels=§6Принимаемое топливо: desc.gui.turbinegas.fuels=§6Принимаемое топливо:
desc.gui.turbinegas.warning=§cНизкий уровень топлива или смазки!§r desc.gui.turbinegas.warning=§cНизкий уровень топлива или смазки!§r
desc.gui.rttyLogic.cond0=Сигнал §6МЕНЬШЕ§r Константы
desc.gui.rttyLogic.cond1=Сигнал §6МЕНЬШЕ ИЛИ РАВЕН§r Константе
desc.gui.rttyLogic.cond2=Сигнал §6БОЛЬШЕ ИЛИ РАВЕН§r Константе
desc.gui.rttyLogic.cond3=Сигнал §6БОЛЬШЕ§r Константы
desc.gui.rttyLogic.cond4=Сигнал §6РАВЕН§r Константе
desc.gui.rttyLogic.cond5=Сигнал §6НЕ РАВЕН§r Константе
desc.gui.rttyLogic.cond6=Сигнал §6СООТВЕТСТВУЕТ§r Строке
desc.gui.rttyLogic.cond7=Сигнал §6НЕ СООТВЕТСТВУЕТ§r Строке
desc.gui.rttyLogic.cond8=Сигнал §6СОДЕРЖИТ§r Строку
desc.gui.rttyLogic.cond9=Сигнал §6НЕ СОДЕРЖИТ§r Строку
wavelengths.name.ir=Инфракрасный wavelengths.name.ir=Инфракрасный
wavelengths.name.visible=Видимый свет wavelengths.name.visible=Видимый свет
@ -1026,7 +1036,7 @@ book_lore.book_phosphorous.page.1=ingredient is red phosphorous, whihc has to be
book_lore.book_dust.name=Note book_lore.book_dust.name=Note
book_lore.book_dust.author=Dave book_lore.book_dust.author=Dave
book_lore.book_dust.page.0=the doc was furious when he found out that the R&D dorks kept the one remaining sample, ranting about gross negligence this and a doomsday scenario that. i told him to chill for a minute, getting all worked up isn't good for his blood pressure, not book_lore.book_dust.page.0=the doc was furious when he found out that the R&D dorks kept the one remaining sample, ranting about gross negligence this and a doomsday scenario that. i told him to chill for a minute, getting all worked up isn't good for his blood pressure, not
book_lore.book_dust.page.1=that he has much blood left to begin with. one of the R&D morons slipped some more info into last week's circular, they call their little concoction \"MKU\" whatever that means, and that it contains actual household lint. can you believe that? one of the most book_lore.book_dust.page.1=that he has much blood left to begin with. one of the R&D morons slipped some more info into last week's circular, they call their little concoction "MKU" whatever that means, and that it contains actual household lint. can you believe that? one of the most
book_lore.book_dust.page.2=dangerous inventions of theirs and it contains dust. strangely they also mentioned that it goes into slot %d book_lore.book_dust.page.2=dangerous inventions of theirs and it contains dust. strangely they also mentioned that it goes into slot %d
book_lore.book_mercury.name=Note book_lore.book_mercury.name=Note
@ -1285,10 +1295,12 @@ hbmmat.americiumrg=Реакторный америций
hbmmat.americium241=Америций-241 hbmmat.americium241=Америций-241
hbmmat.americium242=Америций-242 hbmmat.americium242=Америций-242
hbmmat.arsenic=Мышьяк hbmmat.arsenic=Мышьяк
hbmmat.arsenicbronze=Мышьяковая бронза
hbmmat.asbestos=Асбест hbmmat.asbestos=Асбест
hbmmat.bakelite=Бакелит hbmmat.bakelite=Бакелит
hbmmat.beryllium=Бериллий hbmmat.beryllium=Бериллий
hbmmat.bismuth=Висмут hbmmat.bismuth=Висмут
hbmmat.bismuthbronze=Висмутовая бронза
hbmmat.borax=Бура hbmmat.borax=Бура
hbmmat.boron=Бор hbmmat.boron=Бор
hbmmat.carbon=Углерод hbmmat.carbon=Углерод
@ -1374,6 +1386,8 @@ hbmmat.zirconium=Циркония
hbmmat.neodymium=Неодима hbmmat.neodymium=Неодима
crucible.aa=Производство продвинутого сплава crucible.aa=Производство продвинутого сплава
crucible.abronze=Производство мышьяковой бронзы
crucible.bbronze=Производство висмутовой бронзы
crucible.ferro=Производство ферроуранового сплава crucible.ferro=Производство ферроуранового сплава
crucible.hematite=Переплавка гематита в железо crucible.hematite=Переплавка гематита в железо
crucible.hss=Производство высокоскоростной стали crucible.hss=Производство высокоскоростной стали
@ -2163,6 +2177,10 @@ tile.anvil_starmetal.name=Наковальня из звёздного мета
tile.anvil_steel.name=Стальная наковальня tile.anvil_steel.name=Стальная наковальня
tile.anvil_bismuth.name=Висмутовая наковальня tile.anvil_bismuth.name=Висмутовая наковальня
tile.anvil_osmiridium.name=Осмиридиевая наковальня tile.anvil_osmiridium.name=Осмиридиевая наковальня
tile.anvil_arsenic_bronze.name=Наковальня из мышьяковой бронзы
tile.anvil_bismuth_bronze.name=Наковальня из висмутовой бронзы
tile.anvil_desh.name=Деш-наковальня
tile.anvil_saturnite.name=Сатурнитовая наковальня
tile.fraction_spacer.name=Разделитель ректификационной колонны tile.fraction_spacer.name=Разделитель ректификационной колонны
tile.machine_fraction_tower.name=Ректификационная колонна tile.machine_fraction_tower.name=Ректификационная колонна
tile.machine_orbus.name=Тяжёлый магнитный контейнер для антиматерии tile.machine_orbus.name=Тяжёлый магнитный контейнер для антиматерии
@ -2375,6 +2393,9 @@ tile.chimney_industrial.desc=Подсоединяется с помощью вы
tile.radio_torch_counter.name=Редстоун-радио счётчик предметов tile.radio_torch_counter.name=Редстоун-радио счётчик предметов
tile.radio_torch_counter.desc=Ставится на плоские поверхности или совместимые компараторные блоки$Сигнал зависит от количества нужных предметов tile.radio_torch_counter.desc=Ставится на плоские поверхности или совместимые компараторные блоки$Сигнал зависит от количества нужных предметов
container.rttyCounter=Редстоун-радио счётчик предметов container.rttyCounter=Редстоун-радио счётчик предметов
container.rttyLogic=Редстоун-радио логический приёмник
tile.radio_torch_logic.name=Редстоун-радио логический приёмник
tile.radio_torch_logic.desc=Размещается на плоских поверхностях или совместимых с компаратором блоках$Сопоставляет сигналы красного камня с условиями, оцениваемыми в заданном порядке$Числовые или строковые входы сравниваются с константой
tile.machine_industrial_boiler.name=Промышленный бойлер tile.machine_industrial_boiler.name=Промышленный бойлер
tile.machine_industrial_boiler.desc=Большой бойлер, в котором можно вскипятить воду или разогреть нефть.$Требует внешний источник тепла.$Скорость передачи тепла: ΔT*0.01 TU/t$Не может взорваться tile.machine_industrial_boiler.desc=Большой бойлер, в котором можно вскипятить воду или разогреть нефть.$Требует внешний источник тепла.$Скорость передачи тепла: ΔT*0.01 TU/t$Не может взорваться
container.crateTemplate=Сборочный ящик container.crateTemplate=Сборочный ящик
@ -2400,6 +2421,18 @@ container.machineWoodBurner=Генератор на дровах
tile.machine_wood_burner.name=Генератор на дровах tile.machine_wood_burner.name=Генератор на дровах
tile.machine_wood_burner.desc=Генерирует 100HE/тик$Собирает золу$Может сжигать жидкости с 25%% эффективностью за 1мБ/с tile.machine_wood_burner.desc=Генерирует 100HE/тик$Собирает золу$Может сжигать жидкости с 25%% эффективностью за 1мБ/с
container.machineICF=ICF
tile.icf.name=Реактор инерциального термоядерного синтеза (ICF)
tile.icf_block.name=Лазер ICF
tile.icf_controller.name=Контроллер лазера ICF
tile.icf_laser_component.capacitor.name=Лазерный конденсатор ICF
tile.icf_laser_component.casing.name=Обшивка лазера ICF
tile.icf_laser_component.cell.name=Лазерная ячейка ICF
tile.icf_laser_component.emitter.name=Лазерный излучатель ICF
tile.icf_laser_component.port.name=Порт лазера ICF
tile.icf_laser_component.turbo.name=Турбоусилитель лазера ICF
tile.machine_icf_press.desc=Если бы только было что-то, что могло бы рассказать мне, как и работает ли эта штука$ Что-то вроде журнала изменений или чего-то в этом роде$ Увы, я слишком туп, чтобы читать что-то подобное.
tile.cm_block.alloy.name=Корпус машины из продвинутого сплава tile.cm_block.alloy.name=Корпус машины из продвинутого сплава
tile.cm_block.desh.name=Корпус машины из деша tile.cm_block.desh.name=Корпус машины из деша
tile.cm_block.steel.name=Корпус машины из стали tile.cm_block.steel.name=Корпус машины из стали
@ -2499,7 +2532,11 @@ tile.radiorec.name=FM радио
container.radiobox=FM передатчик container.radiobox=FM передатчик
container.radiorec=FM радио container.radiorec=FM радио
tile.muffler.name=Глушитель tile.muffler.name=Глушитель
tile.red_pylon.name=Электрический столб tile.red_pylon.name=Малый электрический столб
tile.red_pylon_medium_steel.name=Средний стальной электрический столб
tile.red_pylon_medium_steel_transformer.name=Средний стальной электрический столб с трансформатором
tile.red_pylon_medium_wood.name=Средний деревянный электрический столб
tile.red_pylon_medium_wood_transformer.name=Средний деревянный электрический столб с трансформатором
item.wiring_red_copper.name=Моток провода item.wiring_red_copper.name=Моток провода
tile.rail_highspeed.name=Высокоскоростные рельсы tile.rail_highspeed.name=Высокоскоростные рельсы
@ -2773,6 +2810,7 @@ item.ingot_zirconium.name=Циркониевый куб
item.ingot_boron.name=Борный слиток item.ingot_boron.name=Борный слиток
item.ingot_graphite.name=Графитовый слиток item.ingot_graphite.name=Графитовый слиток
item.ingot_bismuth.name=Слиток висмута item.ingot_bismuth.name=Слиток висмута
item.ingot_bismuth_bronze.name=Слиток висмутовой бронзы
item.cube_power.name=Куб электрония item.cube_power.name=Куб электрония
item.ingot_smore.name=Слиток с'мора item.ingot_smore.name=Слиток с'мора
item.ingot_niobium.name=Ниобиевый слиток item.ingot_niobium.name=Ниобиевый слиток
@ -2845,7 +2883,7 @@ item.ingot_polymer.name=Полимер
item.ingot_rubber.name=Резина item.ingot_rubber.name=Резина
item.ingot_biorubber.name=Брусок латекса item.ingot_biorubber.name=Брусок латекса
item.ingot_polonium.name=Слиток полония-210 item.ingot_polonium.name=Слиток полония-210
item.pipentm.name=%s трубы item.pipentm.name=Труба из %s
item.pipes_steel.name=Стальные трубы item.pipes_steel.name=Стальные трубы
item.pipes_steel.desc=Раскрафт был исключен из-за уклонения от уплаты налогов item.pipes_steel.desc=Раскрафт был исключен из-за уклонения от уплаты налогов
item.drill_titanium.name=Титановый бур item.drill_titanium.name=Титановый бур
@ -2903,6 +2941,7 @@ item.ingot_asbestos.name=Асбестовый лист
item.ingot_asbestos.desc=§o"Наполненный жизнью, неуверенностью в себе и асбестом. Это приходит вместе с воздухом."§r item.ingot_asbestos.desc=§o"Наполненный жизнью, неуверенностью в себе и асбестом. Это приходит вместе с воздухом."§r
item.ingot_arsenic.name=Слиток мышьяка item.ingot_arsenic.name=Слиток мышьяка
item.nugget_arsenic.name=Самородок мышьяка item.nugget_arsenic.name=Самородок мышьяка
item.ingot_arsenic_bronze.name=Слиток мышьяковой бронзы
item.solid_fuel.name=Твердое топливо item.solid_fuel.name=Твердое топливо
item.solid_fuel_bf.name=Твердое топливо (Жар-пламя) item.solid_fuel_bf.name=Твердое топливо (Жар-пламя)
@ -3594,7 +3633,7 @@ item.powder_iron.name=Железный порошок
item.powder_gold.name=Золотой порошок item.powder_gold.name=Золотой порошок
item.powder_aluminium.name=Алюминиевый порошок item.powder_aluminium.name=Алюминиевый порошок
item.powder_asbestos.name=Асбестовый порошок item.powder_asbestos.name=Асбестовый порошок
item.powder_asbestos.desc=§o\"ФФФФФФФФФФ- ММХХХХХХХХХХХХХ\"§r item.powder_asbestos.desc=§o"ФФФФФФФФФФ- ММХХХХХХХХХХХХХ"§r
item.powder_beryllium.name=Бериллиевый порошок item.powder_beryllium.name=Бериллиевый порошок
item.powder_copper.name=Медный порошок item.powder_copper.name=Медный порошок
item.powder_titanium.name=Титановый порошок item.powder_titanium.name=Титановый порошок
@ -4124,6 +4163,10 @@ item.rbmk_pellet_zfb_am_mix.name=ЦТС пеллета америция реак
item.rbmk_pellet_zfb_bismuth.name=Висмутовая ЦТС пеллета item.rbmk_pellet_zfb_bismuth.name=Висмутовая ЦТС пеллета
item.rbmk_pellet_zfb_pu241.name=Плутоний-241 ЦТС пеллета item.rbmk_pellet_zfb_pu241.name=Плутоний-241 ЦТС пеллета
item.icf_pellet.name=Топливная пеллета ICF
item.icf_pellet_depleted.name=Обедненная топливная пеллета ICF
item.icf_pellet_empty.name=Пустая топливная пеллета ICF
item.rod_uranium_fuel_depleted.name=Топливный стержень с обеднённым ураном item.rod_uranium_fuel_depleted.name=Топливный стержень с обеднённым ураном
item.rod_dual_uranium_fuel_depleted.name=Сдвоенный топливный стержень с обеднённым ураном item.rod_dual_uranium_fuel_depleted.name=Сдвоенный топливный стержень с обеднённым ураном
item.rod_quad_uranium_fuel_depleted.name=Счетверённый топливный стержень с обеднённым ураном item.rod_quad_uranium_fuel_depleted.name=Счетверённый топливный стержень с обеднённым ураном
@ -4966,7 +5009,7 @@ eye.speakTo=Вы говорите Оку: §o%s
item.plastic_bag.name=Пластиковый пакетик item.plastic_bag.name=Пластиковый пакетик
item.cap_aluminium.name=Алюминиевый колпачок item.cap_aluminium.name=Алюминиевый колпачок
item.shellntm.name=%s оболочка item.shellntm.name=Оболочка из %s
item.hull_small_steel.name=Небольшая стальная оболочка item.hull_small_steel.name=Небольшая стальная оболочка
item.hull_small_aluminium.name=Небольшая алюминиевая оболочка item.hull_small_aluminium.name=Небольшая алюминиевая оболочка
item.hull_small_aluminium.desc=Может быть вставлен в просверленный графит item.hull_small_aluminium.desc=Может быть вставлен в просверленный графит

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB