aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYang Xizhi <60341015+GlodBlock@users.noreply.github.com>2021-12-14 06:32:11 +0800
committerGitHub <noreply@github.com>2021-12-13 23:32:11 +0100
commit9414fc9625f2a9a854f59d19bdcc2eaa10af3048 (patch)
tree7e136ee8f86aa74e12af5a78dda24ff80b1f37ef
parent11903e892d8de8b5722128f4c22bd150ccb4a728 (diff)
downloadGT5-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
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Output.java20
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java2
-rw-r--r--src/main/java/gregtech/api/util/GT_Utility.java9
-rw-r--r--src/main/java/gregtech/common/gui/GT_Container_OutputHatch.java10
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