Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2020
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 48.89 KB | None | 0 0
  1. перейти к содержанию
  2. Почему GitHub?
  3. предприятие
  4. Проводить исследования
  5. базарная площадь
  6. ценообразование
  7. Search
  8.  
  9. Войти
  10. Зарегистрироваться
  11. brandon3055
  12. /
  13. Draconic -Evolution
  14. 3713589
  15. Код Выпуски 25 Потяните запросы 2 Проекты 0 Wiki Безопасность Insights
  16. Присоединяйтесь к GitHub сегодня
  17. GitHub является домом для более чем 40 миллионов разработчиков, работающих вместе для размещения и анализа кода, управления проектами и совместной разработки программного обеспечения.
  18.  
  19. Драконий-Evolution / SRC / главная / Java / COM / brandon3055 / draconicevolution / общие / tileentities / multiblocktiles /TileEnergyStorageCore.java
  20. @ brandon3055 brandon3055 переформатировал ВСЕ ВЕЩИ!
  21. 8395a5c
  22. on 13 Jun 2016
  23. @ brandon3055@OneEyeMaker
  24. 781 строка (708 слок) 38,2 КБ
  25.  
  26. пакет com.brandon3055.draconicevolution.common.tileentities.multiblocktiles ;
  27.  
  28. import com.brandon3055.draconicevolution.common.ModBlocks ;
  29. import com.brandon3055.draconicevolution.common.blocks.multiblock.MultiblockHelper.TileLocation ;
  30. import com.brandon3055.draconicevolution.common.handler.BalanceConfigHandler ;
  31. import com.brandon3055.draconicevolution.common.lib.References ;
  32. import com.brandon3055.draconicevolution.common.tileentities.TileObjectSync ;
  33. import com.brandon3055.draconicevolution.common.tileentities.TileParticleGenerator ;
  34. import com.brandon3055.draconicevolution.common.utills.LogHelper ;
  35. import cpw.mods.fml.common.network.NetworkRegistry ;
  36. импорт net.minecraft.init.Blocks ;
  37. import net.minecraft.nbt.NBTTagCompound ;
  38. импорт net.minecraft.network.NetworkManager ;
  39. импорт net.minecraft.network.Packet ;
  40. import net.minecraft.network.play.server.S35PacketUpdateTileEntity ;
  41. import net.minecraft.util.AxisAlignedBB ;
  42.  
  43. / **
  44. * Создано Брэндоном 25/07/2014.
  45. * /
  46. открытый класс TileEnergyStorageCore extends TileObjectSync {
  47.  
  48. защищенный TileLocation [] стабилизаторы = новый TileLocation [ 4 ];
  49. защищенный INT уровень = 0 ;
  50. защищенное логическое значение онлайн = false ;
  51. public float modelRotation = 0 ;
  52. частная длинная энергия = 0 ;
  53. собственная длинная емкость = 0 ;
  54. private long lastTickCapacity = 0 ;
  55. private int tick = 0 ;
  56.  
  57. public TileEnergyStorageCore () {
  58. for ( int i = 0 ; i < стабилизаторы . length; i ++ ) {
  59. стабилизаторы [i] = new TileLocation ();
  60. }
  61. }
  62.  
  63. @Override
  64. public void updateEntity () {
  65. // energy = 200000000;
  66. если ( ! онлайн) возврат ;
  67. if (worldObj . isRemote) modelRotation + = 0.5 ;
  68. if ( ! worldObj . isRemote) detectAndRendChanges ();
  69. отметьте ++ ;
  70. }
  71.  
  72.  
  73. / **
  74. * ###################### Многоблочные методы #######################
  75. * /
  76.  
  77. public boolean tryActivate () {
  78. if ( ! findStabalyzers ()) возвращает false ;
  79. if ( ! setTier ( false )) return false ;
  80. if ( ! testOrActivateStructureIfValid ( false , false )) return false ;
  81. онлайн = правда ;
  82. if ( ! testOrActivateStructureIfValid ( false , true )) {
  83. онлайн = ложь ;
  84. deactivateStabilizers ();
  85. вернуть ложь ;
  86. }
  87. activateStabilizers ();
  88. worldObj . markBlockForUpdate (xCoord, yCoord, zCoord);
  89. вернуть истину ;
  90. }
  91.  
  92. public boolean creativeActivate () {
  93. if ( ! findStabalyzers ()) возвращает false ;
  94. if ( ! setTier ( false )) return false ;
  95. if ( ! testOrActivateStructureIfValid ( true , false )) return false ;
  96. онлайн = правда ;
  97. if ( ! testOrActivateStructureIfValid ( false , true )) {
  98. онлайн = ложь ;
  99. deactivateStabilizers ();
  100. вернуть ложь ;
  101. }
  102. activateStabilizers ();
  103. worldObj . markBlockForUpdate (xCoord, yCoord, zCoord);
  104. вернуть истину ;
  105. }
  106.  
  107. public boolean isStructureStillValid ( логическое обновление ) {
  108. if ( ! checkStabilizers ()) online = false ;
  109. if ( ! testOrActivateStructureIfValid ( false , false )) online = false ;
  110. if ( ! areStabilizersActive ()) online = false ;
  111. worldObj . markBlockForUpdate (xCoord, yCoord, zCoord);
  112. if ( ! online) deactivateStabilizers ();
  113. if (update && ! online) reIntegrate ();
  114. // if (update &&! online && worldObj.getTileEntity (xCoord, yCoord + 1, zCoord)! = null && worldObj.getTileEntity (xCoord, yCoord + 1, zCoord) экземпляр класса TileInvisibleMultiblock) (TileInvisileObity_jb) yCoord + 1, zCoord)). isStructureStillValid ();
  115. вернуться онлайн;
  116. }
  117.  
  118. private void reIntegrate () {
  119. for ( int x = xCoord - 1 ; x <= xCoord + 1 ; x ++ ) {
  120. for ( int y = yCoord - 1 ; y <= yCoord + 1 ; y ++ ) {
  121. for ( int z = zCoord - 1 ; z <= zCoord + 1 ; z ++ ) {
  122. if (worldObj . getBlock (x, y, z) == ModBlocks . invisibleMultiblock) {
  123. if (worldObj . getBlockMetadata (x, y, z) == 0 ) {
  124. worldObj . setBlock (x, y, z, ModBlocks . draconiumBlock);
  125. } else if (worldObj . getBlockMetadata (x, y, z) == 1 ) {
  126. worldObj . setBlock (x, y, z, BalanceConfigHandler . energyStorageStructureBlock, BalanceConfigHandler . energyStorageStructureBlockMetadata, 3 );
  127. }
  128. }
  129. }
  130. }
  131. }
  132. }
  133.  
  134. частное логическое findStabalyzers () {
  135. логический флаг = true ;
  136. for ( int x = xCoord; x <= xCoord + 11 ; x ++ ) {
  137. if (worldObj . getBlock (x, yCoord, zCoord) == ModBlocks . частицыGenerator ) {
  138. if (worldObj . getBlockMetadata (x, yCoord, zCoord) == 1 ) {
  139. флаг = ложь ;
  140. перерыв ;
  141. }
  142. стабилизаторы [ 0 ] = new TileLocation (x, yCoord, zCoord);
  143. перерыв ;
  144. } else if (x == xCoord + 11 ) {
  145. флаг = ложь ;
  146. }
  147.  
  148. }
  149. for ( int x = xCoord; x > = xCoord - 11 ; x - ) {
  150. if (worldObj . getBlock (x, yCoord, zCoord) == ModBlocks . частицыGenerator ) {
  151. if (worldObj . getBlockMetadata (x, yCoord, zCoord) == 1 ) {
  152. флаг = ложь ;
  153. перерыв ;
  154. }
  155. стабилизаторы [ 1 ] = new TileLocation (x, yCoord, zCoord);
  156. перерыв ;
  157. } else if (x == xCoord - 11 ) {
  158. флаг = ложь ;
  159. }
  160. }
  161. for ( int z = zCoord; z <= zCoord + 11 ; z ++ ) {
  162. if (worldObj . getBlock (xCoord, yCoord, z) == ModBlocks . частицыGenerator ) {
  163. if (worldObj . getBlockMetadata (xCoord, yCoord, z) == 1 ) {
  164. флаг = ложь ;
  165. перерыв ;
  166. }
  167. стабилизаторы [ 2 ] = new TileLocation (xCoord, yCoord, z);
  168. перерыв ;
  169. } else if (z == zCoord + 11 ) {
  170. флаг = ложь ;
  171. }
  172. }
  173. for ( int z = zCoord; z > = zCoord - 11 ; z - ) {
  174. if (worldObj . getBlock (xCoord, yCoord, z) == ModBlocks . частицыGenerator ) {
  175. if (worldObj . getBlockMetadata (xCoord, yCoord, z) == 1 ) {
  176. флаг = ложь ;
  177. перерыв ;
  178. }
  179. стабилизаторы [ 3 ] = new TileLocation (xCoord, yCoord, z);
  180. перерыв ;
  181. } else if (z == zCoord - 11 ) {
  182. флаг = ложь ;
  183. }
  184. }
  185. флаг возврата ;
  186. }
  187.  
  188. приватный логический setTier ( логическая сила ) {
  189. if (force) возвращает true ;
  190. int xPos = 0 ;
  191. int xNeg = 0 ;
  192. int yPos = 0 ;
  193. int yNeg = 0 ;
  194. int zPos = 0 ;
  195. int zNeg = 0 ;
  196. int range = 5 ;
  197.  
  198. for ( int x = 0 ; x <= range; x ++ ) {
  199. if (testForOrActivateDraconium (xCoord + x, yCoord, zCoord, false , false )) {
  200. xPos = x;
  201. перерыв ;
  202. }
  203. }
  204.  
  205. for ( int x = 0 ; x <= range; x ++ ) {
  206. if (testForOrActivateDraconium (xCoord - x, yCoord, zCoord, false , false )) {
  207. xNeg = x;
  208. перерыв ;
  209. }
  210. }
  211.  
  212. for ( int y = 0 ; y <= range; y ++ ) {
  213. if (testForOrActivateDraconium (xCoord, yCoord + y, zCoord, false , false )) {
  214. yPos = y;
  215. перерыв ;
  216. }
  217. }
  218.  
  219. for ( int y = 0 ; y <= range; y ++ ) {
  220. if (testForOrActivateDraconium (xCoord, yCoord - y, zCoord, false , false )) {
  221. yNeg = y;
  222. перерыв ;
  223. }
  224. }
  225.  
  226. для ( int z = 0 ; z <= range; z ++ ) {
  227. if (testForOrActivateDraconium (xCoord, yCoord, zCoord + z, false , false )) {
  228. zPos = z;
  229. перерыв ;
  230. }
  231. }
  232.  
  233. для ( int z = 0 ; z <= range; z ++ ) {
  234. if (testForOrActivateDraconium (xCoord, yCoord, zCoord - z, false , false )) {
  235. zNeg = z;
  236. перерыв ;
  237. }
  238. }
  239.  
  240. if (zNeg ! = zPos || zNeg ! = yNeg || zNeg ! = yPos || zNeg ! = xNeg || zNeg ! = xPos) return false ;
  241.  
  242. уровень = xPos;
  243. if (уровень > 1 ) уровень ++ ;
  244. if (tier == 1 ) {
  245. if (testForOrActivateDraconium (xCoord + 1 , yCoord + 1 , zCoord, false , false )) tier = 2 ;
  246. }
  247. вернуть истину ;
  248. }
  249.  
  250. приватный логический тестOrActivateStructureIfValid ( логические setBlocks , логические активировать ) {
  251. переключатель (уровень) {
  252. случай 0 :
  253. if ( ! testOrActivateRect ( 1 , 1 , 1 , « air » , setBlocks, активировать)) return false ;
  254. перерыв ;
  255. случай 1 :
  256. если ( ! testForOrActivateDraconium (xCoord + 1 , yCoord, zCoord, setBlocks, активировать) || ! testForOrActivateDraconium (xCoord - 1 , yCoord, zCoord, setBlocks, активировать) || ! testForOrActivateDraconium (xCoord, yCoord + 1 , zCoord, setBlocks, активизируют ) || ! testForOrActivateDraconium (xCoord, yCoord - 1 , zCoord, setBlocks, активировать) || ! testForOrActivateDraconium (xCoord, yCoord, zCoord + 1 , setBlocks, активировать) || !testForOrActivateDraconium (xCoord, yCoord, zCoord - 1 , setBlocks, активировать))
  257. вернуть ложь ;
  258. if ( ! isReplacable (xCoord + 1 , yCoord + 1 , zCoord, setBlocks) || ! isReplacable (xCoord, yCoord + 1 , zCoord + 1 , setBlocks) || ! isReplacable (xCoord - 1 , yCoord + 1 , zCoord, 1 , zCoord ) || ! isReplacable (xCoord, yCoord + 1 , zCoord - 1 , setBlocks) || ! isReplacable (xCoord + 1 , yCoord - 1, zCoord, setBlocks) || ! isReplacable (xCoord, yCoord - 1 , zCoord + 1 , setBlocks) || ! isReplacable (xCoord - 1 , yCoord - 1 , zCoord, setBlocks) || ! isReplacable (xCoord, yCoord - 1 , zCoord - 1 , setBlocks) || ! isReplacable (xCoord + 1 , yCoord, zCoord + 1 , setBlocks) || ! isReplacable (xCoord - 1 , yCoord, zCoord- 1 , setBlocks) || ! isReplacable (xCoord + 1 , yCoord, zCoord - 1 , setBlocks) || ! isReplacable (xCoord - 1 , yCoord, zCoord + 1 , setBlocks))
  259. вернуть ложь ;
  260. if ( ! isReplacable (xCoord + 1 , yCoord + 1 , zCoord + 1 , setBlocks) || ! isReplacable (xCoord - 1 , yCoord + 1 , zCoord - 1 , setBlocks) || ! isReplacable (xCoord + 1 , yCoord + 1 , zCoord - 1 , setBlocks) || ! isReplacable (xCoord - 1 , yCoord + 1 , zCoord + 1, setBlocks) || ! isReplacable (xCoord + 1 , yCoord - 1 , zCoord + 1 , setBlocks) || ! isReplacable (xCoord - 1 , yCoord - 1 , zCoord - 1 , setBlocks) || ! isReplacable (xCoord + 1 , yCoord - 1 , zCoord - 1 , setBlocks) || ! isReplacable (xCoord - 1 , yCoord - 1 , zCoord + 1 , setBlocks))
  261. вернуть ложь ;
  262. перерыв ;
  263. случай 2 :
  264. if ( ! testOrActivateRect ( 1 , 1 , 1 , " draconiumBlock " , setBlocks, активировать)) возвращает false ;
  265. перерыв ;
  266. случай 3 :
  267. if ( ! testOrActivateSides ( 1 , " draconiumBlock " , setBlocks, активировать)) возвращает false ;
  268. if ( ! testOrActivateRect ( 1 , 1 , 1 , « красный камень » , setBlocks, активировать)) return false ;
  269. перерыв ;
  270. дело 4 :
  271. if ( ! testOrActivateSides ( 2 , " draconiumBlock " , setBlocks, активировать)) возвращает false ;
  272. if ( ! testOrActivateRect ( 2 , 1 , 1 , « красный камень » , setBlocks, активировать)) return false ;
  273. if ( ! testOrActivateRect ( 1 , 2 , 1 , « красный камень » , setBlocks, активировать)) return false ;
  274. if ( ! testOrActivateRect ( 1 , 1 , 2 , « красный камень » , setBlocks, активировать)) return false ;
  275. if ( ! testOrActivateRings ( 2 , 2 , " draconiumBlock " , setBlocks, активировать)) возвращает false ;
  276. перерыв ;
  277. дело 5 :
  278. if ( ! testOrActivateSides ( 3 , " draconiumBlock " , setBlocks, активировать)) возвращает false ;
  279. if ( ! testOrActivateSides ( 2 , " redstone " , setBlocks, активировать)) возвращает false ;
  280. if ( ! testOrActivateRect ( 2 , 2 , 2 , « красный камень » , setBlocks, активировать)) return false ;
  281. if ( ! testOrActivateRings ( 2 , 3 , " draconiumBlock " , setBlocks, активировать)) возвращает false ;
  282. перерыв ;
  283. дело 6 :
  284. if ( ! testOrActivateSides ( 4 , " draconiumBlock " , setBlocks, активировать)) возвращает false ;
  285. if ( ! testOrActivateSides ( 3 , " redstone " , setBlocks, активировать)) возвращает false ;
  286. if ( ! testOrActivateRect ( 3 , 2 , 2 , « красный камень » , setBlocks, активировать)) return false ;
  287. if ( ! testOrActivateRect ( 2 , 3 , 2 , « красный камень » , setBlocks, активировать)) return false ;
  288. if ( ! testOrActivateRect ( 2 , 2 , 3 , « красный камень » , setBlocks, активировать)) return false ;
  289. if ( ! testOrActivateRings ( 2 , 4 , " draconiumBlock " , setBlocks, активировать)) возвращает false ;
  290. if ( ! testOrActivateRings ( 3 , 3 , " draconiumBlock " , setBlocks, активировать)) возвращает false ;
  291. перерыв ;
  292. }
  293. вернуть истину ;
  294. }
  295.  
  296. приватный логический testOrActivateRect ( int xDim , int yDim , int zDim , блок String , логический набор , логическая активация ) {
  297. for ( int x = xCoord - xDim; x <= xCoord + xDim; x ++ ) {
  298. for ( int y = yCoord - yDim; y <= yCoord + yDim; y ++ ) {
  299. for ( int z = zCoord - zDim; z <= zCoord + zDim; z ++ ) {
  300.  
  301. if (block . equals ( " air " )) {
  302. if ( ! (x == xCoord && y == yCoord && z == zCoord) && ! isReplacable (x, y, z, set)) return false ;
  303. } else if (block . equals ( " redstone " )) {
  304. if ( ! (x == xCoord && y == yCoord && z == zCoord) && ! testForOrActivateRedstone (x, y, z, установить, активировать))
  305. вернуть ложь ;
  306. } else if (block . equals ( " draconiumBlock " )) {
  307. if ( ! (x == xCoord && y == yCoord && z == zCoord) && ! testForOrActivateDraconium (x, y, z, установить, активировать))
  308. вернуть ложь ;
  309. } else if ( ! block . equals ( " draconiumBlock " ) && ! block . equals ( " redstone " ) && ! block . equals ( " air " )) {
  310. LogHelper . ошибка ( « Недопустимая строка в коде многоблочной структуры !!! » );
  311. вернуть ложь ;
  312. }
  313. }
  314. }
  315. }
  316. вернуть истину ;
  317. }
  318.  
  319. приватный логический testOrActivateRings ( размер int , int dist , блок String , логический набор , логическая активация ) {
  320. for ( int y = yCoord - размер; y <= yCoord + размер; y ++ ) {
  321. for ( int z = zCoord - размер; z <= zCoord + размер; z ++ ) {
  322.  
  323. if (y == yCoord - размер || y == yCoord + размер || z == zCoord - размер || z == zCoord + размер) {
  324. if (block . equals ( " air " )) {
  325. if ( ! (xCoord + dist == xCoord && y == yCoord && z == zCoord) && ! isReplacable (xCoord + dist, y, z, set))
  326. вернуть ложь ;
  327. } else if (block . equals ( " redstone " )) {
  328. if ( ! (xCoord + dist == xCoord && y == yCoord && z == zCoord) && ! testForOrActivateRedstone (xCoord + dist, y, z, установить, активировать))
  329. вернуть ложь ;
  330. } else if (block . equals ( " draconiumBlock " )) {
  331. if ( ! (xCoord + dist == xCoord && y == yCoord && z == zCoord) && ! testForOrActivateDraconium (xCoord + dist, y, z, установить, активировать))
  332. вернуть ложь ;
  333. } else if ( ! block . equals ( " draconiumBlock " ) && ! block . equals ( " redstone " ) && ! block . equals ( " air " )) {
  334. LogHelper . ошибка ( « Недопустимая строка в коде многоблочной структуры !!! » );
  335. вернуть ложь ;
  336. }
  337. }
  338. }
  339. }
  340. for ( int y = yCoord - размер; y <= yCoord + размер; y ++ ) {
  341. for ( int z = zCoord - размер; z <= zCoord + размер; z ++ ) {
  342.  
  343. if (y == yCoord - размер || y == yCoord + размер || z == zCoord - размер || z == zCoord + размер) {
  344. if (block . equals ( " air " )) {
  345. if ( ! (xCoord - dist == xCoord && y == yCoord && z == zCoord) && ! isReplacable (xCoord - dist, y, z, set))
  346. вернуть ложь ;
  347. } else if (block . equals ( " redstone " )) {
  348. if ( ! (xCoord - dist == xCoord && y == yCoord && z == zCoord) && ! testForOrActivateRedstone (xCoord - dist, y, z, установить, активировать))
  349. вернуть ложь ;
  350. } else if (block . equals ( " draconiumBlock " )) {
  351. if ( ! (xCoord - dist == xCoord && y == yCoord && z == zCoord) && ! testForOrActivateDraconium (xCoord - dist, y, z, установить, активировать))
  352. вернуть ложь ;
  353. } else if ( ! block . equals ( " draconiumBlock " ) && ! block . equals ( " redstone " ) && ! block . equals ( " air " )) {
  354. LogHelper . ошибка ( « Недопустимая строка в коде многоблочной структуры !!! » );
  355. вернуть ложь ;
  356. }
  357. }
  358. }
  359. }
  360.  
  361. for ( int x = xCoord - размер; x <= xCoord + размер; x ++ ) {
  362. for ( int z = zCoord - размер; z <= zCoord + размер; z ++ ) {
  363.  
  364. if (x == xCoord - размер || x == xCoord + размер || z == zCoord - размер || z == zCoord + размер) {
  365. if (block . equals ( " air " )) {
  366. if ( ! (x == xCoord && yCoord + dist == yCoord && z == zCoord) && ! isReplacable (x, yCoord + dist, z, set))
  367. вернуть ложь ;
  368. } else if (block . equals ( " redstone " )) {
  369. if ( ! (x == xCoord && yCoord + dist == yCoord && z == zCoord) && ! testForOrActivateRedstone (x, yCoord + dist, z, установить, активировать))
  370. вернуть ложь ;
  371. } else if (block . equals ( " draconiumBlock " )) {
  372. if ( ! (x == xCoord && yCoord + dist == yCoord && z == zCoord) && ! testForOrActivateDraconium (x, yCoord + dist, z, установить, активировать))
  373. вернуть ложь ;
  374. } else if ( ! block . equals ( " draconiumBlock " ) && ! block . equals ( " redstone " ) && ! block . equals ( " air " )) {
  375. LogHelper . ошибка ( « Недопустимая строка в коде многоблочной структуры !!! » );
  376. вернуть ложь ;
  377. }
  378. }
  379. }
  380. }
  381. for ( int x = xCoord - размер; x <= xCoord + размер; x ++ ) {
  382. for ( int z = zCoord - размер; z <= zCoord + размер; z ++ ) {
  383.  
  384. if (x == xCoord - размер || x == xCoord + размер || z == zCoord - размер || z == zCoord + размер) {
  385. if (block . equals ( " air " )) {
  386. if ( ! (x == xCoord && yCoord - dist == yCoord && z == zCoord) && ! isReplacable (x, yCoord - dist, z, set))
  387. вернуть ложь ;
  388. } else if (block . equals ( " redstone " )) {
  389. if ( ! (x == xCoord && yCoord - dist == yCoord && z == zCoord) && ! testForOrActivateRedstone (x, yCoord - dist, z, установить, активировать))
  390. вернуть ложь ;
  391. } else if (block . equals ( " draconiumBlock " )) {
  392. if ( ! (x == xCoord && yCoord - dist == yCoord && z == zCoord) && ! testForOrActivateDraconium (x, yCoord - dist, z, установить, активировать))
  393. вернуть ложь ;
  394. } else if ( ! block . equals ( " draconiumBlock " ) && ! block . equals ( " redstone " ) && ! block . equals ( " air " )) {
  395. LogHelper . ошибка ( « Недопустимая строка в коде многоблочной структуры !!! » );
  396. вернуть ложь ;
  397. }
  398. }
  399. }
  400. }
  401.  
  402. for ( int y = yCoord - размер; y <= yCoord + размер; y ++ ) {
  403. for ( int x = xCoord - размер; x <= xCoord + размер; x ++ ) {
  404.  
  405. if (y == yCoord - размер || y == yCoord + размер || x == xCoord - размер || x == xCoord + размер) {
  406. if (block . equals ( " air " )) {
  407. if ( ! (x == xCoord && y == yCoord && zCoord + dist == zCoord) && ! isReplacable (x, y, zCoord + dist, set))
  408. вернуть ложь ;
  409. } else if (block . equals ( " redstone " )) {
  410. if ( ! (x == xCoord && y == yCoord && zCoord + dist == zCoord) && ! testForOrActivateRedstone (x, y, zCoord + dist, установить, активировать))
  411. вернуть ложь ;
  412. } else if (block . equals ( " draconiumBlock " )) {
  413. if ( ! (x == xCoord && y == yCoord && zCoord + dist == zCoord) && ! testForOrActivateDraconium (x, y, zCoord + dist, установить, активировать))
  414. вернуть ложь ;
  415. } else if ( ! block . equals ( " draconiumBlock " ) && ! block . equals ( " redstone " ) && ! block . equals ( " air " )) {
  416. LogHelper . ошибка ( « Недопустимая строка в коде многоблочной структуры !!! » );
  417. вернуть ложь ;
  418. }
  419. }
  420. }
  421. }
  422. for ( int y = yCoord - размер; y <= yCoord + размер; y ++ ) {
  423. for ( int x = xCoord - размер; x <= xCoord + размер; x ++ ) {
  424.  
  425. if (y == yCoord - размер || y == yCoord + размер || x == xCoord - размер || x == xCoord + размер) {
  426. if (block . equals ( " air " )) {
  427. if ( ! (x == xCoord && y == yCoord && zCoord - dist == zCoord) && ! isReplacable (x, y, zCoord - dist, set))
  428. вернуть ложь ;
  429. } else if (block . equals ( " redstone " )) {
  430. if ( ! (x == xCoord && y == yCoord && zCoord - dist == zCoord) && ! testForOrActivateRedstone (x, y, zCoord - dist, установить, активировать))
  431. вернуть ложь ;
  432. } else if (block . equals ( " draconiumBlock " )) {
  433. if ( ! (x == xCoord && y == yCoord && zCoord - dist == zCoord) && ! testForOrActivateDraconium (x, y, zCoord - dist, установить, активировать))
  434. вернуть ложь ;
  435. } else if ( ! block . equals ( " draconiumBlock " ) && ! block . equals ( " redstone " ) && ! block . equals ( " air " )) {
  436. LogHelper . ошибка ( « Недопустимая строка в коде многоблочной структуры !!! » );
  437. вернуть ложь ;
  438. }
  439. }
  440. }
  441. }
  442. вернуть истину ;
  443. }
  444.  
  445. приватный логический testOrActivateSides ( int dist , строковый блок , логический набор , логический активатор ) {
  446. dist ++ ;
  447. for ( int y = yCoord - 1 ; y <= yCoord + 1 ; y ++ ) {
  448. for ( int z = zCoord - 1 ; z <= zCoord + 1 ; z ++ ) {
  449.  
  450. if (block . equals ( " air " )) {
  451. if ( ! (xCoord + dist == xCoord && y == yCoord && z == zCoord) && ! isReplacable (xCoord + dist, y, z, set))
  452. вернуть ложь ;
  453. } else if (block . equals ( " redstone " )) {
  454. if ( ! (xCoord + dist == xCoord && y == yCoord && z == zCoord) && ! testForOrActivateRedstone (xCoord + dist, y, z, установить, активировать))
  455. вернуть ложь ;
  456. } else if (block . equals ( " draconiumBlock " )) {
  457. if ( ! (xCoord + dist == xCoord && y == yCoord && z == zCoord) && ! testForOrActivateDraconium (xCoord + dist, y, z, установить, активировать))
  458. вернуть ложь ;
  459. } else if ( ! block . equals ( " draconiumBlock " ) && ! block . equals ( " redstone " ) && ! block . equals ( " air " )) {
  460. LogHelper . ошибка ( « Недопустимая строка в коде многоблочной структуры !!! » );
  461. вернуть ложь ;
  462. }
  463. }
  464. }
  465. for ( int y = yCoord - 1 ; y <= yCoord + 1 ; y ++ ) {
  466. for ( int z = zCoord - 1 ; z <= zCoord + 1 ; z ++ ) {
  467.  
  468. if (block . equals ( " air " )) {
  469. if ( ! (xCoord - dist == xCoord && y == yCoord && z == zCoord) && ! isReplacable (xCoord - dist, y, z, set))
  470. вернуть ложь ;
  471. } else if (block . equals ( " redstone " )) {
  472. if ( ! (xCoord - dist == xCoord && y == yCoord && z == zCoord) && ! testForOrActivateRedstone (xCoord - dist, y, z, установить, активировать))
  473. вернуть ложь ;
  474. } else if (block . equals ( " draconiumBlock " )) {
  475. if ( ! (xCoord - dist == xCoord && y == yCoord && z == zCoord) && ! testForOrActivateDraconium (xCoord - dist, y, z, установить, активировать))
  476. вернуть ложь ;
  477. } else if ( ! block . equals ( " draconiumBlock " ) && ! block . equals ( " redstone " ) && ! block . equals ( " air " )) {
  478. LogHelper . ошибка ( « Недопустимая строка в коде многоблочной структуры !!! » );
  479. вернуть ложь ;
  480. }
  481. }
  482. }
  483.  
  484. for ( int x = xCoord - 1 ; x <= xCoord + 1 ; x ++ ) {
  485. for ( int z = zCoord - 1 ; z <= zCoord + 1 ; z ++ ) {
  486.  
  487. if (block . equals ( " air " )) {
  488. if ( ! (x == xCoord && yCoord + dist == yCoord && z == zCoord) && ! isReplacable (x, yCoord + dist, z, set))
  489. вернуть ложь ;
  490. } else if (block . equals ( " redstone " )) {
  491. if ( ! (x == xCoord && yCoord + dist == yCoord && z == zCoord) && ! testForOrActivateRedstone (x, yCoord + dist, z, установить, активировать))
  492. вернуть ложь ;
  493. } else if (block . equals ( " draconiumBlock " )) {
  494. if ( ! (x == xCoord && yCoord + dist == yCoord && z == zCoord) && ! testForOrActivateDraconium (x, yCoord + dist, z, установить, активировать))
  495. вернуть ложь ;
  496. } else if ( ! block . equals ( " draconiumBlock " ) && ! block . equals ( " redstone " ) && ! block . equals ( " air " )) {
  497. LogHelper . ошибка ( « Недопустимая строка в коде многоблочной структуры !!! » );
  498. вернуть ложь ;
  499. }
  500. }
  501. }
  502. for ( int x = xCoord - 1 ; x <= xCoord + 1 ; x ++ ) {
  503. for ( int z = zCoord - 1 ; z <= zCoord + 1 ; z ++ ) {
  504.  
  505. if (block . equals ( " air " )) {
  506. if ( ! (x == xCoord && yCoord - dist == yCoord && z == zCoord) && ! isReplacable (x, yCoord - dist, z, set))
  507. вернуть ложь ;
  508. } else if (block . equals ( " redstone " )) {
  509. if ( ! (x == xCoord && yCoord - dist == yCoord && z == zCoord) && ! testForOrActivateRedstone (x, yCoord - dist, z, установить, активировать))
  510. вернуть ложь ;
  511. } else if (block . equals ( " draconiumBlock " )) {
  512. if ( ! (x == xCoord && yCoord - dist == yCoord && z == zCoord) && ! testForOrActivateDraconium (x, yCoord - dist, z, установить, активировать))
  513. вернуть ложь ;
  514. } else if ( ! block . equals ( " draconiumBlock " ) && ! block . equals ( " redstone " ) && ! block . equals ( " air " )) {
  515. LogHelper . ошибка ( « Недопустимая строка в коде многоблочной структуры !!! » );
  516. вернуть ложь ;
  517. }
  518. }
  519. }
  520.  
  521. for ( int y = yCoord - 1 ; y <= yCoord + 1 ; y ++ ) {
  522. for ( int x = xCoord - 1 ; x <= xCoord + 1 ; x ++ ) {
  523.  
  524. if (block . equals ( " air " )) {
  525. if ( ! (x == xCoord && y == yCoord && zCoord + dist == zCoord) && ! isReplacable (x, y, zCoord + dist, set))
  526. вернуть ложь ;
  527. } else if (block . equals ( " redstone " )) {
  528. if ( ! (x == xCoord && y == yCoord && zCoord + dist == zCoord) && ! testForOrActivateRedstone (x, y, zCoord + dist, установить, активировать))
  529. вернуть ложь ;
  530. } else if (block . equals ( " draconiumBlock " )) {
  531. if ( ! (x == xCoord && y == yCoord && zCoord + dist == zCoord) && ! testForOrActivateDraconium (x, y, zCoord + dist, установить, активировать))
  532. вернуть ложь ;
  533. } else if ( ! block . equals ( " draconiumBlock " ) && ! block . equals ( " redstone " ) && ! block . equals ( " air " )) {
  534. LogHelper . ошибка ( « Недопустимая строка в коде многоблочной структуры !!! » );
  535. вернуть ложь ;
  536. }
  537. }
  538. }
  539. for ( int y = yCoord - 1 ; y <= yCoord + 1 ; y ++ ) {
  540. for ( int x = xCoord - 1 ; x <= xCoord + 1 ; x ++ ) {
  541.  
  542. if (block . equals ( " air " )) {
  543. if ( ! (x == xCoord && y == yCoord && zCoord - dist == zCoord) && ! isReplacable (x, y, zCoord - dist, set))
  544. вернуть ложь ;
  545. } else if (block . equals ( " redstone " )) {
  546. if ( ! (x == xCoord && y == yCoord && zCoord - dist == zCoord) && ! testForOrActivateRedstone (x, y, zCoord - dist, установить, активировать))
  547. вернуть ложь ;
  548. } else if (block . equals ( " draconiumBlock " )) {
  549. if ( ! (x == xCoord && y == yCoord && zCoord - dist == zCoord) && ! testForOrActivateDraconium (x, y, zCoord - dist, установить, активировать))
  550. вернуть ложь ;
  551. } else if ( ! block . equals ( " draconiumBlock " ) && ! block . equals ( " redstone " ) && ! block . equals ( " air " )) {
  552. LogHelper . ошибка ( « Недопустимая строка в коде многоблочной структуры !!! » );
  553. вернуть ложь ;
  554. }
  555. }
  556. }
  557.  
  558. вернуть истину ;
  559. }
  560.  
  561. приватный логический тестForOrActivateDraconium ( int x , int y , int z , логический набор , логическая активация ) {
  562. если ( ! активировать) {
  563. if (set) {
  564. worldObj . setBlock (x, y, z, ModBlocks . draconiumBlock);
  565. вернуть истину ;
  566. } еще
  567. возвращение worldObj . getBlock (x, y, z) == ModBlocks . дракониевый блок || (worldObj . getBlock (x, y, z) == ModBlocks . invisibleMultiblock && worldObj . getBlockMetadata (x, y, z) == 0 );
  568. } еще {
  569. вернуть ActivDraconium (x, y, z);
  570. }
  571. }
  572.  
  573. приватный логический testForOrActivateRedstone ( int x , int y , int z , логический набор , логическая активация ) {
  574. если ( ! активировать) {
  575. if (set) {
  576. worldObj . setBlock (x, y, z, BalanceConfigHandler . energyStorageStructureBlock, BalanceConfigHandler . energyStorageStructureBlockMetadata, 3 );
  577. вернуть истину ;
  578. } еще {
  579. return (worldObj . getBlock (x, y, z) == BalanceConfigHandler . energyStorageStructureBlock && worldObj . getBlockMetadata (x, y, z) == BalanceConfigHandler . energyStorageStructureBlockMetadata) || (worldObj . getBlock (x, y, z) == ModBlocks . invisibleMultiblock && worldObj . getBlockMetadata (x, y, z) == 1 );
  580. }
  581. } еще {
  582. вернуть activRedstone (x, y, z);
  583. }
  584. }
  585.  
  586. частное логическое значение activDraconium ( int x , int y , int z ) {
  587. if (testForOrActivateDraconium (x, y, z, false , false )) {
  588. worldObj . setBlock (x, y, z, ModBlocks . invisibleMultiblock, 0 , 2 );
  589. TileInvisibleMultiblock плитка = (worldObj . GetTileEntity (х, у, г) ! = NULL && worldObj . GetTileEntity (х, у, г) InstanceOf TileInvisibleMultiblock ) ? ( TileInvisibleMultiblock ) worldObj . getTileEntity (x, y, z) : null ;
  590. if (tile ! = null ) {
  591. плитка . master = new TileLocation (xCoord, yCoord, zCoord);
  592. }
  593. вернуть истину ;
  594. }
  595. LogHelper . ошибка ( « Не удалось активировать структуру (activDraconium) » );
  596. вернуть ложь ;
  597. }
  598.  
  599. закрытое логическое значение activRedstone ( int x , int y , int z ) {
  600. if (testForOrActivateRedstone (x, y, z, false , false )) {
  601. worldObj . setBlock (x, y, z, ModBlocks . invisibleMultiblock, 1 , 2 );
  602. TileInvisibleMultiblock плитка = (worldObj . GetTileEntity (х, у, г) ! = NULL && worldObj . GetTileEntity (х, у, г) InstanceOf TileInvisibleMultiblock ) ? ( TileInvisibleMultiblock ) worldObj . getTileEntity (x, y, z) : null ;
  603. if (tile ! = null ) {
  604. плитка . master = new TileLocation (xCoord, yCoord, zCoord);
  605. }
  606. вернуть истину ;
  607. }
  608. LogHelper . ошибка ( « Не удалось активировать структуру (activRedstone) » );
  609. вернуть ложь ;
  610. }
  611.  
  612. приватный логический isReplacable ( int x , int y , int z , логический набор ) {
  613. if (set) {
  614. worldObj . setBlock (x, y, z, Blocks . air);
  615. вернуть истину ;
  616. } иначе верните worldObj . getBlock (x, y, z) . isReplaceable (worldObj, x, y, z) || worldObj . isAirBlock (x, y, z);
  617. }
  618.  
  619. public boolean isOnline () {
  620. вернуться онлайн;
  621. }
  622.  
  623. private void activStabilizers () {
  624. for ( int i = 0 ; i < стабилизаторы . length; i ++ ) {
  625. if (стабилизаторы [i] == ноль ) {
  626. LogHelper . ошибка ( " activStabilizers stabalizers [ " + i + " ] == null !!! " );
  627. возврат ;
  628. }
  629. TileParticleGenerator плитка = (worldObj . GetTileEntity (стабилизаторы [я] . GetXCoord (), стабилизаторы [I] . GetYCoord (), стабилизаторы [I] . GetZCoord ()) ! = NULL && worldObj . GetTileEntity (стабилизаторы [я] . GetXCoord ( ), стабилизаторы [i] . getYCoord (), стабилизаторы [i] . getZCoord ()) экземпляр TileParticleGenerator ) ? ( TileParticleGenerator ) worldObj . getTileEntity (стабилизаторы [i] . getXCoord (), стабилизаторы [i] .getYCoord (), стабилизаторы [i] . getZCoord ()) : null ;
  630. if (tile == null ) {
  631. LogHelper . ошибка ( « Отсутствует объект плитки (Генератор частиц) » );
  632. возврат ;
  633. }
  634. плитка . stabalizerMode = true ;
  635. плитка . setMaster ( новый TileLocation (xCoord, yCoord, zCoord));
  636. worldObj . setBlockMetadataWithNotify (стабилизаторы [i] . getXCoord (), стабилизаторы [i] . getYCoord (), стабилизаторы [i] . getZCoord (), 1 , 2 );
  637. }
  638. initializeCapacity ();
  639. }
  640.  
  641. private void initializeCapacity () {
  642. длинная емкость = 0 ;
  643. переключатель (уровень) {
  644. случай 0 :
  645. емкость = BalanceConfigHandler . energyStorageTier1Storage;
  646. перерыв ;
  647. случай 1 :
  648. емкость = BalanceConfigHandler . energyStorageTier2Storage;
  649. перерыв ;
  650. случай 2 :
  651. емкость = BalanceConfigHandler . energyStorageTier3Storage;
  652. перерыв ;
  653. случай 3 :
  654. емкость = BalanceConfigHandler . energyStorageTier4Storage;
  655. перерыв ;
  656. дело 4 :
  657. емкость = BalanceConfigHandler . energyStorageTier5Storage;
  658. перерыв ;
  659. дело 5 :
  660. емкость = BalanceConfigHandler . energyStorageTier6Storage;
  661. перерыв ;
  662. дело 6 :
  663. емкость = BalanceConfigHandler . energyStorageTier7Storage;
  664. перерыв ;
  665. }
  666. это . емкость = емкость;
  667. если (энергия > емкость) энергия = емкость;
  668. }
  669.  
  670. public void deactivateStabilizers () {
  671. for ( int i = 0 ; i < стабилизаторы . length; i ++ ) {
  672. if (стабилизаторы [i] == ноль ) {
  673. LogHelper . ошибка ( " activStabilizers stabalizers [ " + i + " ] == null !!! " );
  674. } еще {
  675. TileParticleGenerator tile = (worldObj.getTileEntity(stabilizers[i].getXCoord(), stabilizers[i].getYCoord(), stabilizers[i].getZCoord()) != null && worldObj.getTileEntity(stabilizers[i].getXCoord(), stabilizers[i].getYCoord(), stabilizers[i].getZCoord()) instanceof TileParticleGenerator) ? (TileParticleGenerator) worldObj.getTileEntity(stabilizers[i].getXCoord(), stabilizers[i].getYCoord(), stabilizers[i].getZCoord()) : null;
  676. if (tile == null) {
  677. //LogHelper.error("Missing Tile Entity (Particle Generator)");
  678. } else {
  679. tile.stabalizerMode = false;
  680. worldObj.setBlockMetadataWithNotify(stabilizers[i].getXCoord(), stabilizers[i].getYCoord(), stabilizers[i].getZCoord(), 0, 2);
  681. }
  682. }
  683. }
  684. }
  685.  
  686. private boolean areStabilizersActive() {
  687. for (int i = 0; i < stabilizers.length; i++) {
  688. if (stabilizers[i] == null) {
  689. LogHelper.error("activateStabilizers stabalizers[" + i + "] == null!!!");
  690. return false;
  691. }
  692. TileParticleGenerator tile = (worldObj.getTileEntity(stabilizers[i].getXCoord(), stabilizers[i].getYCoord(), stabilizers[i].getZCoord()) != null && worldObj.getTileEntity(stabilizers[i].getXCoord(), stabilizers[i].getYCoord(), stabilizers[i].getZCoord()) instanceof TileParticleGenerator) ? (TileParticleGenerator) worldObj.getTileEntity(stabilizers[i].getXCoord(), stabilizers[i].getYCoord(), stabilizers[i].getZCoord()) : null;
  693. if (tile == null) {
  694. //LogHelper.error("Missing Tile Entity (Particle Generator)");
  695. return false;
  696. }
  697. if (!tile.stabalizerMode || worldObj.getBlockMetadata(stabilizers[i].getXCoord(), stabilizers[i].getYCoord(), stabilizers[i].getZCoord()) != 1)
  698. return false;
  699. }
  700. return true;
  701. }
  702.  
  703. private boolean checkStabilizers() {
  704. for (int i = 0; i < stabilizers.length; i++) {
  705. if (stabilizers[i] == null) return false;
  706. TileParticleGenerator gen = (worldObj.getTileEntity(stabilizers[i].getXCoord(), stabilizers[i].getYCoord(), stabilizers[i].getZCoord()) != null && worldObj.getTileEntity(stabilizers[i].getXCoord(), stabilizers[i].getYCoord(), stabilizers[i].getZCoord()) instanceof TileParticleGenerator) ? (TileParticleGenerator) worldObj.getTileEntity(stabilizers[i].getXCoord(), stabilizers[i].getYCoord(), stabilizers[i].getZCoord()) : null;
  707. if (gen == null || !gen.stabalizerMode) return false;
  708. if (gen.getMaster().xCoord != xCoord || gen.getMaster().yCoord != yCoord || gen.getMaster().zCoord != zCoord)
  709. return false;
  710. }
  711. return true;
  712. }
  713.  
  714. public int getTier() {
  715. return tier;
  716. }
  717.  
  718. /**
  719. * ###############################################################
  720. */
  721.  
  722.  
  723. @Override
  724. public void writeToNBT(NBTTagCompound compound) {
  725. super.writeToNBT(compound);
  726. compound.setBoolean("Online", online);
  727. compound.setShort("Tier", (short) tier);
  728. compound.setLong("EnergyL", energy);
  729. for (int i = 0; i < stabilizers.length; i++) {
  730. if (stabilizers[i] != null) stabilizers[i].writeToNBT(compound, String.valueOf(i));
  731. }
  732. }
  733.  
  734. @Override
  735. public void readFromNBT(NBTTagCompound compound) {
  736. online = compound.getBoolean("Online");
  737. tier = (int) compound.getShort("Tier");
  738. energy = compound.getLong("EnergyL");
  739. if (compound.hasKey("Energy")) energy = (long) compound.getDouble("Energy");
  740. for (int i = 0; i < stabilizers.length; i++) {
  741. if (stabilizers[i] != null) stabilizers[i].readFromNBT(compound, String.valueOf(i));
  742. }
  743. initializeCapacity();
  744. super.readFromNBT(compound);
  745. }
  746.  
  747. @Override
  748. public Packet getDescriptionPacket() {
  749. NBTTagCompound nbttagcompound = new NBTTagCompound();
  750. writeToNBT(nbttagcompound);
  751. return new S35PacketUpdateTileEntity(xCoord, yCoord, zCoord, 1, nbttagcompound);
  752. }
  753.  
  754. @Override
  755. public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) {
  756. readFromNBT(pkt.func_148857_g());
  757. }
  758.  
  759. /* EnergyHandler */
  760.  
  761. public int receiveEnergy(int maxReceive, boolean simulate) {
  762. long energyReceived = Math.min(capacity - energy, maxReceive);
  763.  
  764. if (!simulate) {
  765. energy += energyReceived;
  766. }
  767. return (int) energyReceived;
  768. }
  769.  
  770. public int extractEnergy(int maxExtract, boolean simulate) {
  771. long energyExtracted = Math.min(energy, maxExtract);
  772.  
  773. if (!simulate) {
  774. energy -= energyExtracted;
  775. }
  776. return (int) energyExtracted;
  777. }
  778.  
  779. public long getEnergyStored() {
  780. return energy;
  781. }
  782.  
  783. public long getMaxEnergyStored() {
  784. return capacity;
  785. }
  786.  
  787. @Override
  788. public AxisAlignedBB getRenderBoundingBox() {
  789. return INFINITE_EXTENT_AABB;
  790. }
  791.  
  792. @Override
  793. public double getMaxRenderDistanceSquared() {
  794. return 40960.0D;
  795. }
  796.  
  797. private void detectAndRendChanges() {
  798. if (lastTickCapacity != energy)
  799. lastTickCapacity = ( Длинный ) sendObjectToClient ( Список литературы . LONG_ID , 0 , энергия, новый NetworkRegistry . TargetPoint (worldObj . поставщик . dimensionId, xCoord, yCoord, zCoord, 20 ));
  800. }
  801.  
  802. @Override
  803. public void receiveObjectFromServer ( int index , Object object ) {
  804. энергия = ( длинный ) объект;
  805. }
  806. }
  807. © 2020 GitHub, Inc.
  808. условия
  809. Конфиденциальность
  810. Безопасность
  811. Положение дел
  812. Помогите
  813. Как связаться с GitHub
  814. ценообразование
  815. API
  816. Повышение квалификации
  817. Блог
  818. Около
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement