diff options
Diffstat (limited to 'src/main/java/com/detrav/items/behaviours')
-rw-r--r-- | src/main/java/com/detrav/items/behaviours/BehaviourDetravToolElectricProPick.java | 74 | ||||
-rw-r--r-- | src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java | 100 |
2 files changed, 146 insertions, 28 deletions
diff --git a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolElectricProPick.java b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolElectricProPick.java index e9af5dfce2..c198c26a56 100644 --- a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolElectricProPick.java +++ b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolElectricProPick.java @@ -5,21 +5,28 @@ import com.detrav.net.DetravNetwork; import com.detrav.net.DetravProPickPacket00; import gregtech.api.GregTech_API; 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.api.util.GT_Utility; +import gregtech.common.blocks.GT_Block_Ores_Abstract; import gregtech.common.blocks.GT_TileEntity_Ores; import net.minecraft.block.Block; +import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChatComponentText; +import net.minecraft.world.ChunkPosition; import net.minecraft.world.World; import net.minecraft.world.chunk.Chunk; import net.minecraftforge.fluids.FluidStack; import java.util.ArrayList; import java.util.List; +import java.util.Random; /** * Created by wital_000 on 19.03.2016. @@ -82,20 +89,43 @@ public class BehaviourDetravToolElectricProPick extends BehaviourDetravToolProPi for (Chunk c : chunks) { for (int x = 0; x < 16; x++) for (int z = 0; z < 16; z++) { - int ySize = c.getHeightValue(x, z); + int ySize = c.getHeightValue(x, z);//(int)aPlayer.posY;//c.getHeightValue(x, z); for (int y = 1; y < ySize; y++) { switch (data) { case 0: case 1: - Block b = c.getBlock(x, y, z); - if (b == GregTech_API.sBlockOres1) { - TileEntity entity = c.getTileEntityUnsafe(x, y, z); - if (entity != null && entity instanceof GT_TileEntity_Ores) { - GT_TileEntity_Ores gt_entity = (GT_TileEntity_Ores) entity; - String name = GT_LanguageManager.getTranslation( - b.getUnlocalizedName() + "." + gt_entity.getMetaData() + ".name"); - if (name.startsWith("Small")) if (data != 1) continue; - packet.addBlock(c.xPosition * 16 + x, y, c.zPosition * 16 + z, gt_entity.getMetaData()); + Block tBlock = c.getBlock(x,y,z); + short tMetaID = (short)c.getBlockMetadata(x,y,z); + if (tBlock instanceof GT_Block_Ores_Abstract) { + TileEntity tTileEntity = c.getTileEntityUnsafe(x,y,z); + if ((tTileEntity!=null) + && (tTileEntity instanceof GT_TileEntity_Ores) + && ((GT_TileEntity_Ores) tTileEntity).mNatural == true) { + tMetaID = (short)((GT_TileEntity_Ores) tTileEntity).getMetaData(); + try { + + String name = GT_LanguageManager.getTranslation( + tBlock.getUnlocalizedName() + "." + tMetaID + ".name"); + if (name.startsWith("Small")) if (data != 1) continue; + packet.addBlock(c.xPosition * 16 + x, y, c.zPosition * 16 + z, tMetaID); + } + catch(Exception e) { + String name = tBlock.getUnlocalizedName() + "."; + if (name.contains(".small.")) if (data != 1) continue; + packet.addBlock(c.xPosition * 16 + x, y, c.zPosition * 16 + z, tMetaID); + } + } + } + else if (data == 1) { + ItemData tAssotiation = GT_OreDictUnificator.getAssociation(new ItemStack(tBlock, 1, tMetaID)); + if ((tAssotiation != null) && (tAssotiation.mPrefix.toString().startsWith("ore"))) { + try { + packet.addBlock(c.xPosition * 16 + x, y, c.zPosition * 16 + z, (short)tAssotiation.mMaterial.mMaterial.mMetaItemSubID); + } + catch (Exception e) + { + + } } } break; @@ -139,8 +169,28 @@ public class BehaviourDetravToolElectricProPick extends BehaviourDetravToolProPi 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) { long data = DetravMetaGeneratedTool01.INSTANCE.getToolGTDetravData(aStack); - if (data < 2) - return super.onItemUse(aItem, aStack, aPlayer, aWorld, aX, aY, aZ, aSide, hitX, hitY, hitZ); + if (data < 2) { + if(aWorld.getBlock(aX,aY,aZ) == Blocks.bedrock) + { + if (!aWorld.isRemote) { + FluidStack fStack = getUndergroundOil(aWorld,aX,aZ); + addChatMassageByValue(aPlayer,fStack.amount/5000,fStack.getLocalizedName()); + if (!aPlayer.capabilities.isCreativeMode) + ((DetravMetaGeneratedTool01)aItem).doDamage(aStack, this.mCosts); + } + return true; + } + 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 Random(aWorld.getSeed() + 3547 * aX + 1327 * aZ + 9973 * aY), 1000); + return true; + } + return true; + } + //} + //return false; + } if (data < 3) if (!aWorld.isRemote) { FluidStack fStack = getUndergroundOil(aWorld, aX, aZ); diff --git a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java index e1906fc5a3..7840a3bce5 100644 --- a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java +++ b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java @@ -4,8 +4,11 @@ import com.detrav.items.DetravMetaGeneratedTool01; 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_Proxy; +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; @@ -58,7 +61,7 @@ public class BehaviourDetravToolProPick extends Behaviour_None { } 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), new Random(aWorld.getSeed() + 3547 * aX + 1327 * aZ + 9973 * aY)); + 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 Random(aWorld.getSeed() + 3547 * aX + 1327 * aZ + 9973 * aY),40); return true; } return true; @@ -66,7 +69,7 @@ public class BehaviourDetravToolProPick extends Behaviour_None { return false; } - private void processOreProspecting(DetravMetaGeneratedTool01 aItem, ItemStack aStack, EntityPlayer aPlayer, Chunk aChunk, TileEntity aTileEntity, Random aRandom)//TileEntity aTileEntity) + protected void processOreProspecting(DetravMetaGeneratedTool01 aItem, ItemStack aStack, EntityPlayer aPlayer, Chunk aChunk, TileEntity aTileEntity, ItemData tAssotiation, Random aRandom, int chance)//TileEntity aTileEntity) { aRandom.nextInt(); if (aTileEntity != null) { @@ -78,29 +81,94 @@ public class BehaviourDetravToolProPick extends Behaviour_None { aItem.doDamage(aStack, this.mCosts); return; } - } else if (aRandom.nextInt(10) < 4) { + } else if (tAssotiation!=null) + { + //if (aTileEntity instanceof GT_TileEntity_Ores) { + try { + GT_TileEntity_Ores gt_entity = (GT_TileEntity_Ores) aTileEntity; + 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(); 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); for (int y = 1; y < ySize; y++) { - Block b = aChunk.getBlock(x, y, z); - if (b == GregTech_API.sBlockOres1) { - TileEntity entity = aChunk.getTileEntityUnsafe(x, y, z); - if (entity != null) { - GT_TileEntity_Ores gt_entity = (GT_TileEntity_Ores) entity; - String name = GT_LanguageManager.getTranslation( - b.getUnlocalizedName() + "." + gt_entity.getMetaData() + ".name"); - 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); + + 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!=null) + && (tTileEntity instanceof GT_TileEntity_Ores) + && ((GT_TileEntity_Ores) tTileEntity).mNatural == true) { + tMetaID = (short)((GT_TileEntity_Ores) tTileEntity).getMetaData(); + try { + + String name = GT_LanguageManager.getTranslation( + tBlock.getUnlocalizedName() + "." + tMetaID + ".name"); + 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); + } + } + 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); + } + } + } + } 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 = GT_LanguageManager.getTranslation( + "gt.blockores." + tMetaID + ".name"); + if (!ores.containsKey(name)) + ores.put(name, 1); + else { + int val = ores.get(name); + ores.put(name, val + 1); + } + } 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); + } + } + } + catch (Exception e) + { + } } } + } } int total = 0; |