aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/detrav/items/behaviours
diff options
context:
space:
mode:
authorDetrav <witalyezep@gmail.com>2016-12-13 13:08:42 +0300
committerDetrav <witalyezep@gmail.com>2016-12-13 13:08:42 +0300
commited1dc40db6bd3d237858e8e29a75f76bb9046181 (patch)
tree0f04584497121ecc2d07b204cbe12297e08cf2d3 /src/main/java/com/detrav/items/behaviours
parent597cba688fbdf612c23d0403298ec89f002653fa (diff)
downloadGT5-Unofficial-ed1dc40db6bd3d237858e8e29a75f76bb9046181.tar.gz
GT5-Unofficial-ed1dc40db6bd3d237858e8e29a75f76bb9046181.tar.bz2
GT5-Unofficial-ed1dc40db6bd3d237858e8e29a75f76bb9046181.zip
* Updated ore search mechanics
Diffstat (limited to 'src/main/java/com/detrav/items/behaviours')
-rw-r--r--src/main/java/com/detrav/items/behaviours/BehaviourDetravToolElectricProPick.java74
-rw-r--r--src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java100
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;