From ce502c9bb54946f2ea1725ec4c92de4a8863e2d7 Mon Sep 17 00:00:00 2001 From: Jason Mitchell Date: Sun, 24 Jan 2021 12:35:45 -0800 Subject: One more rename, and fix oredict names --- .../detrav/items/DetravMetaGeneratedTool01.java | 28 +-- .../BehaviourDetravToolElectricProspector.java | 2 +- .../behaviours/BehaviourDetravToolProPick.java | 267 --------------------- .../behaviours/BehaviourDetravToolProspector.java | 267 +++++++++++++++++++++ .../com/detrav/items/tools/DetravProspector.java | 4 +- 5 files changed, 284 insertions(+), 284 deletions(-) delete mode 100644 src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java create mode 100644 src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProspector.java (limited to 'src/main/java/com') diff --git a/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java b/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java index 21d45dfcc8..96ec1842ef 100644 --- a/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java +++ b/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java @@ -29,21 +29,21 @@ public class DetravMetaGeneratedTool01 extends GT_MetaGenerated_Tool { public DetravMetaGeneratedTool01() { super("detrav.metatool.01"); INSTANCE = this; - addTool(0, "Prospector's Scanner(ULV)", "", new DetravProspector(0), new Object[]{DetravToolDictNames.craftingToolProspector, 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(2, "Prospector's Scanner(LV)", "", new DetravProspector(1), new Object[]{DetravToolDictNames.craftingToolProspector, 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(4, "Prospector's Scanner(MV)", "", new DetravProspector(2), new Object[]{DetravToolDictNames.craftingToolProspector, 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(6, "Prospector's Scanner(HV)", "", new DetravProspector(3), new Object[]{DetravToolDictNames.craftingToolProspector, 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(8, "Prospector's Scanner(EV)", "", new DetravProspector(4), new Object[]{DetravToolDictNames.craftingToolProspector, 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(10, "Prospector's Scanner(IV)", "", new DetravProspector(5), new Object[]{DetravToolDictNames.craftingToolProspector, 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(12, "Prospector's Scanner(LuV)", "", new DetravProspector(6), new Object[]{DetravToolDictNames.craftingToolProspector, 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(14, "Prospector's Scanner(ZPM)", "", new DetravProspector(7), new Object[]{DetravToolDictNames.craftingToolProspector, 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 DetravProspector(8), new Object[]{DetravToolDictNames.craftingToolProspector, 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 DetravProspector(9), new Object[]{DetravToolDictNames.craftingToolProspector, 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(0, "Prospector's Scanner(ULV)", "", new DetravProspector(0), DetravToolDictNames.craftingToolProspector.toString(), 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(2, "Prospector's Scanner(LV)", "", new DetravProspector(1), DetravToolDictNames.craftingToolProspector.toString(), 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(4, "Prospector's Scanner(MV)", "", new DetravProspector(2), DetravToolDictNames.craftingToolProspector.toString(), 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(6, "Prospector's Scanner(HV)", "", new DetravProspector(3), DetravToolDictNames.craftingToolProspector.toString(), 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(8, "Prospector's Scanner(EV)", "", new DetravProspector(4), DetravToolDictNames.craftingToolProspector.toString(), 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(10, "Prospector's Scanner(IV)", "", new DetravProspector(5), DetravToolDictNames.craftingToolProspector.toString(), 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(12, "Prospector's Scanner(LuV)", "", new DetravProspector(6), DetravToolDictNames.craftingToolProspector.toString(), 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(14, "Prospector's Scanner(ZPM)", "", new DetravProspector(7), DetravToolDictNames.craftingToolProspector.toString(), 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 DetravProspector(8), DetravToolDictNames.craftingToolProspector.toString(), 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 DetravProspector(9), DetravToolDictNames.craftingToolProspector.toString(), 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 DetravToolElectricProspector(6), new Object[]{DetravToolDictNames.craftingToolElectricProspector, 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 DetravToolElectricProspector(7), new Object[]{DetravToolDictNames.craftingToolElectricProspector, 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 DetravToolElectricProspector(8), new Object[]{DetravToolDictNames.craftingToolElectricProspector, 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(106, "Electric Prospector's Scanner (UHV)", "", new DetravToolElectricProspector(9), new Object[]{DetravToolDictNames.craftingToolElectricProspector, 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(100, "Electric Prospector's Scanner (LuV)", "", new DetravToolElectricProspector(6), DetravToolDictNames.craftingToolElectricProspector, 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 DetravToolElectricProspector(7), DetravToolDictNames.craftingToolElectricProspector, 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 DetravToolElectricProspector(8), DetravToolDictNames.craftingToolElectricProspector, 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(106, "Electric Prospector's Scanner (UHV)", "", new DetravToolElectricProspector(9), DetravToolDictNames.craftingToolElectricProspector, 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)); setCreativeTab(DetravScannerMod.TAB_DETRAV); } diff --git a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolElectricProspector.java b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolElectricProspector.java index bb26d09476..36f35fb35b 100644 --- a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolElectricProspector.java +++ b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolElectricProspector.java @@ -31,7 +31,7 @@ import java.util.List; /** * Created by wital_000 on 19.03.2016. */ -public class BehaviourDetravToolElectricProspector extends BehaviourDetravToolProPick { +public class BehaviourDetravToolElectricProspector extends BehaviourDetravToolProspector { public BehaviourDetravToolElectricProspector(int aCosts) { super(aCosts); diff --git a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java deleted file mode 100644 index 800e5336d4..0000000000 --- a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java +++ /dev/null @@ -1,267 +0,0 @@ -package com.detrav.items.behaviours; - -import com.detrav.DetravScannerMod; -import com.detrav.items.DetravMetaGeneratedTool01; -import com.detrav.utils.BartWorksHelper; -import com.detrav.utils.GTppHelper; -import gregtech.api.GregTech_API; -import gregtech.api.enums.Materials; -import gregtech.api.items.GT_MetaBase_Item; -import gregtech.api.objects.ItemData; -import gregtech.api.util.GT_LanguageManager; -import gregtech.api.util.GT_OreDictUnificator; -import gregtech.common.GT_Pollution; -import gregtech.common.GT_UndergroundOil; -import gregtech.common.blocks.GT_Block_Ores_Abstract; -import gregtech.common.blocks.GT_TileEntity_Ores; -import gregtech.common.items.behaviors.Behaviour_None; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.entity.player.EntityPlayer; -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.util.StatCollector; -import net.minecraft.world.World; -import net.minecraft.world.chunk.Chunk; -import net.minecraftforge.fluids.FluidStack; - -import java.util.HashMap; -import java.util.SplittableRandom; - -/** - * Created by wital_000 on 19.03.2016. - */ -public class BehaviourDetravToolProPick extends Behaviour_None { - - static final int[] DISTANCEINTS = new int[] {0, 4, 25, 64}; - int distTextIndex; - - HashMap ores; - int badluck; - - protected final int mCosts; - - public BehaviourDetravToolProPick(int aCosts) { - mCosts = aCosts; - } - - 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; - - if (aWorld.isRemote) - return false; - - if(aWorld.getBlock(aX,aY,aZ) == Blocks.bedrock) - { - if (!aWorld.isRemote && aRandom.nextInt(100) < chance) { - FluidStack fStack = GT_UndergroundOil.undergroundOil(aWorld.getChunkFromBlockCoords(aX, aZ), -1); - addChatMassageByValue(aPlayer,fStack.amount/2,"a Fluid");//fStack.getLocalizedName()); - /*boolean fluid = GT_UndergroundOil.undergroundOil(aWorld.getChunkFromBlockCoords(aX, aZ), -1)!=null &>_UndergroundOil.undergroundOil(aWorld.getChunkFromBlockCoords(aX, aZ), -1).getFluid()!=null; - if (fluid) - aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.GREEN+"You found some liquid.")); - else - aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.RED+"You found no liquid."));*/ - if (!aPlayer.capabilities.isCreativeMode) - ((DetravMetaGeneratedTool01)aItem).doDamage(aStack, this.mCosts); - } - return true; - } - 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) { - 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(); - - 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+ GT_LanguageManager.sEnglishFile.get("LanguageFile", "gt.scanner.prospecting", "Prospecting at ").getString() + 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) + 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); - } - } - - for (String key : ores.keySet()) { - int value = ores.get(key); - addChatMassageByValue(aPlayer,value,key); - } - - if( badluck == 0) { - aPlayer.addChatMessage(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)))); - } - } - - // 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(); - 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()) { - 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) { - if (aTileEntity instanceof GT_TileEntity_Ores) { - 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); - addOreToHashMap(name, aPlayer); - if (!aPlayer.capabilities.isCreativeMode) - aItem.doDamage(aStack, this.mCosts); - return; - } - } else if (tAssotiation!=null){ - try { - String name = tAssotiation.toString(); - addChatMassageByValue(aPlayer, -1, name); - if (!aPlayer.capabilities.isCreativeMode) - aItem.doDamage(aStack, this.mCosts); - return; - } - catch (Exception e) - { - addChatMassageByValue(aPlayer, -1, "ERROR, lol ^_^"); - } - }else if (aRandom.nextInt(100) < chance) { - int data = DetravMetaGeneratedTool01.INSTANCE.getToolGTDetravData(aStack).intValue(); - final String small_ore_keyword = StatCollector.translateToLocal("detrav.scanner.small_ore.keyword"); - for (int x = 0; x < 16; x++) - for (int z = 0; z < 16; z++) { - int ySize = aChunk.getHeightValue(x, z); - for (int y = 1; y < ySize; y++) { - - Block tBlock = aChunk.getBlock(x,y,z); - short tMetaID = (short)aChunk.getBlockMetadata(x,y,z); - if (tBlock instanceof GT_Block_Ores_Abstract) { - TileEntity tTileEntity = aChunk.getTileEntityUnsafe(x,y,z); - if ((tTileEntity instanceof GT_TileEntity_Ores) - && ((GT_TileEntity_Ores) tTileEntity).mNatural) { - tMetaID = (short)((GT_TileEntity_Ores) tTileEntity).getMetaData(); - try { - String name = Materials.getLocalizedNameForItem(GT_LanguageManager.getTranslation(tBlock.getUnlocalizedName() + "." + tMetaID + ".name"), tMetaID%1000); - if (data != 1 && name.startsWith(small_ore_keyword)) continue; - addOreToHashMap(name, aPlayer); - } - catch(Exception e) { - String name = tBlock.getUnlocalizedName() + "."; - if (data != 1 && name.contains(".small.")) continue; - addOreToHashMap(name, aPlayer); - } - } - } else if (DetravScannerMod.isGTppLoaded && GTppHelper.isGTppBlock(tBlock) ) { - String name = GTppHelper.getGTppVeinName(tBlock); - if (!name.isEmpty()) - addOreToHashMap(name, aPlayer); - } else if (DetravScannerMod.isBartWorksLoaded && BartWorksHelper.isOre(tBlock)){ - if (data != 1 && BartWorksHelper.isSmallOre(tBlock)) continue; - addOreToHashMap(GT_LanguageManager.getTranslation((BartWorksHelper.isSmallOre(tBlock) ? "bw.blockores.02." : "bw.blockores.01.") + ((BartWorksHelper.getMetaFromBlock(aChunk,x,y,z,tBlock))*-1) + ".name"), aPlayer); - } else if (data == 1) { - tAssotiation = GT_OreDictUnificator.getAssociation(new ItemStack(tBlock, 1, tMetaID)); - if ((tAssotiation != null) && (tAssotiation.mPrefix.toString().startsWith("ore"))) { - try { - try { - tMetaID = (short)tAssotiation.mMaterial.mMaterial.mMetaItemSubID; - - String name = Materials.getLocalizedNameForItem(GT_LanguageManager.getTranslation("gt.blockores." + tMetaID + ".name"), tMetaID%1000); - addOreToHashMap(name, aPlayer); - } catch (Exception e1) { - String name = tAssotiation.toString(); - addOreToHashMap(name, aPlayer); - } - } - catch (Exception ignored) { } - } - } - - } - } - - if (!aPlayer.capabilities.isCreativeMode) - aItem.doDamage(aStack, this.mCosts); - - return; - } - 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 + 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)); - ores.put(oreDistance, 1); - } else { - int val = ores.get(oreDistance); - ores.put(oreDistance, val + 1); - } - } - - void addChatMassageByValue(EntityPlayer aPlayer, int value, String name) { - if (value < 0) { - aPlayer.addChatMessage(new ChatComponentText(StatCollector.translateToLocal("detrav.scanner.found.texts.6") + name)); - } else if (value < 1) { - aPlayer.addChatMessage(new ChatComponentText(StatCollector.translateToLocal("detrav.scanner.found.texts.0"))); - } else if (value < 10) - aPlayer.addChatMessage(new ChatComponentText(name + StatCollector.translateToLocal("detrav.scanner.found.texts.1"))); - else if (value < 30) - aPlayer.addChatMessage(new ChatComponentText(name + StatCollector.translateToLocal("detrav.scanner.found.texts.2"))); - else if (value < 60) - aPlayer.addChatMessage(new ChatComponentText(name + StatCollector.translateToLocal("detrav.scanner.found.texts.3"))); - else if (value < 100) - aPlayer.addChatMessage(new ChatComponentText(name + StatCollector.translateToLocal("detrav.scanner.found.texts.4"))); - else - aPlayer.addChatMessage(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/java/com/detrav/items/behaviours/BehaviourDetravToolProspector.java b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProspector.java new file mode 100644 index 0000000000..9bd5ad585a --- /dev/null +++ b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProspector.java @@ -0,0 +1,267 @@ +package com.detrav.items.behaviours; + +import com.detrav.DetravScannerMod; +import com.detrav.items.DetravMetaGeneratedTool01; +import com.detrav.utils.BartWorksHelper; +import com.detrav.utils.GTppHelper; +import gregtech.api.GregTech_API; +import gregtech.api.enums.Materials; +import gregtech.api.items.GT_MetaBase_Item; +import gregtech.api.objects.ItemData; +import gregtech.api.util.GT_LanguageManager; +import gregtech.api.util.GT_OreDictUnificator; +import gregtech.common.GT_Pollution; +import gregtech.common.GT_UndergroundOil; +import gregtech.common.blocks.GT_Block_Ores_Abstract; +import gregtech.common.blocks.GT_TileEntity_Ores; +import gregtech.common.items.behaviors.Behaviour_None; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +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.util.StatCollector; +import net.minecraft.world.World; +import net.minecraft.world.chunk.Chunk; +import net.minecraftforge.fluids.FluidStack; + +import java.util.HashMap; +import java.util.SplittableRandom; + +/** + * Created by wital_000 on 19.03.2016. + */ +public class BehaviourDetravToolProspector extends Behaviour_None { + + static final int[] DISTANCEINTS = new int[] {0, 4, 25, 64}; + int distTextIndex; + + HashMap ores; + int badluck; + + protected final int mCosts; + + public BehaviourDetravToolProspector(int aCosts) { + mCosts = aCosts; + } + + 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; + + if (aWorld.isRemote) + return false; + + if(aWorld.getBlock(aX,aY,aZ) == Blocks.bedrock) + { + if (!aWorld.isRemote && aRandom.nextInt(100) < chance) { + FluidStack fStack = GT_UndergroundOil.undergroundOil(aWorld.getChunkFromBlockCoords(aX, aZ), -1); + addChatMassageByValue(aPlayer,fStack.amount/2,"a Fluid");//fStack.getLocalizedName()); + /*boolean fluid = GT_UndergroundOil.undergroundOil(aWorld.getChunkFromBlockCoords(aX, aZ), -1)!=null &>_UndergroundOil.undergroundOil(aWorld.getChunkFromBlockCoords(aX, aZ), -1).getFluid()!=null; + if (fluid) + aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.GREEN+"You found some liquid.")); + else + aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.RED+"You found no liquid."));*/ + if (!aPlayer.capabilities.isCreativeMode) + ((DetravMetaGeneratedTool01)aItem).doDamage(aStack, this.mCosts); + } + return true; + } + 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) { + 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(); + + 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+ GT_LanguageManager.sEnglishFile.get("LanguageFile", "gt.scanner.prospecting", "Prospecting at ").getString() + 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) + 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); + } + } + + for (String key : ores.keySet()) { + int value = ores.get(key); + addChatMassageByValue(aPlayer,value,key); + } + + if( badluck == 0) { + aPlayer.addChatMessage(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)))); + } + } + + // 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(); + 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()) { + 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) { + if (aTileEntity instanceof GT_TileEntity_Ores) { + 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); + addOreToHashMap(name, aPlayer); + if (!aPlayer.capabilities.isCreativeMode) + aItem.doDamage(aStack, this.mCosts); + return; + } + } else if (tAssotiation!=null){ + try { + String name = tAssotiation.toString(); + addChatMassageByValue(aPlayer, -1, name); + if (!aPlayer.capabilities.isCreativeMode) + aItem.doDamage(aStack, this.mCosts); + return; + } + catch (Exception e) + { + addChatMassageByValue(aPlayer, -1, "ERROR, lol ^_^"); + } + }else if (aRandom.nextInt(100) < chance) { + int data = DetravMetaGeneratedTool01.INSTANCE.getToolGTDetravData(aStack).intValue(); + final String small_ore_keyword = StatCollector.translateToLocal("detrav.scanner.small_ore.keyword"); + for (int x = 0; x < 16; x++) + for (int z = 0; z < 16; z++) { + int ySize = aChunk.getHeightValue(x, z); + for (int y = 1; y < ySize; y++) { + + Block tBlock = aChunk.getBlock(x,y,z); + short tMetaID = (short)aChunk.getBlockMetadata(x,y,z); + if (tBlock instanceof GT_Block_Ores_Abstract) { + TileEntity tTileEntity = aChunk.getTileEntityUnsafe(x,y,z); + if ((tTileEntity instanceof GT_TileEntity_Ores) + && ((GT_TileEntity_Ores) tTileEntity).mNatural) { + tMetaID = (short)((GT_TileEntity_Ores) tTileEntity).getMetaData(); + try { + String name = Materials.getLocalizedNameForItem(GT_LanguageManager.getTranslation(tBlock.getUnlocalizedName() + "." + tMetaID + ".name"), tMetaID%1000); + if (data != 1 && name.startsWith(small_ore_keyword)) continue; + addOreToHashMap(name, aPlayer); + } + catch(Exception e) { + String name = tBlock.getUnlocalizedName() + "."; + if (data != 1 && name.contains(".small.")) continue; + addOreToHashMap(name, aPlayer); + } + } + } else if (DetravScannerMod.isGTppLoaded && GTppHelper.isGTppBlock(tBlock) ) { + String name = GTppHelper.getGTppVeinName(tBlock); + if (!name.isEmpty()) + addOreToHashMap(name, aPlayer); + } else if (DetravScannerMod.isBartWorksLoaded && BartWorksHelper.isOre(tBlock)){ + if (data != 1 && BartWorksHelper.isSmallOre(tBlock)) continue; + addOreToHashMap(GT_LanguageManager.getTranslation((BartWorksHelper.isSmallOre(tBlock) ? "bw.blockores.02." : "bw.blockores.01.") + ((BartWorksHelper.getMetaFromBlock(aChunk,x,y,z,tBlock))*-1) + ".name"), aPlayer); + } else if (data == 1) { + tAssotiation = GT_OreDictUnificator.getAssociation(new ItemStack(tBlock, 1, tMetaID)); + if ((tAssotiation != null) && (tAssotiation.mPrefix.toString().startsWith("ore"))) { + try { + try { + tMetaID = (short)tAssotiation.mMaterial.mMaterial.mMetaItemSubID; + + String name = Materials.getLocalizedNameForItem(GT_LanguageManager.getTranslation("gt.blockores." + tMetaID + ".name"), tMetaID%1000); + addOreToHashMap(name, aPlayer); + } catch (Exception e1) { + String name = tAssotiation.toString(); + addOreToHashMap(name, aPlayer); + } + } + catch (Exception ignored) { } + } + } + + } + } + + if (!aPlayer.capabilities.isCreativeMode) + aItem.doDamage(aStack, this.mCosts); + + return; + } + 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 + 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)); + ores.put(oreDistance, 1); + } else { + int val = ores.get(oreDistance); + ores.put(oreDistance, val + 1); + } + } + + void addChatMassageByValue(EntityPlayer aPlayer, int value, String name) { + if (value < 0) { + aPlayer.addChatMessage(new ChatComponentText(StatCollector.translateToLocal("detrav.scanner.found.texts.6") + name)); + } else if (value < 1) { + aPlayer.addChatMessage(new ChatComponentText(StatCollector.translateToLocal("detrav.scanner.found.texts.0"))); + } else if (value < 10) + aPlayer.addChatMessage(new ChatComponentText(name + StatCollector.translateToLocal("detrav.scanner.found.texts.1"))); + else if (value < 30) + aPlayer.addChatMessage(new ChatComponentText(name + StatCollector.translateToLocal("detrav.scanner.found.texts.2"))); + else if (value < 60) + aPlayer.addChatMessage(new ChatComponentText(name + StatCollector.translateToLocal("detrav.scanner.found.texts.3"))); + else if (value < 100) + aPlayer.addChatMessage(new ChatComponentText(name + StatCollector.translateToLocal("detrav.scanner.found.texts.4"))); + else + aPlayer.addChatMessage(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/java/com/detrav/items/tools/DetravProspector.java b/src/main/java/com/detrav/items/tools/DetravProspector.java index 38fb9dcd10..b06d083a87 100644 --- a/src/main/java/com/detrav/items/tools/DetravProspector.java +++ b/src/main/java/com/detrav/items/tools/DetravProspector.java @@ -1,7 +1,7 @@ package com.detrav.items.tools; import com.detrav.enums.Textures01; -import com.detrav.items.behaviours.BehaviourDetravToolProPick; +import com.detrav.items.behaviours.BehaviourDetravToolProspector; import gregtech.api.interfaces.IIconContainer; import gregtech.api.items.GT_MetaGenerated_Tool; @@ -28,6 +28,6 @@ public class DetravProspector extends DetravToolElectricProspectorBase { } public void onStatsAddedToTool(GT_MetaGenerated_Tool aItem, int aID) { - aItem.addItemBehavior(aID, new BehaviourDetravToolProPick(100)); + aItem.addItemBehavior(aID, new BehaviourDetravToolProspector(100)); } } -- cgit