This commit is contained in:
Bob 2026-03-07 17:49:51 +01:00
parent 83a0f84b11
commit 873ceac8f4
21 changed files with 748 additions and 668 deletions

View File

@ -46,6 +46,11 @@
* Changed the way reasim RBMK fuel channels work * Changed the way reasim RBMK fuel channels work
* Instead of six randomized neutron streams, reasim rods now use eight half strength streams in an even star pattern * Instead of six randomized neutron streams, reasim rods now use eight half strength streams in an even star pattern
* The pattern is rotated in a random multiple of 9° (i.e. four possible angle variations) * The pattern is rotated in a random multiple of 9° (i.e. four possible angle variations)
* RBMK steam channels now spawn steam particles if water is voided due to the steam buffer not being emptied in time
* Rebalanced 528 mode
* Increased the chance for most precision assembler recipes to succeed
* Increased the chance for items to be salvaged by recycling
* In expensive mode, the chances have been increased drastically compared to the old values
## Fixed ## Fixed
* Fixed NBTStack serialization omitting the stack size most of the time, preventing deserialization (mainly in the precision assembler config) * Fixed NBTStack serialization omitting the stack size most of the time, preventing deserialization (mainly in the precision assembler config)

View File

@ -1,5 +1,6 @@
package com.hbm.blocks.machine.rbmk; package com.hbm.blocks.machine.rbmk;
import com.hbm.tileentity.TileEntityProxyCombo;
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKCooler; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKCooler;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
@ -9,10 +10,8 @@ public class RBMKCooler extends RBMKBase {
@Override @Override
public TileEntity createNewTileEntity(World world, int meta) { public TileEntity createNewTileEntity(World world, int meta) {
if(meta >= this.offset) return new TileEntityRBMKCooler();
if(meta >= this.offset) if(hasExtra(meta)) return new TileEntityProxyCombo().fluid();
return new TileEntityRBMKCooler();
return null; return null;
} }

View File

@ -5,6 +5,7 @@ import java.util.List;
import com.hbm.blocks.ITooltipProvider; import com.hbm.blocks.ITooltipProvider;
import com.hbm.blocks.generic.BlockGeneric; import com.hbm.blocks.generic.BlockGeneric;
import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.FluidType;
import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.trait.FT_Coolable; import com.hbm.inventory.fluid.trait.FT_Coolable;
import com.hbm.inventory.fluid.trait.FT_Heatable; import com.hbm.inventory.fluid.trait.FT_Heatable;
@ -24,12 +25,11 @@ public class RBMKLoader extends BlockGeneric implements IFluidConnectorBlock, IT
@Override @Override
public boolean canConnect(FluidType type, IBlockAccess world, int x, int y, int z, ForgeDirection dir) { public boolean canConnect(FluidType type, IBlockAccess world, int x, int y, int z, ForgeDirection dir) {
if(dir == ForgeDirection.UP) return type.hasTrait(FT_Heatable.class); if(dir == ForgeDirection.UP) return type.hasTrait(FT_Heatable.class);
return type.hasTrait(FT_Coolable.class); return type.hasTrait(FT_Coolable.class) || type == Fluids.PERFLUOROMETHYL;
} }
@Override @Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
this.addStandardInfo(stack, player, list, ext); this.addStandardInfo(stack, player, list, ext);
} }
} }

View File

@ -46,7 +46,7 @@ public class PrecAssRecipes extends GenericRecipes<GenericRecipe> {
.inputItems(new ComparableStack(ModItems.circuit, 1, EnumCircuitType.SILICON), .inputItems(new ComparableStack(ModItems.circuit, 1, EnumCircuitType.SILICON),
new ComparableStack(ModItems.plate_polymer, 3), new ComparableStack(ModItems.plate_polymer, 3),
new OreDictStack(GOLD.wireFine(), 4)).setPools(POOL_PREFIX_528 + "chip"), new OreDictStack(GOLD.wireFine(), 4)).setPools(POOL_PREFIX_528 + "chip"),
DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP), 50, GeneralConfig.enableExpensiveMode ? 10 : 90); DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP), 90, GeneralConfig.enableExpensiveMode ? 50 : 90);
registerPair(new GenericRecipe("precass.chip_bismoid").setup(200, 1_000L) registerPair(new GenericRecipe("precass.chip_bismoid").setup(200, 1_000L)
.inputItems(new ComparableStack(ModItems.circuit, 4, EnumCircuitType.SILICON), .inputItems(new ComparableStack(ModItems.circuit, 4, EnumCircuitType.SILICON),
@ -54,7 +54,7 @@ public class PrecAssRecipes extends GenericRecipes<GenericRecipe> {
new OreDictStack(ANY_BISMOID.nugget(), 2), new OreDictStack(ANY_BISMOID.nugget(), 2),
new OreDictStack(GOLD.wireFine(), 4)) new OreDictStack(GOLD.wireFine(), 4))
.inputFluids(new FluidStack(Fluids.PERFLUOROMETHYL, 1_000)).setPools(POOL_PREFIX_528 + "chip_bismoid"), .inputFluids(new FluidStack(Fluids.PERFLUOROMETHYL, 1_000)).setPools(POOL_PREFIX_528 + "chip_bismoid"),
DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP_BISMOID), 50, GeneralConfig.enableExpensiveMode ? 10 : 75); DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP_BISMOID), 75, GeneralConfig.enableExpensiveMode ? 50 : 75);
registerPair(new GenericRecipe("precass.chip_quantum").setup(300, 20_000L) registerPair(new GenericRecipe("precass.chip_quantum").setup(300, 20_000L)
.inputItems(new ComparableStack(ModItems.circuit, 8, EnumCircuitType.SILICON), .inputItems(new ComparableStack(ModItems.circuit, 8, EnumCircuitType.SILICON),
@ -63,14 +63,14 @@ public class PrecAssRecipes extends GenericRecipes<GenericRecipe> {
new ComparableStack(ModItems.pellet_charged, 4), new ComparableStack(ModItems.pellet_charged, 4),
new OreDictStack(GOLD.wireFine(), 8)) new OreDictStack(GOLD.wireFine(), 8))
.inputFluids(new FluidStack(Fluids.HELIUM4, 4_000)).setPools(POOL_PREFIX_528 + "chip_quantum"), .inputFluids(new FluidStack(Fluids.HELIUM4, 4_000)).setPools(POOL_PREFIX_528 + "chip_quantum"),
DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP_QUANTUM), 50, GeneralConfig.enableExpensiveMode ? 10 : 50); DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP_QUANTUM), 75, GeneralConfig.enableExpensiveMode ? 50 : 50);
registerPair(new GenericRecipe("precass.atomic_clock").setup(200, 2_000L) registerPair(new GenericRecipe("precass.atomic_clock").setup(200, 2_000L)
.inputItems(new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CHIP), .inputItems(new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CHIP),
new OreDictStack(ANY_PLASTIC.ingot(), 4), new OreDictStack(ANY_PLASTIC.ingot(), 4),
new OreDictStack(ZR.wireFine(), 8), new OreDictStack(ZR.wireFine(), 8),
new OreDictStack(SR.dust(), 1)).setPools(POOL_PREFIX_528 + "strontium"), new OreDictStack(SR.dust(), 1)).setPools(POOL_PREFIX_528 + "strontium"),
DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ATOMIC_CLOCK), 50, GeneralConfig.enableExpensiveMode ? 10 : 50); DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ATOMIC_CLOCK), 50, GeneralConfig.enableExpensiveMode ? 50 : 50);
registerPair(new GenericRecipe("precass.controller").setup(400, 15_000L) registerPair(new GenericRecipe("precass.controller").setup(400, 15_000L)
.inputItems(new ComparableStack(ModItems.circuit, 32, EnumCircuitType.CHIP), .inputItems(new ComparableStack(ModItems.circuit, 32, EnumCircuitType.CHIP),
@ -80,7 +80,7 @@ public class PrecAssRecipes extends GenericRecipes<GenericRecipe> {
new ComparableStack(ModItems.upgrade_speed_1), new ComparableStack(ModItems.upgrade_speed_1),
new OreDictStack(PB.wireFine(), 16)) new OreDictStack(PB.wireFine(), 16))
.inputFluids(new FluidStack(Fluids.PERFLUOROMETHYL, 1_000)), .inputFluids(new FluidStack(Fluids.PERFLUOROMETHYL, 1_000)),
DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER), 10, GeneralConfig.enableExpensiveMode ? 50 : 90); DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER), 50, GeneralConfig.enableExpensiveMode ? 50 : 90);
registerPair(new GenericRecipe("precass.controller_advanced").setup(600, 25_000) registerPair(new GenericRecipe("precass.controller_advanced").setup(600, 25_000)
.inputItems(new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CHIP_BISMOID), .inputItems(new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CHIP_BISMOID),
@ -90,7 +90,7 @@ public class PrecAssRecipes extends GenericRecipes<GenericRecipe> {
new ComparableStack(ModItems.upgrade_speed_3), new ComparableStack(ModItems.upgrade_speed_3),
new OreDictStack(PB.wireFine(), 24)) new OreDictStack(PB.wireFine(), 24))
.inputFluids(new FluidStack(Fluids.PERFLUOROMETHYL, 4_000)), .inputFluids(new FluidStack(Fluids.PERFLUOROMETHYL, 4_000)),
DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER_ADVANCED), 10, GeneralConfig.enableExpensiveMode ? 33 : 75); DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER_ADVANCED), 35, GeneralConfig.enableExpensiveMode ? 50 : 75);
registerPair(new GenericRecipe("precass.controller_quantum").setup(600, 250_000) registerPair(new GenericRecipe("precass.controller_quantum").setup(600, 250_000)
.inputItems(new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CHIP_QUANTUM), .inputItems(new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CHIP_QUANTUM),
@ -100,7 +100,7 @@ public class PrecAssRecipes extends GenericRecipes<GenericRecipe> {
new ComparableStack(ModItems.upgrade_overdrive_1), new ComparableStack(ModItems.upgrade_overdrive_1),
new OreDictStack(PB.wireFine(), 32)) new OreDictStack(PB.wireFine(), 32))
.inputFluids(new FluidStack(Fluids.PERFLUOROMETHYL_COLD, 6_000)), .inputFluids(new FluidStack(Fluids.PERFLUOROMETHYL_COLD, 6_000)),
DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER_QUANTUM), 5, GeneralConfig.enableExpensiveMode ? 10 : 50); DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER_QUANTUM), 25, GeneralConfig.enableExpensiveMode ? 50 : 75);
addFirstUpgrade(ModItems.upgrade_speed_1, ModItems.upgrade_speed_2, "precass.upgrade_speed_ii"); addFirstUpgrade(ModItems.upgrade_speed_1, ModItems.upgrade_speed_2, "precass.upgrade_speed_ii");
addSecondUpgrade(ModItems.upgrade_speed_2, ModItems.upgrade_speed_3, "precass.upgrade_speed_iii"); addSecondUpgrade(ModItems.upgrade_speed_2, ModItems.upgrade_speed_3, "precass.upgrade_speed_iii");
@ -119,7 +119,7 @@ public class PrecAssRecipes extends GenericRecipes<GenericRecipe> {
new OreDictStack(BIGMT.ingot(), 16), new OreDictStack(BIGMT.ingot(), 16),
new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16),
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED)), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED)),
new ItemStack(ModItems.upgrade_overdrive_1), 10, GeneralConfig.enableExpensiveMode ? 10 : 50); new ItemStack(ModItems.upgrade_overdrive_1), 50, GeneralConfig.enableExpensiveMode ? 50 : 75);
registerPair(new GenericRecipe("precass.upgrade_overdive_ii").setup(600, 5_000) registerPair(new GenericRecipe("precass.upgrade_overdive_ii").setup(600, 5_000)
.inputItems(new ComparableStack(ModItems.upgrade_overdrive_1, 1), .inputItems(new ComparableStack(ModItems.upgrade_overdrive_1, 1),
new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_speed_3, 1),
@ -127,7 +127,7 @@ public class PrecAssRecipes extends GenericRecipes<GenericRecipe> {
new OreDictStack(BIGMT.ingot(), 16), new OreDictStack(BIGMT.ingot(), 16),
new ComparableStack(ModItems.ingot_cft, 8), new ComparableStack(ModItems.ingot_cft, 8),
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR_BOARD)), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR_BOARD)),
new ItemStack(ModItems.upgrade_overdrive_2), 10, GeneralConfig.enableExpensiveMode ? 10 : 50); new ItemStack(ModItems.upgrade_overdrive_2), 50, GeneralConfig.enableExpensiveMode ? 50 : 75);
registerPair(new GenericRecipe("precass.upgrade_overdive_iii").setup(1_200, 100_000) registerPair(new GenericRecipe("precass.upgrade_overdive_iii").setup(1_200, 100_000)
.inputItems(new ComparableStack(ModItems.upgrade_overdrive_2, 1), .inputItems(new ComparableStack(ModItems.upgrade_overdrive_2, 1),
new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_speed_3, 1),
@ -135,7 +135,7 @@ public class PrecAssRecipes extends GenericRecipes<GenericRecipe> {
new OreDictStack(ANY_BISMOIDBRONZE.ingot(), 16), new OreDictStack(ANY_BISMOIDBRONZE.ingot(), 16),
new ComparableStack(ModItems.ingot_cft, 16), new ComparableStack(ModItems.ingot_cft, 16),
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID)), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID)),
new ItemStack(ModItems.upgrade_overdrive_3), 5, GeneralConfig.enableExpensiveMode ? 10 : 50); new ItemStack(ModItems.upgrade_overdrive_3), 25, GeneralConfig.enableExpensiveMode ? 50 : 75);
} }
int min = 1_200; int min = 1_200;
@ -165,7 +165,7 @@ public class PrecAssRecipes extends GenericRecipes<GenericRecipe> {
.inputItems(new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CHIP), .inputItems(new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CHIP),
new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CAPACITOR_TANTALIUM), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CAPACITOR_TANTALIUM),
new ComparableStack(lower), new OreDictStack(ANY_PLASTIC.ingot(), 4)), new ComparableStack(lower), new OreDictStack(ANY_PLASTIC.ingot(), 4)),
new ItemStack(higher), 15, 25); // upgrades are now actually valuable new ItemStack(higher), 50, 75); // upgrades are now actually valuable
} }
public void addSecondUpgrade(Item lower, Item higher, String name) { public void addSecondUpgrade(Item lower, Item higher, String name) {
@ -175,7 +175,7 @@ public class PrecAssRecipes extends GenericRecipes<GenericRecipe> {
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR_TANTALIUM), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR_TANTALIUM),
new ComparableStack(lower), new OreDictStack(RUBBER.ingot(), 4)) new ComparableStack(lower), new OreDictStack(RUBBER.ingot(), 4))
.inputFluids(new FluidStack(Fluids.SOLVENT, 500)), .inputFluids(new FluidStack(Fluids.SOLVENT, 500)),
new ItemStack(higher), 5, 10); // admittedly this one's just me being a dick new ItemStack(higher), 25, 75); // admittedly this one's just me being a dick
} }
/** Registers a generic pair of faulty product and recycling of broken items. */ /** Registers a generic pair of faulty product and recycling of broken items. */

