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
# Empty build number makes a release type
mod_build_number=4942
mod_build_number=4956
credits=HbMinecraft,\
\ rodolphito (explosion algorithms),\
@ -20,6 +20,7 @@ credits=HbMinecraft,\
\ Pashtet (russian localization),\
\ Bismarck (chinese localization),\
\ Maksymisio (polish localization)\
\ el3ctro4ndre (italian localization),\
\ Pu-238 (Tom impact effects),\
\ UFFR (RTGs, guns, casings, euphemium capacitor),\
\ 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.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.gui.GuiScreen;
@ -22,6 +21,7 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.Packet;
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
import net.minecraft.stats.StatList;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.MathHelper;
@ -71,20 +71,28 @@ public class BlockBobble extends BlockContainer implements IGUIProvider {
}
@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) {
TileEntityBobble entity = (TileEntityBobble) world.getTileEntity(x, y, z);
if(entity != null) {
EntityItem item = new EntityItem(world, x + 0.5, y, z + 0.5, new ItemStack(this, 1, entity.type.ordinal()));
item.motionX = 0;
item.motionY = 0;
item.motionZ = 0;
world.spawnEntityInWorld(item);
if(!player.capabilities.isCreativeMode) {
harvesters.set(player);
if(!world.isRemote) {
TileEntityBobble entity = (TileEntityBobble) world.getTileEntity(x, y, z);
if(entity != null) {
EntityItem item = new EntityItem(world, x + 0.5, y, z + 0.5, new ItemStack(this, 1, entity.type.ordinal()));
item.motionX = 0;
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

View File

@ -10,7 +10,6 @@ import com.hbm.tileentity.IGUIProvider;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
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.gui.GuiScreen;
@ -25,6 +24,7 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.Packet;
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
import net.minecraft.stats.StatList;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.MathHelper;
@ -66,20 +66,28 @@ public class BlockSnowglobe extends BlockContainer implements IGUIProvider {
}
@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) {
TileEntitySnowglobe entity = (TileEntitySnowglobe) world.getTileEntity(x, y, z);
if(entity != null) {
EntityItem item = new EntityItem(world, x + 0.5, y, z + 0.5, new ItemStack(this, 1, entity.type.ordinal()));
item.motionX = 0;
item.motionY = 0;
item.motionZ = 0;
world.spawnEntityInWorld(item);
if(!player.capabilities.isCreativeMode) {
harvesters.set(player);
if(!world.isRemote) {
TileEntitySnowglobe entity = (TileEntitySnowglobe) world.getTileEntity(x, y, z);
if(entity != null) {
EntityItem item = new EntityItem(world, x + 0.5, y, z + 0.5, new ItemStack(this, 1, entity.type.ordinal()));
item.motionX = 0;
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

View File

@ -7,14 +7,22 @@ import java.util.Locale;
import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.ILookOverlay;
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.machine.TileEntityHeaterHeatex;
import com.hbm.util.I18nUtil;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
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.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
import net.minecraftforge.common.util.ForgeDirection;
@ -45,7 +53,34 @@ public class HeaterHeatex extends BlockDummyable implements ILookOverlay, IToolt
@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);
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

View File

@ -101,17 +101,17 @@ public class MachineBigAssTank9000 extends BlockDummyable implements IPersistent
TileEntityMachineBAT9000 trialEntity = (TileEntityMachineBAT9000) 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());
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.tank.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("!")));
trialEntity.tank.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 {
} else {
return true;
}
}

View File

@ -1,12 +1,15 @@
package com.hbm.blocks.machine;
import com.hbm.blocks.BlockDummyable;
import com.hbm.handler.MultiblockHandlerXR;
import com.hbm.tileentity.TileEntityProxyCombo;
import com.hbm.tileentity.machine.TileEntityICF;
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 MachineICF extends BlockDummyable {
@ -17,6 +20,7 @@ public class MachineICF extends BlockDummyable {
@Override
public TileEntity createNewTileEntity(World world, int meta) {
if(meta >= 12) return new TileEntityICF();
if(meta >= 6) return new TileEntityProxyCombo().inventory().fluid();
return null;
}
@ -29,6 +33,31 @@ public class MachineICF extends BlockDummyable {
public int getOffset() {
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
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {

View File

@ -1,17 +1,28 @@
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.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
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.util.EnumChatFormatting;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
public class MachineICFPress extends BlockContainer {
public class MachineICFPress extends BlockContainer implements ITooltipProvider {
@SideOnly(Side.CLIENT) private IIcon iconTop;
@ -21,7 +32,7 @@ public class MachineICFPress extends BlockContainer {
@Override
public TileEntity createNewTileEntity(World world, int meta) {
return null;
return new TileEntityICFPress();
}
@Override
@ -36,4 +47,22 @@ public class MachineICFPress extends BlockContainer {
public IIcon getIcon(int side, int metadata) {
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);
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 == 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.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);

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.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.ICrafting;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
@ -39,13 +38,7 @@ public class ContainerMachineDiesel extends Container {
}
@Override
public void addCraftingToCrafters(ICrafting crafting) {
super.addCraftingToCrafters(crafting);
}
@Override
public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2)
{
public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) {
ItemStack var3 = null;
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_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));
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));
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));
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));
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));
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 {
BOILER("Boilable"),
HEATEXCHANGER("Heatable"),
PWR("PWR Coolant");
PWR("PWR Coolant"),
ICF("ICF Coolant");
public String name;

View File

@ -39,11 +39,11 @@ public class GUIHeaterHeatex extends GuiInfoContainer {
super.initGui();
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);
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);
this.fieldDelay.setText(String.valueOf(heater.tickDelay));
}
@ -52,7 +52,7 @@ public class GUIHeaterHeatex extends GuiInfoContainer {
field.setTextColor(0x00ff00);
field.setDisabledTextColour(0x00ff00);
field.setEnableBackgroundDrawing(false);
field.setMaxStringLength(4);
field.setMaxStringLength(5);
}
@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);
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
@ -53,7 +54,7 @@ public class GUIICF extends GuiInfoContainer {
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[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(
new ComparableStack(ModBlocks.rbmk_control_auto), new AnvilOutput[] {
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));
constructionRecipes.add(new AnvilConstructionRecipe(
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");
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_depleted = new Item().setUnlocalizedName("icf_pellet_depleted").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).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":icf_pellet");
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");

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 static final String MODID = "hbm";
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:
//V T (X)
//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, 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.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[] { 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_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() });
@ -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_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.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.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(TileEntityITER.class, "tileentity_iter");
put(TileEntityBlockICF.class, "tileentity_block_icf");
put(TileEntityICFPress.class, "tileentity_icf_press");
put(TileEntityICFController.class, "tileentity_icf_controller");
put(TileEntityICF.class, "tileentity_icf");
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.nbt.NBTTagCompound;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
@ -227,7 +228,7 @@ public class TileEntityHeaterHeatex extends TileEntityMachineBase implements IHe
@Override
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);
this.markChanged();

View File

@ -3,9 +3,16 @@ package com.hbm.tileentity.machine;
import com.hbm.inventory.container.ContainerICF;
import com.hbm.inventory.fluid.Fluids;
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.items.ModItems;
import com.hbm.items.machine.ItemICFPellet;
import com.hbm.lib.Library;
import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.fauxpointtwelve.DirPos;
import api.hbm.fluid.IFluidStandardTransceiver;
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.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 TileEntityICF extends TileEntityMachineBase implements IGUIProvider, IFluidStandardTransceiver {
public long laser;
public long maxLaser;
public long heat;
public static final long maxHeat = 1_000_000_000_000L;
public FluidTank[] tanks;
public TileEntityICF() {
super(12);
this.tanks = new FluidTank[3];
this.tanks[0] = new FluidTank(Fluids.COOLANT, 256_000);
this.tanks[1] = new FluidTank(Fluids.COOLANT_HOT, 256_000);
this.tanks[2] = new FluidTank(Fluids.STELLAR_FLUX, 16_000);
this.tanks[0] = new FluidTank(Fluids.SODIUM, 512_000);
this.tanks[1] = new FluidTank(Fluids.SODIUM_HOT, 512_000);
this.tanks[2] = new FluidTank(Fluids.STELLAR_FLUX, 24_000);
}
@Override
@ -43,18 +54,98 @@ public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider
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.laser = 0;
this.maxLaser = 0;
}
}
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) {
super.serialize(buf);
buf.writeLong(laser);
buf.writeLong(maxLaser);
buf.writeLong(heat);
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);
this.laser = buf.readLong();
this.maxLaser = buf.readLong();
this.heat = buf.readLong();
for(int i = 0; i < 3; i++) tanks[i].deserialize(buf);
}
@Override
public boolean isItemValidForSlot(int slot, ItemStack stack) {
return slot < 5;
return slot < 5 && stack.getItem() == ModItems.icf_pellet;
}
@Override
@ -81,6 +173,22 @@ public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider
public int[] getAccessibleSlotsFromSide(int side) {
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
public boolean isUseableByPlayer(EntityPlayer player) {

View File

@ -220,7 +220,7 @@ public class TileEntityICFController extends TileEntityTickingBase implements IE
@Override
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;

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_Polluting;
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_Liquid;
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));
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);
tank.setFill(tank.getFill() - 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.machineFEL=FEL
container.machineFunnel=Kombinationstrichter
container.machineICF=ICF
container.machineITER=Kernfusionsreaktor
container.machineLargeTurbine=Industrielle Dampfturbine
container.machineLiquefactor=Verflüssiger
@ -766,6 +767,7 @@ hbmfluid.solvent=Lösungsmittel
hbmfluid.sourgas=Saures Gas
hbmfluid.spentsteam=Niedrigdruckdampf
hbmfluid.steam=Dampf
hbmfluid.stellar_flux=Sternenflux
hbmfluid.sulfuric_acid=Schwefelsäure
hbmfluid.sunfloweroil=Sonnenblumenkernöl
hbmfluid.superhotsteam=Superverdichteter Dampf
@ -892,6 +894,20 @@ matshape.nuggets=%s Nuggets
matshape.quantum=%s Quantum
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.coaldust=Das Atmen fällt mir schwer.
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_small_aluminium.name=Kleine Aluminiumhü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.industrial_magnet.name=Industriemagnet
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.machine_hydrotreater.name=Hydrotreater
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.ladder_aluminium.name=Aluminiumleiter
tile.ladder_cobalt.name=Kobaltleiter

View File

@ -755,6 +755,7 @@ container.machineElectricBoiler=Electric Oil Heater
container.machineElectrolyser=Electrolysis Machine
container.machineFEL=FEL
container.machineFunnel=Combinator Funnel
container.machineICF=ICF
container.machineITER=Fusion Reactor
container.machineLargeTurbine=Industrial Steam Turbine
container.machineLiquefactor=Liquefactor
@ -1457,6 +1458,7 @@ hbmfluid.solvent=Solvent
hbmfluid.sourgas=Sour Gas
hbmfluid.spentsteam=Low-Pressure Steam
hbmfluid.steam=Steam
hbmfluid.stellar_flux=Stellar Flux
hbmfluid.sulfuric_acid=Sulfuric Acid
hbmfluid.sunfloweroil=Sunflower Seed Oil
hbmfluid.superhotsteam=Super Dense Steam
@ -1594,6 +1596,20 @@ matshape.nuggets=%s Nuggets
matshape.quantum=%s Quantum
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.coaldust=It's hard to breathe here.
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.desc=Can be inserted into drilled graphite
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.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
@ -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.machine_hydrotreater.name=Hydrotreater
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.ladder_aluminium.name=Aluminium 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_geo.name=Geothermal Electric Generator
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.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

File diff suppressed because it is too large Load Diff

View File

@ -235,33 +235,33 @@ cannery.hadron.1=Это компонент ядра ускорителя час
cannery.hadron.2=Частицы выбрасываются отсюда
cannery.hadron.3=И в круговых ускорителях возвращаются сюда
cannery.hadron.4=Сегмент катушки строится с помощью 8 плотных катушек, в середине которых ничего нет (или ядро)
cannery.hadron.5= Этот сегмент катушки также должен быть заключен в оболочку ускорителя частиц
cannery.hadron.5=Этот сегмент катушки также должен быть заключен в обшивку ускорителя частиц
cannery.hadron.6=Для доступа к компоненту ядра вам потребуется добавить один или несколько терминалов доступа
cannery.hadron.7=Для работы основного компонента также потребуется питание, добавьте разъем питания на одной из граней
cannery.hadron.8=Ускорителю потребуется достаточное количество штекеров питания, чтобы обеспечить по крайней мере 10KHE электроэнергии на единицу прочности катушки
cannery.hadron.9= Обратите внимание, что сегмент катушки, который оборачивается вокруг основного компонента, не учитывается при расчете прочности катушки
cannery.hadron.10= Для чисто линейных ускорителей этот сегмент катушки также не требуется
cannery.hadron.7=Для работы основного компонента также потребуется питание, добавьте порт питания на одной из граней
cannery.hadron.8=Ускорителю потребуется достаточное количество портов питания, чтобы обеспечить по крайней мере 10KHE электроэнергии на единицу силы катушки
cannery.hadron.9=Обратите внимание, что сегмент катушки, который оборачивается вокруг ядра, не учитывается при расчете силы катушки
cannery.hadron.10=Для чисто линейных ускорителей этот сегмент катушки также не требуется
cannery.hadron.11=Для круговых ускорителей необходимо добавить углы для изменения направления частицы
cannery.hadron.12= Внешние угловые катушки можно совсем не добавлять
cannery.hadron.13= Последняя часть нашего ускорителя - камера анализа, которая представляет собой пустую камеру 3x3x3, окруженную блоками камеры анализа
cannery.hadron.12=Внешние угловые катушки можно совсем не добавлять
cannery.hadron.13=Последняя часть нашего ускорителя - камера анализа, которая представляет собой пустую камеру 3x3x3, окруженную блоками камеры анализа
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.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.schottky=Диод с частицами Шоттки
cannery.schottky.0=Это диод Шоттки для частиц. Он позволяет создавать более сложные конструкции ускорителей частиц и экономить электроэнергию
cannery.schottky.1=По умолчанию он блокирует все частицы и должен быть настроен с помощью отвертки
cannery.schottky.2=Это лицо теперь будет принимать входящие частицы
cannery.schottky.3=А это лицо будет выбрасывать входящие частицы
cannery.schottky.2=Эта сторона теперь будет принимать входящие частицы
cannery.schottky.3=А эта будет выбрасывать входящие частицы
cannery.schottky.4=Диод теперь имеет два выхода и будет вести себя квантовым образом, создавая виртуальные частицы для каждого выхода
cannery.schottky.5=Когда все виртуальные частицы достигнут аналитической камеры, будет выбрана частица с наименьшим импульсом, необходимым для текущего рецепта
cannery.schottky.6= Выбранная частица подвергается коллапсу волновой функции и становится реальной, потребляя только ту энергию, которая требуется коллапсирующей частице
cannery.schottky.7= Если какие-либо виртуальные частицы сталкиваются с неправильными сегментами, все виртуальные частицы отбрасываются, а вместо них коллапсирует ошибочная частица
cannery.schottky.8= Обратите внимание, что виртуальные частицы никогда не будут использовать один и тот же выход диода дважды. Бесконечные циклы будут неудачными, но повторный вход в диод в остальном будет нормальным
cannery.schottky.9= Ваш диод Шоттки для частиц должен быть правильно заключен, со свободными путями для каждого выхода пересечения
cannery.schottky.6=Выбранная частица подвергается коллапсу волновой функции и становится реальной, потребляя только ту энергию, которая требуется коллапсирующей частице
cannery.schottky.7=Если какие-либо виртуальные частицы сталкиваются с неправильными сегментами, все виртуальные частицы отбрасываются, а вместо них коллапсирует ошибочная частица
cannery.schottky.8=Обратите внимание, что виртуальные частицы никогда не будут использовать один и тот же выход диода дважды. Бесконечные циклы будут неудачными, но повторный вход в диод в остальном будет нормальным
cannery.schottky.9=Ваш диод Шоттки для частиц должен быть правильно заключен, со свободными путями для каждого выхода пересечения
potion.hbm_taint=Порча
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.fuels=§6Принимаемое топливо:
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.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.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.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_mercury.name=Note
@ -1285,10 +1295,12 @@ hbmmat.americiumrg=Реакторный америций
hbmmat.americium241=Америций-241
hbmmat.americium242=Америций-242
hbmmat.arsenic=Мышьяк
hbmmat.arsenicbronze=Мышьяковая бронза
hbmmat.asbestos=Асбест
hbmmat.bakelite=Бакелит
hbmmat.beryllium=Бериллий
hbmmat.bismuth=Висмут
hbmmat.bismuthbronze=Висмутовая бронза
hbmmat.borax=Бура
hbmmat.boron=Бор
hbmmat.carbon=Углерод
@ -1374,6 +1386,8 @@ hbmmat.zirconium=Циркония
hbmmat.neodymium=Неодима
crucible.aa=Производство продвинутого сплава
crucible.abronze=Производство мышьяковой бронзы
crucible.bbronze=Производство висмутовой бронзы
crucible.ferro=Производство ферроуранового сплава
crucible.hematite=Переплавка гематита в железо
crucible.hss=Производство высокоскоростной стали
@ -2163,6 +2177,10 @@ tile.anvil_starmetal.name=Наковальня из звёздного мета
tile.anvil_steel.name=Стальная наковальня
tile.anvil_bismuth.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.machine_fraction_tower.name=Ректификационная колонна
tile.machine_orbus.name=Тяжёлый магнитный контейнер для антиматерии
@ -2375,6 +2393,9 @@ tile.chimney_industrial.desc=Подсоединяется с помощью вы
tile.radio_torch_counter.name=Редстоун-радио счётчик предметов
tile.radio_torch_counter.desc=Ставится на плоские поверхности или совместимые компараторные блоки$Сигнал зависит от количества нужных предметов
container.rttyCounter=Редстоун-радио счётчик предметов
container.rttyLogic=Редстоун-радио логический приёмник
tile.radio_torch_logic.name=Редстоун-радио логический приёмник
tile.radio_torch_logic.desc=Размещается на плоских поверхностях или совместимых с компаратором блоках$Сопоставляет сигналы красного камня с условиями, оцениваемыми в заданном порядке$Числовые или строковые входы сравниваются с константой
tile.machine_industrial_boiler.name=Промышленный бойлер
tile.machine_industrial_boiler.desc=Большой бойлер, в котором можно вскипятить воду или разогреть нефть.$Требует внешний источник тепла.$Скорость передачи тепла: ΔT*0.01 TU/t$Не может взорваться
container.crateTemplate=Сборочный ящик
@ -2400,6 +2421,18 @@ container.machineWoodBurner=Генератор на дровах
tile.machine_wood_burner.name=Генератор на дровах
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.desh.name=Корпус машины из деша
tile.cm_block.steel.name=Корпус машины из стали
@ -2499,7 +2532,11 @@ tile.radiorec.name=FM радио
container.radiobox=FM передатчик
container.radiorec=FM радио
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=Моток провода
tile.rail_highspeed.name=Высокоскоростные рельсы
@ -2773,6 +2810,7 @@ item.ingot_zirconium.name=Циркониевый куб
item.ingot_boron.name=Борный слиток
item.ingot_graphite.name=Графитовый слиток
item.ingot_bismuth.name=Слиток висмута
item.ingot_bismuth_bronze.name=Слиток висмутовой бронзы
item.cube_power.name=Куб электрония
item.ingot_smore.name=Слиток с'мора
item.ingot_niobium.name=Ниобиевый слиток
@ -2845,7 +2883,7 @@ item.ingot_polymer.name=Полимер
item.ingot_rubber.name=Резина
item.ingot_biorubber.name=Брусок латекса
item.ingot_polonium.name=Слиток полония-210
item.pipentm.name=%s трубы
item.pipentm.name=Труба из %s
item.pipes_steel.name=Стальные трубы
item.pipes_steel.desc=Раскрафт был исключен из-за уклонения от уплаты налогов
item.drill_titanium.name=Титановый бур
@ -2903,6 +2941,7 @@ item.ingot_asbestos.name=Асбестовый лист
item.ingot_asbestos.desc=§o"Наполненный жизнью, неуверенностью в себе и асбестом. Это приходит вместе с воздухом."§r
item.ingot_arsenic.name=Слиток мышьяка
item.nugget_arsenic.name=Самородок мышьяка
item.ingot_arsenic_bronze.name=Слиток мышьяковой бронзы
item.solid_fuel.name=Твердое топливо
item.solid_fuel_bf.name=Твердое топливо (Жар-пламя)
@ -3594,7 +3633,7 @@ item.powder_iron.name=Железный порошок
item.powder_gold.name=Золотой порошок
item.powder_aluminium.name=Алюминиевый порошок
item.powder_asbestos.name=Асбестовый порошок
item.powder_asbestos.desc=§o\"ФФФФФФФФФФ- ММХХХХХХХХХХХХХ\"§r
item.powder_asbestos.desc=§o"ФФФФФФФФФФ- ММХХХХХХХХХХХХХ"§r
item.powder_beryllium.name=Бериллиевый порошок
item.powder_copper.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_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_dual_uranium_fuel_depleted.name=Сдвоенный топливный стержень с обеднённым ураном
item.rod_quad_uranium_fuel_depleted.name=Счетверённый топливный стержень с обеднённым ураном
@ -4966,7 +5009,7 @@ eye.speakTo=Вы говорите Оку: §o%s
item.plastic_bag.name=Пластиковый пакетик
item.cap_aluminium.name=Алюминиевый колпачок
item.shellntm.name=%s оболочка
item.shellntm.name=Оболочка из %s
item.hull_small_steel.name=Небольшая стальная оболочка
item.hull_small_aluminium.name=Небольшая алюминиевая оболочка
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