aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/detrav/items
diff options
context:
space:
mode:
authorBlueWeabo <ilia.iliev@tuta.com>2024-08-30 18:16:57 +0300
committerBlueWeabo <ilia.iliev@tuta.com>2024-08-30 18:16:57 +0300
commit3ed88dde64660e29c3f318d2c61b76082cc52ed9 (patch)
treedc56fdfef9a0dd30005bf926e0b46c23900d264d /src/main/java/com/detrav/items
parent557fb75ff46f2ad422e64b45887a33a42fe6cafb (diff)
downloadGT5-Unofficial-3ed88dde64660e29c3f318d2c61b76082cc52ed9.tar.gz
GT5-Unofficial-3ed88dde64660e29c3f318d2c61b76082cc52ed9.tar.bz2
GT5-Unofficial-3ed88dde64660e29c3f318d2c61b76082cc52ed9.zip
merge sources and fix dependencies
Diffstat (limited to 'src/main/java/com/detrav/items')
-rw-r--r--src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java362
-rw-r--r--src/main/java/com/detrav/items/behaviours/BehaviourDetravToolElectricProspector.java255
-rw-r--r--src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProspector.java424
-rw-r--r--src/main/java/com/detrav/items/processing/ProcessingDetravToolProspector.java113
-rw-r--r--src/main/java/com/detrav/items/tools/DetravProspector.java35
-rw-r--r--src/main/java/com/detrav/items/tools/DetravToolElectricProspector.java34
-rw-r--r--src/main/java/com/detrav/items/tools/DetravToolElectricProspectorBase.java201
7 files changed, 1424 insertions, 0 deletions
diff --git a/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java b/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java
new file mode 100644
index 0000000000..c5b891784e
--- /dev/null
+++ b/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java
@@ -0,0 +1,362 @@
+package com.detrav.items;
+
+import java.util.List;
+
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.StatCollector;
+
+import com.detrav.DetravScannerMod;
+import com.detrav.enums.DetravToolDictNames;
+import com.detrav.items.tools.DetravProspector;
+import com.detrav.items.tools.DetravToolElectricProspector;
+
+import gregtech.api.enums.GT_Values;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.TC_Aspects;
+import gregtech.api.interfaces.IToolStats;
+import gregtech.api.items.GT_MetaGenerated_Tool;
+
+/**
+ * Created by wital_000 on 19.03.2016.
+ */
+public class DetravMetaGeneratedTool01 extends GT_MetaGenerated_Tool {
+
+ public static DetravMetaGeneratedTool01 INSTANCE;
+
+ public DetravMetaGeneratedTool01() {
+ super("detrav.metatool.01");
+ INSTANCE = this;
+ addTool(
+ 0,
+ "Prospector's Scanner(ULV)",
+ "",
+ new DetravProspector(0),
+ DetravToolDictNames.craftingToolProspector.toString(),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.PERFODIO, 4L));
+ addTool(
+ 2,
+ "Prospector's Scanner(LV)",
+ "",
+ new DetravProspector(1),
+ DetravToolDictNames.craftingToolProspector.toString(),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.PERFODIO, 4L));
+ addTool(
+ 4,
+ "Prospector's Scanner(MV)",
+ "",
+ new DetravProspector(2),
+ DetravToolDictNames.craftingToolProspector.toString(),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.PERFODIO, 4L));
+ addTool(
+ 6,
+ "Prospector's Scanner(HV)",
+ "",
+ new DetravProspector(3),
+ DetravToolDictNames.craftingToolProspector.toString(),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.PERFODIO, 4L));
+ addTool(
+ 8,
+ "Prospector's Scanner(EV)",
+ "",
+ new DetravProspector(4),
+ DetravToolDictNames.craftingToolProspector.toString(),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.PERFODIO, 4L));
+ addTool(
+ 10,
+ "Prospector's Scanner(IV)",
+ "",
+ new DetravProspector(5),
+ DetravToolDictNames.craftingToolProspector.toString(),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.PERFODIO, 4L));
+ addTool(
+ 12,
+ "Prospector's Scanner(LuV)",
+ "",
+ new DetravProspector(6),
+ DetravToolDictNames.craftingToolProspector.toString(),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.PERFODIO, 4L));
+ addTool(
+ 14,
+ "Prospector's Scanner(ZPM)",
+ "",
+ new DetravProspector(7),
+ DetravToolDictNames.craftingToolProspector.toString(),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.PERFODIO, 4L));
+ addTool(
+ 16,
+ "Prospector's Scanner(UV)",
+ "",
+ new DetravProspector(8),
+ DetravToolDictNames.craftingToolProspector.toString(),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.PERFODIO, 4L));
+ addTool(
+ 18,
+ "Prospector's Scanner(UHV)",
+ "",
+ new DetravProspector(9),
+ DetravToolDictNames.craftingToolProspector.toString(),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.PERFODIO, 4L));
+
+ addTool(
+ 100,
+ "Electric Prospector's Scanner (LuV)",
+ "",
+ new DetravToolElectricProspector(6),
+ DetravToolDictNames.craftingToolElectricProspector,
+ new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.ELECTRUM, 4L));
+ addTool(
+ 102,
+ "Electric Prospector's Scanner (ZPM)",
+ "",
+ new DetravToolElectricProspector(7),
+ DetravToolDictNames.craftingToolElectricProspector,
+ new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.ELECTRUM, 4L));
+ addTool(
+ 104,
+ "Electric Prospector's Scanner (UV)",
+ "",
+ new DetravToolElectricProspector(8),
+ DetravToolDictNames.craftingToolElectricProspector,
+ new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.ELECTRUM, 4L));
+ addTool(
+ 106,
+ "Electric Prospector's Scanner (UHV)",
+ "",
+ new DetravToolElectricProspector(9),
+ DetravToolDictNames.craftingToolElectricProspector,
+ new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.ELECTRUM, 4L));
+ setCreativeTab(DetravScannerMod.TAB_DETRAV);
+ }
+
+ @SuppressWarnings("unchecked")
+ public void addAdditionalToolTips(List aList, ItemStack aStack, EntityPlayer aPlayer) {
+ long tMaxDamage = getToolMaxDamage(aStack);
+ Materials tMaterial = getPrimaryMaterial(aStack);
+ IToolStats tStats = getToolStats(aStack);
+ int tOffset = aList.size();
+ if (tStats == null) return;
+
+ String name = aStack.getUnlocalizedName();
+ String num = name.substring("gt.detrav.metatool.01.".length());
+ int meta = Integer.parseInt(num);
+ int range = getHarvestLevel(aStack, "") / 2 + (meta / 4);
+ if ((range % 2) == 0) {
+ range += 1;
+ }
+ if (meta < 100) {
+ aList.add(
+ tOffset + 0,
+ EnumChatFormatting.WHITE + StatCollector.translateToLocal("tooltip.detrav.scanner.durability")
+ + EnumChatFormatting.GREEN
+ + Long.toString(tMaxDamage - getToolDamage(aStack))
+ + " / "
+ + Long.toString(tMaxDamage)
+ + EnumChatFormatting.GRAY);
+ aList.add(
+ tOffset + 1,
+ EnumChatFormatting.WHITE + tMaterial.getLocalizedNameForItem("%material")
+ + EnumChatFormatting.GRAY);
+ aList.add(
+ tOffset + 2,
+ EnumChatFormatting.WHITE + StatCollector.translateToLocal("tooltip.detrav.scanner.range")
+ + Integer.toString(range)
+ + "x"
+ + Integer.toString(range)
+ + EnumChatFormatting.GRAY);
+ aList.add(
+ tOffset + 3,
+ EnumChatFormatting.ITALIC + StatCollector.translateToLocal("tooltip.detrav.scanner.usage.0")
+ + EnumChatFormatting.GRAY);
+ aList.add(
+ tOffset + 4,
+ EnumChatFormatting.ITALIC + StatCollector.translateToLocal("tooltip.detrav.scanner.usage.1")
+ + EnumChatFormatting.GRAY);
+ aList.add(
+ tOffset + 5,
+ EnumChatFormatting.ITALIC + StatCollector.translateToLocal("tooltip.detrav.scanner.success.chance")
+ + EnumChatFormatting.RESET
+ + Integer.toString(((((1 + meta) * 8) <= 100) ? ((1 + meta) * 8) : 100))
+ + EnumChatFormatting.GRAY
+ + "%");
+ aList.add(
+ tOffset + 6,
+ EnumChatFormatting.ITALIC + StatCollector.translateToLocal("tooltip.detrav.scanner.distance.0"));
+ aList.add(
+ tOffset + 7,
+ EnumChatFormatting.ITALIC + StatCollector.translateToLocal("tooltip.detrav.scanner.distance.1"));
+
+ } else if (meta >= 100 && meta < 200) {
+ aList.add(
+ tOffset + 0,
+ EnumChatFormatting.WHITE + StatCollector.translateToLocal("tooltip.detrav.scanner.durability")
+ + EnumChatFormatting.GREEN
+ + (tMaxDamage - getToolDamage(aStack))
+ + " / "
+ + tMaxDamage
+ + EnumChatFormatting.GRAY);
+ aList.add(
+ tOffset + 1,
+ EnumChatFormatting.WHITE + tMaterial.getLocalizedNameForItem("%material")
+ + EnumChatFormatting.GRAY);
+ aList.add(
+ tOffset + 2,
+ EnumChatFormatting.WHITE + StatCollector.translateToLocal("tooltip.detrav.scanner.range")
+ + EnumChatFormatting.YELLOW
+ + (getHarvestLevel(aStack, "") * 2 + 1)
+ + "x"
+ + (getHarvestLevel(aStack, "") * 2 + 1)
+ + EnumChatFormatting.GRAY);
+ aList.add(
+ tOffset + 3,
+ EnumChatFormatting.ITALIC + StatCollector.translateToLocal("tooltip.detrav.scanner.usage.0"));
+ aList.add(
+ tOffset + 4,
+ EnumChatFormatting.ITALIC + StatCollector.translateToLocal("tooltip.detrav.scanner.usage.1"));
+ aList.add(
+ tOffset + 5,
+ EnumChatFormatting.ITALIC + StatCollector.translateToLocal("tooltip.detrav.scanner.usage.2"));
+ aList.add(
+ tOffset + 6,
+ EnumChatFormatting.ITALIC + StatCollector.translateToLocal("tooltip.detrav.scanner.usage.3"));
+ aList.add(
+ tOffset + 7,
+ EnumChatFormatting.ITALIC + StatCollector.translateToLocal("tooltip.detrav.scanner.usage.4"));
+ }
+
+ }
+
+ public Long getToolGTDetravData(ItemStack aStack) {
+ NBTTagCompound aNBT = aStack.getTagCompound();
+ if (aNBT != null) {
+ aNBT = aNBT.getCompoundTag("GT.ToolStats");
+ if (aNBT != null) return aNBT.getLong("DetravData");
+ }
+ return 0L;
+ }
+
+ public boolean setToolGTDetravData(ItemStack aStack, long data) {
+ NBTTagCompound aNBT = aStack.getTagCompound();
+ if (aNBT != null) {
+ aNBT = aNBT.getCompoundTag("GT.ToolStats");
+ if (aNBT != null) {
+ aNBT.setLong("DetravData", data);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @SuppressWarnings("unchecked")
+ public void getDetravSubItems(Item item, CreativeTabs detravCreativeTab, List list) {
+
+ ItemStack dStack;
+ if (DetravScannerMod.isDreamcraftLoaded) {
+ // Materials at tiers
+ list.add(getToolWithStats(0, 1, Materials.Polycaprolactam, Materials.Polycaprolactam, null));
+ list.add(getToolWithStats(2, 1, Materials.Steel, Materials.Steel, null));
+ list.add(getToolWithStats(2, 1, Materials.Bronze, Materials.Steel, null));
+ list.add(getToolWithStats(4, 1, Materials.Manyullyn, Materials.Aluminium, null));
+ list.add(getToolWithStats(6, 1, Materials.DamascusSteel, Materials.DamascusSteel, null));
+ list.add(getToolWithStats(8, 1, Materials.Titanium, Materials.Titanium, null));
+ list.add(getToolWithStats(10, 1, Materials.TungstenSteel, Materials.TungstenSteel, null));
+ list.add(getToolWithStats(12, 1, Materials.Iridium, Materials.Iridium, null));
+ list.add(getToolWithStats(12, 1, Materials.Osmium, Materials.Osmium, null));
+ list.add(getToolWithStats(14, 1, Materials.Neutronium, Materials.Neutronium, null));
+ list.add(getToolWithStats(16, 1, Materials.InfinityCatalyst, Materials.InfinityCatalyst, null));
+ list.add(getToolWithStats(18, 1, Materials.Infinity, Materials.Infinity, null));
+ }
+
+ // Steel for comparison
+ list.add(getToolWithStats(0, 1, Materials.Steel, Materials.Steel, null));
+ list.add(getToolWithStats(2, 1, Materials.Steel, Materials.Steel, null));
+ list.add(getToolWithStats(4, 1, Materials.Steel, Materials.Steel, null));
+ list.add(getToolWithStats(6, 1, Materials.Steel, Materials.Steel, null));
+ list.add(getToolWithStats(8, 1, Materials.Steel, Materials.Steel, null));
+ list.add(getToolWithStats(10, 1, Materials.Steel, Materials.Steel, null));
+ list.add(getToolWithStats(12, 1, Materials.Steel, Materials.Steel, null));
+ list.add(getToolWithStats(14, 1, Materials.Steel, Materials.Steel, null));
+ list.add(getToolWithStats(16, 1, Materials.Steel, Materials.Steel, null));
+ list.add(getToolWithStats(18, 1, Materials.Steel, Materials.Steel, null));
+
+ // Electric Scanners
+ dStack = getToolWithStats(
+ 100,
+ 1,
+ Materials.Iridium,
+ Materials.TungstenSteel,
+ new long[] { 102400000L, GT_Values.V[6], 6L, -1L });
+ setCharge(dStack, 102400000L);
+ list.add(dStack);
+
+ dStack = getToolWithStats(
+ 102,
+ 1,
+ Materials.Neutronium,
+ Materials.TungstenSteel,
+ new long[] { 409600000L, GT_Values.V[7], 7L, -1L });
+ setCharge(dStack, 409600000L);
+ list.add(dStack);
+
+ if (DetravScannerMod.isDreamcraftLoaded) {
+ dStack = getToolWithStats(
+ 104,
+ 1,
+ Materials.InfinityCatalyst,
+ Materials.TungstenSteel,
+ new long[] { 1638400000L, GT_Values.V[8], 8L, -1L });
+ setCharge(dStack, 1638400000L);
+ list.add(dStack);
+
+ dStack = getToolWithStats(
+ 106,
+ 1,
+ Materials.Infinity,
+ Materials.TungstenSteel,
+ new long[] { 6553600000L, GT_Values.V[9], 9L, -1L });
+ setCharge(dStack, 6553600000L);
+ list.add(dStack);
+ } else {
+ dStack = getToolWithStats(
+ 106,
+ 1,
+ Materials.Neutronium,
+ Materials.TungstenSteel,
+ new long[] { 6553600000L, GT_Values.V[9], 9L, -1L });
+ setCharge(dStack, 6553600000L);
+ list.add(dStack);
+ }
+ }
+}
diff --git a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolElectricProspector.java b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolElectricProspector.java
new file mode 100644
index 0000000000..8cd4e28fa4
--- /dev/null
+++ b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolElectricProspector.java
@@ -0,0 +1,255 @@
+package com.detrav.items.behaviours;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import net.minecraft.block.Block;
+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.util.StatCollector;
+import net.minecraft.world.World;
+import net.minecraft.world.chunk.Chunk;
+import net.minecraftforge.fluids.FluidStack;
+
+import com.detrav.DetravScannerMod;
+import com.detrav.items.DetravMetaGeneratedTool01;
+import com.detrav.net.DetravNetwork;
+import com.detrav.net.ProspectingPacket;
+import com.detrav.utils.BartWorksHelper;
+import com.detrav.utils.GTppHelper;
+import com.sinthoras.visualprospecting.VisualProspecting_API;
+
+import cpw.mods.fml.common.Loader;
+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_UndergroundOil;
+import gregtech.common.blocks.GT_Block_Ores_Abstract;
+import gregtech.common.blocks.GT_TileEntity_Ores;
+
+/**
+ * Created by wital_000 on 19.03.2016.
+ */
+public class BehaviourDetravToolElectricProspector extends BehaviourDetravToolProspector {
+
+ public BehaviourDetravToolElectricProspector(int aCosts) {
+ super(aCosts);
+ }
+
+ public ItemStack onItemRightClick(GT_MetaBase_Item aItem, ItemStack aStack, World aWorld, EntityPlayer aPlayer) {
+ if (!aWorld.isRemote) {
+ int data = DetravMetaGeneratedTool01.INSTANCE.getToolGTDetravData(aStack).intValue();
+ if (aPlayer.isSneaking()) {
+ data++;
+ if (data > 3) data = 0;
+ switch (data) {
+ case 0:
+ aPlayer.addChatMessage(
+ new ChatComponentText(StatCollector.translateToLocal("detrav.scanner.mode.0")));
+ break;
+ case 1:
+ aPlayer.addChatMessage(
+ new ChatComponentText(StatCollector.translateToLocal("detrav.scanner.mode.1")));
+ break;
+ case 2:
+ aPlayer.addChatMessage(
+ new ChatComponentText(StatCollector.translateToLocal("detrav.scanner.mode.2")));
+ break;
+ case 3:
+ aPlayer.addChatMessage(
+ new ChatComponentText(StatCollector.translateToLocal("detrav.scanner.mode.3")));
+ break;
+ default:
+ aPlayer.addChatMessage(
+ new ChatComponentText(StatCollector.translateToLocal("detrav.scanner.mode.error")));
+ break;
+ }
+ DetravMetaGeneratedTool01.INSTANCE.setToolGTDetravData(aStack, (long) data);
+ return super.onItemRightClick(aItem, aStack, aWorld, aPlayer);
+ }
+
+ final DetravMetaGeneratedTool01 tool = (DetravMetaGeneratedTool01) aItem;
+ final int cX = ((int) aPlayer.posX) >> 4;
+ final int cZ = ((int) aPlayer.posZ) >> 4;
+ int size = aItem.getHarvestLevel(aStack, "") + 1;
+ final List<Chunk> chunks = new ArrayList<>();
+ aPlayer.addChatMessage(new ChatComponentText("Scanning..."));
+
+ 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;
+
+ final ProspectingPacket packet = new ProspectingPacket(
+ cX,
+ cZ,
+ (int) aPlayer.posX,
+ (int) aPlayer.posZ,
+ size,
+ data);
+ final String small_ore_keyword = StatCollector.translateToLocal("detrav.scanner.small_ore.keyword");
+ for (Chunk c : chunks) {
+ for (int x = 0; x < 16; x++) for (int z = 0; z < 16; z++) {
+ final int ySize = c.getHeightValue(x, z);
+ for (int y = 1; y < ySize; y++) {
+ switch (data) {
+ case 0:
+ case 1:
+ final 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 instanceof GT_TileEntity_Ores)
+ && ((GT_TileEntity_Ores) tTileEntity).mNatural) {
+ tMetaID = (short) ((GT_TileEntity_Ores) tTileEntity).getMetaData();
+ try {
+ String name = GT_LanguageManager.getTranslation(
+ tBlock.getUnlocalizedName() + "." + tMetaID + ".name");
+ if (data != 1 && name.startsWith(small_ore_keyword)) continue;
+ packet.addBlock(c.xPosition * 16 + x, y, c.zPosition * 16 + z, tMetaID);
+ } catch (Exception e) {
+ String name = tBlock.getUnlocalizedName() + ".";
+ if (data != 1 && name.contains(".small.")) continue;
+ packet.addBlock(c.xPosition * 16 + x, y, c.zPosition * 16 + z, tMetaID);
+ }
+ }
+ } else if (DetravScannerMod.isGTppLoaded && GTppHelper.isGTppBlock(tBlock)) {
+ packet.addBlock(
+ c.xPosition * 16 + x,
+ y,
+ c.zPosition * 16 + z,
+ GTppHelper.getGTppMeta(tBlock));
+ } else if (DetravScannerMod.isBartWorksLoaded && BartWorksHelper.isOre(tBlock)) {
+ if (data != 1 && BartWorksHelper.isSmallOre(tBlock)) continue;
+ packet.addBlock(
+ c.xPosition * 16 + x,
+ y,
+ c.zPosition * 16 + z,
+ BartWorksHelper.getMetaFromBlock(c, x, y, z, tBlock));
+ } else if (data == 1) {
+ ItemData tAssotiation = GT_OreDictUnificator
+ .getAssociation(new ItemStack(tBlock, 1, tMetaID));
+ if ((tAssotiation != null) && (tAssotiation.mPrefix.toString().startsWith("ore"))) {
+ packet.addBlock(
+ c.xPosition * 16 + x,
+ y,
+ c.zPosition * 16 + z,
+ (short) tAssotiation.mMaterial.mMaterial.mMetaItemSubID);
+ }
+ }
+ break;
+ case 2:
+ if ((x == 0) || (z == 0)) { // Skip doing the locations with the grid on them.
+ break;
+ }
+ FluidStack fStack = GT_UndergroundOil.undergroundOil(
+ aWorld.getChunkFromBlockCoords(c.xPosition * 16 + x, c.zPosition * 16 + z),
+ -1);
+ if (fStack.amount > 0) {
+ packet.addBlock(
+ c.xPosition * 16 + x,
+ 1,
+ c.zPosition * 16 + z,
+ (short) fStack.getFluidID());
+ packet.addBlock(
+ c.xPosition * 16 + x,
+ 2,
+ c.zPosition * 16 + z,
+ (short) fStack.amount);
+ }
+ break;
+ case 3:
+ float polution = (float) getPolution(
+ aWorld,
+ c.xPosition * 16 + x,
+ c.zPosition * 16 + z);
+ polution /= 2000000;
+ polution *= -0xFF;
+ if (polution > 0xFF) polution = 0xFF;
+ polution = 0xFF - polution;
+ packet.addBlock(c.xPosition * 16 + x, 1, c.zPosition * 16 + z, (short) polution);
+ break;
+ }
+ if (data > 1) break;
+ }
+ }
+ }
+ packet.level = ((DetravMetaGeneratedTool01) aItem).getHarvestLevel(aStack, "");
+ DetravNetwork.INSTANCE.sendToPlayer(packet, (EntityPlayerMP) aPlayer);
+ if (!aPlayer.capabilities.isCreativeMode) tool.doDamage(aStack, this.mCosts * chunks.size());
+
+ if (Loader.isModLoaded("visualprospecting")) {
+ if (data == 0 || data == 1) {
+ VisualProspecting_API.LogicalServer.sendProspectionResultsToClient(
+ (EntityPlayerMP) aPlayer,
+ VisualProspecting_API.LogicalServer.prospectOreVeinsWithinRadius(
+ aWorld.provider.dimensionId,
+ (int) aPlayer.posX,
+ (int) aPlayer.posZ,
+ size * 16),
+ new ArrayList<>());
+ } else if (data == 2) {
+ VisualProspecting_API.LogicalServer.sendProspectionResultsToClient(
+ (EntityPlayerMP) aPlayer,
+ new ArrayList<>(),
+ VisualProspecting_API.LogicalServer.prospectUndergroundFluidsWithingRadius(
+ aWorld,
+ (int) aPlayer.posX,
+ (int) aPlayer.posZ,
+ size * 16));
+ }
+ }
+ }
+ return super.onItemRightClick(aItem, aStack, aWorld, aPlayer);
+ }
+
+ void addChatMassageByValue(EntityPlayer aPlayer, int value, String name) {
+ if (value < 0) {
+ aPlayer.addChatMessage(
+ new ChatComponentText(StatCollector.translateToLocal("detrav.scanner.found.texts.6") + name));
+ } else if (value < 1) {
+ aPlayer.addChatMessage(
+ new ChatComponentText(StatCollector.translateToLocal("detrav.scanner.found.texts.6")));
+ } else aPlayer.addChatMessage(
+ new ChatComponentText(
+ StatCollector.translateToLocal("detrav.scanner.found.texts.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) {
+ if (aWorld.getBlock(aX, aY, aZ) == Blocks.bedrock) {
+ if (!aWorld.isRemote) {
+ FluidStack fStack = GT_UndergroundOil.undergroundOil(aWorld.getChunkFromBlockCoords(aX, aZ), -1);
+ addChatMassageByValue(aPlayer, fStack.amount, fStack.getLocalizedName());
+ if (!aPlayer.capabilities.isCreativeMode)
+ ((DetravMetaGeneratedTool01) aItem).doDamage(aStack, this.mCosts);
+ }
+ return true;
+ } else {
+ if (!aWorld.isRemote) {
+ prospectSingleChunk((DetravMetaGeneratedTool01) aItem, aStack, aPlayer, aWorld, aX, aY, aZ);
+ }
+ return true;
+ }
+ }
+ if (data < 3) if (!aWorld.isRemote) {
+ FluidStack fStack = GT_UndergroundOil.undergroundOil(aWorld.getChunkFromBlockCoords(aX, aZ), -1);
+ addChatMassageByValue(aPlayer, fStack.amount, fStack.getLocalizedName());
+ if (!aPlayer.capabilities.isCreativeMode) ((DetravMetaGeneratedTool01) aItem).doDamage(aStack, this.mCosts);
+ return true;
+ }
+ if (!aWorld.isRemote) {
+ int polution = getPolution(aWorld, aX, aZ);
+ addChatMassageByValue(aPlayer, polution, "Pollution");
+ }
+ return true;
+ }
+
+}
diff --git a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProspector.java b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProspector.java
new file mode 100644
index 0000000000..f6f6350020
--- /dev/null
+++ b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProspector.java
@@ -0,0 +1,424 @@
+package com.detrav.items.behaviours;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.SplittableRandom;
+
+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.util.EnumChatFormatting;
+import net.minecraft.util.StatCollector;
+import net.minecraft.world.World;
+import net.minecraft.world.chunk.Chunk;
+import net.minecraftforge.fluids.FluidStack;
+
+import com.detrav.DetravScannerMod;
+import com.detrav.items.DetravMetaGeneratedTool01;
+import com.detrav.utils.BartWorksHelper;
+import com.detrav.utils.GTppHelper;
+import com.github.bartimaeusnek.bartworks.system.material.Werkstoff;
+import com.sinthoras.visualprospecting.VisualProspecting_API;
+
+import cpw.mods.fml.common.Loader;
+import cpw.mods.fml.common.registry.LanguageRegistry;
+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_Pollution;
+import gregtech.common.GT_UndergroundOil;
+import gregtech.common.blocks.GT_Block_Ores_Abstract;
+import gregtech.common.blocks.GT_TileEntity_Ores;
+import gregtech.common.items.behaviors.Behaviour_None;
+
+/**
+ * Created by wital_000 on 19.03.2016.
+ */
+public class BehaviourDetravToolProspector extends Behaviour_None {
+
+ static final int[] DISTANCEINTS = new int[] { 0, 4, 25, 64 };
+ int distTextIndex;
+
+ HashMap<String, Integer> ores;
+ int badluck;
+
+ protected final int mCosts;
+
+ static final String CHAT_MSG_SEPARATOR = "--------------------";
+
+ public BehaviourDetravToolProspector(int aCosts) {
+ mCosts = aCosts;
+ }
+
+ 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) {
+
+ SplittableRandom aRandom = new SplittableRandom();
+ int chance = ((1 + aStack.getItemDamage()) * 8) > 100 ? 100 : (1 + aStack.getItemDamage()) * 8;
+
+ if (aWorld.isRemote) return false;
+
+ if (aWorld.getBlock(aX, aY, aZ) == Blocks.bedrock) {
+ if (!aWorld.isRemote && aRandom.nextInt(100) < chance) {
+ FluidStack fStack = GT_UndergroundOil.undergroundOil(aWorld.getChunkFromBlockCoords(aX, aZ), -1);
+ addChatMassageByValue(aPlayer, fStack.amount / 2, "a Fluid");// fStack.getLocalizedName());
+ /*
+ * boolean fluid = GT_UndergroundOil.undergroundOil(aWorld.getChunkFromBlockCoords(aX, aZ), -1)!=null
+ * &&GT_UndergroundOil.undergroundOil(aWorld.getChunkFromBlockCoords(aX, aZ), -1).getFluid()!=null; if
+ * (fluid) aPlayer.addChatMessage(new
+ * ChatComponentText(EnumChatFormatting.GREEN+"You found some liquid.")); else
+ * aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.RED+"You found no liquid."));
+ */
+ if (!aPlayer.capabilities.isCreativeMode)
+ ((DetravMetaGeneratedTool01) aItem).doDamage(aStack, this.mCosts);
+
+ if (Loader.isModLoaded("visualprospecting")) {
+ VisualProspecting_API.LogicalServer.sendProspectionResultsToClient(
+ (EntityPlayerMP) aPlayer,
+ new ArrayList<>(),
+ VisualProspecting_API.LogicalServer.prospectUndergroundFluidsWithingRadius(
+ aWorld,
+ (int) aPlayer.posX,
+ (int) aPlayer.posZ,
+ 0));
+ }
+ }
+ return true;
+ }
+ if (aWorld.getBlock(aX, aY, aZ).getMaterial() == Material.rock
+ || aWorld.getBlock(aX, aY, aZ).getMaterial() == Material.ground
+ || aWorld.getBlock(aX, aY, aZ) == GregTech_API.sBlockOres1) {
+ if (!aWorld.isRemote) {
+ prospectChunks((DetravMetaGeneratedTool01) aItem, aStack, aPlayer, aWorld, aX, aY, aZ, aRandom, chance);
+ }
+ return true;
+ }
+ return false;
+ }
+
+ protected void prospectChunks(GT_MetaBase_Item aItem, ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX,
+ int aY, int aZ, SplittableRandom aRandom, int chance) {
+ int bX = aX;
+ int bZ = aZ;
+
+ badluck = 0;
+ ores = new HashMap<>();
+
+ int range = ((DetravMetaGeneratedTool01) aItem).getHarvestLevel(aStack, "") / 2 + (aStack.getItemDamage() / 4);
+ if ((range % 2) == 0) {
+ range += 1; // kinda not needed here, divide takes it out, but we put it back in with the range+1 in the
+ // loop
+ }
+ range = range / 2; // Convert range from diameter to radius
+
+