diff options
author | Yang Xizhi <60341015+GlodBlock@users.noreply.github.com> | 2021-12-14 06:32:11 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-13 23:32:11 +0100 |
commit | 9414fc9625f2a9a854f59d19bdcc2eaa10af3048 (patch) | |
tree | 7e136ee8f86aa74e12af5a78dda24ff80b1f37ef | |
parent | 11903e892d8de8b5722128f4c22bd150ccb4a728 (diff) | |
download | GT5-Unofficial-9414fc9625f2a9a854f59d19bdcc2eaa10af3048.tar.gz GT5-Unofficial-9414fc9625f2a9a854f59d19bdcc2eaa10af3048.tar.bz2 GT5-Unofficial-9414fc9625f2a9a854f59d19bdcc2eaa10af3048.zip |
add unlocalizedname fluid map (#796)
* add unlocalizedname fluid map
* change the lock name into fluid name
4 files changed, 26 insertions, 15 deletions
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Output.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Output.java index d848b06b07..02db2aec47 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Output.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Output.java @@ -120,6 +120,9 @@ public class GT_MetaTileEntity_Hatch_Output extends GT_MetaTileEntity_Hatch { mMode = aNBT.getByte("mMode"); lockedFluidName = aNBT.getString("lockedFluidName"); lockedFluidName = lockedFluidName.length() == 0 ? null : lockedFluidName; + if (GT_Utility.getFluidFromUnlocalizedName(lockedFluidName) != null) { + lockedFluidName = GT_Utility.getFluidFromUnlocalizedName(lockedFluidName).getName(); + } } @Override @@ -157,8 +160,7 @@ public class GT_MetaTileEntity_Hatch_Output extends GT_MetaTileEntity_Hatch { super.updateFluidDisplayItem(); if (lockedFluidName == null || mMode < 8) mInventory[3] = null; else { - FluidStack tLockedFluid = FluidRegistry.getFluidStack(lockedFluidName.replace("fluid.", "") - .replace("tile.", "").replace(".name", "").replace("ic2.fluid", "ic2").toLowerCase(), 1); + FluidStack tLockedFluid = FluidRegistry.getFluidStack(lockedFluidName, 1); // Because getStackDisplaySlot() only allow return one int, this place I only can manually set. if (tLockedFluid != null) { mInventory[3] = GT_Utility.getFluidDisplayStack(tLockedFluid, false, true); @@ -249,7 +251,7 @@ public class GT_MetaTileEntity_Hatch_Output extends GT_MetaTileEntity_Hatch { this.setLockedFluidName(null); inBrackets = trans("115.3","currently none, will be locked to the next that is put in (or use fluid cell to lock)"); } else { - this.setLockedFluidName(this.getDrainableStack().getUnlocalizedName()); + this.setLockedFluidName(this.getDrainableStack().getFluid().getName()); inBrackets = this.getDrainableStack().getLocalizedName(); } GT_Utility.sendChatToPlayer(aPlayer, String.format("%s (%s)", trans("151.1", "Outputs items and 1 specific Fluid"), inBrackets)); @@ -260,7 +262,7 @@ public class GT_MetaTileEntity_Hatch_Output extends GT_MetaTileEntity_Hatch { this.setLockedFluidName(null); inBrackets = trans("115.3","currently none, will be locked to the next that is put in (or use fluid cell to lock)"); } else { - this.setLockedFluidName(this.getDrainableStack().getUnlocalizedName()); + this.setLockedFluidName(this.getDrainableStack().getFluid().getName()); inBrackets = this.getDrainableStack().getLocalizedName(); } GT_Utility.sendChatToPlayer(aPlayer, String.format("%s (%s)", trans("151.2", "Outputs 1 specific Fluid"), inBrackets)); @@ -280,13 +282,13 @@ public class GT_MetaTileEntity_Hatch_Output extends GT_MetaTileEntity_Hatch { if (tFluid == null && tCurrentItem.getItem() instanceof IFluidContainerItem) tFluid = ((IFluidContainerItem)tCurrentItem.getItem()).getFluid(tCurrentItem); if (tFluid != null) { - if (getLockedFluidName() != null && !getLockedFluidName().equals(tFluid.getUnlocalizedName())) { + if (getLockedFluidName() != null && !getLockedFluidName().equals(tFluid.getFluid().getName())) { GT_Utility.sendChatToPlayer(aPlayer, String.format("%s %s", trans("151.3", "Hatch is locked to a different fluid. To change the locking, empty it and made it locked to the next fluid with a screwdriver. Currently locked to") - , StatCollector.translateToLocal(getLockedFluidName()))); + , StatCollector.translateToLocal(tFluid.getUnlocalizedName()))); } else { - setLockedFluidName(tFluid.getUnlocalizedName()); + setLockedFluidName(tFluid.getFluid().getName()); if (mMode == 8) GT_Utility.sendChatToPlayer(aPlayer, String.format("%s (%s)", trans("151.1", "Outputs items and 1 specific Fluid"), tFluid.getLocalizedName())); else @@ -345,7 +347,7 @@ public class GT_MetaTileEntity_Hatch_Output extends GT_MetaTileEntity_Hatch { @Override protected void onEmptyingContainerWhenEmpty() { if (this.lockedFluidName == null && this.mFluid != null) { - this.setLockedFluidName(this.mFluid.getUnlocalizedName()); + this.setLockedFluidName(this.mFluid.getFluid().getName()); GT_Utility.sendChatToPlayer(playerThatLockedfluid, String.format(trans("151.4","Sucessfully locked Fluid to %s"), mFluid.getLocalizedName())); } } @@ -363,7 +365,7 @@ public class GT_MetaTileEntity_Hatch_Output extends GT_MetaTileEntity_Hatch { EnumChatFormatting.GOLD + (mFluid == null ? "No Fluid" : mFluid.getLocalizedName()) + EnumChatFormatting.RESET, EnumChatFormatting.GREEN + GT_Utility.formatNumbers(mFluid == null ? 0 : mFluid.amount) + " L" + EnumChatFormatting.RESET + " " + EnumChatFormatting.YELLOW + GT_Utility.formatNumbers(getCapacity()) + " L"+ EnumChatFormatting.RESET, - (!isFluidLocked() || lockedFluidName == null) ? "Not Locked" : ("Locked to " + StatCollector.translateToLocal(getLockedFluidName())) + (!isFluidLocked() || lockedFluidName == null) ? "Not Locked" : ("Locked to " + StatCollector.translateToLocal(FluidRegistry.getFluidStack(lockedFluidName, 1).getUnlocalizedName())) }; } }
\ No newline at end of file diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java index f7b15f2c44..431abe4a3c 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java @@ -724,7 +724,7 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity { if (!tHatch.outputsLiquids()) { continue; } - if (tHatch.isFluidLocked() && tHatch.getLockedFluidName() != null && !tHatch.getLockedFluidName().equals(copiedFluidStack.getUnlocalizedName())) { + if (tHatch.isFluidLocked() && tHatch.getLockedFluidName() != null && !tHatch.getLockedFluidName().equals(copiedFluidStack.getFluid().getName())) { continue; } } diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java index 07e5fcec73..742ae656cf 100644 --- a/src/main/java/gregtech/api/util/GT_Utility.java +++ b/src/main/java/gregtech/api/util/GT_Utility.java @@ -152,6 +152,7 @@ public class GT_Utility { private static final Map<GT_ItemStack, FluidContainerData> sFilledContainerToData = new /*Concurrent*/HashMap<>(); private static final Map<GT_ItemStack, Map<Fluid, FluidContainerData>> sEmptyContainerToFluidToData = new /*Concurrent*/HashMap<>(); private static final Map<Fluid, List<ItemStack>> sFluidToContainers = new HashMap<>(); + private static final Map<String, Fluid> sFluidUnlocalizedNameToFluid = new HashMap<>(); /** Must use {@code Supplier} here because the ore prefixes have not yet been registered at class load time. */ private static final Map<OrePrefixes, Supplier<ItemStack>> sOreToCobble = new HashMap<>(); public static volatile int VERSION = 509; @@ -1015,6 +1016,7 @@ public class GT_Utility { sFilledContainerToData.clear(); sEmptyContainerToFluidToData.clear(); sFluidToContainers.clear(); + sFluidUnlocalizedNameToFluid.clear(); for (FluidContainerData tData : sFluidContainerList) { sFilledContainerToData.put(new GT_ItemStack(tData.filledContainer), tData); Map<Fluid, FluidContainerData> tFluidToContainer = sEmptyContainerToFluidToData.get(new GT_ItemStack(tData.emptyContainer)); @@ -1031,6 +1033,13 @@ public class GT_Utility { } else tContainers.add(tData.filledContainer); } + for (Fluid tFluid : FluidRegistry.getRegisteredFluids().values()) { + sFluidUnlocalizedNameToFluid.put(tFluid.getUnlocalizedName(), tFluid); + } + } + + public static Fluid getFluidFromUnlocalizedName(String aUnlocalizedName) { + return sFluidUnlocalizedNameToFluid.get(aUnlocalizedName); } public static void addFluidContainerData(FluidContainerData aData) { diff --git a/src/main/java/gregtech/common/gui/GT_Container_OutputHatch.java b/src/main/java/gregtech/common/gui/GT_Container_OutputHatch.java index 2e217f6b1e..31a6224535 100644 --- a/src/main/java/gregtech/common/gui/GT_Container_OutputHatch.java +++ b/src/main/java/gregtech/common/gui/GT_Container_OutputHatch.java @@ -13,6 +13,7 @@ import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.ICrafting; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; @@ -43,14 +44,14 @@ public class GT_Container_OutputHatch extends GT_Container_BasicTank { FluidStack tReadyLockFluid = GT_Utility.getFluidForFilledItem(aPlayer.inventory.getItemStack(), true); byte tMode = tHatch.getMode(); // If player click the locker slot with empty or the same fluid cell, clear the lock fluid - if (tReadyLockFluid == null || (tMode >= 8 && tReadyLockFluid.getUnlocalizedName().equals(tHatch.getLockedFluidName()))) { + if (tReadyLockFluid == null || (tMode >= 8 && tReadyLockFluid.getFluid().getName().equals(tHatch.getLockedFluidName()))) { tHatch.setLockedFluidName(null); GT_Utility.sendChatToPlayer(aPlayer, trans("300", "Fluid Lock Cleared.")); tHatch.mMode = 0; fluidName = ""; } else { - tHatch.setLockedFluidName(tReadyLockFluid.getUnlocalizedName()); + tHatch.setLockedFluidName(tReadyLockFluid.getFluid().getName()); GT_Utility.sendChatToPlayer(aPlayer, String.format(trans("151.4", "Sucessfully locked Fluid to %s"), tReadyLockFluid.getLocalizedName())); tHatch.mMode = 9; fluidName = tReadyLockFluid.getUnlocalizedName(); @@ -115,9 +116,8 @@ public class GT_Container_OutputHatch extends GT_Container_BasicTank { sb.append(buffer.getChar(i * Character.BYTES + Integer.BYTES + 1)); } byte mode = buffer.get(Integer.BYTES); - FluidStack tFluid = FluidRegistry.getFluidStack(sb.toString().replace("fluid.", "") - .replace("tile.", "").replace(".name", "").replace("ic2.fluid", "ic2").toLowerCase(), 1); + FluidStack tFluid = FluidRegistry.getFluidStack(sb.toString(), 1); if (tFluid == null || mode < 8) return "Empty"; - else return tFluid.getLocalizedName().replace("fluid.", ""); + return tFluid.getLocalizedName().replace("fluid.", ""); } }
\ No newline at end of file |