aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDetrav <witalyezep@gmail.com>2016-03-22 11:57:07 +0300
committerDetrav <witalyezep@gmail.com>2016-03-22 11:57:07 +0300
commitb5108a3f7dde2948998ed3b17f5d7734367bf98c (patch)
treed768d7b0c856741f61cbc1236421ee9a7ba97bea
parent804e6561deab8084e268b90e037c3f504c909f4f (diff)
downloadGT5-Unofficial-b5108a3f7dde2948998ed3b17f5d7734367bf98c.tar.gz
GT5-Unofficial-b5108a3f7dde2948998ed3b17f5d7734367bf98c.tar.bz2
GT5-Unofficial-b5108a3f7dde2948998ed3b17f5d7734367bf98c.zip
Add oil prospecting
-rw-r--r--src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java14
-rw-r--r--src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java50
2 files changed, 58 insertions, 6 deletions
diff --git a/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java b/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java
index 891f9cc04a..4f1dd44386 100644
--- a/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java
+++ b/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java
@@ -75,17 +75,19 @@ public class DetravMetaGeneratedTool01 extends GT_MetaGenerated_Tool {
aList.add(tOffset + 0, EnumChatFormatting.WHITE + "Durability: " + EnumChatFormatting.GREEN + (tMaxDamage - getToolDamage(aStack)) + " / " + tMaxDamage + EnumChatFormatting.GRAY);
aList.add(tOffset + 1, EnumChatFormatting.WHITE + tMaterial.mDefaultLocalName + EnumChatFormatting.YELLOW + " lvl " + getHarvestLevel(aStack, "") + EnumChatFormatting.GRAY);
aList.add(tOffset + 2, "Right click on rock for prospecting current chunk!");
- aList.add(tOffset + 3, "Traces: 1-9");
- aList.add(tOffset + 4, "Small: 10-29");
- aList.add(tOffset + 5, "Medium: 30-59");
- aList.add(tOffset + 6, "Large: 60-99");
- aList.add(tOffset + 7, "Very large: 100-***");
+ aList.add(tOffset + 3, "Right click on bedrock for prospecting oil!");
+ aList.add(tOffset + 4, "Traces: 1-9");
+ aList.add(tOffset + 5, "Small: 10-29");
+ aList.add(tOffset + 6, "Medium: 30-59");
+ aList.add(tOffset + 7, "Large: 60-99");
+ aList.add(tOffset + 8, "Very large: 100-***");
} else {
aList.add(tOffset + 0, EnumChatFormatting.WHITE + "Durability: " + EnumChatFormatting.GREEN + (tMaxDamage - getToolDamage(aStack)) + " / " + tMaxDamage + EnumChatFormatting.GRAY);
aList.add(tOffset + 1, EnumChatFormatting.WHITE + tMaterial.mDefaultLocalName + EnumChatFormatting.GRAY);
aList.add(tOffset + 2, EnumChatFormatting.WHITE + "Chunks: " + EnumChatFormatting.YELLOW + (getHarvestLevel(aStack, "")*2+1) + "x" + (getHarvestLevel(aStack, "")*2+1) + EnumChatFormatting.GRAY);
aList.add(tOffset + 3, "Right click on rock for prospecting current chunk!");
- aList.add(tOffset + 4, "Right click for scanning!");
+ aList.add(tOffset + 4, "Right click on bedrock for prospecting oil!");
+ aList.add(tOffset + 5, "Right click for scanning!");
}
//Right click on rock for prospecting current chunk!|Right click for scanning!
//aList.add(tOffset + 2, EnumChatFormatting.WHITE + "Attack Damage: " + EnumChatFormatting.BLUE + getToolCombatDamage(aStack) + EnumChatFormatting.GRAY);
diff --git a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java
index 2a8b976692..fd8655acfb 100644
--- a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java
+++ b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java
@@ -2,18 +2,24 @@ package com.detrav.items.behaviours;
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.util.GT_LanguageManager;
+import gregtech.common.GT_Proxy;
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.world.ChunkPosition;
import net.minecraft.world.World;
import net.minecraft.world.chunk.Chunk;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidStack;
import java.util.HashMap;
import java.util.Random;
@@ -40,6 +46,16 @@ 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) {
+ 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;
+ }
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));
@@ -113,4 +129,38 @@ public class BehaviourDetravToolProPick extends Behaviour_None {
else
aPlayer.addChatMessage(new ChatComponentText(foundTexts[5] + name));
}
+
+ public static FluidStack getUndergroundOil(World aWorld, int aX, int aZ) {
+ Random tRandom = new Random(aWorld.getSeed() + (long)(aX / 96) + (long)(7 * (aZ / 96)));
+ int oil = tRandom.nextInt(3);
+ double amount = (double)tRandom.nextInt(50) + tRandom.nextDouble();
+ Fluid tFluid = null;
+ switch(oil) {
+ case 0:
+ tFluid = Materials.NatruralGas.mGas;
+ break;
+ case 1:
+ tFluid = Materials.OilLight.mFluid;
+ break;
+ case 2:
+ tFluid = Materials.OilMedium.mFluid;
+ break;
+ case 3:
+ tFluid = Materials.OilHeavy.mFluid;
+ break;
+ default:
+ tFluid = Materials.Oil.mFluid;
+ }
+
+ int tAmount = (int)(Math.pow(amount, 5.0D) / 100.0D);
+ ChunkPosition tPos = new ChunkPosition(aX / 16, 1, aZ / 16);
+ if(GT_Proxy.chunkData.containsKey(tPos)) {
+ int[] tInts = (int[])GT_Proxy.chunkData.get(tPos);
+ if(tInts.length > 0 && tInts[0] >= 0) {
+ tAmount = tInts[0];
+ }
+ }
+ tAmount -= 5;
+ return new FluidStack(tFluid, tAmount);
+ }
} \ No newline at end of file