Skip to content

Commit

Permalink
A lot of stuff
Browse files Browse the repository at this point in the history
- Fixed Universal macerator
- Fixed microwave, scanner and IC2 maps
- Fixed bunch of RecipeLogic & Recipe bugs
- Misc tweaks
  • Loading branch information
TheDarkDnKTv committed Feb 11, 2021
1 parent f492b86 commit 16ff279
Show file tree
Hide file tree
Showing 20 changed files with 562 additions and 223 deletions.
Binary file modified libs/src/Railcraft_1.7.10-9.12.2.1-src.jar
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -106,16 +106,11 @@ public void onPostTick() {
}

boolean succeded = recipeLogic.update();

if (bItemTransfer && (mInventory[3] != null || mInventory[4] != null) && getBaseMetaTileEntity().getFrontFacing() != mMainFacing && doesAutoOutput() && (succeded || getBaseMetaTileEntity().hasInventoryBeenModified() || getBaseMetaTileEntity().getTimer()%600 == 0) && getBaseMetaTileEntity().isUniversalEnergyStored(500)) {
if (bItemTransfer && !getOutputItems().isEmpty() && getBaseMetaTileEntity().getFrontFacing() != mMainFacing && doesAutoOutput() && (succeded || getBaseMetaTileEntity().hasInventoryBeenModified() || getBaseMetaTileEntity().getTimer()%600 == 0) && getBaseMetaTileEntity().isUniversalEnergyStored(500)) {
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);
if (tCost > 0) {
getBaseMetaTileEntity().decreaseStoredEnergyUnits(tCost, true);
tCost = GT_Utility.moveOneItemStack(getBaseMetaTileEntity(), tTileEntity2, getBaseMetaTileEntity().getFrontFacing(), getBaseMetaTileEntity().getBackFacing(), null, false, (byte)64, (byte)1, (byte)64, (byte)1);
if (tCost > 0) {
getBaseMetaTileEntity().decreaseStoredEnergyUnits(tCost, true);
}
}
}
}
Expand Down
41 changes: 27 additions & 14 deletions src/main/java/gregtechmod/api/recipe/RecipeLogic.java
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ public boolean update() {
}

if (progressTime == 0) {
if (base.hasInventoryBeenModified() || base.hasWorkJustBeenEnabled() || success || base.getTimer() % 600 == 0 || wasNoEnergy || isInputNonEmpty()) {
if (base.hasInventoryBeenModified() || base.hasWorkJustBeenEnabled() || success || base.getTimer() % 600 == 0 || wasNoEnergy) {// || isInputNonEmpty()) {
if (base.isUniversalEnergyStored(getMachine().getMinimumStoredEU() - 100)) {
trySerachRecipe();
wasNoEnergy = false;
Expand Down Expand Up @@ -149,8 +149,8 @@ protected boolean match(Recipe recipe) {
return recipe.matches(false, getMachine().getInputItems());
}

protected void consumeInputs(Recipe recipe) {
recipe.matches(true, getMachine().getInputItems());
protected boolean consumeInputs(Recipe recipe) {
return recipe.matches(true, getMachine().getInputItems());
}

protected void startRecipe(Recipe recipe) {
Expand All @@ -159,9 +159,17 @@ protected void startRecipe(Recipe recipe) {
maxProgressTime = GT_Utility.isDebugItem(getMachine().getStackInSlot(batterySlot)) ? 1 : recipe.getDuration();
progressTime = 1;
EUt = recipe.getEUt();
consumeInputs(recipe);
getMachine().getBaseMetaTileEntity().setActive(true);
getMachine().startProcess();
if (consumeInputs(recipe)) {
getMachine().getBaseMetaTileEntity().setActive(true);
getMachine().startProcess();
} else {
GT_Log.log.catching(new IllegalStateException("Error state detected! RecipeMap passed recipe, but it's not matching! Report about this!!!"));
EUt = 0;
progressTime = 0;
maxProgressTime = 0;
previousRecipe = null;
}

} else {
getMachine().getBaseMetaTileEntity().setActive(false);
}
Expand All @@ -177,19 +185,24 @@ protected void endRecipe(Recipe recipe) {

for (ItemStack recipeOut : recipeOutputs) {
int amount = recipeOut.stackSize;
for (int i = 0; i < outputs.size(); i++) {
for (int i = 0; i < outputs.size() && amount > 0; i++) {
ItemStack slot = outputs.get(i);
if (slot == null) {
outputs.set(i, recipeOut.copy());
amount = 0;
} else if (GT_Utility.areStacksEqual(recipeOut, slot)) {
if (GT_Utility.areStacksEqual(recipeOut, slot)) {
int newSize = Math.min(slot.getMaxStackSize(), slot.stackSize + amount);
amount -= newSize - slot.stackSize;
slot.stackSize = newSize;
amount -= newSize;
}

if (amount <= 0)
}

for (int i = 0; i < outputs.size() && amount > 0; i++) {
ItemStack slot = outputs.get(i);
if (slot == null) {
ItemStack stack = recipeOut.copy();
stack.stackSize = amount;
outputs.set(i, stack);
amount = 0;
break;
}
}

if (amount > 0)
Expand Down
12 changes: 7 additions & 5 deletions src/main/java/gregtechmod/api/recipe/RecipeMap.java
Original file line number Diff line number Diff line change
Expand Up @@ -65,16 +65,18 @@ public Recipe findRecipe(List<ItemStack> input) {
if (recipes != null)
result = findRecipe(recipes, input);
if (result == null && recipesWild != null)
result = findRecipe(recipes, input);
result = findRecipe(recipesWild, input);
}

return result;
return result != null && result.enabled ? result : null;
}

private Recipe findRecipe(List<Recipe> recipes, List<ItemStack> input) {
for (Recipe recipe : recipes) {
if (recipe.matches(false, input)) {
return recipe;
if (recipes != null) {
for (Recipe recipe : recipes) {
if (recipe.matches(false, input)) {
return recipe;
}
}
}

Expand Down
33 changes: 33 additions & 0 deletions src/main/java/gregtechmod/api/util/GT_ModHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -627,6 +627,39 @@ public static Map<IRecipeInput, RecipeOutput> getMassFabricatorList() {
return sMassfabRecipes;
}

public static List<ItemStack> getMaceratorResult(ItemStack input) {
try {
ic2.api.recipe.RecipeOutput recipe = ic2.api.recipe.Recipes.macerator.getOutputFor(input, true);
if (recipe != null) {
return GT_Utility.copy(recipe.items);
}
} catch (Throwable e) {}

return null;
}

public static List<ItemStack> getExtractorResult(ItemStack input) {
try {
ic2.api.recipe.RecipeOutput recipe = ic2.api.recipe.Recipes.extractor.getOutputFor(input, true);
if (recipe != null) {
return GT_Utility.copy(recipe.items);
}
} catch (Throwable e) {}

return null;
}

public static List<ItemStack> getCompressorResult(ItemStack input) {
try {
ic2.api.recipe.RecipeOutput recipe = ic2.api.recipe.Recipes.compressor.getOutputFor(input, true);
if (recipe != null) {
return GT_Utility.copy(recipe.items);
}
} catch (Throwable e) {}

return null;
}

/**
* IC2-ThermalCentrifuge Recipe. Overloads old Recipes automatically
*/
Expand Down
15 changes: 7 additions & 8 deletions src/main/java/gregtechmod/api/util/GT_Utility.java
Original file line number Diff line number Diff line change
Expand Up @@ -361,7 +361,8 @@ public static byte moveStackIntoPipe(IInventory aTileEntity1, Object aTileEntity
ItemStack rStack = ((cofh.api.transport.IItemDuct)aTileEntity2).insertItem(ForgeDirection.getOrientation(aPutTo), copy(tStack));
byte tMovedItemCount = (byte)(tStack.stackSize - (rStack == null ? 0 : rStack.stackSize));
if (tMovedItemCount >= 1/*Math.max(aMinMoveAtOnce, aMinTargetStackSize)*/) {
//((cofh.api.transport.IItemConduit)aTileEntity2).insertItem(ForgeDirection.getOrientation(aPutTo), copyAmount(tMovedItemCount, tStack), false);
ItemStack remains = ((cofh.api.transport.IItemDuct)aTileEntity2).insertItem(ForgeDirection.getOrientation(aPutTo), copyAmount(tMovedItemCount, tStack));
tMovedItemCount = (byte) (tStack.stackSize - remains.stackSize);
aTileEntity1.decrStackSize(aGrabSlots[i], tMovedItemCount);
aTileEntity1.markDirty();
return tMovedItemCount;
Expand Down Expand Up @@ -484,13 +485,11 @@ private static byte moveOneItemStack(IInventory aTileEntity1, Object aTileEntity
}

for (int i = 0; i < tGrabSlots.length; i++) {
for (int j = 0; j < tPutSlots.length; j++) {
if (listContainsItem(aFilter, aTileEntity1.getStackInSlot(tGrabSlots[i]), true, aInvertFilter)) {
if (isAllowedToTakeFromSlot(aTileEntity1, tGrabSlots[i], aGrabFrom, aTileEntity1.getStackInSlot(tGrabSlots[i]))) {
if (isAllowedToPutIntoSlot((IInventory)aTileEntity2, tPutSlots[j], aPutTo, aTileEntity1.getStackInSlot(tGrabSlots[i]))) {
byte tMovedItemCount = moveStackFromSlotAToSlotB(aTileEntity1, (IInventory)aTileEntity2, tGrabSlots[i], tPutSlots[j], aMaxTargetStackSize, aMinTargetStackSize, aMaxMoveAtOnce, aMinMoveAtOnce);
if (tMovedItemCount > 0) return tMovedItemCount;
}
if (listContainsItem(aFilter, aTileEntity1.getStackInSlot(tGrabSlots[i]), true, aInvertFilter) && isAllowedToTakeFromSlot(aTileEntity1, tGrabSlots[i], aGrabFrom, aTileEntity1.getStackInSlot(tGrabSlots[i]))) {
for (int j = 0; j < tPutSlots.length; j++) {
if (isAllowedToPutIntoSlot((IInventory)aTileEntity2, tPutSlots[j], aPutTo, aTileEntity1.getStackInSlot(tGrabSlots[i]))) {
byte tMovedItemCount = moveStackFromSlotAToSlotB(aTileEntity1, (IInventory)aTileEntity2, tGrabSlots[i], tPutSlots[j], aMaxTargetStackSize, aMinTargetStackSize, aMaxMoveAtOnce, aMinMoveAtOnce);
if (tMovedItemCount > 0) return tMovedItemCount;
}
}
}
Expand Down
6 changes: 4 additions & 2 deletions src/main/java/gregtechmod/common/GT_GUIHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@
import gregtechmod.common.containers.GT_Container_TradeOMat_Settings;
import gregtechmod.common.containers.GT_Container_Translocator;
import gregtechmod.common.containers.GT_Container_VacuumFreezer;
import gregtechmod.common.containers.UniversalMacerator;
import gregtechmod.common.gui.GT_GUIContainerMetaID_Machine;
import gregtechmod.common.gui.GT_GUIContainer_1by1;
import gregtechmod.common.gui.GT_GUIContainer_2by2;
Expand Down Expand Up @@ -133,6 +134,7 @@
import gregtechmod.common.gui.GT_GUIContainer_TradeOMat_Settings;
import gregtechmod.common.gui.GT_GUIContainer_Translocator;
import gregtechmod.common.gui.GT_GUIContainer_VacuumFreezer;
import gregtechmod.common.gui.GUI_UniversalMacerator;
import gregtechmod.common.tileentities.deprecated.GT_TileEntityMetaID_Machine;
import gregtechmod.common.tileentities.deprecated.GT_TileEntity_Sonictron;
import net.minecraft.entity.player.EntityPlayer;
Expand Down Expand Up @@ -207,7 +209,7 @@ public Object getServerGuiElement(int ID, EntityPlayer player, World world, int
if (ID == 146) return new GT_Container_Centrifuge (player.inventory, (IGregTechTileEntity) tTileEntity);
if (ID == 147) return new GT_Container_RedstoneCircuitBlock (player.inventory, (IGregTechTileEntity) tTileEntity);
if (ID == 148) return new GT_Container_BasicMachine (player.inventory, (IGregTechTileEntity) tTileEntity);
if (ID == 149) return new GT_Container_BasicMachine (player.inventory, (IGregTechTileEntity) tTileEntity);
if (ID == 149) return new UniversalMacerator (player.inventory, (IGregTechTileEntity) tTileEntity);
if (ID == 150) return new GT_Container_AESU_Meta (player.inventory, (IGregTechTileEntity) tTileEntity);
if (ID == 151) return new GT_Container_IDSU_Meta (player.inventory, (IGregTechTileEntity) tTileEntity);
if (ID == 152) return new GT_Container_Teleporter (player.inventory, (IGregTechTileEntity) tTileEntity);
Expand Down Expand Up @@ -306,7 +308,7 @@ public Object getClientGuiElement(int ID, EntityPlayer player, World world, int
if (ID == 146) return new GT_GUIContainer_Centrifuge (player.inventory, (IGregTechTileEntity)tTileEntity);
if (ID == 147) return new GT_GUIContainer_RedstoneCircuitBlock (player.inventory, (IGregTechTileEntity)tTileEntity);
if (ID == 148) return new GT_GUIContainer_BasicMachine_E_Furnace (player.inventory, (IGregTechTileEntity)tTileEntity, "Microwave Oven", "E_Furnace.png");
if (ID == 149) return new GT_GUIContainer_BasicMachine_Macerator (player.inventory, (IGregTechTileEntity)tTileEntity, "Universal Macerator", "Macerator.png");
if (ID == 149) return new GUI_UniversalMacerator (player.inventory, (IGregTechTileEntity)tTileEntity, "Universal Macerator", "Macerator.png"); // TODO fix textures for usual macerator
if (ID == 150) return new GT_GUIContainer_AESU_Meta (player.inventory, (IGregTechTileEntity)tTileEntity);
if (ID == 151) return new GT_GUIContainer_IDSU_Meta (player.inventory, (IGregTechTileEntity)tTileEntity);
if (ID == 152) return new GT_GUIContainer_Teleporter (player.inventory, (IGregTechTileEntity)tTileEntity);
Expand Down
117 changes: 117 additions & 0 deletions src/main/java/gregtechmod/common/containers/UniversalMacerator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
package gregtechmod.common.containers;

import java.util.Iterator;
import java.util.List;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import gregtechmod.api.gui.GT_ContainerMetaTile_Machine;
import gregtechmod.api.gui.GT_Slot_Holo;
import gregtechmod.api.gui.GT_Slot_Output;
import gregtechmod.api.interfaces.IGregTechTileEntity;
import gregtechmod.api.interfaces.IRecipeWorkable;
import gregtechmod.api.metatileentity.implementations.GT_MetaTileEntity_BasicMachine;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.ICrafting;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;

/**
* @author TheDarkDnKTv
*
*/
public class UniversalMacerator extends GT_ContainerMetaTile_Machine {

public boolean mOutputting = false, mItemTransfer = false, mSeperatedInputs = false;

/**
* @param aInventoryPlayer
* @param aTileEntity
*/
public UniversalMacerator(InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity) {
super(aInventoryPlayer, aTileEntity);
}

@Override
public void addSlots(InventoryPlayer aInventoryPlayer) {
addSlotToContainer(new Slot(mTileEntity, 1, 35, 25));
addSlotToContainer(new Slot(mTileEntity, 2, 53, 25));
addSlotToContainer(new Slot(mTileEntity, 7, 80, 63));
List<ItemStack> outputs = ((IRecipeWorkable) mTileEntity.getMetaTileEntity()).getOutputItems();
for (int i = 0; i < outputs.size(); i++) {
int xOffset = 18 * (i % 2);
int yOffset = 18 * (i / 2);

addSlotToContainer(new GT_Slot_Output(mTileEntity, 3 + i, 107 + xOffset, 16 + yOffset));
}
addSlotToContainer(new GT_Slot_Holo(mTileEntity, 0, 8, 63, false, true, 1));
addSlotToContainer(new GT_Slot_Holo(mTileEntity, 0, 26, 63, false, true, 1));
addSlotToContainer(new GT_Slot_Holo(mTileEntity, 0, 44, 63, false, true, 1));
}

@Override
public ItemStack slotClick(int aSlotIndex, int aMouseclick, int aShifthold, EntityPlayer aPlayer) {
if (aSlotIndex < 7) return super.slotClick(aSlotIndex, aMouseclick, aShifthold, aPlayer);

Slot tSlot = (Slot)inventorySlots.get(aSlotIndex);
if (tSlot != null) {
if (mTileEntity.getMetaTileEntity() == null) return null;
if (aSlotIndex == 7) {
((GT_MetaTileEntity_BasicMachine)mTileEntity.getMetaTileEntity()).bOutput = !((GT_MetaTileEntity_BasicMachine)mTileEntity.getMetaTileEntity()).bOutput;
return null;
}
if (aSlotIndex == 8) {
((GT_MetaTileEntity_BasicMachine)mTileEntity.getMetaTileEntity()).bItemTransfer = !((GT_MetaTileEntity_BasicMachine)mTileEntity.getMetaTileEntity()).bItemTransfer;
return null;
}
if (aSlotIndex == 9) {
((GT_MetaTileEntity_BasicMachine)mTileEntity.getMetaTileEntity()).bSeperatedInputs = !((GT_MetaTileEntity_BasicMachine)mTileEntity.getMetaTileEntity()).bSeperatedInputs;
return null;
}
}

return super.slotClick(aSlotIndex, aMouseclick, aShifthold, aPlayer);
}

@Override
public void detectAndSendChanges() {
super.detectAndSendChanges();
if (mTileEntity.isClientSide() || mTileEntity.getMetaTileEntity() == null) return;

mOutputting = ((GT_MetaTileEntity_BasicMachine)mTileEntity.getMetaTileEntity()).bOutput;
mItemTransfer = ((GT_MetaTileEntity_BasicMachine)mTileEntity.getMetaTileEntity()).bItemTransfer;
mSeperatedInputs = ((GT_MetaTileEntity_BasicMachine)mTileEntity.getMetaTileEntity()).bSeperatedInputs;

@SuppressWarnings("rawtypes")
Iterator var2 = this.crafters.iterator();
while (var2.hasNext()) {
ICrafting var1 = (ICrafting)var2.next();
var1.sendProgressBarUpdate(this, 101, mOutputting?1:0);
var1.sendProgressBarUpdate(this, 102, mItemTransfer?1:0);
var1.sendProgressBarUpdate(this, 103, mSeperatedInputs?1:0);
}
}

@Override
@SideOnly(Side.CLIENT)
public void updateProgressBar(int par1, int par2) {
super.updateProgressBar(par1, par2);
switch (par1) {
case 101: mOutputting = (par2 != 0); break;
case 102: mItemTransfer = (par2 != 0); break;
case 103: mSeperatedInputs = (par2 != 0); break;
}
}

@Override
public int getSlotCount() {
return 7;
}

@Override
public int getShiftClickSlotCount() {
return 2;
}
}
49 changes: 49 additions & 0 deletions src/main/java/gregtechmod/common/gui/GUI_UniversalMacerator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package gregtechmod.common.gui;

import gregtechmod.api.GregTech_API;
import gregtechmod.api.gui.GT_GUIContainerMetaTile_Machine;
import gregtechmod.api.interfaces.IGregTechTileEntity;
import gregtechmod.common.containers.UniversalMacerator;
import net.minecraft.entity.player.InventoryPlayer;

/**
* @author TheDarkDnKTv
*
*/
public class GUI_UniversalMacerator extends GT_GUIContainerMetaTile_Machine {

private final String mName;
/**
* @param aInventoryPlayer
* @param aTileEntity
* @param aName
* @param aTextureFile
*/
public GUI_UniversalMacerator(InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity, String aName, String aTextureFile) {
super(new UniversalMacerator(aInventoryPlayer, aTileEntity), GregTech_API.GUI_PATH + aTextureFile);
mName = aName;
}

@Override
protected void drawGuiContainerForegroundLayer(int par1, int par2) {
fontRenderer.drawString(mName, 8, 4, 4210752);
}

@Override
protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3) {
super.drawGuiContainerBackgroundLayer(par1, par2, par3);
int x = (width - xSize) / 2;
int y = (height - ySize) / 2;
drawTexturedModalRect(x, y, 0, 0, xSize, ySize);
if (mContainer != null) {
if (((UniversalMacerator)mContainer).mOutputting) drawTexturedModalRect(x + 7, y + 62, 176, 18, 18, 18);
if (((UniversalMacerator)mContainer).mItemTransfer) drawTexturedModalRect(x + 25, y + 62, 176, 36, 18, 18);
if (((UniversalMacerator)mContainer).mSeperatedInputs) drawTexturedModalRect(x + 43, y + 62, 176, 54, 18, 18);

if (mContainer.mMaxProgressTime > 0) {
int tSize = 20, tProgress = Math.max(1, Math.min(tSize, (mContainer.mProgressTime>0?1:0) + (mContainer.mProgressTime * tSize) / mContainer.mMaxProgressTime)) % (tSize+1);
drawTexturedModalRect(x + 78, y + 24, 176, 0, tProgress , 18);
}
}
}
}
Loading

0 comments on commit 16ff279

Please sign in to comment.