Fixed most of multiblocks
This commit is contained in:
parent
ca27b8df8e
commit
0ec40230ff
17 changed files with 248 additions and 602 deletions
|
@ -831,12 +831,12 @@ public class GregTech_API {
|
||||||
sDimensionalList.add( 0);
|
sDimensionalList.add( 0);
|
||||||
sDimensionalList.add( 1);
|
sDimensionalList.add( 1);
|
||||||
|
|
||||||
sSoundList.put( 0, "random.break");
|
sSoundList.put( 0, "minecraft:random.break");
|
||||||
sSoundList.put( 1, "random.anvil_use");
|
sSoundList.put( 1, "minecraft:random.anvil_use");
|
||||||
sSoundList.put( 2, "random.anvil_break");
|
sSoundList.put( 2, "minecraft:random.anvil_break");
|
||||||
sSoundList.put( 3, "random.click");
|
sSoundList.put( 3, "minecraft:random.click");
|
||||||
sSoundList.put( 4, "random.fizz");
|
sSoundList.put( 4, "minecraft:random.fizz");
|
||||||
sSoundList.put( 5, "random.explode");
|
sSoundList.put( 5, "minecraft:random.explode");
|
||||||
|
|
||||||
sSoundList.put(100, GregTech_API.IC2_MOD_ID + ":" + "tools.Wrench");
|
sSoundList.put(100, GregTech_API.IC2_MOD_ID + ":" + "tools.Wrench");
|
||||||
sSoundList.put(101, GregTech_API.IC2_MOD_ID + ":" + "tools.RubberTrampoline");
|
sSoundList.put(101, GregTech_API.IC2_MOD_ID + ":" + "tools.RubberTrampoline");
|
||||||
|
|
|
@ -0,0 +1,178 @@
|
||||||
|
package gregtechmod.api.metatileentity.implementations;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import gregtechmod.api.recipe.RecipeLogic;
|
||||||
|
import gregtechmod.api.recipe.RecipeMap;
|
||||||
|
import gregtechmod.api.util.GT_Utility;
|
||||||
|
import gregtechmod.api.util.InventoryHandler;
|
||||||
|
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
import net.minecraftforge.fluids.Fluid;
|
||||||
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author TheDarkDnKTv
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public abstract class BaseMultiFluidWorkable extends BaseMultiWorkable {
|
||||||
|
|
||||||
|
protected final List<FluidStack> fluidInputs, fluidOutputs;
|
||||||
|
|
||||||
|
public BaseMultiFluidWorkable(int aID, String aBasicName, RecipeMap<?> map, int fluidInputs, int fluidOutputs) {
|
||||||
|
super(aID, aBasicName, map);
|
||||||
|
this.fluidInputs = new InventoryHandler<>(fluidInputs);
|
||||||
|
this.fluidOutputs = new InventoryHandler<>(fluidOutputs);
|
||||||
|
recipeLogic = new RecipeLogic(map, this) {
|
||||||
|
@Override protected void triggerMachine(boolean value) {}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public BaseMultiFluidWorkable(RecipeMap<?> map, int fluidInputs, int fluidOutputs) {
|
||||||
|
super(map);
|
||||||
|
this.fluidInputs = new InventoryHandler<>(fluidInputs);
|
||||||
|
this.fluidOutputs = new InventoryHandler<>(fluidOutputs);
|
||||||
|
recipeLogic = new RecipeLogic(map, this) {
|
||||||
|
@Override protected void triggerMachine(boolean value) {}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override // Fuck this shit, called before i init fluid IO
|
||||||
|
protected void initRecipeLogic(RecipeMap<?> map) {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void saveNBTData(NBTTagCompound aNBT) {
|
||||||
|
super.saveNBTData(aNBT);
|
||||||
|
if (!fluidInputs.isEmpty()) {
|
||||||
|
NBTTagCompound data = new NBTTagCompound();
|
||||||
|
for (int i = 0; i < fluidInputs.size(); i++) {
|
||||||
|
FluidStack fluid = fluidInputs.get(i);
|
||||||
|
NBTTagCompound flTag = fluid == null ? null : fluid.writeToNBT(new NBTTagCompound());
|
||||||
|
data.setTag("fluid." + i, flTag);
|
||||||
|
}
|
||||||
|
|
||||||
|
aNBT.setTag("FluidInputs", data);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!fluidOutputs.isEmpty()) {
|
||||||
|
NBTTagCompound data = new NBTTagCompound();
|
||||||
|
for (int i = 0; i < fluidOutputs.size(); i++) {
|
||||||
|
FluidStack fluid = fluidOutputs.get(i);
|
||||||
|
NBTTagCompound flTag = fluid == null ? null : fluid.writeToNBT(new NBTTagCompound());
|
||||||
|
data.setTag("fluid." + i, flTag);
|
||||||
|
}
|
||||||
|
|
||||||
|
aNBT.setTag("FluidOutputs", data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void loadNBTData(NBTTagCompound aNBT) {
|
||||||
|
super.loadNBTData(aNBT);
|
||||||
|
|
||||||
|
if (aNBT.hasKey("FluidInputs")) {
|
||||||
|
NBTTagCompound data = aNBT.getCompoundTag("FluidInputs");
|
||||||
|
for (int i = 0; i < fluidInputs.size(); i++) {
|
||||||
|
NBTTagCompound fluid = data.hasKey("fluid." + i) ? data.getCompoundTag("fluid." + i) : null;
|
||||||
|
if (fluid != null) {
|
||||||
|
fluidInputs.set(i, FluidStack.loadFluidStackFromNBT(fluid));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (aNBT.hasKey("FluidOutputs")) {
|
||||||
|
NBTTagCompound data = aNBT.getCompoundTag("FluidOutputs");
|
||||||
|
for (int i = 0; i < fluidOutputs.size(); i++) {
|
||||||
|
NBTTagCompound fluid = data.hasKey("fluid." + i) ? data.getCompoundTag("fluid." + i) : null;
|
||||||
|
if (fluid != null) {
|
||||||
|
fluidOutputs.set(i, FluidStack.loadFluidStackFromNBT(fluid));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<FluidStack> getFluidInputs() {
|
||||||
|
return fluidInputs;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<FluidStack> getFluidOutputs() {
|
||||||
|
return fluidOutputs;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canFill(ForgeDirection aSide, Fluid aFluid) {
|
||||||
|
return fluidInputs.isEmpty() || fluidInputs.contains(new FluidStack(aFluid, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canDrain(ForgeDirection aSide, Fluid aFluid) {
|
||||||
|
return fluidOutputs.contains(new FluidStack(aFluid, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int fill(ForgeDirection aSide, FluidStack resource, boolean doFill) {
|
||||||
|
if (GT_Utility.isFluidStackValid(resource)) {
|
||||||
|
for (int i = 0; i < fluidInputs.size(); i++) {
|
||||||
|
FluidStack stackInSlot = fluidInputs.get(i);
|
||||||
|
if (!GT_Utility.isFluidStackValid(stackInSlot) || stackInSlot.isFluidEqual(resource)) {
|
||||||
|
int space = getCapacity() - stackInSlot.amount;
|
||||||
|
int toFill = resource.amount <= space ? resource.amount : space;
|
||||||
|
if (doFill) {
|
||||||
|
stackInSlot.amount += toFill;
|
||||||
|
// TODO could be dupe, may change resource
|
||||||
|
}
|
||||||
|
|
||||||
|
return toFill;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FluidStack drain(ForgeDirection aSide, FluidStack aFluid, boolean doDrain) {
|
||||||
|
if (GT_Utility.isFluidStackValid(aFluid))
|
||||||
|
for (int i = 0; i < fluidOutputs.size(); i++) {
|
||||||
|
FluidStack stackInSlot = fluidOutputs.get(i);
|
||||||
|
if (GT_Utility.isFluidStackValid(stackInSlot) && aFluid.isFluidEqual(stackInSlot)) {
|
||||||
|
int amount = Math.min(aFluid.amount, stackInSlot.amount);
|
||||||
|
FluidStack result = stackInSlot.copy();
|
||||||
|
result.amount = amount;
|
||||||
|
if (doDrain) {
|
||||||
|
if (stackInSlot.amount == amount) {
|
||||||
|
fluidOutputs.set(i, null);
|
||||||
|
} else stackInSlot.amount -= amount;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FluidStack drain(ForgeDirection aSide, int maxDrain, boolean doDrain) {
|
||||||
|
for (int i = 0; i < fluidOutputs.size(); i++) {
|
||||||
|
FluidStack stackInSlot = fluidOutputs.get(i);
|
||||||
|
if (GT_Utility.isFluidStackValid(stackInSlot)) {
|
||||||
|
int amount = Math.min(maxDrain, stackInSlot.amount);
|
||||||
|
FluidStack result = stackInSlot.copy();
|
||||||
|
result.amount = amount;
|
||||||
|
if (doDrain) {
|
||||||
|
if (stackInSlot.amount == amount) {
|
||||||
|
fluidOutputs.set(i, null);
|
||||||
|
} else stackInSlot.amount -= amount;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package gregtechmod.common.tileentities.machines.multi;
|
package gregtechmod.api.metatileentity.implementations;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -26,7 +26,7 @@ import net.minecraftforge.fluids.FluidStack;
|
||||||
public abstract class BaseMultiWorkable extends MetaTileEntity implements IRecipeWorkable {
|
public abstract class BaseMultiWorkable extends MetaTileEntity implements IRecipeWorkable {
|
||||||
|
|
||||||
protected RecipeLogic recipeLogic;
|
protected RecipeLogic recipeLogic;
|
||||||
protected boolean needCheckStruct = false;
|
protected boolean needCheckStruct = true;
|
||||||
protected boolean structComplete = false;
|
protected boolean structComplete = false;
|
||||||
|
|
||||||
public BaseMultiWorkable(int aID, String aBasicName, RecipeMap<?> map) {
|
public BaseMultiWorkable(int aID, String aBasicName, RecipeMap<?> map) {
|
|
@ -28,25 +28,20 @@ public class GT_Container_Grinder extends GT_ContainerMetaTile_Machine {
|
||||||
addSlotToContainer(new GT_Slot_Output(mTileEntity, 5, 140, 25));
|
addSlotToContainer(new GT_Slot_Output(mTileEntity, 5, 140, 25));
|
||||||
}
|
}
|
||||||
|
|
||||||
public int mProgress, mMaxProgress, mProgressScale, mWaterAmount;
|
public int mWaterAmount;
|
||||||
public boolean mMachine = true;
|
public boolean mMachine = true;
|
||||||
|
|
||||||
@SuppressWarnings("rawtypes")
|
@SuppressWarnings("rawtypes")
|
||||||
public void detectAndSendChanges() {
|
public void detectAndSendChanges() {
|
||||||
super.detectAndSendChanges();
|
super.detectAndSendChanges();
|
||||||
if (mTileEntity.isClientSide() || mTileEntity.getMetaTileEntity() == null) return;
|
if (mTileEntity.isClientSide() || mTileEntity.getMetaTileEntity() == null) return;
|
||||||
mMachine = ((GT_MetaTileEntity_Grinder)mTileEntity.getMetaTileEntity()).mMachine;
|
mMachine = ((GT_MetaTileEntity_Grinder)mTileEntity.getMetaTileEntity()).isStructComplete();
|
||||||
mWaterAmount = ((GT_MetaTileEntity_Grinder)mTileEntity.getMetaTileEntity()).mFluidAmount;
|
mWaterAmount = ((GT_MetaTileEntity_Grinder)mTileEntity.getMetaTileEntity()).getFluidAmount();
|
||||||
mProgress = ((GT_MetaTileEntity_Grinder)mTileEntity.getMetaTileEntity()).getProgresstime();
|
|
||||||
mMaxProgress = ((GT_MetaTileEntity_Grinder)mTileEntity.getMetaTileEntity()).maxProgresstime();
|
|
||||||
mProgressScale = Math.max(0, Math.min(20, (mProgress>0?1:0) + (mProgress * 20) / (mMaxProgress<1?1:mMaxProgress)));
|
|
||||||
|
|
||||||
Iterator var2 = this.crafters.iterator();
|
Iterator var2 = this.crafters.iterator();
|
||||||
while (var2.hasNext()) {
|
while (var2.hasNext()) {
|
||||||
ICrafting var1 = (ICrafting)var2.next();
|
ICrafting var1 = (ICrafting)var2.next();
|
||||||
var1.sendProgressBarUpdate(this, 100, mProgress);
|
|
||||||
var1.sendProgressBarUpdate(this, 101, mMaxProgress);
|
|
||||||
var1.sendProgressBarUpdate(this, 102, mProgressScale);
|
|
||||||
var1.sendProgressBarUpdate(this, 103, mMachine?1:0);
|
var1.sendProgressBarUpdate(this, 103, mMachine?1:0);
|
||||||
var1.sendProgressBarUpdate(this, 104, mWaterAmount);
|
var1.sendProgressBarUpdate(this, 104, mWaterAmount);
|
||||||
}
|
}
|
||||||
|
@ -56,9 +51,6 @@ public class GT_Container_Grinder extends GT_ContainerMetaTile_Machine {
|
||||||
public void updateProgressBar(int par1, int par2) {
|
public void updateProgressBar(int par1, int par2) {
|
||||||
super.updateProgressBar(par1, par2);
|
super.updateProgressBar(par1, par2);
|
||||||
switch (par1) {
|
switch (par1) {
|
||||||
case 100: mProgress = par2; break;
|
|
||||||
case 101: mMaxProgress = par2; break;
|
|
||||||
case 102: mProgressScale = par2; break;
|
|
||||||
case 103: mMachine = (par2!=0); break;
|
case 103: mMachine = (par2!=0); break;
|
||||||
case 104: mWaterAmount = par2; break;
|
case 104: mWaterAmount = par2; break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,36 +26,26 @@ public class GT_Container_ImplosionCompressor extends GT_ContainerMetaTile_Machi
|
||||||
addSlotToContainer(new GT_Slot_Output(mTileEntity, 3, 104, 25));
|
addSlotToContainer(new GT_Slot_Output(mTileEntity, 3, 104, 25));
|
||||||
}
|
}
|
||||||
|
|
||||||
public int mProgress, mMaxProgress, mProgressScale;
|
|
||||||
public boolean mMachine = true;
|
public boolean mMachine = true;
|
||||||
|
|
||||||
@SuppressWarnings("rawtypes")
|
@SuppressWarnings("rawtypes")
|
||||||
public void detectAndSendChanges() {
|
public void detectAndSendChanges() {
|
||||||
super.detectAndSendChanges();
|
super.detectAndSendChanges();
|
||||||
if (mTileEntity.isClientSide() || mTileEntity.getMetaTileEntity() == null) return;
|
if (mTileEntity.isClientSide() || mTileEntity.getMetaTileEntity() == null) return;
|
||||||
mMachine = ((GT_MetaTileEntity_ImplosionCompressor)mTileEntity.getMetaTileEntity()).mMachine;
|
mMachine = ((GT_MetaTileEntity_ImplosionCompressor)mTileEntity.getMetaTileEntity()).isStructComplete();
|
||||||
mProgress = ((GT_MetaTileEntity_ImplosionCompressor)mTileEntity.getMetaTileEntity()).getProgresstime();
|
|
||||||
mMaxProgress = ((GT_MetaTileEntity_ImplosionCompressor)mTileEntity.getMetaTileEntity()).maxProgresstime();
|
|
||||||
mProgressScale = Math.max(0, Math.min(20, (mProgress>0?1:0) + (mProgress * 20) / (mMaxProgress<1?1:mMaxProgress)));
|
|
||||||
|
|
||||||
Iterator var2 = this.crafters.iterator();
|
Iterator var2 = this.crafters.iterator();
|
||||||
while (var2.hasNext()) {
|
while (var2.hasNext()) {
|
||||||
ICrafting var1 = (ICrafting)var2.next();
|
ICrafting var1 = (ICrafting)var2.next();
|
||||||
var1.sendProgressBarUpdate(this, 100, mProgress);
|
var1.sendProgressBarUpdate(this, 100, mMachine?1:0);
|
||||||
var1.sendProgressBarUpdate(this, 101, mMaxProgress);
|
|
||||||
var1.sendProgressBarUpdate(this, 102, mProgressScale);
|
|
||||||
var1.sendProgressBarUpdate(this, 103, mMachine?1:0);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public void updateProgressBar(int par1, int par2) {
|
public void updateProgressBar(int par1, int par2) {
|
||||||
super.updateProgressBar(par1, par2);
|
super.updateProgressBar(par1, par2);
|
||||||
switch (par1) {
|
if (par1 == 100) {
|
||||||
case 100: mProgress = par2; break;
|
mMachine = par2 != 0;
|
||||||
case 101: mMaxProgress = par2; break;
|
|
||||||
case 102: mProgressScale = par2; break;
|
|
||||||
case 103: mMachine = (par2!=0); break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,24 +24,17 @@ public class GT_Container_VacuumFreezer extends GT_ContainerMetaTile_Machine {
|
||||||
addSlotToContainer(new GT_Slot_Output(mTileEntity, 1, 86, 25));
|
addSlotToContainer(new GT_Slot_Output(mTileEntity, 1, 86, 25));
|
||||||
}
|
}
|
||||||
|
|
||||||
public int mProgress, mMaxProgress, mProgressScale;
|
|
||||||
public boolean mMachine = true;
|
public boolean mMachine = true;
|
||||||
|
|
||||||
@SuppressWarnings("rawtypes")
|
@SuppressWarnings("rawtypes")
|
||||||
public void detectAndSendChanges() {
|
public void detectAndSendChanges() {
|
||||||
super.detectAndSendChanges();
|
super.detectAndSendChanges();
|
||||||
if (mTileEntity.isClientSide() || mTileEntity.getMetaTileEntity() == null) return;
|
if (mTileEntity.isClientSide() || mTileEntity.getMetaTileEntity() == null) return;
|
||||||
mMachine = ((GT_MetaTileEntity_VacuumFreezer)mTileEntity.getMetaTileEntity()).mMachine;
|
mMachine = ((GT_MetaTileEntity_VacuumFreezer)mTileEntity.getMetaTileEntity()).isStructComplete();
|
||||||
mProgress = ((GT_MetaTileEntity_VacuumFreezer)mTileEntity.getMetaTileEntity()).getProgresstime();
|
|
||||||
mMaxProgress = ((GT_MetaTileEntity_VacuumFreezer)mTileEntity.getMetaTileEntity()).maxProgresstime();
|
|
||||||
mProgressScale = Math.max(0, Math.min(20, (mProgress>0?1:0) + (mProgress * 20) / (mMaxProgress<1?1:mMaxProgress)));
|
|
||||||
|
|
||||||
Iterator var2 = this.crafters.iterator();
|
Iterator var2 = this.crafters.iterator();
|
||||||
while (var2.hasNext()) {
|
while (var2.hasNext()) {
|
||||||
ICrafting var1 = (ICrafting)var2.next();
|
ICrafting var1 = (ICrafting)var2.next();
|
||||||
var1.sendProgressBarUpdate(this, 100, mProgress);
|
|
||||||
var1.sendProgressBarUpdate(this, 101, mMaxProgress);
|
|
||||||
var1.sendProgressBarUpdate(this, 102, mProgressScale);
|
|
||||||
var1.sendProgressBarUpdate(this, 103, mMachine?1:0);
|
var1.sendProgressBarUpdate(this, 103, mMachine?1:0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -49,11 +42,8 @@ public class GT_Container_VacuumFreezer extends GT_ContainerMetaTile_Machine {
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public void updateProgressBar(int par1, int par2) {
|
public void updateProgressBar(int par1, int par2) {
|
||||||
super.updateProgressBar(par1, par2);
|
super.updateProgressBar(par1, par2);
|
||||||
switch (par1) {
|
if (par1 == 103) {
|
||||||
case 100: mProgress = par2; break;
|
mMachine = par2 != 0;
|
||||||
case 101: mMaxProgress = par2; break;
|
|
||||||
case 102: mProgressScale = par2; break;
|
|
||||||
case 103: mMachine = (par2!=0); break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,10 +32,11 @@ public class GT_GUIContainer_Grinder extends GT_GUIContainerMetaTile_Machine {
|
||||||
drawTexturedModalRect(x, y, 0, 0, xSize, ySize);
|
drawTexturedModalRect(x, y, 0, 0, xSize, ySize);
|
||||||
|
|
||||||
if (mContainer != null) {
|
if (mContainer != null) {
|
||||||
int tScale = ((GT_Container_Grinder)mContainer).mProgressScale;
|
GT_Container_Grinder cont = (GT_Container_Grinder) mContainer;
|
||||||
|
int tScale = Math.max(0, Math.min(20, (cont.mProgressTime>0?1:0) + (cont.mProgressTime * 20) / (cont.mMaxProgressTime<1?1:cont.mMaxProgressTime)));
|
||||||
if (mContainer.mProgressTime > 0) drawTexturedModalRect(x + 58, y + 28, 176, 0, tScale, 11);
|
if (mContainer.mProgressTime > 0) drawTexturedModalRect(x + 58, y + 28, 176, 0, tScale, 11);
|
||||||
|
|
||||||
tScale = ((GT_Container_Grinder)mContainer).mWaterAmount/550;
|
tScale = cont.mWaterAmount/550;
|
||||||
if (tScale > 0)
|
if (tScale > 0)
|
||||||
drawTexturedModalRect(x + 33, y + 33 + 18 - tScale, 176, 33 + 18 - tScale, 18, tScale);
|
drawTexturedModalRect(x + 33, y + 33 + 18 - tScale, 176, 33 + 18 - tScale, 18, tScale);
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,8 @@ public class GT_GUIContainer_ImplosionCompressor extends GT_GUIContainerMetaTile
|
||||||
drawTexturedModalRect(x, y, 0, 0, xSize, ySize);
|
drawTexturedModalRect(x, y, 0, 0, xSize, ySize);
|
||||||
|
|
||||||
if (mContainer != null && mContainer.mProgressTime>0) {
|
if (mContainer != null && mContainer.mProgressTime>0) {
|
||||||
int tScale = ((GT_Container_ImplosionCompressor)mContainer).mProgressScale;
|
GT_Container_ImplosionCompressor cont = (GT_Container_ImplosionCompressor) mContainer;
|
||||||
|
int tScale = Math.max(0, Math.min(20, (cont.mProgressTime>0?1:0) + (cont.mProgressTime * 20) / (cont.mMaxProgressTime<1?1:cont.mMaxProgressTime)));
|
||||||
this.drawTexturedModalRect(x + 58, y + 28, 176, 0, tScale, 11);
|
this.drawTexturedModalRect(x + 58, y + 28, 176, 0, tScale, 11);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,8 @@ public class GT_GUIContainer_VacuumFreezer extends GT_GUIContainerMetaTile_Machi
|
||||||
drawTexturedModalRect(x, y, 0, 0, xSize, ySize);
|
drawTexturedModalRect(x, y, 0, 0, xSize, ySize);
|
||||||
|
|
||||||
if (mContainer != null && mContainer.mProgressTime>0) {
|
if (mContainer != null && mContainer.mProgressTime>0) {
|
||||||
int tScale = ((GT_Container_VacuumFreezer)mContainer).mProgressScale;
|
GT_Container_VacuumFreezer cont = (GT_Container_VacuumFreezer) mContainer;
|
||||||
|
int tScale = Math.max(0, Math.min(20, (cont.mProgressTime>0?1:0) + (cont.mProgressTime * 20) / (cont.mMaxProgressTime<1?1:cont.mMaxProgressTime)));
|
||||||
this.drawTexturedModalRect(x + 58, y + 28, 176, 0, tScale, 11);
|
this.drawTexturedModalRect(x + 58, y + 28, 176, 0, tScale, 11);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ public class RecipeMaps {
|
||||||
public static final RecipeMap<SimpleRecipeFactory> FUSION_REACTOR = new RecipeMap<>(0, 0, 0, 0, 2, 2, 1, 1, new SimpleRecipeFactory());
|
public static final RecipeMap<SimpleRecipeFactory> FUSION_REACTOR = new RecipeMap<>(0, 0, 0, 0, 2, 2, 1, 1, new SimpleRecipeFactory());
|
||||||
public static final RecipeMap<SimpleRecipeFactory> CENTRIFUGE = new RecipeMap<>(0, 2, 1, 4, 0, 1, 0, 0, new SimpleRecipeFactory());
|
public static final RecipeMap<SimpleRecipeFactory> CENTRIFUGE = new RecipeMap<>(0, 2, 1, 4, 0, 1, 0, 0, new SimpleRecipeFactory());
|
||||||
public static final RecipeMap<SimpleRecipeFactory> ELECTROLYZER = new RecipeMap<>(0, 2, 1, 4, 0, 1, 0, 0, new SimpleRecipeFactory());
|
public static final RecipeMap<SimpleRecipeFactory> ELECTROLYZER = new RecipeMap<>(0, 2, 1, 4, 0, 1, 0, 0, new SimpleRecipeFactory());
|
||||||
public static final RecipeMap<SimpleRecipeFactory> GRINDER = new RecipeMap<>(1, 2, 1, 4, new SimpleRecipeFactory()); // TODO multiblocks!
|
public static final RecipeMap<SimpleRecipeFactory> GRINDER = new RecipeMap<>(1, 2, 1, 4, 0, 1, 0, 0, new SimpleRecipeFactory()); // TODO multiblocks!
|
||||||
public static final RecipeMap<BlastFurnanceRecipeFactory> BLAST_FURNANCE = new RecipeMap<>(1, 2, 1, 2, new BlastFurnanceRecipeFactory());
|
public static final RecipeMap<BlastFurnanceRecipeFactory> BLAST_FURNANCE = new RecipeMap<>(1, 2, 1, 2, new BlastFurnanceRecipeFactory());
|
||||||
public static final RecipeMap<SimpleRecipeFactory> BRONZE_BLAST_FURNANCE = new RecipeMap<>(1, 2, 1, 2, new SimpleRecipeFactory());
|
public static final RecipeMap<SimpleRecipeFactory> BRONZE_BLAST_FURNANCE = new RecipeMap<>(1, 2, 1, 2, new SimpleRecipeFactory());
|
||||||
public static final RecipeMap<SimpleRecipeFactory> IMPLOSION_COMPRESSOR= new RecipeMap<>(1, 2, 1, 2, new SimpleRecipeFactory()); //
|
public static final RecipeMap<SimpleRecipeFactory> IMPLOSION_COMPRESSOR= new RecipeMap<>(1, 2, 1, 2, new SimpleRecipeFactory()); //
|
||||||
|
|
|
@ -3,6 +3,7 @@ package gregtechmod.common.tileentities.machines.multi;
|
||||||
import gregtechmod.api.GregTech_API;
|
import gregtechmod.api.GregTech_API;
|
||||||
import gregtechmod.api.interfaces.IGregTechTileEntity;
|
import gregtechmod.api.interfaces.IGregTechTileEntity;
|
||||||
import gregtechmod.api.metatileentity.MetaTileEntity;
|
import gregtechmod.api.metatileentity.MetaTileEntity;
|
||||||
|
import gregtechmod.api.metatileentity.implementations.BaseMultiWorkable;
|
||||||
import gregtechmod.api.recipe.RecipeMap;
|
import gregtechmod.api.recipe.RecipeMap;
|
||||||
import gregtechmod.api.util.GT_OreDictUnificator;
|
import gregtechmod.api.util.GT_OreDictUnificator;
|
||||||
import gregtechmod.api.util.GT_Utility;
|
import gregtechmod.api.util.GT_Utility;
|
||||||
|
|
|
@ -4,6 +4,7 @@ import gregtechmod.api.GregTech_API;
|
||||||
import gregtechmod.api.interfaces.IGregTechTileEntity;
|
import gregtechmod.api.interfaces.IGregTechTileEntity;
|
||||||
import gregtechmod.api.interfaces.IRecipeWorkable;
|
import gregtechmod.api.interfaces.IRecipeWorkable;
|
||||||
import gregtechmod.api.metatileentity.MetaTileEntity;
|
import gregtechmod.api.metatileentity.MetaTileEntity;
|
||||||
|
import gregtechmod.api.metatileentity.implementations.BaseMultiWorkable;
|
||||||
import gregtechmod.api.recipe.RecipeLogic;
|
import gregtechmod.api.recipe.RecipeLogic;
|
||||||
import gregtechmod.api.recipe.RecipeMap;
|
import gregtechmod.api.recipe.RecipeMap;
|
||||||
import gregtechmod.api.util.GT_Utility;
|
import gregtechmod.api.util.GT_Utility;
|
||||||
|
|
|
@ -5,6 +5,7 @@ import java.util.List;
|
||||||
import gregtechmod.api.GregTech_API;
|
import gregtechmod.api.GregTech_API;
|
||||||
import gregtechmod.api.interfaces.IGregTechTileEntity;
|
import gregtechmod.api.interfaces.IGregTechTileEntity;
|
||||||
import gregtechmod.api.metatileentity.MetaTileEntity;
|
import gregtechmod.api.metatileentity.MetaTileEntity;
|
||||||
|
import gregtechmod.api.metatileentity.implementations.BaseMultiWorkable;
|
||||||
import gregtechmod.api.util.GT_ModHandler;
|
import gregtechmod.api.util.GT_ModHandler;
|
||||||
import gregtechmod.api.util.GT_Utility;
|
import gregtechmod.api.util.GT_Utility;
|
||||||
import gregtechmod.api.util.ListAdapter;
|
import gregtechmod.api.util.ListAdapter;
|
||||||
|
|
|
@ -1,117 +1,41 @@
|
||||||
package gregtechmod.common.tileentities.machines.multi;
|
package gregtechmod.common.tileentities.machines.multi;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import gregtechmod.api.GregTech_API;
|
import gregtechmod.api.GregTech_API;
|
||||||
import gregtechmod.api.interfaces.IGregTechTileEntity;
|
import gregtechmod.api.interfaces.IGregTechTileEntity;
|
||||||
import gregtechmod.api.metatileentity.MetaTileEntity;
|
import gregtechmod.api.metatileentity.MetaTileEntity;
|
||||||
import gregtechmod.api.metatileentity.implementations.GT_MetaTileEntity_BasicTank;
|
import gregtechmod.api.metatileentity.implementations.BaseMultiFluidWorkable;
|
||||||
import gregtechmod.api.recipe.Recipe;
|
|
||||||
import gregtechmod.api.util.GT_ModHandler;
|
import gregtechmod.api.util.GT_ModHandler;
|
||||||
import gregtechmod.api.util.GT_Utility;
|
import gregtechmod.api.util.GT_Utility;
|
||||||
import gregtechmod.api.util.InfoBuilder;
|
import gregtechmod.common.recipe.RecipeMaps;
|
||||||
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.init.Blocks;
|
import net.minecraft.init.Blocks;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
import net.minecraftforge.fluids.FluidStack;
|
|
||||||
|
|
||||||
public class GT_MetaTileEntity_Grinder extends GT_MetaTileEntity_BasicTank {
|
public class GT_MetaTileEntity_Grinder extends BaseMultiFluidWorkable {
|
||||||
|
|
||||||
public int mProgresstime = 0, mMaxProgresstime = 0, mEUt = 0, mUpdate = 5, mFluidAmount = 0;
|
|
||||||
private ItemStack mOutputItem1, mOutputItem2, mOutputItem3, mOutputItem4;
|
|
||||||
public boolean mMachine = false;
|
|
||||||
|
|
||||||
public GT_MetaTileEntity_Grinder(int aID, String mName) {
|
public GT_MetaTileEntity_Grinder(int aID, String mName) {
|
||||||
super(aID, mName);
|
super(aID, mName, RecipeMaps.GRINDER, 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public GT_MetaTileEntity_Grinder() {
|
public GT_MetaTileEntity_Grinder() {
|
||||||
|
super(RecipeMaps.GRINDER, 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean isTransformerUpgradable() {return true;}
|
|
||||||
@Override public boolean isOverclockerUpgradable() {return true;}
|
|
||||||
@Override public boolean isBatteryUpgradable() {return true;}
|
|
||||||
@Override public boolean isSimpleMachine() {return false;}
|
|
||||||
@Override public boolean isFacingValid(byte aFacing) {return aFacing > 1;}
|
@Override public boolean isFacingValid(byte aFacing) {return aFacing > 1;}
|
||||||
@Override public boolean isEnetInput() {return true;}
|
|
||||||
@Override public boolean isInputFacing(byte aSide) {return true;}
|
|
||||||
@Override public boolean isValidSlot(int aIndex) {return true;}
|
@Override public boolean isValidSlot(int aIndex) {return true;}
|
||||||
@Override public int maxEUInput() {return 128;}
|
|
||||||
@Override public int maxEUStore() {return 10000;}
|
|
||||||
@Override public int maxRFStore() {return maxEUStore();}
|
|
||||||
@Override public int maxSteamStore() {return maxEUStore();}
|
|
||||||
@Override public int getInvSize() {return 6;}
|
@Override public int getInvSize() {return 6;}
|
||||||
@Override public void onRightclick(EntityPlayer aPlayer) {getBaseMetaTileEntity().openGUI(aPlayer, 112);}
|
@Override public void onRightclick(EntityPlayer aPlayer) {getBaseMetaTileEntity().openGUI(aPlayer, 112);}
|
||||||
@Override public boolean isAccessAllowed(EntityPlayer aPlayer) {return true;}
|
|
||||||
@Override public int getProgresstime() {return mProgresstime;}
|
|
||||||
@Override public int maxProgresstime() {return mMaxProgresstime;}
|
|
||||||
@Override public int increaseProgress(int aProgress) {mProgresstime += aProgress; return mMaxProgresstime-mProgresstime;}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
||||||
return new GT_MetaTileEntity_Grinder();
|
GT_MetaTileEntity_Grinder m = new GT_MetaTileEntity_Grinder();
|
||||||
|
m.fluidInputs.set(0, GT_ModHandler.getWater(0));
|
||||||
|
return m;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
protected boolean checkMachine() {
|
||||||
public void saveNBTData(NBTTagCompound aNBT) {
|
|
||||||
super.saveNBTData(aNBT);
|
|
||||||
aNBT.setInteger("mEUt", mEUt);
|
|
||||||
aNBT.setInteger("mProgresstime", mProgresstime);
|
|
||||||
aNBT.setInteger("mMaxProgresstime", mMaxProgresstime);
|
|
||||||
|
|
||||||
if (mOutputItem1 != null) {
|
|
||||||
NBTTagCompound tNBT = new NBTTagCompound();
|
|
||||||
mOutputItem1.writeToNBT(tNBT);
|
|
||||||
aNBT.setTag("mOutputItem1", tNBT);
|
|
||||||
}
|
|
||||||
if (mOutputItem2 != null) {
|
|
||||||
NBTTagCompound tNBT = new NBTTagCompound();
|
|
||||||
mOutputItem2.writeToNBT(tNBT);
|
|
||||||
aNBT.setTag("mOutputItem2", tNBT);
|
|
||||||
}
|
|
||||||
if (mOutputItem3 != null) {
|
|
||||||
NBTTagCompound tNBT = new NBTTagCompound();
|
|
||||||
mOutputItem3.writeToNBT(tNBT);
|
|
||||||
aNBT.setTag("mOutputItem3", tNBT);
|
|
||||||
}
|
|
||||||
if (mOutputItem4 != null) {
|
|
||||||
NBTTagCompound tNBT = new NBTTagCompound();
|
|
||||||
mOutputItem4.writeToNBT(tNBT);
|
|
||||||
aNBT.setTag("mOutputItem4", tNBT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void loadNBTData(NBTTagCompound aNBT) {
|
|
||||||
super.loadNBTData(aNBT);
|
|
||||||
mUpdate = 5;
|
|
||||||
mEUt = aNBT.getInteger("mEUt");
|
|
||||||
mProgresstime = aNBT.getInteger("mProgresstime");
|
|
||||||
mMaxProgresstime = aNBT.getInteger("mMaxProgresstime");
|
|
||||||
|
|
||||||
NBTTagCompound tNBT1 = (NBTTagCompound)aNBT.getTag("mOutputItem1");
|
|
||||||
if (tNBT1 != null) {
|
|
||||||
mOutputItem1 = GT_Utility.loadItem(tNBT1);
|
|
||||||
}
|
|
||||||
NBTTagCompound tNBT2 = (NBTTagCompound)aNBT.getTag("mOutputItem2");
|
|
||||||
if (tNBT2 != null) {
|
|
||||||
mOutputItem2 = GT_Utility.loadItem(tNBT2);
|
|
||||||
}
|
|
||||||
NBTTagCompound tNBT3 = (NBTTagCompound)aNBT.getTag("mOutputItem3");
|
|
||||||
if (tNBT3 != null) {
|
|
||||||
mOutputItem3 = GT_Utility.loadItem(tNBT3);
|
|
||||||
}
|
|
||||||
NBTTagCompound tNBT4 = (NBTTagCompound)aNBT.getTag("mOutputItem4");
|
|
||||||
if (tNBT4 != null) {
|
|
||||||
mOutputItem4 = GT_Utility.loadItem(tNBT4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean checkMachine() {
|
|
||||||
int xDir = ForgeDirection.getOrientation(getBaseMetaTileEntity().getFrontFacing()).offsetX*2, yDir = ForgeDirection.getOrientation(getBaseMetaTileEntity().getFrontFacing()).offsetY*2, zDir = ForgeDirection.getOrientation(getBaseMetaTileEntity().getFrontFacing()).offsetZ*2;
|
int xDir = ForgeDirection.getOrientation(getBaseMetaTileEntity().getFrontFacing()).offsetX*2, yDir = ForgeDirection.getOrientation(getBaseMetaTileEntity().getFrontFacing()).offsetY*2, zDir = ForgeDirection.getOrientation(getBaseMetaTileEntity().getFrontFacing()).offsetZ*2;
|
||||||
for (int i = -1; i < 2; i++) for (int j = -1; j < 2; j++) for (int k = -1; k < 2; k++) {
|
for (int i = -1; i < 2; i++) for (int j = -1; j < 2; j++) for (int k = -1; k < 2; k++) {
|
||||||
if (i!=0||j!=0||k!=0) {
|
if (i!=0||j!=0||k!=0) {
|
||||||
|
@ -124,136 +48,6 @@ public class GT_MetaTileEntity_Grinder extends GT_MetaTileEntity_BasicTank {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onMachineBlockUpdate() {
|
|
||||||
mUpdate = 5;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override public boolean doesFillContainers() {return false;}
|
|
||||||
@Override public boolean doesEmptyContainers() {return false;}
|
|
||||||
@Override public boolean canTankBeFilled() {return true;}
|
|
||||||
@Override public boolean canTankBeEmptied() {return true;}
|
|
||||||
@Override public boolean displaysItemStack() {return false;}
|
|
||||||
@Override public boolean displaysStackSize() {return false;}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onPostTick() {
|
|
||||||
if (getBaseMetaTileEntity().isServerSide()) {
|
|
||||||
if (mUpdate--==0) {
|
|
||||||
mMachine = checkMachine();
|
|
||||||
}
|
|
||||||
if (mFluid == null) {
|
|
||||||
mFluidAmount = 0;
|
|
||||||
} else {
|
|
||||||
mFluidAmount = mFluid.amount;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
getBaseMetaTileEntity().setActive(mMachine);
|
|
||||||
if (mMachine && mMaxProgresstime > 0) {
|
|
||||||
if (mProgresstime < 0 || getBaseMetaTileEntity().decreaseStoredEnergyUnits(mEUt*(int)Math.pow(4, getBaseMetaTileEntity().getOverclockerUpgradeCount()), false)) {
|
|
||||||
if ((mProgresstime+=(int)Math.pow(2, getBaseMetaTileEntity().getOverclockerUpgradeCount()))>=mMaxProgresstime) {
|
|
||||||
addOutputProducts();
|
|
||||||
mOutputItem1 = null;
|
|
||||||
mOutputItem2 = null;
|
|
||||||
mOutputItem3 = null;
|
|
||||||
mOutputItem4 = null;
|
|
||||||
mProgresstime = 0;
|
|
||||||
mMaxProgresstime = 0;
|
|
||||||
getBaseMetaTileEntity().setErrorDisplayID(0);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (GregTech_API.sConstantEnergy) {
|
|
||||||
mProgresstime = -10;
|
|
||||||
getBaseMetaTileEntity().setErrorDisplayID(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (getBaseMetaTileEntity().isAllowedToWork() && getBaseMetaTileEntity().getUniversalEnergyStored() > 100) checkRecipe();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addOutputProducts() {
|
|
||||||
if (mOutputItem1 != null)
|
|
||||||
if (mInventory[2] == null)
|
|
||||||
mInventory[2] = GT_Utility.copy(mOutputItem1);
|
|
||||||
else if (GT_Utility.areStacksEqual(mInventory[2], mOutputItem1))
|
|
||||||
mInventory[2].stackSize = Math.min(mOutputItem1.getMaxStackSize(), mOutputItem1.stackSize + mInventory[2].stackSize);
|
|
||||||
|
|
||||||
if (mOutputItem2 != null)
|
|
||||||
if (mInventory[3] == null)
|
|
||||||
mInventory[3] = GT_Utility.copy(mOutputItem2);
|
|
||||||
else if (GT_Utility.areStacksEqual(mInventory[3], mOutputItem2))
|
|
||||||
mInventory[3].stackSize = Math.min(mOutputItem2.getMaxStackSize(), mOutputItem2.stackSize + mInventory[3].stackSize);
|
|
||||||
|
|
||||||
if (mOutputItem3 != null)
|
|
||||||
if (mInventory[4] == null)
|
|
||||||
mInventory[4] = GT_Utility.copy(mOutputItem3);
|
|
||||||
else if (GT_Utility.areStacksEqual(mInventory[4], mOutputItem3))
|
|
||||||
mInventory[4].stackSize = Math.min(mOutputItem3.getMaxStackSize(), mOutputItem3.stackSize + mInventory[4].stackSize);
|
|
||||||
|
|
||||||
if (mOutputItem4 != null)
|
|
||||||
if (mInventory[5] == null)
|
|
||||||
mInventory[5] = GT_Utility.copy(mOutputItem4);
|
|
||||||
else if (GT_Utility.areStacksEqual(mInventory[5], mOutputItem4))
|
|
||||||
mInventory[5].stackSize = Math.min(mOutputItem4.getMaxStackSize(), mOutputItem4.stackSize + mInventory[5].stackSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean spaceForOutput(Recipe aRecipe) {
|
|
||||||
if (mInventory[2] == null || aRecipe.getOutput(0) == null || (mInventory[2].stackSize + aRecipe.getOutput(0).stackSize <= mInventory[2].getMaxStackSize() && GT_Utility.areStacksEqual(mInventory[2], aRecipe.getOutput(0))))
|
|
||||||
if (mInventory[3] == null || aRecipe.getOutput(1) == null || (mInventory[3].stackSize + aRecipe.getOutput(1).stackSize <= mInventory[3].getMaxStackSize() && GT_Utility.areStacksEqual(mInventory[3], aRecipe.getOutput(1))))
|
|
||||||
if (mInventory[4] == null || aRecipe.getOutput(2) == null || (mInventory[4].stackSize + aRecipe.getOutput(2).stackSize <= mInventory[4].getMaxStackSize() && GT_Utility.areStacksEqual(mInventory[4], aRecipe.getOutput(2))))
|
|
||||||
if (mInventory[5] == null || aRecipe.getOutput(3) == null || (mInventory[5].stackSize + aRecipe.getOutput(3).stackSize <= mInventory[5].getMaxStackSize() && GT_Utility.areStacksEqual(mInventory[5], aRecipe.getOutput(3))))
|
|
||||||
return true;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean checkRecipe() {
|
|
||||||
if (!mMachine) return false;
|
|
||||||
Recipe tRecipe = Recipe.findEqualRecipe(false, false, Recipe.sGrinderRecipes, mInventory[0], mInventory[1]);
|
|
||||||
if (tRecipe != null) {
|
|
||||||
if (spaceForOutput(tRecipe)) {
|
|
||||||
if (tRecipe.isRecipeInputEqual(true, true, mInventory[0], mInventory[1])) {
|
|
||||||
if (mInventory[0] != null) if (mInventory[0].stackSize == 0) mInventory[0] = null;
|
|
||||||
if (mInventory[1] != null) if (mInventory[1].stackSize == 0) mInventory[1] = null;
|
|
||||||
mMaxProgresstime = tRecipe.mDuration;
|
|
||||||
mEUt = tRecipe.mEUt;
|
|
||||||
mOutputItem1 = GT_Utility.copy(tRecipe.getOutput(0));
|
|
||||||
mOutputItem2 = GT_Utility.copy(tRecipe.getOutput(1));
|
|
||||||
mOutputItem3 = GT_Utility.copy(tRecipe.getOutput(2));
|
|
||||||
mOutputItem4 = GT_Utility.copy(tRecipe.getOutput(3));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (mFluid != null) {
|
|
||||||
ItemStack tStack = GT_Utility.fillFluidContainer(mFluid, GT_ModHandler.getEmptyCell(1));
|
|
||||||
FluidStack tFluid = GT_Utility.getFluidForFilledItem(tStack);
|
|
||||||
if (tStack != null && tFluid != null) {
|
|
||||||
tStack.stackSize = mFluid.amount / tFluid.amount;
|
|
||||||
int tAmount = tStack.stackSize;
|
|
||||||
tRecipe = Recipe.findEqualRecipe(false, false, Recipe.sGrinderRecipes, mInventory[0], tStack);
|
|
||||||
if (tRecipe != null) {
|
|
||||||
if (spaceForOutput(tRecipe) && tRecipe.isRecipeInputEqual(true, true, mInventory[0], tStack)) {
|
|
||||||
mFluid.amount -= (tAmount - tStack.stackSize) * tFluid.amount;
|
|
||||||
if (mFluid.amount <= 0) mFluid = null;
|
|
||||||
if (mInventory[0] != null) if (mInventory[0].stackSize == 0) mInventory[0] = null;
|
|
||||||
mMaxProgresstime = tRecipe.mDuration;
|
|
||||||
mEUt = tRecipe.mEUt;
|
|
||||||
mOutputItem1 = GT_Utility.copy(tRecipe.getOutput(0));
|
|
||||||
mOutputItem2 = GT_Utility.copy(tRecipe.getOutput(1));
|
|
||||||
mOutputItem3 = GT_Utility.copy(tRecipe.getOutput(2));
|
|
||||||
if (!GT_Utility.areStacksEqual(tRecipe.getOutput(3), GT_ModHandler.getEmptyCell(1))) mOutputItem4 = GT_Utility.copy(tRecipe.getOutput(3));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean allowPullStack(int aIndex, byte aSide, ItemStack aStack) {
|
public boolean allowPullStack(int aIndex, byte aSide, ItemStack aStack) {
|
||||||
return aIndex>1;
|
return aIndex>1;
|
||||||
|
@ -273,20 +67,6 @@ public class GT_MetaTileEntity_Grinder extends GT_MetaTileEntity_BasicTank {
|
||||||
return 70;
|
return 70;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Map<String, List<Object>> getInfoData() {
|
|
||||||
return InfoBuilder.create()
|
|
||||||
.newKey("sensor.progress.percentage", mProgresstime * 100.0D / mMaxProgresstime)
|
|
||||||
.newKey("sensor.progress.secs", mProgresstime / 20)
|
|
||||||
.newKey("sensor.progress.secs", mMaxProgresstime / 20)
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isGivingInformation() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getDescription() {
|
public String getDescription() {
|
||||||
return "metatilentity.GT_Grinder.tooltip";
|
return "metatilentity.GT_Grinder.tooltip";
|
||||||
|
@ -294,4 +74,5 @@ public class GT_MetaTileEntity_Grinder extends GT_MetaTileEntity_BasicTank {
|
||||||
|
|
||||||
@Override public int getTankPressure() {return -100;}
|
@Override public int getTankPressure() {return -100;}
|
||||||
@Override public int getCapacity() {return 10000;}
|
@Override public int getCapacity() {return 10000;}
|
||||||
|
@Override public int getFluidAmount() {return fluidInputs.get(0).amount;}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,93 +1,39 @@
|
||||||
package gregtechmod.common.tileentities.machines.multi;
|
package gregtechmod.common.tileentities.machines.multi;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import gregtechmod.api.GregTech_API;
|
import gregtechmod.api.GregTech_API;
|
||||||
import gregtechmod.api.interfaces.IGregTechTileEntity;
|
import gregtechmod.api.interfaces.IGregTechTileEntity;
|
||||||
import gregtechmod.api.metatileentity.MetaTileEntity;
|
import gregtechmod.api.metatileentity.MetaTileEntity;
|
||||||
import gregtechmod.api.recipe.Recipe;
|
import gregtechmod.api.metatileentity.implementations.BaseMultiWorkable;
|
||||||
import gregtechmod.api.util.GT_ModHandler;
|
import gregtechmod.api.util.GT_ModHandler;
|
||||||
import gregtechmod.api.util.GT_Utility;
|
import gregtechmod.api.util.GT_Utility;
|
||||||
import gregtechmod.api.util.InfoBuilder;
|
import gregtechmod.common.recipe.RecipeMaps;
|
||||||
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.init.Blocks;
|
import net.minecraft.init.Blocks;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
|
||||||
|
|
||||||
public class GT_MetaTileEntity_ImplosionCompressor extends MetaTileEntity {
|
public class GT_MetaTileEntity_ImplosionCompressor extends BaseMultiWorkable {
|
||||||
|
|
||||||
public int mProgresstime = 0, mMaxProgresstime = 0, mEUt = 0, mUpdate = 5;
|
|
||||||
public ItemStack mOutputItem1, mOutputItem2;
|
|
||||||
public boolean mMachine = false;
|
|
||||||
|
|
||||||
public GT_MetaTileEntity_ImplosionCompressor(int aID, String mName) {
|
public GT_MetaTileEntity_ImplosionCompressor(int aID, String mName) {
|
||||||
super(aID, mName);
|
super(aID, mName, RecipeMaps.IMPLOSION_COMPRESSOR);
|
||||||
}
|
}
|
||||||
|
|
||||||
public GT_MetaTileEntity_ImplosionCompressor() {
|
public GT_MetaTileEntity_ImplosionCompressor() {
|
||||||
|
super(RecipeMaps.IMPLOSION_COMPRESSOR);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean isTransformerUpgradable() {return true;}
|
|
||||||
@Override public boolean isOverclockerUpgradable() {return false;}
|
@Override public boolean isOverclockerUpgradable() {return false;}
|
||||||
@Override public boolean isBatteryUpgradable() {return true;}
|
|
||||||
@Override public boolean isSimpleMachine() {return false;}
|
|
||||||
@Override public boolean isFacingValid(byte aFacing) {return aFacing == 0;}
|
@Override public boolean isFacingValid(byte aFacing) {return aFacing == 0;}
|
||||||
@Override public boolean isEnetInput() {return true;}
|
|
||||||
@Override public boolean isInputFacing(byte aSide) {return true;}
|
|
||||||
@Override public int maxEUInput() {return 32;}
|
@Override public int maxEUInput() {return 32;}
|
||||||
@Override public int maxEUStore() {return 10000;}
|
|
||||||
@Override public int maxRFStore() {return maxEUStore();}
|
|
||||||
@Override public int maxSteamStore() {return maxEUStore();}
|
|
||||||
@Override public int getInvSize() {return 4;}
|
@Override public int getInvSize() {return 4;}
|
||||||
@Override public void onRightclick(EntityPlayer aPlayer) {getBaseMetaTileEntity().openGUI(aPlayer, 115);}
|
@Override public void onRightclick(EntityPlayer aPlayer) {getBaseMetaTileEntity().openGUI(aPlayer, 115);}
|
||||||
@Override public boolean isAccessAllowed(EntityPlayer aPlayer) {return true;}
|
|
||||||
@Override public int getProgresstime() {return mProgresstime;}
|
|
||||||
@Override public int maxProgresstime() {return mMaxProgresstime;}
|
|
||||||
@Override public int increaseProgress(int aProgress) {mProgresstime += aProgress; return mMaxProgresstime-mProgresstime;}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
||||||
return new GT_MetaTileEntity_ImplosionCompressor();
|
return new GT_MetaTileEntity_ImplosionCompressor();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
protected boolean checkMachine() {
|
||||||
public void saveNBTData(NBTTagCompound aNBT) {
|
|
||||||
aNBT.setInteger("mEUt", mEUt);
|
|
||||||
aNBT.setInteger("mProgresstime", mProgresstime);
|
|
||||||
aNBT.setInteger("mMaxProgresstime", mMaxProgresstime);
|
|
||||||
|
|
||||||
if (mOutputItem1 != null) {
|
|
||||||
NBTTagCompound tNBT = new NBTTagCompound();
|
|
||||||
mOutputItem1.writeToNBT(tNBT);
|
|
||||||
aNBT.setTag("mOutputItem1", tNBT);
|
|
||||||
}
|
|
||||||
if (mOutputItem2 != null) {
|
|
||||||
NBTTagCompound tNBT = new NBTTagCompound();
|
|
||||||
mOutputItem2.writeToNBT(tNBT);
|
|
||||||
aNBT.setTag("mOutputItem2", tNBT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void loadNBTData(NBTTagCompound aNBT) {
|
|
||||||
mUpdate = 5;
|
|
||||||
mEUt = aNBT.getInteger("mEUt");
|
|
||||||
mProgresstime = aNBT.getInteger("mProgresstime");
|
|
||||||
mMaxProgresstime = aNBT.getInteger("mMaxProgresstime");
|
|
||||||
|
|
||||||
NBTTagCompound tNBT1 = (NBTTagCompound)aNBT.getTag("mOutputItem1");
|
|
||||||
if (tNBT1 != null) {
|
|
||||||
mOutputItem1 = GT_Utility.loadItem(tNBT1);
|
|
||||||
}
|
|
||||||
NBTTagCompound tNBT2 = (NBTTagCompound)aNBT.getTag("mOutputItem2");
|
|
||||||
if (tNBT2 != null) {
|
|
||||||
mOutputItem2 = GT_Utility.loadItem(tNBT2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean checkMachine() {
|
|
||||||
for (int i = -1; i < 2; i++) for (int j = -1; j < 2; j++) for (int k = -1; k < 2; k++) {
|
for (int i = -1; i < 2; i++) for (int j = -1; j < 2; j++) for (int k = -1; k < 2; k++) {
|
||||||
if (i!=0||j!=0||k!=0) {
|
if (i!=0||j!=0||k!=0) {
|
||||||
if (getBaseMetaTileEntity().getBlockOffset(i, j-2, k) != GregTech_API.sBlockList[0]) return false;
|
if (getBaseMetaTileEntity().getBlockOffset(i, j-2, k) != GregTech_API.sBlockList[0]) return false;
|
||||||
|
@ -100,74 +46,8 @@ public class GT_MetaTileEntity_ImplosionCompressor extends MetaTileEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onMachineBlockUpdate() {
|
public void endProcess() {
|
||||||
mUpdate = 5;
|
sendSound((byte)1);
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onPostTick() {
|
|
||||||
if (getBaseMetaTileEntity().isServerSide()) {
|
|
||||||
if (mUpdate--==0) {
|
|
||||||
mMachine = checkMachine();
|
|
||||||
}
|
|
||||||
getBaseMetaTileEntity().setActive(mMachine);
|
|
||||||
if (mMachine && mMaxProgresstime > 0) {
|
|
||||||
if (getBaseMetaTileEntity().decreaseStoredEnergyUnits(mEUt, false)) {
|
|
||||||
if (++mProgresstime>mMaxProgresstime) {
|
|
||||||
addOutputProducts();
|
|
||||||
mOutputItem1 = null;
|
|
||||||
mOutputItem2 = null;
|
|
||||||
mProgresstime = 0;
|
|
||||||
mMaxProgresstime = 0;
|
|
||||||
}
|
|
||||||
if (mProgresstime == mMaxProgresstime/2) {
|
|
||||||
sendSound((byte)1);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (getBaseMetaTileEntity().isAllowedToWork() && getBaseMetaTileEntity().getUniversalEnergyStored() > 100) checkRecipe();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addOutputProducts() {
|
|
||||||
if (mOutputItem1 != null)
|
|
||||||
if (mInventory[2] == null)
|
|
||||||
mInventory[2] = GT_Utility.copy(mOutputItem1);
|
|
||||||
else if (GT_Utility.areStacksEqual(mInventory[2], mOutputItem1))
|
|
||||||
mInventory[2].stackSize = Math.min(mOutputItem1.getMaxStackSize(), mOutputItem1.stackSize + mInventory[2].stackSize);
|
|
||||||
|
|
||||||
if (mOutputItem2 != null)
|
|
||||||
if (mInventory[3] == null)
|
|
||||||
mInventory[3] = GT_Utility.copy(mOutputItem2);
|
|
||||||
else if (GT_Utility.areStacksEqual(mInventory[3], mOutputItem2))
|
|
||||||
mInventory[3].stackSize = Math.min(mOutputItem2.getMaxStackSize(), mOutputItem2.stackSize + mInventory[3].stackSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean spaceForOutput(Recipe aRecipe) {
|
|
||||||
if (mInventory[2] == null || aRecipe.getOutput(0) == null || (mInventory[2].stackSize + aRecipe.getOutput(0).stackSize <= mInventory[2].getMaxStackSize() && GT_Utility.areStacksEqual(mInventory[2], aRecipe.getOutput(0))))
|
|
||||||
if (mInventory[3] == null || aRecipe.getOutput(1) == null || (mInventory[3].stackSize + aRecipe.getOutput(1).stackSize <= mInventory[3].getMaxStackSize() && GT_Utility.areStacksEqual(mInventory[3], aRecipe.getOutput(1))))
|
|
||||||
return true;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean checkRecipe() {
|
|
||||||
if (!mMachine) return false;
|
|
||||||
Recipe tRecipe = Recipe.findEqualRecipe(false, false, Recipe.sImplosionRecipes, mInventory[0], mInventory[1]);
|
|
||||||
if (tRecipe != null) {
|
|
||||||
if (spaceForOutput(tRecipe) && tRecipe.isRecipeInputEqual(true, true, mInventory[0], mInventory[1])) {
|
|
||||||
if (mInventory[0] != null) if (mInventory[0].stackSize == 0) mInventory[0] = null;
|
|
||||||
if (mInventory[1] != null) if (mInventory[1].stackSize == 0) mInventory[1] = null;
|
|
||||||
mMaxProgresstime = tRecipe.mDuration;
|
|
||||||
mEUt = tRecipe.mEUt;
|
|
||||||
mOutputItem1 = GT_Utility.copy(tRecipe.getOutput(0));
|
|
||||||
mOutputItem2 = GT_Utility.copy(tRecipe.getOutput(1));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -196,19 +76,6 @@ public class GT_MetaTileEntity_ImplosionCompressor extends MetaTileEntity {
|
||||||
GT_Utility.doSoundAtClient(GregTech_API.sSoundList.get(5), 5, 1.0F, aX, aY, aZ);
|
GT_Utility.doSoundAtClient(GregTech_API.sSoundList.get(5), 5, 1.0F, aX, aY, aZ);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Map<String, List<Object>> getInfoData() {
|
|
||||||
return InfoBuilder.create()
|
|
||||||
.newKey("sensor.progress.percentage", mProgresstime * 100.0D / mMaxProgresstime)
|
|
||||||
.newKey("sensor.progress.secs", mProgresstime / 20)
|
|
||||||
.newKey("sensor.progress.secs", mMaxProgresstime / 20)
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isGivingInformation() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
@Override
|
@Override
|
||||||
public String getDescription() {
|
public String getDescription() {
|
||||||
return "metatileentity.GT_ImplosionCompressor.tooltip";
|
return "metatileentity.GT_ImplosionCompressor.tooltip";
|
||||||
|
|
|
@ -5,6 +5,7 @@ import java.util.List;
|
||||||
import gregtechmod.api.GregTech_API;
|
import gregtechmod.api.GregTech_API;
|
||||||
import gregtechmod.api.interfaces.IGregTechTileEntity;
|
import gregtechmod.api.interfaces.IGregTechTileEntity;
|
||||||
import gregtechmod.api.metatileentity.MetaTileEntity;
|
import gregtechmod.api.metatileentity.MetaTileEntity;
|
||||||
|
import gregtechmod.api.metatileentity.implementations.BaseMultiFluidWorkable;
|
||||||
import gregtechmod.api.util.GT_ModHandler;
|
import gregtechmod.api.util.GT_ModHandler;
|
||||||
import gregtechmod.api.util.GT_Utility;
|
import gregtechmod.api.util.GT_Utility;
|
||||||
import gregtechmod.api.util.ListAdapter;
|
import gregtechmod.api.util.ListAdapter;
|
||||||
|
@ -12,19 +13,18 @@ import gregtechmod.common.recipe.RecipeMaps;
|
||||||
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
import net.minecraftforge.fluids.Fluid;
|
||||||
import net.minecraftforge.fluids.FluidStack;
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
|
|
||||||
public class GT_MetaTileEntity_Sawmill extends BaseMultiWorkable {
|
public class GT_MetaTileEntity_Sawmill extends BaseMultiFluidWorkable {
|
||||||
|
|
||||||
private FluidStack[] fluids = new FluidStack[] { GT_ModHandler.getWater(0) };
|
|
||||||
|
|
||||||
public GT_MetaTileEntity_Sawmill(int aID, String mName) {
|
public GT_MetaTileEntity_Sawmill(int aID, String mName) {
|
||||||
super(aID, mName, RecipeMaps.SAWMILL);
|
super(aID, mName, RecipeMaps.SAWMILL, 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public GT_MetaTileEntity_Sawmill() {
|
public GT_MetaTileEntity_Sawmill() {
|
||||||
super(RecipeMaps.SAWMILL);
|
super(RecipeMaps.SAWMILL, 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean isFacingValid(byte aFacing) {return aFacing == 0;}
|
@Override public boolean isFacingValid(byte aFacing) {return aFacing == 0;}
|
||||||
|
@ -33,7 +33,9 @@ public class GT_MetaTileEntity_Sawmill extends BaseMultiWorkable {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
||||||
return new GT_MetaTileEntity_Sawmill();
|
GT_MetaTileEntity_Sawmill sawmill = new GT_MetaTileEntity_Sawmill();
|
||||||
|
sawmill.getFluidInputs().set(0, GT_ModHandler.getWater(0));
|
||||||
|
return sawmill;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -41,32 +43,6 @@ public class GT_MetaTileEntity_Sawmill extends BaseMultiWorkable {
|
||||||
return new ListAdapter<>(mInventory, 2, 4);
|
return new ListAdapter<>(mInventory, 2, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<FluidStack> getFluidInputs() {
|
|
||||||
if (fluids == null) {
|
|
||||||
return new ListAdapter<>(new FluidStack[1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return new ListAdapter<>(fluids);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void saveNBTData(NBTTagCompound aNBT) {
|
|
||||||
super.saveNBTData(aNBT);
|
|
||||||
if (GT_Utility.isFluidStackValid(fluids[0])) {
|
|
||||||
fluids[0].writeToNBT(aNBT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void loadNBTData(NBTTagCompound aNBT) {
|
|
||||||
super.loadNBTData(aNBT);
|
|
||||||
FluidStack stack = FluidStack.loadFluidStackFromNBT(aNBT);
|
|
||||||
if (GT_Utility.isFluidStackValid(stack)) {
|
|
||||||
fluids[0] = stack;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected boolean checkMachine() {
|
protected boolean checkMachine() {
|
||||||
for (int i = -1; i < 2; i++) for (int j = 1; j < 2; j++) for (int k = -1; k < 2; k++) {
|
for (int i = -1; i < 2; i++) for (int j = 1; j < 2; j++) for (int k = -1; k < 2; k++) {
|
||||||
if (getBaseMetaTileEntity().getBlockOffset(i, j-2, k) != GregTech_API.sBlockList[0]) return false;
|
if (getBaseMetaTileEntity().getBlockOffset(i, j-2, k) != GregTech_API.sBlockList[0]) return false;
|
||||||
|
@ -102,23 +78,12 @@ public class GT_MetaTileEntity_Sawmill extends BaseMultiWorkable {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int fill(FluidStack resource, boolean doFill) {
|
public boolean canFill(ForgeDirection aSide, Fluid aFluid) {
|
||||||
if (GT_Utility.isFluidStackValid(resource)) {
|
return getFluidAmount() < getCapacity();
|
||||||
int space = getCapacity() - fluids[0].amount;
|
|
||||||
int toFill = resource.amount <= space ? resource.amount : space;
|
|
||||||
if (doFill) {
|
|
||||||
fluids[0].amount += toFill;
|
|
||||||
// TODO could be dupe, may change resource
|
|
||||||
}
|
|
||||||
|
|
||||||
return toFill;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public FluidStack getFluid() {return fluids[0].copy();}
|
@Override public FluidStack getFluid() {return fluidInputs.get(0).copy();}
|
||||||
@Override public int getFluidAmount() {return fluids[0].amount;}
|
@Override public int getFluidAmount() {return fluidInputs.get(0).amount;}
|
||||||
@Override public int getTankPressure() {return -100;}
|
@Override public int getTankPressure() {return -100;}
|
||||||
@Override public int getCapacity() {return 10000;}
|
@Override public int getCapacity() {return 10000;}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,82 +1,34 @@
|
||||||
package gregtechmod.common.tileentities.machines.multi;
|
package gregtechmod.common.tileentities.machines.multi;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import gregtechmod.api.GregTech_API;
|
import gregtechmod.api.GregTech_API;
|
||||||
import gregtechmod.api.interfaces.IGregTechTileEntity;
|
import gregtechmod.api.interfaces.IGregTechTileEntity;
|
||||||
import gregtechmod.api.metatileentity.MetaTileEntity;
|
import gregtechmod.api.metatileentity.MetaTileEntity;
|
||||||
import gregtechmod.api.recipe.Recipe;
|
import gregtechmod.api.metatileentity.implementations.BaseMultiWorkable;
|
||||||
import gregtechmod.api.util.GT_Utility;
|
import gregtechmod.common.recipe.RecipeMaps;
|
||||||
import gregtechmod.api.util.InfoBuilder;
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
|
||||||
|
|
||||||
public class GT_MetaTileEntity_VacuumFreezer extends MetaTileEntity {
|
public class GT_MetaTileEntity_VacuumFreezer extends BaseMultiWorkable {
|
||||||
|
|
||||||
public int mProgresstime = 0, mMaxProgresstime = 0, mEUt = 0, mUpdate = 5;
|
|
||||||
public ItemStack mOutputItem1;
|
|
||||||
public boolean mMachine = false;
|
|
||||||
|
|
||||||
public GT_MetaTileEntity_VacuumFreezer(int aID, String mName) {
|
public GT_MetaTileEntity_VacuumFreezer(int aID, String mName) {
|
||||||
super(aID, mName);
|
super(aID, mName, RecipeMaps.VACUUM_FREEZER);
|
||||||
}
|
}
|
||||||
|
|
||||||
public GT_MetaTileEntity_VacuumFreezer() {
|
public GT_MetaTileEntity_VacuumFreezer() {
|
||||||
|
super(RecipeMaps.VACUUM_FREEZER);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean isTransformerUpgradable() {return true;}
|
|
||||||
@Override public boolean isOverclockerUpgradable() {return true;}
|
|
||||||
@Override public boolean isBatteryUpgradable() {return true;}
|
|
||||||
@Override public boolean isSimpleMachine() {return false;}
|
|
||||||
@Override public boolean isFacingValid(byte aFacing) {return aFacing == 0;}
|
@Override public boolean isFacingValid(byte aFacing) {return aFacing == 0;}
|
||||||
@Override public boolean isEnetInput() {return true;}
|
|
||||||
@Override public boolean isInputFacing(byte aSide) {return true;}
|
|
||||||
@Override public int maxEUInput() {return 128;}
|
|
||||||
@Override public int maxEUStore() {return 10000;}
|
|
||||||
@Override public int maxRFStore() {return maxEUStore();}
|
|
||||||
@Override public int maxSteamStore() {return maxEUStore();}
|
|
||||||
@Override public int getInvSize() {return 2;}
|
@Override public int getInvSize() {return 2;}
|
||||||
@Override public void onRightclick(EntityPlayer aPlayer) {getBaseMetaTileEntity().openGUI(aPlayer, 122);}
|
@Override public void onRightclick(EntityPlayer aPlayer) {getBaseMetaTileEntity().openGUI(aPlayer, 122);}
|
||||||
@Override public boolean isAccessAllowed(EntityPlayer aPlayer) {return true;}
|
|
||||||
@Override public int getProgresstime() {return mProgresstime;}
|
|
||||||
@Override public int maxProgresstime() {return mMaxProgresstime;}
|
|
||||||
@Override public int increaseProgress(int aProgress) {mProgresstime += aProgress; return mMaxProgresstime-mProgresstime;}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
||||||
return new GT_MetaTileEntity_VacuumFreezer();
|
return new GT_MetaTileEntity_VacuumFreezer();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void saveNBTData(NBTTagCompound aNBT) {
|
|
||||||
aNBT.setInteger("mEUt", mEUt);
|
|
||||||
aNBT.setInteger("mProgresstime", mProgresstime);
|
|
||||||
aNBT.setInteger("mMaxProgresstime", mMaxProgresstime);
|
|
||||||
|
|
||||||
if (mOutputItem1 != null) {
|
|
||||||
NBTTagCompound tNBT = new NBTTagCompound();
|
|
||||||
mOutputItem1.writeToNBT(tNBT);
|
|
||||||
aNBT.setTag("mOutputItem1", tNBT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void loadNBTData(NBTTagCompound aNBT) {
|
|
||||||
mUpdate = 5;
|
|
||||||
mEUt = aNBT.getInteger("mEUt");
|
|
||||||
mProgresstime = aNBT.getInteger("mProgresstime");
|
|
||||||
mMaxProgresstime = aNBT.getInteger("mMaxProgresstime");
|
|
||||||
|
|
||||||
NBTTagCompound tNBT1 = (NBTTagCompound)aNBT.getTag("mOutputItem1");
|
|
||||||
if (tNBT1 != null) {
|
|
||||||
mOutputItem1 = GT_Utility.loadItem(tNBT1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean checkMachine() {
|
protected boolean checkMachine() {
|
||||||
for (int i = -1; i < 2; i++) for (int j = -1; j < 2; j++) for (int k = -1; k < 2; k++) {
|
for (int i = -1; i < 2; i++) for (int j = -1; j < 2; j++) for (int k = -1; k < 2; k++) {
|
||||||
if (i!=0||j!=0||k!=0) {
|
if (i!=0||j!=0||k!=0) {
|
||||||
if (getBaseMetaTileEntity().getBlockOffset(i, j-2, k) != GregTech_API.sBlockList[0]) return false;
|
if (getBaseMetaTileEntity().getBlockOffset(i, j-2, k) != GregTech_API.sBlockList[0]) return false;
|
||||||
|
@ -88,68 +40,6 @@ public class GT_MetaTileEntity_VacuumFreezer extends MetaTileEntity {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onMachineBlockUpdate() {
|
|
||||||
mUpdate = 5;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onPostTick() {
|
|
||||||
if (getBaseMetaTileEntity().isServerSide()) {
|
|
||||||
if (mUpdate--==0) {
|
|
||||||
mMachine = checkMachine();
|
|
||||||
}
|
|
||||||
getBaseMetaTileEntity().setActive(mMachine);
|
|
||||||
if (mMachine && mMaxProgresstime > 0) {
|
|
||||||
if (mProgresstime < 0 || getBaseMetaTileEntity().decreaseStoredEnergyUnits(mEUt*(int)Math.pow(4, getBaseMetaTileEntity().getOverclockerUpgradeCount()), false)) {
|
|
||||||
if ((mProgresstime+=(int)Math.pow(2, getBaseMetaTileEntity().getOverclockerUpgradeCount()))>=mMaxProgresstime) {
|
|
||||||
addOutputProducts();
|
|
||||||
mOutputItem1 = null;
|
|
||||||
mProgresstime = 0;
|
|
||||||
mMaxProgresstime = 0;
|
|
||||||
getBaseMetaTileEntity().setErrorDisplayID(0);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (GregTech_API.sConstantEnergy) {
|
|
||||||
mProgresstime = -10;
|
|
||||||
getBaseMetaTileEntity().setErrorDisplayID(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (getBaseMetaTileEntity().isAllowedToWork() && getBaseMetaTileEntity().getUniversalEnergyStored() > 100) checkRecipe();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addOutputProducts() {
|
|
||||||
if (mOutputItem1 != null)
|
|
||||||
if (mInventory[1] == null)
|
|
||||||
mInventory[1] = GT_Utility.copy(mOutputItem1);
|
|
||||||
else if (GT_Utility.areStacksEqual(mInventory[1], mOutputItem1))
|
|
||||||
mInventory[1].stackSize = Math.min(mOutputItem1.getMaxStackSize(), mOutputItem1.stackSize + mInventory[1].stackSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean spaceForOutput(Recipe aRecipe) {
|
|
||||||
if (mInventory[1] == null || aRecipe.getOutput(0) == null || (mInventory[1].stackSize + aRecipe.getOutput(0).stackSize <= mInventory[1].getMaxStackSize() && GT_Utility.areStacksEqual(mInventory[1], aRecipe.getOutput(0))))
|
|
||||||
return true;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean checkRecipe() {
|
|
||||||
if (!mMachine) return false;
|
|
||||||
Recipe tRecipe = Recipe.findEqualRecipe(false, false, Recipe.sVacuumRecipes, mInventory[0], null);
|
|
||||||
if (tRecipe != null) {
|
|
||||||
if (spaceForOutput(tRecipe) && tRecipe.isRecipeInputEqual(true, true, mInventory[0], null)) {
|
|
||||||
if (mInventory[0] != null) if (mInventory[0].stackSize == 0) mInventory[0] = null;
|
|
||||||
mMaxProgresstime = tRecipe.mDuration;
|
|
||||||
mEUt = tRecipe.mEUt;
|
|
||||||
mOutputItem1 = GT_Utility.copy(tRecipe.getOutput(0));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean allowPullStack(int aIndex, byte aSide, ItemStack aStack) {
|
public boolean allowPullStack(int aIndex, byte aSide, ItemStack aStack) {
|
||||||
return aIndex==1;
|
return aIndex==1;
|
||||||
|
@ -169,19 +59,6 @@ public class GT_MetaTileEntity_VacuumFreezer extends MetaTileEntity {
|
||||||
return 77;
|
return 77;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Map<String, List<Object>> getInfoData() {
|
|
||||||
return InfoBuilder.create()
|
|
||||||
.newKey("sensor.progress.percentage", mProgresstime * 100.0D / mMaxProgresstime)
|
|
||||||
.newKey("sensor.progress.secs", mProgresstime / 20)
|
|
||||||
.newKey("sensor.progress.secs", mMaxProgresstime / 20)
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isGivingInformation() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
@Override
|
@Override
|
||||||
public String getDescription() {
|
public String getDescription() {
|
||||||
return "metatileentity.GT_VacuumFreezer.tooltip";
|
return "metatileentity.GT_VacuumFreezer.tooltip";
|
||||||
|
|
Loading…
Reference in a new issue