diff options
author | Jason Mitchell <mitchej@gmail.com> | 2023-01-20 00:30:50 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-20 09:30:50 +0100 |
commit | 7ed516e30ba224b4b8e3fad9c836c22ca00bfcdb (patch) | |
tree | bea33f6637b929427e9abbe733e19606f8bf9032 /src/main/java/gregtech/common | |
parent | 750a4070af4756e3708e2b2555b9874864bf3cfb (diff) | |
download | GT5-Unofficial-7ed516e30ba224b4b8e3fad9c836c22ca00bfcdb.tar.gz GT5-Unofficial-7ed516e30ba224b4b8e3fad9c836c22ca00bfcdb.tar.bz2 GT5-Unofficial-7ed516e30ba224b4b8e3fad9c836c22ca00bfcdb.zip |
MTE Inventory updates (#1496)
* MTE Inventory updates
* Separate Input/Output inventory
* Use a LinkedHashMap to ensure inventory orders are deterministic
* Input/Output work on either Input/Output inventories
* MTE Inventory
* Add GT_Packet_MultiTileEntity
* More dyanmic packet with packetFeatures
* Add IMTE_HasModes for MultiBlockPart
* Help with MTE Inventory (#1613)
* convert inventory to use ItemStackHandler
* Update MUI
* inventories
* move Iteminventory to its own method
Co-authored-by: miozune <miozune@gmail.com>
* Update MUI
* Update MUI
* Add IMultiBlockPart
* Mte fluid inventory (#1639)
* first work on fluid inventory
* make gui work with numbers not dividable by 4
* use math.min
* add outputfluids saving
* actually working
* Update MUI
Co-authored-by: miozune <miozune@gmail.com>
* Ticking Covers!
* Parts now register covers with the controller
* Controllers now tick covers on parts
* Break cover ticking out into `tickCoverAtSide`
Fix some inventory methods on MultiBlockController
* Filter on tickable covers
* Improve GUIs for MTEs (#1650)
* working controller GUI
* locked inventory selection work
* input and output locking of inventories
Co-authored-by: miozune <miozune@gmail.com>
* spotless
* CoverInfo refactor (#1654)
* Add `CoverInfo` and deprecate the old fields to hold cover information
* Disable MTE registration
* Fix NPE - Return EMPTY_INFO for SIDE_UNKNOWN
Temporarily add back old NBT saving in case of a revert so covers aren't lost.
* Actually save the old NBT data, instead of empty
Co-authored-by: BlueWeabo <76872108+BlueWeabo@users.noreply.github.com>
Co-authored-by: miozune <miozune@gmail.com>
Diffstat (limited to 'src/main/java/gregtech/common')
13 files changed, 422 insertions, 191 deletions
diff --git a/src/main/java/gregtech/common/GT_Client.java b/src/main/java/gregtech/common/GT_Client.java index 2a93e541b5..0ce1e284ca 100644 --- a/src/main/java/gregtech/common/GT_Client.java +++ b/src/main/java/gregtech/common/GT_Client.java @@ -5,6 +5,7 @@ package gregtech.common; +import static gregtech.api.enums.GT_Values.ALL_VALID_SIDES; import static gregtech.api.enums.GT_Values.calculateMaxPlasmaTurbineEfficiency; import static org.lwjgl.opengl.GL11.GL_LINE_LOOP; @@ -328,16 +329,17 @@ public class GT_Client extends GT_Proxy implements Runnable { byte tConnections = 0; if (tTile instanceof ICoverable) { if (showCoverConnections) { - for (byte i = 0; i < 6; i++) { - if (((ICoverable) tTile).getCoverIDAtSide(i) > 0) tConnections = (byte) (tConnections + (1 << i)); + for (byte tSide : ALL_VALID_SIDES) { + if (((ICoverable) tTile).getCoverIDAtSide(tSide) > 0) + tConnections = (byte) (tConnections + (1 << tSide)); } } else if (tTile instanceof BaseMetaPipeEntity) tConnections = ((BaseMetaPipeEntity) tTile).mConnections; } if (tConnections > 0) { - for (byte i = 0; i < 6; i++) { - if ((tConnections & (1 << i)) != 0) { - switch (GRID_SWITCH_TABLE[aEvent.target.sideHit][i]) { + for (byte tSide : ALL_VALID_SIDES) { + if ((tConnections & (1 << tSide)) != 0) { + switch (GRID_SWITCH_TABLE[aEvent.target.sideHit][tSide]) { case 0: GL11.glVertex3d(+.25D, .0D, +.25D); GL11.glVertex3d(-.25D, .0D, -.25D); @@ -787,8 +789,8 @@ public class GT_Client extends GT_Proxy implements Runnable { || GT_Utility.isStackInList(aEvent.currentItem, GregTech_API.sCrowbarList) || GT_Utility.isStackInList(aEvent.currentItem, GregTech_API.sScrewdriverList)) { if (((ICoverable) aTileEntity).getCoverIDAtSide((byte) aEvent.target.sideHit) == 0) - for (byte i = 0; i < 6; i++) - if (((ICoverable) aTileEntity).getCoverIDAtSide(i) > 0) { + for (byte tSide : ALL_VALID_SIDES) + if (((ICoverable) aTileEntity).getCoverIDAtSide(tSide) > 0) { drawGrid(aEvent, true, false, true); return; } diff --git a/src/main/java/gregtech/common/GT_Network.java b/src/main/java/gregtech/common/GT_Network.java index 39f50a9e04..4e1a58b4db 100644 --- a/src/main/java/gregtech/common/GT_Network.java +++ b/src/main/java/gregtech/common/GT_Network.java @@ -36,24 +36,26 @@ public class GT_Network extends MessageToMessageCodec<FMLProxyPacket, GT_Packet> public GT_Network() { this( "GregTech", - new GT_Packet_TileEntity(), - new GT_Packet_Sound(), - new GT_Packet_Block_Event(), - new GT_Packet_Ores(), - new GT_Packet_Pollution(), - new MessageSetFlaskCapacity(), - new GT_Packet_TileEntityCover(), - new GT_Packet_TileEntityCoverGUI(), - new MessageUpdateFluidDisplayItem(), - new GT_Packet_ClientPreference(), - new GT_Packet_WirelessRedstoneCover(), - new GT_Packet_TileEntityCoverNew(), - new GT_Packet_SetConfigurationCircuit(), - new GT_Packet_UpdateItem(), - new GT_Packet_SetLockedFluid(), - new GT_Packet_GtTileEntityGuiRequest(), - new GT_Packet_SendCoverData(), - new GT_Packet_RequestCoverData()); + new GT_Packet_TileEntity(), // 0 + new GT_Packet_Sound(), // 1 + new GT_Packet_Block_Event(), // 2 + new GT_Packet_Ores(), // 3 + new GT_Packet_Pollution(), // 4 + new MessageSetFlaskCapacity(), // 5 + new GT_Packet_TileEntityCover(), // 6 + new GT_Packet_TileEntityCoverGUI(), // 7 + new MessageUpdateFluidDisplayItem(), // 8 + new GT_Packet_ClientPreference(), // 9 + new GT_Packet_WirelessRedstoneCover(), // 10 + new GT_Packet_TileEntityCoverNew(), // 11 + new GT_Packet_SetConfigurationCircuit(), // 12 + new GT_Packet_UpdateItem(), // 13 + new GT_Packet_SetLockedFluid(), // 14 + new GT_Packet_GtTileEntityGuiRequest(), // 15 + new GT_Packet_SendCoverData(), // 16 + new GT_Packet_RequestCoverData(), // 17 + new GT_Packet_MultiTileEntity() // 18 + ); } public GT_Network(String channelName, GT_Packet... packetTypes) { @@ -68,7 +70,7 @@ public class GT_Network extends MessageToMessageCodec<FMLProxyPacket, GT_Packet> @Override protected void encode(ChannelHandlerContext aContext, GT_Packet aPacket, List<Object> aOutput) throws Exception { - ByteBuf tBuf = Unpooled.buffer().writeByte(aPacket.getPacketID()); + final ByteBuf tBuf = Unpooled.buffer().writeByte(aPacket.getPacketID()); aPacket.encode(tBuf); aOutput.add(new FMLProxyPacket( tBuf, aContext.channel().attr(NetworkRegistry.FML_CHANNEL).get())); @@ -77,8 +79,9 @@ public class GT_Network extends MessageToMessageCodec<FMLProxyPacket, GT_Packet> @Override protected void decode(ChannelHandlerContext aContext, FMLProxyPacket aPacket, List<Object> aOutput) throws Exception { - ByteArrayDataInput aData = ByteStreams.newDataInput(aPacket.payload().array()); - GT_Packet tPacket = this.mSubChannels[aData.readByte()].decode(aData); + final ByteArrayDataInput aData = + ByteStreams.newDataInput(aPacket.payload().array()); + final GT_Packet tPacket = this.mSubChannels[aData.readByte()].decode(aData); tPacket.setINetHandler(aPacket.handler()); aOutput.add(tPacket); } diff --git a/src/main/java/gregtech/common/GT_Proxy.java b/src/main/java/gregtech/common/GT_Proxy.java index 92cfd04655..62bc9f7654 100644 --- a/src/main/java/gregtech/common/GT_Proxy.java +++ b/src/main/java/gregtech/common/GT_Proxy.java @@ -2191,16 +2191,16 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler, IG GT_MetaGenerated_Tool_01.AXE, 1, Materials.Flint, Materials.Wood, null))); } } - boolean tHungerEffect = (this.mHungerEffect) && (aEvent.player.ticksExisted % 2400 == 1200); + final boolean tHungerEffect = (this.mHungerEffect) && (aEvent.player.ticksExisted % 2400 == 1200); if (aEvent.player.ticksExisted % 120 == 0) { int tCount = 64; for (int i = 0; i < 36; i++) { - ItemStack tStack; + final ItemStack tStack; if ((tStack = aEvent.player.inventory.getStackInSlot(i)) != null) { if (!aEvent.player.capabilities.isCreativeMode) { GT_Utility.applyRadioactivity( aEvent.player, GT_Utility.getRadioactivityLevel(tStack), tStack.stackSize); - float tHeat = GT_Utility.getHeatDamageFromItem(tStack); + final float tHeat = GT_Utility.getHeatDamageFromItem(tStack); if (tHeat != 0.0F) { if (tHeat > 0.0F) { GT_Utility.applyHeatDamageFromItem(aEvent.player, tHeat, tStack); @@ -2218,12 +2218,12 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler, IG } } for (int i = 0; i < 4; i++) { - ItemStack tStack; + final ItemStack tStack; if ((tStack = aEvent.player.inventory.armorInventory[i]) != null) { if (!aEvent.player.capabilities.isCreativeMode) { GT_Utility.applyRadioactivity( aEvent.player, GT_Utility.getRadioactivityLevel(tStack), tStack.stackSize); - float tHeat = GT_Utility.getHeatDamageFromItem(tStack); + final float tHeat = GT_Utility.getHeatDamageFromItem(tStack); if (tHeat != 0.0F) { if (tHeat > 0.0F) { GT_Utility.applyHeatDamageFromItem(aEvent.player, tHeat, tStack); @@ -2257,12 +2257,12 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler, IG if (aID >= 1000) { return null; } - TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); + final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); if ((tTileEntity instanceof IGregTechTileEntity)) { if (GUI_ID_COVER_SIDE_BASE <= aID && aID < GUI_ID_COVER_SIDE_BASE + 6) { return null; } - IMetaTileEntity tMetaTileEntity = ((IGregTechTileEntity) tTileEntity).getMetaTileEntity(); + final IMetaTileEntity tMetaTileEntity = ((IGregTechTileEntity) tTileEntity).getMetaTileEntity(); if (tMetaTileEntity != null && !tMetaTileEntity.useModularUI()) { return tMetaTileEntity.getServerGUI(aID, aPlayer.inventory, (IGregTechTileEntity) tTileEntity); } @@ -2275,12 +2275,12 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler, IG if (aID >= 1000) { return null; } - TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); + final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); if ((tTileEntity instanceof IGregTechTileEntity)) { - IGregTechTileEntity tile = (IGregTechTileEntity) tTileEntity; + final IGregTechTileEntity tile = (IGregTechTileEntity) tTileEntity; if (GUI_ID_COVER_SIDE_BASE <= aID && aID < GUI_ID_COVER_SIDE_BASE + 6) { - byte side = (byte) (aID - GT_Proxy.GUI_ID_COVER_SIDE_BASE); + final byte side = (byte) (aID - GT_Proxy.GUI_ID_COVER_SIDE_BASE); GT_CoverBehaviorBase<?> cover = tile.getCoverBehaviorAtSideNew(side); if (cover.hasCoverGUI() && !cover.useModularUI()) { @@ -2294,7 +2294,7 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler, IG } return null; } - IMetaTileEntity tMetaTileEntity = tile.getMetaTileEntity(); + final IMetaTileEntity tMetaTileEntity = tile.getMetaTileEntity(); if (tMetaTileEntity != null && !tMetaTileEntity.useModularUI()) { return tMetaTileEntity.getClientGUI(aID, aPlayer.inventory, tile); } @@ -2315,15 +2315,16 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler, IG } int rFuelValue = 0; if ((aFuel.getItem() instanceof GT_MetaGenerated_Item)) { - Short tFuelValue = ((GT_MetaGenerated_Item) aFuel.getItem()).mBurnValues.get((short) aFuel.getItemDamage()); + final Short tFuelValue = + ((GT_MetaGenerated_Item) aFuel.getItem()).mBurnValues.get((short) aFuel.getItemDamage()); if (tFuelValue != null) { rFuelValue = Math.max(rFuelValue, tFuelValue); } } - NBTTagCompound tNBT = aFuel.getTagCompound(); + final NBTTagCompound tNBT = aFuel.getTagCompound(); if (tNBT != null) { // See if we have something defined by NBT - short tValue = tNBT.getShort("GT.ItemFuelValue"); + final short tValue = tNBT.getShort("GT.ItemFuelValue"); rFuelValue = Math.max(rFuelValue, tValue); } else { // If not check the ore dict diff --git a/src/main/java/gregtech/common/blocks/GT_Block_Machines.java b/src/main/java/gregtech/common/blocks/GT_Block_Machines.java index d176fd26a3..25db7f32dd 100644 --- a/src/main/java/gregtech/common/blocks/GT_Block_Machines.java +++ b/src/main/java/gregtech/common/blocks/GT_Block_Machines.java @@ -1,6 +1,7 @@ package gregtech.common.blocks; import static gregtech.GT_Mod.GT_FML_LOGGER; +import static gregtech.api.enums.GT_Values.ALL_VALID_SIDES; import static gregtech.api.enums.GT_Values.SIDE_UP; import static gregtech.api.objects.XSTR.XSTR_INSTANCE; @@ -23,6 +24,7 @@ import gregtech.api.metatileentity.CoverableTileEntity; import gregtech.api.util.GT_BaseCrop; import gregtech.api.util.GT_Log; import gregtech.api.util.GT_Utility; +import gregtech.common.covers.CoverInfo; import gregtech.common.render.GT_Renderer_Block; import gregtech.common.tileentities.storage.GT_MetaTileEntity_QuantumChest; import java.util.ArrayList; @@ -658,16 +660,13 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo final byte aSide = (byte) side; final CoverableTileEntity tile = (CoverableTileEntity) tTileEntity; if (side != -1) { - final Block facadeBlock = tile.getCoverBehaviorAtSideNew(aSide) - .getFacadeBlock( - aSide, tile.getCoverIDAtSide(aSide), tile.getComplexCoverDataAtSide(aSide), tile); + final Block facadeBlock = tile.getCoverInfoAtSide(aSide).getFacadeBlock(); if (facadeBlock != null) return facadeBlock; } else { // we do not allow more than one type of facade per block, so no need to check every side // see comment in gregtech.common.covers.GT_Cover_FacadeBase.isCoverPlaceable - for (byte i = 0; i < 6; i++) { - final Block facadeBlock = tile.getCoverBehaviorAtSideNew(i) - .getFacadeBlock(i, tile.getCoverIDAtSide(i), tile.getComplexCoverDataAtSide(i), tile); + for (byte tSide : ALL_VALID_SIDES) { + final Block facadeBlock = tile.getCoverInfoAtSide(tSide).getFacadeBlock(); if (facadeBlock != null) { return facadeBlock; } @@ -684,22 +683,17 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo final byte aSide = (byte) side; final CoverableTileEntity tile = (CoverableTileEntity) tTileEntity; if (side != -1) { - final Block facadeBlock = tile.getCoverBehaviorAtSideNew(aSide) - .getFacadeBlock( - aSide, tile.getCoverIDAtSide(aSide), tile.getComplexCoverDataAtSide(aSide), tile); - if (facadeBlock != null) - return tile.getCoverBehaviorAtSideNew(aSide) - .getFacadeMeta( - aSide, tile.getCoverIDAtSide(aSide), tile.getComplexCoverDataAtSide(aSide), tile); + final CoverInfo coverInfo = tile.getCoverInfoAtSide(aSide); + final Block facadeBlock = coverInfo.getFacadeBlock(); + if (facadeBlock != null) return coverInfo.getFacadeMeta(); } else { // we do not allow more than one type of facade per block, so no need to check every side // see comment in gregtech.common.covers.GT_Cover_FacadeBase.isCoverPlaceable - for (byte i = 0; i < 6; i++) { - final Block facadeBlock = tile.getCoverBehaviorAtSideNew(i) - .getFacadeBlock(i, tile.getCoverIDAtSide(i), tile.getComplexCoverDataAtSide(i), tile); + for (byte tSide : ALL_VALID_SIDES) { + final CoverInfo coverInfo = tile.getCoverInfoAtSide(tSide); + final Block facadeBlock = coverInfo.getFacadeBlock(); if (facadeBlock != null) { - return tile.getCoverBehaviorAtSideNew(i) - .getFacadeMeta(i, tile.getCoverIDAtSide(i), tile.getComplexCoverDataAtSide(i), tile); + return coverInfo.getFacadeMeta(); } } } diff --git a/src/main/java/gregtech/common/covers/CoverInfo.java b/src/main/java/gregtech/common/covers/CoverInfo.java new file mode 100644 index 0000000000..58b1afe5ba --- /dev/null +++ b/src/main/java/gregtech/common/covers/CoverInfo.java @@ -0,0 +1,235 @@ +package gregtech.common.covers; + +import static gregtech.api.enums.GT_Values.SIDE_UNKNOWN; + +import com.gtnewhorizons.modularui.api.screen.ModularWindow; +import gregtech.api.GregTech_API; +import gregtech.api.gui.modularui.GT_CoverUIBuildContext; +import gregtech.api.interfaces.ITexture; +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.util.GT_CoverBehaviorBase; +import gregtech.api.util.ISerializableObject; +import java.lang.ref.WeakReference; +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.fluids.Fluid; + +public final class CoverInfo { + private static final String NBT_SIDE = "s", NBT_ID = "id", NBT_DATA = "d"; + + public static final CoverInfo EMPTY_INFO = new CoverInfo(SIDE_UNKNOWN, null); + private byte coverSide; + private int coverID = 0; + private GT_CoverBehaviorBase<?> coverBehavior = null; + private ISerializableObject coverData = null; + private final WeakReference<ICoverable> coveredTile; + private boolean needsUpdate = false; + + public CoverInfo(byte aSide, ICoverable aTile) { + coverSide = aSide; + coveredTile = new WeakReference<>(aTile); + } + + public CoverInfo(byte aSide, int aID, ICoverable aTile, ISerializableObject aCoverData) { + coverSide = aSide; + coverID = aID; + coverBehavior = GregTech_API.getCoverBehaviorNew(aID); + coverData = aCoverData == null ? coverBehavior.createDataObject() : aCoverData; + coveredTile = new WeakReference<>(aTile); + } + + public CoverInfo(ICoverable aTile, NBTTagCompound aNBT) { + coverSide = aNBT.getByte(NBT_SIDE); + coverID = aNBT.getInteger(NBT_ID); + coverBehavior = GregTech_API.getCoverBehaviorNew(coverID); + coverData = aNBT.hasKey(NBT_DATA) + ? coverBehavior.createDataObject(aNBT.getTag(NBT_DATA)) + : coverBehavior.createDataObject(); + coveredTile = new WeakReference<>(aTile); + } + + public boolean isValid() { + return coverID != 0 && coverSide != SIDE_UNKNOWN; + } + + public NBTTagCompound writeToNBT(NBTTagCompound aNBT) { + aNBT.setByte(NBT_SIDE, coverSide); + aNBT.setInteger(NBT_ID, coverID); + if (coverData != null) aNBT.setTag(NBT_DATA, coverData.saveDataToNBT()); + + return aNBT; + } + + public int getCoverID() { + return coverID; + } + + public boolean needsUpdate() { + return needsUpdate; + } + + public void setNeedsUpdate(boolean aUpdate) { + needsUpdate = aUpdate; + } + + public GT_CoverBehaviorBase<?> getCoverBehavior() { + if (coverBehavior != null) return coverBehavior; + return GregTech_API.sNoBehavior; + } + + public ISerializableObject getCoverData() { + if (coverData != null) return coverData; + return GregTech_API.sNoBehavior.createDataObject(); + } + + public boolean onCoverRemoval(boolean aForced) { + return getCoverBehavior().onCoverRemoval(coverSide, coverID, coverData, coveredTile.get(), aForced); + } + + public ItemStack getDrop() { + return getCoverBehavior().getDrop(coverSide, coverID, coverData, coveredTile.get()); + } + + public ItemStack getDisplayStack() { + return getCoverBehavior().getDisplayStack(coverID, coverData); + } + + public boolean isDataNeededOnClient() { + return getCoverBehavior().isDataNeededOnClient(coverSide, coverID, coverData, coveredTile.get()); + } + + public void onDropped() { + getCoverBehavior().onDropped(coverSide, coverID, coverData, coveredTile.get()); + } + + public void setCoverData(ISerializableObject aData) { + coverData = aData; + } + + public ITexture getSpecialCoverFGTexture() { + return getCoverBehavior().getSpecialCoverFGTexture(coverSide, coverID, coverData, coveredTile.get()); + } + + public ITexture getSpecialCoverTexture() { + return getCoverBehavior().getSpecialCoverTexture(coverSide, coverID, coverData, coveredTile.get()); + } + + public int getTickRate() { + return getCoverBehavior().getTickRate(coverSide, coverID, coverData, coveredTile.get()); + } + + public byte getSide() { + return coverSide; + } + + public ICoverable getTile() { + return coveredTile.get(); + } + + public boolean isRedstoneSensitive(long aTickTimer) { + return getCoverBehavior().isRedstoneSensitive(coverSide, coverID, coverData, coveredTile.get(), aTickTimer); + } + + public ISerializableObject doCoverThings(long aTickTimer, byte aRedstone) { + return getCoverBehavior() + .doCoverThings(coverSide, aRedstone, coverID, coverData, coveredTile.get(), aTickTimer); + } + + public void onBaseTEDestroyed() { + getCoverBehavior().onBaseTEDestroyed(coverSide, coverID, coverData, coveredTile.get()); + } + + public void updateCoverBehavior() { + coverBehavior = GregTech_API.getCoverBehaviorNew(coverID); + } + + public void preDataChanged(int aCoverID, ISerializableObject aCoverData) { + getCoverBehavior().preDataChanged(coverSide, coverID, aCoverID, coverData, aCoverData, coveredTile.get()); + } + + public void onDataChanged() { + getCoverBehavior().onDataChanged(coverSide, coverID, coverData, coveredTile.get()); + } + + public String getBehaviorDescription() { + return getCoverBehavior().getDescription(coverSide, coverID, coverData, null); + } + + public ModularWindow createWindow(EntityPlayer player) { + final GT_CoverUIBuildContext buildContext = + new GT_CoverUIBuildContext(player, coverID, coverSide, coveredTile.get(), true); + return getCoverBehavior().createWindow(buildContext); + } + + public boolean isGUIClickable() { + return getCoverBehavior().isGUIClickable(coverSide, coverID, coverData, coveredTile.get()); + } + + public boolean hasCoverGUI() { + return getCoverBehavior().hasCoverGUI(); + } + + public boolean useModularUI() { + return getCoverBehavior().useModularUI(); + } + + public boolean letsItemsIn(int aSlot) { + return getCoverBehavior().letsItemsIn(coverSide, coverID, coverData, aSlot, coveredTile.get()); + } + + public boolean letsItemsOut(int aSlot) { + return getCoverBehavior().letsItemsOut(coverSide, coverID, coverData, aSlot, coveredTile.get()); + } + + public boolean letsFluidIn(Fluid aFluid) { + return letsFluidIn(aFluid, coveredTile.get()); + } + + public boolean letsFluidOut(Fluid aFluid) { + return letsFluidOut(aFluid, coveredTile.get()); + } + + public boolean letsFluidIn(Fluid aFluid, ICoverable tile) { + return getCoverBehavior().letsFluidIn(coverSide, coverID, coverData, aFluid, tile); + } + + public boolean letsFluidOut(Fluid aFluid, ICoverable tile) { + return getCoverBehavior().letsFluidOut(coverSide, coverID, coverData, aFluid, tile); + } + + public boolean letsEnergyIn() { + return getCoverBehavior().letsEnergyIn(coverSide, coverID, coverData, coveredTile.get()); + } + + public boolean letsEnergyOut() { + return getCoverBehavior().letsEnergyOut(coverSide, coverID, coverData, coveredTile.get()); + } + + public boolean alwaysLookConnected() { + return getCoverBehavior().alwaysLookConnected(coverSide, coverID, coverData, coveredTile.get()); + } + + public boolean onCoverRightClick(EntityPlayer aPlayer, float aX, float aY, float aZ) { + return getCoverBehavior() + .onCoverRightClick(coverSide, coverID, coverData, coveredTile.get(), aPlayer, aX, aY, aZ); + } + + public boolean onCoverShiftRightClick(EntityPlayer aPlayer) { + return getCoverBehavior().onCoverShiftRightClick(coverSide, coverID, coverData, coveredTile.get(), aPlayer); + } + + public ISerializableObject onCoverScrewdriverClick(EntityPlayer aPlayer, float aX, float aY, float aZ) { + return getCoverBehavior() + .onCoverScrewdriverClick(coverSide, coverID, coverData, coveredTile.get(), aPlayer, aX, aY, aZ); + } + + public Block getFacadeBlock() { + return getCoverBehavior().getFacadeBlock(coverSide, coverID, coverData, coveredTile.get()); + } + + public int getFacadeMeta() { + return getCoverBehavior().getFacadeMeta(coverSide, coverID, coverData, coveredTile.get()); + } +} diff --git a/src/main/java/gregtech/common/covers/GT_Cover_ControlsWork.java b/src/main/java/gregtech/common/covers/GT_Cover_ControlsWork.java index 270a221a08..f45ffbf2e8 100644 --- a/src/main/java/gregtech/common/covers/GT_Cover_ControlsWork.java +++ b/src/main/java/gregtech/common/covers/GT_Cover_ControlsWork.java @@ -1,5 +1,7 @@ package gregtech.common.covers; +import static gregtech.api.enums.GT_Values.ALL_VALID_SIDES; + import com.gtnewhorizons.modularui.api.screen.ModularWindow; import com.gtnewhorizons.modularui.common.widget.TextWidget; import gregtech.api.gui.modularui.GT_CoverUIBuildContext; @@ -168,8 +170,8 @@ public class GT_Cover_ControlsWork extends GT_CoverBehavior implements IControls @Override public boolean isCoverPlaceable(byte aSide, ItemStack aStack, ICoverable aTileEntity) { if (!super.isCoverPlaceable(aSide, aStack, aTileEntity)) return false; - for (byte i = 0; i < 6; i++) { - if (aTileEntity.getCoverBehaviorAtSideNew(i) instanceof IControlsWorkCover) { + for (byte tSide : ALL_VALID_SIDES) { + if (aTileEntity.getCoverBehaviorAtSideNew(tSide) instanceof IControlsWorkCover) { return false; } } diff --git a/src/main/java/gregtech/common/covers/GT_Cover_Conveyor.java b/src/main/java/gregtech/common/covers/GT_Cover_Conveyor.java index dc3bcc4f7b..54e9e50d8b 100644 --- a/src/main/java/gregtech/common/covers/GT_Cover_Conveyor.java +++ b/src/main/java/gregtech/common/covers/GT_Cover_Conveyor.java @@ -58,11 +58,11 @@ public class GT_Cover_Conveyor extends GT_CoverBehavior { return aCoverVariable; } } - TileEntity tTileEntity = aTileEntity.getTileEntityAtSide(aSide); - Object fromEntity = aCoverVariable % 2 == 0 ? aTileEntity : tTileEntity, - toEntity = aCoverVariable % 2 != 0 ? aTileEntity : tTileEntity; - byte fromSide = aCoverVariable % 2 != 0 ? GT_Utility.getOppositeSide(aSide) : aSide, - toSide = aCoverVariable % 2 == 0 ? GT_Utility.getOppositeSide(aSide) : aSide; + final TileEntity tTileEntity = aTileEntity.getTileEntityAtSide(aSide); + final Object fromEntity = aCoverVariable % 2 == 0 ? aTileEntity : tTileEntity; + final Object toEntity = aCoverVariable % 2 != 0 ? aTileEntity : tTileEntity; + final byte fromSide = aCoverVariable % 2 != 0 ? GT_Utility.getOppositeSide(aSide) : aSide; + final byte toSide = aCoverVariable % 2 == 0 ? GT_Utility.getOppositeSide(aSide) : aSide; moveMultipleItemStacks( fromEntity, diff --git a/src/main/java/gregtech/common/covers/GT_Cover_FacadeBase.java b/src/main/java/gregtech/common/covers/GT_Cover_FacadeBase.java index a2707043ef..7c55a9dce8 100644 --- a/src/main/java/gregtech/common/covers/GT_Cover_FacadeBase.java +++ b/src/main/java/gregtech/common/covers/GT_Cover_FacadeBase.java @@ -1,5 +1,7 @@ package gregtech.common.covers; +import static gregtech.api.enums.GT_Values.ALL_VALID_SIDES; + import com.google.common.io.ByteArrayDataInput; import com.gtnewhorizons.modularui.api.drawable.ItemDrawable; import com.gtnewhorizons.modularui.api.screen.ModularWindow; @@ -120,6 +122,7 @@ public abstract class GT_Cover_FacadeBase extends GT_CoverBehaviorBase<GT_Cover_ public void placeCover(byte aSide, ItemStack aCover, ICoverable aTileEntity) { aTileEntity.setCoverIdAndDataAtSide( aSide, GT_Utility.stackToInt(aCover), new FacadeData(GT_Utility.copyAmount(1, aCover), 0)); + if (aTileEntity.isClientSide()) GT_RenderingWorld.getInstance() .register( @@ -193,7 +196,7 @@ public abstract class GT_Cover_FacadeBase extends GT_CoverBehaviorBase<GT_Cover_ @Override protected void onDroppedImpl(byte aSide, int aCoverID, FacadeData aCoverVariable, ICoverable aTileEntity) { if (aTileEntity.isClientSide()) { - for (byte i = 0; i < 6; i++) { + for (byte i : ALL_VALID_SIDES) { if (i == aSide) continue; // since we do not allow multiple type of facade per block, this check would be enough. if (aTileEntity.getCoverBehaviorAtSideNew(i) instanceof GT_Cover_FacadeBase) return; @@ -231,23 +234,20 @@ public abstract class GT_Cover_FacadeBase extends GT_CoverBehaviorBase<GT_Cover_ // to render it correctly require changing GT_Block_Machine to render in both pass, which is not really a good // idea... if (!super.isCoverPlaceable(aSide, aStack, aTileEntity)) return false; - Block targetBlock = getTargetBlock(aStack); + final Block targetBlock = getTargetBlock(aStack); if (targetBlock == null) return false; // we allow one single type of facade on the same block for now // otherwise it's not clear which block this block should impersonate // this restriction can be lifted later by specifying a certain facade as dominate one as an extension to this // class - for (byte i = 0; i < 6; i++) { + for (byte i : ALL_VALID_SIDES) { if (i == aSide) continue; - GT_CoverBehaviorBase<?> behavior = aTileEntity.getCoverBehaviorAtSideNew(i); - if (behavior == null) continue; - Block facadeBlock = behavior.getFacadeBlock( - i, aTileEntity.getCoverIDAtSide(i), aTileEntity.getComplexCoverDataAtSide(i), aTileEntity); + final CoverInfo coverInfo = aTileEntity.getCoverInfoAtSide(i); + if (!coverInfo.isValid()) continue; + final Block facadeBlock = coverInfo.getFacadeBlock(); if (facadeBlock == null) continue; if (facadeBlock != targetBlock) return false; - if (behavior.getFacadeMeta( - i, aTileEntity.getCoverIDAtSide(i), aTileEntity.getComplexCoverDataAtSide(i), aTileEntity) - != getTargetMeta(aStack)) return false; + if (coverInfo.getFacadeMeta() != getTargetMeta(aStack)) return false; } return true; } @@ -272,7 +272,7 @@ public abstract class GT_Cover_FacadeBase extends GT_CoverBehaviorBase<GT_Cover_ @Nonnull @Override public NBTBase saveDataToNBT() { - NBTTagCompound tag = new NBTTagCompound(); + final NBTTagCompound tag = new NBTTagCompound(); if (mStack != null) tag.setTag("mStack", mStack.writeToNBT(new NBTTagCompound())); tag.setByte("mFlags", (byte) mFlags); return tag; @@ -286,7 +286,7 @@ public abstract class GT_Cover_FacadeBase extends GT_CoverBehaviorBase<GT_Cover_ @Override public void loadDataFromNBT(NBTBase aNBT) { - NBTTagCompound tag = (NBTTagCompound) aNBT; + final NBTTagCompound tag = (NBTTagCompound) aNBT; mStack = ItemStack.loadItemStackFromNBT(tag.getCompoundTag("mStack")); mFlags = tag.getByte("mFlags"); } diff --git a/src/main/java/gregtech/common/covers/GT_Cover_RedstoneTransmitterExternal.java b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneTransmitterExternal.java index 92445fa038..984e817665 100644 --- a/src/main/java/gregtech/common/covers/GT_Cover_RedstoneTransmitterExternal.java +++ b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneTransmitterExternal.java @@ -1,5 +1,7 @@ package gregtech.common.covers; +import static gregtech.api.enums.GT_Values.ALL_VALID_SIDES; + import gregtech.api.GregTech_API; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.covers.IControlsWorkCover; @@ -53,8 +55,8 @@ public class GT_Cover_RedstoneTransmitterExternal extends GT_Cover_RedstoneWirel @Override public boolean isCoverPlaceable(byte aSide, ItemStack aStack, ICoverable aTileEntity) { if (!super.isCoverPlaceable(aSide, aStack, aTileEntity)) return false; - for (byte i = 0; i < 6; i++) { - if (aTileEntity.getCoverBehaviorAtSideNew(i) instanceof IControlsWorkCover) { + for (byte tSide : ALL_VALID_SIDES) { + if (aTileEntity.getCoverBehaviorAtSideNew(tSide) instanceof IControlsWorkCover) { return false; } } diff --git a/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_OutputBus_ME.java b/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_OutputBus_ME.java index ed0ca51231..2014138b71 100644 --- a/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_OutputBus_ME.java +++ b/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_OutputBus_ME.java @@ -129,13 +129,7 @@ public class GT_MetaTileEntity_Hatch_OutputBus_ME extends GT_MetaTileEntity_Hatc @Override public void onScrewdriverRightClick(byte aSide, EntityPlayer aPlayer, float aX, float aY, float aZ) { - if (!getBaseMetaTileEntity() - .getCoverBehaviorAtSideNew(aSide) - .isGUIClickable( - aSide, - getBaseMetaTileEntity().getCoverIDAtSide(aSide), - getBaseMetaTileEntity().getComplexCoverDataAtSide(aSide), - getBaseMetaTileEntity())) return; + if (!getBaseMetaTileEntity().getCoverInfoAtSide(aSide).isGUIClickable()) return; infiniteCache = !infiniteCache; GT_Utility.sendChatToPlayer( aPlayer, StatCollector.translateToLocal("GT5U.hatch.infiniteCache." + infiniteCache)); diff --git a/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_Output_ME.java b/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_Output_ME.java index 940497ede3..bdb1ebbbb4 100644 --- a/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_Output_ME.java +++ b/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_Output_ME.java @@ -151,13 +151,7 @@ public class GT_MetaTileEntity_Hatch_Output_ME extends GT_MetaTileEntity_Hatch_O @Override public void onScrewdriverRightClick(byte aSide, EntityPlayer aPlayer, float aX, float aY, float aZ) { // Don't allow to lock fluid in me fluid hatch - if (!getBaseMetaTileEntity() - .getCoverBehaviorAtSideNew(aSide) - .isGUIClickable( - aSide, - getBaseMetaTileEntity().getCoverIDAtSide(aSide), - getBaseMetaTileEntity().getComplexCoverDataAtSide(aSide), - getBaseMetaTileEntity())) return; + if (!getBaseMetaTileEntity().getCoverInfoAtSide(aSide).isGUIClickable()) return; infiniteCache = !infiniteCache; GT_Utility.sendChatToPlayer( aPlayer, StatCollector.translateToLocal("GT5U.hatch.infiniteCacheFluid." + infiniteCache)); diff --git a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_IndustrialApiary.java b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_IndustrialApiary.java index 557b01fbb0..516d2dda66 100644 --- a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_IndustrialApiary.java +++ b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_IndustrialApiary.java @@ -1,5 +1,6 @@ package gregtech.common.tileentities.machines.basic; +import static gregtech.api.enums.GT_Values.ALL_VALID_SIDES; import static gregtech.api.enums.GT_Values.AuthorKuba; import static gregtech.api.enums.GT_Values.V; import static gregtech.api.enums.Textures.BlockIcons.*; @@ -179,8 +180,8 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM openGUI(aBaseMetaTileEntity, aPlayer); return true; } - for (byte i = 0; i < 6; i++) { - if (aBaseMetaTileEntity.getAirAtSide(i)) { + for (byte tSide : ALL_VALID_SIDES) { + if (aBaseMetaTileEntity.getAirAtSide(tSide)) { openGUI(aBaseMetaTileEntity, aPlayer); return true; } @@ -230,38 +231,38 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM updateModifiers(); if (canWork()) { - ItemStack queen = getQueen(); + final ItemStack queen = getQueen(); usedQueen = queen.copy(); if (beeRoot.getType(queen) == EnumBeeType.QUEEN) { - IBee bee = beeRoot.getMember(queen); + final IBee bee = beeRoot.getMember(queen); usedQueenBee = bee; // LIFE CYCLES float mod = this.getLifespanModifier(null, null, 1.f); - IBeekeepingMode mode = beeRoot.getBeekeepingMode(this.getWorld()); - IBeeModifier beemodifier = mode.getBeeModifier(); + final IBeekeepingMode mode = beeRoot.getBeekeepingMode(this.getWorld()); + final IBeeModifier beemodifier = mode.getBeeModifier(); mod *= beemodifier.getLifespanModifier(null, null, 1.f); - int h = bee.getHealth(); + final int h = bee.getHealth(); mod = 1.f / mod; - float cycles = h / mod; + final float cycles = h / mod; // PRODUCTS - HashMap<GT_Utility.ItemId, ItemStack> pollen = new HashMap<>(); + final HashMap<GT_Utility.ItemId, ItemStack> pollen = new HashMap<>(); if (isRetrievingPollen && floweringMod > 0f) { - int icycles = + final int icycles = (int) cycles + (getWorld().rand.nextFloat() < (cycles - (float) ((int) cycles)) ? 1 : 0); for (int z = 0; z < icycles; z++) { - IIndividual p = bee.retrievePollen(this); + final IIndividual p = bee.retrievePollen(this); if (p != null) { - ItemStack s = + final ItemStack s = p.getGenome().getSpeciesRoot().getMemberStack(p, EnumGermlingType.POLLEN.ordinal()); if (s != null) { - GT_Utility.ItemId id = GT_Utility.ItemId.createNoCopy(s); + final GT_Utility.ItemId id = GT_Utility.ItemId.createNoCopy(s); pollen.computeIfAbsent(id, k -> { - ItemStack ns = s.copy(); + final ItemStack ns = s.copy(); ns.stackSize = 0; return ns; }); @@ -274,19 +275,19 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM retrievedpollen = null; retrievingPollenInThisOperation = isRetrievingPollen; - IBeeGenome genome = bee.getGenome(); - IAlleleBeeSpecies primary = genome.getPrimary(); - IAlleleBeeSpecies secondary = genome.getSecondary(); + final IBeeGenome genome = bee.getGenome(); + final IAlleleBeeSpecies primary = genome.getPrimary(); + final IAlleleBeeSpecies secondary = genome.getSecondary(); - float speed = genome.getSpeed(); - float prodMod = getProductionModifier(null, 1f) * beemodifier.getProductionModifier(null, 1.f); + final float speed = genome.getSpeed(); + final float prodMod = getProductionModifier(null, 1f) * beemodifier.getProductionModifier(null, 1.f); - HashMap<GT_Utility.ItemId, Float> drops = new HashMap<>(); - HashMap<GT_Utility.ItemId, ItemStack> dropstacks = new HashMap<>(); + final HashMap<GT_Utility.ItemId, Float> drops = new HashMap<>(); + final HashMap<GT_Utility.ItemId, ItemStack> dropstacks = new HashMap<>(); for (Map.Entry<ItemStack, Float> entry : primary.getProductChances().entrySet()) { - GT_Utility.ItemId id = GT_Utility.ItemId.createNoCopy(entry.getKey()); + final GT_Utility.ItemId id = GT_Utility.ItemId.createNoCopy(entry.getKey()); drops.merge( id, Bee.getFinalChance(entry.getValue(), speed, prodMod, 8f) @@ -297,7 +298,7 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM } for (Map.Entry<ItemStack, Float> entry : secondary.getProductChances().entrySet()) { - GT_Utility.ItemId id = GT_Utility.ItemId.createNoCopy(entry.getKey()); + final GT_Utility.ItemId id = GT_Utility.ItemId.createNoCopy(entry.getKey()); drops.merge( id, Bee.getFinalChance(entry.getValue() / 2f, speed, prodMod, 8f) @@ -309,7 +310,7 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM if (primary.isJubilant(genome, this) && secondary.isJubilant(genome, this)) for (Map.Entry<ItemStack, Float> entry : primary.getSpecialtyChances().entrySet()) { - GT_Utility.ItemId id = GT_Utility.ItemId.createNoCopy(entry.getKey()); + final GT_Utility.ItemId id = GT_Utility.ItemId.createNoCopy(entry.getKey()); drops.merge( id, Bee.getFinalChance(entry.getValue(), speed, prodMod, 8f) @@ -320,30 +321,30 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM } int i = 0; - int imax = mOutputItems.length; + final int imax = mOutputItems.length; - IApiaristTracker breedingTracker = beeRoot.getBreedingTracker(getWorld(), getOwner()); + final IApiaristTracker breedingTracker = beeRoot.getBreedingTracker(getWorld(), getOwner()); if (!bee.canSpawn()) { - ItemStack convert = new ItemStack(PluginApiculture.items.beePrincessGE); - NBTTagCompound nbttagcompound = new NBTTagCompound(); + final ItemStack convert = new ItemStack(PluginApiculture.items.beePrincessGE); + final NBTTagCompound nbttagcompound = new NBTTagCompound(); queen.writeToNBT(nbttagcompound); convert.setTagCompound(nbttagcompound); this.mOutputItems[i++] = convert; } else { - IBee b = bee.spawnPrincess(this); + final IBee b = bee.spawnPrincess(this); if (b != null) { - ItemStack princess = beeRoot.getMemberStack(b, EnumBeeType.PRINCESS.ordinal()); + final ItemStack princess = beeRoot.getMemberStack(b, EnumBeeType.PRINCESS.ordinal()); breedingTracker.registerPrincess(b); this.mOutputItems[i++] = princess; } - IBee[] d = bee.spawnDrones(this); + final IBee[] d = bee.spawnDrones(this); if (d != null && d.length > 0) { - HashMap<GT_Utility.ItemId, ItemStack> drones = new HashMap<>(d.length); + final HashMap<GT_Utility.ItemId, ItemStack> drones = new HashMap<>(d.length); for (IBee dr : d) { - ItemStack drone = beeRoot.getMemberStack(dr, EnumBeeType.DRONE.ordinal()); + final ItemStack drone = beeRoot.getMemberStack(dr, EnumBeeType.DRONE.ordinal()); breedingTracker.registerDrone(dr); - GT_Utility.ItemId drid = GT_Utility.ItemId.createNoCopy(drone); + final GT_Utility.ItemId drid = GT_Utility.ItemId.createNoCopy(drone); if (drones.containsKey(drid)) drones.get(drid).stackSize += drone.stackSize; else { this.mOutputItems[i++] = drone; @@ -353,12 +354,12 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM } } - int imin = i; + final int imin = i; setQueen(null); for (Map.Entry<GT_Utility.ItemId, Float> entry : drops.entrySet()) { - ItemStack s = dropstacks.get(entry.getKey()).copy(); + final ItemStack s = dropstacks.get(entry.getKey()).copy(); s.stackSize = entry.getValue().intValue() + (getWorld().rand.nextFloat() < (entry.getValue() @@ -383,8 +384,8 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM usedBeeLife = cycles * (float) beeCycleLength; this.mMaxProgresstime = (int) usedBeeLife; - int timemaxdivider = this.mMaxProgresstime / 100; - int useddivider = 1 << this.mSpeed; + final int timemaxdivider = this.mMaxProgresstime / 100; + final int useddivider = 1 << this.mSpeed; int actualdivider = useddivider; this.mMaxProgresstime /= Math.min(actualdivider, timemaxdivider); actualdivider /= Math.min(actualdivider, timemaxdivider); @@ -403,17 +404,17 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM this.mMaxProgresstime = 100; this.mProgresstime = 0; - int useddivider = Math.min(100, 1 << this.mSpeed); + final int useddivider = Math.min(100, 1 << this.mSpeed); this.mMaxProgresstime /= useddivider; this.mEUt = (int) ((float) baseEUtUsage * this.energyMod * useddivider); if (useddivider == 2) this.mEUt += 32; else if (useddivider > 2) this.mEUt += (32 * (useddivider << (this.mSpeed - 2))); - IBee princess = beeRoot.getMember(getQueen()); + final IBee princess = beeRoot.getMember(getQueen()); usedQueenBee = princess; - IBee drone = beeRoot.getMember(getDrone()); + final IBee drone = beeRoot.getMember(getDrone()); princess.mate(drone); - NBTTagCompound nbttagcompound = new NBTTagCompound(); + final NBTTagCompound nbttagcompound = new NBTTagCompound(); princess.writeToNBT(nbttagcompound); this.mOutputItems[0] = new ItemStack(PluginApiculture.items.beeQueenGE); this.mOutputItems[0].setTagCompound(nbttagcompound); @@ -446,8 +447,8 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM } private void doEffect() { - IBeeGenome genome = usedQueenBee.getGenome(); - IAlleleBeeEffect effect = genome.getEffect(); + final IBeeGenome genome = usedQueenBee.getGenome(); + final IAlleleBeeEffect effect = genome.getEffect(); if (!(effect instanceof IAlleleBeeAcceleratableEffect)) { effectData[0] = effect.validateStorage(effectData[0]); effect.doEffect(genome, effectData[0], this); @@ -455,7 +456,7 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM if (!effect.isCombinable()) return; - IAlleleBeeEffect secondary = (IAlleleBeeEffect) genome.getInactiveAllele(EnumBeeChromosome.EFFECT); + final IAlleleBeeEffect secondary = (IAlleleBeeEffect) genome.getInactiveAllele(EnumBeeChromosome.EFFECT); if (!secondary.isCombinable()) return; if (!(secondary instanceof IAlleleBeeAcceleratableEffect)) { @@ -465,8 +466,8 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM } private void doAcceleratedEffects() { - IBeeGenome genome = usedQueenBee.getGenome(); - IAlleleBeeEffect effect = genome.getEffect(); + final IBeeGenome genome = usedQueenBee.getGenome(); + final IAlleleBeeEffect effect = genome.getEffect(); try { if (AlleleBeeEffectThrottledField == null) { AlleleBeeEffectThrottledField = AlleleEffectThrottled.class.getDeclaredField("throttle"); @@ -487,7 +488,7 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM if (!effect.isCombinable()) return; - IAlleleBeeEffect secondary = (IAlleleBeeEffect) genome.getInactiveAllele(EnumBeeChromosome.EFFECT); + final IAlleleBeeEffect secondary = (IAlleleBeeEffect) genome.getInactiveAllele(EnumBeeChromosome.EFFECT); if (!secondary.isCombinable()) return; if (secondary instanceof IAlleleBeeAcceleratableEffect) { @@ -521,7 +522,7 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM if (usedQueen != null) { if (aTick % 2 == 0) { // FX on client, effect on server - IBee bee = beeRoot.getMember(usedQueen); + final IBee bee = beeRoot.getMember(usedQueen); effectData = bee.doFX(effectData, this); } } @@ -540,7 +541,7 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM || aTick % 600 == 0 || aBaseMetaTileEntity.hasWorkJustBeenEnabled()) && hasEnoughEnergyToCheckRecipe()) { - int check = checkRecipe(); + final int check = checkRecipe(); if (check == FOUND_AND_SUCCESSFULLY_USED_RECIPE) { aBaseMetaTileEntity.setActive(true); } @@ -615,9 +616,9 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM aBaseMetaTileEntity.setActive(false); if (doesAutoOutput() && !isOutputEmpty() && aBaseMetaTileEntity.getFrontFacing() != mMainFacing) { - TileEntity tTileEntity2 = + final TileEntity tTileEntity2 = aBaseMetaTileEntity.getTileEntityAtSide(aBaseMetaTileEntity.getFrontFacing()); - long tStoredEnergy = aBaseMetaTileEntity.getUniversalEnergyStored(); + final long tStoredEnergy = aBaseMetaTileEntity.getUniversalEnergyStored(); int tMaxStacks = (int) (tStoredEnergy / 64L); if (tMaxStacks > mOutputItems.length) tMaxStacks = mOutputItems.length; @@ -670,7 +671,7 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM if (!GT_ApiaryUpgrade.isUpgrade(aStack)) return false; for (int i = drone + 1; i < drone + 1 + 4; i++) { if (aIndex == i) continue; - ItemStack s = getStackInSlot(i); + final ItemStack s = getStackInSlot(i); if (s == null) continue; if (GT_Utility.areStacksEqual(getStackInSlot(i), aStack)) return false; if (GT_ApiaryUpgrade.isUpgrade(aStack)) { @@ -860,7 +861,7 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM private int flowerBlockMeta; private boolean checkFlower(IBee bee) { - String flowerType = bee.getGenome().getFlowerProvider().getFlowerType(); + final String flowerType = bee.getGenome().getFlowerProvider().getFlowerType(); if (!this.flowerType.equals(flowerType)) flowercoords = null; if (flowercoords != null) { if (getWorld().getBlock(flowercoords.posX, flowercoords.posY, flowercoords.posZ) != flowerBlock @@ -890,7 +891,7 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM clearErrors(); if (queen == null) return true; // Reloaded the chunk ? if (beeRoot.isMember(queen, EnumBeeType.PRINCESS.ordinal())) return true; - IBee bee = beeRoot.getMember(queen); + final IBee bee = beeRoot.getMember(queen); for (IErrorState err : bee.getCanWork(this)) setCondition(true, err); setCondition(!checkFlower(bee), EnumErrorCode.NO_FLOWER); return !hasErrors(); @@ -898,13 +899,13 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM private boolean canWork() { clearErrors(); - EnumBeeType beeType = beeRoot.getType(getQueen()); + final EnumBeeType beeType = beeRoot.getType(getQueen()); if (beeType == EnumBeeType.PRINCESS) { setCondition(!beeRoot.isDrone(getDrone()), EnumErrorCode.NO_DRONE); return !hasErrors(); } if (beeType == EnumBeeType.QUEEN) { - IBee bee = beeRoot.getMember(getQueen()); + final IBee bee = beeRoot.getMember(getQueen()); for (IErrorState err : bee.getCanWork(this)) setCondition(true, err); setCondition(!checkFlower(bee), EnumErrorCode.NO_FLOWER); return !hasErrors(); @@ -936,12 +937,12 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM private int maxspeed = 0; public void updateModifiers() { - GT_ApiaryModifier mods = new GT_ApiaryModifier(); + final GT_ApiaryModifier mods = new GT_ApiaryModifier(); for (int i = 2; i < 2 + 4; i++) { - ItemStack s = getInputAt(i); + final ItemStack s = getInputAt(i); if (s == null) continue; if (GT_ApiaryUpgrade.isUpgrade(s)) { - GT_ApiaryUpgrade upgrade = GT_ApiaryUpgrade.getUpgrade(s); + final GT_ApiaryUpgrade upgrade = GT_ApiaryUpgrade.getUpgrade(s); upgrade.applyModifiers(mods, s); } } @@ -1124,25 +1125,26 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM .widget(new DrawableWidget() .setDrawable(GT_UITextures.PICTURE_INFORMATION) .setGTTooltip(() -> { - String energyreq = GT_Utility.formatNumbers( + final String energyreq = GT_Utility.formatNumbers( (int) ((float) GT_MetaTileEntity_IndustrialApiary.baseEUtUsage * getEnergyModifier() * getAcceleration()) + getAdditionalEnergyUsage()); - String Temp = StatCollector.translateToLocal( + final String Temp = StatCollector.translateToLocal( getTemperature().getName()); - String Hum = + final String Hum = StatCollector.translateToLocal(getHumidity().getName()); if (getUsedQueen() != null && BeeManager.beeRoot.isMember(getUsedQueen(), EnumBeeType.QUEEN.ordinal())) { - IBee bee = BeeManager.beeRoot.getMember(getUsedQueen()); + final IBee bee = BeeManager.beeRoot.getMember(getUsedQueen()); if (bee.isAnalyzed()) { - IBeeGenome genome = bee.getGenome(); - IBeeModifier mod = BeeManager.beeRoot + final IBeeGenome genome = bee.getGenome(); + final IBeeModifier mod = BeeManager.beeRoot .getBeekeepingMode(getWorld()) .getBeeModifier(); - float tmod = getTerritoryModifier(null, 1f) * mod.getTerritoryModifier(null, 1f); - int[] t = Arrays.stream(genome.getTerritory()) + final float tmod = + getTerritoryModifier(null, 1f) * mod.getTerritoryModifier(null, 1f); + final int[] t = Arrays.stream(genome.getTerritory()) .map(i -> (int) ((float) i * tmod)) .toArray(); return mTooltipCache.getUncachedTooltipData( @@ -1279,7 +1281,7 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM } private int getAdditionalEnergyUsage() { - int accelerated = getAcceleration(); + final int accelerated = getAcceleration(); int energyusage = 0; if (accelerated == 2) energyusage = 32; else if (accelerated > 2) energyusage = 32 * accelerated << (mSpeed - 2); @@ -1322,10 +1324,10 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM if (aShifthold == 5) return null; if (aShifthold != 0) return super.slotClick(aSlotNumber, aMouseclick, aShifthold, aPlayer); if (aMouseclick > 1) return super.slotClick(aSlotNumber, aMouseclick, aShifthold, aPlayer); - ItemStack s = aPlayer.inventory.getItemStack(); + final ItemStack s = aPlayer.inventory.getItemStack(); if (s == null) return super.slotClick(aSlotNumber, aMouseclick, aShifthold, aPlayer); - Slot slot = getSlot(aSlotNumber); - ItemStack slotStack = slot.getStack(); + final Slot slot = getSlot(aSlotNumber); + final ItemStack slotStack = slot.getStack(); if (slotStack != null && !GT_Utility.areStacksEqual(slotStack, s)) return null; // super would replace item if (slotStack == null && !slot.isItemValid(s)) return super.slotClick(aSlotNumber, aMouseclick, aShifthold, aPlayer); @@ -1336,23 +1338,23 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM if (max == 0) return null; if (aMouseclick == 1) max = 1; if (max == s.stackSize) return super.slotClick(aSlotNumber, aMouseclick, aShifthold, aPlayer); - ItemStack newStack = s.splitStack(s.stackSize - max); - ItemStack result = super.slotClick(aSlotNumber, aMouseclick, aShifthold, aPlayer); + final ItemStack newStack = s.splitStack(s.stackSize - max); + final ItemStack result = super.slotClick(aSlotNumber, aMouseclick, aShifthold, aPlayer); aPlayer.inventory.setItemStack(newStack); return result; } @Override public ItemStack transferStackInSlot(EntityPlayer aPlayer, int aSlotIndex) { - Slot s = getSlot(aSlotIndex); + final Slot s = getSlot(aSlotIndex); if (s == null) return super.transferStackInSlot(aPlayer, aSlotIndex); if (aSlotIndex >= playerInventorySlot) return super.transferStackInSlot(aPlayer, aSlotIndex); - ItemStack aStack = s.getStack(); + final ItemStack aStack = s.getStack(); if (aStack == null) return super.transferStackInSlot(aPlayer, aSlotIndex); if (!GT_ApiaryUpgrade.isUpgrade(aStack)) return super.transferStackInSlot(aPlayer, aSlotIndex); for (int i = playerInventorySlot + 2; i < playerInventorySlot + 2 + 4; i++) { - Slot iSlot = getSlot(i); - ItemStack iStack = iSlot.getStack(); + final Slot iSlot = getSlot(i); + final ItemStack iStack = iSlot.getStack(); if (iStack == null) { if (!iSlot.isItemValid(aStack)) continue; } else { @@ -1361,7 +1363,7 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM int max = GT_ApiaryUpgrade.getUpgrade(aStack).getMaxNumber(); if (iStack == null) { max = Math.min(max, aStack.stackSize); - ItemStack newstack = aStack.splitStack(max); + final ItemStack newstack = aStack.splitStack(max); iSlot.putStack(newstack); } else { max = Math.max(0, max - iStack.stackSize); diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_Cleanroom.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_Cleanroom.java index 0006c8b7d5..5e6651cdad 100644 --- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_Cleanroom.java +++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_Cleanroom.java @@ -1,5 +1,6 @@ package gregtech.common.tileentities.machines.multi; +import static gregtech.api.enums.GT_Values.ALL_VALID_SIDES; import static gregtech.api.enums.GT_Values.debugCleanroom; import static gregtech.api.enums.Textures.BlockIcons.*; @@ -45,6 +46,7 @@ public class GT_MetaTileEntity_Cleanroom extends GT_MetaTileEntity_TooltipMultiB return new GT_MetaTileEntity_Cleanroom(mName); } + @Override protected GT_Multiblock_Tooltip_Builder createTooltip() { final GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder(); tt.addMachineType("Cleanroom") @@ -104,7 +106,7 @@ public class GT_MetaTileEntity_Cleanroom extends GT_MetaTileEntity_TooltipMultiB int mDoorCount = 0; int mHullCount = 0; int mPlascreteCount = 0; - HashMap<String, Integer> otherBlocks = new HashMap<>(); + final HashMap<String, Integer> otherBlocks = new HashMap<>(); boolean doorState = false; this.mUpdate = 100; @@ -112,8 +114,8 @@ public class GT_MetaTileEntity_Cleanroom extends GT_MetaTileEntity_TooltipMultiB GT_Log.out.println("Cleanroom: Checking machine"); } for (int i = 1; i < 8; i++) { - Block tBlock = aBaseMetaTileEntity.getBlockOffset(i, 0, 0); - int tMeta = aBaseMetaTileEntity.getMetaIDOffset(i, 0, 0); + final Block tBlock = aBaseMetaTileEntity.getBlockOffset(i, 0, 0); + final int tMeta = aBaseMetaTileEntity.getMetaIDOffset(i, 0, 0); if (tBlock != GregTech_API.sBlockCasings3 || tMeta != 11) { if (tBlock == GregTech_API.sBlockReinforced || tMeta == 2) { x = i; @@ -127,8 +129,8 @@ public class GT_MetaTileEntity_Cleanroom extends GT_MetaTileEntity_TooltipMultiB } } for (int i = 1; i < 8; i++) { - Block tBlock = aBaseMetaTileEntity.getBlockOffset(0, 0, i); - int tMeta = aBaseMetaTileEntity.getMetaIDOffset(0, 0, i); + final Block tBlock = aBaseMetaTileEntity.getBlockOffset(0, 0, i); + final int tMeta = aBaseMetaTileEntity.getMetaIDOffset(0, 0, i); if (tBlock != GregTech_API.sBlockCasings3 || tMeta != 11) { if (tBlock == GregTech_API.sBlockReinforced || tMeta == 2) { z = i; @@ -145,8 +147,8 @@ public class GT_MetaTileEntity_Cleanroom extends GT_MetaTileEntity_TooltipMultiB for (int i = -x + 1; i < x; i++) { for (int j = -z + 1; j < z; j++) { if (i == 0 && j == 0) continue; - Block tBlock = aBaseMetaTileEntity.getBlockOffset(j, 0, i); - int tMeta = aBaseMetaTileEntity.getMetaIDOffset(j, 0, i); + final Block tBlock = aBaseMetaTileEntity.getBlockOffset(j, 0, i); + final int tMeta = aBaseMetaTileEntity.getMetaIDOffset(j, 0, i); if (tBlock != GregTech_API.sBlockCasings3 && tMeta != 11) { return false; } @@ -154,8 +156,8 @@ public class GT_MetaTileEntity_Cleanroom extends GT_MetaTileEntity_TooltipMultiB } for (int i = -1; i > -16; i--) { - Block tBlock = aBaseMetaTileEntity.getBlockOffset(x, i, z); - int tMeta = aBaseMetaTileEntity.getMetaIDOffset(x, i, z); + final Block tBlock = aBaseMetaTileEntity.getBlockOffset(x, i, z); + final int tMeta = aBaseMetaTileEntity.getMetaIDOffset(x, i, z); if (tBlock != GregTech_API.sBlockReinforced || tMeta != 2) { y = i + 1; break; @@ -193,7 +195,7 @@ public class GT_MetaTileEntity_Cleanroom extends GT_MetaTileEntity_TooltipMultiB } else if (tBlock == GregTech_API.sBlockReinforced && tMeta == 2) { mPlascreteCount++; } else { - IGregTechTileEntity tTileEntity = + final IGregTechTileEntity tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(dX, dY, dZ); if ((!this.addMaintenanceToMachineList(tTileEntity, 210)) && (!this.addEnergyInputToMachineList(tTileEntity, 210))) { @@ -209,7 +211,7 @@ public class GT_MetaTileEntity_Cleanroom extends GT_MetaTileEntity_TooltipMultiB mDoorCount++; } else { if (tTileEntity != null) { - IMetaTileEntity aMetaTileEntity = tTileEntity.getMetaTileEntity(); + final IMetaTileEntity aMetaTileEntity = tTileEntity.getMetaTileEntity(); if (aMetaTileEntity == null) { if (debugCleanroom) { GT_Log.out.println("Cleanroom: Missing block? Not a aMetaTileEntity"); @@ -255,9 +257,9 @@ public class GT_MetaTileEntity_Cleanroom extends GT_MetaTileEntity_TooltipMultiB return false; } if (mPlascreteCount < 20) return false; - float ratio = (((float) mPlascreteCount) / 100f); + final float ratio = (((float) mPlascreteCount) / 100f); for (Map.Entry<String, Integer> e : otherBlocks.entrySet()) { - ConfigEntry ce = config.get(e.getKey()); + final ConfigEntry ce = config.get(e.getKey()); if (ce.allowedCount > 0) { // count has priority if (e.getValue() > ce.allowedCount) return false; } else if (e.getValue() > ratio * ce.percentage) return false; @@ -268,9 +270,9 @@ public class GT_MetaTileEntity_Cleanroom extends GT_MetaTileEntity_TooltipMultiB if (doorState) { this.mEfficiency = Math.max(0, this.mEfficiency - 200); } - for (byte i = 0; i < 6; i++) { - byte t = (byte) Math.max(1, (byte) (15 / (10000f / this.mEfficiency))); - aBaseMetaTileEntity.setInternalOutputRedstoneSignal(i, t); + for (byte tSide : ALL_VALID_SIDES) { + final byte t = (byte) Math.max(1, (byte) (15 / (10000f / this.mEfficiency))); + aBaseMetaTileEntity.setInternalOutputRedstoneSignal(tSide, t); } this.mHeight = -y; return true; @@ -430,7 +432,7 @@ public class GT_MetaTileEntity_Cleanroom extends GT_MetaTileEntity_TooltipMultiB public static void loadConfig(Configuration cfg) { if (!cfg.hasCategory(category)) setDefaultConfigValues(cfg); for (ConfigCategory cc : cfg.getCategory(category).getChildren()) { - String name = cc.get("Name").getString(); + final String name = cc.get("Name").getString(); if (cc.containsKey("Count")) { if (cc.containsKey("Meta")) config.put( |