more RBMK gui work, meltdown mechanics, debris blocks

This commit is contained in:
Bob 2021-04-18 23:44:34 +02:00
parent 82ca248049
commit 693756653e
49 changed files with 2875 additions and 2022 deletions

View File

@ -142,6 +142,7 @@ public class ModBlocks {
public static Block block_waste;
public static Block block_waste_painted;
public static Block ancient_scrap;
public static Block block_corium;
public static Block block_scrap;
public static Block block_electrical_scrap;
public static Block block_beryllium;
@ -169,6 +170,8 @@ public class ModBlocks {
public static Block block_white_phosphorus;
public static Block block_red_phosphorus;
public static Block block_fallout;
public static Block block_graphite;
public static Block block_boron;
public static Block block_lanthanium;
public static Block block_actinium;
public static Block block_tritium;
@ -854,6 +857,7 @@ public class ModBlocks {
public static final int guiID_rbmk_boiler = 114;
public static final int guiID_rbmk_control = 115;
public static final int guiID_rbmk_console = 116;
public static Block pribris;
public static Block book_guide;
@ -908,6 +912,10 @@ public class ModBlocks {
public static Fluid schrabidic_fluid;
public static final Material fluidschrabidic = (new MaterialLiquid(MapColor.cyanColor));
public static Block corium_block;
public static Fluid corium_fluid;
public static final Material fluidcorium = (new MaterialLiquid(MapColor.brownColor));
public static Block dummy_block_igenerator;
public static Block dummy_port_igenerator;
public static Block dummy_block_centrifuge;
@ -1075,12 +1083,13 @@ public class ModBlocks {
block_waste = new BlockNuclearWaste().setDisplayEffect(ExtDisplayEffect.RADFOG).addRadiation(ItemHazard.wst * ItemHazard.block).toBlock().setBlockName("block_waste").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_waste");
block_waste_painted = new BlockNuclearWaste().setDisplayEffect(ExtDisplayEffect.RADFOG).addRadiation(ItemHazard.wst * ItemHazard.block).toBlock().setBlockName("block_waste_painted").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_waste_painted");
ancient_scrap = new BlockOutgas(Material.iron, true, 1, true, true).addRadiation(150F).toBlock().setBlockName("ancient_scrap").setCreativeTab(MainRegistry.blockTab).setHardness(100.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":ancient_scrap");
block_corium = new BlockOutgas(Material.iron, true, 1, true, true).addRadiation(150F).toBlock().setBlockName("block_corium").setCreativeTab(MainRegistry.blockTab).setHardness(100.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":block_corium");
block_scrap = new BlockFalling(Material.sand).setBlockName("block_scrap").setCreativeTab(MainRegistry.blockTab).setHardness(2.5F).setResistance(5.0F).setStepSound(Block.soundTypeGravel).setBlockTextureName(RefStrings.MODID + ":block_scrap");
block_electrical_scrap = new BlockFalling(Material.iron).setBlockName("block_electrical_scrap").setCreativeTab(MainRegistry.blockTab).setHardness(2.5F).setResistance(5.0F).setStepSound(Block.soundTypeMetal).setBlockTextureName(RefStrings.MODID + ":electrical_scrap_alt2");
block_beryllium = new BlockGeneric(Material.iron).setBlockName("block_beryllium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_beryllium");
block_schraranium = new BlockHazard().setDisplayEffect(ExtDisplayEffect.SCHRAB).addRadiation(ItemHazard.sr * ItemHazard.block).toBlock().setBlockName("block_schraranium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_schraranium");
block_schrabidium = new BlockHazard().setDisplayEffect(ExtDisplayEffect.SCHRAB).addRadiation(ItemHazard.sa326 * ItemHazard.block).toBlock().setBlockName("block_schrabidium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_schrabidium");
block_schrabidate = new BlockHazard().setDisplayEffect(ExtDisplayEffect.SCHRAB).addRadiation(ItemHazard.sa326 * ItemHazard.block).toBlock().setBlockName("block_schrabidate").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_schrabidate");
block_schraranium = new BlockHazard().setDisplayEffect(ExtDisplayEffect.SCHRAB).addRadiation(ItemHazard.sr * ItemHazard.block).addBlinding().toBlock().setBlockName("block_schraranium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_schraranium");
block_schrabidium = new BlockHazard().setDisplayEffect(ExtDisplayEffect.SCHRAB).addRadiation(ItemHazard.sa326 * ItemHazard.block).addBlinding().toBlock().setBlockName("block_schrabidium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_schrabidium");
block_schrabidate = new BlockHazard().setDisplayEffect(ExtDisplayEffect.SCHRAB).addRadiation(ItemHazard.sa326 * ItemHazard.block).addBlinding().toBlock().setBlockName("block_schrabidate").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_schrabidate");
block_solinium = new BlockHazard().setDisplayEffect(ExtDisplayEffect.SCHRAB).addRadiation(ItemHazard.sa327 * ItemHazard.block).toBlock().setBlockName("block_solinium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_solinium");
block_schrabidium_fuel = new BlockHazard().setDisplayEffect(ExtDisplayEffect.SCHRAB).addRadiation(ItemHazard.saf * ItemHazard.block).toBlock().setBlockName("block_schrabidium_fuel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_schrabidium_fuel");
block_euphemium = new BlockGeneric(Material.iron).setBlockName("block_euphemium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(60000.0F).setBlockTextureName(RefStrings.MODID + ":block_euphemium");
@ -1102,6 +1111,8 @@ public class ModBlocks {
block_white_phosphorus = new BlockHazard(Material.rock).addFire(15).toBlock().setBlockName("block_white_phosphorus").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_white_phosphorus");
block_red_phosphorus = new BlockHazardFalling().addFire(15).toBlock().setStepSound(Block.soundTypeSand).setBlockName("block_red_phosphorus").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_red_phosphorus");
block_fallout = new BlockHazardFalling().addRadiation(ItemHazard.fo * ItemHazard.block).toBlock().setStepSound(Block.soundTypeGravel).setBlockName("block_fallout").setCreativeTab(MainRegistry.blockTab).setHardness(0.2F).setBlockTextureName(RefStrings.MODID + ":ash");
block_graphite = new BlockFlammable(Material.iron, 30, 5).setBlockName("block_graphite").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_graphite");
block_boron = new BlockGeneric(Material.iron).setBlockName("block_boron").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_boron");
block_lanthanium = new BlockGeneric(Material.iron).setBlockName("block_lanthanium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_lanthanium");
block_actinium = new BlockGeneric(Material.iron).setBlockName("block_actinium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_actinium");
block_tritium = new BlockRotatablePillar(Material.glass, RefStrings.MODID + ":block_tritium_top").setBlockName("block_tritium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGlass).setHardness(3.0F).setResistance(2.0F).setBlockTextureName(RefStrings.MODID + ":block_tritium_side");
@ -1567,6 +1578,7 @@ public class ModBlocks {
rbmk_absorber = new RBMKAbsorber().setBlockName("rbmk_absorber").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_absorber");
rbmk_moderator = new RBMKModerator().setBlockName("rbmk_moderator").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_moderator");
rbmk_console = new RBMKConsole().setBlockName("rbmk_console").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_console");
pribris = new RBMKDebris().setBlockName("pribris").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_debris");
book_guide = new Guide(Material.iron).setBlockName("book_guide").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.nukeTab);
@ -1681,6 +1693,10 @@ public class ModBlocks {
FluidRegistry.registerFluid(schrabidic_fluid);
schrabidic_block = new SchrabidicBlock(schrabidic_fluid, fluidschrabidic.setReplaceable(), ModDamageSource.radiation).setBlockName("schrabidic_block").setResistance(500F);
corium_fluid = new SchrabidicFluid().setDensity(6000).setViscosity(500).setLuminosity(10).setTemperature(600).setUnlocalizedName("corium_fluid");
FluidRegistry.registerFluid(corium_fluid);
corium_block = new CoriumBlock(corium_fluid, fluidcorium).setBlockName("corium_block").setResistance(500F);
dummy_block_igenerator = new DummyBlockIGenerator(Material.iron).setBlockName("dummy_block_igenerator").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel");
dummy_port_igenerator = new DummyBlockIGenerator(Material.iron).setBlockName("dummy_port_igenerator").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel");
dummy_block_centrifuge = new DummyBlockCentrifuge(Material.iron).setBlockName("dummy_block_centrifuge").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel");
@ -1864,6 +1880,8 @@ public class ModBlocks {
GameRegistry.registerBlock(block_scrap, block_scrap.getUnlocalizedName());
GameRegistry.registerBlock(block_electrical_scrap, block_electrical_scrap.getUnlocalizedName());
GameRegistry.registerBlock(block_fallout, ItemBlockHazard.class, block_fallout.getUnlocalizedName());
GameRegistry.registerBlock(block_graphite, block_graphite.getUnlocalizedName());
GameRegistry.registerBlock(block_boron, block_boron.getUnlocalizedName());
GameRegistry.registerBlock(block_insulator, block_insulator.getUnlocalizedName());
GameRegistry.registerBlock(block_fiberglass, block_fiberglass.getUnlocalizedName());
GameRegistry.registerBlock(block_asbestos, ItemBlockHazard.class, block_asbestos.getUnlocalizedName());
@ -1871,6 +1889,7 @@ public class ModBlocks {
GameRegistry.registerBlock(block_waste, ItemBlockHazard.class, block_waste.getUnlocalizedName());
GameRegistry.registerBlock(block_waste_painted, ItemBlockHazard.class, block_waste_painted.getUnlocalizedName());
GameRegistry.registerBlock(ancient_scrap, ItemBlockHazard.class, ancient_scrap.getUnlocalizedName());
GameRegistry.registerBlock(block_corium, ItemBlockHazard.class, block_corium.getUnlocalizedName());
GameRegistry.registerBlock(block_schraranium, ItemBlockSchrabidium.class, block_schraranium.getUnlocalizedName());
GameRegistry.registerBlock(block_schrabidium, ItemBlockSchrabidium.class, block_schrabidium.getUnlocalizedName());
GameRegistry.registerBlock(block_schrabidate, ItemBlockSchrabidium.class, block_schrabidate.getUnlocalizedName());
@ -2220,6 +2239,7 @@ public class ModBlocks {
GameRegistry.registerBlock(rbmk_absorber, rbmk_absorber.getUnlocalizedName());
GameRegistry.registerBlock(rbmk_moderator, rbmk_moderator.getUnlocalizedName());
GameRegistry.registerBlock(rbmk_console, rbmk_console.getUnlocalizedName());
GameRegistry.registerBlock(pribris, pribris.getUnlocalizedName());
//GameRegistry.registerBlock(rbmk_console, rbmk_console.getUnlocalizedName());
GameRegistry.registerBlock(red_cable, red_cable.getUnlocalizedName());
@ -2440,6 +2460,7 @@ public class ModBlocks {
GameRegistry.registerBlock(acid_block, acid_block.getUnlocalizedName());
GameRegistry.registerBlock(toxic_block, toxic_block.getUnlocalizedName());
GameRegistry.registerBlock(schrabidic_block, schrabidic_block.getUnlocalizedName());
GameRegistry.registerBlock(corium_block, corium_block.getUnlocalizedName());
//Multiblock Dummy Blocks
GameRegistry.registerBlock(dummy_block_igenerator, dummy_block_igenerator.getUnlocalizedName());

View File

@ -0,0 +1,82 @@
package com.hbm.blocks.fluid;
import java.util.Random;
import com.hbm.blocks.ModBlocks;
import com.hbm.lib.RefStrings;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.Entity;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.fluids.BlockFluidClassic;
import net.minecraftforge.fluids.Fluid;
public class CoriumBlock extends BlockFluidClassic {
@SideOnly(Side.CLIENT)
public static IIcon stillIcon;
@SideOnly(Side.CLIENT)
public static IIcon flowingIcon;
public Random rand = new Random();
public CoriumBlock(Fluid fluid, Material material) {
super(fluid, material);
setQuantaPerBlock(5);
setCreativeTab(null);
displacements.put(this, false);
this.tickRate = 30;
this.setTickRandomly(true);
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int meta) {
return (side == 0 || side == 1) ? stillIcon : flowingIcon;
}
@Override
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister register) {
stillIcon = register.registerIcon(RefStrings.MODID + ":corium_still");
flowingIcon = register.registerIcon(RefStrings.MODID + ":corium_flowing");
}
@Override
public boolean canDisplace(IBlockAccess world, int x, int y, int z) {
if(world.getBlock(x, y, z).getMaterial().isLiquid()) {
return false;
}
return super.canDisplace(world, x, y, z);
}
@Override
public boolean displaceIfPossible(World world, int x, int y, int z) {
if(world.getBlock(x, y, z).getMaterial().isLiquid()) {
return false;
}
return super.displaceIfPossible(world, x, y, z);
}
@Override
public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) {
entity.setInWeb();
}
@Override
public void updateTick(World world, int x, int y, int z, Random rand) {
super.updateTick(world, x, y, z, rand);
if(!world.isRemote && rand.nextInt(10) == 0 && this.isSourceBlock(world, x, y, z)) {
world.setBlock(x, y, z, ModBlocks.block_corium);
}
}
}

View File

@ -0,0 +1,26 @@
package com.hbm.blocks.generic;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.common.util.ForgeDirection;
public class BlockFlammable extends Block {
private int encouragement;
private int flammability;
public BlockFlammable(Material mat, int en, int flam) {
super(mat);
this.encouragement = en;
this.flammability = flam;
}
public int getFlammability(IBlockAccess world, int x, int y, int z, ForgeDirection face) {
return flammability;
}
public int getFireSpreadSpeed(IBlockAccess world, int x, int y, int z, ForgeDirection face) {
return encouragement;
}
}

View File

@ -9,7 +9,10 @@ public class RBMKAbsorber extends RBMKBase {
@Override
public TileEntity createNewTileEntity(World world, int meta) {
return new TileEntityRBMKAbsorber();
if(meta >= this.offset)
return new TileEntityRBMKAbsorber();
return null;
}
@Override

View File

@ -9,7 +9,10 @@ public class RBMKBlank extends RBMKBase {
@Override
public TileEntity createNewTileEntity(World world, int meta) {
return new TileEntityRBMKBlank();
if(meta >= this.offset)
return new TileEntityRBMKBlank();
return null;
}
@Override

View File

@ -16,7 +16,6 @@ public class RBMKBoiler extends RBMKBase {
if(meta >= this.offset)
return new TileEntityRBMKBoiler();
return null;
}

View File

@ -2,10 +2,8 @@ package com.hbm.blocks.machine.rbmk;
import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.ModBlocks;
import com.hbm.blocks.machine.BlockMachineBase;
import com.hbm.handler.MultiblockHandlerXR;
import com.hbm.main.MainRegistry;
import com.hbm.tileentity.machine.TileEntityMachinePlasmaHeater;
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
@ -24,7 +22,7 @@ public class RBMKConsole extends BlockDummyable {
@Override
public TileEntity createNewTileEntity(World world, int meta) {
if(meta >= 12)
if(meta >= this.offset)
return new TileEntityRBMKConsole();
return null;

View File

@ -11,7 +11,10 @@ public class RBMKControl extends RBMKBase {
@Override
public TileEntity createNewTileEntity(World world, int meta) {
return new TileEntityRBMKControl();
if(meta >= this.offset)
return new TileEntityRBMKControl();
return null;
}
@Override

View File

@ -9,7 +9,10 @@ public class RBMKControlAuto extends RBMKBase {
@Override
public TileEntity createNewTileEntity(World world, int meta) {
return new TileEntityRBMKControl();
if(meta >= this.offset)
return new TileEntityRBMKControl();
return null;
}
@Override

View File

@ -0,0 +1,52 @@
package com.hbm.blocks.machine.rbmk;
import java.util.Random;
import com.hbm.main.MainRegistry;
import cpw.mods.fml.client.registry.RenderingRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.init.Blocks;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
public class RBMKDebris extends Block {
public RBMKDebris() {
super(Material.iron);
}
public static int renderID = RenderingRegistry.getNextAvailableRenderId();
@Override
public int getRenderType(){
return this.renderID;
}
@Override
public boolean isOpaqueCube() {
return false;
}
@Override
public boolean renderAsNormalBlock() {
return false;
}
@SideOnly(Side.CLIENT)
public void randomDisplayTick(World world, int x, int y, int z, Random rand) {
if(world.getBlock(x, y + 1, z) == Blocks.air && rand.nextInt(100) == 0) {
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "rbmkflame");
data.setInteger("maxAge", 300);
data.setDouble("posX", x + 0.5);
data.setDouble("posY", y + 1.75);
data.setDouble("posZ", z + 0.5);
MainRegistry.proxy.effectNT(data);
}
}
}

View File

@ -9,7 +9,10 @@ public class RBMKModerator extends RBMKBase {
@Override
public TileEntity createNewTileEntity(World world, int meta) {
return new TileEntityRBMKModerator();
if(meta >= this.offset)
return new TileEntityRBMKModerator();
return null;
}
@Override

View File

@ -9,7 +9,10 @@ public class RBMKReflector extends RBMKBase {
@Override
public TileEntity createNewTileEntity(World world, int meta) {
return new TileEntityRBMKReflector();
if(meta >= this.offset)
return new TileEntityRBMKReflector();
return null;
}
@Override

View File

@ -1,10 +1,8 @@
package com.hbm.blocks.machine.rbmk;
import com.hbm.blocks.ModBlocks;
import com.hbm.main.MainRegistry;
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKRod;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;

View File

@ -16,7 +16,7 @@ import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ResourceLocation;
public class GUIRBMKBoiler extends GuiContainer {
public class GUIRBMKBoiler extends GuiInfoContainer {
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/reactors/gui_rbmk_boiler.png");
private TileEntityRBMKBoiler boiler;
@ -28,6 +28,15 @@ public class GUIRBMKBoiler extends GuiContainer {
this.xSize = 176;
this.ySize = 186;
}
@Override
public void drawScreen(int mouseX, int mouseY, float f) {
super.drawScreen(mouseX, mouseY, f);
boiler.feed.renderTankInfo(this, mouseX, mouseY, guiLeft + 126, guiTop + 24, 16, 56);
boiler.steam.renderTankInfo(this, mouseX, mouseY, guiLeft + 89, guiTop + 39, 8, 28);
}
@Override
protected void mouseClicked(int x, int y, int i) {
@ -56,6 +65,16 @@ public class GUIRBMKBoiler extends GuiContainer {
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
int i = boiler.feed.getFill() * 58 / boiler.feed.getMaxFill();
drawTexturedModalRect(guiLeft + 126, guiTop + 82 - i, 176, 58 - i, 14, i);
int j = boiler.feed.getFill() * 22 / boiler.feed.getMaxFill();
if(j > 0) j++;
if(j > 22) j++;
drawTexturedModalRect(guiLeft + 91, guiTop + 65 - j, 190, 24 - j, 4, j);
switch(boiler.steam.getTankType()) {
case STEAM: drawTexturedModalRect(guiLeft + 36, guiTop + 24, 194, 0, 14, 58); break;
case HOTSTEAM: drawTexturedModalRect(guiLeft + 36, guiTop + 24, 208, 0, 14, 58); break;

View File

@ -897,6 +897,7 @@ public class ModItems {
public static Item rod_dual_coolant;
public static Item rod_quad_coolant;
public static Item rbmk_lid;
public static Item rbmk_fuel_empty;
public static Item rbmk_fuel_meu;
public static Item rbmk_fuel_thmeu;
@ -1558,6 +1559,7 @@ public class ModItems {
public static Item defuser;
public static Item reacher;
public static Item meltdown_tool;
public static Item flame_pony;
public static Item flame_conspiracy;
@ -3125,6 +3127,7 @@ public class ModItems {
rod_dual_tritium = new ItemHazard(1F).setUnlocalizedName("rod_dual_tritium").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_dual_empty).setTextureName(RefStrings.MODID + ":rod_dual_tritium");
rod_quad_tritium = new ItemHazard(2F).setUnlocalizedName("rod_quad_tritium").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_quad_empty).setTextureName(RefStrings.MODID + ":rod_quad_tritium");
rbmk_lid = new Item().setUnlocalizedName("rbmk_lid").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rbmk_lid");
rbmk_fuel_empty = new Item().setUnlocalizedName("rbmk_fuel_empty").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rbmk_fuel_empty");
rbmk_fuel_meu = new ItemRBMKRod("Medium Enriched Uranium")
.setYield(100000000D)
@ -3765,6 +3768,7 @@ public class ModItems {
defuser = new Item().setUnlocalizedName("defuser").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":defuser");
reacher = new Item().setUnlocalizedName("reacher").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":reacher");
meltdown_tool = new ItemDyatlov().setUnlocalizedName("meltdown_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":meltdown_tool");
flame_pony = new ItemCustomLore().setUnlocalizedName("flame_pony").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":flame_pony");
flame_conspiracy = new ItemCustomLore().setUnlocalizedName("flame_conspiracy").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":flame_conspiracy");
@ -5802,6 +5806,7 @@ public class ModItems {
GameRegistry.registerItem(rod_dual_waste, rod_dual_waste.getUnlocalizedName());
GameRegistry.registerItem(rod_quad_waste, rod_quad_waste.getUnlocalizedName());
GameRegistry.registerItem(rbmk_lid, rbmk_lid.getUnlocalizedName());
GameRegistry.registerItem(rbmk_fuel_empty, rbmk_fuel_empty.getUnlocalizedName());
GameRegistry.registerItem(rbmk_fuel_meu, rbmk_fuel_meu.getUnlocalizedName());
GameRegistry.registerItem(rbmk_fuel_thmeu, rbmk_fuel_thmeu.getUnlocalizedName());
@ -6807,6 +6812,7 @@ public class ModItems {
GameRegistry.registerItem(meteor_remote, meteor_remote.getUnlocalizedName());
GameRegistry.registerItem(defuser, defuser.getUnlocalizedName());
GameRegistry.registerItem(reacher, reacher.getUnlocalizedName());
GameRegistry.registerItem(meltdown_tool, meltdown_tool.getUnlocalizedName());
GameRegistry.registerItem(hazmat_helmet, hazmat_helmet.getUnlocalizedName());
GameRegistry.registerItem(hazmat_plate, hazmat_plate.getUnlocalizedName());

View File

@ -90,12 +90,13 @@ public class ItemRBMKRod extends ItemHazard {
inFlux += selfRate;
inFlux *= (1D - getPoisonLevel(stack));
double xenon = getPoison(stack);
xenon += xenonGenFunc(inFlux);
xenon -= xenonBurnFunc(inFlux);
inFlux *= (1D - getPoisonLevel(stack));
xenon += xenonGenFunc(inFlux);
if(xenon < 0D) xenon = 0D;
if(xenon > 100D) xenon = 100D;
@ -193,7 +194,7 @@ public class ItemRBMKRod extends ItemHazard {
list.add(EnumChatFormatting.RED + I18nUtil.resolveKey("trait.rbmx.source"));
}
list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey("trait.rbmx.depletion", ((int)(((yield - getYield(stack)) / yield) * 10000)) / 10000D + "%"));
list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey("trait.rbmx.depletion", ((int)(((yield - getYield(stack)) / yield) * 1000)) / 1000D + "%"));
list.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKey("trait.rbmx.xenon", ((getPoison(stack) * 100D) / 100D) + "%"));
list.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("trait.rbmx.splitsWith", I18nUtil.resolveKey(nType.unlocalized + ".x")));
list.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("trait.rbmx.splitsInto", I18nUtil.resolveKey(rType.unlocalized + ".x")));
@ -212,7 +213,7 @@ public class ItemRBMKRod extends ItemHazard {
list.add(EnumChatFormatting.RED + I18nUtil.resolveKey("trait.rbmk.source"));
}
list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey("trait.rbmk.depletion", ((int)(((yield - getYield(stack)) / yield) * 10000)) / 10000D + "%"));
list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey("trait.rbmk.depletion", ((int)(((yield - getYield(stack)) / yield) * 1000D)) / 1000D + "%"));
list.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKey("trait.rbmk.xenon", ((getPoison(stack) * 100D) / 100D) + "%"));
list.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("trait.rbmk.splitsWith", I18nUtil.resolveKey(nType.unlocalized)));
list.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("trait.rbmk.splitsInto", I18nUtil.resolveKey(rType.unlocalized)));

View File

@ -0,0 +1,38 @@
package com.hbm.items.tool;
import com.hbm.blocks.machine.rbmk.RBMKBase;
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
public class ItemDyatlov extends Item {
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int i, float f0, float f1, float f2) {
if(!world.isRemote) {
if(world.getBlock(x, y, z) instanceof RBMKBase) {
RBMKBase rbmk = (RBMKBase)world.getBlock(x, y, z);
int[] pos = rbmk.findCore(world, x, y, z);
if(pos != null) {
TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]);
if(te instanceof TileEntityRBMKBase) {
((TileEntityRBMKBase)te).meltdown();
}
}
}
}
return false;
}
}

View File

@ -207,6 +207,7 @@ public class ClientProxy extends ServerProxy {
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityITERStruct.class, new RenderITERMultiblock());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPlasmaStruct.class, new RenderPlasmaMultiblock());
//RBMK
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKControl.class, new RenderRBMKControlRod());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKConsole.class, new RenderRBMKConsole());
//ITER
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityITER.class, new RenderITER());
@ -540,6 +541,7 @@ public class ClientProxy extends ServerProxy {
RenderingRegistry.registerBlockHandler(new RenderRBMKRod());
RenderingRegistry.registerBlockHandler(new RenderRBMKReflector());
RenderingRegistry.registerBlockHandler(new RenderRBMKControl());
RenderingRegistry.registerBlockHandler(new RenderPribris());
}
@Override
@ -1235,6 +1237,12 @@ public class ClientProxy extends ServerProxy {
Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleRift(man, world, x, y, z));
}
if("rbmkflame".equals(type)) {
int maxAge = data.getInteger("maxAge");
Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleRBMKFlame(man, world, x, y, z, maxAge));
}
if("anim".equals(type)) {
if("crucible".equals(data.getString("mode")) && player.getHeldItem() != null) {

View File

@ -995,6 +995,7 @@ public class ResourceManager {
public static final IModelCustom rbmk_reflector = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/rbmk/rbmk_reflector.obj"));
public static final IModelCustom rbmk_rods = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/rbmk/rbmk_rods.obj"));
public static final IModelCustom rbmk_console = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/rbmk_console.obj"));
public static final IModelCustom rbmk_debris = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/rbmk/debris.obj"));
public static final ResourceLocation rbmk_console_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/rbmk_control.png");
}

View File

@ -113,10 +113,10 @@ public class ParticleMukeCloud extends EntityFX {
float pY = (float) (this.prevPosY + (this.posY - this.prevPosY) * (double) interp - interpPosY);
float pZ = (float) (this.prevPosZ + (this.posZ - this.prevPosZ) * (double) interp - interpPosZ);
tess.addVertexWithUV((double) (pX - x * this.particleScale - tx * this.particleScale), (double) (pY - y * this.particleScale), (double) (pZ - z * this.particleScale - tz * this.particleScale), uMax, vMax);
tess.addVertexWithUV((double) (pX - x * this.particleScale + tx * this.particleScale), (double) (pY + y * this.particleScale), (double) (pZ - z * this.particleScale + tz * this.particleScale), uMax, vMin);
tess.addVertexWithUV((double) (pX + x * this.particleScale + tx * this.particleScale), (double) (pY + y * this.particleScale), (double) (pZ + z * this.particleScale + tz * this.particleScale), uMin, vMin);
tess.addVertexWithUV((double) (pX + x * this.particleScale - tx * this.particleScale), (double) (pY - y * this.particleScale), (double) (pZ + z * this.particleScale - tz * this.particleScale), uMin, vMax);
tess.addVertexWithUV((double) (pX - x * this.particleScale - tx * this.particleScale), (double) (pY - 1 * this.particleScale), (double) (pZ - z * this.particleScale - tz * this.particleScale), uMax, vMax);
tess.addVertexWithUV((double) (pX - x * this.particleScale + tx * this.particleScale), (double) (pY + 1 * this.particleScale), (double) (pZ - z * this.particleScale + tz * this.particleScale), uMax, vMin);
tess.addVertexWithUV((double) (pX + x * this.particleScale + tx * this.particleScale), (double) (pY + 1 * this.particleScale), (double) (pZ + z * this.particleScale + tz * this.particleScale), uMin, vMin);
tess.addVertexWithUV((double) (pX + x * this.particleScale - tx * this.particleScale), (double) (pY - 1 * this.particleScale), (double) (pZ + z * this.particleScale - tz * this.particleScale), uMin, vMax);
tess.draw();

View File

@ -0,0 +1,101 @@
package com.hbm.particle;
import org.lwjgl.opengl.GL11;
import com.hbm.lib.RefStrings;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.Minecraft;
import net.minecraft.client.particle.EntityFX;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.texture.TextureManager;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
@SideOnly(Side.CLIENT)
public class ParticleRBMKFlame extends EntityFX {
private static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/particle/rbmk_fire.png");
private TextureManager theRenderEngine;
public ParticleRBMKFlame(TextureManager texman, World world, double x, double y, double z, int maxAge) {
super(world, x, y, z);
this.theRenderEngine = texman;
this.particleMaxAge = maxAge;
}
public int getFXLayer() {
return 3;
}
public void renderParticle(Tessellator tess, float interp, float x, float y, float z, float tx, float tz) {
this.theRenderEngine.bindTexture(getTexture());
GL11.glPushMatrix();
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glEnable(GL11.GL_BLEND);
GL11.glAlphaFunc(GL11.GL_GREATER, 0);
GL11.glDepthMask(false);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE);
RenderHelper.disableStandardItemLighting();
if(this.particleAge > this.particleMaxAge)
this.particleAge = this.particleMaxAge;
int texIndex = this.particleAge * 5 % 14;
float f0 = 1F / 14F;
float uMin = texIndex % 5 * f0;
float uMax = uMin + f0;
float vMin = 0;
float vMax = 1;
tess.startDrawingQuads();
tess.setNormal(0.0F, 1.0F, 0.0F);
tess.setBrightness(240);
this.particleAlpha = 1F;
if(this.particleAge < 20) {
this.particleAlpha = this.particleAge / 20F;
}
if(this.particleAge > this.particleMaxAge - 20) {
this.particleAlpha = (this.particleMaxAge - this.particleAge) / 20F;
}
this.particleScale = 1;
tess.setColorRGBA_F(1.0F, 1.0F, 1.0F, this.particleAlpha);
float pX = (float) (this.prevPosX + (this.posX - this.prevPosX) * (double) interp - interpPosX);
float pY = (float) (this.prevPosY + (this.posY - this.prevPosY) * (double) interp - interpPosY);
float pZ = (float) (this.prevPosZ + (this.posZ - this.prevPosZ) * (double) interp - interpPosZ);
GL11.glTranslatef(pX + x, pY + y, pZ + z);
GL11.glRotatef(-RenderManager.instance.playerViewY, 0.0F, 1.0F, 0.0F);
tess.addVertexWithUV((double) (-this.particleScale - 1), (double) (-this.particleScale * 2), (double) (0), uMax, vMax);
tess.addVertexWithUV((double) (-this.particleScale - 1), (double) (this.particleScale * 2), (double) 0, uMax, vMin);
tess.addVertexWithUV((double) (this.particleScale - 1), (double) (this.particleScale * 2), (double) (0), uMin, vMin);
tess.addVertexWithUV((double) (this.particleScale - 1), (double) (-this.particleScale * 2), (double) (0), uMin, vMax);
tess.draw();
GL11.glPolygonOffset(0.0F, 0.0F);
GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glPopMatrix();
}
protected ResourceLocation getTexture() {
return texture;
}
}

View File

@ -0,0 +1,70 @@
package com.hbm.render.block;
import org.lwjgl.opengl.GL11;
import com.hbm.blocks.machine.rbmk.RBMKDebris;
import com.hbm.main.ResourceManager;
import com.hbm.render.util.ObjUtil;
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.client.model.obj.WavefrontObject;
public class RenderPribris implements ISimpleBlockRenderingHandler {
@Override
public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) {
GL11.glPushMatrix();
Tessellator tessellator = Tessellator.instance;
IIcon iicon = block.getIcon(0, 0);
tessellator.setColorOpaque_F(1, 1, 1);
if (renderer.hasOverrideBlockTexture())
{
iicon = renderer.overrideBlockTexture;
}
GL11.glTranslated(0, -0.5, 0);
tessellator.startDrawingQuads();
ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rbmk_debris, iicon, tessellator, 0, false);
tessellator.draw();
GL11.glPopMatrix();
}
@Override
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) {
Tessellator tessellator = Tessellator.instance;
IIcon iicon = block.getIcon(0, world.getBlockMetadata(x, y, z));
tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z));
tessellator.setColorOpaque_F(1, 1, 1);
if (renderer.hasOverrideBlockTexture())
{
iicon = renderer.overrideBlockTexture;
}
tessellator.addTranslation(x + 0.5F, y, z + 0.5F);
ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rbmk_debris, iicon, tessellator, 0, true);
tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F);
return true;
}
@Override
public boolean shouldRender3DInInventory(int modelId) {
return true;
}
@Override
public int getRenderId() {
return RBMKDebris.renderID;
}
}

View File

@ -10,7 +10,6 @@ import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.init.Blocks;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.client.model.obj.WavefrontObject;
@ -29,7 +28,7 @@ public class RenderRBMKControl implements ISimpleBlockRenderingHandler {
iicon = renderer.overrideBlockTexture;
}
GL11.glTranslated(0, -0.675, 0);
GL11.glTranslated(0, -0.75, 0);
GL11.glScalef(0.35F, 0.35F, 0.35F);
for(int i = 0; i < 4; i++) {
@ -40,8 +39,10 @@ public class RenderRBMKControl implements ISimpleBlockRenderingHandler {
if(i < 3)
GL11.glTranslated(0, 1, 0);
}
tessellator.startDrawingQuads();
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.rbmk_rods, "Lid", iicon, tessellator, 0, true);
tessellator.draw();
GL11.glPopMatrix();
}
@ -62,11 +63,11 @@ public class RenderRBMKControl implements ISimpleBlockRenderingHandler {
tessellator.addTranslation(x + 0.5F, y, z + 0.5F);
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.rbmk_rods, "Column", iicon, tessellator, 0, true);
if(world.getBlock(x, y + 1, z) == Blocks.air) {
/*if(world.getBlock(x, y + 1, z) == Blocks.air) {
//tessellator.addTranslation(0, 0.125F, 0);
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.rbmk_rods, "Lid", iicon, tessellator, 0, true);
//tessellator.addTranslation(0, -0.125F, 0);
}
}*/
//if(world.getBlock(x, y + 1, z) == Blocks.air)
// ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.rbmk_element, "Lid", ModBlocks.rbmk_rod.getIcon(0, 0), tessellator, 0, true);

View File

@ -42,7 +42,7 @@ public class RenderTaintBlock implements ISimpleBlockRenderingHandler {
double d4 = (double)iicon.getMinV();
double d0 = (double)iicon.getMaxU();
double d1 = (double)iicon.getMaxV();
double d2 = 0.05000000074505806D;
double d2 = 0.05D;
renderer.blockAccess.getBlockMetadata(x, y, z);
if (side2)

View File

@ -0,0 +1,37 @@
package com.hbm.render.tileentity;
import org.lwjgl.opengl.GL11;
import com.hbm.lib.RefStrings;
import com.hbm.main.ResourceManager;
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControl;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
public class RenderRBMKControlRod extends TileEntitySpecialRenderer {
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_control.png");
@Override
public void renderTileEntityAt(TileEntity te, double x, double y, double z, float i) {
GL11.glPushMatrix();
GL11.glTranslated(x + 0.5, y + 3, z + 0.5);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glEnable(GL11.GL_CULL_FACE);
TileEntityRBMKControl control = (TileEntityRBMKControl)te;
bindTexture(texture);
double level = control.lastLevel + (control.level - control.lastLevel) * i;
GL11.glTranslated(0, level, 0);
ResourceManager.rbmk_rods.renderPart("Lid");
GL11.glPopMatrix();
}
}

View File

@ -2,11 +2,13 @@ package com.hbm.tileentity.machine.rbmk;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.lwjgl.opengl.GL11;
import com.hbm.blocks.ModBlocks;
import com.hbm.blocks.machine.rbmk.RBMKBase;
import com.hbm.packet.NBTPacket;
import com.hbm.packet.PacketDispatcher;
@ -19,8 +21,10 @@ import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.init.Blocks;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MathHelper;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
import net.minecraftforge.client.event.RenderGameOverlayEvent;
@ -220,4 +224,90 @@ public abstract class TileEntityRBMKBase extends TileEntity implements INBTPacke
Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons);
}
}
public void onOverheat() {
for(int i = 0; i < 4; i++) {
worldObj.setBlock(xCoord, yCoord + i, zCoord, Blocks.lava);
}
}
public void onMelt(int reduce) {
reduce = MathHelper.clamp_int(reduce, 1, 3);
if(worldObj.rand.nextInt(3) == 0)
reduce++;
for(int i = 3; i >= 0; i--) {
if(i <= 4 - reduce) {
if(reduce > 1 && i == 4 - reduce && worldObj.rand.nextInt(3) == 0)
worldObj.setBlock(xCoord, yCoord + i, zCoord, ModBlocks.corium_block);
else
worldObj.setBlock(xCoord, yCoord + i, zCoord, ModBlocks.pribris);
} else {
worldObj.setBlock(xCoord, yCoord + i, zCoord, Blocks.air);
}
worldObj.markBlockForUpdate(xCoord, yCoord + i, zCoord);
}
}
public static HashSet<TileEntityRBMKBase> columns = new HashSet();
public void meltdown() {
columns.clear();
getFF(xCoord, yCoord, zCoord);
int minX = xCoord;
int maxX = xCoord;
int minZ = zCoord;
int maxZ = zCoord;
//set meltdown bounds
for(TileEntityRBMKBase rbmk : columns) {
if(rbmk.xCoord < minX)
minX = rbmk.xCoord;
if(rbmk.xCoord > maxX)
maxX = rbmk.xCoord;
if(rbmk.zCoord < minZ)
minZ = rbmk.zCoord;
if(rbmk.zCoord > maxZ)
maxZ = rbmk.zCoord;
}
for(TileEntityRBMKBase rbmk : columns) {
int distFromMinX = rbmk.xCoord - minX;
int distFromMaxX = maxX - rbmk.xCoord;
int distFromMinZ = rbmk.zCoord - minZ;
int distFromMaxZ = maxZ - rbmk.zCoord;
int minDist = Math.min(distFromMinX, Math.min(distFromMaxX, Math.min(distFromMinZ, distFromMaxZ)));
rbmk.onMelt(minDist + 1);
}
}
private void getFF(int x, int y, int z) {
TileEntity te = worldObj.getTileEntity(x, y, z);
if(te instanceof TileEntityRBMKBase) {
TileEntityRBMKBase rbmk = (TileEntityRBMKBase) te;
if(!columns.contains(rbmk)) {
columns.add(rbmk);
getFF(x + 1, y, z);
getFF(x - 1, y, z);
getFF(x, y, z + 1);
getFF(x, y, z - 1);
}
}
}
}