View File

@ -168,17 +168,19 @@ public class ItemRBMKRod extends Item {
setPoison(stack, xenon); setPoison(stack, xenon);
} }
double outFlux = reactivityFunc(inFlux, getEnrichment(stack)) * RBMKDials.getReactivityMod(world); double mult = 1D;
double coreHeat = this.getCoreHeat(stack); double coreHeat = this.getCoreHeat(stack);
if(this.heatCoeffStart != 0) { if(this.heatCoeffStart != 0) {
if(coreHeat >= this.heatCoeffStart) { if(coreHeat >= this.heatCoeffStart) {
double prog = (coreHeat - this.heatCoeffStart) / this.heatCoeffLength; double prog = (coreHeat - this.heatCoeffStart) / this.heatCoeffLength;
if(prog > 1) prog = 1; if(prog > 1) prog = 1;
double mult = Math.sin((prog * Math.PI + Math.PI) / 2); mult = Math.sin((prog * Math.PI + Math.PI) / 2);
} }
} }
double outFlux = reactivityFunc(inFlux, getEnrichment(stack) * mult) * RBMKDials.getReactivityMod(world);
//if depletion is enabled //if depletion is enabled
if(RBMKDials.getDepletion(world)) { if(RBMKDials.getDepletion(world)) {
double y = getYield(stack); double y = getYield(stack);

View File

@ -1729,6 +1729,10 @@ public class ClientProxy extends ServerProxy {
Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleRBMKFlame(man, world, x, y, z, maxAge)); Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleRBMKFlame(man, world, x, y, z, maxAge));
} }
if("rbmksteam".equals(type)) {
Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleRBMKSteam(man, world, x, y, z));
}
if("rbmkmush".equals(type)) { if("rbmkmush".equals(type)) {
float scale = data.getFloat("scale"); float scale = data.getFloat("scale");
Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleRBMKMush(man, world, x, y, z, scale)); Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleRBMKMush(man, world, x, y, z, scale));

View File

@ -27,6 +27,7 @@ public class ParticleRBMKFlame extends EntityFX {
this.particleScale = rand.nextFloat() + 1F; this.particleScale = rand.nextFloat() + 1F;
} }
@Override
public int getFXLayer() { public int getFXLayer() {
return 3; return 3;
} }

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.RenderHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.texture.TextureManager;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
@SideOnly(Side.CLIENT)
public class ParticleRBMKSteam extends EntityFX {
public static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/particle/rbmk_jet_steam.png");
private TextureManager theRenderEngine;
public ParticleRBMKSteam(TextureManager texman, World world, double x, double y, double z) {
super(world, x, y, z);
this.theRenderEngine = texman;
this.particleMaxAge = 30;
this.particleAlpha = 0.25F;
this.particleScale = 4F;
}
@Override
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());
boolean fog = GL11.glIsEnabled(GL11.GL_FOG);
if(fog) GL11.glDisable(GL11.GL_FOG);
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 = (int) (((double) this.particleAge / (double) this.particleMaxAge) * 20) % 20 - 1;
float f0 = 1F / 20F;
float uMin = texIndex * f0;
float uMax = uMin + f0;
float vMin = 0;
float vMax = 1;
tess.startDrawingQuads();
tess.setNormal(0.0F, 1.0F, 0.0F);
tess.setBrightness(240);
tess.setColorRGBA_F(1.0F, 1.0F, 1.0F, this.particleAlpha);
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
double dX = player.lastTickPosX + (player.posX - player.lastTickPosX) * (double)interp;
double dY = player.lastTickPosY + (player.posY - player.lastTickPosY) * (double)interp;
double dZ = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * (double)interp;
float pX = (float) (this.prevPosX + (this.posX - this.prevPosX) * (double) interp - dX);
float pY = (float) (this.prevPosY + (this.posY - this.prevPosY) * (double) interp - dY);
float pZ = (float) (this.prevPosZ + (this.posZ - this.prevPosZ) * (double) interp - dZ);
GL11.glTranslatef(pX + x, pY + y, pZ + z);
GL11.glRotatef(-RenderManager.instance.playerViewY, 0.0F, 1.0F, 0.0F);
tess.addVertexWithUV(this.particleScale * -0.25 - 1, -0.25, 0, uMax, vMax);
tess.addVertexWithUV(this.particleScale * -0.25 - 1, this.particleScale - 0.25, 0, uMax, vMin);
tess.addVertexWithUV(this.particleScale * 0.25 - 1, this.particleScale - 0.25, 0, uMin, vMin);
tess.addVertexWithUV(this.particleScale * 0.25 - 1, -0.25, 0, uMin, vMax);
tess.draw();
GL11.glPolygonOffset(0.0F, 0.0F);
GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_BLEND);
GL11.glPopMatrix();
if(fog) GL11.glEnable(GL11.GL_FOG);
}
protected ResourceLocation getTexture() {
return texture;
}
}

View File

@ -15,9 +15,10 @@ public class RenderRBMKDebris extends Render {
//for fallback only //for fallback only
private static final ResourceLocation tex_base = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_side.png"); private static final ResourceLocation tex_base = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_side.png");
private static final ResourceLocation tex_element = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_element.png"); private static final ResourceLocation tex_element = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_fuel.png");
private static final ResourceLocation tex_control = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_control.png"); private static final ResourceLocation tex_control = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_control.png");
private static final ResourceLocation tex_blank = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_blank.png"); private static final ResourceLocation tex_blank = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_blank_side.png");
private static final ResourceLocation tex_lid = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_blank_cover_top.png");
private static final ResourceLocation tex_graphite = new ResourceLocation(RefStrings.MODID + ":textures/blocks/block_graphite.png"); private static final ResourceLocation tex_graphite = new ResourceLocation(RefStrings.MODID + ":textures/blocks/block_graphite.png");
@Override @Override
@ -35,10 +36,10 @@ public class RenderRBMKDebris extends Render {
switch(type) { switch(type) {
case BLANK: bindTexture(tex_blank); ResourceManager.deb_blank.renderAll(); break; case BLANK: bindTexture(tex_blank); ResourceManager.deb_blank.renderAll(); break;
case ELEMENT: bindTexture(tex_element); ResourceManager.deb_element.renderAll(); break; case ELEMENT: bindTexture(tex_base); ResourceManager.deb_element.renderAll(); break;
case FUEL: bindTexture(tex_element); ResourceManager.deb_fuel.renderAll(); break; case FUEL: bindTexture(tex_element); ResourceManager.deb_fuel.renderAll(); break;
case GRAPHITE: bindTexture(tex_graphite); ResourceManager.deb_graphite.renderAll(); break; case GRAPHITE: bindTexture(tex_graphite); ResourceManager.deb_graphite.renderAll(); break;
case LID: bindTexture(tex_blank); ResourceManager.deb_lid.renderAll(); break; case LID: bindTexture(tex_lid); ResourceManager.deb_lid.renderAll(); break;
case ROD: bindTexture(tex_control); ResourceManager.deb_rod.renderAll(); break; case ROD: bindTexture(tex_control); ResourceManager.deb_rod.renderAll(); break;
default: break; default: break;
} }

View File

@ -7,6 +7,7 @@ import api.hbm.tile.IInfoProviderEC;
import com.hbm.blocks.ModBlocks; import com.hbm.blocks.ModBlocks;
import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType;
import com.hbm.handler.CompatHandler; import com.hbm.handler.CompatHandler;
import com.hbm.handler.threading.PacketThreading;
import com.hbm.interfaces.IControlReceiver; import com.hbm.interfaces.IControlReceiver;
import com.hbm.inventory.container.ContainerRBMKGeneric; import com.hbm.inventory.container.ContainerRBMKGeneric;
import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.FluidType;
@ -14,11 +15,14 @@ import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.inventory.gui.GUIRBMKBoiler; import com.hbm.inventory.gui.GUIRBMKBoiler;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.main.MainRegistry;
import com.hbm.packet.toclient.AuxParticlePacketNT;
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType;
import com.hbm.uninos.UniNodespace; import com.hbm.uninos.UniNodespace;
import com.hbm.util.CompatEnergyControl; import com.hbm.util.CompatEnergyControl;
import com.hbm.util.fauxpointtwelve.DirPos; import com.hbm.util.fauxpointtwelve.DirPos;
import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.Optional;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
@ -39,6 +43,7 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I
public FluidTank steam; public FluidTank steam;
protected int consumption; protected int consumption;
protected int output; protected int output;
protected int ventDelay;
public TileEntityRBMKBoiler() { public TileEntityRBMKBoiler() {
super(0); super(0);
@ -59,6 +64,7 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I
this.consumption = 0; this.consumption = 0;
this.output = 0; this.output = 0;
if(this.ventDelay > 0) this.ventDelay--;
double heatCap = this.getHeatFromSteam(steam.getTankType()); double heatCap = this.getHeatFromSteam(steam.getTankType());
double heatProvided = this.heat - heatCap; double heatProvided = this.heat - heatCap;
@ -89,9 +95,18 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I
feed.setFill(feed.getFill() - waterUsed); feed.setFill(feed.getFill() - waterUsed);
steam.setFill(steam.getFill() + steamProduced); steam.setFill(steam.getFill() + steamProduced);
if(steam.getFill() > steam.getMaxFill()) if(steam.getFill() > steam.getMaxFill()) {
steam.setFill(steam.getMaxFill()); steam.setFill(steam.getMaxFill());
if(ventDelay <= 0) {
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "rbmksteam");
PacketThreading.createAllAroundThreadedPacket(new AuxParticlePacketNT(data, xCoord + 0.25 + worldObj.rand.nextInt(2) * 0.5, yCoord + RBMKDials.getColumnHeight(worldObj), zCoord + 0.25 + worldObj.rand.nextInt(2) * 0.5), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 1, zCoord + 0.5, 100));
MainRegistry.proxy.effectNT(data);
this.ventDelay = 20;
}
}
this.heat -= waterUsed * HEAT_PER_MB_WATER; this.heat -= waterUsed * HEAT_PER_MB_WATER;
} }

