API fixes, Recipe#match etc
- Fixed partically centrifuge (UI desync, glitchy recipe logic, nbt save) - Fixed RecipeLogic NBT save issue, has resetting recipe progress - Added one interface to work with RecipeLogic - Fixed syntax errors in generators
This commit is contained in:
parent
6612f3c058
commit
1ecc44f5f2
24 changed files with 313 additions and 406 deletions
12
README.md
12
README.md
|
@ -1,4 +1,6 @@
|
||||||
# A port of GregTech 4 to Minecraft 1.7.10
|
# GregTech 4
|
||||||
|
|
||||||
|
Port of GregTech 4 to Minecraft 1.7.10 with improved compat and bugfixes
|
||||||
|
|
||||||
Our website [click](https://nukepowered.info)
|
Our website [click](https://nukepowered.info)
|
||||||
|
|
||||||
|
@ -8,12 +10,12 @@ Permissions from GregoriusT
|
||||||
## Contributing & Build guide
|
## Contributing & Build guide
|
||||||
#### Setting up enviroment
|
#### Setting up enviroment
|
||||||
```
|
```
|
||||||
1. git clone https://github.com/Nukepowered/GregTech4.git
|
1. git clone https://github.com/Nukepowered/GregTech4.git
|
||||||
2. gradlew setupDecompWorkspace
|
2. gradlew setupDecompWorkspace
|
||||||
3. gradlew eclipse/idea
|
3. gradlew eclipse/idea
|
||||||
```
|
```
|
||||||
#### Building jar file
|
#### Building jar file
|
||||||
|
|
||||||
```
|
```
|
||||||
gradlew build
|
gradlew build
|
||||||
```
|
```
|
|
@ -0,0 +1,36 @@
|
||||||
|
package gregtechmod.api.interfaces;
|
||||||
|
|
||||||
|
import gregtechmod.api.recipe.Recipe;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author TheDarkDnKTv
|
||||||
|
* Using for mark classes working with RecipeLogic class
|
||||||
|
*/
|
||||||
|
public interface IRecipeWorkable {
|
||||||
|
public IGregTechTileEntity getBaseMetaTileEntity();
|
||||||
|
|
||||||
|
public int getMinimumStoredEU();
|
||||||
|
|
||||||
|
public void startProcess();
|
||||||
|
|
||||||
|
public void endProcess();
|
||||||
|
|
||||||
|
public void stutterProcess();
|
||||||
|
|
||||||
|
public boolean allowToCheckRecipe();
|
||||||
|
|
||||||
|
public boolean spaceForOutput(Recipe recipe);
|
||||||
|
|
||||||
|
public ItemStack getStackInSlot(int slotIdx);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Array of input slot ids
|
||||||
|
*/
|
||||||
|
public int[] getInputSlots();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Array of output slot ids
|
||||||
|
*/
|
||||||
|
public int[] getOutputSlots();
|
||||||
|
}
|
|
@ -700,8 +700,8 @@ public class BaseMetaTileEntity extends BaseTileEntity implements IGregTechTileE
|
||||||
@Override public boolean hasCustomInventoryName() {return false;}
|
@Override public boolean hasCustomInventoryName() {return false;}
|
||||||
@Override public ItemStack getStackInSlotOnClosing(int slot) {ItemStack stack = getStackInSlot(slot); if (stack != null) setInventorySlotContents(slot, null); return stack;}
|
@Override public ItemStack getStackInSlotOnClosing(int slot) {ItemStack stack = getStackInSlot(slot); if (stack != null) setInventorySlotContents(slot, null); return stack;}
|
||||||
@Override public void onMachineBlockUpdate() {if (hasValidMetaTileEntity()) mMetaTileEntity.onMachineBlockUpdate();}
|
@Override public void onMachineBlockUpdate() {if (hasValidMetaTileEntity()) mMetaTileEntity.onMachineBlockUpdate();}
|
||||||
@Override public int getProgress() {return hasValidMetaTileEntity()?mMetaTileEntity.getRecipeLogic().getProgressTime():0;}
|
@Override public int getProgress() {return hasValidMetaTileEntity()?mMetaTileEntity.getRecipeLogic() != null?mMetaTileEntity.getRecipeLogic().getProgressTime():0:0;}
|
||||||
@Override public int getMaxProgress() {return hasValidMetaTileEntity()?mMetaTileEntity.getRecipeLogic().getMaxProgressTime():0;}
|
@Override public int getMaxProgress() {return hasValidMetaTileEntity()?mMetaTileEntity.getRecipeLogic() != null?mMetaTileEntity.getRecipeLogic().getMaxProgressTime():0:0;}
|
||||||
@Override public boolean increaseProgress(int aProgressAmountInTicks) {return hasValidMetaTileEntity()?mMetaTileEntity.increaseProgress(aProgressAmountInTicks)!=aProgressAmountInTicks:false;}
|
@Override public boolean increaseProgress(int aProgressAmountInTicks) {return hasValidMetaTileEntity()?mMetaTileEntity.increaseProgress(aProgressAmountInTicks)!=aProgressAmountInTicks:false;}
|
||||||
@Override public boolean hasThingsToDo() {return getMaxProgress()>0;}
|
@Override public boolean hasThingsToDo() {return getMaxProgress()>0;}
|
||||||
@Override public void enableWorking() {if (!mWorks) mWorkUpdate = true; mWorks = true;}
|
@Override public void enableWorking() {if (!mWorks) mWorkUpdate = true; mWorks = true;}
|
||||||
|
@ -1529,6 +1529,7 @@ public class BaseMetaTileEntity extends BaseTileEntity implements IGregTechTileE
|
||||||
aStack = GT_OreDictUnificator.get(aStack);
|
aStack = GT_OreDictUnificator.get(aStack);
|
||||||
if (GT_Utility.areStacksEqual(tStack, aStack) && tStack.stackSize + aStack.stackSize <= Math.min(aStack.getMaxStackSize(), getInventoryStackLimit())) {
|
if (GT_Utility.areStacksEqual(tStack, aStack) && tStack.stackSize + aStack.stackSize <= Math.min(aStack.getMaxStackSize(), getInventoryStackLimit())) {
|
||||||
tStack.stackSize+=aStack.stackSize;
|
tStack.stackSize+=aStack.stackSize;
|
||||||
|
mInventoryChanged = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -32,9 +32,9 @@ public class GT_MetaTileEntity_E_Furnace extends GT_MetaTileEntity_BasicMachine
|
||||||
// An empty constructor, which is needed for several Java reasons
|
// An empty constructor, which is needed for several Java reasons
|
||||||
public GT_MetaTileEntity_E_Furnace(List<Recipe> recipeMap) {
|
public GT_MetaTileEntity_E_Furnace(List<Recipe> recipeMap) {
|
||||||
super(recipeMap);
|
super(recipeMap);
|
||||||
recipeLogic.setHandler(() -> {
|
recipeLogic.setRecipeProvider(() -> {
|
||||||
ItemStack output;
|
ItemStack output;
|
||||||
if (mInventory[2] != null && null != (output = GT_ModHandler.getSmeltingOutput(mInventory[2], true, mInventory[3]))) {
|
if (mInventory[2] != null && null != (output = GT_ModHandler.getSmeltingOutput(mInventory[2], false, mInventory[3]))) {
|
||||||
if (mInventory[2].stackSize == 0) mInventory[2] = null;
|
if (mInventory[2].stackSize == 0) mInventory[2] = null;
|
||||||
// It shall cook at 3 EU/t, if this Machine is overclocked then it will consume more
|
// It shall cook at 3 EU/t, if this Machine is overclocked then it will consume more
|
||||||
// The time it usually needs, the Heating Coils re decreasing this Time, and if the Machine is overclocked, then it gets processed faster
|
// The time it usually needs, the Heating Coils re decreasing this Time, and if the Machine is overclocked, then it gets processed faster
|
||||||
|
|
|
@ -12,13 +12,18 @@ import net.minecraft.item.ItemStack;
|
||||||
import net.minecraftforge.fluids.FluidStack;
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
|
|
||||||
public abstract class GT_MetaTileEntity_BasicGenerator extends GT_MetaTileEntity_BasicTank {
|
public abstract class GT_MetaTileEntity_BasicGenerator extends GT_MetaTileEntity_BasicTank {
|
||||||
|
protected List<Recipe> recipeMap;
|
||||||
|
protected int efficiency;
|
||||||
|
|
||||||
public GT_MetaTileEntity_BasicGenerator(int aID, String aName) {
|
public GT_MetaTileEntity_BasicGenerator(int aID, String aName, List<Recipe> recipeMap, int efficiency) {
|
||||||
super(aID, aName);
|
super(aID, aName);
|
||||||
|
this.recipeMap = recipeMap;
|
||||||
|
this.efficiency = efficiency;
|
||||||
}
|
}
|
||||||
|
|
||||||
public GT_MetaTileEntity_BasicGenerator() {
|
public GT_MetaTileEntity_BasicGenerator(List<Recipe> recipeMap, int efficiency) {
|
||||||
|
this.recipeMap = recipeMap;
|
||||||
|
this.efficiency = efficiency;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean isSimpleMachine() {return false;}
|
@Override public boolean isSimpleMachine() {return false;}
|
||||||
|
@ -68,28 +73,24 @@ public abstract class GT_MetaTileEntity_BasicGenerator extends GT_MetaTileEntity
|
||||||
if (getBaseMetaTileEntity().isServerSide()) getBaseMetaTileEntity().setActive(getBaseMetaTileEntity().isAllowedToWork() && getBaseMetaTileEntity().getUniversalEnergyStored() >= getBaseMetaTileEntity().getOutputVoltage() + getMinimumStoredEU());
|
if (getBaseMetaTileEntity().isServerSide()) getBaseMetaTileEntity().setActive(getBaseMetaTileEntity().isAllowedToWork() && getBaseMetaTileEntity().getUniversalEnergyStored() >= getBaseMetaTileEntity().getOutputVoltage() + getMinimumStoredEU());
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract List<Recipe> getRecipes();
|
|
||||||
|
|
||||||
public abstract int getEfficiency();
|
|
||||||
|
|
||||||
public int getFuelValue(FluidStack aLiquid) {
|
public int getFuelValue(FluidStack aLiquid) {
|
||||||
if (aLiquid == null) return 0;
|
if (aLiquid == null) return 0;
|
||||||
FluidStack tLiquid;
|
FluidStack tLiquid;
|
||||||
for (Recipe tFuel : getRecipes()) if ((tLiquid = GT_Utility.getFluidForFilledItem(tFuel.getRepresentativeInput(0))) != null) if (aLiquid.isFluidEqual(tLiquid)) return (int)(((long)tFuel.mStartEU * getEfficiency()) / 100);
|
for (Recipe tFuel : recipeMap) if ((tLiquid = GT_Utility.getFluidForFilledItem(tFuel.getFirstInputs()[0])) != null) if (aLiquid.isFluidEqual(tLiquid)) return (int)(((long)tFuel.mStartEU * efficiency) / 100);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getFuelValue(ItemStack aStack) {
|
public int getFuelValue(ItemStack aStack) {
|
||||||
if (GT_Utility.isStackInvalid(aStack)) return 0;
|
if (GT_Utility.isStackInvalid(aStack)) return 0;
|
||||||
Recipe tFuel = Recipe.findEqualRecipe(true, false, getRecipes(), aStack);
|
Recipe tFuel = Recipe.findEqualRecipe(true, false, recipeMap, aStack);
|
||||||
if (tFuel != null) return (int)((tFuel.mStartEU * 1000L * getEfficiency()) / 100);
|
if (tFuel != null) return (int)((tFuel.mStartEU * 1000L * efficiency) / 100);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ItemStack getEmptyContainer(ItemStack aStack) {
|
public ItemStack getEmptyContainer(ItemStack aStack) {
|
||||||
if (GT_Utility.isStackInvalid(aStack)) return null;
|
if (GT_Utility.isStackInvalid(aStack)) return null;
|
||||||
Recipe tFuel = Recipe.findEqualRecipe(true, false, getRecipes(), aStack);
|
Recipe tFuel = Recipe.findEqualRecipe(true, false, recipeMap, aStack);
|
||||||
if (tFuel != null) return GT_Utility.copy(tFuel.getOutput(0));
|
if (tFuel != null) return GT_Utility.copy(tFuel.getOutputs()[0]);
|
||||||
return GT_Utility.getContainerItem(aStack);
|
return GT_Utility.getContainerItem(aStack);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import gregtechmod.api.GregTech_API;
|
import gregtechmod.api.GregTech_API;
|
||||||
|
import gregtechmod.api.interfaces.IRecipeWorkable;
|
||||||
import gregtechmod.api.metatileentity.MetaTileEntity;
|
import gregtechmod.api.metatileentity.MetaTileEntity;
|
||||||
import gregtechmod.api.recipe.Recipe;
|
import gregtechmod.api.recipe.Recipe;
|
||||||
import gregtechmod.api.recipe.RecipeLogic;
|
import gregtechmod.api.recipe.RecipeLogic;
|
||||||
|
@ -22,8 +23,8 @@ import net.minecraft.util.ChatComponentTranslation;
|
||||||
* This is the main construct for my Basic Machines such as the Automatic Extractor
|
* This is the main construct for my Basic Machines such as the Automatic Extractor
|
||||||
* Extend this class to make a simple Machine
|
* Extend this class to make a simple Machine
|
||||||
*/
|
*/
|
||||||
public abstract class GT_MetaTileEntity_BasicMachine extends MetaTileEntity {
|
public abstract class GT_MetaTileEntity_BasicMachine extends MetaTileEntity implements IRecipeWorkable {
|
||||||
public boolean bAlloyInputFromOutputSide = false, bOutput = false, bOutputBlocked = false, bItemTransfer = false, bSeperatedInputs = false, bHasBeenUpdated = false, bStuttering = false;
|
public boolean bAlloyInputFromOutputSide = false, bOutput = false, bItemTransfer = false, bSeperatedInputs = false, bHasBeenUpdated = false, bStuttering = false;
|
||||||
public int mMainFacing = -1;
|
public int mMainFacing = -1;
|
||||||
|
|
||||||
protected RecipeLogic recipeLogic;
|
protected RecipeLogic recipeLogic;
|
||||||
|
@ -60,7 +61,7 @@ public abstract class GT_MetaTileEntity_BasicMachine extends MetaTileEntity {
|
||||||
@Override public int dechargerSlotCount() {return getElectricTier()>0?1:0;}
|
@Override public int dechargerSlotCount() {return getElectricTier()>0?1:0;}
|
||||||
@Override public boolean isAccessAllowed(EntityPlayer aPlayer) {return true;}
|
@Override public boolean isAccessAllowed(EntityPlayer aPlayer) {return true;}
|
||||||
@Override public RecipeLogic getRecipeLogic() {return recipeLogic;}
|
@Override public RecipeLogic getRecipeLogic() {return recipeLogic;}
|
||||||
// @Override public int increaseProgress(int aProgress) {mProgresstime += aProgress; return mMaxProgresstime-mProgresstime;} // TODO recipe logic related
|
@Override public int increaseProgress(int aProgress) {recipeLogic.increaseProgressTime(aProgress);return recipeLogic.getMaxProgressTime()-recipeLogic.getProgressTime();}
|
||||||
@Override public boolean isLiquidInput (byte aSide) {return aSide != mMainFacing;}
|
@Override public boolean isLiquidInput (byte aSide) {return aSide != mMainFacing;}
|
||||||
@Override public boolean isLiquidOutput(byte aSide) {return aSide != mMainFacing;}
|
@Override public boolean isLiquidOutput(byte aSide) {return aSide != mMainFacing;}
|
||||||
|
|
||||||
|
@ -89,7 +90,6 @@ public abstract class GT_MetaTileEntity_BasicMachine extends MetaTileEntity {
|
||||||
@Override
|
@Override
|
||||||
public void onPostTick() {
|
public void onPostTick() {
|
||||||
if (getBaseMetaTileEntity().isServerSide()) {
|
if (getBaseMetaTileEntity().isServerSide()) {
|
||||||
boolean tSucceeded = false;
|
|
||||||
if (mMainFacing < 2 && getBaseMetaTileEntity().getFrontFacing() > 1) {
|
if (mMainFacing < 2 && getBaseMetaTileEntity().getFrontFacing() > 1) {
|
||||||
mMainFacing = getBaseMetaTileEntity().getFrontFacing();
|
mMainFacing = getBaseMetaTileEntity().getFrontFacing();
|
||||||
}
|
}
|
||||||
|
@ -98,32 +98,9 @@ public abstract class GT_MetaTileEntity_BasicMachine extends MetaTileEntity {
|
||||||
getBaseMetaTileEntity().setFrontFacing(getBaseMetaTileEntity().getBackFacing());
|
getBaseMetaTileEntity().setFrontFacing(getBaseMetaTileEntity().getBackFacing());
|
||||||
}
|
}
|
||||||
|
|
||||||
recipeLogic.update();
|
boolean succeded = recipeLogic.update();
|
||||||
// if (mMaxProgresstime > 0) {
|
|
||||||
// if (mProgresstime < 0 || getBaseMetaTileEntity().decreaseStoredEnergyUnits(mEUt*(int)Math.pow(4, getBaseMetaTileEntity().getOverclockerUpgradeCount()), false)) {
|
|
||||||
// if ((mProgresstime+=(int)Math.pow(2, getBaseMetaTileEntity().getOverclockerUpgradeCount()))>=mMaxProgresstime) {
|
|
||||||
// if (!getBaseMetaTileEntity().addStackToSlot(3, mOutputItem1)) getBaseMetaTileEntity().addStackToSlot(4, mOutputItem1);
|
|
||||||
// if (!getBaseMetaTileEntity().addStackToSlot(3, mOutputItem2)) getBaseMetaTileEntity().addStackToSlot(4, mOutputItem2);
|
|
||||||
// mOutputItem1 = null;
|
|
||||||
// mOutputItem2 = null;
|
|
||||||
// mProgresstime = 0;
|
|
||||||
// mMaxProgresstime = 0;
|
|
||||||
// tSucceeded = true;
|
|
||||||
// endProcess();
|
|
||||||
// }
|
|
||||||
// bStuttering = false;
|
|
||||||
// } else {
|
|
||||||
// if (!bStuttering) {
|
|
||||||
// stutterProcess();
|
|
||||||
// if (useStandardStutterSound()) sendSound((byte)8);
|
|
||||||
// bStuttering = true;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// } else {
|
|
||||||
// getBaseMetaTileEntity().setActive(false);
|
|
||||||
// }
|
|
||||||
|
|
||||||
if (bItemTransfer && (mInventory[3] != null || mInventory[4] != null) && getBaseMetaTileEntity().getFrontFacing() != mMainFacing && doesAutoOutput() && (tSucceeded || bOutputBlocked || getBaseMetaTileEntity().hasInventoryBeenModified() || getBaseMetaTileEntity().getTimer()%600 == 0) && getBaseMetaTileEntity().isUniversalEnergyStored(500)) {
|
if (bItemTransfer && (mInventory[3] != null || mInventory[4] != null) && getBaseMetaTileEntity().getFrontFacing() != mMainFacing && doesAutoOutput() && (succeded || getBaseMetaTileEntity().hasInventoryBeenModified() || getBaseMetaTileEntity().getTimer()%600 == 0) && getBaseMetaTileEntity().isUniversalEnergyStored(500)) {
|
||||||
TileEntity tTileEntity2 = getBaseMetaTileEntity().getTileEntityAtSide(getBaseMetaTileEntity().getFrontFacing());
|
TileEntity tTileEntity2 = getBaseMetaTileEntity().getTileEntityAtSide(getBaseMetaTileEntity().getFrontFacing());
|
||||||
int tCost = GT_Utility.moveOneItemStack(getBaseMetaTileEntity(), tTileEntity2, getBaseMetaTileEntity().getFrontFacing(), getBaseMetaTileEntity().getBackFacing(), null, false, (byte)64, (byte)1, (byte)64, (byte)1);
|
int tCost = GT_Utility.moveOneItemStack(getBaseMetaTileEntity(), tTileEntity2, getBaseMetaTileEntity().getFrontFacing(), getBaseMetaTileEntity().getBackFacing(), null, false, (byte)64, (byte)1, (byte)64, (byte)1);
|
||||||
if (tCost > 0) {
|
if (tCost > 0) {
|
||||||
|
@ -134,36 +111,6 @@ public abstract class GT_MetaTileEntity_BasicMachine extends MetaTileEntity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mInventory[3] == null && mInventory[4] == null) bOutputBlocked = false; // FIXME output blocked wtf
|
|
||||||
|
|
||||||
// if (getBaseMetaTileEntity().isAllowedToWork()) {
|
|
||||||
// if (mMaxProgresstime <= 0 && (tSucceeded || getBaseMetaTileEntity().hasInventoryBeenModified() || getBaseMetaTileEntity().getTimer()%600 == 0 || getBaseMetaTileEntity().hasWorkJustBeenEnabled()) && getBaseMetaTileEntity().isUniversalEnergyStored(getMinimumStoredEU()-100)) {
|
|
||||||
// checkRecipe();
|
|
||||||
// if (mInventory[1] != null && mInventory[1].stackSize <= 0) mInventory[1] = null;
|
|
||||||
// if (mInventory[2] != null && mInventory[2].stackSize <= 0) mInventory[2] = null;
|
|
||||||
// if (mMaxProgresstime > 0) {
|
|
||||||
// mOutputItem1 = GT_OreDictUnificator.get(true, mOutputItem1);
|
|
||||||
// mOutputItem2 = GT_OreDictUnificator.get(true, mOutputItem2);
|
|
||||||
// if (GT_Utility.isDebugItem(mInventory[5])) mMaxProgresstime = 1;
|
|
||||||
// } else {
|
|
||||||
// mOutputItem1 = null;
|
|
||||||
// mOutputItem2 = null;
|
|
||||||
// }
|
|
||||||
// if (mOutputItem1 != null && mOutputItem1.stackSize > 64) mOutputItem1.stackSize = 64;
|
|
||||||
// if (mOutputItem2 != null && mOutputItem2.stackSize > 64) mOutputItem2.stackSize = 64;
|
|
||||||
//
|
|
||||||
// if (mMaxProgresstime > 0) {
|
|
||||||
// startProcess();
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// } else {
|
|
||||||
// if (!bStuttering) {
|
|
||||||
// stutterProcess();
|
|
||||||
// if (useStandardStutterSound()) sendSound((byte)8);
|
|
||||||
// bStuttering = true;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -182,11 +129,12 @@ public abstract class GT_MetaTileEntity_BasicMachine extends MetaTileEntity {
|
||||||
return mMainFacing<2?aSide==aFacing?aActive?getFrontFacingActive():getFrontFacingInactive():aSide==0?aActive?getBottomFacingActive():getBottomFacingInactive():aSide==1?aActive?getTopFacingActive():getTopFacingInactive():aActive?getSideFacingActive():getSideFacingInactive():aSide==mMainFacing?aActive?getFrontFacingActive():getFrontFacingInactive():(showPipeFacing()&&aSide==aFacing)?aSide==0?getBottomFacingPipe():aSide==1?getTopFacingPipe():getSideFacingPipe():aSide==0?aActive?getBottomFacingActive():getBottomFacingInactive():aSide==1?aActive?getTopFacingActive():getTopFacingInactive():aActive?getSideFacingActive():getSideFacingInactive();
|
return mMainFacing<2?aSide==aFacing?aActive?getFrontFacingActive():getFrontFacingInactive():aSide==0?aActive?getBottomFacingActive():getBottomFacingInactive():aSide==1?aActive?getTopFacingActive():getTopFacingInactive():aActive?getSideFacingActive():getSideFacingInactive():aSide==mMainFacing?aActive?getFrontFacingActive():getFrontFacingInactive():(showPipeFacing()&&aSide==aFacing)?aSide==0?getBottomFacingPipe():aSide==1?getTopFacingPipe():getSideFacingPipe():aSide==0?aActive?getBottomFacingActive():getBottomFacingInactive():aSide==1?aActive?getTopFacingActive():getTopFacingInactive():aActive?getSideFacingActive():getSideFacingInactive();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean spaceForOutput(ItemStack aOutput1, ItemStack aOutput2) {
|
@Override
|
||||||
|
public boolean spaceForOutput(Recipe recipe) {
|
||||||
|
ItemStack aOutput1 = recipe.getOutputs()[0], aOutput2 = recipe.getOutputs().length > 1 ? recipe.getOutputs()[1] : null;
|
||||||
if (mInventory[3] == null || aOutput1 == null || (mInventory[3].stackSize + aOutput1.stackSize <= mInventory[3].getMaxStackSize() && GT_Utility.areStacksEqual(mInventory[3], aOutput1)))
|
if (mInventory[3] == null || aOutput1 == null || (mInventory[3].stackSize + aOutput1.stackSize <= mInventory[3].getMaxStackSize() && GT_Utility.areStacksEqual(mInventory[3], aOutput1)))
|
||||||
if (mInventory[4] == null || aOutput2 == null || (mInventory[4].stackSize + aOutput2.stackSize <= mInventory[4].getMaxStackSize() && GT_Utility.areStacksEqual(mInventory[4], aOutput2)))
|
if (mInventory[4] == null || aOutput2 == null || (mInventory[4].stackSize + aOutput2.stackSize <= mInventory[4].getMaxStackSize() && GT_Utility.areStacksEqual(mInventory[4], aOutput2)))
|
||||||
return true;
|
return true;
|
||||||
bOutputBlocked = true;
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -303,7 +251,7 @@ public abstract class GT_MetaTileEntity_BasicMachine extends MetaTileEntity {
|
||||||
|
|
||||||
/** Called whenever the Machine aborted a Process but still works on it, useful for Sound Effects */
|
/** Called whenever the Machine aborted a Process but still works on it, useful for Sound Effects */
|
||||||
public void stutterProcess() {
|
public void stutterProcess() {
|
||||||
//
|
if (useStandardStutterSound()) sendSound((byte)8);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean useStandardStutterSound() {
|
public boolean useStandardStutterSound() {
|
||||||
|
|
|
@ -49,8 +49,8 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity {
|
||||||
@Override public boolean isFacingValid(byte aFacing) {return true;}
|
@Override public boolean isFacingValid(byte aFacing) {return true;}
|
||||||
@Override public boolean isAccessAllowed(EntityPlayer aPlayer) {return true;}
|
@Override public boolean isAccessAllowed(EntityPlayer aPlayer) {return true;}
|
||||||
@Override public boolean isValidSlot(int aIndex) {return aIndex > 0;}
|
@Override public boolean isValidSlot(int aIndex) {return aIndex > 0;}
|
||||||
@Override public int getProgresstime() {return mProgresstime;}
|
public int getProgresstime() {return mProgresstime;}
|
||||||
@Override public int maxProgresstime() {return mMaxProgresstime;}
|
public int maxProgresstime() {return mMaxProgresstime;}
|
||||||
@Override public int increaseProgress(int aProgress) {return aProgress;}
|
@Override public int increaseProgress(int aProgress) {return aProgress;}
|
||||||
@Override public int getInvSize() {return 2;}
|
@Override public int getInvSize() {return 2;}
|
||||||
|
|
||||||
|
|
|
@ -8,11 +8,14 @@ import gregtechmod.api.util.GT_Log;
|
||||||
import gregtechmod.api.util.GT_ModHandler;
|
import gregtechmod.api.util.GT_ModHandler;
|
||||||
import gregtechmod.api.util.GT_OreDictUnificator;
|
import gregtechmod.api.util.GT_OreDictUnificator;
|
||||||
import gregtechmod.api.util.GT_Utility;
|
import gregtechmod.api.util.GT_Utility;
|
||||||
|
import gregtechmod.api.util.ItemStackKey;
|
||||||
|
|
||||||
import static gregtechmod.api.recipe.RecipeMaps.*;
|
import static gregtechmod.api.recipe.RecipeMaps.*;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import net.minecraft.init.Blocks;
|
import net.minecraft.init.Blocks;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraftforge.oredict.OreDictionary;
|
import net.minecraftforge.oredict.OreDictionary;
|
||||||
|
@ -95,24 +98,39 @@ public class Recipe {
|
||||||
assert inputSlots.length > 0 : "Recipe check failed, inputSlots size < 1";
|
assert inputSlots.length > 0 : "Recipe check failed, inputSlots size < 1";
|
||||||
|
|
||||||
Map<Integer, ItemStack> decreaseMap = new HashMap<>();
|
Map<Integer, ItemStack> decreaseMap = new HashMap<>();
|
||||||
for (ItemStack[] validItems : mInputs) { // Iterating slots
|
Map<Integer, ItemStack> slotStacks = new HashMap<>();
|
||||||
for (ItemStack validItem : validItems) { // Iterating valid items for slot
|
for (int i : inputSlots) {
|
||||||
for (int slot : inputSlots) { // Iterating machine's input
|
ItemStack stack = tile.getStackInSlot(i);
|
||||||
ItemStack slotStack = tile.getStackInSlot(slot);
|
if (stack != null)
|
||||||
if (slotStack != null) {
|
slotStacks.put(i, stack);
|
||||||
if (isItemStackMatch(slotStack, validItem)) {
|
}
|
||||||
decreaseMap.put(slot, validItem);
|
|
||||||
}
|
for (ItemStack[] slot : mInputs) {
|
||||||
} else continue;
|
Map<ItemStackKey, Integer> variants = Arrays.stream(slot)
|
||||||
|
.collect(Collectors.toMap(stack -> ItemStackKey.from(stack), stack -> stack.stackSize));
|
||||||
|
Iterator<Entry<Integer, ItemStack>> iter = slotStacks.entrySet().iterator();
|
||||||
|
while (iter.hasNext()) {
|
||||||
|
Entry<Integer, ItemStack> value = iter.next();
|
||||||
|
ItemStackKey temp = ItemStackKey.from(value.getValue());
|
||||||
|
if ((variants.keySet().contains(temp))) {
|
||||||
|
ItemStack recipeItem = temp.get();
|
||||||
|
recipeItem.stackSize = variants.get(temp);
|
||||||
|
ItemStack slotItem = value.getValue();
|
||||||
|
if (recipeItem.stackSize <= slotItem.stackSize) {
|
||||||
|
decreaseMap.put(value.getKey(), recipeItem);
|
||||||
|
iter.remove();
|
||||||
|
break;
|
||||||
|
} else return false;
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (decrease) for (Entry<Integer, ItemStack> e : decreaseMap.entrySet()) {
|
if (decrease && decreaseMap.size() == mInputs.length) for (Entry<Integer, ItemStack> e : decreaseMap.entrySet()) {
|
||||||
tile.decrStackSize(e.getKey(), e.getValue().stackSize);
|
tile.decrStackSize(e.getKey(), e.getValue().stackSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
return !decreaseMap.isEmpty();
|
return decreaseMap.size() == mInputs.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isItemStackMatch(ItemStack invStack, ItemStack recipeStack) {
|
private boolean isItemStackMatch(ItemStack invStack, ItemStack recipeStack) {
|
||||||
|
|
|
@ -4,7 +4,8 @@ import java.lang.ref.WeakReference;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import gregtechmod.api.metatileentity.implementations.GT_MetaTileEntity_BasicMachine;
|
import gregtechmod.api.interfaces.IGregTechTileEntity;
|
||||||
|
import gregtechmod.api.interfaces.IRecipeWorkable;
|
||||||
import gregtechmod.api.util.GT_Log;
|
import gregtechmod.api.util.GT_Log;
|
||||||
import gregtechmod.api.util.GT_Utility;
|
import gregtechmod.api.util.GT_Utility;
|
||||||
import net.minecraft.inventory.IInventory;
|
import net.minecraft.inventory.IInventory;
|
||||||
|
@ -17,58 +18,70 @@ import net.minecraft.nbt.NBTTagCompound;
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class RecipeLogic {
|
public class RecipeLogic {
|
||||||
public final WeakReference<GT_MetaTileEntity_BasicMachine> metaTileEntity;
|
public final WeakReference<IRecipeWorkable> metaTileEntity;
|
||||||
public final List<Recipe> recipeMap;
|
public final List<Recipe> recipeMap;
|
||||||
|
|
||||||
protected Supplier<Recipe> recipeHandler;
|
public int batterySlot = 5;
|
||||||
|
public boolean moveItems = true;
|
||||||
|
/** Do not consume inputs on custom recipe provider, it is only should <b><i>provide</i></b> a recipe instance */
|
||||||
|
protected Supplier<Recipe> customRecipeProvider;
|
||||||
protected int maxProgressTime;
|
protected int maxProgressTime;
|
||||||
protected int progressTime;
|
protected int progressTime;
|
||||||
protected int EUt;
|
protected int EUt;
|
||||||
|
|
||||||
private int overclockersCount;
|
private int overclockersCount;
|
||||||
private Recipe previousRecipe;
|
private Recipe previousRecipe;
|
||||||
private boolean needRecipeRecheck;
|
private boolean stuttering;
|
||||||
|
private boolean wasNoEnergy;
|
||||||
|
|
||||||
|
public RecipeLogic(List<Recipe> recipeMap, IRecipeWorkable machine) {
|
||||||
public RecipeLogic(List<Recipe> recipeMap, GT_MetaTileEntity_BasicMachine machine) {
|
|
||||||
this.recipeMap = recipeMap;
|
this.recipeMap = recipeMap;
|
||||||
maxProgressTime = 0;
|
maxProgressTime = 0;
|
||||||
progressTime = 0;
|
progressTime = 0;
|
||||||
EUt = 0;
|
EUt = 0;
|
||||||
overclockersCount = 0;
|
overclockersCount = 0;
|
||||||
|
stuttering = false;
|
||||||
|
wasNoEnergy = false;
|
||||||
metaTileEntity = new WeakReference<>(machine);
|
metaTileEntity = new WeakReference<>(machine);
|
||||||
needRecipeRecheck = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void update() {
|
public boolean update() {
|
||||||
overclockersCount = getMachine().getBaseMetaTileEntity().getOverclockerUpgradeCount();
|
boolean success = false;
|
||||||
moveItems();
|
IGregTechTileEntity base = getMachine().getBaseMetaTileEntity();
|
||||||
|
overclockersCount = base.getOverclockerUpgradeCount();
|
||||||
if (getMachine().getBaseMetaTileEntity().isAllowedToWork()) {
|
if (moveItems) moveItems();
|
||||||
if (getMachine().getBaseMetaTileEntity().hasInventoryBeenModified() || getMachine().getBaseMetaTileEntity().hasWorkJustBeenEnabled())
|
|
||||||
needRecipeRecheck = true;
|
|
||||||
|
|
||||||
|
if (base.isAllowedToWork()) {
|
||||||
if (progressTime > 0) {
|
if (progressTime > 0) {
|
||||||
updateRecipeProgress();
|
int tmp = progressTime;
|
||||||
|
success = updateRecipeProgress();
|
||||||
|
if (tmp == 0 && !success) {
|
||||||
|
throw new IllegalStateException();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (progressTime == 0 && needRecipeRecheck) {
|
if (progressTime == 0) {
|
||||||
if (isInputNonEmpty()) {
|
if (base.hasInventoryBeenModified() || base.hasWorkJustBeenEnabled() || success || base.getTimer() % 600 == 0 || wasNoEnergy) {
|
||||||
trySerachRecipe();
|
if (isInputNonEmpty() && base.isUniversalEnergyStored(getMachine().getMinimumStoredEU() - 100)) {
|
||||||
} else {
|
trySerachRecipe();
|
||||||
previousRecipe = null;
|
wasNoEnergy = false;
|
||||||
needRecipeRecheck = false;
|
} else {
|
||||||
getMachine().getBaseMetaTileEntity().setActive(false);
|
previousRecipe = null;
|
||||||
|
wasNoEnergy = true;
|
||||||
|
base.setActive(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setHandler(Supplier<Recipe> handler) {
|
public void setRecipeProvider(Supplier<Recipe> handler) {
|
||||||
recipeHandler = handler;
|
customRecipeProvider = handler;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void updateRecipeProgress() {
|
protected boolean updateRecipeProgress() {
|
||||||
if (getMachine().getBaseMetaTileEntity().decreaseStoredEnergyUnits(EUt * (int)Math.pow(4, overclockersCount), false)) {
|
if (getMachine().getBaseMetaTileEntity().decreaseStoredEnergyUnits(EUt * (int)Math.pow(4, overclockersCount), false)) {
|
||||||
if ((progressTime += (int)Math.pow(2, overclockersCount)) >= maxProgressTime) {
|
if ((progressTime += (int)Math.pow(2, overclockersCount)) >= maxProgressTime) {
|
||||||
progressTime = 0;
|
progressTime = 0;
|
||||||
|
@ -77,21 +90,22 @@ public class RecipeLogic {
|
||||||
|
|
||||||
endRecipe(previousRecipe);
|
endRecipe(previousRecipe);
|
||||||
getMachine().endProcess();
|
getMachine().endProcess();
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
getMachine().getBaseMetaTileEntity().setActive(false);
|
if (!stuttering) {
|
||||||
if (!getMachine().bStuttering) {
|
|
||||||
getMachine().stutterProcess();
|
getMachine().stutterProcess();
|
||||||
if (getMachine().useStandardStutterSound()) getMachine().sendSound((byte)8);
|
stuttering = true;
|
||||||
getMachine().bStuttering = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void trySerachRecipe() {
|
protected void trySerachRecipe() {
|
||||||
if (getMachine().allowToCheckRecipe()) {
|
if (getMachine().allowToCheckRecipe()) {
|
||||||
if (previousRecipe != null) {
|
if (previousRecipe != null) {
|
||||||
if (previousRecipe.match(false, getMachine().getBaseMetaTileEntity(), getMachineInputs())) { // TODO add I/O item handlers to MTE
|
if (previousRecipe.match(false, getMachine().getBaseMetaTileEntity(), getMachine().getInputSlots())) { // TODO add I/O item handlers to MTE
|
||||||
startRecipe(previousRecipe);
|
startRecipe(previousRecipe);
|
||||||
} else {
|
} else {
|
||||||
previousRecipe = null;
|
previousRecipe = null;
|
||||||
|
@ -99,15 +113,13 @@ public class RecipeLogic {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// find new recipe
|
// find new recipe
|
||||||
Recipe resRec = recipeHandler != null ? recipeHandler.get() :
|
Recipe resRec = customRecipeProvider != null ? customRecipeProvider.get() :
|
||||||
recipeMap.stream()
|
recipeMap.stream()
|
||||||
.filter(rec -> rec.match(false, getMachine().getBaseMetaTileEntity(), getMachineInputs()))
|
.filter(rec -> rec.match(false, getMachine().getBaseMetaTileEntity(), getMachine().getInputSlots()))
|
||||||
.findFirst().orElse(null);
|
.findFirst().orElse(null);
|
||||||
if (resRec != null)
|
if (resRec != null)
|
||||||
startRecipe(resRec);
|
startRecipe(resRec);
|
||||||
}
|
}
|
||||||
|
|
||||||
needRecipeRecheck = false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -126,12 +138,12 @@ public class RecipeLogic {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void startRecipe(Recipe recipe) {
|
protected void startRecipe(Recipe recipe) {
|
||||||
if (getMachine().spaceForOutput(recipe.getOutputs()[0], recipe.getOutputs().length > 1 ? recipe.getOutputs()[1] : null)) {
|
if (getMachine().spaceForOutput(recipe)) {
|
||||||
previousRecipe = recipe;
|
previousRecipe = recipe;
|
||||||
maxProgressTime = recipe.mDuration;
|
maxProgressTime = GT_Utility.isDebugItem(getMachine().getStackInSlot(batterySlot)) ? 1 : recipe.mDuration;
|
||||||
progressTime = 1;
|
progressTime = 1;
|
||||||
EUt = recipe.mEUt;
|
EUt = recipe.mEUt;
|
||||||
recipe.match(true, getMachine().getBaseMetaTileEntity(), getMachineInputs());
|
recipe.match(true, getMachine().getBaseMetaTileEntity(), getMachine().getInputSlots());
|
||||||
getMachine().getBaseMetaTileEntity().setActive(true);
|
getMachine().getBaseMetaTileEntity().setActive(true);
|
||||||
getMachine().startProcess();
|
getMachine().startProcess();
|
||||||
}
|
}
|
||||||
|
@ -139,9 +151,9 @@ public class RecipeLogic {
|
||||||
|
|
||||||
protected void endRecipe(Recipe recipe) {
|
protected void endRecipe(Recipe recipe) {
|
||||||
ItemStack[] outputs = recipe.getOutputs();
|
ItemStack[] outputs = recipe.getOutputs();
|
||||||
if (outputs.length <= getMachineOutputs().length) {
|
if (outputs.length <= getMachine().getOutputSlots().length) {
|
||||||
for (ItemStack out : outputs) {
|
for (ItemStack out : outputs) {
|
||||||
for (int i : getMachineOutputs()) {
|
for (int i : getMachine().getOutputSlots()) {
|
||||||
if (getMachine().getBaseMetaTileEntity().addStackToSlot(i, out.copy())) {
|
if (getMachine().getBaseMetaTileEntity().addStackToSlot(i, out.copy())) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -151,35 +163,27 @@ public class RecipeLogic {
|
||||||
GT_Log.log.catching(new IllegalStateException("Found recipe with more items output machine has slots!"));
|
GT_Log.log.catching(new IllegalStateException("Found recipe with more items output machine has slots!"));
|
||||||
}
|
}
|
||||||
|
|
||||||
getMachine().bStuttering = false;
|
stuttering = false;
|
||||||
getMachine().endProcess();
|
getMachine().endProcess();
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isInputNonEmpty() {
|
private boolean isInputNonEmpty() {
|
||||||
for (int i : getMachineInputs()) {
|
for (int i : getMachine().getInputSlots()) {
|
||||||
ItemStack s = getMachine().getStackInSlot(i);
|
ItemStack s = getMachine().getStackInSlot(i);
|
||||||
if (s != null && s.stackSize > 0) return true;
|
if (s != null && s.stackSize > 0) return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
private IRecipeWorkable getMachine() {
|
||||||
* Specify machine input slots
|
|
||||||
*/
|
|
||||||
protected int[] getMachineInputs() {
|
|
||||||
return new int[] {1, 2};
|
|
||||||
}
|
|
||||||
|
|
||||||
protected int[] getMachineOutputs() {
|
|
||||||
return new int[] {3, 4};
|
|
||||||
}
|
|
||||||
|
|
||||||
private GT_MetaTileEntity_BasicMachine getMachine() {
|
|
||||||
return metaTileEntity.get();
|
return metaTileEntity.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void increaseProgressTime(int amount) {
|
||||||
|
progressTime += amount;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isActive() {
|
public boolean isActive() {
|
||||||
return maxProgressTime > 0;
|
return maxProgressTime > 0;
|
||||||
}
|
}
|
||||||
|
@ -201,12 +205,12 @@ public class RecipeLogic {
|
||||||
data1.setInteger("TotalTime", maxProgressTime);
|
data1.setInteger("TotalTime", maxProgressTime);
|
||||||
data1.setInteger("CurrentTime", progressTime);
|
data1.setInteger("CurrentTime", progressTime);
|
||||||
data1.setInteger("EUt", EUt);
|
data1.setInteger("EUt", EUt);
|
||||||
data.setTag("RecipeLogic", data1);
|
data.setTag("RecipeLogic", data1); // TODO save recipe items to NBT!
|
||||||
}
|
}
|
||||||
|
|
||||||
public void loadFromNBT(NBTTagCompound data) {
|
public void loadFromNBT(NBTTagCompound data) {
|
||||||
NBTTagCompound data1 = data.getCompoundTag("RecipeLogic");
|
NBTTagCompound data1 = data.getCompoundTag("RecipeLogic");
|
||||||
if (data1 != null) {
|
if (data1 != null && (maxProgressTime == 0 && progressTime == 0 && EUt == 0)) {
|
||||||
maxProgressTime = data1.getInteger("TotalTime");
|
maxProgressTime = data1.getInteger("TotalTime");
|
||||||
progressTime = data1.getInteger("CurrentTime");
|
progressTime = data1.getInteger("CurrentTime");
|
||||||
EUt = data1.getInteger("EUt");
|
EUt = data1.getInteger("EUt");
|
||||||
|
|
|
@ -32,6 +32,4 @@ public class RecipeMaps {
|
||||||
public static final List<Recipe> sDenseLiquidFuels = new ArrayList<Recipe>();
|
public static final List<Recipe> sDenseLiquidFuels = new ArrayList<Recipe>();
|
||||||
public static final List<Recipe> sPlasmaFuels = new ArrayList<Recipe>();
|
public static final List<Recipe> sPlasmaFuels = new ArrayList<Recipe>();
|
||||||
public static final List<Recipe> sMagicFuels = new ArrayList<Recipe>();
|
public static final List<Recipe> sMagicFuels = new ArrayList<Recipe>();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,15 +4,8 @@ import gregtechmod.api.gui.GT_ContainerMetaTile_Machine;
|
||||||
import gregtechmod.api.gui.GT_Slot_Holo;
|
import gregtechmod.api.gui.GT_Slot_Holo;
|
||||||
import gregtechmod.api.gui.GT_Slot_Output;
|
import gregtechmod.api.gui.GT_Slot_Output;
|
||||||
import gregtechmod.api.interfaces.IGregTechTileEntity;
|
import gregtechmod.api.interfaces.IGregTechTileEntity;
|
||||||
import gregtechmod.common.tileentities.machines.GT_MetaTileEntity_Centrifuge;
|
|
||||||
|
|
||||||
import java.util.Iterator;
|
|
||||||
|
|
||||||
import net.minecraft.entity.player.InventoryPlayer;
|
import net.minecraft.entity.player.InventoryPlayer;
|
||||||
import net.minecraft.inventory.ICrafting;
|
|
||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
|
||||||
|
|
||||||
public class GT_Container_Centrifuge extends GT_ContainerMetaTile_Machine {
|
public class GT_Container_Centrifuge extends GT_ContainerMetaTile_Machine {
|
||||||
|
|
||||||
|
@ -30,35 +23,6 @@ public class GT_Container_Centrifuge extends GT_ContainerMetaTile_Machine {
|
||||||
addSlotToContainer(new GT_Slot_Holo (mTileEntity, 6, 110, 65, false, false, 64));
|
addSlotToContainer(new GT_Slot_Holo (mTileEntity, 6, 110, 65, false, false, 64));
|
||||||
}
|
}
|
||||||
|
|
||||||
public int mProgress, mMaxProgress, mProgressScale;
|
|
||||||
|
|
||||||
@SuppressWarnings("rawtypes")
|
|
||||||
public void detectAndSendChanges() {
|
|
||||||
super.detectAndSendChanges();
|
|
||||||
if (mTileEntity.isClientSide() || mTileEntity.getMetaTileEntity() == null) return;
|
|
||||||
mProgress = ((GT_MetaTileEntity_Centrifuge)mTileEntity.getMetaTileEntity()).getProgresstime();
|
|
||||||
mMaxProgress = ((GT_MetaTileEntity_Centrifuge)mTileEntity.getMetaTileEntity()).maxProgresstime();
|
|
||||||
mProgressScale = Math.max(0, Math.min(10, (mProgress>0?1:0) + (mProgress * 10) / (mMaxProgress<1?1:mMaxProgress)));
|
|
||||||
|
|
||||||
Iterator var2 = this.crafters.iterator();
|
|
||||||
while (var2.hasNext()) {
|
|
||||||
ICrafting var1 = (ICrafting)var2.next();
|
|
||||||
var1.sendProgressBarUpdate(this, 100, mProgress);
|
|
||||||
var1.sendProgressBarUpdate(this, 101, mMaxProgress);
|
|
||||||
var1.sendProgressBarUpdate(this, 102, mProgressScale);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
|
||||||
public void updateProgressBar(int par1, int par2) {
|
|
||||||
super.updateProgressBar(par1, par2);
|
|
||||||
switch (par1) {
|
|
||||||
case 100: mProgress = par2; break;
|
|
||||||
case 101: mMaxProgress = par2; break;
|
|
||||||
case 102: mProgressScale = par2; break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getSlotCount() {
|
public int getSlotCount() {
|
||||||
return 6;
|
return 6;
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,11 +18,10 @@ public class GT_GUIContainer_Centrifuge extends GT_GUIContainerMetaTile_Machine
|
||||||
@Override
|
@Override
|
||||||
protected void drawGuiContainerForegroundLayer(int par1, int par2) {
|
protected void drawGuiContainerForegroundLayer(int par1, int par2) {
|
||||||
FontRenderer fontRenderer = Minecraft.getMinecraft().fontRenderer;
|
FontRenderer fontRenderer = Minecraft.getMinecraft().fontRenderer;
|
||||||
fontRenderer.drawString(StatCollector.translateToLocal("container.inventory"), 8, ySize - 94, 4210752);
|
|
||||||
fontRenderer.drawString("Industrial", 110, 4, 4210752);
|
fontRenderer.drawString("Industrial", 110, 4, 4210752);
|
||||||
fontRenderer.drawString("Centrifuge", 110, 12, 4210752);
|
fontRenderer.drawString("Centrifuge", 110, 12, 4210752);
|
||||||
if ((((GT_Container_Centrifuge)mContainer).mDisplayErrorCode & 1) != 0)
|
if ((((GT_Container_Centrifuge)mContainer).mDisplayErrorCode & 1) != 0)
|
||||||
fontRenderer.drawString("Insufficient Energy Line!", 8, ySize - 94, 4210752);
|
fontRenderer.drawSplitString(StatCollector.translateToLocal("metatileentity.NOT_ENOUGH_ENERGY"), 8, ySize - 102, 90, 4210752);
|
||||||
else
|
else
|
||||||
fontRenderer.drawString(StatCollector.translateToLocal("container.inventory"), 8, ySize - 94, 4210752);
|
fontRenderer.drawString(StatCollector.translateToLocal("container.inventory"), 8, ySize - 94, 4210752);
|
||||||
}
|
}
|
||||||
|
@ -35,7 +34,8 @@ public class GT_GUIContainer_Centrifuge extends GT_GUIContainerMetaTile_Machine
|
||||||
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_Centrifuge)mContainer).mProgressScale;
|
int tScale = Math.max(0, Math.min(10,
|
||||||
|
(mContainer.mProgressTime>0?1:0) + (mContainer.mProgressTime * 10) / (mContainer.mMaxProgressTime<1?1:mContainer.mMaxProgressTime)));
|
||||||
drawTexturedModalRect(x + 83, y + 33 - tScale, 193, 33 - tScale, 10, tScale);
|
drawTexturedModalRect(x + 83, y + 33 - tScale, 193, 33 - tScale, 10, tScale);
|
||||||
drawTexturedModalRect(x + 78 - tScale, y + 38, 188 - tScale, 38 , tScale, 10);
|
drawTexturedModalRect(x + 78 - tScale, y + 38, 188 - tScale, 38 , tScale, 10);
|
||||||
drawTexturedModalRect(x + 83, y + 53, 193, 53, 10, tScale);
|
drawTexturedModalRect(x + 83, y + 53, 193, 53, 10, tScale);
|
||||||
|
|
|
@ -4,6 +4,7 @@ import gregtechmod.api.enums.OrePrefixes;
|
||||||
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.recipe.Recipe;
|
||||||
|
import gregtechmod.api.recipe.RecipeMaps;
|
||||||
import gregtechmod.api.util.GT_ModHandler;
|
import gregtechmod.api.util.GT_ModHandler;
|
||||||
import gregtechmod.api.util.GT_OreDictUnificator;
|
import gregtechmod.api.util.GT_OreDictUnificator;
|
||||||
import gregtechmod.api.util.GT_Utility;
|
import gregtechmod.api.util.GT_Utility;
|
||||||
|
@ -100,7 +101,7 @@ public class GT_MetaTileEntity_ElectricTypeSorter extends GT_MetaTileEntity_Elec
|
||||||
|
|
||||||
OrePrefixes tPrefix = OrePrefixes.getPrefix(sTypeList[mMode]);
|
OrePrefixes tPrefix = OrePrefixes.getPrefix(sTypeList[mMode]);
|
||||||
|
|
||||||
if (((mMode == 11 && mInventory[0].getItem() instanceof ItemFood) || (mMode == 12 && Recipe.findEqualRecipe(false, false, Recipe.sGrinderRecipes, mInventory[0], GT_ModHandler.getWaterCell(1)) != null) || (tPrefix != null && tPrefix.contains(mInventory[0])) || GT_OreDictUnificator.isItemStackInstanceOf(mInventory[0], sTypeList[mMode]))) {
|
if (((mMode == 11 && mInventory[0].getItem() instanceof ItemFood) || (mMode == 12 && Recipe.findEqualRecipe(false, false, RecipeMaps.sGrinderRecipes, mInventory[0], GT_ModHandler.getWaterCell(1)) != null) || (tPrefix != null && tPrefix.contains(mInventory[0])) || GT_OreDictUnificator.isItemStackInstanceOf(mInventory[0], sTypeList[mMode]))) {
|
||||||
getBaseMetaTileEntity().decreaseStoredEnergyUnits(tPrice = GT_Utility.moveOneItemStack(getBaseMetaTileEntity(), getBaseMetaTileEntity().getIInventoryAtSide(mTargetDirection), getBaseMetaTileEntity().getBackFacing(), GT_Utility.getOppositeSide(mTargetDirection), null, false, mTargetStackSize!=0?(byte)mTargetStackSize:64, mTargetStackSize!=0?(byte)mTargetStackSize:1, (byte)64, (byte)1)*3, true);
|
getBaseMetaTileEntity().decreaseStoredEnergyUnits(tPrice = GT_Utility.moveOneItemStack(getBaseMetaTileEntity(), getBaseMetaTileEntity().getIInventoryAtSide(mTargetDirection), getBaseMetaTileEntity().getBackFacing(), GT_Utility.getOppositeSide(mTargetDirection), null, false, mTargetStackSize!=0?(byte)mTargetStackSize:64, mTargetStackSize!=0?(byte)mTargetStackSize:1, (byte)64, (byte)1)*3, true);
|
||||||
}
|
}
|
||||||
if (tPrice <= 0) {
|
if (tPrice <= 0) {
|
||||||
|
|
|
@ -64,8 +64,8 @@ public class GT_MetaTileEntity_TesseractGenerator extends MetaTileEntity {
|
||||||
@Override public boolean isAccessAllowed(EntityPlayer aPlayer) {return true;}
|
@Override public boolean isAccessAllowed(EntityPlayer aPlayer) {return true;}
|
||||||
@Override public boolean ownerControl() {return true;}
|
@Override public boolean ownerControl() {return true;}
|
||||||
@Override public boolean unbreakable() {return true;}
|
@Override public boolean unbreakable() {return true;}
|
||||||
@Override public int getProgresstime() {return sTesseractGenerators.get(mFrequency) == this && isWorking >= 20 ? 999 : 0;}
|
public int getProgresstime() {return sTesseractGenerators.get(mFrequency) == this && isWorking >= 20 ? 999 : 0;}
|
||||||
@Override public int maxProgresstime() {return 1000;}
|
public int maxProgresstime() {return 1000;}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
||||||
|
|
|
@ -45,8 +45,8 @@ public class GT_MetaTileEntity_TesseractTerminal extends MetaTileEntity {
|
||||||
@Override public int getInvSize() {return 0;}
|
@Override public int getInvSize() {return 0;}
|
||||||
@Override public boolean isAccessAllowed(EntityPlayer aPlayer) {return true;}
|
@Override public boolean isAccessAllowed(EntityPlayer aPlayer) {return true;}
|
||||||
@Override public boolean ownerControl() {return true;}
|
@Override public boolean ownerControl() {return true;}
|
||||||
@Override public int getProgresstime() {return getTesseract(mFrequency, false) != null ? 999 : 0;}
|
public int getProgresstime() {return getTesseract(mFrequency, false) != null ? 999 : 0;}
|
||||||
@Override public int maxProgresstime() {return 1000;}
|
public int maxProgresstime() {return 1000;}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
||||||
|
|
|
@ -14,21 +14,21 @@ import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
public class GT_MetaTileEntity_DieselGenerator extends GT_MetaTileEntity_BasicGenerator {
|
public class GT_MetaTileEntity_DieselGenerator extends GT_MetaTileEntity_BasicGenerator {
|
||||||
|
|
||||||
public GT_MetaTileEntity_DieselGenerator(int aID, String aName) {
|
public GT_MetaTileEntity_DieselGenerator(int aID, String aName, List<Recipe> recipeMap, int efficiency) {
|
||||||
super(aID, aName);
|
super(aID, aName, recipeMap, efficiency);
|
||||||
}
|
}
|
||||||
|
|
||||||
public GT_MetaTileEntity_DieselGenerator() {}
|
public GT_MetaTileEntity_DieselGenerator(List<Recipe> recipeMap, int efficiency) {
|
||||||
|
super(recipeMap, efficiency);
|
||||||
|
}
|
||||||
|
|
||||||
@Override public boolean isFacingValid(byte aFacing) {return aFacing > 1;}
|
@Override public boolean isFacingValid(byte aFacing) {return aFacing > 1;}
|
||||||
@Override public int maxEUOutput() {return this.getBaseMetaTileEntity().isAllowedToWork() ? 12 : 0;}
|
@Override public int maxEUOutput() {return this.getBaseMetaTileEntity().isAllowedToWork() ? 12 : 0;}
|
||||||
@Override public void onRightclick(EntityPlayer aPlayer) {this.getBaseMetaTileEntity().openGUI(aPlayer, 117);}
|
@Override public void onRightclick(EntityPlayer aPlayer) {this.getBaseMetaTileEntity().openGUI(aPlayer, 117);}
|
||||||
@Override public List<Recipe> getRecipes() {return Recipe.sDieselFuels;}
|
|
||||||
@Override public int getEfficiency() {return 100;}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
||||||
return new GT_MetaTileEntity_DieselGenerator();
|
return new GT_MetaTileEntity_DieselGenerator(recipeMap, efficiency);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -10,21 +10,21 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
|
||||||
public class GT_MetaTileEntity_GasTurbine extends GT_MetaTileEntity_BasicGenerator {
|
public class GT_MetaTileEntity_GasTurbine extends GT_MetaTileEntity_BasicGenerator {
|
||||||
|
|
||||||
public GT_MetaTileEntity_GasTurbine(int aID, String aName) {
|
public GT_MetaTileEntity_GasTurbine(int aID, String aName, List<Recipe> recipeMap, int efficiency) {
|
||||||
super(aID, aName);
|
super(aID, aName, recipeMap, efficiency);
|
||||||
}
|
}
|
||||||
|
|
||||||
public GT_MetaTileEntity_GasTurbine() {}
|
public GT_MetaTileEntity_GasTurbine(List<Recipe> recipeMap, int efficiency) {
|
||||||
|
super(recipeMap, efficiency);
|
||||||
|
}
|
||||||
|
|
||||||
@Override public boolean isFacingValid(byte aFacing) {return true;}
|
@Override public boolean isFacingValid(byte aFacing) {return true;}
|
||||||
@Override public int maxEUOutput() {return this.getBaseMetaTileEntity().isAllowedToWork() ? 16 : 0;}
|
@Override public int maxEUOutput() {return this.getBaseMetaTileEntity().isAllowedToWork() ? 16 : 0;}
|
||||||
@Override public void onRightclick(EntityPlayer aPlayer) {this.getBaseMetaTileEntity().openGUI(aPlayer, 118);}
|
@Override public void onRightclick(EntityPlayer aPlayer) {this.getBaseMetaTileEntity().openGUI(aPlayer, 118);}
|
||||||
@Override public List<Recipe> getRecipes() {return Recipe.sTurbineFuels;}
|
|
||||||
@Override public int getEfficiency() {return 75;}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
||||||
return new GT_MetaTileEntity_GasTurbine();
|
return new GT_MetaTileEntity_GasTurbine(recipeMap, efficiency);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -13,21 +13,21 @@ import net.minecraft.world.biome.BiomeGenBase;
|
||||||
|
|
||||||
public class GT_MetaTileEntity_MagicEnergyConverter extends GT_MetaTileEntity_BasicGenerator {
|
public class GT_MetaTileEntity_MagicEnergyConverter extends GT_MetaTileEntity_BasicGenerator {
|
||||||
|
|
||||||
public GT_MetaTileEntity_MagicEnergyConverter(int aID, String aName) {
|
public GT_MetaTileEntity_MagicEnergyConverter(int aID, String aName, List<Recipe> recipeMap, int efficiency) {
|
||||||
super(aID, aName);
|
super(aID, aName, recipeMap, efficiency);
|
||||||
}
|
}
|
||||||
|
|
||||||
public GT_MetaTileEntity_MagicEnergyConverter() {}
|
public GT_MetaTileEntity_MagicEnergyConverter(List<Recipe> recipeMap, int efficiency) {
|
||||||
|
super(recipeMap, efficiency);
|
||||||
|
}
|
||||||
|
|
||||||
@Override public boolean isFacingValid(byte aFacing) {return true;}
|
@Override public boolean isFacingValid(byte aFacing) {return true;}
|
||||||
@Override public int maxEUOutput() {return this.getBaseMetaTileEntity().isAllowedToWork() ? 24 : 0;}
|
@Override public int maxEUOutput() {return this.getBaseMetaTileEntity().isAllowedToWork() ? 24 : 0;}
|
||||||
@Override public void onRightclick(EntityPlayer aPlayer) {this.getBaseMetaTileEntity().openGUI(aPlayer, 125);}
|
@Override public void onRightclick(EntityPlayer aPlayer) {this.getBaseMetaTileEntity().openGUI(aPlayer, 125);}
|
||||||
@Override public List<Recipe> getRecipes() {return Recipe.sMagicFuels;}
|
|
||||||
@Override public int getEfficiency() {return 100;}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
||||||
return new GT_MetaTileEntity_MagicEnergyConverter();
|
return new GT_MetaTileEntity_MagicEnergyConverter(recipeMap, efficiency);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -10,23 +10,23 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
|
||||||
public class GT_MetaTileEntity_PlasmaGenerator extends GT_MetaTileEntity_BasicGenerator {
|
public class GT_MetaTileEntity_PlasmaGenerator extends GT_MetaTileEntity_BasicGenerator {
|
||||||
|
|
||||||
public GT_MetaTileEntity_PlasmaGenerator(int aID, String aName) {
|
public GT_MetaTileEntity_PlasmaGenerator(int aID, String aName, List<Recipe> recipeMap, int efficiency) {
|
||||||
super(aID, aName);
|
super(aID, aName, recipeMap, efficiency);
|
||||||
}
|
}
|
||||||
|
|
||||||
public GT_MetaTileEntity_PlasmaGenerator() {}
|
public GT_MetaTileEntity_PlasmaGenerator(List<Recipe> recipeMap, int efficiency) {
|
||||||
|
super(recipeMap, efficiency);
|
||||||
|
}
|
||||||
|
|
||||||
@Override public boolean isFacingValid(byte aFacing) {return true;}
|
@Override public boolean isFacingValid(byte aFacing) {return true;}
|
||||||
@Override public int maxEUOutput() {return this.getBaseMetaTileEntity().isAllowedToWork() ? 2048 : 0;}
|
@Override public int maxEUOutput() {return this.getBaseMetaTileEntity().isAllowedToWork() ? 2048 : 0;}
|
||||||
@Override public void onRightclick(EntityPlayer aPlayer) {this.getBaseMetaTileEntity().openGUI(aPlayer, 121);}
|
@Override public void onRightclick(EntityPlayer aPlayer) {this.getBaseMetaTileEntity().openGUI(aPlayer, 121);}
|
||||||
@Override public List<Recipe> getRecipes() {return Recipe.sPlasmaFuels;}
|
|
||||||
@Override public int getEfficiency() {return 100;}
|
|
||||||
@Override public boolean isOutputFacing(byte aSide) {return aSide == this.getBaseMetaTileEntity().getFrontFacing();}
|
@Override public boolean isOutputFacing(byte aSide) {return aSide == this.getBaseMetaTileEntity().getFrontFacing();}
|
||||||
@Override public int maxEUStore() {return 1000000000;}
|
@Override public int maxEUStore() {return 1000000000;}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
||||||
return new GT_MetaTileEntity_PlasmaGenerator();
|
return new GT_MetaTileEntity_PlasmaGenerator(recipeMap, efficiency);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -10,21 +10,21 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
|
||||||
public class GT_MetaTileEntity_SemifluidGenerator extends GT_MetaTileEntity_BasicGenerator {
|
public class GT_MetaTileEntity_SemifluidGenerator extends GT_MetaTileEntity_BasicGenerator {
|
||||||
|
|
||||||
public GT_MetaTileEntity_SemifluidGenerator(int aID, String aName) {
|
public GT_MetaTileEntity_SemifluidGenerator(int aID, String aName, List<Recipe> recipeMap, int efficiency) {
|
||||||
super(aID, aName);
|
super(aID, aName, recipeMap, efficiency);
|
||||||
}
|
}
|
||||||
|
|
||||||
public GT_MetaTileEntity_SemifluidGenerator() {}
|
public GT_MetaTileEntity_SemifluidGenerator(List<Recipe> recipeMap, int efficiency) {
|
||||||
|
super(recipeMap, efficiency);
|
||||||
|
}
|
||||||
|
|
||||||
@Override public boolean isFacingValid(byte aFacing) {return false;}
|
@Override public boolean isFacingValid(byte aFacing) {return false;}
|
||||||
@Override public int maxEUOutput() {return this.getBaseMetaTileEntity().isAllowedToWork() ? 8 : 0;}
|
@Override public int maxEUOutput() {return this.getBaseMetaTileEntity().isAllowedToWork() ? 8 : 0;}
|
||||||
@Override public void onRightclick(EntityPlayer aPlayer) {this.getBaseMetaTileEntity().openGUI(aPlayer, 120);}
|
@Override public void onRightclick(EntityPlayer aPlayer) {this.getBaseMetaTileEntity().openGUI(aPlayer, 120);}
|
||||||
@Override public List<Recipe> getRecipes() {return Recipe.sDenseLiquidFuels;}
|
|
||||||
@Override public int getEfficiency() {return 100;}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
||||||
return new GT_MetaTileEntity_SemifluidGenerator();
|
return new GT_MetaTileEntity_SemifluidGenerator(recipeMap, efficiency);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -10,21 +10,21 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
|
||||||
public class GT_MetaTileEntity_ThermalGenerator extends GT_MetaTileEntity_BasicGenerator {
|
public class GT_MetaTileEntity_ThermalGenerator extends GT_MetaTileEntity_BasicGenerator {
|
||||||
|
|
||||||
public GT_MetaTileEntity_ThermalGenerator(int aID, String aName) {
|
public GT_MetaTileEntity_ThermalGenerator(int aID, String aName, List<Recipe> recipeMap, int efficiency) {
|
||||||
super(aID, aName);
|
super(aID, aName, recipeMap, efficiency);
|
||||||
}
|
}
|
||||||
|
|
||||||
public GT_MetaTileEntity_ThermalGenerator() {}
|
public GT_MetaTileEntity_ThermalGenerator(List<Recipe> recipeMap, int efficiency) {
|
||||||
|
super(recipeMap, efficiency);
|
||||||
|
}
|
||||||
|
|
||||||
@Override public boolean isFacingValid(byte aFacing) { return false;}
|
@Override public boolean isFacingValid(byte aFacing) { return false;}
|
||||||
@Override public int maxEUOutput() {return this.getBaseMetaTileEntity().isAllowedToWork() ? 24 : 0;}
|
@Override public int maxEUOutput() {return this.getBaseMetaTileEntity().isAllowedToWork() ? 24 : 0;}
|
||||||
@Override public void onRightclick(EntityPlayer aPlayer) {this.getBaseMetaTileEntity().openGUI(aPlayer, 119);}
|
@Override public void onRightclick(EntityPlayer aPlayer) {this.getBaseMetaTileEntity().openGUI(aPlayer, 119);}
|
||||||
@Override public List<Recipe> getRecipes() {return Recipe.sHotFuels;}
|
|
||||||
@Override public int getEfficiency() {return 80;}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
||||||
return new GT_MetaTileEntity_ThermalGenerator();
|
return new GT_MetaTileEntity_ThermalGenerator(recipeMap, efficiency);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -5,30 +5,41 @@ 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.interfaces.IRecipeWorkable;
|
||||||
import gregtechmod.api.metatileentity.MetaTileEntity;
|
import gregtechmod.api.metatileentity.MetaTileEntity;
|
||||||
import gregtechmod.api.metatileentity.implementations.GT_MetaTileEntity_BasicTank;
|
import gregtechmod.api.metatileentity.implementations.GT_MetaTileEntity_BasicTank;
|
||||||
import gregtechmod.api.recipe.Recipe;
|
import gregtechmod.api.recipe.Recipe;
|
||||||
|
import gregtechmod.api.recipe.RecipeLogic;
|
||||||
|
import gregtechmod.api.recipe.RecipeMaps;
|
||||||
|
import gregtechmod.api.util.GT_Log;
|
||||||
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.api.util.InfoBuilder;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.init.Items;
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraftforge.fluids.FluidStack;
|
|
||||||
|
|
||||||
public class GT_MetaTileEntity_Centrifuge extends GT_MetaTileEntity_BasicTank {
|
public class GT_MetaTileEntity_Centrifuge extends GT_MetaTileEntity_BasicTank implements IRecipeWorkable {
|
||||||
|
|
||||||
private byte mSpeed = 0;
|
private RecipeLogic recipeLogic;
|
||||||
private int mProgresstime = 0, mMaxProgresstime = 0, mEUt = 0;
|
private int mSpeed = 0;
|
||||||
private ItemStack mOutputItem1, mOutputItem2, mOutputItem3, mOutputItem4;
|
|
||||||
|
|
||||||
public GT_MetaTileEntity_Centrifuge(int aID, String mName) {
|
public GT_MetaTileEntity_Centrifuge(int aID, String mName) {
|
||||||
super(aID, mName);
|
super(aID, mName);
|
||||||
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
public GT_MetaTileEntity_Centrifuge() {
|
public GT_MetaTileEntity_Centrifuge() {
|
||||||
|
init();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void init() {
|
||||||
|
recipeLogic = new RecipeLogic(RecipeMaps.sCentrifugeRecipes, this);
|
||||||
|
recipeLogic.moveItems = false;
|
||||||
|
// recipeLogic.setRecipeProvider(() -> {
|
||||||
|
//
|
||||||
|
// return null;
|
||||||
|
// });
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean isTransformerUpgradable() {return true;}
|
@Override public boolean isTransformerUpgradable() {return true;}
|
||||||
|
@ -46,9 +57,8 @@ public class GT_MetaTileEntity_Centrifuge extends GT_MetaTileEntity_BasicTank {
|
||||||
@Override public int getInvSize() {return 7;}
|
@Override public int getInvSize() {return 7;}
|
||||||
@Override public void onRightclick(EntityPlayer aPlayer) {getBaseMetaTileEntity().openGUI(aPlayer, 146);}
|
@Override public void onRightclick(EntityPlayer aPlayer) {getBaseMetaTileEntity().openGUI(aPlayer, 146);}
|
||||||
@Override public boolean isAccessAllowed(EntityPlayer aPlayer) {return true;}
|
@Override public boolean isAccessAllowed(EntityPlayer aPlayer) {return true;}
|
||||||
@Override public int getProgresstime() {return mProgresstime;}
|
@Override public RecipeLogic getRecipeLogic() {return recipeLogic;}
|
||||||
@Override public int maxProgresstime() {return mMaxProgresstime;}
|
@Override public int increaseProgress(int aProgress) {recipeLogic.increaseProgressTime(aProgress); return recipeLogic.getMaxProgressTime()-recipeLogic.getProgressTime();}
|
||||||
@Override public int increaseProgress(int aProgress) {mProgresstime += aProgress; return mMaxProgresstime-mProgresstime;}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
||||||
|
@ -58,55 +68,13 @@ public class GT_MetaTileEntity_Centrifuge extends GT_MetaTileEntity_BasicTank {
|
||||||
@Override
|
@Override
|
||||||
public void saveNBTData(NBTTagCompound aNBT) {
|
public void saveNBTData(NBTTagCompound aNBT) {
|
||||||
super.saveNBTData(aNBT);
|
super.saveNBTData(aNBT);
|
||||||
aNBT.setInteger("mEUt", mEUt);
|
recipeLogic.loadFromNBT(aNBT);
|
||||||
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
|
@Override
|
||||||
public void loadNBTData(NBTTagCompound aNBT) {
|
public void loadNBTData(NBTTagCompound aNBT) {
|
||||||
super.loadNBTData(aNBT);
|
super.loadNBTData(aNBT);
|
||||||
mEUt = aNBT.getInteger("mEUt");
|
recipeLogic.loadFromNBT(aNBT);
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean doesFillContainers() {return false;}
|
@Override public boolean doesFillContainers() {return false;}
|
||||||
|
@ -123,130 +91,61 @@ public class GT_MetaTileEntity_Centrifuge extends GT_MetaTileEntity_BasicTank {
|
||||||
@Override
|
@Override
|
||||||
public void onPostTick() {
|
public void onPostTick() {
|
||||||
if (getBaseMetaTileEntity().isServerSide()) {
|
if (getBaseMetaTileEntity().isServerSide()) {
|
||||||
if (getBaseMetaTileEntity().getOverclockerUpgradeCount() >=2) {
|
mSpeed = getBaseMetaTileEntity().getOverclockerUpgradeCount();
|
||||||
mSpeed = 2;
|
recipeLogic.update();
|
||||||
} else if (getBaseMetaTileEntity().getOverclockerUpgradeCount() == 1) {
|
|
||||||
mSpeed = 1;
|
|
||||||
} else {
|
|
||||||
mSpeed = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mMaxProgresstime > 0) {
|
|
||||||
getBaseMetaTileEntity().setActive(true);
|
|
||||||
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 {
|
|
||||||
getBaseMetaTileEntity().setActive(false);
|
|
||||||
if (GregTech_API.sConstantEnergy) {
|
|
||||||
mProgresstime = -10;
|
|
||||||
getBaseMetaTileEntity().setErrorDisplayID(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
getBaseMetaTileEntity().setActive(false);
|
|
||||||
if (getBaseMetaTileEntity().isAllowedToWork() && getBaseMetaTileEntity().getUniversalEnergyStored() > 100) checkRecipe();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addOutputProducts() {
|
public boolean spaceForOutput(Recipe aRecipe) {
|
||||||
if (mOutputItem1 != null)
|
if (mInventory[2] == null || aRecipe.getOutputs()[0] == null || (mInventory[2].stackSize + aRecipe.getOutputs()[0].stackSize <= mInventory[2].getMaxStackSize() && GT_Utility.areStacksEqual(mInventory[2], aRecipe.getOutputs()[0])))
|
||||||
if (mInventory[2] == null)
|
if (mInventory[3] == null || aRecipe.getOutputs()[1] == null || (mInventory[3].stackSize + aRecipe.getOutputs()[1].stackSize <= mInventory[3].getMaxStackSize() && GT_Utility.areStacksEqual(mInventory[3], aRecipe.getOutputs()[1])))
|
||||||
mInventory[2] = GT_Utility.copy(mOutputItem1);
|
if (mInventory[4] == null || aRecipe.getOutputs()[2] == null || (mInventory[4].stackSize + aRecipe.getOutputs()[2].stackSize <= mInventory[4].getMaxStackSize() && GT_Utility.areStacksEqual(mInventory[4], aRecipe.getOutputs()[2])))
|
||||||
else if (GT_Utility.areStacksEqual(mInventory[2], mOutputItem1))
|
if (mInventory[5] == null || aRecipe.getOutputs()[3] == null || (mInventory[5].stackSize + aRecipe.getOutputs()[3].stackSize <= mInventory[5].getMaxStackSize() && GT_Utility.areStacksEqual(mInventory[5], aRecipe.getOutputs()[3])))
|
||||||
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 true;
|
||||||
|
GT_Log.log.error("NO space: " + mInventory[2] + " " + mInventory[3] + " " + mInventory[4] + " " + mInventory[5]);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean checkRecipe() {
|
private boolean checkRecipe() {
|
||||||
Recipe tRecipe = Recipe.findEqualRecipe(false, false, Recipe.sCentrifugeRecipes, mInventory[0], mInventory[1]);
|
// if (mFluid != null) {
|
||||||
if (tRecipe != null) {
|
// ItemStack tStack = GT_Utility.fillFluidContainer(mFluid, new ItemStack(Items.bucket, 1));
|
||||||
if (spaceForOutput(tRecipe) && tRecipe.isRecipeInputEqual(true, true, mInventory[0], mInventory[1])) {
|
// FluidStack tFluid = GT_Utility.getFluidForFilledItem(tStack);
|
||||||
if (mInventory[0] != null) if (mInventory[0].stackSize == 0) mInventory[0] = null;
|
// if (tStack != null && tFluid != null) {
|
||||||
if (mInventory[1] != null) if (mInventory[1].stackSize == 0) mInventory[1] = null;
|
// tStack.stackSize = mFluid.amount / tFluid.amount;
|
||||||
mMaxProgresstime = tRecipe.mDuration;
|
// int tAmount = tStack.stackSize;
|
||||||
mEUt = tRecipe.mEUt;
|
// tRecipe = Recipe.findEqualRecipe(false, false, Recipe.sCentrifugeRecipes, tStack, mInventory[1]);
|
||||||
mOutputItem1 = GT_Utility.copy(tRecipe.getOutput(0));
|
// if (tRecipe != null) {
|
||||||
mOutputItem2 = GT_Utility.copy(tRecipe.getOutput(1));
|
// if (spaceForOutput(tRecipe) && tRecipe.isRecipeInputEqual(true, true, tStack, mInventory[1])) {
|
||||||
mOutputItem3 = GT_Utility.copy(tRecipe.getOutput(2));
|
// mFluid.amount -= (tAmount - tStack.stackSize) * tFluid.amount;
|
||||||
mOutputItem4 = GT_Utility.copy(tRecipe.getOutput(3));
|
// if (mFluid.amount <= 0) mFluid = null;
|
||||||
return true;
|
// if (mInventory[1] != null) if (mInventory[1].stackSize == 0) mInventory[1] = null;
|
||||||
}
|
// mMaxProgresstime = tRecipe.mDuration;
|
||||||
}
|
// mEUt = tRecipe.mEUt;
|
||||||
if (mFluid != null) {
|
// mOutputItem1 = GT_Utility.copy(tRecipe.getOutput(0));
|
||||||
ItemStack tStack = GT_Utility.fillFluidContainer(mFluid, new ItemStack(Items.bucket, 1));
|
// mOutputItem2 = GT_Utility.copy(tRecipe.getOutput(1));
|
||||||
FluidStack tFluid = GT_Utility.getFluidForFilledItem(tStack);
|
// mOutputItem3 = GT_Utility.copy(tRecipe.getOutput(2));
|
||||||
if (tStack != null && tFluid != null) {
|
// if (!GT_Utility.areStacksEqual(tRecipe.getOutput(3), new ItemStack(Items.bucket, 1))) mOutputItem4 = GT_Utility.copy(tRecipe.getOutput(3));
|
||||||
tStack.stackSize = mFluid.amount / tFluid.amount;
|
// return true;
|
||||||
int tAmount = tStack.stackSize;
|
// }
|
||||||
tRecipe = Recipe.findEqualRecipe(false, false, Recipe.sCentrifugeRecipes, tStack, mInventory[1]);
|
// }
|
||||||
if (tRecipe != null) {
|
// }
|
||||||
if (spaceForOutput(tRecipe) && tRecipe.isRecipeInputEqual(true, true, tStack, mInventory[1])) {
|
// }
|
||||||
mFluid.amount -= (tAmount - tStack.stackSize) * tFluid.amount;
|
|
||||||
if (mFluid.amount <= 0) mFluid = 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));
|
|
||||||
if (!GT_Utility.areStacksEqual(tRecipe.getOutput(3), new ItemStack(Items.bucket, 1))) mOutputItem4 = GT_Utility.copy(tRecipe.getOutput(3));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getTextureIndex(byte aSide, byte aFacing, boolean aActive, boolean aRedstone) {
|
public int getTextureIndex(byte aSide, byte aFacing, boolean aActive, boolean aRedstone) {
|
||||||
if (aSide == 0) return 32;
|
if (aSide == 0) return 32;
|
||||||
if (aSide == 1) return aActive?mSpeed==2?44:mSpeed==1?43:42:41;
|
if (aSide == 1) return aActive ? mSpeed >= 2 ? 44 : mSpeed == 1 ? 43 : 42 : 41;
|
||||||
return aActive?mSpeed==2?28:mSpeed==1?27:26:25;
|
return aActive ? mSpeed >= 2 ? 28 : mSpeed == 1 ? 27 : 26 : 25;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, List<Object>> getInfoData() {
|
public Map<String, List<Object>> getInfoData() {
|
||||||
return InfoBuilder.create()
|
return InfoBuilder.create()
|
||||||
.newKey("sensor.progress.percentage", mProgresstime * 100.0D / mMaxProgresstime)
|
.newKey("sensor.progress.percentage", recipeLogic.getProgressTime() * 100.0D / recipeLogic.getMaxProgressTime())
|
||||||
.newKey("sensor.progress.secs", mProgresstime / 20)
|
.newKey("sensor.progress.secs", recipeLogic.getProgressTime() / 20)
|
||||||
.newKey("sensor.progress.secs", mMaxProgresstime / 20)
|
.newKey("sensor.progress.secs", recipeLogic.getMaxProgressTime() / 20)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -276,9 +175,43 @@ public class GT_MetaTileEntity_Centrifuge extends GT_MetaTileEntity_BasicTank {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public byte getUpdateData() {
|
public byte getUpdateData() {
|
||||||
return mSpeed;
|
return (byte) mSpeed;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public int getTankPressure() {return -100;}
|
@Override public int getTankPressure() {return -100;}
|
||||||
@Override public int getCapacity() {return 64000;}
|
@Override public int getCapacity() {return 64000;}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void startProcess() {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void endProcess() {
|
||||||
|
getBaseMetaTileEntity().setErrorDisplayID(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void stutterProcess() {
|
||||||
|
if (GregTech_API.sConstantEnergy) {
|
||||||
|
int val = (int) (recipeLogic.getMaxProgressTime() * 0.1D);
|
||||||
|
|
||||||
|
if (recipeLogic.getProgressTime() > val)
|
||||||
|
recipeLogic.increaseProgressTime(-val);
|
||||||
|
getBaseMetaTileEntity().setErrorDisplayID(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean allowToCheckRecipe() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int[] getInputSlots() {
|
||||||
|
return new int[] {0, 1};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int[] getOutputSlots() {
|
||||||
|
return new int[] {2, 3, 4, 5};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,16 +44,16 @@ public class GT_MetaTileEntityLoader implements Runnable {
|
||||||
new GT_MetaTileEntity_QuantumTank ( 30, "GT_QuantumTank");
|
new GT_MetaTileEntity_QuantumTank ( 30, "GT_QuantumTank");
|
||||||
new GT_MetaTileEntity_ImplosionCompressor ( 31, "GT_ImplosionCompressor");
|
new GT_MetaTileEntity_ImplosionCompressor ( 31, "GT_ImplosionCompressor");
|
||||||
new GT_MetaTileEntity_Sawmill ( 32, "GT_Sawmill");
|
new GT_MetaTileEntity_Sawmill ( 32, "GT_Sawmill");
|
||||||
new GT_MetaTileEntity_DieselGenerator ( 33, "GT_DieselGenerator");
|
new GT_MetaTileEntity_DieselGenerator ( 33, "GT_DieselGenerator" , RecipeMaps.sDieselFuels , 100);
|
||||||
new GT_MetaTileEntity_GasTurbine ( 34, "GT_GasTurbine");
|
new GT_MetaTileEntity_GasTurbine ( 34, "GT_GasTurbine" , RecipeMaps.sTurbineFuels , 75 );
|
||||||
new GT_MetaTileEntity_ThermalGenerator ( 35, "GT_ThermalGenerator");
|
new GT_MetaTileEntity_ThermalGenerator ( 35, "GT_ThermalGenerator" , RecipeMaps.sHotFuels , 80 );
|
||||||
new GT_MetaTileEntity_SemifluidGenerator ( 36, "GT_SemifluidGenerator");
|
new GT_MetaTileEntity_SemifluidGenerator ( 36, "GT_SemifluidGenerator" , RecipeMaps.sDenseLiquidFuels , 100);
|
||||||
new GT_MetaTileEntity_PlasmaGenerator ( 37, "GT_PlasmaGenerator");
|
new GT_MetaTileEntity_PlasmaGenerator ( 37, "GT_PlasmaGenerator" , RecipeMaps.sPlasmaFuels , 100);
|
||||||
new GT_MetaTileEntity_VacuumFreezer ( 38, "GT_VacuumFreezer");
|
new GT_MetaTileEntity_VacuumFreezer ( 38, "GT_VacuumFreezer");
|
||||||
new GT_MetaTileEntity_ElectricRegulatorAdvanced ( 39, "GT_RegulatorAdvanced");
|
new GT_MetaTileEntity_ElectricRegulatorAdvanced ( 39, "GT_RegulatorAdvanced");
|
||||||
new GT_MetaTileEntity_DragonEggEnergySiphon ( 40, "GT_DragonEggEnergySiphon");
|
new GT_MetaTileEntity_DragonEggEnergySiphon ( 40, "GT_DragonEggEnergySiphon");
|
||||||
new GT_MetaTileEntity_ChemicalReactor ( 41, "GT_ChemicalReactor");
|
new GT_MetaTileEntity_ChemicalReactor ( 41, "GT_ChemicalReactor");
|
||||||
new GT_MetaTileEntity_MagicEnergyConverter ( 42, "GT_MagicConverter");
|
new GT_MetaTileEntity_MagicEnergyConverter ( 42, "GT_MagicConverter" , RecipeMaps.sMagicFuels , 100);
|
||||||
new GT_MetaTileEntity_MagicEnergyAbsorber ( 43, "GT_MagicAbsorber");
|
new GT_MetaTileEntity_MagicEnergyAbsorber ( 43, "GT_MagicAbsorber");
|
||||||
new GT_MetaTileEntity_DistillationTower ( 44, "GT_DistillationTower");
|
new GT_MetaTileEntity_DistillationTower ( 44, "GT_DistillationTower");
|
||||||
new GT_MetaTileEntity_Safe ( 45, "GT_Safe");
|
new GT_MetaTileEntity_Safe ( 45, "GT_Safe");
|
||||||
|
|
|
@ -348,6 +348,7 @@ metatileentity.TRANSFORMERS.tooltip=%d Transformer Upgrades
|
||||||
metatileentity.ENERGYCELLS.tooltip=%d Energy Cell Upgrades
|
metatileentity.ENERGYCELLS.tooltip=%d Energy Cell Upgrades
|
||||||
metatileentity.STEAMTANKS.tooltip=%d Steam Tank Upgrades
|
metatileentity.STEAMTANKS.tooltip=%d Steam Tank Upgrades
|
||||||
metatileentity.EUSTORAGES.tooltip=%d Additional EU-Storage
|
metatileentity.EUSTORAGES.tooltip=%d Additional EU-Storage
|
||||||
|
metatileentity.NOT_ENOUGH_ENERGY=Insufficient Energy Line!
|
||||||
|
|
||||||
item.180k_Helium_Coolantcell.name=180k Helium Coolant Cell
|
item.180k_Helium_Coolantcell.name=180k Helium Coolant Cell
|
||||||
item.180k_NaK_Coolantcell.name=180k NaK Coolantcell
|
item.180k_NaK_Coolantcell.name=180k NaK Coolantcell
|
||||||
|
|
Loading…
Reference in a new issue