From 6ecc76786555e2aaa7b1e9f5c65b9619a9d93239 Mon Sep 17 00:00:00 2001 From: Jordan Byrne Date: Thu, 22 Feb 2018 15:46:32 +1000 Subject: + Added a debug item for linking blocks. % More project clean-up. % Made fish trap 2x slower. $ Fixed issue with fish trap name. $ Fixed .08 issue getting powder barrels. --- src/Java/gtPlusPlus/core/util/UtilsText.java | 18 - src/Java/gtPlusPlus/core/util/data/EnumUtils.java | 9 + .../gtPlusPlus/core/util/data/StringUtils.java | 16 + .../gtPlusPlus/core/util/data/UUIDGenerator.java | 451 --------------------- .../core/util/minecraft/MaterialUtils.java | 15 +- .../core/util/minecraft/MiningUtils.java | 214 ++++++++++ .../core/util/minecraft/UtilsMining.java | 214 ---------- 7 files changed, 252 insertions(+), 685 deletions(-) delete mode 100644 src/Java/gtPlusPlus/core/util/UtilsText.java delete mode 100644 src/Java/gtPlusPlus/core/util/data/UUIDGenerator.java create mode 100644 src/Java/gtPlusPlus/core/util/minecraft/MiningUtils.java delete mode 100644 src/Java/gtPlusPlus/core/util/minecraft/UtilsMining.java (limited to 'src/Java/gtPlusPlus/core/util') diff --git a/src/Java/gtPlusPlus/core/util/UtilsText.java b/src/Java/gtPlusPlus/core/util/UtilsText.java deleted file mode 100644 index 9896f2be0c..0000000000 --- a/src/Java/gtPlusPlus/core/util/UtilsText.java +++ /dev/null @@ -1,18 +0,0 @@ -package gtPlusPlus.core.util; - -public enum UtilsText { - - blue('1'), green('2'), teal('3'), maroon('4'), purple('5'), orange('6'), lightGray('7'), darkGray('8'), lightBlue( - '9'), black('0'), lime('a'), aqua('b'), red('c'), pink('d'), yellow('e'), white('f'); - - private char colourValue; - - private UtilsText(final char value) { - this.colourValue = value; - } - - public String colour() { - return "§" + this.colourValue; - } - -} diff --git a/src/Java/gtPlusPlus/core/util/data/EnumUtils.java b/src/Java/gtPlusPlus/core/util/data/EnumUtils.java index 22ca73be0b..4a29001a28 100644 --- a/src/Java/gtPlusPlus/core/util/data/EnumUtils.java +++ b/src/Java/gtPlusPlus/core/util/data/EnumUtils.java @@ -3,6 +3,8 @@ package gtPlusPlus.core.util.data; import com.google.common.base.Enums; import com.google.common.base.Optional; +import gregtech.api.enums.Materials; + public class EnumUtils { /** @@ -36,6 +38,13 @@ public class EnumUtils { name, enumeration.getName() )); } + + public static Object getValue(Class class1, String materialName, boolean bool) { + if (Enum.class.isInstance(class1)){ + return getValue(class1, materialName); + } + return null; + } } diff --git a/src/Java/gtPlusPlus/core/util/data/StringUtils.java b/src/Java/gtPlusPlus/core/util/data/StringUtils.java index 77b1fc8413..3ad5f3bb8b 100644 --- a/src/Java/gtPlusPlus/core/util/data/StringUtils.java +++ b/src/Java/gtPlusPlus/core/util/data/StringUtils.java @@ -94,4 +94,20 @@ public class StringUtils { return false; } + //Can call this Enum for formatting. + public static enum TextUtils { + blue('1'), green('2'), teal('3'), maroon('4'), purple('5'), orange('6'), lightGray('7'), darkGray('8'), lightBlue( + '9'), black('0'), lime('a'), aqua('b'), red('c'), pink('d'), yellow('e'), white('f'); + + private char colourValue; + private TextUtils(final char value) { + this.colourValue = value; + } + public String colour() { + return getFormatter() + this.colourValue; + } + private String getFormatter() { + return "\u00A7"; // Returns §. + } + } } diff --git a/src/Java/gtPlusPlus/core/util/data/UUIDGenerator.java b/src/Java/gtPlusPlus/core/util/data/UUIDGenerator.java deleted file mode 100644 index 513468a9f6..0000000000 --- a/src/Java/gtPlusPlus/core/util/data/UUIDGenerator.java +++ /dev/null @@ -1,451 +0,0 @@ -package gtPlusPlus.core.util.data; - -import java.io.IOException; -import java.net.InetAddress; -import java.util.Random; -import java.util.UUID; - -import gtPlusPlus.api.objects.random.CSPRNG_DO_NOT_USE; - -/** - * - * Implement modified version of Apache's OpenJPA UUID generator. - * This UUID generator is paired with a Blum-Blum-Shub random number generator - * which in itself is seeded by custom SecureRandom. - * - * The UUID generator class has been converted from a static factory to an instanced factory. - * - */ - -//========================================= APACHE BLOCK ========================================= - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/** - * UUID value generator. Type 1 generator is based on the time-based generator - * in the Apache Commons Id project: http://jakarta.apache.org/commons/sandbox - * /id/uuid.html The type 4 generator uses the standard Java UUID generator. - * - * The type 1 code has been vastly simplified and modified to replace the - * ethernet address of the host machine with the IP, since we do not want to - * require native libs and Java cannot access the MAC address directly. - * - * In spirit, implements the IETF UUID draft specification, found here:
- * http://www1.ics.uci.edu/~ejw/authoring/uuid-guid/draft-leach-uuids-guids-01 - * .txt - * - * @author Abe White, Kevin Sutter - * @since 0.3.3 - */ -public class UUIDGenerator { - - // supported UUID types - public static final int TYPE1 = 1; - public static final int TYPE4 = 4; - // indexes within the uuid array for certain boundaries - private static final byte IDX_TIME_HI = 6; - private static final byte IDX_TYPE = 6; // multiplexed - private static final byte IDX_TIME_MID = 4; - private static final byte IDX_TIME_LO = 0; - private static final byte IDX_TIME_SEQ = 8; - private static final byte IDX_VARIATION = 8; // multiplexed - // indexes and lengths within the timestamp for certain boundaries - private static final byte TS_TIME_LO_IDX = 4; - private static final byte TS_TIME_LO_LEN = 4; - private static final byte TS_TIME_MID_IDX = 2; - private static final byte TS_TIME_MID_LEN = 2; - private static final byte TS_TIME_HI_IDX = 0; - private static final byte TS_TIME_HI_LEN = 2; - // offset to move from 1/1/1970, which is 0-time for Java, to gregorian - // 0-time 10/15/1582, and multiplier to go from 100nsec to msec units - private static final long GREG_OFFSET = 0xB1D069B5400L; - private static final long MILLI_MULT = 10000L; - // type of UUID -- time based - private final static byte TYPE_TIME_BASED = 0x10; - // random number generator used to reduce conflicts with other JVMs, and - // hasher for strings. - private Random RANDOM; - // 4-byte IP address + 2 random bytes to compensate for the fact that - // the MAC address is usually 6 bytes - private byte[] IP; - // counter is initialized to 0 and is incremented for each uuid request - // within the same timestamp window. - private int _counter; - // current timestamp (used to detect multiple uuid requests within same - // timestamp) - private long _currentMillis; - // last used millis time, and a semi-random sequence that gets reset - // when it overflows - private long _lastMillis = 0L; - private static final int MAX_14BIT = 0x3FFF; - private short _seq = 0; - private boolean type1Initialized = false; /* - * Initializer for type 1 UUIDs. Creates random generator and genenerates - * the node portion of the UUID using the IP address. - */ - private synchronized void initializeForType1() { - if (type1Initialized == true) { - return; - } - // note that secure random is very slow the first time - // it is used; consider switching to a standard random - RANDOM = CSPRNG_DO_NOT_USE.generate(); - _seq = (short) RANDOM.nextInt(MAX_14BIT); - - byte[] ip = null; - try { - ip = InetAddress.getLocalHost().getAddress(); - } catch (IOException ioe) { - throw new RuntimeException(ioe); - } - IP = new byte[6]; - RANDOM.nextBytes(IP); - //OPENJPA-2055: account for the fact that 'getAddress' - //may return an IPv6 address which is 16 bytes wide. - for( int i = 0 ; i < ip.length; ++i ) { - IP[2+(i%4)] ^= ip[i]; - } - type1Initialized = true; - } - /** - * Return a unique UUID value. - */ - public byte[] next(int type) { - if (type == TYPE4) { - return createType4(); - } - return createType1(); - } - /* - * Creates a type 1 UUID - */ - public byte[] createType1() { - if (type1Initialized == false) { - initializeForType1(); - } - // set ip addr - byte[] uuid = new byte[16]; - System.arraycopy(IP, 0, uuid, 10, IP.length); - // Set time info. Have to do this processing within a synchronized - // block because of the statics... - long now = 0; - synchronized (UUIDGenerator.class) { - // Get the time to use for this uuid. This method has the side - // effect of modifying the clock sequence, as well. - now = getTime(); - // Insert the resulting clock sequence into the uuid - uuid[IDX_TIME_SEQ] = (byte) ((_seq & 0x3F00) >>> 8); - uuid[IDX_VARIATION] |= 0x80; - uuid[IDX_TIME_SEQ+1] = (byte) (_seq & 0xFF); - } - // have to break up time because bytes are spread through uuid - byte[] timeBytes = Bytes.toBytes(now); - // Copy time low - System.arraycopy(timeBytes, TS_TIME_LO_IDX, uuid, IDX_TIME_LO, - TS_TIME_LO_LEN); - // Copy time mid - System.arraycopy(timeBytes, TS_TIME_MID_IDX, uuid, IDX_TIME_MID, - TS_TIME_MID_LEN); - // Copy time hi - System.arraycopy(timeBytes, TS_TIME_HI_IDX, uuid, IDX_TIME_HI, - TS_TIME_HI_LEN); - //Set version (time-based) - uuid[IDX_TYPE] |= TYPE_TIME_BASED; // 0001 0000 - return uuid; - } - /* - * Creates a type 4 UUID - */ - private byte[] createType4() { - UUID type4 = UUID.randomUUID(); - byte[] uuid = new byte[16]; - longToBytes(type4.getMostSignificantBits(), uuid, 0); - longToBytes(type4.getLeastSignificantBits(), uuid, 8); - return uuid; - } - /* - * Converts a long to byte values, setting them in a byte array - * at a given starting position. - */ - private void longToBytes(long longVal, byte[] buf, int sPos) { - sPos += 7; - for(int i = 0; i < 8; i++) - buf[sPos-i] = (byte)(longVal >>> (i * 8)); - } - - /** - * Return the next unique uuid value as a 16-character string. - */ - public String nextString(int type) { - byte[] bytes = next(type); - try { - return new String(bytes, "ISO-8859-1"); - } catch (Exception e) { - return new String(bytes); - } - } - /** - * Return the next unique uuid value as a 32-character hex string. - */ - public String nextHex(int type) { - return Base16Encoder.encode(next(type)); - } - /** - * Get the timestamp to be used for this uuid. Must be called from - * a synchronized block. - * - * @return long timestamp - */ - // package-visibility for testing - private long getTime() { - if (RANDOM == null) - initializeForType1(); - long newTime = getUUIDTime(); - if (newTime <= _lastMillis) { - incrementSequence(); - newTime = getUUIDTime(); - } - _lastMillis = newTime; - return newTime; - } - /** - * Gets the appropriately modified timestamep for the UUID. Must be called - * from a synchronized block. - * - * @return long timestamp in 100ns intervals since the Gregorian change - * offset - */ - private long getUUIDTime() { - if (_currentMillis != System.currentTimeMillis()) { - _currentMillis = System.currentTimeMillis(); - _counter = 0; // reset counter - } - // check to see if we have created too many uuid's for this timestamp - if (_counter + 1 >= MILLI_MULT) { - // Original algorithm threw exception. Seemed like overkill. - // Let's just increment the timestamp instead and start over... - _currentMillis++; - _counter = 0; - } - // calculate time as current millis plus offset times 100 ns ticks - long currentTime = (_currentMillis + GREG_OFFSET) * MILLI_MULT; - // return the uuid time plus the artificial tick counter incremented - return currentTime + _counter++; - } - /** - * Increments the clock sequence for this uuid. Must be called from a - * synchronized block. - */ - private void incrementSequence() { - // increment, but if it's greater than its 14-bits, reset it - if (++_seq > MAX_14BIT) { - _seq = (short) RANDOM.nextInt(MAX_14BIT); // semi-random - } - } - - //Add Dependant classes internally - - /** - * This class came from the Apache Commons Id sandbox project in support - * of the UUIDGenerator implementation. - * - *

Static methods for managing byte arrays (all methods follow Big - * Endian order where most significant bits are in front).

- */ - public static final class Bytes { - /** - *

Hide constructor in utility class.

- */ - private Bytes() { - } - /** - * Appends two bytes array into one. - * - * @param a A byte[]. - * @param b A byte[]. - * @return A byte[]. - */ - public static byte[] append(byte[] a, byte[] b) { - byte[] z = new byte[a.length + b.length]; - System.arraycopy(a, 0, z, 0, a.length); - System.arraycopy(b, 0, z, a.length, b.length); - return z; - } - /** - * Returns a 8-byte array built from a long. - * - * @param n The number to convert. - * @return A byte[]. - */ - public static byte[] toBytes(long n) { - return toBytes(n, new byte[8]); - } - /** - * Build a 8-byte array from a long. No check is performed on the - * array length. - * - * @param n The number to convert. - * @param b The array to fill. - * @return A byte[]. - */ - public static byte[] toBytes(long n, byte[] b) { - b[7] = (byte) (n); - n >>>= 8; - b[6] = (byte) (n); - n >>>= 8; - b[5] = (byte) (n); - n >>>= 8; - b[4] = (byte) (n); - n >>>= 8; - b[3] = (byte) (n); - n >>>= 8; - b[2] = (byte) (n); - n >>>= 8; - b[1] = (byte) (n); - n >>>= 8; - b[0] = (byte) (n); - - return b; - } - /** - * Build a long from first 8 bytes of the array. - * - * @param b The byte[] to convert. - * @return A long. - */ - public static long toLong(byte[] b) { - return ((((long) b[7]) & 0xFF) - + ((((long) b[6]) & 0xFF) << 8) - + ((((long) b[5]) & 0xFF) << 16) - + ((((long) b[4]) & 0xFF) << 24) - + ((((long) b[3]) & 0xFF) << 32) - + ((((long) b[2]) & 0xFF) << 40) - + ((((long) b[1]) & 0xFF) << 48) - + ((((long) b[0]) & 0xFF) << 56)); - } - /** - * Compares two byte arrays for equality. - * - * @param a A byte[]. - * @param b A byte[]. - * @return True if the arrays have identical contents. - */ - public static boolean areEqual(byte[] a, byte[] b) { - int aLength = a.length; - if (aLength != b.length) { - return false; - } - for (int i = 0; i < aLength; i++) { - if (a[i] != b[i]) { - return false; - } - } - return true; - } - /** - *

Compares two byte arrays as specified by Comparable. - * - * @param lhs - left hand value in the comparison operation. - * @param rhs - right hand value in the comparison operation. - * @return a negative integer, zero, or a positive integer as - * lhs is less than, equal to, or greater than - * rhs. - */ - public static int compareTo(byte[] lhs, byte[] rhs) { - if (lhs == rhs) { - return 0; - } - if (lhs == null) { - return -1; - } - if (rhs == null) { - return +1; - } - if (lhs.length != rhs.length) { - return ((lhs.length < rhs.length) ? -1 : +1); - } - for (int i = 0; i < lhs.length; i++) { - if (lhs[i] < rhs[i]) { - return -1; - } else if (lhs[i] > rhs[i]) { - return 1; - } - } - return 0; - } - /** - * Build a short from first 2 bytes of the array. - * - * @param b The byte[] to convert. - * @return A short. - */ - public static short toShort(byte[] b) { - return (short) ((b[1] & 0xFF) + ((b[0] & 0xFF) << 8)); - } - } - /** - * Base 16 encoder. - * - * @author Marc Prud'hommeaux - */ - public static final class Base16Encoder { - - private final static char[] HEX = new char[]{ - '0', '1', '2', '3', '4', '5', '6', '7', - '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; - /** - * Convert bytes to a base16 string. - */ - public static String encode(byte[] byteArray) { - StringBuilder hexBuffer = new StringBuilder(byteArray.length * 2); - for (int i = 0; i < byteArray.length; i++) - for (int j = 1; j >= 0; j--) - hexBuffer.append(HEX[(byteArray[i] >> (j * 4)) & 0xF]); - return hexBuffer.toString(); - } - /** - * Convert a base16 string into a byte array. - */ - public static byte[] decode(String s) { - int len = s.length(); - byte[] r = new byte[len / 2]; - for (int i = 0; i < r.length; i++) { - int digit1 = s.charAt(i * 2), digit2 = s.charAt(i * 2 + 1); - if (digit1 >= '0' && digit1 <= '9') - digit1 -= '0'; - else if (digit1 >= 'A' && digit1 <= 'F') - digit1 -= 'A' - 10; - if (digit2 >= '0' && digit2 <= '9') - digit2 -= '0'; - else if (digit2 >= 'A' && digit2 <= 'F') - digit2 -= 'A' - 10; - - r[i] = (byte) ((digit1 << 4) + digit2); - } - return r; - } - } - - - -} - -//========================================= APACHE BLOCK ========================================= - diff --git a/src/Java/gtPlusPlus/core/util/minecraft/MaterialUtils.java b/src/Java/gtPlusPlus/core/util/minecraft/MaterialUtils.java index 0af72661e9..6c15c06b1d 100644 --- a/src/Java/gtPlusPlus/core/util/minecraft/MaterialUtils.java +++ b/src/Java/gtPlusPlus/core/util/minecraft/MaterialUtils.java @@ -10,6 +10,7 @@ import org.apache.commons.lang3.reflect.FieldUtils; import gregtech.api.enums.*; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.material.Material; import gtPlusPlus.core.material.state.MaterialState; import gtPlusPlus.core.util.Utils; @@ -173,9 +174,19 @@ public class MaterialUtils { } } - static Class materialsEnum = Materials.class; public static Materials getMaterialByName(String materialName) { - return EnumUtils.getValue(materialsEnum, materialName); + + if (!CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK) { + return (Materials) EnumUtils.getValue(gregtech.api.enums.Materials.class, materialName, false); + } + else { + for (Materials m : Materials.values()) { + if (MaterialUtils.getMaterialName(m).toLowerCase().equals(materialName.toLowerCase())) { + return m; + } + } + return null; + } } @SuppressWarnings("deprecation") diff --git a/src/Java/gtPlusPlus/core/util/minecraft/MiningUtils.java b/src/Java/gtPlusPlus/core/util/minecraft/MiningUtils.java new file mode 100644 index 0000000000..d44bf69253 --- /dev/null +++ b/src/Java/gtPlusPlus/core/util/minecraft/MiningUtils.java @@ -0,0 +1,214 @@ +package gtPlusPlus.core.util.minecraft; + +import gtPlusPlus.api.objects.Logger; +import net.minecraft.block.Block; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class MiningUtils { + + private static boolean durabilityDamage = false; + private static ItemStack stack; + + public static Boolean canPickaxeBlock(final Block currentBlock, final World currentWorld){ + String correctTool = ""; + if (!currentWorld.isRemote){ + try { + correctTool = currentBlock.getHarvestTool(0); + //Utils.LOG_WARNING(correctTool); + if (correctTool.equals("pickaxe")){ + return true;} + } catch (final NullPointerException e){ + return false;} + } + return false; + } + + private static void removeBlockAndDropAsItem(final World world, final int X, final int Y, final int Z){ + try { + final Block block = world.getBlock(X, Y, Z); + if (canPickaxeBlock(block, world)){ + if((block != Blocks.bedrock) && (block.getBlockHardness(world, X, Y, Z) != -1) && (block.getBlockHardness(world, X, Y, Z) <= 100) && (block != Blocks.water) && (block != Blocks.lava)){ + block.dropBlockAsItem(world, X, Y, Z, world.getBlockMetadata(X, Y, Z), 0); + world.setBlockToAir(X, Y, Z); + + } + else { + Logger.WARNING("Incorrect Tool for mining this block."); + } + } + } catch (final NullPointerException e){ + + } + } + + /*public static void customMine(World world, String FACING, EntityPlayer aPlayer){ + + float DURABILITY_LOSS = 0; + if (!world.isRemote){ + int X = 0; + int Y = 0; + int Z = 0; + + if (FACING.equals("below") || FACING.equals("above")){ + + //Set Player Facing + X = (int) aPlayer.posX; + Utils.LOG_WARNING("Setting Variable X: "+X); + if (FACING.equals("above")){ + Z = (int) aPlayer.posY + 1; + Utils.LOG_WARNING("Setting Variable Y: "+Y); + } + else { + Z = (int) aPlayer.posY - 1; + Utils.LOG_WARNING("Setting Variable Y: "+Y);} + Z = (int) aPlayer.posZ; + Utils.LOG_WARNING("Setting Variable Z: "+Z); + + DURABILITY_LOSS = 0; + for(int i = -2; i < 3; i++) { + for(int j = -2; j < 3; j++) { + for(int k = -2; k < 3; k++) { +// float dur = calculateDurabilityLoss(world, X + i, Y + k, Z + j); +// DURABILITY_LOSS = (DURABILITY_LOSS + dur); +// Utils.LOG_WARNING("Added Loss: "+dur); + removeBlockAndDropAsItem(world, X + i, Y + k, Z + j); + } + } + } + } + + else if (FACING.equals("facingEast") || FACING.equals("facingWest")){ + + //Set Player Facing + Z = (int) aPlayer.posZ; + Y = (int) aPlayer.posY; + if (FACING.equals("facingEast")){ + X = (int) aPlayer.posX + 1;} + else { + X = (int) aPlayer.posX - 1;} + + + DURABILITY_LOSS = 0; + for(int i = -1; i < 2; i++) { + for(int j = -1; j < 2; j++) { + for(int k = -1; k < 2; k++) { + float dur = calculateDurabilityLoss(world, X+k, Y + i, Z + j); + DURABILITY_LOSS = (DURABILITY_LOSS + dur); + Utils.LOG_WARNING("Added Loss: "+dur); + removeBlockAndDropAsItem(world, X+k, Y + i, Z + j); + } + } + } + } + + else if (FACING.equals("facingNorth") || FACING.equals("facingSouth")){ + + //Set Player Facing + X = (int) aPlayer.posX; + Y = (int) aPlayer.posY; + + if (FACING.equals("facingNorth")){ + Z = (int) aPlayer.posZ + 1;} + else { + Z = (int) aPlayer.posZ - 1;} + + DURABILITY_LOSS = 0; + for(int i = -1; i < 2; i++) { + for(int j = -1; j < 2; j++) { + for(int k = -1; k < 2; k++) { + float dur = calculateDurabilityLoss(world, X + j, Y + i, Z+k); + DURABILITY_LOSS = (DURABILITY_LOSS + dur); + Utils.LOG_WARNING("Added Loss: "+dur); + removeBlockAndDropAsItem(world, X + j, Y + i, Z+k); + } + } + } + } + + //Set Durability damage to the item + if (durabilityDamage == true){ + Utils.LOG_WARNING("Total Loss: "+(int)DURABILITY_LOSS); + if (stack.getItemDamage() < (stack.getMaxDamage()-DURABILITY_LOSS)){ + stack.damageItem((int) DURABILITY_LOSS, aPlayer); + } + } + DURABILITY_LOSS = 0; + } + }*/ + + + public static boolean getBlockType(final Block block, final World world, final int[] xyz, final int miningLevel){ + final String LIQUID = "liquid"; + final String BLOCK = "block"; + final String ORE = "ore"; + final String AIR = "air"; + String blockClass = ""; + + if (world.isRemote){ + return false; + } + + if (block == Blocks.end_stone) { + return true; + } + if (block == Blocks.stone) { + return true; + } + if (block == Blocks.sandstone) { + return true; + } + if (block == Blocks.netherrack) { + return true; + } + if (block == Blocks.nether_brick) { + return true; + } + if (block == Blocks.nether_brick_stairs) { + return true; + } + if (block == Blocks.nether_brick_fence) { + return true; + } + if (block == Blocks.glowstone) { + return true; + } + + + + try { + blockClass = block.getClass().toString().toLowerCase(); + Logger.WARNING(blockClass); + if (blockClass.toLowerCase().contains(LIQUID)){ + Logger.WARNING(block.toString()+" is a Liquid."); + return false; + } + else if (blockClass.toLowerCase().contains(ORE)){ + Logger.WARNING(block.toString()+" is an Ore."); + return true; + } + else if (block.getHarvestLevel(world.getBlockMetadata(xyz[0], xyz[1], xyz[2])) >= miningLevel){ + Logger.WARNING(block.toString()+" is minable."); + return true; + } + else if (blockClass.toLowerCase().contains(AIR)){ + Logger.WARNING(block.toString()+" is Air."); + return false; + } + else if (blockClass.toLowerCase().contains(BLOCK)){ + Logger.WARNING(block.toString()+" is a block of some kind."); + return false; + } + else { + Logger.WARNING(block.toString()+" is mystery."); + return false; + } + } + catch(final NullPointerException e){ + return false; + } + } + + +} diff --git a/src/Java/gtPlusPlus/core/util/minecraft/UtilsMining.java b/src/Java/gtPlusPlus/core/util/minecraft/UtilsMining.java deleted file mode 100644 index eb6044fcd7..0000000000 --- a/src/Java/gtPlusPlus/core/util/minecraft/UtilsMining.java +++ /dev/null @@ -1,214 +0,0 @@ -package gtPlusPlus.core.util.minecraft; - -import gtPlusPlus.api.objects.Logger; -import net.minecraft.block.Block; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class UtilsMining { - - private static boolean durabilityDamage = false; - private static ItemStack stack; - - public static Boolean canPickaxeBlock(final Block currentBlock, final World currentWorld){ - String correctTool = ""; - if (!currentWorld.isRemote){ - try { - correctTool = currentBlock.getHarvestTool(0); - //Utils.LOG_WARNING(correctTool); - if (correctTool.equals("pickaxe")){ - return true;} - } catch (final NullPointerException e){ - return false;} - } - return false; - } - - private static void removeBlockAndDropAsItem(final World world, final int X, final int Y, final int Z){ - try { - final Block block = world.getBlock(X, Y, Z); - if (canPickaxeBlock(block, world)){ - if((block != Blocks.bedrock) && (block.getBlockHardness(world, X, Y, Z) != -1) && (block.getBlockHardness(world, X, Y, Z) <= 100) && (block != Blocks.water) && (block != Blocks.lava)){ - block.dropBlockAsItem(world, X, Y, Z, world.getBlockMetadata(X, Y, Z), 0); - world.setBlockToAir(X, Y, Z); - - } - else { - Logger.WARNING("Incorrect Tool for mining this block."); - } - } - } catch (final NullPointerException e){ - - } - } - - /*public static void customMine(World world, String FACING, EntityPlayer aPlayer){ - - float DURABILITY_LOSS = 0; - if (!world.isRemote){ - int X = 0; - int Y = 0; - int Z = 0; - - if (FACING.equals("below") || FACING.equals("above")){ - - //Set Player Facing - X = (int) aPlayer.posX; - Utils.LOG_WARNING("Setting Variable X: "+X); - if (FACING.equals("above")){ - Z = (int) aPlayer.posY + 1; - Utils.LOG_WARNING("Setting Variable Y: "+Y); - } - else { - Z = (int) aPlayer.posY - 1; - Utils.LOG_WARNING("Setting Variable Y: "+Y);} - Z = (int) aPlayer.posZ; - Utils.LOG_WARNING("Setting Variable Z: "+Z); - - DURABILITY_LOSS = 0; - for(int i = -2; i < 3; i++) { - for(int j = -2; j < 3; j++) { - for(int k = -2; k < 3; k++) { -// float dur = calculateDurabilityLoss(world, X + i, Y + k, Z + j); -// DURABILITY_LOSS = (DURABILITY_LOSS + dur); -// Utils.LOG_WARNING("Added Loss: "+dur); - removeBlockAndDropAsItem(world, X + i, Y + k, Z + j); - } - } - } - } - - else if (FACING.equals("facingEast") || FACING.equals("facingWest")){ - - //Set Player Facing - Z = (int) aPlayer.posZ; - Y = (int) aPlayer.posY; - if (FACING.equals("facingEast")){ - X = (int) aPlayer.posX + 1;} - else { - X = (int) aPlayer.posX - 1;} - - - DURABILITY_LOSS = 0; - for(int i = -1; i < 2; i++) { - for(int j = -1; j < 2; j++) { - for(int k = -1; k < 2; k++) { - float dur = calculateDurabilityLoss(world, X+k, Y + i, Z + j); - DURABILITY_LOSS = (DURABILITY_LOSS + dur); - Utils.LOG_WARNING("Added Loss: "+dur); - removeBlockAndDropAsItem(world, X+k, Y + i, Z + j); - } - } - } - } - - else if (FACING.equals("facingNorth") || FACING.equals("facingSouth")){ - - //Set Player Facing - X = (int) aPlayer.posX; - Y = (int) aPlayer.posY; - - if (FACING.equals("facingNorth")){ - Z = (int) aPlayer.posZ + 1;} - else { - Z = (int) aPlayer.posZ - 1;} - - DURABILITY_LOSS = 0; - for(int i = -1; i < 2; i++) { - for(int j = -1; j < 2; j++) { - for(int k = -1; k < 2; k++) { - float dur = calculateDurabilityLoss(world, X + j, Y + i, Z+k); - DURABILITY_LOSS = (DURABILITY_LOSS + dur); - Utils.LOG_WARNING("Added Loss: "+dur); - removeBlockAndDropAsItem(world, X + j, Y + i, Z+k); - } - } - } - } - - //Set Durability damage to the item - if (durabilityDamage == true){ - Utils.LOG_WARNING("Total Loss: "+(int)DURABILITY_LOSS); - if (stack.getItemDamage() < (stack.getMaxDamage()-DURABILITY_LOSS)){ - stack.damageItem((int) DURABILITY_LOSS, aPlayer); - } - } - DURABILITY_LOSS = 0; - } - }*/ - - - public static boolean getBlockType(final Block block, final World world, final int[] xyz, final int miningLevel){ - final String LIQUID = "liquid"; - final String BLOCK = "block"; - final String ORE = "ore"; - final String AIR = "air"; - String blockClass = ""; - - if (world.isRemote){ - return false; - } - - if (block == Blocks.end_stone) { - return true; - } - if (block == Blocks.stone) { - return true; - } - if (block == Blocks.sandstone) { - return true; - } - if (block == Blocks.netherrack) { - return true; - } - if (block == Blocks.nether_brick) { - return true; - } - if (block == Blocks.nether_brick_stairs) { - return true; - } - if (block == Blocks.nether_brick_fence) { - return true; - } - if (block == Blocks.glowstone) { - return true; - } - - - - try { - blockClass = block.getClass().toString().toLowerCase(); - Logger.WARNING(blockClass); - if (blockClass.toLowerCase().contains(LIQUID)){ - Logger.WARNING(block.toString()+" is a Liquid."); - return false; - } - else if (blockClass.toLowerCase().contains(ORE)){ - Logger.WARNING(block.toString()+" is an Ore."); - return true; - } - else if (block.getHarvestLevel(world.getBlockMetadata(xyz[0], xyz[1], xyz[2])) >= miningLevel){ - Logger.WARNING(block.toString()+" is minable."); - return true; - } - else if (blockClass.toLowerCase().contains(AIR)){ - Logger.WARNING(block.toString()+" is Air."); - return false; - } - else if (blockClass.toLowerCase().contains(BLOCK)){ - Logger.WARNING(block.toString()+" is a block of some kind."); - return false; - } - else { - Logger.WARNING(block.toString()+" is mystery."); - return false; - } - } - catch(final NullPointerException e){ - return false; - } - } - - -} -- cgit