aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorAlexdoru <57050655+Alexdoru@users.noreply.github.com>2024-09-14 19:45:56 +0200
committerboubou19 <miisterunknown@gmail.com>2024-09-17 22:55:46 +0200
commitfa9244831214fe88f3801fd42f87c92ae9f33113 (patch)
tree95709e998e6a0417966396d9a80d9426796b4462 /src/main/java
parent9e74ed7a31b9bdfe41f337d93ec719f5ac6d4a3e (diff)
downloadGT5-Unofficial-fa9244831214fe88f3801fd42f87c92ae9f33113.tar.gz
GT5-Unofficial-fa9244831214fe88f3801fd42f87c92ae9f33113.tar.bz2
GT5-Unofficial-fa9244831214fe88f3801fd42f87c92ae9f33113.zip
initialize the material maps used by detrav ore scanner only when they are used
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/detrav/DetravScannerMod.java2
-rw-r--r--src/main/java/detrav/items/behaviours/BehaviourDetravToolElectricProspector.java2
-rw-r--r--src/main/java/detrav/net/ProspectingPacket.java6
-rw-r--r--src/main/java/detrav/utils/GTppHelper.java54
4 files changed, 40 insertions, 24 deletions
diff --git a/src/main/java/detrav/DetravScannerMod.java b/src/main/java/detrav/DetravScannerMod.java
index c65bc49a34..17e859216b 100644
--- a/src/main/java/detrav/DetravScannerMod.java
+++ b/src/main/java/detrav/DetravScannerMod.java
@@ -15,7 +15,6 @@ import detrav.items.processing.ProcessingDetravToolProspector;
import detrav.net.DetravNetwork;
import detrav.proxies.CommonProxy;
import detrav.utils.DetravCreativeTab;
-import detrav.utils.GTppHelper;
import gregtech.GT_Version;
import gregtech.api.GregTechAPI;
@@ -64,6 +63,5 @@ public class DetravScannerMod {
@EventHandler
public void onPostLoad(FMLPostInitializationEvent aEvent) {
proxy.onPostLoad();
- GTppHelper.generate_OreIDs();
}
}
diff --git a/src/main/java/detrav/items/behaviours/BehaviourDetravToolElectricProspector.java b/src/main/java/detrav/items/behaviours/BehaviourDetravToolElectricProspector.java
index 04b1c47cf6..fb3e483399 100644
--- a/src/main/java/detrav/items/behaviours/BehaviourDetravToolElectricProspector.java
+++ b/src/main/java/detrav/items/behaviours/BehaviourDetravToolElectricProspector.java
@@ -104,7 +104,7 @@ public class BehaviourDetravToolElectricProspector extends BehaviourDetravToolPr
c.xPosition * 16 + x,
y,
c.zPosition * 16 + z,
- GTppHelper.getGTppMeta(tBlock));
+ GTppHelper.getMetaFromBlock(tBlock));
} else if (BartWorksHelper.isOre(tBlock)) {
if (data != 1 && BartWorksHelper.isSmallOre(tBlock)) continue;
packet.addBlock(
diff --git a/src/main/java/detrav/net/ProspectingPacket.java b/src/main/java/detrav/net/ProspectingPacket.java
index 901a57d932..1b861273e5 100644
--- a/src/main/java/detrav/net/ProspectingPacket.java
+++ b/src/main/java/detrav/net/ProspectingPacket.java
@@ -74,9 +74,9 @@ public class ProspectingPacket extends DetravPacket {
rgba = werkstoff.getRGBA();
}
} else {
- gtPlusPlus.core.material.Material pMaterial = GTppHelper.decodeoresGTpp.get((short) (meta - 7000));
- rgba = pMaterial.getRGBA();
- name = pMaterial.getLocalizedName() + " Ore";
+ gtPlusPlus.core.material.Material mat = GTppHelper.getMatFromMeta(meta);
+ rgba = mat.getRGBA();
+ name = mat.getLocalizedName() + " Ore";
}
} else if (packet.ptype == 2) {
// Fluid
diff --git a/src/main/java/detrav/utils/GTppHelper.java b/src/main/java/detrav/utils/GTppHelper.java
index 985ca3386b..483e8cfd5e 100644
--- a/src/main/java/detrav/utils/GTppHelper.java
+++ b/src/main/java/detrav/utils/GTppHelper.java
@@ -1,9 +1,11 @@
package detrav.utils;
+import java.lang.reflect.Field;
import java.util.HashMap;
import net.minecraft.block.Block;
+import gregtech.GTMod;
import gtPlusPlus.core.block.base.BlockBaseOre;
import gtPlusPlus.core.material.Material;
import gtPlusPlus.core.material.MaterialMisc;
@@ -12,23 +14,27 @@ import gtPlusPlus.core.material.MaterialsElements;
import gtPlusPlus.core.material.MaterialsOres;
import gtPlusPlus.core.material.nuclear.MaterialsFluorides;
-/**
- * Created by bartimaeusnek on 19.04.2018.
- */
public class GTppHelper {
- public static final HashMap<Short, Material> decodeoresGTpp = new HashMap<>();
- public static final HashMap<Material, Short> encodeoresGTpp = new HashMap<>();
+ private static boolean initialized;
+ private static final HashMap<Short, Material> decodeoresGTpp = new HashMap<>();
+ private static final HashMap<Material, Short> encodeoresGTpp = new HashMap<>();
- public static void generate_OreIDs() {
+ private static void generate_OreIDs() {
short n = 0;
- for (; n < MaterialsOres.class.getFields().length; ++n) {
+ final Field[] fields = MaterialsOres.class.getFields();
+ for (; n < fields.length; ++n) {
try {
- Short i = (short) (n + 1);
- Material m = ((Material) MaterialsOres.class.getFields()[n].get(MaterialsOres.class.getFields()[n]));
- decodeoresGTpp.put(i, m);
- encodeoresGTpp.put(m, i);
- } catch (Exception ignored) {}
+ final Object o = fields[n].get(null);
+ if (o instanceof Material m) {
+ Short i = (short) (n + 1);
+ decodeoresGTpp.put(i, m);
+ encodeoresGTpp.put(m, i);
+ }
+ } catch (Exception e) {
+ GTMod.GT_FML_LOGGER
+ .error("Exception caught when trying to generate GT++ ore ids for detrav ore scanner", e);
+ }
}
// Manually add ores from other places than the ore class
// Fluorite
@@ -52,16 +58,28 @@ public class GTppHelper {
encodeoresGTpp.put(MaterialsElements.STANDALONE.GRANITE, (short) (n + 1));
}
- public static boolean isGTppBlock(Block tBlock) {
- return tBlock instanceof BlockBaseOre;
+ public static short getMetaFromBlock(Block block) {
+ if (!initialized) {
+ generate_OreIDs();
+ initialized = true;
+ }
+ return (short) (GTppHelper.encodeoresGTpp.get(((BlockBaseOre) block).getMaterialEx()) + 7000);
+ }
+
+ public static Material getMatFromMeta(int meta) {
+ if (!initialized) {
+ generate_OreIDs();
+ initialized = true;
+ }
+ return GTppHelper.decodeoresGTpp.get((short) (meta - 7000));
}
- public static short getGTppMeta(Block tBlock) {
- return (short) (GTppHelper.encodeoresGTpp.get(((BlockBaseOre) tBlock).getMaterialEx()) + 7000);
+ public static boolean isGTppBlock(Block block) {
+ return block instanceof BlockBaseOre;
}
- public static String getGTppVeinName(Block tBlock) {
- return tBlock.getLocalizedName();
+ public static String getGTppVeinName(Block block) {
+ return block.getLocalizedName();
}
}