steam engine model, some more config crap

This commit is contained in:
Bob 2022-11-03 23:16:40 +01:00
parent 2f0c9de15b
commit 385a7cef83
11 changed files with 6850 additions and 35 deletions

View File

@ -975,9 +975,9 @@ public class ModBlocks {
public static Block machine_boiler_electric_on;
public static final int guiID_machine_boiler_electric = 73;
public static Block machine_steam_engine;
public static Block machine_turbine;
public static final int guiID_machine_turbine = 74;
public static Block machine_large_turbine;
public static final int guiID_machine_large_turbine = 100;
@ -2225,6 +2225,7 @@ public class ModBlocks {
machine_boiler_electric_off = new MachineBoiler(false).setBlockName("machine_boiler_electric_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_boiler_electric_off");
machine_boiler_electric_on = new MachineBoiler(true).setBlockName("machine_boiler_electric_on").setHardness(5.0F).setResistance(10.0F).setLightLevel(1.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":machine_boiler_electric_on");
machine_steam_engine = new MachineSteamEngine().setBlockName("machine_steam_engine").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
machine_turbine = new MachineTurbine(Material.iron).setBlockName("machine_turbine").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_turbine");
machine_large_turbine = new MachineLargeTurbine(Material.iron).setBlockName("machine_large_turbine").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_large_turbine");
machine_chungus = new MachineChungus(Material.iron).setBlockName("machine_chungus").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_chungus");
@ -3198,6 +3199,7 @@ public class ModBlocks {
GameRegistry.registerBlock(machine_boiler_on, machine_boiler_on.getUnlocalizedName());
GameRegistry.registerBlock(machine_boiler_electric_on, machine_boiler_electric_on.getUnlocalizedName());
GameRegistry.registerBlock(machine_boiler_electric_off, machine_boiler_electric_off.getUnlocalizedName());
register(machine_steam_engine);
register(machine_turbine);
register(machine_large_turbine);
register(machine_chungus);

View File

@ -0,0 +1,31 @@
package com.hbm.blocks.machine;
import com.hbm.blocks.BlockDummyable;
import com.hbm.tileentity.machine.TileEntitySteamEngine;
import net.minecraft.block.material.Material;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
public class MachineSteamEngine extends BlockDummyable {
public MachineSteamEngine() {
super(Material.iron);
}
@Override
public TileEntity createNewTileEntity(World world, int meta) {
if(meta >= 12) return new TileEntitySteamEngine();
return null;
}
@Override
public int[] getDimensions() {
return new int[] {1, 0, 5, 1, 1, 1};
}
@Override
public int getOffset() {
return 1;
}
}

View File

@ -255,6 +255,7 @@ public class ClientProxy extends ServerProxy {
ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySawmill.class, new RenderSawmill());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCrucible.class, new RenderCrucible());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeatBoiler.class, new RenderBoiler());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySteamEngine.class, new RenderSteamEngine());
//Foundry
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryBasin.class, new RenderFoundry());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryMold.class, new RenderFoundry());

View File