View File

@ -7,7 +7,6 @@
"zh_CN": "RBMK冷却器" "zh_CN": "RBMK冷却器"
}, },
"content": { "content": {
"en_US": "The cooler is an optional component that can be used to cool an [[RBMK]], however unlike the [[steam channel|RBMK Steam Channel]], the cooler does not allow the heat to be extracted and used. The RBMK cooler simply \"eats\" cryogel to remove heat. Coolers are rarely useful for power producing reactors, however they are sometimes found in high-heat breeding reactor setups or as backup cooling.", "en_US": "The cooler is an optional component that can be used to cool an [[RBMK]], however unlike the [[steam channel|RBMK Steam Channel]], the cooler does not allow the heat to be extracted and used. The RBMK cooler uses up cold perfluoromethyl and outputs regular PFM at a constant rate of 50mB/t, and rapidly cools down all RBMK components in a 5x5 area."
"zh_CN": "冷却器是用于冷却[[RBMK]]的可选部件,但其与[[蒸汽管道|RBMK Steam Channel]] 不同冷却器并不能将热量提取出来并用在其他地方。RBMK冷却器只会 “吞掉”冷凝胶,并将其用于移除热量。在发电用的反应堆中冷却器通常派不 上用场,但其有时会用于高热量的增殖用反应堆,或是用作备用冷却系统。"
} }
} }