View File

@ -147,6 +147,7 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I
return Vec3.createVectorHelper(xCoord - player.posX, yCoord - player.posY, zCoord - player.posZ).lengthVector() < 20;
}
@SuppressWarnings("incomplete-switch") //shut the up
@Override
public void receiveControl(NBTTagCompound data) {

View File

@ -2,12 +2,17 @@ package com.hbm.tileentity.machine.rbmk;
import com.hbm.interfaces.IControlReceiver;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.Vec3;
public class TileEntityRBMKControl extends TileEntityRBMKSlottedBase implements IControlReceiver {
@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;
@ -30,7 +35,11 @@ public class TileEntityRBMKControl extends TileEntityRBMKSlottedBase implements
@Override
public void updateEntity() {
if(!worldObj.isRemote) {
if(worldObj.isRemote) {
this.lastLevel = this.level;
} else {
if(level < targetLevel) {
@ -98,6 +107,17 @@ public class TileEntityRBMKControl extends TileEntityRBMKSlottedBase implements
nbt.setInteger("color", color.ordinal());
}
@Override
public AxisAlignedBB getRenderBoundingBox() {
return AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord + 1, yCoord + 10, zCoord + 1);
}
@Override
@SideOnly(Side.CLIENT)
public double getMaxRenderDistanceSquared() {
return 65536.0D;
}
public static enum RBMKColor {
RED,
YELLOW,

View File

@ -91,6 +91,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM
for(ForgeDirection dir : fluxDirs) {
NType stream = type;
double flux = fluxOut;
for(int i = 1; i <= range; i++) {
@ -99,10 +100,21 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM
//burn baby burn
if(te instanceof TileEntityRBMKRod) {
TileEntityRBMKRod rod = (TileEntityRBMKRod)te;
rod.receiveFlux(stream, fluxOut);
rod.receiveFlux(stream, flux);
break;
}
//set neutrons to slow
if(te instanceof TileEntityRBMKControl) {
TileEntityRBMKControl control = (TileEntityRBMKControl)te;
if(control.level == 0.0D)
break;
flux *= control.level;
continue;
}
//set neutrons to slow
if(te instanceof TileEntityRBMKModerator) {
stream = NType.SLOW;
@ -111,7 +123,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM
//return the neutrons back to this with no further action required
if(te instanceof TileEntityRBMKReflector) {
this.receiveFlux(stream, fluxOut);
this.receiveFlux(stream, flux);
break;
}

View File

@ -1457,6 +1457,7 @@ item.med_ipecac.name=Ipecac-Sirup
item.med_ptsd.name=PTBS-Medikament
item.med_schiziphrenia.name=Schizophrenie-Medikament
item.medal_liquidator.name=Liquidatorenmedallie
item.meltdown_tool.name=Djatlow Sofortiger Kernschmelzeinduzierer
item.memespoon.name=§eLuftschlag
item.memory.name=item.null.name
item.mese_gavel.name=Mese-Richterhammer
@ -1921,6 +1922,7 @@ item.rbmk_fuel_mox.name=MOX-RBMK-Kernbrennstoff
item.rbmk_fuel_po210be.name=Po210Be-RBMK-Neutronenquelle
item.rbmk_fuel_pu238be.name=Pu238Be-RBMK-Neutronenquelle
item.rbmk_fuel_thmeu.name=ThMEU-RBMK-Kernbrennstoff
item.rbmk_lid.name=RBMK-Abdeckplatte
item.reactor_core.name=Brutreaktorkern
item.reactor_sensor.name=Reaktor-Fernsensor
item.record.glass.desc=? ? ?

View File

@ -1457,6 +1457,7 @@ item.med_ipecac.name=Ipecac Syrup
item.med_ptsd.name=PTSD Medication
item.med_schiziphrenia.name=Schizophrenia Medication
item.medal_liquidator.name=Liquidator Medal
item.meltdown_tool.name=Dyatlov Instant Meltdown Applicator
item.memespoon.name=§eMarket Gardener
item.memory.name=item.null.name
item.mese_gavel.name=Mese Gavel
@ -1921,6 +1922,7 @@ item.rbmk_fuel_mox.name=MOX RBMK Fuel Rod
item.rbmk_fuel_po210be.name=Po210Be RBMK Neutron Source
item.rbmk_fuel_pu238be.name=Pu238Be RBMK Neutron Source
item.rbmk_fuel_thmeu.name=ThMEU RBMK Fuel Rod
item.rbmk_lid.name=RBMK Cover Panel
item.reactor_core.name=Breeding Reactor Core
item.reactor_sensor.name=Reactor Remote Sensor
item.record.glass.desc=? ? ?

View File

@ -0,0 +1,174 @@
# Blender v2.79 (sub 0) OBJ File: 'debris.blend'
# www.blender.org
o Cube
v 0.500000 0.000000 -0.500000
v 0.500000 0.000000 0.500000
v -0.500000 0.000000 0.500000
v -0.500000 0.000000 -0.500000
v 0.500000 1.000000 -0.500000
v 0.500000 1.000000 0.500000
v -0.500000 1.000000 0.500000
v -0.500000 1.000000 -0.500000
v 0.581912 -0.022128 -0.012755
v -0.010436 -0.034891 -0.517703
v 0.481928 0.507906 -0.488355
v -0.010436 -0.034891 0.482297
v 0.481928 0.507906 0.511645
v -0.418088 -0.022128 -0.012755
v -0.518072 0.507906 0.511645
v -0.518072 0.507906 -0.488355
v 0.581912 0.977872 -0.012754
v -0.010436 0.965109 -0.517702
v -0.010436 0.965109 0.482298
v -0.418088 0.977872 -0.012755
v 0.062320 0.478107 -0.430166
v -0.593986 0.498937 0.027902
v 0.062319 0.478107 0.569834
v 0.406014 0.498937 0.027903
v -0.000000 1.000000 0.000000
v 0.000000 0.000000 -0.000000
vt 0.500000 0.500000
vt 0.500000 0.999900
vt 0.000100 0.999900
vt 0.500000 0.500000
vt 0.000100 0.500000
vt 0.000100 0.000100
vt 0.500000 0.500000
vt 0.500000 0.999900
vt 0.000100 0.999900
vt 0.500000 0.500000
vt 0.500000 0.999900
vt 0.000100 0.999900
vt 0.500000 0.500000
vt 0.500000 0.000100
vt 0.999900 0.000100
vt 0.500000 0.500000
vt 0.000100 0.999900
vt 0.000100 0.500000
vt 0.500000 0.000100
vt 0.000100 0.000100
vt 0.999900 0.000100
vt 0.999900 0.500000
vt 0.999900 0.999900
vt 0.500000 0.999900
vt 0.999900 0.999900
vt 0.000100 0.500000
vt 0.500000 0.000100
vt 0.000100 0.000100
vt 0.999900 0.000100
vt 0.999900 0.500000
vt 0.999900 0.999900
vt 0.500000 0.000100
vt 0.000100 0.000100
vt 0.999900 0.000100
vt 0.999900 0.999900
vt 0.999900 0.500000
vt 0.999899 0.000100
vt 0.500000 0.999900
vt 0.000100 0.999900
vt 0.500000 0.000100
vt 0.000100 0.000100
vt 0.999900 0.500000
vt 0.999900 0.999900
vt 0.000100 0.500000
vt 0.999900 0.500000
vt 0.500000 0.999900
vt 0.500000 0.000100
vt 0.000100 0.500000
vn -0.0735 -0.9946 -0.0735
vn -0.0512 0.9974 -0.0512
vn 0.9306 -0.3279 0.1628
vn 0.0486 0.1837 0.9818
vn -0.9201 0.3524 0.1707
vn 0.1011 0.0264 -0.9945
vn -0.0486 -0.1837 -0.9818
vn -0.1361 -0.0184 -0.9905
vn -0.1386 0.0178 -0.9902
vn -0.9344 -0.3265 0.1423
vn -0.9871 -0.0387 0.1556
vn -0.9872 0.0399 0.1542
vn 0.0234 -0.1714 0.9849
vn 0.1386 -0.0178 0.9902
vn 0.1361 0.0184 0.9905
vn 0.9417 0.3072 0.1372
vn 0.9888 0.0318 0.1459
vn 0.9889 -0.0329 0.1448
vn 0.0372 0.9986 -0.0372
vn -0.0658 0.9957 -0.0658
vn 0.0685 0.9953 -0.0685
vn -0.0685 -0.9953 0.0685
vn -0.0388 -0.9985 -0.0388
vn -0.0372 -0.9986 0.0372
vn 0.9872 -0.0399 -0.1542
vn 0.9344 0.3265 -0.1423
vn 0.9201 -0.3524 -0.1707
vn 0.9871 0.0387 -0.1556
vn -0.0983 0.0272 0.9948
vn -0.0458 0.1701 0.9844
vn -0.0229 -0.1650 0.9860
vn -0.1011 -0.0264 0.9945
vn -0.9417 -0.3072 -0.1372
vn -0.9888 -0.0318 -0.1459
vn -0.9889 0.0329 -0.1448
vn -0.9306 0.3279 -0.1628
vn 0.0229 0.1650 -0.9860
vn -0.0234 0.1714 -0.9849
vn 0.0983 -0.0272 -0.9948
vn 0.0458 -0.1701 -0.9844
vn -0.0705 0.9950 0.0705
vn 0.0735 0.9946 0.0735
vn -0.0544 0.9970 0.0544
vn 0.0388 0.9985 0.0388
vn 0.0512 -0.9974 0.0512
vn 0.0544 -0.9970 -0.0544
vn 0.0705 -0.9950 -0.0705
vn 0.0658 -0.9957 0.0658
s off
f 26/1/1 12/2/1 3/3/1
f 25/4/2 20/5/2 7/6/2
f 24/7/3 17/8/3 6/9/3
f 23/10/4 19/11/4 7/12/4
f 22/13/5 20/14/5 8/15/5
f 21/16/6 4/17/6 16/18/6
f 18/19/7 21/16/7 8/20/7
f 5/21/8 11/22/8 21/16/8
f 11/22/9 1/23/9 21/16/9
f 14/24/10 22/13/10 4/25/10
f 3/3/11 15/26/11 22/13/11
f 15/26/12 7/6/12 22/13/12
f 12/27/13 23/10/13 3/28/13
f 2/29/14 13/30/14 23/10/14
f 13/30/15 6/31/15 23/10/15
f 9/32/16 24/7/16 2/33/16
f 1/34/17 11/22/17 24/7/17
f 11/22/18 5/35/18 24/7/18
f 17/36/19 25/4/19 6/37/19
f 5/35/20 18/38/20 25/4/20
f 18/38/21 8/39/21 25/4/21
f 10/40/22 26/1/22 4/41/22
f 1/34/23 9/42/23 26/1/23
f 9/42/24 2/43/24 26/1/24
f 6/9/25 13/44/25 24/7/25
f 24/7/26 9/32/26 1/34/26
f 24/7/27 5/35/27 17/8/27
f 2/33/28 24/7/28 13/44/28
f 7/12/29 15/26/29 23/10/29
f 23/10/30 6/31/30 19/11/30
f 23/10/31 12/27/31 2/29/31
f 3/28/32 23/10/32 15/26/32
f 22/13/33 14/24/33 3/3/33
f 4/25/34 22/13/34 16/45/34
f 8/15/35 16/45/35 22/13/35
f 22/13/36 7/6/36 20/14/36
f 21/16/37 1/23/37 10/46/37
f 4/17/38 21/16/38 10/46/38
f 8/20/39 21/16/39 16/18/39
f 21/16/40 18/19/40 5/21/40
f 6/37/41 25/4/41 19/47/41
f 7/6/42 19/47/42 25/4/42
f 25/4/43 8/39/43 20/5/43
f 25/4/44 17/36/44 5/35/44
f 3/3/45 14/48/45 26/1/45
f 4/41/46 26/1/46 14/48/46
f 26/1/47 2/43/47 12/2/47
f 26/1/48 10/40/48 1/34/48

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 357 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

@ -0,0 +1,5 @@
{
"animation": {
"frametime": 3
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@ -0,0 +1,45 @@
{
"animation": {
"frametime": 5,
"frames": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
18,
17,
16,
15,
14,
13,
12,
11,
10,
9,
8,
7,
6,
5,
4,
3,
2,
1
]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 651 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 277 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 279 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 378 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB