mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
more exposure chamber crap
This commit is contained in:
parent
f8e9cff64b
commit
1157e691d7
@ -23,7 +23,8 @@
|
|||||||
* Non-custom missiles have been slightly buffed
|
* Non-custom missiles have been slightly buffed
|
||||||
* Explosions are now slightly larger and they use the new cross-detection entity damage code which still affects entities behind small hills that would otherwise be shielded
|
* Explosions are now slightly larger and they use the new cross-detection entity damage code which still affects entities behind small hills that would otherwise be shielded
|
||||||
* Explosions now have a 2x larger entity damage radius
|
* Explosions now have a 2x larger entity damage radius
|
||||||
* Updated the digiminer recipe for mekanism cocmpat
|
* Updated the digiminer recipe for mekanism compat
|
||||||
|
* Added config options to the ground water pumps
|
||||||
|
|
||||||
## Fixed
|
## Fixed
|
||||||
* Fixed ancient bug where custom missiles launched using the launch table would not use the accuracy calculation and always be pin-point accurate
|
* Fixed ancient bug where custom missiles launched using the launch table would not use the accuracy calculation and always be pin-point accurate
|
||||||
|
|||||||
@ -63,7 +63,7 @@ public class ContainerMachineExposureChamber extends Container {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(!this.mergeItemStack(var5, 0, 2, false)) {
|
if(!this.mergeItemStack(var5, 0, 3, false)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -28,7 +28,9 @@ public class GUIMachineExposureChamber extends GuiInfoContainer {
|
|||||||
public void drawScreen(int mouseX, int mouseY, float f) {
|
public void drawScreen(int mouseX, int mouseY, float f) {
|
||||||
super.drawScreen(mouseX, mouseY, f);
|
super.drawScreen(mouseX, mouseY, f);
|
||||||
|
|
||||||
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 18, 16, 52, chamber.power, chamber.maxPower);
|
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 18, 16, 34, chamber.power, chamber.maxPower);
|
||||||
|
|
||||||
|
drawCustomInfoStat(mouseX, mouseY, guiLeft + 26, guiTop + 36, 9, 16, mouseX, mouseY, chamber.savedParticles + " / " + chamber.maxParticles);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -43,5 +45,18 @@ public class GUIMachineExposureChamber extends GuiInfoContainer {
|
|||||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||||
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||||
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||||
|
|
||||||
|
int p = chamber.progress * 42 / (chamber.processTime + 1);
|
||||||
|
drawTexturedModalRect(guiLeft + 36, guiTop + 39, 192, 0, p, 10);
|
||||||
|
|
||||||
|
int c = chamber.savedParticles * 16 / chamber.maxParticles;
|
||||||
|
drawTexturedModalRect(guiLeft + 26, guiTop + 52 - c, 192, 26 - c, 9, c);
|
||||||
|
|
||||||
|
int e = (int) (chamber.power * 34 / chamber.maxPower);
|
||||||
|
drawTexturedModalRect(guiLeft + 152, guiTop + 52 - e, 176, 34 - e, 16, e);
|
||||||
|
|
||||||
|
if(chamber.consumption <= chamber.power) {
|
||||||
|
drawTexturedModalRect(guiLeft + 156, guiTop + 4, 176, 34, 9, 12);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -28,6 +28,11 @@ public class ExposureChamberRecipes extends SerializableRecipe {
|
|||||||
recipes.add(new ExposureChamberRecipe(new ComparableStack(ModItems.particle_sparkticle), new OreDictStack(SBD.ingot()), new ItemStack(ModItems.ingot_dineutronium)));
|
recipes.add(new ExposureChamberRecipe(new ComparableStack(ModItems.particle_sparkticle), new OreDictStack(SBD.ingot()), new ItemStack(ModItems.ingot_dineutronium)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static ExposureChamberRecipe getRecipe(ItemStack particle, ItemStack input) {
|
||||||
|
for(ExposureChamberRecipe recipe : recipes) if(recipe.particle.matchesRecipe(particle, true) && recipe.ingredient.matchesRecipe(input, true)) return recipe;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getFileName() {
|
public String getFileName() {
|
||||||
return "hbmExposureChamber.json";
|
return "hbmExposureChamber.json";
|
||||||
|
|||||||
@ -328,9 +328,8 @@ public abstract class DoorDecl {
|
|||||||
@Override
|
@Override
|
||||||
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) {
|
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) {
|
||||||
if(open) {
|
if(open) {
|
||||||
if(y == 0)
|
if(y == 0) return AxisAlignedBB.getBoundingBox(0, 0, 1 - 0.25, 1, 0, 1);
|
||||||
return AxisAlignedBB.getBoundingBox(0, 0, 1 - 0.25, 1, 0.125, 1);
|
return AxisAlignedBB.getBoundingBox(0, 0.9375, 1 - 0.25, 1, 1, 1);
|
||||||
return super.getBlockBound(x, y, z, open);
|
|
||||||
} else {
|
} else {
|
||||||
return AxisAlignedBB.getBoundingBox(0, 0, 1 - 0.25, 1, 1, 1);
|
return AxisAlignedBB.getBoundingBox(0, 0, 1 - 0.25, 1, 1, 1);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,12 @@
|
|||||||
package com.hbm.tileentity.machine;
|
package com.hbm.tileentity.machine;
|
||||||
|
|
||||||
|
import com.hbm.inventory.UpgradeManager;
|
||||||
import com.hbm.inventory.container.ContainerMachineExposureChamber;
|
import com.hbm.inventory.container.ContainerMachineExposureChamber;
|
||||||
import com.hbm.inventory.gui.GUIMachineExposureChamber;
|
import com.hbm.inventory.gui.GUIMachineExposureChamber;
|
||||||
|
import com.hbm.inventory.recipes.ExposureChamberRecipes;
|
||||||
|
import com.hbm.inventory.recipes.ExposureChamberRecipes.ExposureChamberRecipe;
|
||||||
|
import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType;
|
||||||
|
import com.hbm.lib.Library;
|
||||||
import com.hbm.tileentity.IGUIProvider;
|
import com.hbm.tileentity.IGUIProvider;
|
||||||
import com.hbm.tileentity.TileEntityMachineBase;
|
import com.hbm.tileentity.TileEntityMachineBase;
|
||||||
|
|
||||||
@ -11,6 +16,7 @@ import io.netty.buffer.ByteBuf;
|
|||||||
import net.minecraft.client.gui.GuiScreen;
|
import net.minecraft.client.gui.GuiScreen;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.inventory.Container;
|
import net.minecraft.inventory.Container;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.AxisAlignedBB;
|
import net.minecraft.util.AxisAlignedBB;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
@ -22,6 +28,10 @@ public class TileEntityMachineExposureChamber extends TileEntityMachineBase impl
|
|||||||
public int progress;
|
public int progress;
|
||||||
public static final int processTimeBase = 200;
|
public static final int processTimeBase = 200;
|
||||||
public int processTime = processTimeBase;
|
public int processTime = processTimeBase;
|
||||||
|
public static final int consumptionBase = 10_000;
|
||||||
|
public int consumption = consumptionBase;
|
||||||
|
public int savedParticles;
|
||||||
|
public static final int maxParticles = 8;
|
||||||
public boolean isOn = false;
|
public boolean isOn = false;
|
||||||
public float rotation;
|
public float rotation;
|
||||||
public float prevRotation;
|
public float prevRotation;
|
||||||
@ -50,6 +60,81 @@ public class TileEntityMachineExposureChamber extends TileEntityMachineBase impl
|
|||||||
if(!worldObj.isRemote) {
|
if(!worldObj.isRemote) {
|
||||||
|
|
||||||
this.isOn = false;
|
this.isOn = false;
|
||||||
|
this.power = Library.chargeTEFromItems(slots, 5, power, maxPower);
|
||||||
|
|
||||||
|
UpgradeManager.eval(slots, 6, 7);
|
||||||
|
int speedLevel = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3);
|
||||||
|
int powerLevel = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3);
|
||||||
|
int overdriveLevel = Math.min(UpgradeManager.getLevel(UpgradeType.OVERDRIVE), 3);
|
||||||
|
|
||||||
|
this.consumption = this.consumptionBase;
|
||||||
|
|
||||||
|
this.processTime = this.processTimeBase - this.processTimeBase / 4 * speedLevel;
|
||||||
|
this.consumption *= (speedLevel / 2 + 1);
|
||||||
|
this.processTime *= (powerLevel / 2 + 1);
|
||||||
|
this.consumption /= (powerLevel + 1);
|
||||||
|
this.processTime /= (overdriveLevel + 1);
|
||||||
|
this.consumption *= (overdriveLevel * 2 + 1);
|
||||||
|
|
||||||
|
if(slots[1] == null && slots[0] != null && slots[3] != null && this.savedParticles <= 0) {
|
||||||
|
ExposureChamberRecipe recipe = this.getRecipe(slots[0], slots[3]);
|
||||||
|
|
||||||
|
if(recipe != null) {
|
||||||
|
|
||||||
|
ItemStack container = slots[0].getItem().getContainerItem(slots[0]);
|
||||||
|
|
||||||
|
boolean canStore = false;
|
||||||
|
|
||||||
|
if(container == null) {
|
||||||
|
canStore = true;
|
||||||
|
} else if(slots[2] == null) {
|
||||||
|
slots[2] = container.copy();
|
||||||
|
canStore = true;
|
||||||
|
} else if(slots[2].getItem() == container.getItem() && slots[2].getItemDamage() == container.getItemDamage() && slots[2].stackSize < slots[2].getMaxStackSize()) {
|
||||||
|
slots[2].stackSize++;
|
||||||
|
canStore = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(canStore) {
|
||||||
|
slots[1] = slots[0].copy();
|
||||||
|
slots[1].stackSize = 0;
|
||||||
|
this.decrStackSize(0, 1);
|
||||||
|
this.savedParticles = this.maxParticles;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(slots[1] != null && this.savedParticles > 0 && this.power >= this.consumption) {
|
||||||
|
ExposureChamberRecipe recipe = this.getRecipe(slots[1], slots[3]);
|
||||||
|
|
||||||
|
if(recipe != null && (slots[4] == null || (slots[4].getItem() == recipe.output.getItem() && slots[4].getItemDamage() == recipe.output.getItemDamage() && slots[4].stackSize + recipe.output.stackSize <= slots[4].getMaxStackSize()))) {
|
||||||
|
this.progress++;
|
||||||
|
this.power -= this.consumption;
|
||||||
|
this.isOn = true;
|
||||||
|
|
||||||
|
if(this.progress >= this.processTime) {
|
||||||
|
this.progress = 0;
|
||||||
|
this.savedParticles--;
|
||||||
|
this.decrStackSize(3, 1);
|
||||||
|
|
||||||
|
if(slots[4] == null) {
|
||||||
|
slots[4] = recipe.output.copy();
|
||||||
|
} else {
|
||||||
|
slots[4].stackSize += recipe.output.stackSize;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
this.progress = 0;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.progress = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(this.savedParticles <= 0) {
|
||||||
|
slots[1] = null;
|
||||||
|
}
|
||||||
|
|
||||||
this.networkPackNT(50);
|
this.networkPackNT(50);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
@ -67,11 +152,18 @@ public class TileEntityMachineExposureChamber extends TileEntityMachineBase impl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ExposureChamberRecipe getRecipe(ItemStack particle, ItemStack ingredient) {
|
||||||
|
return ExposureChamberRecipes.getRecipe(particle, ingredient);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void serialize(ByteBuf buf) {
|
public void serialize(ByteBuf buf) {
|
||||||
buf.writeBoolean(this.isOn);
|
buf.writeBoolean(this.isOn);
|
||||||
buf.writeInt(this.progress);
|
buf.writeInt(this.progress);
|
||||||
buf.writeInt(this.processTime);
|
buf.writeInt(this.processTime);
|
||||||
|
buf.writeInt(this.consumption);
|
||||||
|
buf.writeLong(this.power);
|
||||||
|
buf.writeByte((byte) this.savedParticles);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -79,6 +171,9 @@ public class TileEntityMachineExposureChamber extends TileEntityMachineBase impl
|
|||||||
this.isOn = buf.readBoolean();
|
this.isOn = buf.readBoolean();
|
||||||
this.progress = buf.readInt();
|
this.progress = buf.readInt();
|
||||||
this.processTime = buf.readInt();
|
this.processTime = buf.readInt();
|
||||||
|
this.consumption = buf.readInt();
|
||||||
|
this.power = buf.readLong();
|
||||||
|
this.savedParticles = buf.readByte();
|
||||||
}
|
}
|
||||||
|
|
||||||
AxisAlignedBB bb = null;
|
AxisAlignedBB bb = null;
|
||||||
|
|||||||
@ -1,11 +1,15 @@
|
|||||||
package com.hbm.tileentity.machine;
|
package com.hbm.tileentity.machine;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import com.google.gson.stream.JsonWriter;
|
||||||
import com.hbm.blocks.ModBlocks;
|
import com.hbm.blocks.ModBlocks;
|
||||||
import com.hbm.inventory.fluid.tank.FluidTank;
|
import com.hbm.inventory.fluid.tank.FluidTank;
|
||||||
import com.hbm.lib.Library;
|
import com.hbm.lib.Library;
|
||||||
import com.hbm.main.MainRegistry;
|
import com.hbm.main.MainRegistry;
|
||||||
|
import com.hbm.tileentity.IConfigurableMachine;
|
||||||
import com.hbm.tileentity.INBTPacketReceiver;
|
import com.hbm.tileentity.INBTPacketReceiver;
|
||||||
import com.hbm.tileentity.TileEntityLoadedBase;
|
import com.hbm.tileentity.TileEntityLoadedBase;
|
||||||
import com.hbm.util.fauxpointtwelve.DirPos;
|
import com.hbm.util.fauxpointtwelve.DirPos;
|
||||||
@ -18,7 +22,7 @@ import net.minecraft.init.Blocks;
|
|||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.util.AxisAlignedBB;
|
import net.minecraft.util.AxisAlignedBB;
|
||||||
|
|
||||||
public abstract class TileEntityMachinePumpBase extends TileEntityLoadedBase implements IFluidStandardTransceiver, INBTPacketReceiver {
|
public abstract class TileEntityMachinePumpBase extends TileEntityLoadedBase implements IFluidStandardTransceiver, INBTPacketReceiver, IConfigurableMachine {
|
||||||
|
|
||||||
public static final HashSet<Block> validBlocks = new HashSet();
|
public static final HashSet<Block> validBlocks = new HashSet();
|
||||||
|
|
||||||
@ -42,6 +46,32 @@ public abstract class TileEntityMachinePumpBase extends TileEntityLoadedBase imp
|
|||||||
public boolean onGround = false;
|
public boolean onGround = false;
|
||||||
public int groundCheckDelay = 0;
|
public int groundCheckDelay = 0;
|
||||||
|
|
||||||
|
public static int groundHeight = 70;
|
||||||
|
public static int groundDepth = 4;
|
||||||
|
public static int steamSpeed = 1_000;
|
||||||
|
public static int electricSpeed = 10_000;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getConfigName() {
|
||||||
|
return "waterpump";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void readIfPresent(JsonObject obj) {
|
||||||
|
groundHeight = IConfigurableMachine.grab(obj, "I:groundHeight", groundHeight);
|
||||||
|
groundDepth = IConfigurableMachine.grab(obj, "I:groundDepth", groundDepth);
|
||||||
|
steamSpeed = IConfigurableMachine.grab(obj, "I:steamSpeed", steamSpeed);
|
||||||
|
electricSpeed = IConfigurableMachine.grab(obj, "I:electricSpeed", electricSpeed);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeConfig(JsonWriter writer) throws IOException {
|
||||||
|
writer.name("I:groundHeight").value(groundHeight);
|
||||||
|
writer.name("I:groundDepth").value(groundDepth);
|
||||||
|
writer.name("I:steamSpeed").value(steamSpeed);
|
||||||
|
writer.name("I:electricSpeed").value(electricSpeed);
|
||||||
|
}
|
||||||
|
|
||||||
public void updateEntity() {
|
public void updateEntity() {
|
||||||
|
|
||||||
if(!worldObj.isRemote) {
|
if(!worldObj.isRemote) {
|
||||||
@ -57,7 +87,7 @@ public abstract class TileEntityMachinePumpBase extends TileEntityLoadedBase imp
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.isOn = false;
|
this.isOn = false;
|
||||||
if(this.canOperate() && yCoord <= 70 && onGround) {
|
if(this.canOperate() && yCoord <= groundHeight && onGround) {
|
||||||
this.isOn = true;
|
this.isOn = true;
|
||||||
this.operate();
|
this.operate();
|
||||||
}
|
}
|
||||||
@ -88,7 +118,7 @@ public abstract class TileEntityMachinePumpBase extends TileEntityLoadedBase imp
|
|||||||
int invalidBlocks = 0;
|
int invalidBlocks = 0;
|
||||||
|
|
||||||
for(int x = -1; x <= 1; x++) {
|
for(int x = -1; x <= 1; x++) {
|
||||||
for(int y = -1; y >= -4; y--) {
|
for(int y = -1; y >= -groundDepth; y--) {
|
||||||
for(int z = -1; z <= 1; z++) {
|
for(int z = -1; z <= 1; z++) {
|
||||||
|
|
||||||
Block b = worldObj.getBlock(xCoord + x, yCoord + y, zCoord + z);
|
Block b = worldObj.getBlock(xCoord + x, yCoord + y, zCoord + z);
|
||||||
|
|||||||
@ -14,7 +14,7 @@ public class TileEntityMachinePumpElectric extends TileEntityMachinePumpBase imp
|
|||||||
|
|
||||||
public TileEntityMachinePumpElectric() {
|
public TileEntityMachinePumpElectric() {
|
||||||
super();
|
super();
|
||||||
water = new FluidTank(Fluids.WATER, 1_000_000);
|
water = new FluidTank(Fluids.WATER, electricSpeed * 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateEntity() {
|
public void updateEntity() {
|
||||||
@ -49,7 +49,7 @@ public class TileEntityMachinePumpElectric extends TileEntityMachinePumpBase imp
|
|||||||
@Override
|
@Override
|
||||||
protected void operate() {
|
protected void operate() {
|
||||||
this.power -= 1_000;
|
this.power -= 1_000;
|
||||||
water.setFill(Math.min(water.getFill() + 10_000, water.getMaxFill()));
|
water.setFill(Math.min(water.getFill() + electricSpeed, water.getMaxFill()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -13,7 +13,7 @@ public class TileEntityMachinePumpSteam extends TileEntityMachinePumpBase {
|
|||||||
|
|
||||||
public TileEntityMachinePumpSteam() {
|
public TileEntityMachinePumpSteam() {
|
||||||
super();
|
super();
|
||||||
water = new FluidTank(Fluids.WATER, 100_000);
|
water = new FluidTank(Fluids.WATER, steamSpeed * 100);
|
||||||
steam = new FluidTank(Fluids.STEAM, 1_000);
|
steam = new FluidTank(Fluids.STEAM, 1_000);
|
||||||
lps = new FluidTank(Fluids.SPENTSTEAM, 10);
|
lps = new FluidTank(Fluids.SPENTSTEAM, 10);
|
||||||
}
|
}
|
||||||
@ -71,6 +71,6 @@ public class TileEntityMachinePumpSteam extends TileEntityMachinePumpBase {
|
|||||||
protected void operate() {
|
protected void operate() {
|
||||||
steam.setFill(steam.getFill() - 100);
|
steam.setFill(steam.getFill() - 100);
|
||||||
lps.setFill(lps.getFill() + 1);
|
lps.setFill(lps.getFill() + 1);
|
||||||
water.setFill(Math.min(water.getFill() + 1000, water.getMaxFill()));
|
water.setFill(Math.min(water.getFill() + steamSpeed, water.getMaxFill()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user