@ -106,8 +106,9 @@ public class ResourceManager {
public static final IModelCustom turbofan = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/turbofan.obj"));
//Large Turbine
public static final IModelCustom steam_engine = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/steam_engine.obj")).asDisplayList();
public static final IModelCustom turbine = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/turbine.obj"));
public static final IModelCustom chungus = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/chungus.obj"));
public static final IModelCustom chungus = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/chungus.obj")).asDisplayList();
//Cooling Tower
public static final IModelCustom tower_small = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/tower_small.obj"));
@ -425,6 +426,7 @@ public class ResourceManager {
public static final ResourceLocation turbofan_afterburner_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/turbofan_afterburner.png");
//Large Turbine
public static final ResourceLocation steam_engine_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/steam_engine.png");
public static final ResourceLocation turbine_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/turbine.png");
public static final ResourceLocation chungus_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/chungus.png");

View File

@ -0,0 +1,73 @@
package com.hbm.render.tileentity;
import org.lwjgl.opengl.GL11;
import com.hbm.blocks.BlockDummyable;
import com.hbm.main.ResourceManager;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
public class RenderSteamEngine extends TileEntitySpecialRenderer {
@Override
public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) {
GL11.glPushMatrix();
GL11.glTranslated(x + 0.5D, y, z + 0.5D);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_CULL_FACE);
switch(tile.getBlockMetadata() - BlockDummyable.offset) {
case 3: GL11.glRotatef(90, 0F, 1F, 0F); break;
case 5: GL11.glRotatef(180, 0F, 1F, 0F); break;
case 2: GL11.glRotatef(270, 0F, 1F, 0F); break;
case 4: GL11.glRotatef(0, 0F, 1F, 0F); break;
}
GL11.glTranslated(2, 0, 0);
GL11.glShadeModel(GL11.GL_SMOOTH);
double angle = System.currentTimeMillis() % 3600D;
bindTexture(ResourceManager.steam_engine_tex);
ResourceManager.steam_engine.renderPart("Base");
GL11.glPushMatrix();
GL11.glTranslated(2, 1.375, 0);
GL11.glRotated(angle, 0, 0, -1);
GL11.glTranslated(-2, -1.375, 0);
ResourceManager.steam_engine.renderPart("Flywheel");
GL11.glPopMatrix();
GL11.glPushMatrix();
GL11.glTranslated(0, 1.375, -0.5);
GL11.glRotated(angle * 2D, 1, 0, 0);
GL11.glTranslated(0, -1.375, 0.5);
ResourceManager.steam_engine.renderPart("Shaft");
GL11.glPopMatrix();
GL11.glPushMatrix();
double sin = Math.sin(angle * Math.PI / 180D) * 0.25D - 0.25D;
double cos = Math.cos(angle * Math.PI / 180D) * 0.25D;
double ang = Math.acos(cos / 1.875D);
GL11.glTranslated(sin, cos, 0);
GL11.glTranslated(2.25, 1.375, 0);
GL11.glRotated(ang * 180D / Math.PI - 90D, 0, 0, -1);
GL11.glTranslated(-2.25, -1.375, 0);
ResourceManager.steam_engine.renderPart("Transmission");
GL11.glPopMatrix();
GL11.glPushMatrix();
double cath = Math.sqrt(3.515625D - (cos * cos));
GL11.glTranslated(1.875 - cath + sin, 0, 0); //the difference that "1.875 - cath" makes is minuscule but very much noticeable
ResourceManager.steam_engine.renderPart("Piston");
GL11.glPopMatrix();
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glPopMatrix();
}
}

View File

@ -22,6 +22,10 @@ public interface IConfigurableMachine {
return obj.has(name) ? obj.get(name).getAsInt() : def;
}
public static long grab(JsonObject obj, String name, long def) {
return obj.has(name) ? obj.get(name).getAsLong() : def;
}
public static double grab(JsonObject obj, String name, double def) {
return obj.has(name) ? obj.get(name).getAsDouble() : def;
}

View File

