package com.detrav.items.behaviours; import com.detrav.items.DetravMetaGeneratedTool01; 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.util.GT_LanguageManager; import gregtech.common.blocks.GT_TileEntity_Ores; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChatComponentText; import net.minecraft.world.World; import net.minecraft.world.chunk.Chunk; import net.minecraftforge.fluids.FluidStack; import java.util.ArrayList; import java.util.List; /** * Created by wital_000 on 19.03.2016. */ public class BehaviourDetravToolElectricProPick extends BehaviourDetravToolProPick { public BehaviourDetravToolElectricProPick(int aCosts) { super(aCosts); } public ItemStack onItemRightClick(GT_MetaBase_Item aItem, ItemStack aStack, World aWorld, EntityPlayer aPlayer) { if (!aWorld.isRemote) { long data = DetravMetaGeneratedTool01.INSTANCE.getToolGTDetravData(aStack); //Проверяем если нажат шифт if (aPlayer.isSneaking()) { switch ((int)data) { case 0: aPlayer.addChatMessage(new ChatComponentText("Set Mode: Ore (with small), Any Rock Block")); DetravMetaGeneratedTool01.INSTANCE.setToolGTDetravData(aStack, 1); break; case 1: aPlayer.addChatMessage(new ChatComponentText("Set Mode: Oil, Any Block")); DetravMetaGeneratedTool01.INSTANCE.setToolGTDetravData(aStack, 2); break; default: aPlayer.addChatMessage(new ChatComponentText("Set Mode: Ore, Any Rock Block")); DetravMetaGeneratedTool01.INSTANCE.setToolGTDetravData(aStack, 0); break; } return super.onItemRightClick(aItem, aStack, aWorld, aPlayer); } //aPlayer.openGui(); DetravMetaGeneratedTool01 tool = (DetravMetaGeneratedTool01) aItem; //aWorld.getChunkFromBlockCoords() int cX = ((int) aPlayer.posX) >> 4; int cZ = ((int) aPlayer.posZ) >> 4; int size = aItem.getHarvestLevel(aStack, "") + 1; List chunks = new ArrayList(); //aPlayer.addChatMessage(new ChatComponentText("Scanning Begin, wait!")); //DetravProPickPacket00 packet = new DetravProPickPacket00(); for (int i = -size; i <= size; i++) for (int j = -size; j <= size; j++) if (i != -size && i != size && j != -size && j != size) chunks.add(aWorld.getChunkFromChunkCoords(cX + i, cZ + j)); size = size - 1; //c.gene DetravProPickPacket00 packet = new DetravProPickPacket00(); packet.chunkX = cX; packet.chunkZ = cZ; packet.size = size; for (Chunk c : chunks) { for (int x = 0; x < 16; x++) for (int z = 0; z < 16; z++) { int ySize = c.getHeightValue(x, z); for (int y = 1; y < ySize; y++) { if(data < 2) { 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()); } } } else { FluidStack fStack = getUndergroundOil(aWorld, c.xPosition * 16 + x, c.zPosition * 16 + z); if (fStack.amount > 50000) packet.addBlock(c.xPosition * 16 + x, y, c.zPosition * 16 + z, (short)-fStack.getFluidID()); break; } } } } packet.level = ((DetravMetaGeneratedTool01) aItem).getHarvestLevel(aStack, ""); DetravNetwork.INSTANCE.sendToPlayer(packet, (EntityPlayerMP) aPlayer); if (!aPlayer.capabilities.isCreativeMode) tool.doDamage(aStack, this.mCosts * chunks.size()); } return super.onItemRightClick(aItem, aStack, aWorld, aPlayer); } void addChatMassageByValue(EntityPlayer aPlayer, int value, String name) { if (value < 0) { aPlayer.addChatMessage(new ChatComponentText(foundTexts[6] + name)); } else if (value < 1) { aPlayer.addChatMessage(new ChatComponentText(foundTexts[0])); } else aPlayer.addChatMessage(new ChatComponentText(foundTexts[6] + name + ": " + value)); } 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 (!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; } }