hassansyyid

Untitled

Jul 6th, 2015
252
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.26 KB | None | 0 0
  1. package com.arisux.avp.entities.tile;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Iterator;
  5. import java.util.List;
  6. import java.util.ListIterator;
  7. import java.util.Set;
  8.  
  9. import net.minecraft.nbt.NBTTagCompound;
  10. import net.minecraft.network.NetworkManager;
  11. import net.minecraft.network.Packet;
  12. import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
  13. import net.minecraft.tileentity.TileEntity;
  14. import net.minecraft.util.EnumFacing;
  15.  
  16. import com.arisux.avp.interfaces.IPowerDevice;
  17. import com.google.common.collect.Lists;
  18.  
  19. public abstract class PoweredTileEntity extends TileEntity implements IPowerDevice
  20. {
  21. public double voltage, amps;
  22. public boolean state = false;
  23.  
  24. @Override
  25. public void updateEntity()
  26. {
  27. super.updateEntity();
  28.  
  29. if (this.isVoltageInOperatingRange())
  30. {
  31. this.onVoltageTick();
  32. }
  33.  
  34. if (this.voltage > this.getMaxOperatingVoltage())
  35. {
  36. this.onOverloadTick();
  37. }
  38.  
  39. if(!this.state)
  40. {
  41. this.voltage = 0;
  42. }
  43.  
  44. if (this.voltage <= this.getMinOperatingVoltage())
  45. {
  46. this.onUnderloadTick();
  47. }
  48.  
  49. if (this.canOutputPower())
  50. {
  51. this.outputPower();
  52. }
  53. }
  54.  
  55. private boolean isConnectedToAnything(PoweredTileEntity poweredTileEntity) {
  56. List<PoweredTileEntity> list = new ArrayList<PoweredTileEntity>();
  57. list.add(poweredTileEntity.getTop());
  58. list.add(poweredTileEntity.getBack());
  59. list.add(poweredTileEntity.getBottom());
  60. list.add(poweredTileEntity.getLeft());
  61. list.add(poweredTileEntity.getRight());
  62. list.add(poweredTileEntity.getFront());
  63. for(PoweredTileEntity te : list)
  64. {
  65. if(te instanceof TileEntitySolarPanel || te instanceof TileEntityRepulsionGenerator || te instanceof TileEntityPowerline || te instanceof TileEntityR2PConvertor){
  66. if(te instanceof TileEntityR2PConvertor)
  67. {
  68. TileEntityR2PConvertor ter = (TileEntityR2PConvertor) te;
  69. if(ter.isActiveRedstoneWireAttached)
  70. {
  71. return true;
  72. }
  73. else
  74. {
  75. return false;
  76. }
  77. }
  78. return true;
  79. }
  80. }
  81. return false;
  82. }
  83.  
  84. public boolean isPowerSource(){
  85. if(this.canOutputPower() && getPowerSourceTile(this) == this){
  86. return true;
  87. }
  88. return false;
  89. }
  90. public void outputPower()
  91. {
  92. double voltage = this.getVoltageAfterApplyingResistance();
  93. List<PoweredTileEntity> list = Lists.newArrayList(this.children);
  94. for(PoweredTileEntity e : list)
  95. {
  96. this.outputPowerToTile(e, voltage);
  97. }
  98. }
  99.  
  100. public void outputPowerToTile(PoweredTileEntity tile, double voltage)
  101. {
  102. if (tile != null && tile.getPowerSourceTile(tile) == this)
  103. {
  104. tile.setVoltage(voltage);
  105. }
  106. else if(tile != null && tile instanceof TileEntityPowerline && tile.getVoltage() == 0){
  107. tile.setVoltage(this.getVoltage());
  108. }
  109. }
  110.  
  111. @Override
  112. public abstract void onVoltageTick();
  113.  
  114. @Override
  115. public abstract void onOverloadTick();
  116.  
  117. @Override
  118. public abstract void onUnderloadTick();
  119.  
  120. @Override
  121. public void updateChildren()
  122. {
  123. if(this.children.size() > 0)
  124. {
  125. if(this.children.contains(this))
  126. {
  127. this.children.remove(this);
  128. }
  129. if(this.children.size() > 0)
  130. {
  131. List <PoweredTileEntity> list = Lists.newArrayList(this.children);
  132. for(PoweredTileEntity te : list)
  133. {
  134. if(te == null);
  135. else
  136. {
  137. te.state = this.state;
  138. te.updateChildren();
  139. }
  140. }
  141. }
  142. }
  143. }
  144.  
  145. @Override
  146. public Packet getDescriptionPacket()
  147. {
  148. NBTTagCompound nbtTag = new NBTTagCompound();
  149. this.writeToNBT(nbtTag);
  150. return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 1, nbtTag);
  151. }
  152.  
  153. @Override
  154. public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity packet)
  155. {
  156. readFromNBT(packet.func_148857_g());
  157. }
  158.  
  159. @Override
  160. public void writeToNBT(NBTTagCompound tag)
  161. {
  162. super.writeToNBT(tag);
  163.  
  164. tag.setDouble("Volts", this.voltage);
  165. tag.setDouble("Amps", this.amps);
  166. }
  167.  
  168. @Override
  169. public void readFromNBT(NBTTagCompound tag)
  170. {
  171. super.readFromNBT(tag);
  172.  
  173. this.voltage = tag.getDouble("Volts");
  174. this.amps = tag.getDouble("Amps");
  175. }
  176.  
  177. public void setVoltage(double voltageIn)
  178. {
  179. this.voltage = voltageIn;
  180. }
  181.  
  182. public double getVoltageAfterApplyingResistance()
  183. {
  184. return this.getVoltage() - this.getResistance() <= 0 ? 0 : this.getVoltage() - this.getResistance();
  185. }
  186.  
  187. public void setAmps(double ampsIn)
  188. {
  189. this.amps = ampsIn;
  190. }
  191.  
  192. public PoweredTileEntity getPoweredTileAt(int x, int y, int z)
  193. {
  194. return this.worldObj.getTileEntity(x, y, z) instanceof PoweredTileEntity ? (PoweredTileEntity) this.worldObj.getTileEntity(x, y, z) : null;
  195. }
  196.  
  197. public PoweredTileEntity getPowerSourceTile(PoweredTileEntity e){
  198. if (getTop() != null && getTop().isOutputVoltageHigherThan(this) && getTop().canOutputPower())
  199. {
  200. return getTop();
  201. }
  202. if (getBottom() != null && getBottom().isOutputVoltageHigherThan(this) && getBottom().canOutputPower())
  203. {
  204. return getBottom();
  205. }
  206. if (getFront() != null && getFront().isOutputVoltageHigherThan(this) && getFront().canOutputPower())
  207. {
  208. return getFront();
  209. }
  210. if (getBack() != null && getBack().isOutputVoltageHigherThan(this) && getBack().canOutputPower())
  211. {
  212. return getBack();
  213. }
  214. if (getLeft() != null && getLeft().isOutputVoltageHigherThan(this) && getLeft().canOutputPower())
  215. {
  216. return getLeft();
  217. }
  218. if (getRight() != null && getRight().isOutputVoltageHigherThan(this) && getRight().canOutputPower())
  219. {
  220. return getRight();
  221. }
  222. if (getTop() instanceof TileEntityTransformer)
  223. {
  224. TileEntityTransformer t = (TileEntityTransformer)getTop();
  225. if(!t.isOriginalPowerSourceAttached()){
  226. return null;
  227. }
  228. return (PoweredTileEntity) t.getPowerSource();
  229. }
  230. if (getBottom() instanceof TileEntityTransformer)
  231. {
  232. TileEntityTransformer t = (TileEntityTransformer)getBottom();
  233. if(!t.isOriginalPowerSourceAttached()){
  234. return null;
  235. }
  236. return (PoweredTileEntity) t.getPowerSource();
  237. }
  238. if (getFront() instanceof TileEntityTransformer)
  239. {
  240. TileEntityTransformer t = (TileEntityTransformer)getFront();
  241. if(!t.isOriginalPowerSourceAttached()){
  242. return null;
  243. }
  244. return (PoweredTileEntity) t.getPowerSource();
  245. }
  246. if (getBack() instanceof TileEntityTransformer)
  247. {
  248. TileEntityTransformer t = (TileEntityTransformer)getBack();
  249. if(!t.isOriginalPowerSourceAttached()){
  250. return null;
  251. }
  252. return (PoweredTileEntity) t.getPowerSource();
  253. }
  254. if (getLeft() instanceof TileEntityTransformer)
  255. {
  256. TileEntityTransformer t = (TileEntityTransformer)getLeft();
  257. if(!t.isOriginalPowerSourceAttached()){
  258. return null;
  259. }
  260. return (PoweredTileEntity) t.getPowerSource();
  261. }
  262. if (getRight() instanceof TileEntityTransformer)
  263. {
  264. TileEntityTransformer t = (TileEntityTransformer)getRight();
  265. if(!t.isOriginalPowerSourceAttached()){
  266. return null;
  267. }
  268. return (PoweredTileEntity) t.getPowerSource();
  269. }
  270. if (getTop() instanceof TileEntityNegativeTransformer)
  271. {
  272. TileEntityNegativeTransformer t = (TileEntityNegativeTransformer)getTop();
  273. if(!t.isOriginalPowerSourceAttached()){
  274. return null;
  275. }
  276. return (PoweredTileEntity) t.getPowerSource();
  277. }
  278. if (getBottom() instanceof TileEntityNegativeTransformer)
  279. {
  280. TileEntityNegativeTransformer t = (TileEntityNegativeTransformer)getBottom();
  281. if(!t.isOriginalPowerSourceAttached()){
  282. return null;
  283. }
  284. return (PoweredTileEntity) t.getPowerSource();
  285. }
  286. if (getFront() instanceof TileEntityNegativeTransformer)
  287. {
  288. TileEntityNegativeTransformer t = (TileEntityNegativeTransformer)getFront();
  289. if(!t.isOriginalPowerSourceAttached()){
  290. return null;
  291. }
  292. return (PoweredTileEntity) t.getPowerSource();
  293. }
  294. if (getBack() instanceof TileEntityNegativeTransformer)
  295. {
  296. TileEntityNegativeTransformer t = (TileEntityNegativeTransformer)getBack();
  297. if(!t.isOriginalPowerSourceAttached()){
  298. return null;
  299. }
  300. return (PoweredTileEntity) t.getPowerSource();
  301. }
  302. if (getLeft() instanceof TileEntityNegativeTransformer)
  303. {
  304. TileEntityNegativeTransformer t = (TileEntityNegativeTransformer)getLeft();
  305. if(!t.isOriginalPowerSourceAttached()){
  306. return null;
  307. }
  308. return (PoweredTileEntity) t.getPowerSource();
  309. }
  310. if (getRight() instanceof TileEntityNegativeTransformer)
  311. {
  312. TileEntityNegativeTransformer t = (TileEntityNegativeTransformer)getRight();
  313. if(!t.isOriginalPowerSourceAttached()){
  314. return null;
  315. }
  316. return (PoweredTileEntity) t.getPowerSource();
  317. }
  318. return null;
  319. }
  320.  
  321. public boolean isVoltageInOperatingRange()
  322. {
  323. return this.getVoltage() < this.getMaxOperatingVoltage() && this.getVoltage() > this.getMinOperatingVoltage();
  324. }
  325.  
  326. public boolean isPowered()
  327. {
  328. return this.getVoltage() != 0;
  329. }
  330.  
  331. public boolean isOutputVoltageLessThan(PoweredTileEntity device)
  332. {
  333. return this.getVoltage() < device.getVoltage();
  334. }
  335.  
  336. public boolean isOutputVoltageHigherThan(PoweredTileEntity device)
  337. {
  338. return this.getVoltage() > device.getVoltage();
  339. }
  340.  
  341. public PoweredTileEntity getTop()
  342. {
  343. return this.getPoweredTileAt(this.xCoord, this.yCoord + 1, this.zCoord);
  344. }
  345.  
  346. public PoweredTileEntity getBottom()
  347. {
  348. return this.getPoweredTileAt(this.xCoord, this.yCoord - 1, this.zCoord);
  349. }
  350.  
  351. public PoweredTileEntity getFront()
  352. {
  353. return this.getPoweredTileAt(this.xCoord, this.yCoord, this.zCoord - 1);
  354. }
  355.  
  356. public PoweredTileEntity getBack()
  357. {
  358. return this.getPoweredTileAt(this.xCoord, this.yCoord, this.zCoord + 1);
  359. }
  360.  
  361. public PoweredTileEntity getRight()
  362. {
  363. return this.getPoweredTileAt(this.xCoord - 1, this.yCoord, this.zCoord);
  364. }
  365.  
  366. public PoweredTileEntity getLeft()
  367. {
  368. return this.getPoweredTileAt(this.xCoord + 1, this.yCoord, this.zCoord);
  369. }
  370.  
  371. @Override
  372. public double getVoltage()
  373. {
  374. return this.voltage;
  375. }
  376.  
  377. @Override
  378. public double getMaxOperatingVoltage()
  379. {
  380. return 140;
  381. }
  382.  
  383. @Override
  384. public double getMinOperatingVoltage()
  385. {
  386. return 110;
  387. }
  388.  
  389. @Override
  390. public double getAmperage()
  391. {
  392. return this.amps;
  393. }
  394.  
  395. @Override
  396. public double getMaxOperatingAmps()
  397. {
  398. return 4;
  399. }
  400.  
  401. @Override
  402. public double getMinOperatingAmps()
  403. {
  404. return 1;
  405. }
  406.  
  407. @Override
  408. public double getResistance()
  409. {
  410. return 0.1;
  411. }
  412.  
  413. @Override
  414. public boolean canOutputPower()
  415. {
  416. return false;
  417. }
  418. }
Advertisement
Add Comment
Please, Sign In to add comment