From 1b820de08a05070909a267e17f033fcf58ac8710 Mon Sep 17 00:00:00 2001 From: NotAPenguin Date: Mon, 2 Sep 2024 23:17:17 +0200 Subject: The Great Renaming (#3014) * move kekztech to a single root dir * move detrav to a single root dir * move gtnh-lanthanides to a single root dir * move tectech and delete some gross reflection in gt++ * remove more reflection inside gt5u * delete more reflection in gt++ * fix imports * move bartworks and bwcrossmod * fix proxies * move galactigreg and ggfab * move gtneioreplugin * try to fix gt++ bee loader * apply the rename rules to BW * apply rename rules to bwcrossmod * apply rename rules to detrav scanner mod * apply rename rules to galacticgreg * apply rename rules to ggfab * apply rename rules to goodgenerator * apply rename rules to gtnh-lanthanides * apply rename rules to gt++ * apply rename rules to kekztech * apply rename rules to kubatech * apply rename rules to tectech * apply rename rules to gt apply the rename rules to gt * fix tt import * fix mui hopefully * fix coremod except intergalactic * rename assline recipe class * fix a class name i stumbled on * rename StructureUtility to GTStructureUtility to prevent conflict with structurelib * temporary rename of GTTooltipDataCache to old name * fix gt client/server proxy names --- .../GT_MetaTileEntity_DigitalChestBase.java | 559 ----------------- .../storage/GT_MetaTileEntity_DigitalTankBase.java | 694 --------------------- .../storage/GT_MetaTileEntity_Locker.java | 283 --------- .../storage/GT_MetaTileEntity_QuantumChest.java | 102 --- .../storage/GT_MetaTileEntity_QuantumTank.java | 55 -- .../storage/GT_MetaTileEntity_SuperChest.java | 30 - .../storage/GT_MetaTileEntity_SuperTank.java | 54 -- .../tileentities/storage/MTEDigitalChestBase.java | 556 +++++++++++++++++ .../tileentities/storage/MTEDigitalTankBase.java | 693 ++++++++++++++++++++ .../common/tileentities/storage/MTELocker.java | 284 +++++++++ .../tileentities/storage/MTEQuantumChest.java | 102 +++ .../tileentities/storage/MTEQuantumTank.java | 55 ++ .../common/tileentities/storage/MTESuperChest.java | 30 + .../common/tileentities/storage/MTESuperTank.java | 54 ++ 14 files changed, 1774 insertions(+), 1777 deletions(-) delete mode 100644 src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalChestBase.java delete mode 100644 src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalTankBase.java delete mode 100644 src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_Locker.java delete mode 100644 src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_QuantumChest.java delete mode 100644 src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_QuantumTank.java delete mode 100644 src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_SuperChest.java delete mode 100644 src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_SuperTank.java create mode 100644 src/main/java/gregtech/common/tileentities/storage/MTEDigitalChestBase.java create mode 100644 src/main/java/gregtech/common/tileentities/storage/MTEDigitalTankBase.java create mode 100644 src/main/java/gregtech/common/tileentities/storage/MTELocker.java create mode 100644 src/main/java/gregtech/common/tileentities/storage/MTEQuantumChest.java create mode 100644 src/main/java/gregtech/common/tileentities/storage/MTEQuantumTank.java create mode 100644 src/main/java/gregtech/common/tileentities/storage/MTESuperChest.java create mode 100644 src/main/java/gregtech/common/tileentities/storage/MTESuperTank.java (limited to 'src/main/java/gregtech/common/tileentities/storage') diff --git a/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalChestBase.java b/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalChestBase.java deleted file mode 100644 index 1576f61ff8..0000000000 --- a/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalChestBase.java +++ /dev/null @@ -1,559 +0,0 @@ -package gregtech.common.tileentities.storage; - -import static gregtech.api.enums.Textures.BlockIcons.MACHINE_CASINGS; -import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_SCHEST; -import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_SCHEST_GLOW; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.StatCollector; -import net.minecraft.world.World; -import net.minecraftforge.common.util.Constants; -import net.minecraftforge.common.util.ForgeDirection; - -import com.gtnewhorizons.modularui.api.NumberFormatMUI; -import com.gtnewhorizons.modularui.api.screen.ModularWindow; -import com.gtnewhorizons.modularui.api.screen.UIBuildContext; -import com.gtnewhorizons.modularui.common.widget.DrawableWidget; -import com.gtnewhorizons.modularui.common.widget.FakeSyncWidget; -import com.gtnewhorizons.modularui.common.widget.SlotWidget; -import com.gtnewhorizons.modularui.common.widget.TextWidget; - -import appeng.api.storage.IMEMonitor; -import appeng.api.storage.IMEMonitorHandlerReceiver; -import appeng.api.storage.StorageChannel; -import appeng.api.storage.data.IAEItemStack; -import appeng.api.storage.data.IItemList; -import appeng.util.item.AEItemStack; -import appeng.util.item.ItemList; -import gregtech.api.enums.GT_Values; -import gregtech.api.gui.modularui.GT_UIInfos; -import gregtech.api.gui.modularui.GT_UITextures; -import gregtech.api.interfaces.ITexture; -import gregtech.api.interfaces.modularui.IAddUIWidgets; -import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_TieredMachineBlock; -import gregtech.api.objects.AE2DigitalChestHandler; -import gregtech.api.render.TextureFactory; -import gregtech.api.util.GT_LanguageManager; -import gregtech.api.util.GT_Utility; -import mcp.mobius.waila.api.IWailaConfigHandler; -import mcp.mobius.waila.api.IWailaDataAccessor; - -public abstract class GT_MetaTileEntity_DigitalChestBase extends GT_MetaTileEntity_TieredMachineBlock - implements IMEMonitor, IAddUIWidgets { - - protected boolean mVoidOverflow = false; - protected boolean mDisableFilter; - private Map, Object> listeners = null; - - public GT_MetaTileEntity_DigitalChestBase(int aID, String aName, String aNameRegional, int aTier) { - super( - aID, - aName, - aNameRegional, - aTier, - 3, - new String[] { "This Chest stores " + GT_Utility.formatNumbers(commonSizeCompute(aTier)) + " Blocks", - "Use a screwdriver to enable", "voiding items on overflow", "Will keep its contents when harvested", }); - } - - protected static int commonSizeCompute(int tier) { - return switch (tier) { - case 1 -> 4000000; - case 2 -> 8000000; - case 3 -> 16000000; - case 4 -> 32000000; - case 5 -> 64000000; - case 6 -> 128000000; - case 7 -> 256000000; - case 8 -> 512000000; - case 9 -> 1024000000; - case 10 -> 2147483640; - default -> 0; - }; - } - - public GT_MetaTileEntity_DigitalChestBase(String aName, int aTier, String aDescription, ITexture[][][] aTextures) { - super(aName, aTier, 3, aDescription, aTextures); - } - - public GT_MetaTileEntity_DigitalChestBase(String aName, int aTier, String[] aDescription, - ITexture[][][] aTextures) { - super(aName, aTier, 3, aDescription, aTextures); - } - - @Override - public void addAdditionalTooltipInformation(ItemStack stack, List tooltip) { - if (stack.hasTagCompound() && stack.stackTagCompound.hasKey("mItemStack")) { - final ItemStack tContents = ItemStack - .loadItemStackFromNBT(stack.stackTagCompound.getCompoundTag("mItemStack")); - final int tSize = stack.stackTagCompound.getInteger("mItemCount"); - if (tContents != null && tSize > 0) { - tooltip.add( - GT_LanguageManager.addStringLocalization("TileEntity_CHEST_INFO", "Contains Item: ") - + EnumChatFormatting.YELLOW - + tContents.getDisplayName() - + EnumChatFormatting.GRAY); - tooltip.add( - GT_LanguageManager.addStringLocalization("TileEntity_CHEST_AMOUNT", "Item Amount: ") - + EnumChatFormatting.GREEN - + GT_Utility.formatNumbers(tSize) - + EnumChatFormatting.GRAY); - } - } - } - - public static void registerAEIntegration() { - appeng.api.AEApi.instance() - .registries() - .externalStorage() - .addExternalStorageInterface(new AE2DigitalChestHandler()); - } - - @Override - public void addListener(IMEMonitorHandlerReceiver imeMonitorHandlerReceiver, Object o) { - if (listeners == null) listeners = new HashMap<>(); - listeners.put(imeMonitorHandlerReceiver, o); - } - - @Override - public void removeListener(IMEMonitorHandlerReceiver imeMonitorHandlerReceiver) { - if (listeners == null) listeners = new HashMap<>(); - listeners.remove(imeMonitorHandlerReceiver); - } - - @Override - public appeng.api.config.AccessRestriction getAccess() { - return appeng.api.config.AccessRestriction.READ_WRITE; - } - - @Override - public boolean isPrioritized(IAEItemStack iaeItemStack) { - ItemStack s = getItemStack(); - if (s == null || iaeItemStack == null) return false; - return iaeItemStack.isSameType(s); - } - - @Override - public boolean canAccept(IAEItemStack iaeItemStack) { - ItemStack s = getItemStack(); - if (s == null || iaeItemStack == null) return true; - return iaeItemStack.isSameType(s); - } - - @Override - public int getPriority() { - return 0; - } - - @Override - public int getSlot() { - return 0; - } - - @Override - public boolean validForPass(int i) { - return true; - } - - protected abstract ItemStack getItemStack(); - - protected abstract void setItemStack(ItemStack s); - - @SuppressWarnings("unchecked") - @Override - public IItemList getAvailableItems(final IItemList out, int iteration) { - ItemStack storedStack = getItemStack(); - if (storedStack != null) { - AEItemStack s = AEItemStack.create(storedStack); - s.setStackSize(getItemCount()); - out.add(s); - } - return out; - } - - @Override - public IItemList getStorageList() { - IItemList res = new ItemList(); - ItemStack storedStack = getItemStack(); - if (storedStack != null) { - AEItemStack s = AEItemStack.create(storedStack); - s.setStackSize(getItemCount()); - res.add(s); - } - return res; - } - - protected abstract int getItemCount(); - - @Override - public abstract void setItemCount(int aCount); - - @Override - public int getMaxItemCount() { - return commonSizeCompute(mTier); - } - - @Override - public ITexture[][][] getTextureSet(ITexture[] aTextures) { - return new ITexture[0][0][0]; - } - - @Override - public IAEItemStack injectItems(final IAEItemStack input, final appeng.api.config.Actionable mode, - final appeng.api.networking.security.BaseActionSource src) { - if (getBaseMetaTileEntity() == null) return input; - - final ItemStack inputStack = input.getItemStack(); - final int maxCapacity = getMaxItemCount(); - final int itemCount = getItemCount(); - final long toAdd = input.getStackSize(); - final ItemStack storedStack = getItemStack(); - - if (storedStack != null && !GT_Utility.areStacksEqual(storedStack, inputStack)) { - // Can't stack with existing item, just return the input. - return input; - } - - // Number of items not added because there's too much to add. - final long notAdded = itemCount + toAdd - maxCapacity; - - if (mode == appeng.api.config.Actionable.MODULATE) { - final int newCount = (int) Math.min((long) maxCapacity, itemCount + toAdd); - - if (storedStack == null) { - setItemStack(inputStack.copy()); - } - setItemCount(newCount); - getBaseMetaTileEntity().markDirty(); - } - if (mVoidOverflow || notAdded <= 0) { - return null; - } else { - return input.copy() - .setStackSize(notAdded); - } - } - - @Override - public IAEItemStack extractItems(final IAEItemStack request, final appeng.api.config.Actionable mode, - final appeng.api.networking.security.BaseActionSource src) { - if (request.isSameType(getItemStack())) { - if (getBaseMetaTileEntity() == null) return null; - if (mode != appeng.api.config.Actionable.SIMULATE) getBaseMetaTileEntity().markDirty(); - if (request.getStackSize() >= getItemCount()) { - AEItemStack result = AEItemStack.create(getItemStack()); - result.setStackSize(getItemCount()); - if (mode != appeng.api.config.Actionable.SIMULATE) setItemCount(0); - return result; - } else { - if (mode != appeng.api.config.Actionable.SIMULATE) - setItemCount(getItemCount() - (int) request.getStackSize()); - return request.copy(); - } - } - return null; - } - - @Override - public StorageChannel getChannel() { - return StorageChannel.ITEMS; - } - - @Override - public final void onScrewdriverRightClick(ForgeDirection side, EntityPlayer aPlayer, float aX, float aY, float aZ) { - mVoidOverflow = !mVoidOverflow; - GT_Utility.sendChatToPlayer( - aPlayer, - StatCollector.translateToLocal( - mVoidOverflow ? "GT5U.machines.digitalchest.voidoverflow.enabled" - : "GT5U.machines.digitalchest.voidoverflow.disabled")); - } - - @Override - public boolean onSolderingToolRightClick(ForgeDirection side, ForgeDirection wrenchingSide, EntityPlayer aPlayer, - float aX, float aY, float aZ) { - if (super.onSolderingToolRightClick(side, wrenchingSide, aPlayer, aX, aY, aZ)) return true; - mDisableFilter = !mDisableFilter; - GT_Utility.sendChatToPlayer( - aPlayer, - StatCollector.translateToLocal( - mDisableFilter ? "GT5U.machines.digitalchest.inputfilter.disabled" - : "GT5U.machines.digitalchest.inputfilter.enabled")); - return true; - } - - @Override - public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTimer) { - - if (getBaseMetaTileEntity().isServerSide() && getBaseMetaTileEntity().isAllowedToWork()) { - if ((getItemCount() <= 0)) { - setItemStack(null); - setItemCount(0); - } - if (getItemStack() == null && mInventory[0] != null) { - setItemStack(mInventory[0].copy()); - } - int count = getItemCount(); - ItemStack stack = getItemStack(); - int savedCount = count; - - if ((mInventory[0] != null) && ((count < getMaxItemCount()) || mVoidOverflow) - && GT_Utility.areStacksEqual(mInventory[0], stack)) { - count += mInventory[0].stackSize; - if (count <= getMaxItemCount()) { - mInventory[0] = null; - } else { - if (mVoidOverflow) { - mInventory[0] = null; - } else { - mInventory[0].stackSize = (count - getMaxItemCount()); - } - count = getMaxItemCount(); - } - } - if (mInventory[1] == null && stack != null) { - mInventory[1] = stack.copy(); - mInventory[1].stackSize = Math.min(stack.getMaxStackSize(), count); - count -= mInventory[1].stackSize; - } else if ((count > 0) && GT_Utility.areStacksEqual(mInventory[1], stack) - && mInventory[1].getMaxStackSize() > mInventory[1].stackSize) { - int tmp = Math.min(count, mInventory[1].getMaxStackSize() - mInventory[1].stackSize); - mInventory[1].stackSize += tmp; - count -= tmp; - } - setItemCount(count); - if (stack != null) { - mInventory[2] = stack.copy(); - mInventory[2].stackSize = Math.min(stack.getMaxStackSize(), count); - } else { - mInventory[2] = null; - } - - notifyListeners(count - savedCount, stack); - if (count != savedCount) getBaseMetaTileEntity().markDirty(); - } - } - - @Override - public boolean onRightclick(IGregTechTileEntity aBaseMetaTileEntity, EntityPlayer aPlayer) { - GT_UIInfos.openGTTileEntityUI(aBaseMetaTileEntity, aPlayer); - return true; - } - - @Override - public boolean isFacingValid(ForgeDirection facing) { - return true; - } - - @Override - public boolean isAccessAllowed(EntityPlayer aPlayer) { - return true; - } - - @Override - public boolean isValidSlot(int aIndex) { - return aIndex != 2; - } - - @Override - public boolean isSimpleMachine() { - return true; - } - - @Override - public int getProgresstime() { - return getItemCount() + (mInventory[0] == null ? 0 : mInventory[0].stackSize) - + (mInventory[1] == null ? 0 : mInventory[1].stackSize); - } - - @Override - public int maxProgresstime() { - return getMaxItemCount(); - } - - @Override - public boolean isGivingInformation() { - return true; - } - - @Override - public String[] getInfoData() { - - if (getItemStack() == null) { - return new String[] { EnumChatFormatting.BLUE + chestName() + EnumChatFormatting.RESET, "Stored Items:", - EnumChatFormatting.GOLD + "No Items" + EnumChatFormatting.RESET, - EnumChatFormatting.GREEN + "0" - + EnumChatFormatting.RESET - + " " - + EnumChatFormatting.YELLOW - + GT_Utility.formatNumbers(getMaxItemCount()) - + EnumChatFormatting.RESET }; - } - return new String[] { EnumChatFormatting.BLUE + chestName() + EnumChatFormatting.RESET, "Stored Items:", - EnumChatFormatting.GOLD + getItemStack().getDisplayName() + EnumChatFormatting.RESET, - EnumChatFormatting.GREEN + GT_Utility.formatNumbers(getItemCount()) - + EnumChatFormatting.RESET - + " " - + EnumChatFormatting.YELLOW - + GT_Utility.formatNumbers(getMaxItemCount()) - + EnumChatFormatting.RESET }; - } - - @Override - public ItemStack[] getStoredItemData() { - return mInventory; - } - - protected abstract String chestName(); - - private void notifyListeners(int count, ItemStack stack) { - if (listeners == null) { - listeners = new HashMap<>(); - return; - } - if (count == 0 || stack == null) return; - ItemList change = new ItemList(); - AEItemStack s = AEItemStack.create(stack); - s.setStackSize(count); - change.add(s); - listeners.forEach((l, o) -> { - if (l.isValid(o)) l.postChange(this, change, null); - else removeListener(l); - }); - } - - private boolean hasActiveMEConnection() { - if (listeners == null || listeners.isEmpty()) return false; - for (Map.Entry, Object> e : listeners.entrySet()) { - if ((e.getKey() instanceof appeng.api.parts.IPart)) { - appeng.api.networking.IGridNode n = ((appeng.api.parts.IPart) e.getKey()).getGridNode(); - if (n != null && n.isActive()) return true; - } - } - // if there are no active storage buses - clear the listeners - listeners.clear(); - return false; - } - - @Override - public void saveNBTData(NBTTagCompound aNBT) { - aNBT.setInteger("mItemCount", getItemCount()); - if (getItemStack() != null) aNBT.setTag("mItemStack", getItemStack().writeToNBT(new NBTTagCompound())); - aNBT.setBoolean("mVoidOverflow", mVoidOverflow); - aNBT.setBoolean("mDisableFilter", mDisableFilter); - } - - @Override - public void loadNBTData(NBTTagCompound aNBT) { - if (aNBT.hasKey("mItemCount")) setItemCount(aNBT.getInteger("mItemCount")); - if (aNBT.hasKey("mItemStack")) - setItemStack(ItemStack.loadItemStackFromNBT((NBTTagCompound) aNBT.getTag("mItemStack"))); - mVoidOverflow = aNBT.getBoolean("mVoidOverflow"); - mDisableFilter = aNBT.getBoolean("mDisableFilter"); - } - - @Override - public boolean allowPullStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, ForgeDirection side, - ItemStack aStack) { - if (GT_Values.disableDigitalChestsExternalAccess && hasActiveMEConnection()) return false; - return aIndex == 1; - } - - @Override - public boolean allowPutStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, ForgeDirection side, - ItemStack aStack) { - if (GT_Values.disableDigitalChestsExternalAccess && hasActiveMEConnection()) return false; - if (aIndex != 0) return false; - if ((mInventory[0] != null && !GT_Utility.areStacksEqual(mInventory[0], aStack))) return false; - if (mDisableFilter) return true; - if (getItemStack() == null) return mInventory[1] == null || GT_Utility.areStacksEqual(mInventory[1], aStack); - return GT_Utility.areStacksEqual(getItemStack(), aStack); - } - - @Override - public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, ForgeDirection side, ForgeDirection aFacing, - int colorIndex, boolean aActive, boolean redstoneLevel) { - if (side != aFacing) return new ITexture[] { MACHINE_CASINGS[mTier][colorIndex + 1] }; - return new ITexture[] { MACHINE_CASINGS[mTier][colorIndex + 1], TextureFactory.of(OVERLAY_SCHEST), - TextureFactory.builder() - .addIcon(OVERLAY_SCHEST_GLOW) - .glow() - .build() }; - } - - @Override - public void getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, - IWailaConfigHandler config) { - super.getWailaBody(itemStack, currenttip, accessor, config); - final NBTTagCompound tag = accessor.getNBTData(); - if (tag.hasKey("itemType", Constants.NBT.TAG_COMPOUND)) { - currenttip.add("Item Count: " + GT_Utility.parseNumberToString(tag.getInteger("itemCount"))); - currenttip.add( - "Item Type: " + ItemStack.loadItemStackFromNBT(tag.getCompoundTag("itemType")) - .getDisplayName()); - } else { - currenttip.add("Chest Empty"); - } - } - - @Override - public void getWailaNBTData(EntityPlayerMP player, TileEntity tile, NBTTagCompound tag, World world, int x, int y, - int z) { - super.getWailaNBTData(player, tile, tag, world, x, y, z); - ItemStack is = getItemStack(); - if (GT_Utility.isStackInvalid(is)) return; - int realItemCount = getItemCount(); - if (GT_Utility.isStackValid(mInventory[1]) && GT_Utility.areStacksEqual(mInventory[1], is)) - realItemCount += mInventory[1].stackSize; - tag.setInteger("itemCount", realItemCount); - tag.setTag("itemType", is.writeToNBT(new NBTTagCompound())); - } - - protected static final NumberFormatMUI numberFormat = new NumberFormatMUI(); - protected int clientItemCount; - - @Override - public void addUIWidgets(ModularWindow.Builder builder, UIBuildContext buildContext) { - builder.widget( - new DrawableWidget().setDrawable(GT_UITextures.PICTURE_SCREEN_BLACK) - .setPos(7, 16) - .setSize(71, 45)) - .widget( - new SlotWidget(inventoryHandler, 0) - .setBackground(getGUITextureSet().getItemSlot(), GT_UITextures.OVERLAY_SLOT_IN) - .setPos(79, 16)) - .widget( - new SlotWidget(inventoryHandler, 1).setAccess(true, false) - .setBackground(getGUITextureSet().getItemSlot(), GT_UITextures.OVERLAY_SLOT_OUT) - .setPos(79, 52)) - .widget( - SlotWidget.phantom(inventoryHandler, 2) - .disableInteraction() - .setBackground(GT_UITextures.TRANSPARENT) - .setPos(59, 42)) - .widget( - new TextWidget("Item Amount").setDefaultColor(COLOR_TEXT_WHITE.get()) - .setPos(10, 20)) - .widget( - new TextWidget().setStringSupplier(() -> numberFormat.format(clientItemCount)) - .setDefaultColor(COLOR_TEXT_WHITE.get()) - .setPos(10, 30)) - .widget( - new FakeSyncWidget.IntegerSyncer( - () -> this instanceof GT_MetaTileEntity_QuantumChest - ? ((GT_MetaTileEntity_QuantumChest) this).mItemCount - : 0, - value -> clientItemCount = value)); - - } -} diff --git a/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalTankBase.java b/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalTankBase.java deleted file mode 100644 index cd609af343..0000000000 --- a/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalTankBase.java +++ /dev/null @@ -1,694 +0,0 @@ -package gregtech.common.tileentities.storage; - -import static gregtech.api.enums.Textures.BlockIcons.MACHINE_CASINGS; -import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_PIPE; -import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_QTANK; -import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_QTANK_GLOW; -import static gregtech.api.metatileentity.BaseTileEntity.TOOLTIP_DELAY; -import static gregtech.api.util.GT_Utility.formatNumbers; - -import java.util.List; - -import javax.annotation.Nonnull; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.StatCollector; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.fluids.Fluid; -import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidTankInfo; -import net.minecraftforge.fluids.IFluidHandler; - -import com.gtnewhorizons.modularui.api.NumberFormatMUI; -import com.gtnewhorizons.modularui.api.math.Alignment; -import com.gtnewhorizons.modularui.api.screen.ModularWindow; -import com.gtnewhorizons.modularui.api.screen.UIBuildContext; -import com.gtnewhorizons.modularui.common.widget.CycleButtonWidget; -import com.gtnewhorizons.modularui.common.widget.DrawableWidget; -import com.gtnewhorizons.modularui.common.widget.FluidSlotWidget; -import com.gtnewhorizons.modularui.common.widget.SlotWidget; -import com.gtnewhorizons.modularui.common.widget.TextWidget; - -import gregtech.api.gui.modularui.GT_UIInfos; -import gregtech.api.gui.modularui.GT_UITextures; -import gregtech.api.interfaces.ITexture; -import gregtech.api.interfaces.metatileentity.IFluidLockable; -import gregtech.api.interfaces.modularui.IAddGregtechLogo; -import gregtech.api.interfaces.modularui.IAddUIWidgets; -import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicTank; -import gregtech.api.render.TextureFactory; -import gregtech.api.util.GT_LanguageManager; -import gregtech.api.util.GT_Utility; -import gregtech.common.gui.modularui.widget.FluidLockWidget; -import mcp.mobius.waila.api.IWailaConfigHandler; -import mcp.mobius.waila.api.IWailaDataAccessor; - -public abstract class GT_MetaTileEntity_DigitalTankBase extends GT_MetaTileEntity_BasicTank - implements IFluidLockable, IAddUIWidgets, IAddGregtechLogo { - - public boolean mOutputFluid = false, mVoidFluidPart = false, mVoidFluidFull = false, mLockFluid = false; - protected String lockedFluidName = null; - public boolean mAllowInputFromOutputSide = false; - - public GT_MetaTileEntity_DigitalTankBase(int aID, String aName, String aNameRegional, int aTier) { - super( - aID, - aName, - aNameRegional, - aTier, - 3, - new String[] { - StatCollector.translateToLocalFormatted( - "GT5U.machines.digitaltank.tooltip", - formatNumbers(commonSizeCompute(aTier))), - StatCollector.translateToLocal("GT5U.machines.digitaltank.tooltip1"), }); - } - - protected static int commonSizeCompute(int tier) { - return switch (tier) { - case 1 -> 4000000; - case 2 -> 8000000; - case 3 -> 16000000; - case 4 -> 32000000; - case 5 -> 64000000; - case 6 -> 128000000; - case 7 -> 256000000; - case 8 -> 512000000; - case 9 -> 1024000000; - case 10 -> 2147483640; - default -> 0; - }; - } - - private static int tierPump(int tier) { - return switch (tier) { - case 1 -> 2; - case 2 -> 3; - case 3 -> 3; - case 4 -> 4; - case 5 -> 4; - case 6 -> 5; - case 7 -> 5; - case 8 -> 6; - case 9 -> 7; - case 10 -> 8; - default -> 0; - }; - } - - public GT_MetaTileEntity_DigitalTankBase(String aName, int aTier, String aDescription, ITexture[][][] aTextures) { - super(aName, aTier, 3, aDescription, aTextures); - } - - public GT_MetaTileEntity_DigitalTankBase(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures) { - super(aName, aTier, 3, aDescription, aTextures); - } - - @Override - public ITexture[][][] getTextureSet(ITexture[] aTextures) { - return new ITexture[0][0][0]; - } - - @Override - public void addAdditionalTooltipInformation(ItemStack stack, List tooltip) { - if (stack.hasTagCompound() - && (stack.stackTagCompound.hasKey("mFluid") || stack.stackTagCompound.hasKey("lockedFluidName"))) { - final FluidStack tContents = FluidStack - .loadFluidStackFromNBT(stack.stackTagCompound.getCompoundTag("mFluid")); - if (tContents != null && tContents.amount > 0) { - tooltip.add( - GT_LanguageManager.addStringLocalization("TileEntity_TANK_INFO", "Contains Fluid: ") - + EnumChatFormatting.YELLOW - + tContents.getLocalizedName() - + EnumChatFormatting.GRAY); - tooltip.add( - GT_LanguageManager.addStringLocalization("TileEntity_TANK_AMOUNT", "Fluid Amount: ") - + EnumChatFormatting.GREEN - + formatNumbers(tContents.amount) - + " L" - + EnumChatFormatting.GRAY); - } else if (stack.stackTagCompound.hasKey("lockedFluidName")) { - String fluidName = stack.stackTagCompound.getString("lockedFluidName"); - Fluid fluid = FluidRegistry.getFluid(fluidName); - if (fluid == null) return; - // noinspection deprecation - tooltip.add( - StatCollector.translateToLocalFormatted( - "GT5U.item.tank.locked_to", - EnumChatFormatting.YELLOW + fluid.getLocalizedName())); - } - } - } - - @Override - public void setItemNBT(NBTTagCompound aNBT) { - if (mFluid != null && mFluid.amount >= 0) { - aNBT.setTag("mFluid", mFluid.writeToNBT(new NBTTagCompound())); - } - if (mOutputFluid) aNBT.setBoolean("mOutputFluid", true); - if (mVoidFluidPart) aNBT.setBoolean("mVoidOverflow", true); - if (mVoidFluidFull) aNBT.setBoolean("mVoidFluidFull", true); - if (mLockFluid) aNBT.setBoolean("mLockFluid", true); - if (mLockFluid && GT_Utility.isStringValid(lockedFluidName)) aNBT.setString("lockedFluidName", lockedFluidName); - if (this.mAllowInputFromOutputSide) aNBT.setBoolean("mAllowInputFromOutputSide", true); - - super.setItemNBT(aNBT); - } - - @Override - public void saveNBTData(NBTTagCompound aNBT) { - super.saveNBTData(aNBT); - aNBT.setBoolean("mOutputFluid", this.mOutputFluid); - aNBT.setBoolean("mVoidOverflow", this.mVoidFluidPart); - aNBT.setBoolean("mVoidFluidFull", this.mVoidFluidFull); - aNBT.setBoolean("mLockFluid", mLockFluid); - if (mLockFluid && GT_Utility.isStringValid(lockedFluidName)) aNBT.setString("lockedFluidName", lockedFluidName); - else aNBT.removeTag("lockedFluidName"); - aNBT.setBoolean("mAllowInputFromOutputSide", this.mAllowInputFromOutputSide); - } - - @Override - public void loadNBTData(NBTTagCompound aNBT) { - super.loadNBTData(aNBT); - mOutputFluid = aNBT.getBoolean("mOutputFluid"); - mVoidFluidPart = aNBT.getBoolean("mVoidOverflow"); - mVoidFluidFull = aNBT.getBoolean("mVoidFluidFull"); - mLockFluid = aNBT.getBoolean("mLockFluid"); - if (mLockFluid) { - setLockedFluidName(aNBT.getString("lockedFluidName")); - } else { - setLockedFluidName(null); - } - mAllowInputFromOutputSide = aNBT.getBoolean("mAllowInputFromOutputSide"); - } - - @Override - public boolean isFluidInputAllowed(FluidStack aFluid) { - return !mLockFluid || lockedFluidName == null - || lockedFluidName.equals( - aFluid.getFluid() - .getName()); - } - - @Override - public boolean isFluidChangingAllowed() { - return !mLockFluid || lockedFluidName == null; - } - - @Override - public void onEmptyingContainerWhenEmpty() { - if (this.lockedFluidName == null && this.mFluid != null && isFluidLocked()) { - setLockedFluidName( - this.mFluid.getFluid() - .getName()); - } - } - - @Override - public boolean isSimpleMachine() { - return true; - } - - @Override - public boolean doesFillContainers() { - return true; - } - - @Override - public boolean doesEmptyContainers() { - return true; - } - - @Override - public boolean canTankBeFilled() { - return true; - } - - @Override - public boolean canTankBeEmptied() { - return true; - } - - @Override - public boolean displaysItemStack() { - return true; - } - - @Override - public boolean displaysStackSize() { - return false; - } - - @Override - public void setLockedFluidName(String lockedFluidName) { - lockedFluidName = GT_Utility.isStringInvalid(lockedFluidName) ? null : lockedFluidName; - this.lockedFluidName = lockedFluidName; - if (lockedFluidName != null) { - Fluid fluid = FluidRegistry.getFluid(lockedFluidName); - if (fluid != null) { - // create new FluidStack, otherwise existing 0-amount FluidStack will - // prevent new fluid from being locked - setFillableStack(new FluidStack(fluid, getFluidAmount())); - mLockFluid = true; - } - } - // Don't unlock if lockedFluidName == null, - // as player might explicitly enable fluid locking with no fluid contained - } - - @Override - public String getLockedFluidName() { - return this.lockedFluidName; - } - - @Override - public void lockFluid(boolean lock) { - this.mLockFluid = lock; - if (!lock) { - setLockedFluidName(null); - } - } - - @Override - public boolean isFluidLocked() { - return this.mLockFluid; - } - - @Override - public boolean acceptsFluidLock(String name) { - if (name == null || getFluidAmount() == 0) return true; - return mFluid != null && mFluid.getFluid() - .getName() - .equals(name); - } - - @Override - public ITexture[] getTexture(IGregTechTileEntity baseMetaTileEntity, ForgeDirection sideDirection, - ForgeDirection facingDirection, int colorIndex, boolean active, boolean redstoneLevel) { - if (sideDirection != ForgeDirection.UP) { - if (sideDirection == baseMetaTileEntity.getFrontFacing()) { - return new ITexture[] { MACHINE_CASINGS[mTier][colorIndex + 1], TextureFactory.of(OVERLAY_PIPE) }; - } else return new ITexture[] { MACHINE_CASINGS[mTier][colorIndex + 1] }; - } - return new ITexture[] { MACHINE_CASINGS[mTier][colorIndex + 1], TextureFactory.of(OVERLAY_QTANK), - TextureFactory.builder() - .addIcon(OVERLAY_QTANK_GLOW) - .glow() - .build() }; - } - - @Override - public boolean onRightclick(IGregTechTileEntity aBaseMetaTileEntity, EntityPlayer aPlayer) { - GT_UIInfos.openGTTileEntityUI(aBaseMetaTileEntity, aPlayer); - return true; - } - - @Override - public final void onScrewdriverRightClick(ForgeDirection side, EntityPlayer aPlayer, float aX, float aY, float aZ) { - if (side == getBaseMetaTileEntity().getFrontFacing()) { - mAllowInputFromOutputSide = !mAllowInputFromOutputSide; - GT_Utility.sendChatToPlayer( - aPlayer, - mAllowInputFromOutputSide ? GT_Utility.getTrans("095") : GT_Utility.getTrans("096")); - } - } - - @Override - public FluidStack setFillableStack(FluidStack aFluid) { - mFluid = aFluid; - if (mFluid != null) { - mFluid.amount = Math.min(mFluid.amount, getRealCapacity()); - } - return mFluid; - } - - @Override - public FluidStack setDrainableStack(FluidStack aFluid) { - mFluid = aFluid; - if (mFluid != null) { - mFluid.amount = Math.min(mFluid.amount, getRealCapacity()); - } - return mFluid; - } - - @Override - public void onPreTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { - if (aBaseMetaTileEntity.isServerSide()) { - if (isFluidChangingAllowed() && getFillableStack() != null && getFillableStack().amount <= 0) - setFillableStack(null); - - if (mVoidFluidFull && getFillableStack() != null) { - mVoidFluidPart = false; - mLockFluid = false; - setFillableStack(null); - } - - if (doesEmptyContainers()) { - FluidStack tFluid = GT_Utility.getFluidForFilledItem(mInventory[getInputSlot()], true); - if (tFluid != null && isFluidInputAllowed(tFluid)) { - if (getFillableStack() == null) { - if (isFluidInputAllowed(tFluid)) { - if ((tFluid.amount <= getRealCapacity()) || mVoidFluidPart) { - tFluid = tFluid.copy(); - if (aBaseMetaTileEntity.addStackToSlot( - getOutputSlot(), - GT_Utility.getContainerForFilledItem(mInventory[getInputSlot()], true), - 1)) { - setFillableStack(tFluid); - this.onEmptyingContainerWhenEmpty(); - aBaseMetaTileEntity.decrStackSize(getInputSlot(), 1); - } - } - } - } else { - if (tFluid.isFluidEqual(getFillableStack())) { - if ((((long) tFluid.amount + getFillableStack().amount) <= (long) getRealCapacity()) - || mVoidFluidPart - || mVoidFluidFull) { - if (aBaseMetaTileEntity.addStackToSlot( - getOutputSlot(), - GT_Utility.getContainerForFilledItem(mInventory[getInputSlot()], true), - 1)) { - getFillableStack().amount += Math - .min(tFluid.amount, getRealCapacity() - getFillableStack().amount); - aBaseMetaTileEntity.decrStackSize(getInputSlot(), 1); - } - } - } - } - } - } - - if (doesFillContainers()) { - ItemStack tOutput = GT_Utility - .fillFluidContainer(getDrainableStack(), mInventory[getInputSlot()], false, true); - if (tOutput != null && aBaseMetaTileEntity.addStackToSlot(getOutputSlot(), tOutput, 1)) { - FluidStack tFluid = GT_Utility.getFluidForFilledItem(tOutput, true); - aBaseMetaTileEntity.decrStackSize(getInputSlot(), 1); - if (tFluid != null) getDrainableStack().amount -= tFluid.amount; - if (getDrainableStack().amount <= 0 && isFluidChangingAllowed()) setDrainableStack(null); - } - } - } - } - - @Override - public int fill(FluidStack aFluid, boolean doFill) { - if (aFluid == null || aFluid.getFluid() - .getID() <= 0 || aFluid.amount <= 0 || !canTankBeFilled() || !isFluidInputAllowed(aFluid)) return 0; - if (getFillableStack() != null && !getFillableStack().isFluidEqual(aFluid)) { - return 0; - } - - FluidStack fillableStack = getFillableStack(); - if (fillableStack == null) { - fillableStack = aFluid.copy(); - fillableStack.amount = 0; - } - - int amount = Math.min(aFluid.amount, getRealCapacity() - fillableStack.amount); - if (doFill) { - fillableStack.amount += amount; - if (getFillableStack() == null) setFillableStack(fillableStack); - getBaseMetaTileEntity().markDirty(); - } - return (mVoidFluidPart || mVoidFluidFull) ? aFluid.amount : amount; - } - - @Override - public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { - super.onPostTick(aBaseMetaTileEntity, aTick); - if (aBaseMetaTileEntity.isServerSide()) { - if (mOutputFluid && getDrainableStack() != null && (aTick % 20 == 0)) { - IFluidHandler tTank = aBaseMetaTileEntity.getITankContainerAtSide(aBaseMetaTileEntity.getFrontFacing()); - if (tTank != null) { - FluidStack tDrained = drain(20 * (1 << (3 + 2 * tierPump(mTier))), false); - if (tDrained != null) { - int tFilledAmount = tTank.fill(aBaseMetaTileEntity.getBackFacing(), tDrained, false); - if (tFilledAmount > 0) - tTank.fill(aBaseMetaTileEntity.getBackFacing(), drain(tFilledAmount, true), true); - } - } - } - } - } - - @Override - public boolean isFacingValid(ForgeDirection side) { - return true; - } - - @Override - public boolean isInputFacing(ForgeDirection side) { - return true; - } - - @Override - public boolean isOutputFacing(ForgeDirection side) { - return false; - } - - @Override - public boolean isLiquidInput(ForgeDirection side) { - return mAllowInputFromOutputSide || side != getBaseMetaTileEntity().getFrontFacing(); - } - - @Override - public boolean isLiquidOutput(ForgeDirection side) { - return true; - } - - @Override - public boolean isAccessAllowed(EntityPlayer aPlayer) { - return true; - } - - @Override - public int getTankPressure() { - return 100; - } - - public boolean allowOverflow() { - return mVoidFluidPart || mVoidFluidFull; - } - - @Override - public int getCapacity() { - return allowOverflow() ? Integer.MAX_VALUE : getRealCapacity(); - } - - @Override - public int getRealCapacity() { - return commonSizeCompute(mTier); - } - - @Override - public boolean isGivingInformation() { - return true; - } - - @Override - public FluidTankInfo getInfo() { - return new FluidTankInfo(getFluid(), getCapacity()); - } - - @Override - public FluidTankInfo[] getTankInfo(ForgeDirection side) { - return new FluidTankInfo[] { getInfo() }; - } - - @Nonnull - public FluidTankInfo[] getRealTankInfo(ForgeDirection side) { - return new FluidTankInfo[] { new FluidTankInfo(getFluid(), getRealCapacity()) }; - } - - @Override - public void getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, - IWailaConfigHandler config) { - super.getWailaBody(itemStack, currenttip, accessor, config); - - NBTTagCompound tag = accessor.getNBTData(); - FluidStack fluid = tag.hasKey("mFluid") ? FluidStack.loadFluidStackFromNBT(tag.getCompoundTag("mFluid")) : null; - if (fluid != null && fluid.amount >= 0) { - currenttip.remove(0); - currenttip.add( - 0, - formatNumbers(fluid.amount) + " / " - + formatNumbers(getRealCapacity()) - + " L " - + fluid.getLocalizedName()); - } else { - currenttip.add(0, "Tank Empty"); - } - } - - @Override - public void getWailaNBTData(EntityPlayerMP player, TileEntity tile, NBTTagCompound tag, World world, int x, int y, - int z) { - super.getWailaNBTData(player, tile, tag, world, x, y, z); - FluidStack fluid = getFluid(); - if (fluid != null) tag.setTag("mFluid", fluid.writeToNBT(new NBTTagCompound())); - else if (tag.hasKey("mFluid")) tag.removeTag("mFluid"); - } - - protected static final NumberFormatMUI numberFormat = new NumberFormatMUI(); - - @Override - public void addUIWidgets(ModularWindow.Builder builder, UIBuildContext buildContext) { - fluidTank.setAllowOverflow(allowOverflow()); - fluidTank.setPreventDraining(mLockFluid); - - FluidSlotWidget fluidSlotWidget = new FluidSlotWidget(fluidTank); - builder.widget( - new DrawableWidget().setDrawable(GT_UITextures.PICTURE_SCREEN_BLACK) - .setPos(7, 16) - .setSize(71, 45)) - .widget( - new SlotWidget(inventoryHandler, getInputSlot()) - .setBackground(getGUITextureSet().getItemSlot(), GT_UITextures.OVERLAY_SLOT_IN) - .setPos(79, 16)) - .widget( - new SlotWidget(inventoryHandler, getOutputSlot()).setAccess(true, false) - .setBackground(getGUITextureSet().getItemSlot(), GT_UITextures.OVERLAY_SLOT_OUT) - .setPos(79, 43)) - .widget( - fluidSlotWidget.setOnClickContainer(widget -> onEmptyingContainerWhenEmpty()) - .setBackground(GT_UITextures.TRANSPARENT) - .setPos(58, 41)) - .widget( - new TextWidget(StatCollector.translateToLocal("GT5U.machines.digitaltank.fluid.amount")) - .setDefaultColor(COLOR_TEXT_WHITE.get()) - .setPos(10, 20)) - .widget( - new TextWidget().setStringSupplier(() -> numberFormat.format(mFluid != null ? mFluid.amount : 0)) - .setDefaultColor(COLOR_TEXT_WHITE.get()) - .setPos(10, 30)) - .widget( - new DrawableWidget().setDrawable(GT_UITextures.PICTURE_SCREEN_BLACK) - .setPos(98, 16) - .setSize(71, 45)) - .widget(new FluidLockWidget(this).setPos(149, 41)) - .widget( - new TextWidget(StatCollector.translateToLocal("GT5U.machines.digitaltank.lockfluid.label")) - .setDefaultColor(COLOR_TEXT_WHITE.get()) - .setPos(101, 20)) - .widget(TextWidget.dynamicString(() -> { - FluidStack fluidStack = FluidRegistry.getFluidStack(lockedFluidName, 1); - return fluidStack != null ? fluidStack.getLocalizedName() - : StatCollector.translateToLocal("GT5U.machines.digitaltank.lockfluid.empty"); - }) - .setDefaultColor(COLOR_TEXT_WHITE.get()) - .setTextAlignment(Alignment.CenterLeft) - .setMaxWidth(65) - .setPos(101, 30)) - .widget(new CycleButtonWidget().setToggle(() -> mOutputFluid, val -> { - mOutputFluid = val; - if (!mOutputFluid) { - GT_Utility.sendChatToPlayer( - buildContext.getPlayer(), - GT_Utility.trans("262", "Fluid Auto Output Disabled")); - } else { - GT_Utility.sendChatToPlayer( - buildContext.getPlayer(), - GT_Utility.trans("263", "Fluid Auto Output Enabled")); - } - }) - .setVariableBackground(GT_UITextures.BUTTON_STANDARD_TOGGLE) - .setStaticTexture(GT_UITextures.OVERLAY_BUTTON_AUTOOUTPUT_FLUID) - .setGTTooltip(() -> mTooltipCache.getData("GT5U.machines.digitaltank.autooutput.tooltip")) - .setTooltipShowUpDelay(TOOLTIP_DELAY) - .setPos(7, 63) - .setSize(18, 18)) - .widget(new CycleButtonWidget().setToggle(() -> mLockFluid, val -> { - lockFluid(val); - fluidTank.setPreventDraining(mLockFluid); - - String inBrackets; - if (mLockFluid) { - if (mFluid == null) { - setLockedFluidName(null); - inBrackets = GT_Utility - .trans("264", "currently none, will be locked to the next that is put in"); - } else { - setLockedFluidName( - getDrainableStack().getFluid() - .getName()); - inBrackets = getDrainableStack().getLocalizedName(); - } - GT_Utility.sendChatToPlayer( - buildContext.getPlayer(), - String.format("%s (%s)", GT_Utility.trans("265", "1 specific Fluid"), inBrackets)); - } else { - fluidTank.drain(0, true); - GT_Utility.sendChatToPlayer( - buildContext.getPlayer(), - GT_Utility.trans("266", "Lock Fluid Mode Disabled")); - } - fluidSlotWidget.notifyTooltipChange(); - }) - .setVariableBackground(GT_UITextures.BUTTON_STANDARD_TOGGLE) - .setStaticTexture(GT_UITextures.OVERLAY_BUTTON_LOCK) - .setGTTooltip(() -> mTooltipCache.getData("GT5U.machines.digitaltank.lockfluid.tooltip")) - .setTooltipShowUpDelay(TOOLTIP_DELAY) - .setPos(25, 63) - .setSize(18, 18)) - .widget(new CycleButtonWidget().setToggle(() -> mAllowInputFromOutputSide, val -> { - mAllowInputFromOutputSide = val; - if (!mAllowInputFromOutputSide) { - GT_Utility.sendChatToPlayer(buildContext.getPlayer(), GT_Utility.getTrans("096")); - } else { - GT_Utility.sendChatToPlayer(buildContext.getPlayer(), GT_Utility.getTrans("095")); - } - }) - .setVariableBackground(GT_UITextures.BUTTON_STANDARD_TOGGLE) - .setStaticTexture(GT_UITextures.OVERLAY_BUTTON_INPUT_FROM_OUTPUT_SIDE) - .setGTTooltip(() -> mTooltipCache.getData("GT5U.machines.digitaltank.inputfromoutput.tooltip")) - .setTooltipShowUpDelay(TOOLTIP_DELAY) - .setPos(43, 63) - .setSize(18, 18)) - .widget(new CycleButtonWidget().setToggle(() -> mVoidFluidPart, val -> { - mVoidFluidPart = val; - fluidTank.setAllowOverflow(allowOverflow()); - if (!mVoidFluidPart) { - GT_Utility.sendChatToPlayer( - buildContext.getPlayer(), - GT_Utility.trans("267", "Overflow Voiding Mode Disabled")); - } else { - GT_Utility.sendChatToPlayer( - buildContext.getPlayer(), - GT_Utility.trans("268", "Overflow Voiding Mode Enabled")); - } - }) - .setVariableBackground(GT_UITextures.BUTTON_STANDARD_TOGGLE) - .setStaticTexture(GT_UITextures.OVERLAY_BUTTON_TANK_VOID_EXCESS) - .setGTTooltip(() -> mTooltipCache.getData("GT5U.machines.digitaltank.voidoverflow.tooltip")) - .setTooltipShowUpDelay(TOOLTIP_DELAY) - .setPos(98, 63) - .setSize(18, 18)) - .widget(new CycleButtonWidget().setToggle(() -> mVoidFluidFull, val -> { - mVoidFluidFull = val; - fluidTank.setAllowOverflow(allowOverflow()); - if (!mVoidFluidFull) { - GT_Utility - .sendChatToPlayer(buildContext.getPlayer(), GT_Utility.trans("269", "Void Full Mode Disabled")); - } else { - GT_Utility - .sendChatToPlayer(buildContext.getPlayer(), GT_Utility.trans("270", "Void Full Mode Enabled")); - } - }) - .setVariableBackground(GT_UITextures.BUTTON_STANDARD_TOGGLE) - .setStaticTexture(GT_UITextures.OVERLAY_BUTTON_TANK_VOID_ALL) - .setGTTooltip(() -> mTooltipCache.getData("GT5U.machines.digitaltank.voidfull.tooltip")) - .setTooltipShowUpDelay(TOOLTIP_DELAY) - .setPos(116, 63) - .setSize(18, 18)); - } -} diff --git a/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_Locker.java b/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_Locker.java deleted file mode 100644 index abce9514de..0000000000 --- a/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_Locker.java +++ /dev/null @@ -1,283 +0,0 @@ -package gregtech.common.tileentities.storage; - -import static gregtech.api.enums.Textures.BlockIcons.LOCKERS; -import static gregtech.api.enums.Textures.BlockIcons.MACHINE_CASINGS; -import static gregtech.api.enums.Textures.BlockIcons.OVERLAYS_ENERGY_IN; -import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_LOCKER; - -import java.util.List; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.StatCollector; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -import gregtech.api.enums.SoundResource; -import gregtech.api.interfaces.ITexture; -import gregtech.api.interfaces.metatileentity.IMetaTileEntity; -import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_TieredMachineBlock; -import gregtech.api.objects.GT_ItemStack; -import gregtech.api.render.TextureFactory; -import gregtech.api.util.GT_ModHandler; -import gregtech.api.util.GT_Utility; -import mcp.mobius.waila.api.IWailaConfigHandler; -import mcp.mobius.waila.api.IWailaDataAccessor; - -public class GT_MetaTileEntity_Locker extends GT_MetaTileEntity_TieredMachineBlock { - - private static final String CHARGE_SLOT_WAILA_TAG = "charge_slot_"; - public byte mType = 0; - - public GT_MetaTileEntity_Locker(int aID, String aName, String aNameRegional, int aTier) { - super(aID, aName, aNameRegional, aTier, 4, "Stores and recharges Armor"); - } - - public GT_MetaTileEntity_Locker(String aName, int aTier, String aDescription, ITexture[][][] aTextures) { - super(aName, aTier, 4, aDescription, aTextures); - } - - public GT_MetaTileEntity_Locker(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures) { - super(aName, aTier, 4, aDescription, aTextures); - } - - @Override - public String[] getDescription() { - String[] desc = new String[mDescriptionArray.length + 1]; - System.arraycopy(mDescriptionArray, 0, desc, 0, mDescriptionArray.length); - desc[mDescriptionArray.length] = "Click with Screwdriver to change Style"; - return desc; - } - - @Override - public ITexture[][][] getTextureSet(ITexture[] aTextures) { - ITexture[][][] rTextures = new ITexture[3][17][]; - for (byte i = -1; i < 16; i = (byte) (i + 1)) { - ITexture[] tmp0 = { MACHINE_CASINGS[this.mTier][(i + 1)] }; - rTextures[0][(i + 1)] = tmp0; - ITexture[] tmp1 = { MACHINE_CASINGS[this.mTier][(i + 1)], OVERLAYS_ENERGY_IN[this.mTier] }; - rTextures[1][(i + 1)] = tmp1; - ITexture[] tmp2 = { MACHINE_CASINGS[this.mTier][(i + 1)], TextureFactory.of(OVERLAY_LOCKER) }; - rTextures[2][(i + 1)] = tmp2; - } - return rTextures; - } - - @Override - public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, ForgeDirection side, ForgeDirection aFacing, - int colorIndex, boolean aActive, boolean redstoneLevel) { - if (side == aFacing) { - return new ITexture[] { this.mTextures[2][(colorIndex + 1)][0], this.mTextures[2][(colorIndex + 1)][1], - LOCKERS[Math.abs(this.mType % LOCKERS.length)] }; - } - return this.mTextures[0][(colorIndex + 1)]; - } - - @Override - public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { - return new GT_MetaTileEntity_Locker(this.mName, this.mTier, this.mDescriptionArray, this.mTextures); - } - - @Override - public boolean isSimpleMachine() { - return false; - } - - @Override - public boolean isElectric() { - return true; - } - - @Override - public boolean isValidSlot(int aIndex) { - return true; - } - - @Override - public boolean isFacingValid(ForgeDirection facing) { - return (facing.flag & (ForgeDirection.UP.flag | ForgeDirection.DOWN.flag)) == 0; - } - - @Override - public boolean isEnetInput() { - return true; - } - - @Override - public boolean isInputFacing(ForgeDirection side) { - return side == getBaseMetaTileEntity().getBackFacing(); - } - - @Override - public boolean isTeleporterCompatible() { - return false; - } - - @Override - public long maxEUStore() { - return gregtech.api.enums.GT_Values.V[this.mTier] * maxAmperesIn(); - } - - @Override - public long maxEUInput() { - return gregtech.api.enums.GT_Values.V[this.mTier]; - } - - @Override - public long maxAmperesIn() { - return this.mInventory.length * 2L; - } - - @Override - public int rechargerSlotStartIndex() { - return 0; - } - - @Override - public int rechargerSlotCount() { - return getBaseMetaTileEntity().isAllowedToWork() ? this.mInventory.length : 0; - } - - @Override - public boolean isAccessAllowed(EntityPlayer aPlayer) { - return true; - } - - @Override - public void saveNBTData(NBTTagCompound aNBT) { - aNBT.setByte("mType", this.mType); - } - - @Override - public void loadNBTData(NBTTagCompound aNBT) { - this.mType = aNBT.getByte("mType"); - } - - @Override - public void onValueUpdate(byte aValue) { - this.mType = aValue; - } - - @Override - public byte getUpdateData() { - return this.mType; - } - - @Override - public void doSound(byte aIndex, double aX, double aY, double aZ) { - if (aIndex == 16) { - GT_Utility.doSoundAtClient(SoundResource.RANDOM_CLICK, 1, 1.0F); - } - } - - @Override - public void onScrewdriverRightClick(ForgeDirection side, EntityPlayer aPlayer, float aX, float aY, float aZ) { - if (side == getBaseMetaTileEntity().getFrontFacing()) { - this.mType = ((byte) (this.mType + 1)); - } - } - - @Override - public boolean allowCoverOnSide(ForgeDirection side, GT_ItemStack aStack) { - return side != getBaseMetaTileEntity().getFrontFacing(); - } - - @Override - public boolean onRightclick(IGregTechTileEntity aBaseMetaTileEntity, EntityPlayer aPlayer, ForgeDirection side, - float aX, float aY, float aZ) { - if ((aBaseMetaTileEntity.isServerSide()) && (side == aBaseMetaTileEntity.getFrontFacing())) { - for (int i = 0; i < 4; i++) { - ItemStack tSwapStack = this.mInventory[i]; - this.mInventory[i] = aPlayer.inventory.armorInventory[i]; - aPlayer.inventory.armorInventory[i] = tSwapStack; - } - aPlayer.inventoryContainer.detectAndSendChanges(); - sendSound((byte) 16); - } - return true; - } - - @Override - public boolean allowPullStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, ForgeDirection side, - ItemStack aStack) { - return false; - } - - @Override - public boolean allowPutStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, ForgeDirection side, - ItemStack aStack) { - return false; - } - - @Override - public void getWailaNBTData(EntityPlayerMP player, TileEntity tile, NBTTagCompound tag, World world, int x, int y, - int z) { - super.getWailaNBTData(player, tile, tag, world, x, y, z); - for (int i = 0; i < 4; i++) { - final ItemStack itemStack = this.mInventory[3 - i]; - - if (itemStack != null) { - tag.setTag(CHARGE_SLOT_WAILA_TAG + i, itemStack.writeToNBT(new NBTTagCompound())); - } - } - } - - @Override - public void getWailaBody(ItemStack itemStack, List currentTip, IWailaDataAccessor accessor, - IWailaConfigHandler config) { - super.getWailaBody(itemStack, currentTip, accessor, config); - - final NBTTagCompound tag = accessor.getNBTData(); - - for (int i = 0; i < 4; i++) { - final String index = GT_Utility.formatNumbers(i + 1); - - if (tag.hasKey(CHARGE_SLOT_WAILA_TAG + i)) { - final ItemStack slotItem = ItemStack - .loadItemStackFromNBT(tag.getCompoundTag(CHARGE_SLOT_WAILA_TAG + i)); - assert