View File

@ -1,100 +1,54 @@
# Blender v2.79 (sub 0) OBJ File: 'deb_lid.blend' # Blender v2.79 (sub 0) OBJ File: 'deb_lid.blend'
# www.blender.org # www.blender.org
o Lid o Lid
v -0.500000 0.000000 0.500000 v -0.500000 -0.125000 0.500000
v -0.500000 0.125000 0.500000 v -0.500000 0.125000 0.500000
v -0.500000 0.000000 -0.500000 v -0.500000 -0.125000 -0.500000
v -0.500000 0.125000 -0.500000 v -0.500000 0.125000 -0.500000
v 0.500000 0.000000 0.500000 v 0.500000 -0.125000 0.500000
v 0.500000 0.125000 0.500000 v 0.500000 0.125000 0.500000
v 0.500000 0.000000 -0.500000 v 0.500000 -0.125000 -0.500000
v 0.500000 0.125000 -0.500000 v 0.500000 0.125000 -0.500000
v -0.375000 0.000000 -0.375000 vt 1.000000 0.625000
v -0.375000 0.000000 0.375000 vt 0.000000 0.375000
v 0.375000 0.000000 -0.375000 vt 1.000000 0.375000
v 0.375000 0.000000 0.375000 vt 1.000000 0.625000
v -0.375000 -0.125000 -0.375000 vt 0.000000 0.375000
v -0.375000 -0.125000 0.375000 vt 1.000000 0.375000
v 0.375000 -0.125000 -0.375000 vt 1.000000 0.625000
v 0.375000 -0.125000 0.375000 vt 0.000000 0.375000
vt 0.500000 1.000000 vt 1.000000 0.375000
vt 0.562500 0.500000 vt 1.000000 0.625000
vt 0.562500 1.000000 vt 0.000000 0.375000
vt 0.500000 1.000000 vt 1.000000 0.375000
vt 0.562500 0.500000
vt 0.562500 1.000000
vt 0.500000 1.000000
vt 0.562500 0.500000
vt 0.562500 1.000000
vt 0.500000 1.000000
vt 0.562500 0.500000
vt 0.562500 1.000000
vt 0.000000 1.000000
vt 0.437500 0.937500
vt 0.500000 1.000000
vt 0.000100 0.999900 vt 0.000100 0.999900
vt 0.500000 0.500000 vt 0.999900 0.000100
vt 0.500000 0.500000 vt 0.999900 0.999900
vt 0.562500 1.000000 vt 0.999900 0.000100
vt 0.500000 1.000000 vt 0.000100 0.999900
vt 0.437500 0.562500 vt 0.000100 0.000100
vt 0.500000 0.500000 vt 0.000000 0.625000
vt 0.000000 0.500000 vt 0.000000 0.625000
vt 0.062500 0.937500 vt 0.000000 0.625000
vt 0.062500 0.562500 vt 0.000000 0.625000
vt 0.437500 0.562500 vt 0.000100 0.000100
vt 0.062500 0.937500 vt 0.999900 0.999900
vt 0.062500 0.562500
vt 0.500000 0.500000
vt 0.562500 1.000000
vt 0.500000 1.000000
vt 0.500000 0.500000
vt 0.562500 1.000000
vt 0.500000 1.000000
vt 0.500000 0.500000
vt 0.562500 1.000000
vt 0.500000 1.000000
vt 0.500000 0.500000
vt 0.500000 0.500000
vt 0.500000 0.500000
vt 0.000000 0.500000
vt 0.562500 0.500000
vt 0.437500 0.937500
vt 0.562500 0.500000
vt 0.562500 0.500000
vt 0.562500 0.500000
vn -1.0000 0.0000 0.0000 vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000 vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000 vn 1.0000 0.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 0.0000 1.0000 0.0000 vn 0.0000 1.0000 0.0000
vn 0.0000 -1.0000 0.0000
s off s off
f 2/1/1 3/2/1 1/3/1 f 2/1/1 3/2/1 1/3/1
f 4/4/2 7/5/2 3/6/2 f 4/4/2 7/5/2 3/6/2
f 8/7/3 5/8/3 7/9/3 f 8/7/3 5/8/3 7/9/3
f 6/10/4 1/11/4 5/12/4 f 6/10/4 1/11/4 5/12/4
f 7/13/5 9/14/5 3/15/5 f 4/13/5 6/14/5 8/15/5
f 4/16/6 6/17/6 8/7/6 f 7/16/6 1/17/6 3/18/6
f 10/18/4 16/19/4 12/20/4 f 2/1/1 4/19/1 3/2/1
f 3/15/5 10/21/5 1/22/5 f 4/4/2 8/20/2 7/5/2
f 5/23/5 11/24/5 7/13/5 f 8/7/3 6/21/3 5/8/3
f 1/22/5 12/25/5 5/23/5 f 6/10/4 2/22/4 1/11/4
f 15/26/5 14/27/5 13/28/5 f 4/13/5 2/23/5 6/14/5
f 11/29/2 13/30/2 9/31/2 f 7/16/6 5/24/6 1/17/6
f 12/32/3 15/33/3 11/34/3
f 9/35/1 14/36/1 10/37/1
f 2/1/1 4/38/1 3/2/1
f 4/4/2 8/39/2 7/5/2
f 8/7/3 6/17/3 5/8/3
f 6/10/4 2/40/4 1/11/4
f 7/13/5 11/24/5 9/14/5
f 4/16/6 2/41/6 6/17/6
f 10/18/4 14/42/4 16/19/4
f 3/15/5 9/14/5 10/21/5
f 5/23/5 12/25/5 11/24/5
f 1/22/5 10/21/5 12/25/5
f 15/26/5 16/43/5 14/27/5
f 11/29/2 15/44/2 13/30/2
f 12/32/3 16/45/3 15/33/3
f 9/35/1 13/46/1 14/36/1

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 410 B

After

Width:  |  Height:  |  Size: 486 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 285 B

After

Width:  |  Height:  |  Size: 328 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 467 B

After

Width:  |  Height:  |  Size: 425 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 397 B

After

Width:  |  Height:  |  Size: 417 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 579 B

After

Width:  |  Height:  |  Size: 610 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 649 B

After

Width:  |  Height:  |  Size: 577 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 628 B

After

Width:  |  Height:  |  Size: 568 B