1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
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) {
//Проверяем если нажат шифт
if (aPlayer.isSneaking()) {
long data = DetravMetaGeneratedTool01.INSTANCE.getToolGTDetravData(aStack);
if (data == 0) {
aPlayer.addChatMessage(new ChatComponentText("Set Mode: Oil, Any Block"));
DetravMetaGeneratedTool01.INSTANCE.setToolGTDetravData(aStack, 1);
} else {
aPlayer.addChatMessage(new ChatComponentText("Set Mode: Ore, Any Rock Block"));
DetravMetaGeneratedTool01.INSTANCE.setToolGTDetravData(aStack, 0);
}
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<Chunk> chunks = new ArrayList<Chunk>();
//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++) {
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")) continue;
packet.addBlock(c.xPosition * 16 + x, y, c.zPosition * 16 + z, gt_entity.getMetaData());
}
}
}
}
}
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 == 0)
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;
}
}
|