aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorr4phael <albus.zly@gmail.com>2020-11-27 10:56:28 +0800
committerr4phael <albus.zly@gmail.com>2020-11-27 10:56:28 +0800
commit2ebb4f6bd0f2698c873bb46540ba30d036c7037d (patch)
tree259d5832de5935fd95dfc90a8b6dcd2f9c7f102f /src/main
parentbe74e3c855ad704c06adab48b838e1db17aad316 (diff)
downloadGT5-Unofficial-2ebb4f6bd0f2698c873bb46540ba30d036c7037d.tar.gz
GT5-Unofficial-2ebb4f6bd0f2698c873bb46540ba30d036c7037d.tar.bz2
GT5-Unofficial-2ebb4f6bd0f2698c873bb46540ba30d036c7037d.zip
Add lang file for detravscannermod
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/detrav/DetravScannerMod.java1
-rw-r--r--src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java29
-rw-r--r--src/main/java/com/detrav/items/behaviours/BehaviourDetravToolElectricProPick.java19
-rw-r--r--src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java47
-rw-r--r--src/main/java/com/detrav/net/DetravProPickPacket00.java5
-rw-r--r--src/main/resources/assets/detravscannermod/lang/en_US.lang39
-rw-r--r--src/main/resources/assets/detravscannermod/lang/zh_CN.lang39
7 files changed, 120 insertions, 59 deletions
diff --git a/src/main/java/com/detrav/DetravScannerMod.java b/src/main/java/com/detrav/DetravScannerMod.java
index dd693c0cd7..acf8ffec76 100644
--- a/src/main/java/com/detrav/DetravScannerMod.java
+++ b/src/main/java/com/detrav/DetravScannerMod.java
@@ -1,6 +1,5 @@
package com.detrav;
-import com.detrav.net.DetravProPickPacket00;
import com.detrav.utils.FluidColors;
import org.apache.logging.log4j.LogManager;
diff --git a/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java b/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java
index 6a80b7de0f..7144454b16 100644
--- a/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java
+++ b/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java
@@ -19,6 +19,7 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.StatCollector;
import net.minecraftforge.fluids.FluidStack;
import static com.detrav.DetravScannerMod.DEBUGBUILD;
@@ -67,18 +68,18 @@ public class DetravMetaGeneratedTool01 extends GT_MetaGenerated_Tool {
range += 1;
}
if (meta<100) {
- aList.add(tOffset + 0, EnumChatFormatting.WHITE + "Durability: " + EnumChatFormatting.GREEN + Long.toString(tMaxDamage - getToolDamage(aStack)) + " / " + Long.toString(tMaxDamage) + EnumChatFormatting.GRAY);
- aList.add(tOffset + 1, EnumChatFormatting.WHITE + tMaterial.mDefaultLocalName + EnumChatFormatting.GRAY);
- aList.add(tOffset + 2, EnumChatFormatting.WHITE + "Chunks: " +
+ aList.add(tOffset + 0, EnumChatFormatting.WHITE + StatCollector.translateToLocal("tooltip.detrav.scanner.durability") + EnumChatFormatting.GREEN + Long.toString(tMaxDamage - getToolDamage(aStack)) + " / " + Long.toString(tMaxDamage) + EnumChatFormatting.GRAY);
+ aList.add(tOffset + 1, EnumChatFormatting.WHITE + tMaterial.getLocalizedNameForItem("%material") + EnumChatFormatting.GRAY);
+ aList.add(tOffset + 2, EnumChatFormatting.WHITE + StatCollector.translateToLocal("tooltip.detrav.scanner.range") +
Integer.toString(range) +
"x"+
Integer.toString(range) +
EnumChatFormatting.GRAY);
- aList.add(tOffset + 3, EnumChatFormatting.ITALIC+ "Right click on rock for prospecting current chunk!" + EnumChatFormatting.GRAY);
- aList.add(tOffset + 4, EnumChatFormatting.ITALIC+ "Right click on bedrock for prospecting oil!" + EnumChatFormatting.GRAY);
- aList.add(tOffset + 5, EnumChatFormatting.ITALIC+ "Chance of a successful scan: "+EnumChatFormatting.RESET+Integer.toString(((((1+meta)*8) <= 100)? ((1+meta)*8) : 100))+EnumChatFormatting.GRAY+"%");
- aList.add(tOffset + 6, EnumChatFormatting.ITALIC+ "next to you (0 chunks away), close to you (1-2)");
- aList.add(tOffset + 7, EnumChatFormatting.ITALIC+ "at medium range (3-5), at long range (6-8), far away (9+)");
+ aList.add(tOffset + 3, EnumChatFormatting.ITALIC+ StatCollector.translateToLocal("tooltip.detrav.scanner.usage.0") + EnumChatFormatting.GRAY);
+ aList.add(tOffset + 4, EnumChatFormatting.ITALIC+ StatCollector.translateToLocal("tooltip.detrav.scanner.usage.1") + EnumChatFormatting.GRAY);
+ aList.add(tOffset + 5, EnumChatFormatting.ITALIC+ StatCollector.translateToLocal("tooltip.detrav.scanner.success.chance")+EnumChatFormatting.RESET+Integer.toString(((((1+meta)*8) <= 100)? ((1+meta)*8) : 100))+EnumChatFormatting.GRAY+"%");
+ aList.add(tOffset + 6, EnumChatFormatting.ITALIC+ StatCollector.translateToLocal("tooltip.detrav.scanner.distance.0"));
+ aList.add(tOffset + 7, EnumChatFormatting.ITALIC+ StatCollector.translateToLocal("tooltip.detrav.scanner.distance.1"));
/*aList.add(tOffset + 4, "Traces: 1-9");
aList.add(tOffset + 5, "Small: 10-29");
@@ -86,12 +87,12 @@ public class DetravMetaGeneratedTool01 extends GT_MetaGenerated_Tool {
aList.add(tOffset + 7, "Large: 60-99");
aList.add(tOffset + 8, "Very large: 100-***");*/
}else if (meta >=100 && meta<200) {
- aList.add(tOffset + 0, EnumChatFormatting.WHITE + "Durability: " + EnumChatFormatting.GREEN + (tMaxDamage - getToolDamage(aStack)) + " / " + tMaxDamage + EnumChatFormatting.GRAY);
- aList.add(tOffset + 1, EnumChatFormatting.WHITE + tMaterial.mDefaultLocalName + EnumChatFormatting.GRAY);
- aList.add(tOffset + 2, EnumChatFormatting.WHITE + "Chunks: " + EnumChatFormatting.YELLOW + (getHarvestLevel(aStack, "") * 2 + 1) + "x" + (getHarvestLevel(aStack, "") * 2 + 1) + EnumChatFormatting.GRAY);
- aList.add(tOffset + 3, EnumChatFormatting.ITALIC+ "Right click on rock for prospecting current chunk!");
- aList.add(tOffset + 4, EnumChatFormatting.ITALIC+ "Right click on bedrock for prospecting oil!");
- aList.add(tOffset + 5, EnumChatFormatting.ITALIC+ "Right click for scanning!");
+ aList.add(tOffset + 0, EnumChatFormatting.WHITE + StatCollector.translateToLocal("tooltip.detrav.scanner.durability") + EnumChatFormatting.GREEN + (tMaxDamage - getToolDamage(aStack)) + " / " + tMaxDamage + EnumChatFormatting.GRAY);
+ aList.add(tOffset + 1, EnumChatFormatting.WHITE + tMaterial.getLocalizedNameForItem("%material") + EnumChatFormatting.GRAY);
+ aList.add(tOffset + 2, EnumChatFormatting.WHITE + StatCollector.translateToLocal("tooltip.detrav.scanner.range") + EnumChatFormatting.YELLOW + (getHarvestLevel(aStack, "") * 2 + 1) + "x" + (getHarvestLevel(aStack, "") * 2 + 1) + EnumChatFormatting.GRAY);
+ aList.add(tOffset + 3, EnumChatFormatting.ITALIC+ StatCollector.translateToLocal("tooltip.detrav.scanner.usage.0"));
+ aList.add(tOffset + 4, EnumChatFormatting.ITALIC+ StatCollector.translateToLocal("tooltip.detrav.scanner.usage.1"));
+ aList.add(tOffset + 5, EnumChatFormatting.ITALIC+ StatCollector.translateToLocal("tooltip.detrav.scanner.usage.2"));
}
/* unused
diff --git a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolElectricProPick.java b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolElectricProPick.java
index 5dce44942a..fecec059dc 100644
--- a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolElectricProPick.java
+++ b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolElectricProPick.java
@@ -23,6 +23,7 @@ import net.minecraft.util.ChatComponentText;
import net.minecraft.world.World;
import net.minecraft.world.chunk.Chunk;
import net.minecraftforge.fluids.FluidStack;
+import net.minecraft.util.StatCollector;
import java.util.ArrayList;
import java.util.List;
@@ -44,19 +45,19 @@ public class BehaviourDetravToolElectricProPick extends BehaviourDetravToolProPi
if (data > 3) data = 0;
switch (data) {
case 0:
- aPlayer.addChatMessage(new ChatComponentText(GT_LanguageManager.sEnglishFile.get("LanguageFile", "gt.scanner.mode.0", "Set Mode: Ore, Any Rock Block").getString()));
+ aPlayer.addChatMessage(new ChatComponentText(StatCollector.translateToLocal("detrav.scanner.mode.0")));
break;
case 1:
- aPlayer.addChatMessage(new ChatComponentText(GT_LanguageManager.sEnglishFile.get("LanguageFile", "gt.scanner.mode.1", "Set Mode: Ore (with small), Any Rock Block").getString()));
+ aPlayer.addChatMessage(new ChatComponentText(StatCollector.translateToLocal("detrav.scanner.mode.1")));
break;
case 2:
- aPlayer.addChatMessage(new ChatComponentText(GT_LanguageManager.sEnglishFile.get("LanguageFile", "gt.scanner.mode.2", "Set Mode: Oil, Any Block").getString()));
+ aPlayer.addChatMessage(new ChatComponentText(StatCollector.translateToLocal("detrav.scanner.mode.2")));
break;
case 3:
- aPlayer.addChatMessage(new ChatComponentText(GT_LanguageManager.sEnglishFile.get("LanguageFile", "gt.scanner.mode.3", "Set Mode: Pollution, Any Block").getString()));
+ aPlayer.addChatMessage(new ChatComponentText(StatCollector.translateToLocal("detrav.scanner.mode.3")));
break;
default:
- aPlayer.addChatMessage(new ChatComponentText(GT_LanguageManager.sEnglishFile.get("LanguageFile", "gt.scanner.mode.error", "Set Mode: ERROR").getString()));
+ aPlayer.addChatMessage(new ChatComponentText(StatCollector.translateToLocal("detrav.scanner.mode.error")));
break;
}
DetravMetaGeneratedTool01.INSTANCE.setToolGTDetravData(aStack, (long) data);
@@ -83,7 +84,7 @@ public class BehaviourDetravToolElectricProPick extends BehaviourDetravToolProPi
packet.chunkX = cX;
packet.chunkZ = cZ;
packet.size = size;
- String small_ore_keyword = GT_LanguageManager.sEnglishFile.get("LanguageFile", "gt.scanner.small_ore.keyword", "Small").getString();
+ String small_ore_keyword = StatCollector.translateToLocal("detrav.scanner.small_ore.keyword");
for (Chunk c : chunks) {
for (int x = 0; x < 16; x++)
for (int z = 0; z < 16; z++) {
@@ -161,11 +162,11 @@ public class BehaviourDetravToolElectricProPick extends BehaviourDetravToolProPi
void addChatMassageByValue(EntityPlayer aPlayer, int value, String name) {
if (value < 0) {
- aPlayer.addChatMessage(new ChatComponentText(GT_LanguageManager.sEnglishFile.get("LanguageFile", "gt.scanner.foundtexts.6", foundTexts[6]).getString() + name));
+ aPlayer.addChatMessage(new ChatComponentText(StatCollector.translateToLocal("detrav.scanner.found.texts.6") + name));
} else if (value < 1) {
- aPlayer.addChatMessage(new ChatComponentText(GT_LanguageManager.sEnglishFile.get("LanguageFile", "gt.scanner.foundtexts.6", foundTexts[0]).getString()));
+ aPlayer.addChatMessage(new ChatComponentText(StatCollector.translateToLocal("detrav.scanner.found.texts.6")));
} else
- aPlayer.addChatMessage(new ChatComponentText(GT_LanguageManager.sEnglishFile.get("LanguageFile", "gt.scanner.foundtexts.6", foundTexts[6]).getString() + name + " " + value));
+ aPlayer.addChatMessage(new ChatComponentText(StatCollector.translateToLocal("detrav.scanner.found.texts.6") + name + " " + value));
}
public boolean onItemUse(GT_MetaBase_Item aItem, ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, int aSide, float hitX, float hitY, float hitZ) {
diff --git a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java
index 1e72bf22ae..19cbe655f5 100644
--- a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java
+++ b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java
@@ -24,6 +24,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import net.minecraft.world.chunk.Chunk;
import net.minecraftforge.fluids.FluidStack;
@@ -36,24 +37,6 @@ import java.util.SplittableRandom;
*/
public class BehaviourDetravToolProPick extends Behaviour_None {
- static final String[] foundTexts = new String[]{
- "Found nothing of interest", //0
- " traces.", //1-9
- " small sample.", //10-29
- " medium sample.", //30-59
- " large sample.", //60-99
- " very large sample.", //100-**
- "Found "
- };
-
- static final String[] DISTANCETEXTS = new String[]{
- " next to you,", // 0 chunks away
- " close to you,", // 1-2 chunks aways
- " at medium range,", // 3 - 5 chunks away
- " at long range,", // 6 -8 chunks away
- " far away,", // 9 + chunks away
- };
-
static final int[] DISTANCEINTS = new int[] {
0,
4,
@@ -131,7 +114,7 @@ public class BehaviourDetravToolProPick extends Behaviour_None {
}
}
if (DetravScannerMod.DEBUGBUILD)
- aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW+"Chunk at "+ aX +"|"+aZ+" to "+(aX+16)+"|"+(aZ+16) + GT_LanguageManager.sEnglishFile.get("LanguageFile", "gt.scanner.distancetexts."+distTextIndex, DISTANCETEXTS[distTextIndex]).getString()));
+ aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW+"Chunk at "+ aX +"|"+aZ+" to "+(aX+16)+"|"+(aZ+16) + StatCollector.translateToLocal("detrav.scanner.distance.texts." + distTextIndex)));
processOreProspecting((DetravMetaGeneratedTool01) aItem, aStack, aPlayer, aWorld.getChunkFromBlockCoords(aX, aZ), aWorld.getTileEntity(aX, aY, aZ),GT_OreDictUnificator.getAssociation(new ItemStack(aWorld.getBlock(aX, aY, aZ), 1, aWorld.getBlockMetadata(aX, aY, aZ))), aRandom, chance);
}
}
@@ -142,9 +125,9 @@ public class BehaviourDetravToolProPick extends Behaviour_None {
}
if( badluck == 0) {
- aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.WHITE + GT_LanguageManager.sEnglishFile.get("LanguageFile", "gt.scanner.success", "All chunks scanned successfully!").getString()));
+ aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.WHITE + StatCollector.translateToLocal("detrav.scanner.success")));
} else {
- aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.WHITE + GT_LanguageManager.sEnglishFile.get("LanguageFile", "gt.scanner.fail", "Failed on %badluck chunks. Better luck next time!").getString().replace("%badluck", Integer.toString(badluck))));
+ aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.WHITE + StatCollector.translateToLocal("detrav.scanner.fail").replace("%badluck", Integer.toString(badluck))));
}
}
@@ -152,7 +135,7 @@ public class BehaviourDetravToolProPick extends Behaviour_None {
protected void prospectSingleChunk(GT_MetaBase_Item aItem, ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ )
{
ores = new HashMap<String, Integer>();
- aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.GOLD+ GT_LanguageManager.sEnglishFile.get("LanguageFile", "gt.scanner.prospecting", "Prospecting at ").getString() + EnumChatFormatting.BLUE + "(" + aX + ", " + aZ + ")" ));
+ aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.GOLD+ StatCollector.translateToLocal("detrav.scanner.prospecting") + EnumChatFormatting.BLUE + "(" + aX + ", " + aZ + ")" ));
processOreProspecting((DetravMetaGeneratedTool01) aItem, aStack, aPlayer, aWorld.getChunkFromBlockCoords(aX, aZ), aWorld.getTileEntity(aX, aY, aZ),GT_OreDictUnificator.getAssociation(new ItemStack(aWorld.getBlock(aX, aY, aZ), 1, aWorld.getBlockMetadata(aX, aY, aZ))), new SplittableRandom(), 1000);
for (String key : ores.keySet()) {
@@ -205,14 +188,12 @@ public class BehaviourDetravToolProPick extends Behaviour_None {
try {
String name = Materials.getLocalizedNameForItem(
GT_LanguageManager.getTranslation(tBlock.getUnlocalizedName() + "." + tMetaID + ".name"), tMetaID%1000);
- if (name.startsWith("Small")) if (data != 1) continue;
- if (name.startsWith("Small")) if(data!=1) continue;
+ if (name.startsWith(StatCollector.translateToLocal("detrav.scanner.small_ore.keyword"))) if (data != 1) continue;
addOreToHashMap(name, aPlayer);
}
catch(Exception e) {
String name = tBlock.getUnlocalizedName() + ".";
if (name.contains(".small.")) if (data != 1) continue;
- if (name.startsWith("Small")) if(data!=1) continue;
addOreToHashMap(name, aPlayer);
}
}
@@ -265,7 +246,7 @@ public class BehaviourDetravToolProPick extends Behaviour_None {
}
void addOreToHashMap(String orename, EntityPlayer aPlayer) {
- String oreDistance = orename + GT_LanguageManager.sEnglishFile.get("LanguageFile", "gt.scanner.distancetexts."+distTextIndex, DISTANCETEXTS[distTextIndex]).getString(); // orename + the textual distance of the ore
+ String oreDistance = orename + StatCollector.translateToLocal("detrav.scanner.distance.texts." + distTextIndex); // orename + the textual distance of the ore
if (!ores.containsKey(oreDistance)) {
if (DetravScannerMod.DEBUGBUILD)
aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.GREEN+" Adding to oremap " + oreDistance));
@@ -278,19 +259,19 @@ public class BehaviourDetravToolProPick extends Behaviour_None {
void addChatMassageByValue(EntityPlayer aPlayer, int value, String name) {
if (value < 0) {
- aPlayer.addChatMessage(new ChatComponentText(GT_LanguageManager.sEnglishFile.get("LanguageFile", "gt.scanner.foundtexts.6", foundTexts[6]).getString() + name));
+ aPlayer.addChatMessage(new ChatComponentText(StatCollector.translateToLocal("detrav.scanner.found.texts.6") + name));
} else if (value < 1) {
- aPlayer.addChatMessage(new ChatComponentText(GT_LanguageManager.sEnglishFile.get("LanguageFile", "gt.scanner.foundtexts.0", foundTexts[0]).getString()));
+ aPlayer.addChatMessage(new ChatComponentText(StatCollector.translateToLocal("detrav.scanner.found.texts.0")));
} else if (value < 10)
- aPlayer.addChatMessage(new ChatComponentText(name + GT_LanguageManager.sEnglishFile.get("LanguageFile", "gt.scanner.foundtexts.1", foundTexts[1]).getString()));
+ aPlayer.addChatMessage(new ChatComponentText(name + StatCollector.translateToLocal("detrav.scanner.found.texts.1")));
else if (value < 30)
- aPlayer.addChatMessage(new ChatComponentText(name + GT_LanguageManager.sEnglishFile.get("LanguageFile", "gt.scanner.foundtexts.2", foundTexts[2]).getString()));
+ aPlayer.addChatMessage(new ChatComponentText(name + StatCollector.translateToLocal("detrav.scanner.found.texts.2")));
else if (value < 60)
- aPlayer.addChatMessage(new ChatComponentText(name + GT_LanguageManager.sEnglishFile.get("LanguageFile", "gt.scanner.foundtexts.3", foundTexts[3]).getString()));
+ aPlayer.addChatMessage(new ChatComponentText(name + StatCollector.translateToLocal("detrav.scanner.found.texts.3")));
else if (value < 100)
- aPlayer.addChatMessage(new ChatComponentText(name + GT_LanguageManager.sEnglishFile.get("LanguageFile", "gt.scanner.foundtexts.4", foundTexts[4]).getString()));
+ aPlayer.addChatMessage(new ChatComponentText(name + StatCollector.translateToLocal("detrav.scanner.found.texts.4")));
else
- aPlayer.addChatMessage(new ChatComponentText(name + GT_LanguageManager.sEnglishFile.get("LanguageFile", "gt.scanner.foundtexts.5", foundTexts[5]).getString()));
+ aPlayer.addChatMessage(new ChatComponentText(name + StatCollector.translateToLocal("detrav.scanner.found.texts.5")));
}
public static int getPolution(World aWorld, int aX, int aZ)
diff --git a/src/main/java/com/detrav/net/DetravProPickPacket00.java b/src/main/java/com/detrav/net/DetravProPickPacket00.java
index 1049e475f8..0a50fbbeed 100644
--- a/src/main/java/com/detrav/net/DetravProPickPacket00.java
+++ b/src/main/java/com/detrav/net/DetravProPickPacket00.java
@@ -11,6 +11,7 @@ import com.google.common.io.ByteStreams;
import gregtech.api.GregTech_API;
import gregtech.api.enums.Materials;
import gregtech.api.util.GT_LanguageManager;
+import net.minecraft.util.StatCollector;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
@@ -242,7 +243,7 @@ public class DetravProPickPacket00 extends DetravPacket {
name = FluidRegistry.getFluid( metas[0] ).getLocalizedName(new FluidStack( FluidRegistry.getFluid( metas[0] ), 0) );
if (name == null) {
- name = "Unknown Fluid name!";
+ name = StatCollector.translateToLocal("gui.detrav.scanner.unknown_fluid");
}
if (!ores.containsKey(name))
@@ -277,7 +278,7 @@ public class DetravProPickPacket00 extends DetravPacket {
}
break;
case 3:
- ores.put("Pollution", ((0 & 0xFF) << 16) + ((0 & 0xFF) << 8) + ((0 & 0xFF)));
+ ores.put(StatCollector.translateToLocal("gui.detrav.scanner.pollution"), ((0 & 0xFF) << 16) + ((0 & 0xFF) << 8) + ((0 & 0xFF)));
for (int i = 0; i < wh; i++)
for (int j = 0; j < wh; j++) {
if (map[i][j] == null) {
diff --git a/src/main/resources/assets/detravscannermod/lang/en_US.lang b/src/main/resources/assets/detravscannermod/lang/en_US.lang
new file mode 100644
index 0000000000..8044a17c7e
--- /dev/null
+++ b/src/main/resources/assets/detravscannermod/lang/en_US.lang
@@ -0,0 +1,39 @@
+detrav.scanner.mode.0=Set Mode: Ore, Any Rock Block
+detrav.scanner.mode.1=Set Mode: Ore (with small), Any Rock Block
+detrav.scanner.mode.2=Set Mode: Oil, Any Block
+detrav.scanner.mode.3=Set Mode: Pollution, Any Block
+detrav.scanner.mode.error=Set Mode: ERROR
+
+detrav.scanner.distance.texts.0= next to you,
+detrav.scanner.distance.texts.1= close to you,
+detrav.scanner.distance.texts.2= at medium range,
+detrav.scanner.distance.texts.3= at long range,
+detrav.scanner.distance.texts.4= far away,
+
+detrav.scanner.small_ore.keyword=Small
+
+detrav.scanner.found.texts.0=Found nothing of interest
+detrav.scanner.found.texts.1= traces.
+detrav.scanner.found.texts.2= small sample.
+detrav.scanner.found.texts.3= medium sample.
+detrav.scanner.found.texts.4= large sample.
+detrav.scanner.found.texts.5= very large sample.
+detrav.scanner.found.texts.6=Found
+
+# Don't translate "%badluck"
+detrav.scanner.success=All chunks scanned successfully!
+detrav.scanner.fail=Failed on %badluck chunks. Better luck next time!
+
+detrav.scanner.prospecting=Prospecting at
+
+tooltip.detrav.scanner.durability=Durability:
+tooltip.detrav.scanner.range=Chunks:
+tooltip.detrav.scanner.usage.0=Right click on rock for prospecting current chunk!
+tooltip.detrav.scanner.usage.1=Right click on bedrock for prospecting oil!
+tooltip.detrav.scanner.usage.2=Right click for scanning!
+tooltip.detrav.scanner.success.chance=Chance of a successful scan:
+tooltip.detrav.scanner.distance.0=next to you (0 chunks away), close to you (1-2)
+tooltip.detrav.scanner.distance.1=at medium range (3-5), at long range (6-8), far away (9+)
+
+gui.detrav.scanner.pollution=Pollution
+gui.detrav.scanner.unknown_fluid=Unknown Fluid name! \ No newline at end of file
diff --git a/src/main/resources/assets/detravscannermod/lang/zh_CN.lang b/src/main/resources/assets/detravscannermod/lang/zh_CN.lang
new file mode 100644
index 0000000000..14b18f3150
--- /dev/null
+++ b/src/main/resources/assets/detravscannermod/lang/zh_CN.lang
@@ -0,0 +1,39 @@
+detrav.scanner.mode.0=当前模式:矿石
+detrav.scanner.mode.1=当前模式:矿石(含贫瘠矿石)
+detrav.scanner.mode.2=当前模式:原油
+detrav.scanner.mode.3=当前模式:污染
+detrav.scanner.mode.error=当前模式:错误
+
+detrav.scanner.distance.texts.0= 位于当前区块,
+detrav.scanner.distance.texts.1= 距离1-2区块,
+detrav.scanner.distance.texts.2= 距离3-5区块,
+detrav.scanner.distance.texts.3= 距离6-8区块,
+detrav.scanner.distance.texts.4= 距离9区块及以上,
+
+detrav.scanner.small_ore.keyword=贫瘠
+
+detrav.scanner.found.texts.0=没有发现矿石
+detrav.scanner.found.texts.1=零星
+detrav.scanner.found.texts.2=少量
+detrav.scanner.found.texts.3=中等
+detrav.scanner.found.texts.4=较多
+detrav.scanner.found.texts.5=极多
+detrav.scanner.found.texts.6=发现
+
+# Don't translate "%badluck"
+detrav.scanner.success=全部区块勘探成功!
+detrav.scanner.fail=%badluck个区块勘探失败。祝你下次好运!
+
+detrav.scanner.prospecting=正在勘探
+
+tooltip.detrav.scanner.durability=耐久:
+tooltip.detrav.scanner.range=勘探范围(区块):
+tooltip.detrav.scanner.usage.0=右键任意岩石勘探当前区块!
+tooltip.detrav.scanner.usage.1=右键基岩勘探原油!
+tooltip.detrav.scanner.usage.2=右键空气开始扫描!
+tooltip.detrav.scanner.success.chance=勘探成功率:
+tooltip.detrav.scanner.distance.0=位于当前区块 (距离0), 距离1-2区块 (1-2)
+tooltip.detrav.scanner.distance.1=距离3-5区块 (3-5), 距离6-8区块 (6-8), 距离9区块及以上 (9+)
+
+gui.detrav.scanner.pollution=污染
+gui.detrav.scanner.unknown_fluid=未知流体! \ No newline at end of file