diff options
Diffstat (limited to 'src')
3 files changed, 81 insertions, 24 deletions
diff --git a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProspector.java b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProspector.java index 65c25d0b1b..7b87da7b50 100644 --- a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProspector.java +++ b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProspector.java @@ -29,6 +29,9 @@ import net.minecraft.world.World; import net.minecraft.world.chunk.Chunk; import net.minecraftforge.fluids.FluidStack; +import java.util.List; +import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.SplittableRandom; @@ -45,6 +48,8 @@ public class BehaviourDetravToolProspector extends Behaviour_None { protected final int mCosts; + static final String CHAT_MSG_SEPARATOR = "--------------------"; + public BehaviourDetravToolProspector(int aCosts) { mCosts = aCosts; } @@ -114,15 +119,49 @@ public class BehaviourDetravToolProspector extends Behaviour_None { } } + // List to hold unsorted scanner messages + List<ChatComponentText> oreMessages = new ArrayList<ChatComponentText>(); + for (String key : ores.keySet()) { int value = ores.get(key); - addChatMassageByValue(aPlayer,value,key); + appendChatMessageByValue(oreMessages, aPlayer,value,key); + } + + // Define sort order by distance + List<String> sortOrder = Arrays.asList( + StatCollector.translateToLocal("detrav.scanner.distance.texts.4"), + StatCollector.translateToLocal("detrav.scanner.distance.texts.3"), + StatCollector.translateToLocal("detrav.scanner.distance.texts.2"), + StatCollector.translateToLocal("detrav.scanner.distance.texts.1"), + StatCollector.translateToLocal("detrav.scanner.distance.texts.0") + ); + + List<ChatComponentText> oreMessagesSorted = new ArrayList<ChatComponentText>(); + oreMessagesSorted.add(new ChatComponentText(CHAT_MSG_SEPARATOR)); + + // Sort ore messages by distance, separated by ----- + for(String oreFrequency : sortOrder) { + for(ChatComponentText msg : oreMessages) { + if (msg.getChatComponentText_TextValue().contains(oreFrequency)) { + oreMessagesSorted.add(msg); + } + } + + // Only append ----- separator if text has been added + if (!oreMessagesSorted.get(oreMessagesSorted.size() - 1).getChatComponentText_TextValue().contains(CHAT_MSG_SEPARATOR)) { + oreMessagesSorted.add(new ChatComponentText(CHAT_MSG_SEPARATOR)); + } } if( badluck == 0) { - aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.WHITE + StatCollector.translateToLocal("detrav.scanner.success"))); + oreMessages.add(new ChatComponentText(EnumChatFormatting.WHITE + StatCollector.translateToLocal("detrav.scanner.success"))); } else { - aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.WHITE + StatCollector.translateToLocal("detrav.scanner.fail").replace("%badluck", Integer.toString(badluck)))); + oreMessages.add(new ChatComponentText(EnumChatFormatting.WHITE + StatCollector.translateToLocal("detrav.scanner.fail").replace("%badluck", Integer.toString(badluck)))); + } + + // Print the sorted messages + for(ChatComponentText msg : oreMessagesSorted) { + aPlayer.addChatMessage(msg); } } @@ -263,6 +302,24 @@ public class BehaviourDetravToolProspector extends Behaviour_None { aPlayer.addChatMessage(new ChatComponentText(name + StatCollector.translateToLocal("detrav.scanner.found.texts.5"))); } + // Same as addChatMassageByValue but appends to a list of chat messages and spelled correctly + void appendChatMessageByValue(List<ChatComponentText> chatMessageList, EntityPlayer aPlayer, int value, String name) { + if (value < 0) { + chatMessageList.add(new ChatComponentText(StatCollector.translateToLocal("detrav.scanner.found.texts.6") + name)); + } else if (value < 1) { + chatMessageList.add(new ChatComponentText(StatCollector.translateToLocal("detrav.scanner.found.texts.0"))); + } else if (value < 10) + chatMessageList.add(new ChatComponentText(name + StatCollector.translateToLocal("detrav.scanner.found.texts.1"))); + else if (value < 30) + chatMessageList.add(new ChatComponentText(name + StatCollector.translateToLocal("detrav.scanner.found.texts.2"))); + else if (value < 60) + chatMessageList.add(new ChatComponentText(name + StatCollector.translateToLocal("detrav.scanner.found.texts.3"))); + else if (value < 100) + chatMessageList.add(new ChatComponentText(name + StatCollector.translateToLocal("detrav.scanner.found.texts.4"))); + else + chatMessageList.add(new ChatComponentText(name + StatCollector.translateToLocal("detrav.scanner.found.texts.5"))); + } + public static int getPolution(World aWorld, int aX, int aZ) { return GT_Pollution.getPollution(aWorld.getChunkFromBlockCoords(aX, aZ)); diff --git a/src/main/resources/assets/detravscannermod/lang/en_US.lang b/src/main/resources/assets/detravscannermod/lang/en_US.lang index 1ace46a6b3..b3c8e569b1 100644 --- a/src/main/resources/assets/detravscannermod/lang/en_US.lang +++ b/src/main/resources/assets/detravscannermod/lang/en_US.lang @@ -4,21 +4,21 @@ detrav.scanner.mode.2=Set Mode: Underground Fluids detrav.scanner.mode.3=Set Mode: Pollution 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.distance.texts.0= §nnext to you,§r +detrav.scanner.distance.texts.1= §nclose to you,§r +detrav.scanner.distance.texts.2= §nat medium range,§r +detrav.scanner.distance.texts.3= §nat long range,§r +detrav.scanner.distance.texts.4= §nfar away,§r 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 +detrav.scanner.found.texts.1= §8traces§r. +detrav.scanner.found.texts.2= §7small sample§r. +detrav.scanner.found.texts.3= §2medium sample§r. +detrav.scanner.found.texts.4= §elarge sample§r. +detrav.scanner.found.texts.5= §dvery large sample§r. +detrav.scanner.found.texts.6=Found # Don't translate "%badluck" detrav.scanner.success=All chunks scanned successfully! diff --git a/src/main/resources/assets/detravscannermod/lang/zh_CN.lang b/src/main/resources/assets/detravscannermod/lang/zh_CN.lang index c5b920e60e..8f6f1ca137 100644 --- a/src/main/resources/assets/detravscannermod/lang/zh_CN.lang +++ b/src/main/resources/assets/detravscannermod/lang/zh_CN.lang @@ -4,20 +4,20 @@ 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.distance.texts.0= §n位于当前区块§r, +detrav.scanner.distance.texts.1= §n距离1-2区块§r, +detrav.scanner.distance.texts.2= §n距离3-5区块§r, +detrav.scanner.distance.texts.3= §n距离6-8区块§r, +detrav.scanner.distance.texts.4= §n距离9区块及以上§r, detrav.scanner.small_ore.keyword=贫瘠 detrav.scanner.found.texts.0=没有发现矿石 -detrav.scanner.found.texts.1= 零星(1-9). -detrav.scanner.found.texts.2= 少量(10-29). -detrav.scanner.found.texts.3= 中等(30-59). -detrav.scanner.found.texts.4= 较多(60-99). -detrav.scanner.found.texts.5= 极多(100+). +detrav.scanner.found.texts.1= §8零星(1-9)§r. +detrav.scanner.found.texts.2= §7少量(10-29)§r. +detrav.scanner.found.texts.3= §2中等(30-59)§r. +detrav.scanner.found.texts.4= §e较多(60-99)§r. +detrav.scanner.found.texts.5= §d极多(100+)§r. detrav.scanner.found.texts.6=发现 # Don't translate "%badluck" |