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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
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);
}
}
}
|