From 801213a86027b38e615861e73337b65821e74a44 Mon Sep 17 00:00:00 2001 From: Richard Hendricks Date: Tue, 14 Aug 2018 03:11:05 -0500 Subject: Updated version to 1.5.1. Fixed basic prospector behavior. Changed to display summary of ores found and distance from player. Adjusted range down overall. Increased success chance slightly. Increased durability. --- build.properties | 2 +- src/main/java/com/detrav/DetravScannerMod.java | 2 +- .../detrav/items/DetravMetaGeneratedTool01.java | 18 ++- .../behaviours/BehaviourDetravToolProPick.java | 174 +++++++++++---------- .../java/com/detrav/items/tools/DetravProPick.java | 2 +- src/main/resources/mcmod.info | 4 +- 6 files changed, 110 insertions(+), 92 deletions(-) diff --git a/build.properties b/build.properties index ce6e505857..40a794bffd 100644 --- a/build.properties +++ b/build.properties @@ -1,7 +1,7 @@ minecraft.version=1.7.10 forge.version=10.13.4.1614-1.7.10 -detravscanner.version=1.5.0a +detravscanner.version=1.5.1 ae2.version=rv2-beta-33 applecore.version=1.7.10-1.2.1+107.59407 diff --git a/src/main/java/com/detrav/DetravScannerMod.java b/src/main/java/com/detrav/DetravScannerMod.java index 5ffaff866c..8898a98dd0 100644 --- a/src/main/java/com/detrav/DetravScannerMod.java +++ b/src/main/java/com/detrav/DetravScannerMod.java @@ -23,7 +23,7 @@ import net.minecraftforge.common.config.Configuration; public class DetravScannerMod { public static final String MODID = "detravscannermod"; - public static final String VERSION = "1.4.2"; + public static final String VERSION = "1.5.1"; public static final boolean DEBUGBUILD = false; public static final CreativeTabs TAB_DETRAV = new DetravCreativeTab(); diff --git a/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java b/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java index 4c10d28dde..62d296077c 100644 --- a/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java +++ b/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java @@ -39,6 +39,7 @@ public class DetravMetaGeneratedTool01 extends GT_MetaGenerated_Tool { addTool(14,"Prospector's Scanner(ZPM)","", new DetravProPick(7), new Object[]{DetravToolDictNames.craftingToolProPick, new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L)}, new TC_Aspects.TC_AspectStack(TC_Aspects.PERFODIO, 4L)); addTool(16,"Prospector's Scanner(UV)","", new DetravProPick(8), new Object[]{DetravToolDictNames.craftingToolProPick, new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L)}, new TC_Aspects.TC_AspectStack(TC_Aspects.PERFODIO, 4L)); addTool(18,"Prospector's Scanner(UHV)","", new DetravProPick(9), new Object[]{DetravToolDictNames.craftingToolProPick, new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L)}, new TC_Aspects.TC_AspectStack(TC_Aspects.PERFODIO, 4L)); + addTool(100, "Electric Prospector's Scanner (LuV)", "", new DetravToolElectricProPick(6), new Object[]{DetravToolDictNames.craftingToolElectricProPick, new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L)}, new TC_Aspects.TC_AspectStack(TC_Aspects.ELECTRUM, 4L)); addTool(102, "Electric Prospector's Scanner (ZPM)", "", new DetravToolElectricProPick(7), new Object[]{DetravToolDictNames.craftingToolElectricProPick, new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L)}, new TC_Aspects.TC_AspectStack(TC_Aspects.ELECTRUM, 4L)); addTool(104, "Electric Prospector's Scanner (UV)", "", new DetravToolElectricProPick(8), new Object[]{DetravToolDictNames.craftingToolElectricProPick, new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L)}, new TC_Aspects.TC_AspectStack(TC_Aspects.ELECTRUM, 4L)); @@ -46,8 +47,6 @@ public class DetravMetaGeneratedTool01 extends GT_MetaGenerated_Tool { setCreativeTab(DetravScannerMod.TAB_DETRAV); } - - public void addAdditionalToolTips(List aList, ItemStack aStack, EntityPlayer aPlayer) { //getElectricStats() //super.addAdditionalToolTips(); @@ -60,13 +59,24 @@ public class DetravMetaGeneratedTool01 extends GT_MetaGenerated_Tool { String name = aStack.getUnlocalizedName(); String num = name.substring("gt.detrav.metatool.01.".length()); int meta = Integer.parseInt(num); + int range = getHarvestLevel(aStack, "")/2+(meta/4); + if ((range % 2) == 0 ) { + 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: " + Integer.toString(getHarvestLevel(aStack, "")+(meta/4))+ "x"+Integer.toString(getHarvestLevel(aStack, "")+(meta/4)) + EnumChatFormatting.GRAY); + aList.add(tOffset + 2, EnumChatFormatting.WHITE + "Chunks: " + + 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)*7) <= 100)? ((1+meta)*7) : 100))+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 + 4, "Traces: 1-9"); aList.add(tOffset + 5, "Small: 10-29"); aList.add(tOffset + 6, "Medium: 30-59"); diff --git a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java index ffd8122380..52bae97da3 100644 --- a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java +++ b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java @@ -38,13 +38,33 @@ public class BehaviourDetravToolProPick extends Behaviour_None { static final String[] foundTexts = new String[]{ "Found nothing of interest", //0 - "Found Traces of ", //1-9 - "Found a small sample of ", //10-29 - "Found a medium sample of ", //30-59 - "Found a large sample of ", //60-99 - "Found a very large sample of ", //100-** + " 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, + 25, + 64, + }; + int distTextIndex; + + HashMap ores; + int badluck; + protected final int mCosts; public BehaviourDetravToolProPick(int aCosts) { @@ -54,7 +74,7 @@ public class BehaviourDetravToolProPick extends Behaviour_None { 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) { SplittableRandom aRandom =new SplittableRandom(); - int chance = ((1+aStack.getItemDamage())*7) > 100 ? 100 :(1+aStack.getItemDamage())*7; + int chance = ((1+aStack.getItemDamage())*8) > 100 ? 100 :(1+aStack.getItemDamage())*8; if (aWorld.isRemote) return false; @@ -77,34 +97,45 @@ public class BehaviourDetravToolProPick extends Behaviour_None { if (!aWorld.isRemote) { int bX = aX; int bZ = aZ; + + badluck = 0; + ores = new HashMap(); + + int range = ((DetravMetaGeneratedTool01)aItem).getHarvestLevel(aStack, "")/2+(aStack.getItemDamage()/4); + if ((range % 2) == 0 ) { + range += 1; // kinda not needed here, divide takes it out, but we put it back in with the range+1 in the loop + } + range = range/2; // Convert range from diameter to radius - int chunks = (((DetravMetaGeneratedTool01)aItem).getHarvestLevel(aStack, "")+(aStack.getItemDamage()/4)); - int half = chunks/2; - - aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.GOLD+"Start of Prospectoring")); - for (int x = -half; x ores = new HashMap(); for (int x = 0; x < 16; x++) for (int z = 0; z < 16; z++) { int ySize = aChunk.getHeightValue(x, z); @@ -160,33 +189,18 @@ public class BehaviourDetravToolProPick extends Behaviour_None { 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 (!ores.containsKey(name)) - ores.put(name, 1); - else { - int val = ores.get(name); - ores.put(name, val + 1); - } + 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; - if (!ores.containsKey(name)) - ores.put(name, 1); - else { - int val = ores.get(name); - ores.put(name, val + 1); - } + addOreToHashMap(name, aPlayer); } } } else if (tBlock instanceof BlockBaseOre) { String name = tBlock.getLocalizedName(); - if (!ores.containsKey(name)) - ores.put(name, 1); - else { - int val = ores.get(name); - ores.put(name, val + 1); - } + addOreToHashMap(name, aPlayer); } else if (data == 1) { tAssotiation = GT_OreDictUnificator.getAssociation(new ItemStack(tBlock, 1, tMetaID)); @@ -197,20 +211,10 @@ public class BehaviourDetravToolProPick extends Behaviour_None { String name = Materials.getLocalizedNameForItem(GT_LanguageManager.getTranslation( "gt.blockores." + tMetaID + ".name"), tMetaID%1000); - if (!ores.containsKey(name)) - ores.put(name, 1); - else { - int val = ores.get(name); - ores.put(name, val + 1); - } + addOreToHashMap(name, aPlayer); } catch (Exception e1) { String name = tAssotiation.toString(); - if (!ores.containsKey(name)) - ores.put(name, 1); - else { - int val = ores.get(name); - ores.put(name, val + 1); - } + addOreToHashMap(name, aPlayer); } } catch (Exception e) @@ -222,49 +226,53 @@ public class BehaviourDetravToolProPick extends Behaviour_None { } } - int total = 0; - for (String key : ores.keySet()) { - int value = ores.get(key); - total+=value; - addChatMassageByValue(aPlayer,value,key); - } - addChatMassageByValue(aPlayer,total,"Total"); + if (!aPlayer.capabilities.isCreativeMode) aItem.doDamage(aStack, this.mCosts); - if(total==0) - { - addChatMassageByValue(aPlayer,0,null); - } + return; } - else if (aRandom.nextInt(100) > chance) { - aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.RED+"You had no luck this time.")); + else { + if (DetravScannerMod.DEBUGBUILD) + aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.RED+" Failed on this chunk")); + badluck++; if (!aPlayer.capabilities.isCreativeMode) aItem.doDamage(aStack, this.mCosts/4); } // addChatMassageByValue(aPlayer,0,null); } + void addOreToHashMap(String orename, EntityPlayer aPlayer) { + String oreDistance = orename + DISTANCETEXTS[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)); + ores.put(oreDistance, 1); + } else { + int val = ores.get(oreDistance); + ores.put(oreDistance, val + 1); + } + } + void addChatMassageByValue(EntityPlayer aPlayer, int value, String name) { - if(name == "Total") return; if (value < 0) { aPlayer.addChatMessage(new ChatComponentText(foundTexts[6] + name)); } else if (value < 1) { aPlayer.addChatMessage(new ChatComponentText(foundTexts[0])); } else if (value < 10) - aPlayer.addChatMessage(new ChatComponentText(foundTexts[1] + name)); + aPlayer.addChatMessage(new ChatComponentText(name + foundTexts[1])); else if (value < 30) - aPlayer.addChatMessage(new ChatComponentText(foundTexts[2] + name)); + aPlayer.addChatMessage(new ChatComponentText(name + foundTexts[2])); else if (value < 60) - aPlayer.addChatMessage(new ChatComponentText(foundTexts[3] + name)); + aPlayer.addChatMessage(new ChatComponentText(name + foundTexts[3])); else if (value < 100) - aPlayer.addChatMessage(new ChatComponentText(foundTexts[4] + name)); + aPlayer.addChatMessage(new ChatComponentText(name + foundTexts[4])); else - aPlayer.addChatMessage(new ChatComponentText(foundTexts[5] + name)); + aPlayer.addChatMessage(new ChatComponentText(name + foundTexts[5])); } public static int getPolution(World aWorld, int aX, int aZ) { return GT_Pollution.getPollution(aWorld.getChunkFromBlockCoords(aX, aZ)); } -} \ No newline at end of file +} diff --git a/src/main/java/com/detrav/items/tools/DetravProPick.java b/src/main/java/com/detrav/items/tools/DetravProPick.java index a86f68e40d..9d3b2de50c 100644 --- a/src/main/java/com/detrav/items/tools/DetravProPick.java +++ b/src/main/java/com/detrav/items/tools/DetravProPick.java @@ -24,7 +24,7 @@ public class DetravProPick extends DetravToolElectricProPickBase { return 0.02F; return ((float) Math.pow(tier,((float)tier/5F)))/24F;*/ double x = tier+1; - return (float) ((float) 0.005D+Math.tanh(Math.pow(x,(x/8D))/25D)*(x/6D)); + return (float) (((float) 0.005D+Math.tanh(Math.pow(x,(x/8D))/25D)*(x/6D))*1.25); } public IIconContainer getIcon(boolean aIsToolHead, ItemStack aStack) { diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index 618df6eb4e..168d7a382a 100644 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -3,11 +3,11 @@ "modid": "detravscannermod", "name": "GT Scanner Mod", "description": "To locate ores deep underground.", - "version": "1.4.2", + "version": "1.5.1", "mcversion": "1.7.10", "url": "https://github.com/GTNewHorizons/GTScannerMod", "updateUrl": "", - "authorList": ["Ethryan, GTNewHorizons Team, bartimaeusnek"], + "authorList": ["Ethryan, GTNewHorizons Team, bartimaeusnek, richardhendricks"], "credits": "Detrav", "logoFile": "", "screenshots": [], -- cgit