aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Java/gtPlusPlus/GTplusplus.java2
-rw-r--r--src/Java/gtPlusPlus/api/interfaces/IToolable.java17
-rw-r--r--src/Java/gtPlusPlus/api/objects/data/AutoMap.java119
-rw-r--r--src/Java/gtPlusPlus/api/objects/minecraft/AABB.java65
-rw-r--r--src/Java/gtPlusPlus/api/objects/minecraft/TexturePackage.java55
-rw-r--r--src/Java/gtPlusPlus/core/block/ModBlocks.java5
-rw-r--r--src/Java/gtPlusPlus/core/block/general/redstone/BlockGenericRedstone.java370
-rw-r--r--src/Java/gtPlusPlus/core/block/general/redstone/BlockGenericRedstoneDetector.java131
-rw-r--r--src/Java/gtPlusPlus/core/block/general/redstone/BlockGenericRedstoneEmitter.java5
-rw-r--r--src/Java/gtPlusPlus/core/block/general/redstone/BlockGenericRedstoneTest.java201
-rw-r--r--src/Java/gtPlusPlus/core/block/machine/CircuitProgrammer.java2
-rw-r--r--src/Java/gtPlusPlus/core/block/machine/FishTrap.java1
-rw-r--r--src/Java/gtPlusPlus/core/block/machine/Machine_PooCollector.java2
-rw-r--r--src/Java/gtPlusPlus/core/common/compat/COMPAT_Baubles.java17
-rw-r--r--src/Java/gtPlusPlus/core/handler/events/GeneralTooltipEventHandler.java12
-rw-r--r--src/Java/gtPlusPlus/core/item/ModItems.java31
-rw-r--r--src/Java/gtPlusPlus/core/item/bauble/BatteryPackBaseBauble.java123
-rw-r--r--src/Java/gtPlusPlus/core/item/bauble/ElectricBaseBauble.java199
-rw-r--r--src/Java/gtPlusPlus/core/item/bauble/MonsterKillerBaseBauble.java175
-rw-r--r--src/Java/gtPlusPlus/core/item/chemistry/GenericChem.java28
-rw-r--r--src/Java/gtPlusPlus/core/item/wearable/armour/hazmat/ArmourHazmat.java117
-rw-r--r--src/Java/gtPlusPlus/core/material/ALLOY.java87
-rw-r--r--src/Java/gtPlusPlus/core/material/ELEMENT.java14
-rw-r--r--src/Java/gtPlusPlus/core/material/Material.java7
-rw-r--r--src/Java/gtPlusPlus/core/material/NONMATERIAL.java6
-rw-r--r--src/Java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java15
-rw-r--r--src/Java/gtPlusPlus/core/tileentities/ModTileEntities.java1
-rw-r--r--src/Java/gtPlusPlus/core/tileentities/general/redstone/TileEntityRedstoneHandler.java468
-rw-r--r--src/Java/gtPlusPlus/core/tileentities/machines/TileEntityAdvPooCollector.java12
-rw-r--r--src/Java/gtPlusPlus/core/tileentities/machines/TileEntityBaseFluidCollector.java12
-rw-r--r--src/Java/gtPlusPlus/core/tileentities/machines/TileEntityPooCollector.java15
-rw-r--r--src/Java/gtPlusPlus/core/util/minecraft/EntityUtils.java77
-rw-r--r--src/Java/gtPlusPlus/core/util/minecraft/HazmatUtils.java349
-rw-r--r--src/Java/gtPlusPlus/core/util/minecraft/InventoryUtils.java82
-rw-r--r--src/Java/gtPlusPlus/core/util/minecraft/ItemUtils.java65
-rw-r--r--src/Java/gtPlusPlus/core/util/reflect/ProxyFinder.java2
-rw-r--r--src/Java/gtPlusPlus/everglades/gen/gt/WorldGen_Ores.java309
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_IC2_Hazmat.java132
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java6
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/HANDLER_GT.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java5
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/interfaces/IHeatEntity.java26
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/interfaces/IHeatSink.java13
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/interfaces/IMetaTileEntityHeatPipe.java14
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Heat.java532
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Muffler_Adv.java3
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GregtechMetaPipeEntityFluid.java4
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java491
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/Meta_GT_Proxy.java45
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/StaticFields59.java38
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesCentrifugeMultiblock.java122
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/items/MetaGeneratedGregtechTools.java14
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCentrifuge.java29
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GregtechMetaEnergyBuffer.java61
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/recipes/RecipesToRemove.java46
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechConduits.java14
-rw-r--r--src/Java/gtPlusPlus/xmod/ic2/item/reactor/IC2_FuelRod_Base.java52
-rw-r--r--src/resources/assets/gregtech/lang/en_US.lang7
-rw-r--r--src/resources/assets/miscutils/lang/en_US.lang105
-rw-r--r--src/resources/assets/miscutils/textures/blocks/redstone/redstone_meter/top.pngbin0 -> 822 bytes
60 files changed, 4120 insertions, 839 deletions
diff --git a/src/Java/gtPlusPlus/GTplusplus.java b/src/Java/gtPlusPlus/GTplusplus.java
index e10369abe3..429ead6266 100644
--- a/src/Java/gtPlusPlus/GTplusplus.java
+++ b/src/Java/gtPlusPlus/GTplusplus.java
@@ -46,6 +46,7 @@ import gtPlusPlus.core.material.nuclear.FLUORIDES;
import gtPlusPlus.core.util.Utils;
import gtPlusPlus.core.util.data.LocaleUtils;
import gtPlusPlus.core.util.minecraft.FluidUtils;
+import gtPlusPlus.core.util.minecraft.HazmatUtils;
import gtPlusPlus.core.util.minecraft.ItemUtils;
import gtPlusPlus.core.util.minecraft.RecipeUtils;
import gtPlusPlus.core.util.reflect.ReflectionUtils;
@@ -186,6 +187,7 @@ public class GTplusplus implements ActionListener {
INIT_PHASE.INIT.setPhaseActive(true);
mChunkLoading.init(event);
proxy.init(event);
+ HazmatUtils.init();
proxy.registerNetworkStuff();
instanceGtProxy.init();
Core_Manager.init();
diff --git a/src/Java/gtPlusPlus/api/interfaces/IToolable.java b/src/Java/gtPlusPlus/api/interfaces/IToolable.java
new file mode 100644
index 0000000000..24797825a9
--- /dev/null
+++ b/src/Java/gtPlusPlus/api/interfaces/IToolable.java
@@ -0,0 +1,17 @@
+package gtPlusPlus.api.interfaces;
+
+public interface IToolable {
+
+ public boolean isScrewdriverable();
+ public boolean onScrewdriverLMB();
+ public boolean onScrewdriverRMB();
+
+ public boolean isWrenchable();
+ public boolean onWrenchLMB();
+ public boolean onWrenchRMB();
+
+ public boolean isMalletable();
+ public boolean onMalletLMB();
+ public boolean onMalletRMB();
+
+}
diff --git a/src/Java/gtPlusPlus/api/objects/data/AutoMap.java b/src/Java/gtPlusPlus/api/objects/data/AutoMap.java
index 4663229514..3583a04a74 100644
--- a/src/Java/gtPlusPlus/api/objects/data/AutoMap.java
+++ b/src/Java/gtPlusPlus/api/objects/data/AutoMap.java
@@ -3,7 +3,7 @@ package gtPlusPlus.api.objects.data;
import java.io.Serializable;
import java.util.*;
-public class AutoMap<V> implements Iterable<V>, Cloneable, Serializable, Collection<V>, Queue<V> {
+public class AutoMap<V> implements Iterable<V>, Cloneable, Serializable, Collection<V>, Queue<V>, List<V> {
/**
* The Internal Map
@@ -22,11 +22,55 @@ public class AutoMap<V> implements Iterable<V>, Cloneable, Serializable, Collect
this(new LinkedHashMap<Integer, V>());
}
+ public Map<Integer, V> getMap(){
+ return mInternalMap;
+ }
+
public AutoMap(Map<Integer, V> defaultMapType) {
mInternalMap = defaultMapType;
mInternalNameMap = new LinkedHashMap<String, Integer>();
}
+ /**
+ * Generates an AutoMap from the List.
+ * @param aList - Data to be inserted into the AutoMap.
+ */
+ public AutoMap(List<V> aList) {
+ mInternalMap = new LinkedHashMap<Integer, V>();
+ mInternalNameMap = new LinkedHashMap<String, Integer>();
+ if (aList != null && aList.size() > 0) {
+ for (V obj : aList) {
+ add(obj);
+ }
+ }
+ }
+ /**
+ * Generates an AutoMap from a Set.
+ * @param aList - Data to be inserted into the AutoMap.
+ */
+ public AutoMap(Set<V> aList) {
+ mInternalMap = new LinkedHashMap<Integer, V>();
+ mInternalNameMap = new LinkedHashMap<String, Integer>();
+ if (aList != null && aList.size() > 0) {
+ for (V obj : aList) {
+ add(obj);
+ }
+ }
+ }
+ /**
+ * Generates an AutoMap from a Collection.
+ * @param aList - Data to be inserted into the AutoMap.
+ */
+ public AutoMap(Collection<V> aList) {
+ mInternalMap = new LinkedHashMap<Integer, V>();
+ mInternalNameMap = new LinkedHashMap<String, Integer>();
+ if (aList != null && aList.size() > 0) {
+ for (V obj : aList) {
+ add(obj);
+ }
+ }
+ }
+
@Override
public Iterator<V> iterator() {
return values().iterator();
@@ -211,5 +255,78 @@ public class AutoMap<V> implements Iterable<V>, Cloneable, Serializable, Collect
public V peek() {
return element();
}
+
+ @Override
+ public boolean addAll(int index, Collection<? extends V> c) {
+ for (V y : c) {
+ add(y);
+ }
+ return true;
+ }
+
+ @Override
+ public V set(int index, V element) {
+ return mInternalMap.put(index, element);
+ }
+
+ @Override
+ public void add(int index, V element) {
+ add(element);
+ }
+
+ @Override
+ public V remove(int index) {
+ V h = mInternalMap.get(index);
+ set(index, null);
+ return h;
+ }
+
+ @Override
+ public int indexOf(Object o) {
+ int aCount = 0;
+ for (V of : mInternalMap.values()) {
+ if (of != o) {
+ aCount++;
+ continue;
+ }
+ else {
+ return aCount;
+ }
+ }
+ return -1;
+ }
+
+ @Override
+ public int lastIndexOf(Object o) {
+ //TODO
+ return indexOf(o);
+ }
+
+ @Override
+ public ListIterator<V> listIterator() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public ListIterator<V> listIterator(int index) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public List<V> subList(int fromIndex, int toIndex) {
+ AutoMap<V> aNewSubList = new AutoMap<V>();
+ for (int slot=fromIndex; slot<=toIndex; slot++) {
+ V obj = mInternalMap.get(slot);
+ if (obj == null) {
+ continue;
+ }
+ else {
+ aNewSubList.put(obj);
+ }
+ }
+ return aNewSubList;
+ }
}
diff --git a/src/Java/gtPlusPlus/api/objects/minecraft/AABB.java b/src/Java/gtPlusPlus/api/objects/minecraft/AABB.java
new file mode 100644
index 0000000000..722ac00b64
--- /dev/null
+++ b/src/Java/gtPlusPlus/api/objects/minecraft/AABB.java
@@ -0,0 +1,65 @@
+package gtPlusPlus.api.objects.minecraft;
+
+import gtPlusPlus.core.util.minecraft.EntityUtils;
+import net.minecraft.entity.Entity;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.world.World;
+
+/**
+ * Generates an AABB around an entity.
+ * @author Alkalus
+ *
+ */
+public class AABB {
+
+ private final AxisAlignedBB mAabb;
+ private final World mWorld;
+
+ /**
+ * Creates a AxisAlignedBB based around an Entity.
+ * @param aEntity - The Entity to work with.
+ * @param x - Maximum X from origin.
+ * @param y - Maximum Y from origin.
+ * @param z - Maximum Z from origin.
+ */
+ public AABB(Entity aEntity, int x, int y, int z) {
+ if (aEntity == null) {
+ mAabb = null;
+ mWorld = null;
+ }
+ else {
+ mWorld = aEntity.worldObj;
+ BlockPos aEntityLocation = EntityUtils.findBlockPosUnderEntity(aEntity);
+ int xMin, xMax, yMin, yMax, zMin, zMax;
+ xMin = aEntityLocation.xPos;
+ yMin = aEntityLocation.yPos;
+ zMin = aEntityLocation.zPos;
+ xMax = aEntityLocation.xPos + x;
+ yMax = aEntityLocation.yPos + y;
+ zMax = aEntityLocation.zPos + z;
+ mAabb = AxisAlignedBB.getBoundingBox(xMin, yMin, zMin, xMax, yMax, zMax);
+ }
+
+ }
+
+ /**
+ * Used to get the AxisAlignedBB from this class.
+ * @return
+ */
+ public AxisAlignedBB get() {
+ return mAabb;
+ }
+
+ /**
+ * Used to determine if this object is valid or not.
+ * @return
+ */
+ public boolean valid() {
+ return mAabb != null && mWorld != null;
+ }
+
+ public World world() {
+ return mWorld;
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/api/objects/minecraft/TexturePackage.java b/src/Java/gtPlusPlus/api/objects/minecraft/TexturePackage.java
new file mode 100644
index 0000000000..e610f8fdf0
--- /dev/null
+++ b/src/Java/gtPlusPlus/api/objects/minecraft/TexturePackage.java
@@ -0,0 +1,55 @@
+package gtPlusPlus.api.objects.minecraft;
+
+import java.util.LinkedHashMap;
+import java.util.Set;
+
+import gtPlusPlus.api.objects.data.AutoMap;
+import net.minecraft.util.IIcon;
+
+public class TexturePackage {
+
+ private AutoMap<IIcon> mAnimationArray = new AutoMap<IIcon>();
+
+ public IIcon getFrame(int aFrame) {
+ if (aFrame < 0 || aFrame >= mAnimationArray.size()) {
+ return mAnimationArray.get(0);
+ }
+ return mAnimationArray.get(aFrame);
+ }
+
+ public boolean addFrame(IIcon aFrame) {
+ if (aFrame != null) {
+ return mAnimationArray.add(aFrame);
+ }
+ return false;
+ }
+
+ public boolean addFrames(AutoMap<IIcon> aFrames) {
+ for (IIcon h : aFrames) {
+ if (!addFrame(h)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean addFrames(LinkedHashMap<?, IIcon> aFrames) {
+ for (IIcon h : aFrames.values()) {
+ if (!addFrame(h)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean addFrames(Set<IIcon> aFrames) {
+ for (IIcon h : aFrames) {
+ if (!addFrame(h)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+
+}
diff --git a/src/Java/gtPlusPlus/core/block/ModBlocks.java b/src/Java/gtPlusPlus/core/block/ModBlocks.java
index 2b04356f52..b904b04556 100644
--- a/src/Java/gtPlusPlus/core/block/ModBlocks.java
+++ b/src/Java/gtPlusPlus/core/block/ModBlocks.java
@@ -11,6 +11,8 @@ import gtPlusPlus.core.block.general.LightGlass;
import gtPlusPlus.core.block.general.MiningExplosives;
import gtPlusPlus.core.block.general.PlayerDoors;
import gtPlusPlus.core.block.general.antigrief.BlockWitherProof;
+import gtPlusPlus.core.block.general.redstone.BlockGenericRedstoneDetector;
+import gtPlusPlus.core.block.general.redstone.BlockGenericRedstoneTest;
import gtPlusPlus.core.block.machine.CircuitProgrammer;
import gtPlusPlus.core.block.machine.DecayablesChest;
import gtPlusPlus.core.block.machine.FishTrap;
@@ -141,6 +143,9 @@ public final class ModBlocks {
blockPooCollector = new Machine_PooCollector();
+ new BlockGenericRedstoneDetector();
+ new BlockGenericRedstoneTest();
+
}
diff --git a/src/Java/gtPlusPlus/core/block/general/redstone/BlockGenericRedstone.java b/src/Java/gtPlusPlus/core/block/general/redstone/BlockGenericRedstone.java
new file mode 100644
index 0000000000..b84c96be99
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/block/general/redstone/BlockGenericRedstone.java
@@ -0,0 +1,370 @@
+package gtPlusPlus.core.block.general.redstone;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Random;
+
+import cpw.mods.fml.common.registry.GameRegistry;
+import cpw.mods.fml.common.registry.LanguageRegistry;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import gregtech.common.items.GT_MetaGenerated_Tool_01;
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.core.creative.AddToCreativeTab;
+import gtPlusPlus.core.item.base.itemblock.ItemBlockMeta;
+import gtPlusPlus.core.tileentities.general.redstone.TileEntityRedstoneHandler;
+import gtPlusPlus.core.util.minecraft.InventoryUtils;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.core.util.minecraft.PlayerUtils;
+import net.minecraft.block.Block;
+import net.minecraft.block.BlockContainer;
+import net.minecraft.block.material.Material;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.EnumCreatureType;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.IIcon;
+import net.minecraft.world.IBlockAccess;
+import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
+
+public abstract class BlockGenericRedstone extends BlockContainer {
+
+
+ @SuppressWarnings("deprecation")
+ public BlockGenericRedstone(String aUnlocalizedSuffix, String aDisplayName) {
+ super(Material.redstoneLight);
+ this.setBlockName("blockGenericRedstone." + aUnlocalizedSuffix);
+ this.setHardness(3f);
+ this.setCreativeTab(AddToCreativeTab.tabMachines);
+ GameRegistry.registerBlock(this, ItemBlockMeta.class, "blockGenericRedstone." + aUnlocalizedSuffix);
+ LanguageRegistry.addName(this, aDisplayName);
+
+ }
+
+
+ private final HashMap<Integer, HashMap<ForgeDirection, IIcon>> mTextures = new HashMap<Integer, HashMap<ForgeDirection, IIcon>>();
+
+ /**
+ * A map of the textures used for this blocks. The key is the meta, then each internal map holds textures tied to each forge direction. Do not use unknown direction.
+ * @return
+ */
+ public HashMap<Integer, HashMap<ForgeDirection, IIcon>> getTextureArray() {
+ return mTextures;
+ }
+
+ public abstract void generateTextureArray(final IIconRegister iicon);
+
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public final void registerBlockIcons(final IIconRegister iicon) {
+ generateTextureArray(iicon);
+ this.blockIcon = iicon.registerIcon("redstone_block");
+ }
+
+
+ /**
+ * Called upon block activation (right click on the block.)
+ */
+ @Override
+ public boolean onBlockActivated(final World world, final int x, final int y, final int z, final EntityPlayer player,
+ final int side, final float lx, final float ly, final float lz) {
+
+ if (world.isRemote) {
+ return true;
+ }
+
+ boolean mDidTool = false;
+ // Check For Tools
+ try {
+ final ItemStack mHandStack = PlayerUtils.getItemStackInPlayersHand(world, player.getDisplayName());
+ final Item mHandItem = mHandStack.getItem();
+ if (ItemUtils.isItemGregtechTool(mHandStack)) {
+
+ Logger.INFO("Found Tool in players hand!");
+
+ final TileEntityRedstoneHandler tile = (TileEntityRedstoneHandler) world.getTileEntity(x, y, z);
+ if (tile != null) {
+ if (tile.isScrewdriverable()) {
+ if (ItemUtils.isToolScrewdriver(mHandStack)){
+ mDidTool = tile.onScrewdriverRMB();
+ PlayerUtils.messagePlayer(player, "Adjusted Light level by 0.0625f. "+tile.getLightBrightness());
+ }
+ }
+ if (tile.isMalletable()) {
+ if (ItemUtils.isToolMallet(mHandStack)){
+ mDidTool = tile.onMalletRMB();
+ PlayerUtils.messagePlayer(player, "Light Mode active: "+mDidTool);
+ }
+ }
+ if (tile.isWrenchable()) {
+ if (ItemUtils.isToolWrench(mHandStack)){
+ mDidTool = tile.onWrenchRMB();
+ }
+ }
+ }
+ }
+ }
+ catch (final Throwable t) {}
+ if (mDidTool) {
+ return true;
+ }
+
+ return false;
+ }
+
+
+
+ @Override
+ public void onBlockClicked(World aWorld, int aX, int aY, int aZ, EntityPlayer aPlayer) {
+
+ boolean mDidTool = false;
+ // Check For Tools
+ try {
+ final ItemStack mHandStack = PlayerUtils.getItemStackInPlayersHand(aWorld, aPlayer.getDisplayName());
+ final Item mHandItem = mHandStack.getItem();
+ if (mHandItem instanceof GT_MetaGenerated_Tool_01) {
+
+ final TileEntityRedstoneHandler tile = (TileEntityRedstoneHandler) aWorld.getTileEntity(aX, aY, aZ);
+ if (tile != null) {
+ if (tile.isScrewdriverable()) {
+ if (ItemUtils.isToolScrewdriver(mHandStack)){
+ mDidTool = tile.onScrewdriverLMB();
+ }
+ }
+ if (tile.isMalletable()) {
+ if (ItemUtils.isToolMallet(mHandStack)){
+ mDidTool = tile.onMalletLMB();
+ }
+ }
+ if (tile.isWrenchable()) {
+ if (ItemUtils.isToolWrench(mHandStack)){
+ mDidTool = tile.onWrenchLMB();
+ }
+ }
+ }
+ }
+ }
+ catch (Throwable t) {}
+
+ if (!mDidTool && !aPlayer.capabilities.isCreativeMode) {
+ super.onBloc