Merge branch 'HbmMods:master' into master

This commit is contained in:
Raaaaaaaaaay 2025-11-23 11:56:39 +02:00 committed by GitHub
commit 14490f9392
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
24 changed files with 8053 additions and 5957 deletions

View File

@ -88,3 +88,4 @@
* Fixed many NTM structure spawn conditions being hardcoded (again) preventing them from spawning in modded biomes that would otherwise be a fit
* Fixed spawn offset for some structures which caused them to float in the air
* Fixed icons in the QMAW title bar often times being too dark when rendered with a 3D model
* Fixed rocket artillery modes having incorrect tooltips

View File

@ -24,7 +24,7 @@ public class GUITurretHIMARS extends GUITurretBase {
super.drawScreen(mouseX, mouseY, f);
TileEntityTurretHIMARS arty = (TileEntityTurretHIMARS) turret;
String mode = arty.mode == arty.MODE_AUTO ? "artillery" : "manual";
String mode = arty.mode == arty.MODE_AUTO ? "artillery_rocket" : "manual_rocket";
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 151, guiTop + 16, 18, 18, mouseX, mouseY, I18nUtil.resolveKeyArray("turret.arty." + mode));
}

View File

@ -518,27 +518,31 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.LEAD_PLATING), new OreDictStack(ZR.plateWelded(), 1), new ComparableStack(ModItems.billet_ra226be, 3)));
// fusion reactor
this.register(new GenericRecipe("ass.fusioncore").setup(600, 100).outputItems(new ItemStack(ModBlocks.struct_iter_core, 1))
.inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 6), new OreDictStack(W.plateWelded(), 6), new OreDictStack(OreDictManager.getReflector(), 12), new ComparableStack(ModItems.coil_advanced_alloy, 12), new OreDictStack(ANY_PLASTIC.ingot(), 8), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID))
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.FERRO_PLATING), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 8), new OreDictStack(W.plateWelded(), 16), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID), new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.COMPUTER)));
this.register(new GenericRecipe("ass.fusionconductor").setup(100, 100).outputItems(new ItemStack(ModBlocks.fusion_conductor, 1))
.inputItems(new ComparableStack(ModItems.coil_advanced_alloy, 5)));
this.register(new GenericRecipe("ass.fusioncenter").setup(200, 100).outputItems(new ItemStack(ModBlocks.fusion_center, 1))
.inputItems(new OreDictStack(ANY_HARDPLASTIC.ingot(), 4), new OreDictStack(STEEL.plate528(), 6), new OreDictStack(ALLOY.wireFine(), 24))
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.STEEL_PLATING), new OreDictStack(ANY_HARDPLASTIC.ingot(), 4), new OreDictStack(ALLOY.wireFine(), 24)));
this.register(new GenericRecipe("ass.fusionmotor").setup(400, 100).outputItems(new ItemStack(ModBlocks.fusion_motor, 1))
.inputItems(new OreDictStack(TI.ingot(), 4), new OreDictStack(STEEL.ingot(), 2), new ComparableStack(ModItems.motor, 4))
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.STEEL_PLATING), new ComparableStack(ModItems.motor, 4)));
this.register(new GenericRecipe("ass.fusionheater").setup(200, 100).outputItems(new ItemStack(ModBlocks.fusion_heater, 4))
.inputItems(new OreDictStack(W.plateWelded(), 2), new OreDictStack(STEEL.plateWelded(), 2), new OreDictStack(OreDictManager.getReflector(), 2), new ComparableStack(ModItems.magnetron, 2))
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.HEAVY_FRAME), new OreDictStack(W.plateWelded(), 4), new ComparableStack(ModItems.magnetron, 2)));
this.register(new GenericRecipe("ass.blankettungsten").setup(600, 100).outputItems(new ItemStack(ModItems.fusion_shield_tungsten, 1))
.inputItems(new OreDictStack(W.block(), 32), new OreDictStack(OreDictManager.getReflector(), 64)));
this.register(new GenericRecipe("ass.blanketdesh").setup(600, 100).outputItems(new ItemStack(ModItems.fusion_shield_desh, 1))
.inputItems(new OreDictStack(DESH.block(), 16), new OreDictStack(CO.block(), 16), new OreDictStack(BIGMT.plate(), 64)));
this.register(new GenericRecipe("ass.blanketchlorophyte").setup(600, 100).outputItems(new ItemStack(ModItems.fusion_shield_chlorophyte, 1))
.inputItems(new OreDictStack(W.block(), 16), new OreDictStack(DURA.block(), 16), new OreDictStack(OreDictManager.getReflector(), 48), new ComparableStack(ModItems.powder_chlorophyte, 48)));
this.register(new GenericRecipe("ass.fusioncore").setup(600, 100).outputItems(new ItemStack(ModBlocks.struct_torus_core, 1))
.inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 8), new OreDictStack(ANY_HARDPLASTIC.ingot(), 32), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.BISMOID)));
this.register(new GenericRecipe("ass.fusionbscco").setup(100, 100).outputItems(new ItemStack(ModBlocks.fusion_component, 2, 0))
.inputItems(new OreDictStack(BSCCO.wireDense(), 1), new OreDictStack(CU.pipe(), 1), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 1), new OreDictStack(ANY_PLASTIC.ingot(), 4)));
this.register(new GenericRecipe("ass.fusionblanket").setup(100, 100).outputItems(new ItemStack(ModBlocks.fusion_component, 4, 2))
.inputItems(new OreDictStack(W.plateWelded(), 1), new OreDictStack(STEEL.plateWelded(), 2), new OreDictStack(BE.ingot(), 4)));
this.register(new GenericRecipe("ass.fusionpipes").setup(100, 100).outputItems(new ItemStack(ModBlocks.fusion_component, 4, 3))
.inputItems(new OreDictStack(ANY_HARDPLASTIC.ingot(), 4), new OreDictStack(CU.pipe(), 2), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BASIC)));
this.register(new GenericRecipe("ass.fusionklystron").setup(300, 100).outputItems(new ItemStack(ModBlocks.fusion_klystron, 1))
.inputItems(new OreDictStack(W.plateWelded(), 4), new OreDictStack(ANY_RESISTANTALLOY.plateCast(), 16), new OreDictStack(CU.plate(), 32), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new OreDictStack(BSCCO.wireDense(), 8), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.BISMOID)));
this.register(new GenericRecipe("ass.fusioncollector").setup(300, 100).outputItems(new ItemStack(ModBlocks.fusion_collector, 1))
.inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateCast(), 4), new OreDictStack(STEEL.plate(), 16), new OreDictStack(GRAPHITE.ingot(), 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 4)));
this.register(new GenericRecipe("ass.fusionbreeder").setup(300, 100).outputItems(new ItemStack(ModBlocks.fusion_breeder, 1))
.inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateCast(), 4), new OreDictStack(STEEL.pipe(), 4), new OreDictStack(B.ingot(), 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16)));
this.register(new GenericRecipe("ass.fusionboiler").setup(300, 100).outputItems(new ItemStack(ModBlocks.fusion_boiler, 1))
.inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateCast(), 16), new OreDictStack(CU.shell(), 16), new OreDictStack(STEEL.pipe(), 8), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16)));
this.register(new GenericRecipe("ass.fusionmhdt").setup(1_200, 100).outputItems(new ItemStack(ModBlocks.fusion_mhdt, 1))
.inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 16), new OreDictStack(CU.plateWelded(), 64), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 16), new OreDictStack(BSCCO.wireDense(), 64), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.QUANTUM)));
this.register(new GenericRecipe("ass.fusioncoupler").setup(300, 100).outputItems(new ItemStack(ModBlocks.fusion_coupler, 1))
.inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 4), new OreDictStack(CU.plate(), 32), new OreDictStack(BSCCO.wireDense(), 16), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID)));
// watz
this.register(new GenericRecipe("ass.watzrod").setup(200, 100).outputItems(new ItemStack(ModBlocks.watz_element, 3))
.inputItems(new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(ZR.ingot(), 2), new OreDictStack(BIGMT.ingot(), 2), new OreDictStack(ANY_HARDPLASTIC.ingot(), 4))

View File

@ -17,12 +17,17 @@ public class FusionRecipe extends GenericRecipe {
public long outputTemp;
// neutron output energy at full blast
public double neutronFlux;
public float r = 1F;
public float g = 0.2F;
public float b = 0.6F;
public FusionRecipe(String name) { super(name); }
public FusionRecipe setInputEnergy(long ignitionTemp) { this.ignitionTemp = ignitionTemp; return this; }
public FusionRecipe setOutputEnergy(long outputTemp) { this.outputTemp = outputTemp; return this; }
public FusionRecipe setOutputFlux(double neutronFlux) { this.neutronFlux = neutronFlux; return this; }
public FusionRecipe setRGB(float r, float g, float b) { this.r = r; this.g = g; this.b = b; return this; }
public List<String> print() {
List<String> list = new ArrayList();

View File

@ -34,6 +34,7 @@ public class FusionRecipes extends GenericRecipes<FusionRecipe> {
// mostly for breeding helium and tritium, energy gains are enough to ignite TH4
// 15MHE/s to 20MHE/s
this.register((FusionRecipe) new FusionRecipe("fus.dd").setInputEnergy(750_000).setOutputEnergy(1_000_000).setOutputFlux(breederCapacity / 200)
.setRGB(1F, 0.2F, 0.2F) // extra red
.setNamed().setIcon(new ItemStack(ModItems.gas_full, 1, Fluids.DEUTERIUM.getID()))
.setPower(solenoid).setDuration(100)
.inputFluids(new FluidStack(Fluids.DEUTERIUM, 20))
@ -58,6 +59,7 @@ public class FusionRecipes extends GenericRecipes<FusionRecipe> {
// medium fuel, three klystrons or in tandem
// 50MHE/s to 125MHE/s
this.register((FusionRecipe) new FusionRecipe("fus.tcl").setInputEnergy(2_500_000).setOutputEnergy(6_250_000).setOutputFlux(breederCapacity / 20)
.setRGB(0.8F, 0.6F, 0.4F) // everything chlorine is piss yellow
.setNamed().setIcon(new ItemStack(ModItems.powder_chlorophyte))
.setPower(solenoid).setDuration(100)
.inputFluids(new FluidStack(Fluids.TRITIUM, 10), new FluidStack(Fluids.CHLORINE, 10))
@ -66,6 +68,7 @@ public class FusionRecipes extends GenericRecipes<FusionRecipe> {
// medium fuel, aneutronic
// 10MHE/s to 75MHE/s
this.register((FusionRecipe) new FusionRecipe("fus.h3").setInputEnergy(500_000).setOutputEnergy(3_750_000).setOutputFlux(0)
.setRGB(0.2F, 0.2F, 1F) // helium blue
.setNamed().setIcon(new ItemStack(ModItems.gas_full, 1, Fluids.HELIUM3.getID()))
.setPower(solenoid).setDuration(100)
.inputFluids(new FluidStack(Fluids.HELIUM3, 20))
@ -74,6 +77,7 @@ public class FusionRecipes extends GenericRecipes<FusionRecipe> {
// medium fuel, in tandem with DD
// 17.5MHE/s to 80MHE/s
this.register((FusionRecipe) new FusionRecipe("fus.th4").setInputEnergy(875_000).setOutputEnergy(4_000_000).setOutputFlux(breederCapacity / 20)
.setRGB(0.2F, 0.2F, 1F)
.setNamed().setIcon(new ItemStack(ModItems.gas_full, 1, Fluids.TRITIUM.getID()))
.setPower(solenoid).setDuration(100)
.inputFluids(new FluidStack(Fluids.TRITIUM, 10), new FluidStack(Fluids.HELIUM4, 10))
@ -82,6 +86,7 @@ public class FusionRecipes extends GenericRecipes<FusionRecipe> {
// high fuel, ignition exceeds klystron power, requires TH4 or H3
// 75MHE/s to 200MHE/s
this.register((FusionRecipe) new FusionRecipe("fus.cl").setInputEnergy(3_750_000).setOutputEnergy(10_000_000).setOutputFlux(breederCapacity / 10)
.setRGB(1F, 0.6F, 0.2F) // even more yellow
.setNamed().setIcon(new ItemStack(ModItems.powder_chlorophyte))
.setPower(solenoid).setDuration(100)
.inputFluids(new FluidStack(Fluids.CHLORINE, 20))
@ -90,6 +95,7 @@ public class FusionRecipes extends GenericRecipes<FusionRecipe> {
// high fuel, requires chlorine phase to ignite
// 200MHE/s to 500MHE/s
this.register((FusionRecipe) new FusionRecipe("fus.dhc").setInputEnergy(10_000_000).setOutputEnergy(25_000_000).setOutputFlux(breederCapacity / 5)
.setRGB(0.2F, 0.8F, 0.8F) // cyan
.setNamed().setIcon(new ItemStack(ModItems.fluid_icon, 1, Fluids.DHC.getID()))
.setPower(solenoid).setDuration(100)
.inputFluids(new FluidStack(Fluids.DHC, 20))
@ -98,14 +104,16 @@ public class FusionRecipes extends GenericRecipes<FusionRecipe> {
// high fuel, low ignition point
// 20MHE/s to 250MHE/s
this.register((FusionRecipe) new FusionRecipe("fus.bf").setInputEnergy(1_000_000).setOutputEnergy(12_500_000).setOutputFlux(breederCapacity / 5)
.setRGB(0.2F, 1F, 0.2F) // what do you think?
.setNamed().setIcon(new ItemStack(ModItems.fluid_icon, 1, Fluids.BALEFIRE.getID()))
.setPower(solenoid).setDuration(100)
.inputFluids(new FluidStack(Fluids.BALEFIRE, 15), new FluidStack(Fluids.AMAT, 5)) // do we kick the antimatter requirement or maybe change it?
.outputItems(new ItemStack(ModItems.powder_balefire)));
// high fuel, low ignition point
// high fuel, high ignition point
// 200MHE/s/s to 1GHE/s
this.register((FusionRecipe) new FusionRecipe("fus.stellar").setInputEnergy(10_000_000).setOutputEnergy(50_000_000).setOutputFlux(breederCapacity / 1)
.setRGB(1F, 0.4F, 0.1F) // brilliant orange, like looking into a furnace
.setNamed().setIcon(new ItemStack(ModItems.fluid_icon, 1, Fluids.STELLAR_FLUX.getID()))
.setPower(solenoid).setDuration(100)
.inputFluids(new FluidStack(Fluids.STELLAR_FLUX, 10))
@ -120,6 +128,9 @@ public class FusionRecipes extends GenericRecipes<FusionRecipe> {
recipe.ignitionTemp = obj.get("ignitionTemp").getAsLong();
recipe.outputTemp = obj.get("outputTemp").getAsLong();
recipe.neutronFlux = obj.get("outputFlux").getAsDouble();
recipe.r = obj.get("r").getAsFloat();
recipe.g = obj.get("g").getAsFloat();
recipe.b = obj.get("b").getAsFloat();
}
@Override
@ -127,5 +138,8 @@ public class FusionRecipes extends GenericRecipes<FusionRecipe> {
writer.name("ignitionTemp").value(recipe.ignitionTemp);
writer.name("outputTemp").value(recipe.outputTemp);
writer.name("outputFlux").value(recipe.neutronFlux);
writer.name("r").value(recipe.r);
writer.name("g").value(recipe.g);
writer.name("b").value(recipe.b);
}
}

View File

@ -707,6 +707,9 @@ public class ResourceManager {
public static final ResourceLocation iter_torus_chlorophyte = new ResourceLocation(RefStrings.MODID, "textures/models/iter/torus_chlorophyte.png");
public static final ResourceLocation iter_torus_vaporwave = new ResourceLocation(RefStrings.MODID, "textures/models/iter/torus_vaporwave.png");
public static final ResourceLocation fusion_torus_tex = new ResourceLocation(RefStrings.MODID, "textures/models/fusion/torus.png");
public static final ResourceLocation fusion_plasma_tex = new ResourceLocation(RefStrings.MODID, "textures/models/fusion/plasma.png");
public static final ResourceLocation fusion_plasma_glow_tex = new ResourceLocation(RefStrings.MODID, "textures/models/fusion/plasma_glow.png");
public static final ResourceLocation fusion_plasma_sparkle_tex = new ResourceLocation(RefStrings.MODID, "textures/models/fusion/plasma_sparkle.png");
public static final ResourceLocation fusion_klystron_tex = new ResourceLocation(RefStrings.MODID, "textures/models/fusion/klystron.png");
public static final ResourceLocation fusion_breeder_tex = new ResourceLocation(RefStrings.MODID, "textures/models/fusion/breeder.png");
public static final ResourceLocation fusion_collector_tex = new ResourceLocation(RefStrings.MODID, "textures/models/fusion/collector.png");

View File

@ -36,8 +36,7 @@ public class RenderFusionMHDT extends TileEntitySpecialRenderer implements IItem
TileEntityFusionMHDT turbine = (TileEntityFusionMHDT) tile;
GL11.glPushMatrix();
float rot = (turbine.prevRotor + (turbine.rotor - turbine.prevRotor) * interp) % 30;
rot -= 15;
float rot = (turbine.prevRotor + (turbine.rotor - turbine.prevRotor) * interp) % 15;
GL11.glTranslated(0, 1.5, 0);
GL11.glRotated(rot, 1, 0, 0);
GL11.glTranslated(0, -1.5, 0);

View File

@ -3,10 +3,15 @@ package com.hbm.render.tileentity;
import org.lwjgl.opengl.GL11;
import com.hbm.blocks.ModBlocks;
import com.hbm.inventory.recipes.FusionRecipe;
import com.hbm.main.MainRegistry;
import com.hbm.main.ResourceManager;
import com.hbm.render.item.ItemRenderBase;
import com.hbm.tileentity.machine.fusion.TileEntityFusionTorus;
import com.hbm.util.BobMathUtil;
import com.hbm.util.Clock;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.item.Item;
import net.minecraft.tileentity.TileEntity;
@ -38,6 +43,80 @@ public class RenderFusionTorus extends TileEntitySpecialRenderer implements IIte
if(torus.connections[2]) ResourceManager.fusion_torus.renderPart("Bolts3");
if(torus.connections[3]) ResourceManager.fusion_torus.renderPart("Bolts1");
FusionRecipe recipe = (FusionRecipe) torus.fusionModule.getRecipe();
if(torus.plasmaEnergy > 0 && recipe != null) {
long time = Clock.get_ms() + torus.timeOffset;
float alpha = 0.35F + (float) (Math.sin(time / 1000D) * 0.25F);
float r = recipe.r;
float g = recipe.g;
float b = recipe.b;
double mainOsc = BobMathUtil.sps(time / 1000D) % 1D;
double glowOsc = Math.sin(time / 2000D) % 1D;
double glowExtra = time / 10000D % 1D;
double sparkleSpin = time / 500D * -1 % 1D;
double sparkleOsc = Math.sin(time / 1000D) * 0.5D % 1D;
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F);
GL11.glDisable(GL11.GL_CULL_FACE);
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glPushAttrib(GL11.GL_LIGHTING_BIT);
GL11.glDisable(GL11.GL_ALPHA_TEST);
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE);
GL11.glDepthMask(false);
GL11.glColor4f(r, g, b, alpha);
GL11.glMatrixMode(GL11.GL_TEXTURE);
GL11.glLoadIdentity();
bindTexture(ResourceManager.fusion_plasma_tex);
GL11.glTranslated(0, mainOsc, 0);
ResourceManager.fusion_torus.renderPart("Plasma");
GL11.glMatrixMode(GL11.GL_TEXTURE);
GL11.glLoadIdentity();
GL11.glMatrixMode(GL11.GL_MODELVIEW);
// cost-cutting measure, don't render extra layers from more than 100m away
if(MainRegistry.proxy.me().getDistanceSq(torus.xCoord + 0.5, torus.yCoord + 2.5, torus.zCoord + 0.5) < 100 * 100) {
GL11.glColor4f(r * 2, g * 2, b * 2, alpha * 2);
GL11.glMatrixMode(GL11.GL_TEXTURE);
GL11.glLoadIdentity();
bindTexture(ResourceManager.fusion_plasma_glow_tex);
GL11.glTranslated(0, glowOsc + glowExtra, 0);
ResourceManager.fusion_torus.renderPart("Plasma");
GL11.glMatrixMode(GL11.GL_TEXTURE);
GL11.glLoadIdentity();
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glColor4f(r * 2, g * 2, b * 2, 0.75F);
GL11.glMatrixMode(GL11.GL_TEXTURE);
GL11.glLoadIdentity();
bindTexture(ResourceManager.fusion_plasma_sparkle_tex);
GL11.glTranslated(sparkleSpin, sparkleOsc, 0);
ResourceManager.fusion_torus.renderPart("Plasma");
GL11.glMatrixMode(GL11.GL_TEXTURE);
GL11.glLoadIdentity();
GL11.glMatrixMode(GL11.GL_MODELVIEW);
}
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glEnable(GL11.GL_ALPHA_TEST);
GL11.glDisable(GL11.GL_BLEND);
GL11.glDepthMask(true);
GL11.glPopAttrib();
GL11.glEnable(GL11.GL_CULL_FACE);
}
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glPopMatrix();

View File

@ -70,10 +70,10 @@ public class TileEntityFusionBoiler extends TileEntityLoadedBase implements IFlu
return new DirPos[] {
//new DirPos(xCoord + dir.offsetX * 5, yCoord + 2, zCoord + dir.offsetZ * 5, dir),
new DirPos(xCoord - dir.offsetX * 1 + rot.offsetX * 3, yCoord, zCoord - dir.offsetZ * 1 + rot.offsetZ * 3, rot),
new DirPos(xCoord - dir.offsetX * 1 - rot.offsetX * 3, yCoord, zCoord - dir.offsetZ * 1 - rot.offsetZ * 3, rot.getOpposite()),
new DirPos(xCoord + dir.offsetX * 2 + rot.offsetX * 3, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * 3, rot),
new DirPos(xCoord + dir.offsetX * 2 - rot.offsetX * 3, yCoord, zCoord + dir.offsetZ * 2 - rot.offsetZ * 3, rot.getOpposite())
new DirPos(xCoord - dir.offsetX * 1 + rot.offsetX * 2, yCoord, zCoord - dir.offsetZ * 1 + rot.offsetZ * 2, rot),
new DirPos(xCoord - dir.offsetX * 1 - rot.offsetX * 2, yCoord, zCoord - dir.offsetZ * 1 - rot.offsetZ * 2, rot.getOpposite()),
new DirPos(xCoord + dir.offsetX * 2 + rot.offsetX * 2, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * 2, rot),
new DirPos(xCoord + dir.offsetX * 2 - rot.offsetX * 2, yCoord, zCoord + dir.offsetZ * 2 - rot.offsetZ * 2, rot.getOpposite())
};
}
@ -92,6 +92,10 @@ public class TileEntityFusionBoiler extends TileEntityLoadedBase implements IFlu
if(steamCycles > 0) {
tanks[0].setFill(tanks[0].getFill() - steamCycles);
tanks[1].setFill(tanks[1].getFill() + steamCycles);
if(worldObj.rand.nextInt(200) == 0) {
worldObj.playSoundEffect(xCoord + 0.5, yCoord + 2, zCoord + 0.5, "hbm:block.boilerGroan", 2.5F, 1.0F);
}
}
}

View File

@ -58,6 +58,7 @@ public class TileEntityFusionTorus extends TileEntityCooledBase implements IGUIP
public static final float MAGNET_ACCELERATION = 0.25F;
private AudioWrapper audio;
public int timeOffset = -1;
public TileEntityFusionTorus() {
super(3);
@ -195,6 +196,8 @@ public class TileEntityFusionTorus extends TileEntityCooledBase implements IGUIP
this.klystronEnergy = 0;
} else {
if(timeOffset == -1) this.timeOffset = worldObj.rand.nextInt(30_000);
double powerFactor = TileEntityFusionTorus.getSpeedScaled(this.getMaxPower(), power);
if(this.didProcess) this.magnetSpeed += MAGNET_ACCELERATION;

View File

@ -6445,8 +6445,10 @@ tool.ability.smelter=Auto-Smelter
turret.animals=Target Passive: %s
turret.arty.artillery=§eArtillery Mode$Grace: 250m$Range: 3,000m
turret.arty.artillery_rocket=§eArtillery Mode$Grace: 250m$Range: 5,000m
turret.arty.cannon=§eCannon Mode$Grace: 32m$Range: 250m
turret.arty.manual=§eManual Mode$Range: 3,000m
turret.arty.manual_rocket=§eManual Mode$Range: 5,000m
turret.machines=Target Machines: %s
turret.mobs=Target Mobs: %s
turret.none=None

View File

@ -6,6 +6,6 @@
"en_US": "Fusion Reactor Boiler"
},
"content": {
"en_US": "Simplest energy-extracting component of a [[fusion reactor|Fusion Reactor]], uses the plasma output energy (measured in TU/t) from the [[torus|Fusion Reactor Plasma Vessel]] to boil water into [[super dense steam|Super Dense Steam]]. Each mB of water uses 200TU to boil, as a boiler would, however, the fusion reactor boiler produces a higher compression level of steam directly, making it more efficient than conventional boilers.<br><br>Due to using plasma energy, boilers are affected by port sharing rules, meaning that having multiple connected boilers (or [[MHDTs|MHD Turbine]]) decreases the amount of energy each boiler gets, but overall increases the total amount extracted from the torus."
"en_US": "Simplest energy-extracting component of a [[fusion reactor|Fusion Reactor]], uses the plasma output energy (measured in TU/t) from the [[torus|Fusion Reactor Vessel]] to boil water into [[super dense steam|Super Dense Steam]]. Each mB of water uses 200TU to boil, as a boiler would, however, the fusion reactor boiler produces a higher compression level of steam directly, making it more efficient than conventional boilers.<br><br>Due to using plasma energy, boilers are affected by port sharing rules, meaning that having multiple connected boilers (or [[MHDTs|MHD Turbine]]) decreases the amount of energy each boiler gets, but overall increases the total amount extracted from the torus."
}
}

View File

@ -6,6 +6,6 @@
"en_US": "Fusion Reactor Breeding Chamber"
},
"content": {
"en_US": "Uses neutron flux from a fusion reactor's [[torus|Fusion Reactor Plasma Vessel]] in order to process materials. Can perform any recipe from the [[RBMK irradiation channel|RBMK Irradiation Channel]], plus a few unique recipes with liquid inputs. Neutron flux output is not affected by port sharing rules, the neutron flux output level on a torus is constant across all ports no matter how many components are attached to it."
"en_US": "Uses neutron flux from a fusion reactor's [[torus|Fusion Reactor Vessel]] in order to process materials. Can perform any recipe from the [[RBMK irradiation channel|RBMK Irradiation Channel]], plus a few unique recipes with liquid inputs. Neutron flux output is not affected by port sharing rules, the neutron flux output level on a torus is constant across all ports no matter how many components are attached to it."
}
}

View File

@ -6,6 +6,6 @@
"en_US": "Fusion Reactor Collector Chamber"
},
"content": {
"en_US": "Can be attached to a fusion reactor's [[torus|Fusion Reactor Plasma Vessel]] in order to increase the byproduct production rate by 50%. The byproducts are extracted from the torus itself, the collector does not have a GUI, nor ports. The collector also does not use the plasma's flux or energy level, so other components affected by energy sharing are unaffected."
"en_US": "Can be attached to a fusion reactor's [[torus|Fusion Reactor Vessel]] in order to increase the byproduct production rate by 50%. The byproducts are extracted from the torus itself, the collector does not have a GUI, nor ports. The collector also does not use the plasma's flux or energy level, so other components affected by energy sharing are unaffected."
}
}

View File

@ -6,6 +6,6 @@
"en_US": "Fusion Reactor Coupler"
},
"content": {
"en_US": "Small and unassuming, yet the most powerful part of a [[fusion reactor|Fusion Reactor]] setup, the coupler turns outgoing plasma energy from a [[torus|Fusion Reactor Plasma Vessel]] into usable klystron energy which can be used as the power source for another torus. Some fuel combinations require this, as the minimum klystron energy needed to ignite the plasma exceeds what four [[klystrons|Klystron]] could deliver.<br><br>Affected by port sharing rules, keep in mind that the coupler's output will be affected when using [[boilers|Fusion Reactor Boiler]] or [[MHDTs|MHD Turbine]] on the torus it draws power from."
"en_US": "Small and unassuming, yet the most powerful part of a [[fusion reactor|Fusion Reactor]] setup, the coupler turns outgoing plasma energy from a [[torus|Fusion Reactor Vessel]] into usable klystron energy which can be used as the power source for another torus. Some fuel combinations require this, as the minimum klystron energy needed to ignite the plasma exceeds what four [[klystrons|Klystron]] could deliver.<br><br>Affected by port sharing rules, keep in mind that the coupler's output will be affected when using [[boilers|Fusion Reactor Boiler]] or [[MHDTs|MHD Turbine]] on the torus it draws power from."
}
}

View File

@ -6,6 +6,6 @@
"en_US": "Fusion Reactor"
},
"content": {
"en_US": "A powerful and versatile reactor that fuses light elements into heavier ones. Depending on the setup, reactors may be specialized to make as much power as possible, or to make a lot of byproducts efficiently.<br><br>Components:<br>* [[Fusion Reactor Plasma Vessel]]: Core component, this is where the plasma is created<br>* [[Klystron]]: Primary energy source<br>* [[Fusion Reactor Collector Chamber]]: Increases byproduct yield<br>* [[Fusion Reactor Breeding Chamber]]: Uses neutron flux from the vessel to process materials<br>* [[Fusion Reactor Boiler]]: Uses plasma energy to boil water<br>* [[MHD Turbine]]: Uses plasma energy to generate electricity directly<br>* [[Fusion Reactor Coupler]]: Uses plasma energy to generate usable klystron energy, allowing plasma vessels to be chained<br><br>The most basic setup for a fusion reactor is a single plasma vessel (\"torus\"), supplied with power and [[perfluoromethyl|Perfluoromethyl]] cooling, and an air-cooled klystron to ignite its plasma. Depending on its purpose, power-generating parts such as boilers and MHDTs, or byproduct-yielding parts like collectors and breeders may be added.<br><br>More advanced setups may employ couplers to create the energy needed to ignite higher-tier plasmas, creating a setup with two ore more toruses. Byproducts from lower stages can be used for certain higher tier plasma types, so one torus may provide both ignition energy and fuel for another."
"en_US": "A powerful and versatile reactor that fuses light elements into heavier ones. Depending on the setup, reactors may be specialized to make as much power as possible, or to make a lot of byproducts efficiently.<br><br>Components:<br>* [[Fusion Reactor Vessel]]: Core component, this is where the plasma is created<br>* [[Klystron]]: Primary energy source<br>* [[Fusion Reactor Collector Chamber]]: Increases byproduct yield<br>* [[Fusion Reactor Breeding Chamber]]: Uses neutron flux from the vessel to process materials<br>* [[Fusion Reactor Boiler]]: Uses plasma energy to boil water<br>* [[MHD Turbine]]: Uses plasma energy to generate electricity directly<br>* [[Fusion Reactor Coupler]]: Uses plasma energy to generate usable klystron energy, allowing plasma vessels to be chained<br><br>The most basic setup for a fusion reactor is a single plasma vessel (\"torus\"), supplied with power and [[perfluoromethyl|Perfluoromethyl]] cooling, and an air-cooled klystron to ignite its plasma. Depending on its purpose, power-generating parts such as boilers and MHDTs, or byproduct-yielding parts like collectors and breeders may be added.<br><br>More advanced setups may employ couplers to create the energy needed to ignite higher-tier plasmas, creating a setup with two ore more toruses. Byproducts from lower stages can be used for certain higher tier plasma types, so one torus may provide both ignition energy and fuel for another."
}
}

View File

@ -6,6 +6,6 @@
"en_US": "Klystron"
},
"content": {
"en_US": "Main power source of a [[fusion reactor|Fusion Reactor]], uses electricity and [[compressed air|Compressed Air]] to generate input energy (klystron energy or KyU) for the connected [[torus|Fusion Reactor Plasma Vessel]]. The output target needs to be defined in the GUI. Will throttle if either the buffered electricity or compressed air falls below 50%. If the klystron's output falls below the connected torus' required input level, it will not throttle, rather the plasma will immediately extinguish."
"en_US": "Main power source of a [[fusion reactor|Fusion Reactor]], uses electricity and [[compressed air|Compressed Air]] to generate input energy (klystron energy or KyU) for the connected [[torus|Fusion Reactor Vessel]]. The output target needs to be defined in the GUI. Will throttle if either the buffered electricity or compressed air falls below 50%. If the klystron's output falls below the connected torus' required input level, it will not throttle, rather the plasma will immediately extinguish."
}
}

View File

@ -1,9 +1,9 @@
{
"name": "Fusion Reactor Plasma Vessel",
"name": "Fusion Reactor Vessel",
"icon": ["hbm:tile.fusion_torus", 1, 0],
"trigger": [["hbm:tile.fusion_torus"]],
"title": {
"en_US": "Fusion Reactor Plasma Vessel"
"en_US": "Fusion Reactor Vessel"
},
"content": {
"en_US": "\"Torus\", main component of the [[fusion reactor|Fusion Reactor]], uses fuel and energy from a [[klystron|Klystron]] to generate plasma. Also requires electricity and cooling via [[perfluoromethyl|Perfluoromethyl]] to operate.<br><br>Features four connection ports for external components. Devices that use plasma energy (and not just neutron flux) split the total output, a single component will receive 100% of the energy, two components will receive 62.5% each and three components get 50% each. Therefore, using multiple [[boilers|Fusion Reactor Boiler]] or [[MHDTs|MHD Turbine]] increases the total energy output, although with diminishing returns. Flux levels are not affected when shared, the output remains steady across all ports no matter how many attachments are used.<br><br>Both the buffered electric charge and fuel levels determine working speed, if either is below 50%, the reactor will start to throttle, burnng slower and decreasing output energy. The klystron energy does not affect processing speed, too little energy will simply fail to ignite the plasma, and more energy will not accelerate the reaction."

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 B

After

Width:  |  Height:  |  Size: 260 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 378 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB