diff options
author | Draknyte1 <Draknyte1@hotmail.com> | 2016-03-21 02:46:32 +1000 |
---|---|---|
committer | Draknyte1 <Draknyte1@hotmail.com> | 2016-03-21 02:46:32 +1000 |
commit | b6ee1cacc50dec9ee65d30d8d62f0fbe1591bdc7 (patch) | |
tree | cb6f45036f4366623a908a2dfdfa809ce5869df8 /src/Java/miscutil/core | |
parent | e667f347a505929d34883b5abf595d3d6111f730 (diff) | |
download | GT5-Unofficial-b6ee1cacc50dec9ee65d30d8d62f0fbe1591bdc7.tar.gz GT5-Unofficial-b6ee1cacc50dec9ee65d30d8d62f0fbe1591bdc7.tar.bz2 GT5-Unofficial-b6ee1cacc50dec9ee65d30d8d62f0fbe1591bdc7.zip |
Final version of safes for now.
Cleaned up some handler code and left some new classes in for future use.
Also, skipped a build and brought a fresh one along.
Diffstat (limited to 'src/Java/miscutil/core')
-rw-r--r-- | src/Java/miscutil/core/block/antigrief/TowerDevice.java | 11 | ||||
-rw-r--r-- | src/Java/miscutil/core/handler/UnbreakableBlockManager.java | 138 | ||||
-rw-r--r-- | src/Java/miscutil/core/handler/XEventHandler.java | 50 | ||||
-rw-r--r-- | src/Java/miscutil/core/lib/CORE.java | 4 |
4 files changed, 179 insertions, 24 deletions
diff --git a/src/Java/miscutil/core/block/antigrief/TowerDevice.java b/src/Java/miscutil/core/block/antigrief/TowerDevice.java index 5299875355..7e9a3d78a9 100644 --- a/src/Java/miscutil/core/block/antigrief/TowerDevice.java +++ b/src/Java/miscutil/core/block/antigrief/TowerDevice.java @@ -18,6 +18,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; @@ -28,6 +29,8 @@ import cpw.mods.fml.relauncher.SideOnly; public class TowerDevice extends Block { private static IIcon TEX_ANTIBUILDER; public static final int META_ANTIBUILDER = 9; + private boolean bUnbreakable; + public TowerDevice() { super(Material.wood); @@ -42,6 +45,14 @@ public class TowerDevice extends Block { return 15; } + public void saveNBTData(NBTTagCompound aNBT) { + aNBT.setBoolean("bUnbreakable", bUnbreakable); + } + + public void loadNBTData(NBTTagCompound aNBT) { + bUnbreakable = aNBT.getBoolean("bUnbreakable"); + } + public IIcon getIcon(int side, int meta) { return TEX_ANTIBUILDER; diff --git a/src/Java/miscutil/core/handler/UnbreakableBlockManager.java b/src/Java/miscutil/core/handler/UnbreakableBlockManager.java new file mode 100644 index 0000000000..62193d4b5c --- /dev/null +++ b/src/Java/miscutil/core/handler/UnbreakableBlockManager.java @@ -0,0 +1,138 @@ +package miscutil.core.handler; + +import gregtech.api.interfaces.metatileentity.IMetaTileEntity; +import gregtech.api.metatileentity.BaseMetaPipeEntity; +import gregtech.api.metatileentity.BaseMetaTileEntity; +import gregtech.api.metatileentity.BaseTileEntity; +import miscutil.core.util.Utils; +import miscutil.gregtech.metatileentity.implementations.GregtechMetaSafeBlock; +import net.minecraft.block.Block; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class UnbreakableBlockManager{ + + private static boolean hasRun = false; + + public final BaseMetaTileEntity getmTileEntity() { + return mTileEntity; + } + + + public final void setmTileEntity(BaseMetaTileEntity mTileEntity/*, EntityPlayer aPlayer*/) { + UnbreakableBlockManager.mTileEntity = mTileEntity; + if (!hasRun){ + hasRun = true; + makeIndestructible(/*aPlayer*/); + } + else { + Utils.LOG_WARNING("Why do you run twice?"); + } + } + + + //BaseMetaTileEntity + //GregtechMetaSafeBlock + private static BaseMetaTileEntity mTileEntity = null; + + + private void makeIndestructible(/*EntityPlayer aPlayer*/){ + + + Utils.LOG_WARNING("Initializing the code to set this TE to -1 hardness and make it indestructible."); + int X = ((BaseMetaTileEntity)mTileEntity).xCoord; //(GregtechMetaSafeBlock) this.mTileEntity.getXCoord(); + int Y = ((BaseMetaTileEntity)mTileEntity).yCoord; + int Z = ((BaseMetaTileEntity)mTileEntity).zCoord; + Utils.LOG_WARNING("Grabbing TileEntity @ [x,y,z] |"+X+"|"+Y+"|"+Z+"|"); + + + + try{ + GregtechMetaSafeBlock MetaSafeBlock = ((GregtechMetaSafeBlock) this.mTileEntity.getMetaTileEntity()); + TileEntity BaseMetaTileEntity = ((BaseMetaTileEntity)mTileEntity).getTileEntity(X, Y, Z); + //MetaSafeBlockBase. + World TE_WORLD = MetaSafeBlock.getBaseMetaTileEntity().getWorld(); + Utils.LOG_WARNING("Checking new State of Flag[nUnbreakable]. Value="+MetaSafeBlock.bUnbreakable); + TileEntity entity = BaseMetaTileEntity; + innerInvincible(MetaSafeBlock, entity, TE_WORLD, /*aPlayer,*/ X, Y, Z); + } + catch (NullPointerException e) { + System.out.print("Caught a NullPointerException involving Safe Blocks. Cause: "); + e.printStackTrace(); + } + } + + + private static void innerInvincible(GregtechMetaSafeBlock MetaSafeBlock, TileEntity entity, World TE_WORLD, /*EntityPlayer aPlayer,*/ int X, int Y, int Z){ + if (entity != null && !entity.equals(null)){ + Utils.LOG_WARNING("Checking new State of Flag[nUnbreakable]. Value="+MetaSafeBlock.bUnbreakable); + Utils.LOG_WARNING("Grabbed TE: "+entity.toString()); + + + + + if (entity instanceof BaseTileEntity && !(entity instanceof BaseMetaPipeEntity)){ + IMetaTileEntity I = ((BaseMetaTileEntity)entity).getMetaTileEntity(); + Utils.LOG_WARNING("Checking State of Flag[nUnbreakable]. Value="+MetaSafeBlock.bUnbreakable); + Utils.LOG_WARNING("I Details: "+I.getMetaName()+" | "+I.getTileEntityBaseType()+" | "+I.toString()); + + + + + + if (I instanceof GregtechMetaSafeBlock){ + Utils.LOG_WARNING("Checking State of Flag[nUnbreakable]. Value="+MetaSafeBlock.bUnbreakable); + + Block ThisBlock = I.getBaseMetaTileEntity().getBlock(X, Y, Z); + Utils.LOG_WARNING("Block Details: "+ThisBlock.toString()); + + + if (((GregtechMetaSafeBlock)I).bUnbreakable){ + ThisBlock.setHardness(Integer.MAX_VALUE); + //ThisBlock.setResistance(18000000.0F); + ThisBlock.setResistance(-1); + ThisBlock.setBlockUnbreakable(); + Utils.LOG_WARNING("Changing State of Flag. Old Value="+MetaSafeBlock.bUnbreakable+" Expected Value=true"); + MetaSafeBlock.bUnbreakable = true; + //entity.markDirty(); + Utils.LOG_WARNING("Checking new State of Flag[nUnbreakable]. Value="+MetaSafeBlock.bUnbreakable); + Utils.LOG_ERROR("New Indestructible Flag enabled."); + //GT_Utility.sendChatToPlayer(aPlayer, "Block is now unbreakable."); + } + + + + + else { + ThisBlock.setHardness(1); + ThisBlock.setResistance(1.0F); + Utils.LOG_WARNING("Changing State of Flag. Old Value="+MetaSafeBlock.bUnbreakable+" Expected Value=false"); + MetaSafeBlock.bUnbreakable = false; + //entity.markDirty(); + Utils.LOG_WARNING("Checking new State of Flag[nUnbreakable]. Value="+MetaSafeBlock.bUnbreakable); + Utils.LOG_ERROR("New Indestructible Flag disabled."); + //GT_Utility.sendChatToPlayer(aPlayer, "Block is now breakable."); + } + + //entity.markDirty(); + + Utils.LOG_WARNING("Block Hardness: "+ThisBlock.getBlockHardness(TE_WORLD, X, Y, Z)); + Utils.LOG_WARNING("Checking State of Flag[nUnbreakable]. Value="+MetaSafeBlock.bUnbreakable); + hasRun = false; + + } + else { + Utils.LOG_WARNING("I is not an instanceof MetaSafeBlockBase"); + Utils.LOG_WARNING("Checking State of Flag[nUnbreakable]. Value="+MetaSafeBlock.bUnbreakable); + } + } else { + Utils.LOG_WARNING("TE is not an instanceof BaseTileEntity or may be a pipe."); + Utils.LOG_WARNING("Checking State of Flag[nUnbreakable]. Value="+MetaSafeBlock.bUnbreakable); + } + }else { + Utils.LOG_WARNING("Did not grab a TE instance to make a block instance from."); + Utils.LOG_WARNING("Checking State of Flag[nUnbreakable]. Value="+MetaSafeBlock.bUnbreakable); + } + } + +} diff --git a/src/Java/miscutil/core/handler/XEventHandler.java b/src/Java/miscutil/core/handler/XEventHandler.java index 6c23675abc..db6a03e3e6 100644 --- a/src/Java/miscutil/core/handler/XEventHandler.java +++ b/src/Java/miscutil/core/handler/XEventHandler.java @@ -15,33 +15,39 @@ import cpw.mods.fml.common.eventhandler.SubscribeEvent; public class XEventHandler { @SubscribeEvent public void onBreakBlock(BreakEvent event) { - TileEntity entity = event.world.getTileEntity(event.x, event.y, event.z); - EntityPlayer playerInternal = event.getPlayer(); - try{ - if (entity instanceof BaseTileEntity && !(entity instanceof BaseMetaPipeEntity)){ - IMetaTileEntity X = ((BaseMetaTileEntity)entity).getMetaTileEntity(); - Block ThisBlock = X.getBaseMetaTileEntity().getBlock(event.x, event.y, event.z); - if (X instanceof GregtechMetaSafeBlockBase){ - - String ownerUUID = ((GregtechMetaSafeBlockBase)X).ownerUUID; - String accessorUUID = playerInternal.getUniqueID().toString(); - Utils.LOG_WARNING("Owner UUID: "+ownerUUID); - Utils.LOG_WARNING("Accessor UUID: "+accessorUUID); - - if (((GregtechMetaSafeBlockBase)X).bUnbreakable){ - if (accessorUUID.equals(ownerUUID)){ - Utils.messagePlayer(playerInternal, "Since you own this block, it has been destroyed."); - event.setCanceled(false); - } - else { - event.setCanceled(true); - Utils.messagePlayer(playerInternal, "Since you do not own this block, it has not been destroyed."); + TileEntity entity = event.world.getTileEntity(event.x, event.y, event.z); + if (entity != null && !entity.equals(null)){ + EntityPlayer playerInternal = event.getPlayer(); + Utils.LOG_WARNING(entity.getClass().getSimpleName()); + if (entity.getClass().getSimpleName().equals("")){ + + } + if (entity instanceof BaseTileEntity && !(entity instanceof BaseMetaPipeEntity)){ + IMetaTileEntity X = ((BaseMetaTileEntity)entity).getMetaTileEntity(); + Block ThisBlock = X.getBaseMetaTileEntity().getBlock(event.x, event.y, event.z); + if (X instanceof GregtechMetaSafeBlockBase){ + + String ownerUUID = ((GregtechMetaSafeBlockBase)X).ownerUUID; + String accessorUUID = playerInternal.getUniqueID().toString(); + Utils.LOG_WARNING("Owner UUID: "+ownerUUID); + Utils.LOG_WARNING("Accessor UUID: "+accessorUUID); + + if (((GregtechMetaSafeBlockBase)X).bUnbreakable){ + if (accessorUUID.equals(ownerUUID)){ + Utils.messagePlayer(playerInternal, "Since you own this block, it has been destroyed."); + event.setCanceled(false); + } + else { + event.setCanceled(true); + Utils.messagePlayer(playerInternal, "Since you do not own this block, it has not been destroyed."); + } + // } - // } } } + } catch (NullPointerException e) { System.out.print("Caught a NullPointerException involving Safe Blocks. Cause: "+e.getCause()); diff --git a/src/Java/miscutil/core/lib/CORE.java b/src/Java/miscutil/core/lib/CORE.java index 4acd30d4d8..05e8fa75a3 100644 --- a/src/Java/miscutil/core/lib/CORE.java +++ b/src/Java/miscutil/core/lib/CORE.java @@ -8,8 +8,8 @@ public class CORE { public static final String name = "Misc. Utils"; public static final String MODID = "miscutils"; - public static final String VERSION = "0.9.6"; - public static final boolean DEBUG = true; + public static final String VERSION = "0.9.8"; + public static final boolean DEBUG = false; public static final boolean LOAD_ALL_CONTENT = false; public static final int GREG_FIRST_ID = 760; public static Map PlayerCache; |