diff options
author | Richard Hendricks <richardhendricks@pobox.com> | 2018-08-26 22:18:46 -0500 |
---|---|---|
committer | Richard Hendricks <richardhendricks@pobox.com> | 2018-08-26 22:18:46 -0500 |
commit | 34e405da2eaba1fbfa8a5b1ab754e235458ec1d2 (patch) | |
tree | 246650a0e981fb1c8509f855856322444a145bac /src/main/java | |
parent | 801213a86027b38e615861e73337b65821e74a44 (diff) | |
download | GT5-Unofficial-34e405da2eaba1fbfa8a5b1ab754e235458ec1d2.tar.gz GT5-Unofficial-34e405da2eaba1fbfa8a5b1ab754e235458ec1d2.tar.bz2 GT5-Unofficial-34e405da2eaba1fbfa8a5b1ab754e235458ec1d2.zip |
Fixed issue with Electronic Prospector having issues with single-chunk scan. Upped version #.
Diffstat (limited to 'src/main/java')
3 files changed, 67 insertions, 48 deletions
diff --git a/src/main/java/com/detrav/DetravScannerMod.java b/src/main/java/com/detrav/DetravScannerMod.java index 8898a98dd0..fd0544ef3a 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.5.1"; + public static final String VERSION = "1.5.2"; public static final boolean DEBUGBUILD = false; public static final CreativeTabs TAB_DETRAV = new DetravCreativeTab(); diff --git a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolElectricProPick.java b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolElectricProPick.java index 74234eca0b..511db39698 100644 --- a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolElectricProPick.java +++ b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolElectricProPick.java @@ -25,6 +25,7 @@ import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraft.world.chunk.Chunk; import net.minecraftforge.fluids.FluidStack; @@ -175,7 +176,7 @@ public class BehaviourDetravToolElectricProPick extends BehaviourDetravToolProPi } else if (value < 1) { aPlayer.addChatMessage(new ChatComponentText(foundTexts[0])); } else - aPlayer.addChatMessage(new ChatComponentText(foundTexts[6] + name + ": " + value)); + aPlayer.addChatMessage(new ChatComponentText(foundTexts[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) { @@ -194,8 +195,7 @@ public class BehaviourDetravToolElectricProPick extends BehaviourDetravToolProPi else { //if (aWorld.getBlock(aX, aY, aZ).getMaterial() == Material.rock || aWorld.getBlock(aX, aY, aZ) == GregTech_API.sBlockOres1) { if (!aWorld.isRemote) { - 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); - return true; + prospectSingleChunk( (DetravMetaGeneratedTool01) aItem, aStack, aPlayer, aWorld, aX, aY, aZ ); } return true; } @@ -216,4 +216,5 @@ public class BehaviourDetravToolElectricProPick extends BehaviourDetravToolProPi } return true; } -}
\ No newline at end of file + +} diff --git a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java index 52bae97da3..e9419e310e 100644 --- a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java +++ b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java @@ -74,7 +74,8 @@ 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())*8) > 100 ? 100 :(1+aStack.getItemDamage())*8; + int chance = ((1+aStack.getItemDamage())*8) > 100 ? 100 :(1+aStack.getItemDamage())*8; + if (aWorld.isRemote) return false; @@ -95,54 +96,71 @@ public class BehaviourDetravToolProPick extends Behaviour_None { } if (aWorld.getBlock(aX, aY, aZ).getMaterial() == Material.rock || aWorld.getBlock(aX, aY, aZ).getMaterial() == Material.ground || aWorld.getBlock(aX, aY, aZ) == GregTech_API.sBlockOres1) { 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 - - 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) + 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 (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; + prospectChunks( (DetravMetaGeneratedTool01) aItem, aStack, aPlayer, aWorld, aX, aY, aZ, aRandom, chance ); } return true; } return false; } + protected void prospectChunks(GT_MetaBase_Item aItem, ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, SplittableRandom aRandom, int chance) + { + 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 + + 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) + 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 (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!")); + } + } + + // Used by Electric scanner when scanning the chunk whacked by the scanner. 100% chance find rate + 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+"Prospecting at " + 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()) { + int value = ores.get(key); + addChatMassageByValue(aPlayer,value,key); + } + } + protected void processOreProspecting(DetravMetaGeneratedTool01 aItem, ItemStack aStack, EntityPlayer aPlayer, Chunk aChunk, TileEntity aTileEntity, ItemData tAssotiation, SplittableRandom aRandom, int chance)//TileEntity aTileEntity) { if (aTileEntity != null) { |