@ -116,7 +116,6 @@ public class TileMappings {
put(TileEntityMachineGasCent.class, "tileentity_gas_centrifuge");
put(TileEntityMachineBoiler.class, "tileentity_boiler");
put(TileEntityMachineBoilerElectric.class, "tileentity_electric_boiler");
put(TileEntityMachineTurbine.class, "tileentity_turbine");
put(TileEntityGeiger.class, "tileentity_geiger");
put(TileEntityFF.class, "tileentity_forcefield");
put(TileEntityForceField.class, "tileentity_machine_field");
@ -158,7 +157,6 @@ public class TileMappings {
put(TileEntityMachineFENSU.class, "tileentity_fensu");
put(TileEntityTrappedBrick.class, "tileentity_trapped_brick");
put(TileEntityPlasmaStruct.class, "tileentity_plasma_struct");
put(TileEntityMachineLargeTurbine.class, "tileentity_industrial_turbine");
put(TileEntityHadronDiode.class, "tileentity_hadron_diode");
put(TileEntityHadronPower.class, "tileentity_hadron_power");
put(TileEntityHadron.class, "tileentity_hadron");
@ -172,7 +170,6 @@ public class TileMappings {
put(TileEntityDemonLamp.class, "tileentity_demonlamp");
put(TileEntityStorageDrum.class, "tileentity_waste_storage_drum");
put(TileEntityDeaerator.class, "tileentity_deaerator");
put(TileEntityChungus.class, "tileentity_chungus");
put(TileEntityCableBaseNT.class, "tileentity_ohgod");
put(TileEntityPipeBaseNT.class, "tileentity_pipe_base");
put(TileEntityWatz.class, "tileentity_watz");
@ -263,6 +260,11 @@ public class TileMappings {
put(TileEntityMachineSolidifier.class, "tileentity_solidifier");
put(TileEntityElectrolyser.class, "tileentity_electrolyser");
put(TileEntitySteamEngine.class, "tileentity_steam_engine");
put(TileEntityMachineTurbine.class, "tileentity_turbine");
put(TileEntityMachineLargeTurbine.class, "tileentity_industrial_turbine");
put(TileEntityChungus.class, "tileentity_chungus");
put(TileEntityMachineAssembler.class, "tileentity_assembly_machine");
put(TileEntityMachineAssemfac.class, "tileentity_assemfac");
put(TileEntityMachineChemplant.class, "tileentity_chemical_plant");

View File

@ -9,6 +9,10 @@ import net.minecraft.nbt.NBTTagList;
import net.minecraft.tileentity.TileEntityFurnace;
import net.minecraftforge.common.util.ForgeDirection;
import java.io.IOException;
import com.google.gson.JsonObject;
import com.google.gson.stream.JsonWriter;
import com.hbm.blocks.machine.MachineCoal;
import com.hbm.interfaces.IFluidAcceptor;
import com.hbm.interfaces.IFluidContainer;
@ -21,6 +25,7 @@ import com.hbm.lib.Library;
import com.hbm.packet.AuxElectricityPacket;
import com.hbm.packet.AuxGaugePacket;
import com.hbm.packet.PacketDispatcher;
import com.hbm.tileentity.IConfigurableMachine;
import com.hbm.tileentity.TileEntityLoadedBase;
import api.hbm.energy.IBatteryItem;
@ -28,7 +33,7 @@ import api.hbm.energy.IEnergyGenerator;
import api.hbm.fluid.IFluidStandardReceiver;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
public class TileEntityMachineCoal extends TileEntityLoadedBase implements ISidedInventory, IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver {
public class TileEntityMachineCoal extends TileEntityLoadedBase implements ISidedInventory, IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IConfigurableMachine {
private ItemStack slots[];
@ -43,9 +48,14 @@ public class TileEntityMachineCoal extends TileEntityLoadedBase implements ISide
private String customName;
/* CONFIGURABLE CONSTANTS */
public static int waterCap = 5000;
public static int genRate = 25;
public static double fuelMod = 0.5D;
public TileEntityMachineCoal() {
slots = new ItemStack[4];
tank = new FluidTank(Fluids.WATER, 5000, 0);
tank = new FluidTank(Fluids.WATER, waterCap, 0);
}
@Override
@ -270,20 +280,16 @@ public class TileEntityMachineCoal extends TileEntityLoadedBase implements ISide
}
}
if(burnTime > 0)
{
if(burnTime > 0) {
burnTime--;
if(tank.getFill() > 0)
{
if(tank.getFill() > 0) {
tank.setFill(tank.getFill() - 1);
if(power + 25 <= maxPower)
{
power += 25;
} else {
power += genRate;
if(power > maxPower)
power = maxPower;
}
}
}
}
@ -348,4 +354,23 @@ public class TileEntityMachineCoal extends TileEntityLoadedBase implements ISide
public FluidTank[] getAllTanks() {
return new FluidTank[] { tank };
}
@Override
public String getConfigName() {
return "combustiongen";
}
@Override
public void readIfPresent(JsonObject obj) {
waterCap = IConfigurableMachine.grab(obj, "I:waterCapacity", waterCap);
genRate = IConfigurableMachine.grab(obj, "I:powerGen", genRate);
fuelMod = IConfigurableMachine.grab(obj, "D:burnTimeMod", fuelMod);
}
@Override
public void writeConfig(JsonWriter writer) throws IOException {
writer.name("I:waterCapacity").value(waterCap);
writer.name("I:powerGen").value(genRate);
writer.name("D:burnTimeMod").value(fuelMod);
}
}

View File

@ -1,7 +1,11 @@
package com.hbm.tileentity.machine;
import java.io.IOException;
import java.util.HashMap;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.stream.JsonWriter;
import com.hbm.interfaces.IFluidAcceptor;
import com.hbm.interfaces.IFluidContainer;
import com.hbm.inventory.FluidContainerRegistry;
@ -12,6 +16,7 @@ import com.hbm.inventory.fluid.trait.FT_Combustible;
import com.hbm.inventory.fluid.trait.FT_Combustible.FuelGrade;
import com.hbm.items.ModItems;
import com.hbm.lib.Library;
import com.hbm.tileentity.IConfigurableMachine;
import com.hbm.tileentity.TileEntityMachineBase;
import api.hbm.energy.IBatteryItem;
@ -21,13 +26,23 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMachineDiesel extends TileEntityMachineBase implements IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver {
public class TileEntityMachineDiesel extends TileEntityMachineBase implements IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IConfigurableMachine {
public long power;
public int soundCycle = 0;
public static final long maxPower = 50000;
public long powerCap = 50000;
public long powerCap = maxPower;
public FluidTank tank;
/* CONFIGURABLE CONSTANTS */
public static long maxPower = 50000;
public static int fluidCap = 16000;
public static HashMap<FuelGrade, Double> fuelEfficiency = new HashMap();
static {
fuelEfficiency.put(FuelGrade.MEDIUM, 0.9D);
fuelEfficiency.put(FuelGrade.HIGH, 1.0D);
fuelEfficiency.put(FuelGrade.AERO, 0.1D);
}
public static boolean shutUp = false;
private static final int[] slots_top = new int[] { 0 };
private static final int[] slots_bottom = new int[] { 1, 2 };
@ -138,14 +153,6 @@ public class TileEntityMachineDiesel extends TileEntityMachineBase implements IE
return getHEFromFuel() > 0;
}
public static HashMap<FuelGrade, Double> fuelEfficiency = new HashMap();
static {
fuelEfficiency.put(FuelGrade.MEDIUM, 0.9D);
fuelEfficiency.put(FuelGrade.HIGH, 1.0D);
fuelEfficiency.put(FuelGrade.AERO, 0.1D);
}
public long getHEFromFuel() {
return getHEFromFuel(tank.getTankType());
}
@ -170,19 +177,21 @@ public class TileEntityMachineDiesel extends TileEntityMachineBase implements IE
if (hasAcceptableFuel()) {
if (tank.getFill() > 0) {
if (soundCycle == 0) {
this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "fireworks.blast", 1.5F * this.getVolume(3), 0.5F);
if(!shutUp) {
if (soundCycle == 0) {
this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "fireworks.blast", 1.5F * this.getVolume(3), 0.5F);
}
soundCycle++;
}
soundCycle++;
if (soundCycle >= 3)
if(soundCycle >= 3)
soundCycle = 0;
tank.setFill(tank.getFill() - 1);
if (tank.getFill() < 0)
if(tank.getFill() < 0)
tank.setFill(0);
if (power + getHEFromFuel() <= powerCap) {
if(power + getHEFromFuel() <= powerCap) {
power += getHEFromFuel();
} else {
power = powerCap;
@ -241,4 +250,42 @@ public class TileEntityMachineDiesel extends TileEntityMachineBase implements IE
public FluidTank[] getAllTanks() {
return new FluidTank[] { tank };
}
@Override
public String getConfigName() {
return "dieselgen";
}
@Override
public void readIfPresent(JsonObject obj) {
maxPower = IConfigurableMachine.grab(obj, "I:powerCap", maxPower);
fluidCap = IConfigurableMachine.grab(obj, "I:fuelCap", fluidCap);
if(obj.has("D[:efficiency")) {
JsonArray array = obj.get("D[:efficiency").getAsJsonArray();
for(FuelGrade grade : FuelGrade.values()) {
fuelEfficiency.put(grade, array.get(grade.ordinal()).getAsDouble());
}
}
shutUp = IConfigurableMachine.grab(obj, "B:shutUp", shutUp);
}
@Override
public void writeConfig(JsonWriter writer) throws IOException {
writer.name("I:powerCap").value(maxPower);
writer.name("I:fuelCap").value(fluidCap);
String info = "Fuel grades in order: ";
for(FuelGrade grade : FuelGrade.values()) info += grade.name() + " ";
info = info.trim();
writer.name("INFO").value(info);
writer.name("D[:efficiency").beginArray().setIndent("");
for(FuelGrade grade : FuelGrade.values()) {
double d = fuelEfficiency.containsKey(grade) ? fuelEfficiency.get(grade) : 0.0D;
writer.value(d);
}
writer.endArray().setIndent(" ");
writer.name("B:shutUp").value(shutUp);
}
}

View File

@ -0,0 +1,7 @@
package com.hbm.tileentity.machine;
import com.hbm.tileentity.TileEntityLoadedBase;
public class TileEntitySteamEngine extends TileEntityLoadedBase {
}

File diff suppressed because it is too large Load Diff