diff options
author | Richard Hendricks <richardhendricks@pobox.com> | 2018-08-14 03:11:05 -0500 |
---|---|---|
committer | Richard Hendricks <richardhendricks@pobox.com> | 2018-08-14 03:11:05 -0500 |
commit | 801213a86027b38e615861e73337b65821e74a44 (patch) | |
tree | 87eee8e9f9de07c6f68d38a7145794732380e51c /src | |
parent | 32e8c40e71a773e5813e417dd73e824892a49474 (diff) | |
download | GT5-Unofficial-801213a86027b38e615861e73337b65821e74a44.tar.gz GT5-Unofficial-801213a86027b38e615861e73337b65821e74a44.tar.bz2 GT5-Unofficial-801213a86027b38e615861e73337b65821e74a44.zip |
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.
Diffstat (limited to 'src')
5 files changed, 109 insertions, 91 deletions
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<String, Integer> 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<String, Integer>(); + + 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<half;++x) - for (int z = -half; z<half;++z) { - aX=aX+(x*16); - aZ=aZ+(z*16); + aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.GOLD+"Prospecting at " + EnumChatFormatting.BLUE + "(" + bX + ", " + bZ + ")" )); + for (int x = -(range); x<(range+1);++x){ + aX=bX+(x*16); + for (int z = -(range); z<(range+1);++z) { + + aZ=bZ+(z*16); + int dist = x*x + z*z; + + for( distTextIndex = 0; distTextIndex < DISTANCEINTS.length; distTextIndex++ ) { + if ( dist <= DISTANCEINTS[distTextIndex] ) { + break; + } + } if (DetravScannerMod.DEBUGBUILD) - aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW+"Chunk at "+ aX +"|"+aZ+" to "+(aX+16)+"|"+(aZ+16))); + aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW+"Chunk at "+ aX +"|"+aZ+" to "+(aX+16)+"|"+(aZ+16) + DISTANCETEXTS[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); } - - /*for (byte b = 0; b<chunks;++b) { - aX=aX+(b*16); - aZ=aZ+(b*16); - bX=bX-(b*16); - bZ=bZ-(b*16); - if (DetravScannerMod.DEBUGBUILD) - aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW+"Chunk at "+ aX +"|"+aZ+" to "+(aX+16)+"|"+(aZ+16))); - 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); - if (bX!=aX && bZ != aZ) { - if (DetravScannerMod.DEBUGBUILD) - aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW+"Chunk at "+ bX +"|"+bZ+" to "+(bX+16)+"|"+(bZ+16))); - processOreProspecting((DetravMetaGeneratedTool01) aItem, aStack, aPlayer, aWorld.getChunkFromBlockCoords(bX, bZ), aWorld.getTileEntity(bX, aY, bZ),GT_OreDictUnificator.getAssociation(new ItemStack(aWorld.getBlock(bX, aY, bZ), 1, aWorld.getBlockMetadata(bX, aY, bZ))), aRandom, chance); - } - }*/ + } + + for (String key : ores.keySet()) { + int value = ores.get(key); + addChatMassageByValue(aPlayer,value,key); + } + + if( badluck == 0) { + aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.WHITE + "All chunks scanned successfully!")); + } else { + aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.WHITE + "Failed on " + badluck + " chunks. Better luck next time!")); + } return true; } return true; @@ -119,7 +150,7 @@ public class BehaviourDetravToolProPick extends Behaviour_None { GT_TileEntity_Ores gt_entity = (GT_TileEntity_Ores) aTileEntity; short meta = gt_entity.getMetaData(); String name = Materials.getLocalizedNameForItem(GT_LanguageManager.getTranslation("gt.blockores." + meta + ".name"), meta%1000); - addChatMassageByValue(aPlayer, -1, name); + addOreToHashMap(name, aPlayer); if (!aPlayer.capabilities.isCreativeMode) aItem.doDamage(aStack, this.mCosts); return; @@ -138,10 +169,8 @@ public class BehaviourDetravToolProPick extends Behaviour_None { { addChatMassageByValue(aPlayer, -1, "ERROR, lol ^_^"); } - //} }else if (aRandom.nextInt(100) < chance) { int data = DetravMetaGeneratedTool01.INSTANCE.getToolGTDetravData(aStack).intValue(); - HashMap<String, Integer> ores = new HashMap<String, Integer>(); 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": [], |