Merge branch 'HbmMods:master' into master
17
changelog
@ -1,3 +1,10 @@
|
||||
## Added
|
||||
* Reasim RBMK control rods
|
||||
* Come in manual and auto variants, but not moderated
|
||||
* The same as standard control rods, except they need 5kHE/t
|
||||
* Have only a single cable connection at the bottom
|
||||
* Replace standard RBMK control rods when 528 mode is enabled
|
||||
|
||||
## Changed
|
||||
* Updated RBMK visuals
|
||||
* The indentations on most RBMK passive elements have been removed, heavily reducing tri count and allowing face culling, making RBMKs render much more efficiently
|
||||
@ -11,6 +18,13 @@
|
||||
* This means that things like 2x2 jungle trees can now be automated
|
||||
* Annihilating radioactive items now creates that item's radiation value x5 as chunk radiation
|
||||
* The maximum per tick is a 1000 RAD/s increase to prevent world-destroying radiation levels from annihilating demon cores
|
||||
* The water door now has a skin that isn't rusted with less contrast
|
||||
* The containment door now has a lead-colored skin with a trefoil on it
|
||||
* Using a screwdriver on a beamline now toggles a window which flashes if a particle passes
|
||||
* Particles now start slowly and accelerate, instead of passing a fixed 10 components per tick, particles only do 1 component per tick, which increases by 1 every 1,000 momentum
|
||||
* RBMK absorber columns now heat up when exposed to neutrons
|
||||
* The type of neutron does not matter, only the quantity
|
||||
* 20 flux equals 1°C heatup
|
||||
|
||||
## Fixed
|
||||
* Fixed NBTStack serialization omitting the stack size most of the time, preventing deserialization (mainly in the precision assembler config)
|
||||
@ -19,4 +33,5 @@
|
||||
* Fixed tool abilities switching when clicking on a block with a special interaction
|
||||
* Fixed outdated info on the QMAW pages involving AA and BSCCO due to the fusion reactor update
|
||||
* Fixed ammo container giving 9mm instead of .22 for the akimbo target pistols
|
||||
* Fixed RBMK control rods incorrectly showing up in the red group when no group is set
|
||||
* Fixed RBMK control rods incorrectly showing up in the red group when no group is set
|
||||
* Fixed fluid output direction being incorrect on boilers, causing them to break with pipe anchors
|
||||
@ -1083,6 +1083,8 @@ public class ModBlocks {
|
||||
public static Block rbmk_control;
|
||||
public static Block rbmk_control_mod;
|
||||
public static Block rbmk_control_auto;
|
||||
public static Block rbmk_control_reasim;
|
||||
public static Block rbmk_control_reasim_auto;
|
||||
public static Block rbmk_blank;
|
||||
public static Block rbmk_boiler;
|
||||
public static Block rbmk_reflector;
|
||||
@ -2100,6 +2102,8 @@ public class ModBlocks {
|
||||
rbmk_control = new RBMKControl(false).setBlockName("rbmk_control").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_control");
|
||||
rbmk_control_mod = new RBMKControl(true).setBlockName("rbmk_control_mod").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_control_mod");
|
||||
rbmk_control_auto = new RBMKControlAuto().setBlockName("rbmk_control_auto").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_control_auto");
|
||||
rbmk_control_reasim = new RBMKControl(false).setBlockName("rbmk_control_reasim").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_control_reasim");
|
||||
rbmk_control_reasim_auto = new RBMKControlAuto().setBlockName("rbmk_control_reasim_auto").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_control_reasim_auto");
|
||||
rbmk_blank = new RBMKBlank().setBlockName("rbmk_blank").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_blank");
|
||||
rbmk_boiler = new RBMKBoiler().setBlockName("rbmk_boiler").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_boiler");
|
||||
rbmk_reflector = new RBMKReflector().setBlockName("rbmk_reflector").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_reflector");
|
||||
@ -3089,6 +3093,8 @@ public class ModBlocks {
|
||||
GameRegistry.registerBlock(rbmk_control, rbmk_control.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(rbmk_control_mod, rbmk_control_mod.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(rbmk_control_auto, rbmk_control_auto.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(rbmk_control_reasim, rbmk_control_reasim.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(rbmk_control_reasim_auto, rbmk_control_reasim_auto.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(rbmk_blank, rbmk_blank.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(rbmk_boiler, rbmk_boiler.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(rbmk_reflector, rbmk_reflector.getUnlocalizedName());
|
||||
|
||||
@ -1,10 +1,13 @@
|
||||
package com.hbm.blocks.generic;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.blocks.machine.BlockPillar;
|
||||
import com.hbm.items.ModItems;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
@ -38,5 +41,12 @@ public class BlockForgottenLock extends BlockPillar {
|
||||
|
||||
public static void generate(World world, int x, int y, int z, int meta, ForgeDirection dir) {
|
||||
|
||||
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||
|
||||
int len = 15;
|
||||
for(int w = -2; w <= 2; w++) for(int h = -2; h <= 2; h++) for(int d = 0; d < len; d++) {
|
||||
Block b = (w == -2 || w == 2 || h == -2 || h == 2 || d == len - 1) ? ModBlocks.brick_forgotten : Blocks.air;
|
||||
world.setBlock(x - dir.offsetX * d + rot.offsetX * w, y + h, z - dir.offsetZ * d + rot.offsetZ * w, b);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -8,13 +8,14 @@ import com.hbm.lib.RefStrings;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.tileentity.machine.albion.TileEntityPABeamline;
|
||||
|
||||
import api.hbm.block.IToolable;
|
||||
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.world.World;
|
||||
|
||||
public class BlockPABeamline extends BlockDummyable implements ITooltipProvider {
|
||||
public class BlockPABeamline extends BlockDummyable implements ITooltipProvider, IToolable {
|
||||
|
||||
public BlockPABeamline() {
|
||||
super(Material.iron);
|
||||
@ -35,4 +36,19 @@ public class BlockPABeamline extends BlockDummyable implements ITooltipProvider
|
||||
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
|
||||
addStandardInfo(stack, player, list, ext);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) {
|
||||
if(tool != ToolType.SCREWDRIVER) return false;
|
||||
if(world.isRemote) return true;
|
||||
|
||||
int[] pos = this.findCore(world, x, y, z);
|
||||
if(pos != null) {
|
||||
TileEntityPABeamline tile = (TileEntityPABeamline) world.getTileEntity(pos[0], pos[1], pos[2]);
|
||||
tile.window = !tile.window;
|
||||
tile.markDirty();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@ -64,13 +64,18 @@ public abstract class RBMKBase extends BlockDummyable implements IToolable, ILoo
|
||||
if(renderLid != LID_NONE && side > 1) return true;
|
||||
return super.shouldSideBeRendered(world, x, y, z, side);
|
||||
}
|
||||
|
||||
public boolean hasOwnLid() {
|
||||
return this == ModBlocks.rbmk_control || this == ModBlocks.rbmk_control_auto || this == ModBlocks.rbmk_control_mod ||
|
||||
this == ModBlocks.rbmk_control_reasim || this == ModBlocks.rbmk_control_reasim_auto;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerBlockIcons(IIconRegister reg) {
|
||||
this.blockIcon = reg.registerIcon(this.getTextureName() + "_side");
|
||||
this.textureTop = reg.registerIcon(this.getTextureName() + "_top");
|
||||
if(this == ModBlocks.rbmk_control || this == ModBlocks.rbmk_control_auto || this == ModBlocks.rbmk_control_mod) return;
|
||||
if(hasOwnLid()) return;
|
||||
this.coverTextureTop = reg.registerIcon(this.getTextureName() + "_cover_top");
|
||||
this.coverTextureSide = reg.registerIcon(this.getTextureName() + "_cover_side");
|
||||
this.glassTextureTop = reg.registerIcon(this.getTextureName() + "_glass_top");
|
||||
@ -80,8 +85,10 @@ public abstract class RBMKBase extends BlockDummyable implements IToolable, ILoo
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public IIcon getIcon(int side, int meta) {
|
||||
if(renderLid == LID_STANDARD) return side == 0 || side == 1 ? coverTextureTop : coverTextureSide;
|
||||
if(renderLid == LID_GLASS) return side == 0 || side == 1 ? glassTextureTop : glassTextureSide;
|
||||
if(!hasOwnLid()) {
|
||||
if(renderLid == LID_STANDARD) return side == 0 || side == 1 ? coverTextureTop : coverTextureSide;
|
||||
if(renderLid == LID_GLASS) return side == 0 || side == 1 ? glassTextureTop : glassTextureSide;
|
||||
}
|
||||
return side == 0 || side == 1 ? textureTop : blockIcon;
|
||||
}
|
||||
|
||||
@ -97,34 +104,24 @@ public abstract class RBMKBase extends BlockDummyable implements IToolable, ILoo
|
||||
|
||||
public boolean openInv(World world, int x, int y, int z, EntityPlayer player) {
|
||||
|
||||
if(world.isRemote) {
|
||||
return true;
|
||||
}
|
||||
if(world.isRemote) return true;
|
||||
|
||||
int[] pos = this.findCore(world, x, y, z);
|
||||
|
||||
if(pos == null)
|
||||
return false;
|
||||
if(pos == null) return false;
|
||||
|
||||
TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]);
|
||||
|
||||
if(!(te instanceof TileEntityRBMKBase))
|
||||
return false;
|
||||
if(!(te instanceof TileEntityRBMKBase)) return false;
|
||||
|
||||
TileEntityRBMKBase rbmk = (TileEntityRBMKBase) te;
|
||||
|
||||
if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemRBMKLid) {
|
||||
|
||||
if(!rbmk.hasLid())
|
||||
return false;
|
||||
if(!rbmk.hasLid()) return false;
|
||||
}
|
||||
|
||||
if(!player.isSneaking()) {
|
||||
if(!player.isSneaking())
|
||||
FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]);
|
||||
return true;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -1,21 +1,42 @@
|
||||
package com.hbm.blocks.machine.rbmk;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlManual;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class RBMKControl extends RBMKPipedBase {
|
||||
|
||||
public boolean moderated = false;
|
||||
public IIcon textureBottom;
|
||||
|
||||
public RBMKControl(boolean moderated) {
|
||||
super();
|
||||
this.moderated = moderated;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerBlockIcons(IIconRegister reg) {
|
||||
super.registerBlockIcons(reg);
|
||||
if(this == ModBlocks.rbmk_control_reasim)
|
||||
this.textureBottom = reg.registerIcon(this.getTextureName() + "_bottom");
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public IIcon getIcon(int side, int meta) {
|
||||
if(this.renderLid == LID_NONE && this == ModBlocks.rbmk_control_reasim && side == 0) return textureBottom;
|
||||
return super.getIcon(side, meta);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World world, int meta) {
|
||||
if(meta >= this.offset) return new TileEntityRBMKControlManual();
|
||||
|
||||
@ -1,19 +1,39 @@
|
||||
package com.hbm.blocks.machine.rbmk;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlAuto;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class RBMKControlAuto extends RBMKPipedBase {
|
||||
|
||||
public IIcon textureBottom;
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerBlockIcons(IIconRegister reg) {
|
||||
super.registerBlockIcons(reg);
|
||||
if(this == ModBlocks.rbmk_control_reasim_auto)
|
||||
this.textureBottom = reg.registerIcon(this.getTextureName() + "_bottom");
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public IIcon getIcon(int side, int meta) {
|
||||
if(this.renderLid == LID_NONE && this == ModBlocks.rbmk_control_reasim_auto && side == 0) return textureBottom;
|
||||
return super.getIcon(side, meta);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World world, int meta) {
|
||||
|
||||
if(meta >= this.offset)
|
||||
return new TileEntityRBMKControlAuto();
|
||||
if(meta >= this.offset) return new TileEntityRBMKControlAuto();
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@ -355,6 +355,8 @@ public class RBMKNeutronHandler {
|
||||
((TileEntityRBMKRod) originTE).receiveFlux(this);
|
||||
return;
|
||||
} else if(type == RBMKType.ABSORBER) {
|
||||
((TileEntityRBMKAbsorber) nodeTE).heat += RBMKDials.getAbsorberHeatConversion(worldObj) * this.fluxQuantity;
|
||||
|
||||
if(absorberEfficiency == 1)
|
||||
return;
|
||||
|
||||
|
||||
@ -7,6 +7,7 @@ import com.hbm.lib.RefStrings;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.packet.toserver.NBTControlPacket;
|
||||
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlManual;
|
||||
import com.hbm.util.BobMathUtil;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.audio.PositionedSoundRecord;
|
||||
@ -33,6 +34,10 @@ public class GUIRBMKControl extends GuiInfoContainer {
|
||||
super.drawScreen(mouseX, mouseY, f);
|
||||
|
||||
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 71, guiTop + 29, 16, 56, mouseX, mouseY, new String[]{ (int)(rod.level * 100) + "%" } );
|
||||
|
||||
if(rod.isPowered()) {
|
||||
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 87, guiTop + 21, 16, 16, mouseX, mouseY, new String[]{ BobMathUtil.getShortNumber(rod.power) + " / " + BobMathUtil.getShortNumber(rod.maxPower) + "HE" } );
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -85,5 +90,9 @@ public class GUIRBMKControl extends GuiInfoContainer {
|
||||
|
||||
drawTexturedModalRect(guiLeft + 28, guiTop + 26 + color * 11, 184, color * 10, 12, 10);
|
||||
}
|
||||
|
||||
if(rod.isPowered()) {
|
||||
drawTexturedModalRect(guiLeft + 87, guiTop + 21, 196, rod.hasPower ? 16 : 0, 16, 16);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -9,6 +9,7 @@ import com.hbm.lib.RefStrings;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.packet.toserver.NBTControlPacket;
|
||||
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlAuto;
|
||||
import com.hbm.util.BobMathUtil;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.audio.PositionedSoundRecord;
|
||||
@ -64,6 +65,10 @@ public class GUIRBMKControlAuto extends GuiInfoContainer {
|
||||
|
||||
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 124, guiTop + 29, 16, 56, mouseX, mouseY, new String[]{ (int)(rod.level * 100) + "%" } );
|
||||
|
||||
if(rod.isPowered()) {
|
||||
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 136, guiTop + 21, 16, 16, mouseX, mouseY, new String[]{ BobMathUtil.getShortNumber(rod.power) + " / " + BobMathUtil.getShortNumber(rod.maxPower) + "HE" } );
|
||||
}
|
||||
|
||||
String func = "Function: ";
|
||||
|
||||
switch(rod.function) {
|
||||
@ -155,6 +160,10 @@ public class GUIRBMKControlAuto extends GuiInfoContainer {
|
||||
int f = rod.function.ordinal();
|
||||
drawTexturedModalRect(guiLeft + 59, guiTop + 27, 184, f * 19, 26, 19);
|
||||
|
||||
if(rod.isPowered()) {
|
||||
drawTexturedModalRect(guiLeft + 136, guiTop + 21, 210, rod.hasPower ? 16 : 0, 16, 16);
|
||||
}
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
this.fields[i].drawTextBox();
|
||||
}
|
||||
|
||||
@ -3142,6 +3142,21 @@ public class ModItems {
|
||||
rbmk_pellet_zfb_am_mix = (ItemRBMKPellet) new ItemRBMKPellet("Zirconium Fast Breeder - HEP-241#MEA").setUnlocalizedName("rbmk_pellet_zfb_am_mix").setTextureName(RefStrings.MODID + ":rbmk_pellet_zfb_am_mix");
|
||||
rbmk_pellet_drx = (ItemRBMKPellet) new ItemRBMKPellet(EnumChatFormatting.OBFUSCATED + "can't you hear, can't you hear the thunder?").setUnlocalizedName("rbmk_pellet_drx").setTextureName(RefStrings.MODID + ":rbmk_pellet_drx");
|
||||
|
||||
int tintUranium = 0x868D82;
|
||||
int tintNeptunium = 0x757E73;
|
||||
int tintPlutonium = 0x656E6B;
|
||||
int tintAmericium = 0xA88A8F;
|
||||
int tintThorium = 0x665448;
|
||||
int tintZirconium = 0xAAA36A;
|
||||
int tintSchrabidium = 0x2D9A94;
|
||||
int tintPolonium = 0x563A26;
|
||||
int tintRadium = 0xB3B6AD;
|
||||
int tintAustralium = 0xFFEE00;
|
||||
int tintFlashgold = 0xDC9613;
|
||||
int tintFlashlead = 0x7B7B87;
|
||||
int tintBalefire = 0xB2FF1B;
|
||||
int tintDRX = 0xD77276;
|
||||
|
||||
rbmk_fuel_empty = new Item().setUnlocalizedName("rbmk_fuel_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rbmk_fuel_empty");
|
||||
rbmk_fuel_ueu = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_ueu)
|
||||
.setYield(100000000D)
|
||||
@ -3150,7 +3165,7 @@ public class ModItems {
|
||||
.setDepletionFunction(EnumDepleteFunc.RAISING_SLOPE)
|
||||
.setHeat(0.65) //0.5 is too much of a nerf in heat; pu239 buildup justifies it being on par with MEU ig
|
||||
.setMeltingPoint(2865)
|
||||
.setUnlocalizedName("rbmk_fuel_ueu").setTextureName(RefStrings.MODID + ":rbmk_fuel_ueu");
|
||||
.setTint(tintUranium).setUnlocalizedName("rbmk_fuel_ueu").setTextureName(RefStrings.MODID + ":rbmk_fuel_ueu");
|
||||
rbmk_fuel_meu = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_meu)
|
||||
.setYield(100000000D)
|
||||
.setStats(20)
|
||||
@ -3158,20 +3173,20 @@ public class ModItems {
|
||||
.setDepletionFunction(EnumDepleteFunc.RAISING_SLOPE)
|
||||
.setHeat(0.65) //0.75 was a bit too much...
|
||||
.setMeltingPoint(2865)
|
||||
.setUnlocalizedName("rbmk_fuel_meu").setTextureName(RefStrings.MODID + ":rbmk_fuel_meu");
|
||||
.setTint(tintUranium).setUnlocalizedName("rbmk_fuel_meu").setTextureName(RefStrings.MODID + ":rbmk_fuel_meu");
|
||||
rbmk_fuel_heu233 = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_heu233)
|
||||
.setYield(100000000D)
|
||||
.setStats(27.5D)
|
||||
.setFunction(EnumBurnFunc.LINEAR)
|
||||
.setHeat(1.25D)
|
||||
.setMeltingPoint(2865)
|
||||
.setUnlocalizedName("rbmk_fuel_heu233").setTextureName(RefStrings.MODID + ":rbmk_fuel_heu233");
|
||||
.setTint(tintUranium).setUnlocalizedName("rbmk_fuel_heu233").setTextureName(RefStrings.MODID + ":rbmk_fuel_heu233");
|
||||
rbmk_fuel_heu235 = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_heu235)
|
||||
.setYield(100000000D)
|
||||
.setStats(50) //Consistency with HEN; its critical mass is too high to justify a linear function
|
||||
.setFunction(EnumBurnFunc.SQUARE_ROOT)
|
||||
.setMeltingPoint(2865)
|
||||
.setUnlocalizedName("rbmk_fuel_heu235").setTextureName(RefStrings.MODID + ":rbmk_fuel_heu235");
|
||||
.setTint(tintUranium).setUnlocalizedName("rbmk_fuel_heu235").setTextureName(RefStrings.MODID + ":rbmk_fuel_heu235");
|
||||
rbmk_fuel_thmeu = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_thmeu)
|
||||
.setYield(100000000D)
|
||||
.setStats(20)
|
||||
@ -3179,7 +3194,7 @@ public class ModItems {
|
||||
.setDepletionFunction(EnumDepleteFunc.BOOSTED_SLOPE)
|
||||
.setHeat(0.65D) //Consistency with MEU
|
||||
.setMeltingPoint(3350)
|
||||
.setUnlocalizedName("rbmk_fuel_thmeu").setTextureName(RefStrings.MODID + ":rbmk_fuel_thmeu");
|
||||
.setTint(tintThorium).setUnlocalizedName("rbmk_fuel_thmeu").setTextureName(RefStrings.MODID + ":rbmk_fuel_thmeu");
|
||||
rbmk_fuel_lep = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_lep)
|
||||
.setYield(100000000D)
|
||||
.setStats(35)
|
||||
@ -3187,27 +3202,27 @@ public class ModItems {
|
||||
.setDepletionFunction(EnumDepleteFunc.RAISING_SLOPE)
|
||||
.setHeat(0.75D)
|
||||
.setMeltingPoint(2744)
|
||||
.setUnlocalizedName("rbmk_fuel_lep").setTextureName(RefStrings.MODID + ":rbmk_fuel_lep");
|
||||
.setTint(tintPlutonium).setUnlocalizedName("rbmk_fuel_lep").setTextureName(RefStrings.MODID + ":rbmk_fuel_lep");
|
||||
rbmk_fuel_mep = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_mep)
|
||||
.setYield(100000000D)
|
||||
.setStats(35)
|
||||
.setFunction(EnumBurnFunc.SQUARE_ROOT)
|
||||
.setMeltingPoint(2744)
|
||||
.setUnlocalizedName("rbmk_fuel_mep").setTextureName(RefStrings.MODID + ":rbmk_fuel_mep");
|
||||
.setTint(tintPlutonium).setUnlocalizedName("rbmk_fuel_mep").setTextureName(RefStrings.MODID + ":rbmk_fuel_mep");
|
||||
rbmk_fuel_hep239 = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_hep239)
|
||||
.setYield(100000000D)
|
||||
.setStats(30)
|
||||
.setFunction(EnumBurnFunc.LINEAR)
|
||||
.setHeat(1.25D)
|
||||
.setMeltingPoint(2744)
|
||||
.setUnlocalizedName("rbmk_fuel_hep").setTextureName(RefStrings.MODID + ":rbmk_fuel_hep");
|
||||
.setTint(tintPlutonium).setUnlocalizedName("rbmk_fuel_hep").setTextureName(RefStrings.MODID + ":rbmk_fuel_hep");
|
||||
rbmk_fuel_hep241 = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_hep241)
|
||||
.setYield(100000000D)
|
||||
.setStats(40)
|
||||
.setFunction(EnumBurnFunc.LINEAR)
|
||||
.setHeat(1.75D)
|
||||
.setMeltingPoint(2744)
|
||||
.setUnlocalizedName("rbmk_fuel_hep241").setTextureName(RefStrings.MODID + ":rbmk_fuel_hep241");
|
||||
.setTint(tintPlutonium).setUnlocalizedName("rbmk_fuel_hep241").setTextureName(RefStrings.MODID + ":rbmk_fuel_hep241");
|
||||
rbmk_fuel_lea = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_lea)
|
||||
.setYield(100000000D)
|
||||
.setStats(60, 10)
|
||||
@ -3215,14 +3230,14 @@ public class ModItems {
|
||||
.setDepletionFunction(EnumDepleteFunc.RAISING_SLOPE)
|
||||
.setHeat(1.5D)
|
||||
.setMeltingPoint(2386)
|
||||
.setUnlocalizedName("rbmk_fuel_lea").setTextureName(RefStrings.MODID + ":rbmk_fuel_lea");
|
||||
.setTint(tintAmericium).setUnlocalizedName("rbmk_fuel_lea").setTextureName(RefStrings.MODID + ":rbmk_fuel_lea");
|
||||
rbmk_fuel_mea = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_mea)
|
||||
.setYield(100000000D)
|
||||
.setStats(35D, 20)
|
||||
.setFunction(EnumBurnFunc.ARCH)
|
||||
.setHeat(1.75D)
|
||||
.setMeltingPoint(2386)
|
||||
.setUnlocalizedName("rbmk_fuel_mea").setTextureName(RefStrings.MODID + ":rbmk_fuel_mea");
|
||||
.setTint(tintAmericium).setUnlocalizedName("rbmk_fuel_mea").setTextureName(RefStrings.MODID + ":rbmk_fuel_mea");
|
||||
rbmk_fuel_hea241 = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_hea241)
|
||||
.setYield(100000000D)
|
||||
.setStats(65, 15)
|
||||
@ -3230,14 +3245,14 @@ public class ModItems {
|
||||
.setHeat(1.85D)
|
||||
.setMeltingPoint(2386)
|
||||
.setNeutronTypes(NType.FAST, NType.FAST)
|
||||
.setUnlocalizedName("rbmk_fuel_hea241").setTextureName(RefStrings.MODID + ":rbmk_fuel_hea241");
|
||||
.setTint(tintAmericium).setUnlocalizedName("rbmk_fuel_hea241").setTextureName(RefStrings.MODID + ":rbmk_fuel_hea241");
|
||||
rbmk_fuel_hea242 = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_hea242)
|
||||
.setYield(100000000D)
|
||||
.setStats(45)
|
||||
.setFunction(EnumBurnFunc.LINEAR)
|
||||
.setHeat(2D)
|
||||
.setMeltingPoint(2386)
|
||||
.setUnlocalizedName("rbmk_fuel_hea242").setTextureName(RefStrings.MODID + ":rbmk_fuel_hea242");
|
||||
.setTint(tintAmericium).setUnlocalizedName("rbmk_fuel_hea242").setTextureName(RefStrings.MODID + ":rbmk_fuel_hea242");
|
||||
rbmk_fuel_men = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_men)
|
||||
.setYield(100000000D)
|
||||
.setStats(30)
|
||||
@ -3246,21 +3261,21 @@ public class ModItems {
|
||||
.setHeat(0.75)
|
||||
.setMeltingPoint(2800)
|
||||
.setNeutronTypes(NType.ANY, NType.FAST) //Build-up of Pu-239 leads to both speeds of neutrons grooving
|
||||
.setUnlocalizedName("rbmk_fuel_men").setTextureName(RefStrings.MODID + ":rbmk_fuel_men");
|
||||
.setTint(tintNeptunium).setUnlocalizedName("rbmk_fuel_men").setTextureName(RefStrings.MODID + ":rbmk_fuel_men");
|
||||
rbmk_fuel_hen = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_hen)
|
||||
.setYield(100000000D)
|
||||
.setStats(40)
|
||||
.setFunction(EnumBurnFunc.SQUARE_ROOT)
|
||||
.setMeltingPoint(2800)
|
||||
.setNeutronTypes(NType.FAST, NType.FAST)
|
||||
.setUnlocalizedName("rbmk_fuel_hen").setTextureName(RefStrings.MODID + ":rbmk_fuel_hen");
|
||||
.setTint(tintNeptunium).setUnlocalizedName("rbmk_fuel_hen").setTextureName(RefStrings.MODID + ":rbmk_fuel_hen");
|
||||
rbmk_fuel_mox = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_mox)
|
||||
.setYield(100000000D)
|
||||
.setStats(40)
|
||||
.setFunction(EnumBurnFunc.LOG_TEN)
|
||||
.setDepletionFunction(EnumDepleteFunc.RAISING_SLOPE)
|
||||
.setMeltingPoint(2815)
|
||||
.setUnlocalizedName("rbmk_fuel_mox").setTextureName(RefStrings.MODID + ":rbmk_fuel_mox");
|
||||
.setTint(tintUranium).setUnlocalizedName("rbmk_fuel_mox").setTextureName(RefStrings.MODID + ":rbmk_fuel_mox");
|
||||
rbmk_fuel_les = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_les)
|
||||
.setYield(100000000D)
|
||||
.setStats(50)
|
||||
@ -3268,14 +3283,14 @@ public class ModItems {
|
||||
.setHeat(1.25D)
|
||||
.setMeltingPoint(2500)
|
||||
.setNeutronTypes(NType.SLOW, NType.SLOW) //Beryllium Moderation
|
||||
.setUnlocalizedName("rbmk_fuel_les").setTextureName(RefStrings.MODID + ":rbmk_fuel_les");
|
||||
.setTint(tintSchrabidium).setUnlocalizedName("rbmk_fuel_les").setTextureName(RefStrings.MODID + ":rbmk_fuel_les");
|
||||
rbmk_fuel_mes = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_mes)
|
||||
.setYield(100000000D)
|
||||
.setStats(75D)
|
||||
.setFunction(EnumBurnFunc.ARCH)
|
||||
.setHeat(1.5D)
|
||||
.setMeltingPoint(2750)
|
||||
.setUnlocalizedName("rbmk_fuel_mes").setTextureName(RefStrings.MODID + ":rbmk_fuel_mes");
|
||||
.setTint(tintSchrabidium).setUnlocalizedName("rbmk_fuel_mes").setTextureName(RefStrings.MODID + ":rbmk_fuel_mes");
|
||||
rbmk_fuel_hes = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_hes)
|
||||
.setYield(100000000D)
|
||||
.setStats(90)
|
||||
@ -3283,7 +3298,7 @@ public class ModItems {
|
||||
.setDepletionFunction(EnumDepleteFunc.LINEAR)
|
||||
.setHeat(1.75D)
|
||||
.setMeltingPoint(3000)
|
||||
.setUnlocalizedName("rbmk_fuel_hes").setTextureName(RefStrings.MODID + ":rbmk_fuel_hes");
|
||||
.setTint(tintSchrabidium).setUnlocalizedName("rbmk_fuel_hes").setTextureName(RefStrings.MODID + ":rbmk_fuel_hes");
|
||||
rbmk_fuel_leaus = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_leaus)
|
||||
.setYield(100000000D)
|
||||
.setStats(30)
|
||||
@ -3291,14 +3306,14 @@ public class ModItems {
|
||||
.setDepletionFunction(EnumDepleteFunc.LINEAR)
|
||||
.setXenon(0.05D, 50D)
|
||||
.setHeat(1.5D)
|
||||
.setMeltingPoint(7029).setUnlocalizedName("rbmk_fuel_leaus").setTextureName(RefStrings.MODID + ":rbmk_fuel_leaus");
|
||||
.setTint(tintAustralium).setMeltingPoint(7029).setUnlocalizedName("rbmk_fuel_leaus").setTextureName(RefStrings.MODID + ":rbmk_fuel_leaus");
|
||||
rbmk_fuel_heaus = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_heaus)
|
||||
.setYield(100000000D)
|
||||
.setStats(35)
|
||||
.setFunction(EnumBurnFunc.LINEAR)
|
||||
.setXenon(0.05D, 50D)
|
||||
.setHeat(1.5D)
|
||||
.setMeltingPoint(5211).setUnlocalizedName("rbmk_fuel_heaus").setTextureName(RefStrings.MODID + ":rbmk_fuel_heaus");
|
||||
.setTint(tintAustralium).setMeltingPoint(5211).setUnlocalizedName("rbmk_fuel_heaus").setTextureName(RefStrings.MODID + ":rbmk_fuel_heaus");
|
||||
rbmk_fuel_po210be = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_po210be)
|
||||
.setYield(25000000D)
|
||||
.setStats(0D, 50)
|
||||
@ -3309,7 +3324,7 @@ public class ModItems {
|
||||
.setDiffusion(0.05D)
|
||||
.setMeltingPoint(1287)
|
||||
.setNeutronTypes(NType.SLOW, NType.SLOW) //Beryllium Moderation
|
||||
.setUnlocalizedName("rbmk_fuel_po210be").setTextureName(RefStrings.MODID + ":rbmk_fuel_po210be");
|
||||
.setTint(tintPolonium).setUnlocalizedName("rbmk_fuel_po210be").setTextureName(RefStrings.MODID + ":rbmk_fuel_po210be");
|
||||
rbmk_fuel_ra226be = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_ra226be)
|
||||
.setYield(100000000D)
|
||||
.setStats(0D, 20)
|
||||
@ -3320,7 +3335,7 @@ public class ModItems {
|
||||
.setDiffusion(0.5D)
|
||||
.setMeltingPoint(700)
|
||||
.setNeutronTypes(NType.SLOW, NType.SLOW) //Beryllium Moderation
|
||||
.setUnlocalizedName("rbmk_fuel_ra226be").setTextureName(RefStrings.MODID + ":rbmk_fuel_ra226be");
|
||||
.setTint(tintRadium).setUnlocalizedName("rbmk_fuel_ra226be").setTextureName(RefStrings.MODID + ":rbmk_fuel_ra226be");
|
||||
rbmk_fuel_pu238be = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_pu238be)
|
||||
.setYield(50000000D)
|
||||
.setStats(40, 40)
|
||||
@ -3329,7 +3344,7 @@ public class ModItems {
|
||||
.setDiffusion(0.05D)
|
||||
.setMeltingPoint(1287)
|
||||
.setNeutronTypes(NType.SLOW, NType.SLOW) //Beryllium Moderation
|
||||
.setUnlocalizedName("rbmk_fuel_pu238be").setTextureName(RefStrings.MODID + ":rbmk_fuel_pu238be");
|
||||
.setTint(tintPlutonium).setUnlocalizedName("rbmk_fuel_pu238be").setTextureName(RefStrings.MODID + ":rbmk_fuel_pu238be");
|
||||
rbmk_fuel_balefire_gold = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_balefire_gold)
|
||||
.setYield(100000000D)
|
||||
.setStats(50, 10)
|
||||
@ -3337,7 +3352,7 @@ public class ModItems {
|
||||
.setDepletionFunction(EnumDepleteFunc.LINEAR)
|
||||
.setXenon(0.0D, 50D)
|
||||
.setMeltingPoint(2000)
|
||||
.setUnlocalizedName("rbmk_fuel_balefire_gold").setTextureName(RefStrings.MODID + ":rbmk_fuel_balefire_gold");
|
||||
.setTint(tintFlashgold).setUnlocalizedName("rbmk_fuel_balefire_gold").setTextureName(RefStrings.MODID + ":rbmk_fuel_balefire_gold");
|
||||
rbmk_fuel_flashlead = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_flashlead)
|
||||
.setYield(250000000D)
|
||||
.setStats(40, 50)
|
||||
@ -3345,7 +3360,7 @@ public class ModItems {
|
||||
.setDepletionFunction(EnumDepleteFunc.LINEAR)
|
||||
.setXenon(0.0D, 50D)
|
||||
.setMeltingPoint(2050)
|
||||
.setUnlocalizedName("rbmk_fuel_flashlead").setTextureName(RefStrings.MODID + ":rbmk_fuel_flashlead");
|
||||
.setTint(tintFlashlead).setUnlocalizedName("rbmk_fuel_flashlead").setTextureName(RefStrings.MODID + ":rbmk_fuel_flashlead");
|
||||
rbmk_fuel_balefire = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_balefire)
|
||||
.setYield(100000000D)
|
||||
.setStats(100, 35)
|
||||
@ -3353,34 +3368,34 @@ public class ModItems {
|
||||
.setXenon(0.0D, 50D)
|
||||
.setHeat(3D)
|
||||
.setMeltingPoint(3652)
|
||||
.setUnlocalizedName("rbmk_fuel_balefire").setTextureName(RefStrings.MODID + ":rbmk_fuel_balefire");
|
||||
.setTint(tintBalefire).setUnlocalizedName("rbmk_fuel_balefire").setTextureName(RefStrings.MODID + ":rbmk_fuel_balefire");
|
||||
rbmk_fuel_zfb_bismuth = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_zfb_bismuth)
|
||||
.setYield(50000000D)
|
||||
.setStats(20)
|
||||
.setFunction(EnumBurnFunc.SQUARE_ROOT)
|
||||
.setHeat(1.75D)
|
||||
.setMeltingPoint(2744)
|
||||
.setUnlocalizedName("rbmk_fuel_zfb_bismuth").setTextureName(RefStrings.MODID + ":rbmk_fuel_zfb_bismuth");
|
||||
.setTint(tintZirconium).setUnlocalizedName("rbmk_fuel_zfb_bismuth").setTextureName(RefStrings.MODID + ":rbmk_fuel_zfb_bismuth");
|
||||
rbmk_fuel_zfb_pu241 = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_zfb_pu241)
|
||||
.setYield(50000000D)
|
||||
.setStats(20)
|
||||
.setFunction(EnumBurnFunc.SQUARE_ROOT)
|
||||
.setMeltingPoint(2865)
|
||||
.setUnlocalizedName("rbmk_fuel_zfb_pu241").setTextureName(RefStrings.MODID + ":rbmk_fuel_zfb_pu241");
|
||||
.setTint(tintZirconium).setUnlocalizedName("rbmk_fuel_zfb_pu241").setTextureName(RefStrings.MODID + ":rbmk_fuel_zfb_pu241");
|
||||
rbmk_fuel_zfb_am_mix = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_zfb_am_mix)
|
||||
.setYield(50000000D)
|
||||
.setStats(20)
|
||||
.setFunction(EnumBurnFunc.LINEAR)
|
||||
.setHeat(1.75D)
|
||||
.setMeltingPoint(2744)
|
||||
.setUnlocalizedName("rbmk_fuel_zfb_am_mix").setTextureName(RefStrings.MODID + ":rbmk_fuel_zfb_am_mix");
|
||||
.setTint(tintZirconium).setUnlocalizedName("rbmk_fuel_zfb_am_mix").setTextureName(RefStrings.MODID + ":rbmk_fuel_zfb_am_mix");
|
||||
rbmk_fuel_drx = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_drx)
|
||||
.setYield(10000000D)
|
||||
.setStats(1000, 10)
|
||||
.setFunction(EnumBurnFunc.QUADRATIC)
|
||||
.setHeat(0.1D)
|
||||
.setMeltingPoint(100000)
|
||||
.setUnlocalizedName("rbmk_fuel_drx").setTextureName(RefStrings.MODID + ":rbmk_fuel_drx");
|
||||
.setTint(tintDRX).setUnlocalizedName("rbmk_fuel_drx").setTextureName(RefStrings.MODID + ":rbmk_fuel_drx");
|
||||
rbmk_fuel_test = (ItemRBMKRod) new ItemRBMKRod("THE VOICES")
|
||||
.setYield(1000000D)
|
||||
.setStats(100)
|
||||
|
||||
@ -36,6 +36,7 @@ public class ItemRBMKRod extends Item {
|
||||
public double diffusion = 0.02D; //the speed at which the core heats the hull
|
||||
public NType nType = NType.SLOW; //neutronType, the most efficient neutron type for fission
|
||||
public NType rType = NType.FAST; //releaseType, the type of neutrons released by this fuel
|
||||
public int colorTint = 0x304825;
|
||||
|
||||
/* _____
|
||||
* ,I I I I,
|
||||
@ -73,6 +74,11 @@ public class ItemRBMKRod extends Item {
|
||||
this.setMaxStackSize(1);
|
||||
this.setCreativeTab(MainRegistry.controlTab);
|
||||
}
|
||||
|
||||
public ItemRBMKRod setTint(int tint) {
|
||||
this.colorTint = tint;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ItemRBMKRod setYield(double yield) {
|
||||
this.yield = yield;
|
||||
|
||||
@ -778,11 +778,12 @@ public class CraftingManager {
|
||||
addRecipeAuto(new ItemStack(ModBlocks.rbmk_reflector, 1), new Object[] { "GGG", "GRG", "GGG", 'G', OreDictManager.getReflector(), 'R', ModBlocks.rbmk_blank });
|
||||
if(!GeneralConfig.enable528) {
|
||||
addRecipeAuto(new ItemStack(ModBlocks.rbmk_control, 1), new Object[] { " B ", "GRG", " B ", 'G', GRAPHITE.ingot(), 'B', ModItems.motor, 'R', ModBlocks.rbmk_absorber });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.rbmk_control_mod, 1), new Object[] { "BGB", "GRG", "BGB", 'G', GRAPHITE.block(), 'R', ModBlocks.rbmk_control, 'B', ModItems.nugget_bismuth });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.rbmk_control_auto, 1), new Object[] { "C", "R", "D", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'R', ModBlocks.rbmk_control, 'D', ModItems.crt_display });
|
||||
} else {
|
||||
addRecipeAuto(new ItemStack(ModBlocks.rbmk_control, 1), new Object[] { "CBC", "GRG", "CBC", 'G', GRAPHITE.ingot(), 'B', ModItems.motor, 'R', ModBlocks.rbmk_absorber, 'C', CD.ingot() });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.rbmk_control_reasim, 1), new Object[] { " B ", "GRG", " B ", 'G', GRAPHITE.ingot(), 'B', ModItems.motor, 'R', ModBlocks.rbmk_absorber });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.rbmk_control_reasim_auto, 1), new Object[] { "C", "R", "D", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'R', ModBlocks.rbmk_control, 'D', ModItems.crt_display });
|
||||
}
|
||||
addRecipeAuto(new ItemStack(ModBlocks.rbmk_control_mod, 1), new Object[] { "BGB", "GRG", "BGB", 'G', GRAPHITE.block(), 'R', ModBlocks.rbmk_control, 'B', ModItems.nugget_bismuth });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.rbmk_control_auto, 1), new Object[] { "C", "R", "D", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'R', ModBlocks.rbmk_control, 'D', ModItems.crt_display });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.rbmk_rod_reasim, 1), new Object[] { "ZCZ", "ZRZ", "ZCZ", 'C', STEEL.shell(), 'R', ModBlocks.rbmk_blank, 'Z', ZR.ingot() });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.rbmk_rod_reasim_mod, 1), new Object[] { "BGB", "GRG", "BGB", 'G', GRAPHITE.block(), 'R', ModBlocks.rbmk_rod_reasim, 'B', ANY_RESISTANTALLOY.ingot() });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.rbmk_outgasser, 1), new Object[] { "GHG", "GRG", "GTG", 'G', ModBlocks.steel_grate, 'H', Blocks.hopper, 'T', ModItems.tank_steel, 'R', ModBlocks.rbmk_blank });
|
||||
|
||||
@ -333,6 +333,7 @@ public class ResourceManager {
|
||||
public static final ResourceLocation pheo_blast_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/blast_door.png");
|
||||
public static IModelCustomNamed pheo_blast_door = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/pheodoors/blast_door.obj")).asVBO();
|
||||
public static final ResourceLocation pheo_containment_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/containment_door.png");
|
||||
public static final ResourceLocation pheo_containment_door_trefoil_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/containment_door_trefoil.png");
|
||||
public static IModelCustomNamed pheo_containment_door = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/pheodoors/containment_door.obj")).asVBO();
|
||||
public static final ResourceLocation pheo_seal_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/seal_door.png");
|
||||
public static IModelCustomNamed pheo_seal_door = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/pheodoors/seal_door.obj")).asVBO();
|
||||
@ -344,6 +345,7 @@ public class ResourceManager {
|
||||
public static final ResourceLocation pheo_vehicle_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/vehicle_door.png");
|
||||
public static IModelCustomNamed pheo_vehicle_door = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/pheodoors/vehicle_door.obj")).asVBO();
|
||||
public static final ResourceLocation pheo_water_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/water_door.png");
|
||||
public static final ResourceLocation pheo_water_door_clean_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/water_door_clean.png");
|
||||
public static IModelCustomNamed pheo_water_door = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/pheodoors/water_door.obj")).asVBO();
|
||||
public static final ResourceLocation pheo_vault_door_3 = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/vault/vault_door_3.png");
|
||||
public static final ResourceLocation pheo_vault_door_4 = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/vault/vault_door_4.png");
|
||||
|
||||
@ -5,6 +5,7 @@ import org.lwjgl.opengl.GL11;
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.blocks.machine.rbmk.RBMKBase;
|
||||
import com.hbm.blocks.machine.rbmk.RBMKPipedBase;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.util.ObjUtil;
|
||||
|
||||
@ -24,7 +25,7 @@ public class RenderRBMKControl implements ISimpleBlockRenderingHandler {
|
||||
GL11.glPushMatrix();
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
RBMKBase.renderLid = RBMKBase.LID_NONE;
|
||||
IIcon iicon = block.getIcon(0, 0);
|
||||
IIcon iicon = block.getIcon(1, 0);
|
||||
tessellator.setColorOpaque_F(1, 1, 1);
|
||||
|
||||
if(renderer.hasOverrideBlockTexture()) {
|
||||
@ -46,6 +47,7 @@ public class RenderRBMKControl implements ISimpleBlockRenderingHandler {
|
||||
if(i < 3) GL11.glTranslated(0, 1, 0);
|
||||
}
|
||||
|
||||
RBMKPipedBase.renderPipes = true;
|
||||
tessellator.startDrawingQuads();
|
||||
renderer.setRenderBounds(0.0625, 0, 0.0625, 0.4375, 0.125, 0.4375);
|
||||
tessellator.setNormal(0F, 1F, 0F); renderer.renderFaceYPos(block, -0.5, 1, -0.5, block.getIcon(ForgeDirection.UP.ordinal(), 0));
|
||||
@ -72,6 +74,7 @@ public class RenderRBMKControl implements ISimpleBlockRenderingHandler {
|
||||
tessellator.setNormal(0F, 0F, 1F); renderer.renderFaceZPos(block, -0.5, 1, -0.5, block.getIcon(ForgeDirection.EAST.ordinal(), 0));
|
||||
tessellator.setNormal(0F, 0F, -1F); renderer.renderFaceZNeg(block, -0.5, 1, -0.5, block.getIcon(ForgeDirection.WEST.ordinal(), 0));
|
||||
tessellator.draw();
|
||||
RBMKPipedBase.renderPipes = false;
|
||||
|
||||
if(block != ModBlocks.rbmk_boiler && block != ModBlocks.rbmk_heater) {
|
||||
tessellator.startDrawingQuads();
|
||||
@ -113,6 +116,7 @@ public class RenderRBMKControl implements ISimpleBlockRenderingHandler {
|
||||
}
|
||||
|
||||
if(!hasLid) {
|
||||
RBMKPipedBase.renderPipes = true;
|
||||
renderer.setRenderBounds(0.0625, 0, 0.0625, 0.4375, 0.125, 0.4375);
|
||||
renderer.renderStandardBlock(block, x, y + 1, z);
|
||||
renderer.setRenderBounds(0.0625, 0, 0.5625, 0.4375, 0.125, 0.9375);
|
||||
@ -121,6 +125,7 @@ public class RenderRBMKControl implements ISimpleBlockRenderingHandler {
|
||||
renderer.renderStandardBlock(block, x, y + 1, z);
|
||||
renderer.setRenderBounds(0.5625, 0, 0.0625, 0.9375, 0.125, 0.4375);
|
||||
renderer.renderStandardBlock(block, x, y + 1, z);
|
||||
RBMKPipedBase.renderPipes = false;
|
||||
}
|
||||
} else {
|
||||
}
|
||||
|
||||
@ -40,12 +40,15 @@ public class RenderRBMKRod implements ISimpleBlockRenderingHandler {
|
||||
tessellator.startDrawingQuads();
|
||||
ObjUtil.renderPartWithIcon((HFRWavefrontObject) ResourceManager.rbmk_element, "Inner", rod.inner, tessellator, 0, false);
|
||||
ObjUtil.renderPartWithIcon((HFRWavefrontObject) ResourceManager.rbmk_element, "Cap", iicon, tessellator, 0, false);
|
||||
ObjUtil.renderPartWithIcon((HFRWavefrontObject) ResourceManager.rbmk_element_rods, "Rods", rod.fuel, tessellator, 0, false);
|
||||
tessellator.setNormal(-1F, 0F, 0F); renderer.renderFaceXNeg(block, -0.5, 0, -0.5, sideIcon);
|
||||
tessellator.setNormal(1F, 0F, 0F); renderer.renderFaceXPos(block, -0.5, 0, -0.5, sideIcon);
|
||||
tessellator.setNormal(0F, 0F, -1F); renderer.renderFaceZNeg(block, -0.5, 0, -0.5, sideIcon);
|
||||
tessellator.setNormal(0F, 0F, 1F); renderer.renderFaceZPos(block, -0.5, 0, -0.5, sideIcon);
|
||||
tessellator.draw();
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setColorOpaque_I(0x304825);
|
||||
ObjUtil.renderPartWithIcon((HFRWavefrontObject) ResourceManager.rbmk_element_rods, "Rods", rod.fuel, tessellator, 0, false);
|
||||
tessellator.draw();
|
||||
GL11.glTranslated(0, 1, 0);
|
||||
}
|
||||
|
||||
|
||||
@ -112,7 +112,7 @@ public class ItemRenderLibraryDoors {
|
||||
}
|
||||
public void renderCommon() {
|
||||
GL11.glRotated(90, 0, 1, 0);
|
||||
bindTexture(ResourceManager.pheo_water_door_tex);
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(DoorDecl.WATER_DOOR.getCyclingSkins());
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
ResourceManager.pheo_water_door.renderAll();
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
@ -164,7 +164,7 @@ public class ItemRenderLibraryDoors {
|
||||
GL11.glScaled(3.8, 3.8, 3.8);
|
||||
}
|
||||
public void renderCommon() {
|
||||
bindTexture(ResourceManager.pheo_containment_door_tex);
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(DoorDecl.QE_CONTAINMENT.getCyclingSkins());
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
ResourceManager.pheo_containment_door.renderAll();
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
|
||||
@ -6,6 +6,7 @@ import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.item.ItemRenderBase;
|
||||
import com.hbm.tileentity.machine.albion.TileEntityPABeamline;
|
||||
|
||||
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||
import net.minecraft.item.Item;
|
||||
@ -29,9 +30,25 @@ public class RenderPABeamline extends TileEntitySpecialRenderer implements IItem
|
||||
case 2: GL11.glRotatef(90, 0F, 1F, 0F); break;
|
||||
}
|
||||
|
||||
TileEntityPABeamline beamline = (TileEntityPABeamline) tile;
|
||||
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
bindTexture(ResourceManager.pa_beamline_tex);
|
||||
ResourceManager.pa_beamline.renderAll();
|
||||
|
||||
if(!beamline.window) {
|
||||
ResourceManager.pa_beamline.renderPart("Beamline");
|
||||
} else {
|
||||
ResourceManager.pa_beamline.renderPart("BeamlineWindow");
|
||||
|
||||
float flash = beamline.prevLight + (beamline.light - beamline.prevLight) * f;
|
||||
GL11.glColor3f(0.9F * flash, 0.9F * flash, 1.0F * flash);
|
||||
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
||||
RenderArcFurnace.fullbright(true);
|
||||
ResourceManager.pa_beamline.renderPart("BeamlineGlass");
|
||||
RenderArcFurnace.fullbright(false);
|
||||
GL11.glEnable(GL11.GL_TEXTURE_2D);
|
||||
GL11.glColor3f(1F, 1F, 1F);
|
||||
}
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
|
||||
GL11.glPopMatrix();
|
||||
@ -53,7 +70,7 @@ public class RenderPABeamline extends TileEntitySpecialRenderer implements IItem
|
||||
GL11.glRotated(90, 0, 1, 0);
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
bindTexture(ResourceManager.pa_beamline_tex);
|
||||
ResourceManager.pa_beamline.renderAll();
|
||||
ResourceManager.pa_beamline.renderPart("Beamline");
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
}};
|
||||
}
|
||||
|
||||
@ -5,6 +5,7 @@ import org.lwjgl.opengl.GL11;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKRod;
|
||||
import com.hbm.util.ColorUtil;
|
||||
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||
@ -20,11 +21,13 @@ public class RenderRBMKFuelChannel extends TileEntitySpecialRenderer {
|
||||
|
||||
boolean hasRod = false;
|
||||
boolean cherenkov = false;
|
||||
int color = 0;
|
||||
|
||||
if(te instanceof TileEntityRBMKRod) {
|
||||
TileEntityRBMKRod rod = (TileEntityRBMKRod) te;
|
||||
if(rod.hasRod) hasRod = true;
|
||||
if(rod.fluxQuantity > 5) cherenkov = true;
|
||||
color = rod.rodColor;
|
||||
}
|
||||
|
||||
GL11.glPushMatrix();
|
||||
@ -50,12 +53,14 @@ public class RenderRBMKFuelChannel extends TileEntitySpecialRenderer {
|
||||
if(hasRod) {
|
||||
GL11.glPushMatrix();
|
||||
bindTexture(texture_rods);
|
||||
GL11.glColor3f(ColorUtil.fr(color), ColorUtil.fg(color), ColorUtil.fb(color));
|
||||
|
||||
for(int j = 0; j <= offset; j++) {
|
||||
ResourceManager.rbmk_element_rods_vbo.renderPart("Rods");
|
||||
GL11.glTranslated(0, 1, 0);
|
||||
}
|
||||
|
||||
|
||||
GL11.glColor3f(1F, 1F, 1F);
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
|
||||
@ -5,6 +5,7 @@ import java.nio.DoubleBuffer;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.tileentity.DoorDecl;
|
||||
import com.hbm.tileentity.TileEntityDoorGeneric;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
@ -16,8 +17,8 @@ public class RenderContainmentDoor implements IRenderDoors {
|
||||
|
||||
@Override
|
||||
public void render(TileEntityDoorGeneric door, DoubleBuffer buf) {
|
||||
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.pheo_containment_door_tex);
|
||||
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(DoorDecl.QE_CONTAINMENT.getSkinFromIndex(door.getSkinIndex()));
|
||||
|
||||
double maxRaise = 2.25;
|
||||
double raise = 0;
|
||||
|
||||
@ -5,6 +5,7 @@ import java.nio.DoubleBuffer;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.tileentity.DoorDecl;
|
||||
import com.hbm.tileentity.TileEntityDoorGeneric;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
@ -15,8 +16,8 @@ public class RenderWaterDoor implements IRenderDoors {
|
||||
|
||||
@Override
|
||||
public void render(TileEntityDoorGeneric door, DoubleBuffer buf) {
|
||||
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.pheo_water_door_tex);
|
||||
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(DoorDecl.WATER_DOOR.getSkinFromIndex(door.getSkinIndex()));
|
||||
|
||||
double maxRot = 120;
|
||||
double rot = 0;
|
||||
|
||||
@ -418,6 +418,18 @@ public abstract class DoorDecl {
|
||||
return null;
|
||||
}
|
||||
|
||||
public ResourceLocation[] skins;
|
||||
|
||||
@SideOnly(Side.CLIENT) @Override public ResourceLocation[] getSEDNASkins() {
|
||||
if(skins == null) skins = new ResourceLocation[] {
|
||||
ResourceManager.pheo_containment_door_tex,
|
||||
ResourceManager.pheo_containment_door_trefoil_tex
|
||||
};
|
||||
return skins;
|
||||
}
|
||||
|
||||
@Override public int getSkinCount() { return 2; }
|
||||
|
||||
@Override public int timeToOpen() { return 160; };
|
||||
@Override public int[][] getDoorOpenRanges() { return new int[][] { { -1, 0, 0, 3, 3, 1 } }; }
|
||||
@Override public int[] getDimensions() { return new int[] { 2, 0, 0, 0, 1, 1 }; }
|
||||
@ -457,6 +469,18 @@ public abstract class DoorDecl {
|
||||
return null;
|
||||
}
|
||||
|
||||
public ResourceLocation[] skins;
|
||||
|
||||
@SideOnly(Side.CLIENT) @Override public ResourceLocation[] getSEDNASkins() {
|
||||
if(skins == null) skins = new ResourceLocation[] {
|
||||
ResourceManager.pheo_water_door_tex,
|
||||
ResourceManager.pheo_water_door_clean_tex
|
||||
};
|
||||
return skins;
|
||||
}
|
||||
|
||||
@Override public int getSkinCount() { return 2; }
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open, boolean forCollision) {
|
||||
if(!open) return AxisAlignedBB.getBoundingBox(0, 0, 0.75, 1, 1, 1);
|
||||
|
||||
@ -24,7 +24,7 @@ import com.hbm.tileentity.IFluidCopiable;
|
||||
import com.hbm.tileentity.TileEntityLoadedBase;
|
||||
import com.hbm.util.fauxpointtwelve.DirPos;
|
||||
|
||||
import api.hbm.fluid.IFluidStandardTransceiver;
|
||||
import api.hbm.fluidmk2.IFluidStandardTransceiverMK2;
|
||||
import api.hbm.tile.IHeatSource;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
@ -36,7 +36,7 @@ import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.world.EnumSkyBlock;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IBufPacketReceiver, IFluidStandardTransceiver, IConfigurableMachine, IFluidCopiable {
|
||||
public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IBufPacketReceiver, IFluidStandardTransceiverMK2, IConfigurableMachine, IFluidCopiable {
|
||||
|
||||
public int heat;
|
||||
public FluidTank[] tanks;
|
||||
@ -267,7 +267,7 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IBufPa
|
||||
private void sendFluid() {
|
||||
|
||||
for(DirPos pos : getConPos()) {
|
||||
this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir().getOpposite());
|
||||
this.tryProvide(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -19,7 +19,7 @@ import com.hbm.tileentity.IFluidCopiable;
|
||||
import com.hbm.tileentity.TileEntityLoadedBase;
|
||||
import com.hbm.util.fauxpointtwelve.DirPos;
|
||||
|
||||
import api.hbm.fluid.IFluidStandardTransceiver;
|
||||
import api.hbm.fluidmk2.IFluidStandardTransceiverMK2;
|
||||
import api.hbm.tile.IHeatSource;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
@ -30,7 +30,7 @@ import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.world.EnumSkyBlock;
|
||||
|
||||
public class TileEntityHeatBoilerIndustrial extends TileEntityLoadedBase implements IBufPacketReceiver, IFluidStandardTransceiver, IConfigurableMachine, IFluidCopiable {
|
||||
public class TileEntityHeatBoilerIndustrial extends TileEntityLoadedBase implements IBufPacketReceiver, IFluidStandardTransceiverMK2, IConfigurableMachine, IFluidCopiable {
|
||||
|
||||
public int heat;
|
||||
public FluidTank[] tanks;
|
||||
@ -232,7 +232,7 @@ public class TileEntityHeatBoilerIndustrial extends TileEntityLoadedBase impleme
|
||||
private void sendFluid() {
|
||||
|
||||
for(DirPos pos : getConPos()) {
|
||||
this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir().getOpposite());
|
||||
this.tryProvide(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,15 +1,65 @@
|
||||
package com.hbm.tileentity.machine.albion;
|
||||
|
||||
import com.hbm.tileentity.TileEntityLoadedBase;
|
||||
import com.hbm.tileentity.machine.albion.TileEntityPASource.Particle;
|
||||
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityPABeamline extends TileEntity implements IParticleUser {
|
||||
public class TileEntityPABeamline extends TileEntityLoadedBase implements IParticleUser {
|
||||
|
||||
public boolean window = false;
|
||||
public boolean didPass = false;
|
||||
public float light;
|
||||
public float prevLight;
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
|
||||
if(worldObj.isRemote) {
|
||||
|
||||
this.prevLight = this.light;
|
||||
if(this.light > 0) this.light -= 0.25F;
|
||||
|
||||
if(this.light > this.prevLight) this.prevLight = this.light;
|
||||
|
||||
} else {
|
||||
this.networkPackNT(150);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serialize(ByteBuf buf) {
|
||||
super.serialize(buf);
|
||||
buf.writeBoolean(window);
|
||||
buf.writeBoolean(didPass);
|
||||
didPass = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserialize(ByteBuf buf) {
|
||||
super.deserialize(buf);
|
||||
this.window = buf.readBoolean();
|
||||
this.didPass = buf.readBoolean();
|
||||
if(didPass) light = 2F;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
super.readFromNBT(nbt);
|
||||
this.window = nbt.getBoolean("window");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound nbt) {
|
||||
super.writeToNBT(nbt);
|
||||
nbt.setBoolean("window", window);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canParticleEnter(Particle particle, ForgeDirection dir, int x, int y, int z) {
|
||||
@ -21,6 +71,7 @@ public class TileEntityPABeamline extends TileEntity implements IParticleUser {
|
||||
@Override
|
||||
public void onEnter(Particle particle, ForgeDirection dir) {
|
||||
particle.addDistance(3);
|
||||
this.didPass = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -27,6 +27,7 @@ import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
@ -78,7 +79,10 @@ public class TileEntityPASource extends TileEntityCooledBase implements IGUIProv
|
||||
if(!worldObj.isRemote) {
|
||||
this.power = Library.chargeTEFromItems(slots, 0, power, this.getMaxPower());
|
||||
|
||||
for(int i = 0; i < 10; i++) {
|
||||
int steps = 1;
|
||||
if(this.particle != null) steps = 1 + MathHelper.clamp_int(this.particle.momentum / 1_000, 0, 9);
|
||||
|
||||
for(int i = 0; i < steps; i++) {
|
||||
if(particle != null) {
|
||||
this.state = PAState.RUNNING;
|
||||
steppy();
|
||||
|
||||
@ -39,7 +39,8 @@ public class RBMKDials {
|
||||
KEY_ABSORBER_EFFICIENCY("dialAbsorberEfficiency", 1.0),
|
||||
KEY_REFLECTOR_EFFICIENCY("dialReflectorEfficiency", 1.0),
|
||||
KEY_DISABLE_DEPLETION("dialDisableDepletion", false),
|
||||
KEY_DISABLE_XENON("dialDisableXenon", false);
|
||||
KEY_DISABLE_XENON("dialDisableXenon", false),
|
||||
KEY_ABSORBER_HEAT_CONVERSION("dialAbsorberHeatConversion", 0.05);
|
||||
|
||||
public final String keyString;
|
||||
public final Object defValue;
|
||||
@ -109,6 +110,7 @@ public class RBMKDials {
|
||||
gameRules.get(RBMKKeys.KEY_ENABLE_MELTDOWN_OVERPRESSURE).add(new Tuple.Pair<>(world, world.getGameRules().getGameRuleBooleanValue(RBMKKeys.KEY_ENABLE_MELTDOWN_OVERPRESSURE.keyString)));
|
||||
gameRules.get(RBMKKeys.KEY_MODERATOR_EFFICIENCY).add(new Tuple.Pair<>(world, GameRuleHelper.getClampedDouble(world, RBMKKeys.KEY_MODERATOR_EFFICIENCY, 0.0D, 1.0D)));
|
||||
gameRules.get(RBMKKeys.KEY_ABSORBER_EFFICIENCY).add(new Tuple.Pair<>(world, GameRuleHelper.getClampedDouble(world, RBMKKeys.KEY_ABSORBER_EFFICIENCY, 0.0D, 1.0D)));
|
||||
gameRules.get(RBMKKeys.KEY_ABSORBER_HEAT_CONVERSION).add(new Tuple.Pair<>(world, GameRuleHelper.getClampedDouble(world, RBMKKeys.KEY_ABSORBER_HEAT_CONVERSION, 0.0D, 1.0D)));
|
||||
gameRules.get(RBMKKeys.KEY_REFLECTOR_EFFICIENCY).add(new Tuple.Pair<>(world, GameRuleHelper.getClampedDouble(world, RBMKKeys.KEY_REFLECTOR_EFFICIENCY, 0.0D, 1.0D)));
|
||||
gameRules.get(RBMKKeys.KEY_DISABLE_DEPLETION).add(new Tuple.Pair<>(world, world.getGameRules().getGameRuleBooleanValue(RBMKKeys.KEY_DISABLE_DEPLETION.keyString)));
|
||||
gameRules.get(RBMKKeys.KEY_DISABLE_XENON).add(new Tuple.Pair<>(world, world.getGameRules().getGameRuleBooleanValue(RBMKKeys.KEY_DISABLE_XENON.keyString)));
|
||||
@ -347,6 +349,15 @@ public class RBMKDials {
|
||||
return (double) getGameRule(world, RBMKKeys.KEY_ABSORBER_EFFICIENCY);
|
||||
}
|
||||
|
||||
/**
|
||||
* How many °C are generated per one flux that hits an absorber.
|
||||
* @param world
|
||||
* @return
|
||||
*/
|
||||
public static double getAbsorberHeatConversion(World world) {
|
||||
return (double) getGameRule(world, RBMKKeys.KEY_ABSORBER_HEAT_CONVERSION);
|
||||
}
|
||||
|
||||
/**
|
||||
* The percentage of neutron to reflect when a stream hits a reflector column.
|
||||
* @param world
|
||||
|
||||
@ -1,8 +1,12 @@
|
||||
package com.hbm.tileentity.machine.rbmk;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType;
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.handler.neutron.RBMKNeutronHandler.RBMKType;
|
||||
import com.hbm.interfaces.NotableComments;
|
||||
|
||||
import api.hbm.energymk2.IEnergyReceiverMK2;
|
||||
import cpw.mods.fml.common.Optional;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
@ -13,19 +17,42 @@ import li.cil.oc.api.machine.Context;
|
||||
import li.cil.oc.api.network.SimpleComponent;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
@NotableComments
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase implements SimpleComponent, CompatHandler.OCComponent {
|
||||
public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase implements SimpleComponent, CompatHandler.OCComponent, IEnergyReceiverMK2 {
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public double lastLevel;
|
||||
public double level;
|
||||
public static final double speed = 0.00277D; // it takes around 18 seconds for the thing to fully extend
|
||||
public double targetLevel;
|
||||
|
||||
public boolean hasPower = false;;
|
||||
public long power;
|
||||
public static final long consumption = 5_000;
|
||||
public static final long maxPower = consumption * 10; // enough buffer for half a second of movement
|
||||
|
||||
public TileEntityRBMKControl() {
|
||||
super(0);
|
||||
}
|
||||
|
||||
public boolean isPowered() {
|
||||
return this.getBlockType() == ModBlocks.rbmk_control_reasim || this.getBlockType() == ModBlocks.rbmk_control_reasim_auto;
|
||||
}
|
||||
|
||||
@Override public long getPower() { return power; }
|
||||
@Override public void setPower(long power) { this.power = power; }
|
||||
@Override public long getMaxPower() { return isPowered() ? this.maxPower : 0; }
|
||||
|
||||
@Override public boolean canConnect(ForgeDirection dir) {
|
||||
return isPowered() ? dir == ForgeDirection.DOWN : false;
|
||||
}
|
||||
|
||||
@Override public ConnectionPriority getPriority() {
|
||||
return ConnectionPriority.LOW; // high would make more sense, but i am a sadistic asshole
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isLidRemovable() {
|
||||
@ -39,15 +66,30 @@ public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase im
|
||||
this.lastLevel = this.level;
|
||||
|
||||
} else {
|
||||
|
||||
if(level < targetLevel) {
|
||||
level += speed * RBMKDials.getControlSpeed(worldObj);
|
||||
if(level > targetLevel) level = targetLevel;
|
||||
|
||||
this.hasPower = true;
|
||||
|
||||
if(this.isPowered()) {
|
||||
this.trySubscribe(worldObj, xCoord, yCoord - 1, zCoord, ForgeDirection.DOWN);
|
||||
if(this.power < consumption) this.hasPower = false;
|
||||
}
|
||||
|
||||
if(level > targetLevel) {
|
||||
level -= speed * RBMKDials.getControlSpeed(worldObj);
|
||||
if(level < targetLevel) level = targetLevel;
|
||||
this.lastLevel = this.level;
|
||||
|
||||
if(this.hasPower) {
|
||||
if(level < targetLevel) {
|
||||
level += speed * RBMKDials.getControlSpeed(worldObj);
|
||||
if(level > targetLevel) level = targetLevel;
|
||||
}
|
||||
|
||||
if(level > targetLevel) {
|
||||
level -= speed * RBMKDials.getControlSpeed(worldObj);
|
||||
if(level < targetLevel) level = targetLevel;
|
||||
}
|
||||
|
||||
if(this.isPowered() && level != lastLevel) {
|
||||
this.power -= this.consumption;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -88,6 +130,8 @@ public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase im
|
||||
super.serialize(buf);
|
||||
buf.writeDouble(this.level);
|
||||
buf.writeDouble(this.targetLevel);
|
||||
buf.writeLong(this.power);
|
||||
buf.writeBoolean(this.hasPower);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -95,6 +139,8 @@ public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase im
|
||||
super.deserialize(buf);
|
||||
this.level = buf.readDouble();
|
||||
this.targetLevel = buf.readDouble();
|
||||
this.power = buf.readLong();
|
||||
this.hasPower = buf.readBoolean();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -53,6 +53,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM
|
||||
public double lastFluxRatio;
|
||||
|
||||
public boolean hasRod;
|
||||
public int rodColor = 0;
|
||||
|
||||
// Fuel rod item data client sync
|
||||
private String fuelYield;
|
||||
@ -95,6 +96,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM
|
||||
if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) {
|
||||
|
||||
ItemRBMKRod rod = ((ItemRBMKRod)slots[0].getItem());
|
||||
this.rodColor = rod.colorTint;
|
||||
|
||||
double fluxRatioOut;
|
||||
double fluxQuantityOut;
|
||||
@ -260,6 +262,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM
|
||||
buf.writeDouble(this.lastFluxQuantity);
|
||||
buf.writeDouble(this.lastFluxRatio);
|
||||
buf.writeBoolean(this.hasRod);
|
||||
buf.writeInt(this.rodColor);
|
||||
if(this.hasRod) {
|
||||
ItemRBMKRod rod = ((ItemRBMKRod)slots[0].getItem());
|
||||
BufferUtil.writeString(buf, ItemRBMKRod.getYield(slots[0]) + " / " + rod.yield + " (" + (ItemRBMKRod.getEnrichment(slots[0]) * 100) + "%)");
|
||||
@ -276,6 +279,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM
|
||||
this.fluxQuantity = buf.readDouble();
|
||||
this.fluxFastRatio = buf.readDouble();
|
||||
this.hasRod = buf.readBoolean();
|
||||
this.rodColor = buf.readInt();
|
||||
if(this.hasRod) {
|
||||
fuelYield = BufferUtil.readString(buf);
|
||||
fuelXenon = BufferUtil.readString(buf);
|
||||
|
||||
@ -1,6 +1,146 @@
|
||||
# Blender v2.79 (sub 0) OBJ File: 'beamline.blend'
|
||||
# www.blender.org
|
||||
o Cube_Cube.001
|
||||
o BeamlineGlass
|
||||
v 0.375000 0.750000 -1.000000
|
||||
v 0.375000 0.250000 -1.000000
|
||||
v 0.375000 0.250000 1.000000
|
||||
v 0.375000 0.750000 1.000000
|
||||
v -0.375000 0.250000 -1.000000
|
||||
v -0.375000 0.250000 1.000000
|
||||
v -0.375000 0.750000 1.000000
|
||||
v -0.375000 0.750000 -1.000000
|
||||
vt 0.700000 0.437500
|
||||
vt 0.300000 0.312500
|
||||
vt 0.700000 0.312500
|
||||
vt 0.300000 0.812427
|
||||
vt 0.700000 0.937597
|
||||
vt 0.300000 0.937427
|
||||
vt 0.300000 0.437500
|
||||
vt 0.700000 0.812597
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
s off
|
||||
f 1/1/1 3/2/1 2/3/1
|
||||
f 7/4/2 5/5/2 6/6/2
|
||||
f 1/1/1 4/7/1 3/2/1
|
||||
f 7/4/2 8/8/2 5/5/2
|
||||
o BeamlineWindow
|
||||
v -0.500000 0.250000 1.000000
|
||||
v -0.500000 0.750000 1.000000
|
||||
v -0.500000 0.250000 -1.000000
|
||||
v -0.500000 0.750000 -1.000000
|
||||
v 0.500000 0.250000 1.000000
|
||||
v 0.500000 0.750000 1.000000
|
||||
v 0.500000 0.250000 -1.000000
|
||||
v 0.500000 0.750000 -1.000000
|
||||
v 0.500000 1.000000 -1.500000
|
||||
v 0.500000 0.000000 -1.500000
|
||||
v 0.500000 0.000000 1.500000
|
||||
v 0.500000 1.000000 1.500000
|
||||
v 0.375000 0.750000 -1.000000
|
||||
v 0.375000 0.250000 -1.000000
|
||||
v 0.375000 0.250000 1.000000
|
||||
v 0.375000 0.750000 1.000000
|
||||
v -0.500000 0.000000 -1.500000
|
||||
v -0.500000 0.000000 1.500000
|
||||
v -0.500000 1.000000 1.500000
|
||||
v -0.500000 1.000000 -1.500000
|
||||
v -0.375000 0.250000 -1.000000
|
||||
v -0.375000 0.250000 1.000000
|
||||
v -0.375000 0.750000 1.000000
|
||||
v -0.375000 0.750000 -1.000000
|
||||
vt 0.700000 0.812597
|
||||
vt 0.300000 0.843677
|
||||
vt 0.300000 0.812427
|
||||
vt 0.800000 0.500000
|
||||
vt 1.000000 0.250000
|
||||
vt 1.000000 0.500000
|
||||
vt 0.300000 0.312469
|
||||
vt 0.325000 0.437500
|
||||
vt 0.300000 0.437469
|
||||
vt 0.200000 0.250000
|
||||
vt 0.000000 0.500000
|
||||
vt 0.000000 0.250000
|
||||
vt 0.800000 0.250000
|
||||
vt 0.200000 0.000000
|
||||
vt 0.800000 0.000000
|
||||
vt 0.800000 0.750000
|
||||
vt 0.200000 0.500000
|
||||
vt 0.800000 0.500000
|
||||
vt 0.700000 0.312500
|
||||
vt 0.700000 0.437500
|
||||
vt 0.200000 0.250000
|
||||
vt 0.300000 0.343750
|
||||
vt 0.700000 0.406250
|
||||
vt 0.675000 0.312492
|
||||
vt 0.700000 0.937597
|
||||
vt 0.200000 1.000000
|
||||
vt 0.300000 0.937427
|
||||
vt 0.300000 0.937458
|
||||
vt 0.200000 0.750000
|
||||
vt 0.300000 0.812458
|
||||
vt 0.800000 1.000000
|
||||
vt 0.700000 0.906347
|
||||
vt 0.675000 0.812597
|
||||
vt 0.325000 0.937427
|
||||
vt 0.700000 0.843847
|
||||
vt 0.800000 0.250000
|
||||
vt 0.325000 0.312500
|
||||
vt 0.200000 0.500000
|
||||
vt 0.700000 0.343750
|
||||
vt 0.300000 0.406250
|
||||
vt 0.675000 0.437492
|
||||
vt 0.300000 0.906177
|
||||
vt 0.675000 0.937597
|
||||
vt 0.325000 0.812427
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
s off
|
||||
f 12/9/3 31/10/3 10/11/3
|
||||
f 28/12/4 18/13/4 25/14/4
|
||||
f 13/15/4 24/16/4 14/17/4
|
||||
f 20/18/5 26/19/5 19/20/5
|
||||
f 18/21/3 26/22/3 25/23/3
|
||||
f 28/24/6 20/25/6 17/26/6
|
||||
f 15/27/7 17/26/7 16/28/7
|
||||
f 13/15/7 18/21/7 15/27/7
|
||||
f 16/28/7 20/25/7 14/17/7
|
||||
f 14/17/7 19/29/7 13/15/7
|
||||
f 15/27/6 23/30/6 13/15/6
|
||||
f 14/17/3 21/31/3 16/28/3
|
||||
f 16/28/5 22/32/5 15/27/5
|
||||
f 11/33/8 26/34/8 9/35/8
|
||||
f 9/36/8 27/37/8 10/38/8
|
||||
f 10/11/8 28/24/8 12/9/8
|
||||
f 12/9/8 25/39/8 11/33/8
|
||||
f 9/35/6 29/40/6 11/33/6
|
||||
f 11/33/5 32/41/5 12/9/5
|
||||
f 10/38/4 30/42/4 9/36/4
|
||||
f 12/9/3 32/43/3 31/10/3
|
||||
f 28/12/4 17/44/4 18/13/4
|
||||
f 13/15/4 23/45/4 24/16/4
|
||||
f 20/18/5 27/46/5 26/19/5
|
||||
f 18/21/3 19/29/3 26/22/3
|
||||
f 28/24/6 27/37/6 20/25/6
|
||||
f 15/27/7 18/21/7 17/26/7
|
||||
f 13/15/7 19/29/7 18/21/7
|
||||
f 16/28/7 17/26/7 20/25/7
|
||||
f 14/17/7 20/25/7 19/29/7
|
||||
f 15/27/6 22/47/6 23/30/6
|
||||
f 14/17/3 24/48/3 21/31/3
|
||||
f 16/28/5 21/49/5 22/32/5
|
||||
f 11/33/8 25/39/8 26/34/8
|
||||
f 9/36/8 26/34/8 27/37/8
|
||||
f 10/11/8 27/37/8 28/24/8
|
||||
f 12/9/8 28/24/8 25/39/8
|
||||
f 9/35/6 30/50/6 29/40/6
|
||||
f 11/33/5 29/51/5 32/41/5
|
||||
f 10/38/4 31/52/4 30/42/4
|
||||
o Beamline
|
||||
v -0.500000 0.000000 1.500000
|
||||
v -0.500000 1.000000 1.500000
|
||||
v -0.500000 0.000000 -1.500000
|
||||
@ -30,15 +170,15 @@ vn 0.0000 0.0000 1.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
s off
|
||||
f 2/1/1 3/2/1 1/3/1
|
||||
f 4/4/2 7/5/2 3/6/2
|
||||
f 8/7/3 5/8/3 7/9/3
|
||||
f 6/10/4 1/11/4 5/12/4
|
||||
f 7/13/5 1/3/5 3/2/5
|
||||
f 4/4/6 6/10/6 8/7/6
|
||||
f 2/1/1 4/4/1 3/2/1
|
||||
f 4/4/2 8/7/2 7/5/2
|
||||
f 8/7/3 6/10/3 5/8/3
|
||||
f 6/10/4 2/1/4 1/11/4
|
||||
f 7/13/5 5/14/5 1/3/5
|
||||
f 4/4/6 2/1/6 6/10/6
|
||||
f 34/53/9 35/54/9 33/55/9
|
||||
f 36/56/10 39/57/10 35/58/10
|
||||
f 40/59/11 37/60/11 39/61/11
|
||||
f 38/62/12 33/63/12 37/64/12
|
||||
f 39/65/13 33/55/13 35/54/13
|
||||
f 36/56/14 38/62/14 40/59/14
|
||||
f 34/53/9 36/56/9 35/54/9
|
||||
f 36/56/10 40/59/10 39/57/10
|
||||
f 40/59/11 38/62/11 37/60/11
|
||||
f 38/62/12 34/53/12 33/63/12
|
||||
f 39/65/13 37/66/13 33/55/13
|
||||
f 36/56/14 34/53/14 38/62/14
|
||||
|
||||
|
Before Width: | Height: | Size: 204 B After Width: | Height: | Size: 188 B |
|
Before Width: | Height: | Size: 307 B After Width: | Height: | Size: 285 B |
|
Before Width: | Height: | Size: 188 B After Width: | Height: | Size: 204 B |
|
Before Width: | Height: | Size: 285 B After Width: | Height: | Size: 307 B |
|
Before Width: | Height: | Size: 370 B After Width: | Height: | Size: 360 B |
|
Before Width: | Height: | Size: 410 B After Width: | Height: | Size: 486 B |
|
Before Width: | Height: | Size: 142 B |
|
Before Width: | Height: | Size: 215 B |
|
Before Width: | Height: | Size: 142 B |
|
Before Width: | Height: | Size: 215 B |
|
Before Width: | Height: | Size: 142 B |
|
Before Width: | Height: | Size: 215 B |
|
After Width: | Height: | Size: 558 B |
|
After Width: | Height: | Size: 121 B |
|
After Width: | Height: | Size: 167 B |
|
After Width: | Height: | Size: 425 B |
|
After Width: | Height: | Size: 417 B |
|
After Width: | Height: | Size: 558 B |
|
After Width: | Height: | Size: 121 B |
|
After Width: | Height: | Size: 167 B |
|
After Width: | Height: | Size: 425 B |
|
After Width: | Height: | Size: 417 B |
|
Before Width: | Height: | Size: 216 B After Width: | Height: | Size: 232 B |
|
Before Width: | Height: | Size: 216 B After Width: | Height: | Size: 232 B |
|
Before Width: | Height: | Size: 216 B After Width: | Height: | Size: 232 B |
|
Before Width: | Height: | Size: 216 B After Width: | Height: | Size: 232 B |
|
Before Width: | Height: | Size: 204 B After Width: | Height: | Size: 188 B |
|
Before Width: | Height: | Size: 307 B After Width: | Height: | Size: 285 B |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 4.1 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 19 KiB |