parent
a54195b0ac
commit
a5398f3351
3 changed files with 24 additions and 19 deletions
|
@ -1,5 +1,6 @@
|
|||
package gregtechmod.api.metatileentity;
|
||||
|
||||
import java.lang.ref.SoftReference;
|
||||
import gregtechmod.api.GregTech_API;
|
||||
import gregtechmod.api.interfaces.IGregTechTileEntity;
|
||||
import gregtechmod.api.interfaces.IHasWorldObjectAndCoords;
|
||||
|
@ -33,10 +34,18 @@ public abstract class BaseTileEntity extends TileEntity implements IHasWorldObje
|
|||
*
|
||||
* "this" means that there is no TileEntity, while "null" means that it doesn't know if there is even a TileEntity and still needs to check that if needed.
|
||||
*/
|
||||
private final TileEntity[] mBufferedTileEntities = new TileEntity[6];
|
||||
@SuppressWarnings({ "unchecked"})
|
||||
private final SoftReference<TileEntity> mBufferedTileEntities[] = new SoftReference[6];
|
||||
|
||||
private final void clearNullMarkersFromTileEntityBuffer() {
|
||||
for (int i = 0; i < mBufferedTileEntities.length; i++) if (mBufferedTileEntities[i] == this) mBufferedTileEntities[i] = null;
|
||||
for (int i = 0; i < mBufferedTileEntities.length; i++) {
|
||||
SoftReference<TileEntity> reference = mBufferedTileEntities[i];
|
||||
if (reference != null && reference.get() != null) {
|
||||
if (reference.get() == this || reference.get().isInvalid()) {
|
||||
mBufferedTileEntities[i] = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override public final World getWorld () {return worldObj;}
|
||||
|
@ -130,22 +139,18 @@ public abstract class BaseTileEntity extends TileEntity implements IHasWorldObje
|
|||
|
||||
@Override
|
||||
public final TileEntity getTileEntityAtSide(byte aSide) {
|
||||
if (aSide < 0 || aSide >= 6 || mBufferedTileEntities[aSide] == this) return null;
|
||||
if (mBufferedTileEntities[aSide] == null) {
|
||||
mBufferedTileEntities[aSide] = getTileEntity(getOffsetX(aSide, 1), getOffsetY(aSide, 1), getOffsetZ(aSide, 1));
|
||||
if (mBufferedTileEntities[aSide] == null) {
|
||||
mBufferedTileEntities[aSide] = this;
|
||||
return null;
|
||||
if (aSide >= 0 && aSide < 6) {
|
||||
SoftReference<TileEntity> reference = mBufferedTileEntities[aSide];
|
||||
if (reference != null && reference.get() != null && !reference.get().isInvalid()) {
|
||||
if (reference.get() == this || reference.isEnqueued()) this.clearNullMarkersFromTileEntityBuffer();
|
||||
return reference.get();
|
||||
} else {
|
||||
TileEntity tile = getTileEntity(getOffsetX(aSide, 1), getOffsetY(aSide, 1), getOffsetZ(aSide, 1));
|
||||
mBufferedTileEntities[aSide] = new SoftReference<TileEntity>(tile);
|
||||
return tile;
|
||||
}
|
||||
return mBufferedTileEntities[aSide];
|
||||
}
|
||||
if (mBufferedTileEntities[aSide].isInvalid()) {
|
||||
mBufferedTileEntities[aSide] = null;
|
||||
return getTileEntityAtSide(aSide);
|
||||
}
|
||||
if (mBufferedTileEntities[aSide].xCoord == getOffsetX(aSide, 1) && mBufferedTileEntities[aSide].yCoord == getOffsetY(aSide, 1) && mBufferedTileEntities[aSide].zCoord == getOffsetZ(aSide, 1)) {
|
||||
return mBufferedTileEntities[aSide];
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
|
@ -142,7 +142,7 @@ public class GT_ItemIterator implements Runnable {
|
|||
}
|
||||
} catch (Throwable e) {}
|
||||
try {
|
||||
if (tItem instanceof IToolWrench) {
|
||||
if (tItem instanceof IToolWrench && !(tItem instanceof IToolCrowbar)) {
|
||||
if (!tItem.isDamageable() && !GT_ModHandler.isElectricItem(new ItemStack(tItem, 1, 0))) {
|
||||
if (GregTech_API.sRecipeFile.get(GT_ConfigCategories.Recipes.disabledrecipes, "infiniteDurabilityBCWrenches", false) && GT_ModHandler.removeRecipeByOutput(new ItemStack(tItem, 1, GregTech_API.ITEM_WILDCARD_DAMAGE))) {
|
||||
GT_Log.log.info("GT_Mod: Removed infinite BC Wrench: " + tName);
|
||||
|
|
|
@ -386,7 +386,7 @@ public class GT_CraftingRecipeLoader implements Runnable {
|
|||
if (GregTech_API.sRecipeFile.get(GT_ConfigCategories.Recipes.gregtechrecipes, "digitalchest", true)) {
|
||||
GT_ModHandler.addCraftingRecipe(new ItemStack(GregTech_API.sBlockList[1], 1,48), new Object[] {"AAA", "ADA", "ASA", 'D', OrePrefixes.circuit.get(Materials.Ultimate), 'S', GT_OreDictNames.craftingMonitorTier02, 'A', OrePrefixes.plate.get(Materials.Iron)});
|
||||
GT_ModHandler.addCraftingRecipe(new ItemStack(GregTech_API.sBlockList[1], 1,48), new Object[] {"AAA", "ADA", "ASA", 'D', OrePrefixes.circuit.get(Materials.Ultimate), 'S', GT_OreDictNames.craftingMonitorTier02, 'A', OrePrefixes.plate.get(Materials.Aluminium)});
|
||||
GT_ModHandler.addCraftingRecipe(new ItemStack(GregTech_API.sBlockList[1], 1,48), new Object[] {"AAA", "ADA", "ASA", 'D', OrePrefixes.circuit.get(Materials.Ultimate), 'S', GT_OreDictNames.craftingMonitorTier02, 'A', GT_OreDictNames.craftingPlateSteel});
|
||||
GT_ModHandler.addCraftingRecipe(new ItemStack(GregTech_API.sBlockList[1], 1,75), new Object[] {"AAA", "ADA", "ASA", 'D', OrePrefixes.circuit.get(Materials.Ultimate), 'S', GT_OreDictNames.craftingMonitorTier02, 'A', GT_OreDictNames.craftingPlateSteel});
|
||||
}
|
||||
|
||||
if (GregTech_API.sRecipeFile.get(GT_ConfigCategories.Recipes.gregtechrecipes, "quantumchest", true)) {
|
||||
|
|
Loading…
Reference in a new issue