diff options
author | Detrav <witalyezep@gmail.com> | 2016-12-13 13:08:42 +0300 |
---|---|---|
committer | Detrav <witalyezep@gmail.com> | 2016-12-13 13:08:42 +0300 |
commit | ed1dc40db6bd3d237858e8e29a75f76bb9046181 (patch) | |
tree | 0f04584497121ecc2d07b204cbe12297e08cf2d3 /src | |
parent | 597cba688fbdf612c23d0403298ec89f002653fa (diff) | |
download | GT5-Unofficial-ed1dc40db6bd3d237858e8e29a75f76bb9046181.tar.gz GT5-Unofficial-ed1dc40db6bd3d237858e8e29a75f76bb9046181.tar.bz2 GT5-Unofficial-ed1dc40db6bd3d237858e8e29a75f76bb9046181.zip |
* Updated ore search mechanics
Diffstat (limited to 'src')
5 files changed, 150 insertions, 28 deletions
diff --git a/src/main/java/com/detrav/Detrav_AfterGTPreload_Loader.java b/src/main/java/com/detrav/Detrav_AfterGTPreload_Loader.java index 4c1c91350f..9dc3fc5fc7 100644 --- a/src/main/java/com/detrav/Detrav_AfterGTPreload_Loader.java +++ b/src/main/java/com/detrav/Detrav_AfterGTPreload_Loader.java @@ -42,6 +42,7 @@ public class Detrav_AfterGTPreload_Loader implements Runnable { DetravItemList.Solar_Boiler_Medium.set(new Detrav_MetaTileEntity_Boiler_Solar_Medium(2052,"boiler.steel.solar", "Steel Solar Boiler").getStackForm(1L)); DetravItemList.Solar_Boiler_High.set(new Detrav_MetaTileEntity_Boiler_Solar_High(2053,"boiler.stainless.steel.solar", "Stainless Steel Solar Boiler").getStackForm(1L)); DetravItemList.DetravAdvancedMiner2.set(new Detrav_MetaTileEntity_AdvMiner2(2054, "multimachine.advminer2.detrav", "Detrav Advanced Miner II").getStackForm(1)); + //DetravItemList.Anvil.set() // GameRegistry.addRecipe(new DetravRepairRecipe()); 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; diff --git a/src/main/java/com/detrav/proxies/CommonProxy.java b/src/main/java/com/detrav/proxies/CommonProxy.java index a9eaf3156b..f3d78a2aa3 100644 --- a/src/main/java/com/detrav/proxies/CommonProxy.java +++ b/src/main/java/com/detrav/proxies/CommonProxy.java @@ -54,6 +54,8 @@ public class CommonProxy implements IGuiHandler { GT_ModHandler.addCraftingRecipe(DetravItemList.Solar_Boiler_Medium.get(1L, new Object[0]), GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED, new Object[]{"GGG", "NNN", "PMP", Character.valueOf('M'), ItemList.Machine_Steel_Boiler, Character.valueOf('P'), OrePrefixes.pipeSmall.get(Materials.Steel), Character.valueOf('N'), OrePrefixes.dust.get(Materials.Nickel), Character.valueOf('G'), new ItemStack(Blocks.glass, 1)}); GT_ModHandler.addCraftingRecipe(DetravItemList.Solar_Boiler_High.get(1L, new Object[0]), GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED, new Object[]{"GGG", "RRR", "PMP", Character.valueOf('M'), ItemList.Casing_HV, Character.valueOf('P'), OrePrefixes.pipeSmall.get(Materials.StainlessSteel), Character.valueOf('R'), OrePrefixes.dust.get(Materials.Rutile), Character.valueOf('G'), new ItemStack(Blocks.glass, 1)}); + GT_ModHandler.addShapelessCraftingRecipe(DetravItemList.DetravAdvancedMiner2.get(1L, new Object[0]),new Object[]{ItemList.AdvancedMiner2}); + //DetravCraftingEventHandler.register(); DetravEntityDropEvent.register(); } diff --git a/src/main/java/com/detrav/tileentities/Detrav_MetaTileEntity_AdvMiner2.java b/src/main/java/com/detrav/tileentities/Detrav_MetaTileEntity_AdvMiner2.java index 38c9a2ae0b..3150f07d08 100644 --- a/src/main/java/com/detrav/tileentities/Detrav_MetaTileEntity_AdvMiner2.java +++ b/src/main/java/com/detrav/tileentities/Detrav_MetaTileEntity_AdvMiner2.java @@ -265,6 +265,7 @@ public class Detrav_MetaTileEntity_AdvMiner2 extends GT_MetaTileEntity_MultiBloc if (tStack.stackSize < 1) { tStack = null; } + return true; } } |