Advertisement
MrCyberdragon

TileEntityArtronGenererator

Feb 1st, 2024
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.42 KB | None | 0 0
  1. package com.mrcyberdragon.artronconverters.tileentities;
  2.  
  3. import com.mrcyberdragon.artronconverters.config.ArtronConverterConfig;
  4. import com.mrcyberdragon.artronconverters.init.ModEnergy;
  5. import com.mrcyberdragon.artronconverters.init.SoundInit;
  6. import com.mrcyberdragon.artronconverters.init.TileEntityInit;
  7. import net.minecraft.block.BlockState;
  8. import net.minecraft.nbt.CompoundNBT;
  9. import net.minecraft.network.NetworkManager;
  10. import net.minecraft.network.play.server.SUpdateTileEntityPacket;
  11. import net.minecraft.tileentity.ITickableTileEntity;
  12. import net.minecraft.tileentity.TileEntity;
  13. import net.minecraft.util.Direction;
  14. import net.minecraft.util.SoundCategory;
  15. import net.minecraftforge.common.capabilities.Capability;
  16. import net.minecraftforge.common.util.LazyOptional;
  17. import net.minecraftforge.energy.CapabilityEnergy;
  18. import net.minecraftforge.energy.EnergyStorage;
  19. import net.tardis.mod.helper.TardisHelper;
  20. import net.tardis.mod.particles.TParticleTypes;
  21. import net.tardis.mod.tileentities.ConsoleTile;
  22.  
  23. import java.util.Random;
  24.  
  25. public class TileEntityArtronGenerator extends TileEntity implements ITickableTileEntity {
  26.  
  27. private int EnergyCapacity = ArtronConverterConfig.generator_capacity.get();
  28. private int ChargeRate = ArtronConverterConfig.generator_charge.get();
  29. private int ConversionAmount = ArtronConverterConfig.generator_usage.get();
  30. private ModEnergy energy = new ModEnergy(EnergyCapacity, ChargeRate, EnergyCapacity);
  31. private LazyOptional<EnergyStorage> energyHolder = LazyOptional.of(() -> energy);
  32. private int tick = 7;
  33. private boolean energyFull = false;
  34. private boolean spawnParticle=false;
  35.  
  36. private String TARDIS_ID;
  37. private String TARDIS_NAME;
  38. private ConsoleTile tile;
  39.  
  40. public TileEntityArtronGenerator(){
  41. super(TileEntityInit.ARTRON_GENERATOR.get());
  42. }
  43.  
  44. @Override
  45. public void tick(){
  46. this.getCapability(CapabilityEnergy.ENERGY).ifPresent(cap -> {
  47. if (tile == null) return;
  48. if(world.getGameTime()%20==0){
  49. System.out.println(tile.getWorld().getDimensionKey().getLocation().toString());
  50. System.out.println(TARDIS_ID);
  51. System.out.println(tile.getWorld().getDimensionKey().getLocation().toString()==TARDIS_ID);
  52. }
  53.  
  54. if(tile!=null&&tile.getArtron() < tile.getMaxArtron()) {
  55. if(tile.getWorld().getDimensionKey().getLocation().toString()==TARDIS_ID){
  56. if (!world.isBlockPowered(this.getPos())) {
  57. if (0 < tick && tick <= 7) {
  58. tick--;
  59. }
  60. if (energy.getEnergyStored() >= ConversionAmount) {
  61. if (tick == 0) {
  62. tile.setArtron(tile.getArtron() + 1);
  63. spawnParticle = true;
  64. world.notifyBlockUpdate(this.getPos(), this.getBlockState(), this.getBlockState(), 2);
  65. energy.extractEnergy(ConversionAmount, false);
  66. if (!world.isRemote()) {
  67. this.world.playSound(null, this.getPos(), SoundInit.ARTRON_GEN, SoundCategory.BLOCKS, 1F, 1F);
  68. }
  69. tick = 7;
  70. }
  71. } else {
  72. if (energy.getEnergyStored() < energy.getMaxEnergyStored()) energyFull = false;
  73. if (tick == 7) {
  74. if (!energyFull) {
  75. if (energy.getEnergyStored() == energy.getMaxEnergyStored()) energyFull = true;
  76. world.notifyBlockUpdate(this.getPos(), this.getBlockState(), this.getBlockState(), 2);
  77. spawnParticle = false;
  78. }
  79. }
  80. }
  81. } else {
  82. if (0 < tick && tick <= 7) {
  83. tick--;
  84. }
  85. if (energy.getEnergyStored() < energy.getMaxEnergyStored()) energyFull = false;
  86. if (tick == 0) {
  87. if (!energyFull) {
  88. if (energy.getEnergyStored() == energy.getMaxEnergyStored()) energyFull = true;
  89. world.notifyBlockUpdate(this.getPos(), this.getBlockState(), this.getBlockState(), 2);
  90. spawnParticle = false;
  91. }
  92. tick = 7;
  93. }
  94. }
  95. }
  96. }
  97. else {
  98. if (0 < tick && tick <= 7) {
  99. tick--;
  100. }
  101. if(energy.getEnergyStored()<energy.getMaxEnergyStored()) energyFull=false;
  102. if (tick==0) {
  103. if(!energyFull) {
  104. if(energy.getEnergyStored()==energy.getMaxEnergyStored()) energyFull=true;
  105. world.notifyBlockUpdate(this.getPos(), this.getBlockState(), this.getBlockState(), 2);
  106. spawnParticle = false;
  107. }
  108. tick=7;
  109. }
  110. }
  111. });
  112. if(tile == null || tile.isRemoved())
  113. TardisHelper.getConsoleInWorld(world).ifPresent(console -> this.tile = console);
  114.  
  115. }
  116.  
  117. @Override
  118. public CompoundNBT write(CompoundNBT compound) {
  119. compound.putBoolean("particle",spawnParticle);
  120. compound.put("energy", energy.serializeNBT());
  121. if(TARDIS_ID!=null)compound.putString("attuned_console",TARDIS_ID);
  122. if(TARDIS_NAME!=null)compound.putString("tardis_name",TARDIS_NAME);
  123. return super.write(compound);
  124. }
  125.  
  126. @Override
  127. public void read(BlockState state, CompoundNBT nbt) {
  128. energy.deserializeNBT(nbt.getCompound("energy"));
  129. this.spawnParticle= nbt.getBoolean("particle");
  130. TARDIS_ID=nbt.getString("attuned_console");
  131. TARDIS_NAME=nbt.getString("tardis_name");
  132. super.read(state, nbt);
  133. }
  134.  
  135. public CompoundNBT saveToNbt(CompoundNBT compound) {
  136. if(TARDIS_ID!=null)compound.putString("attuned_console",TARDIS_ID);
  137. if(TARDIS_NAME!=null)compound.putString("tardis_name",TARDIS_NAME);
  138. return compound;
  139. }
  140.  
  141. public CompoundNBT loadFromNBT(CompoundNBT nbt){
  142. TARDIS_ID=nbt.getString("attuned_console");
  143. TARDIS_NAME=nbt.getString("tardis_name");
  144. return nbt;
  145. }
  146.  
  147. @Override
  148. public CompoundNBT getUpdateTag() {
  149. return this.write(new CompoundNBT());
  150. }
  151.  
  152. @Override
  153. public void handleUpdateTag(BlockState state, CompoundNBT tag) {
  154. this.read(state, tag);
  155. }
  156.  
  157. @Override
  158. public SUpdateTileEntityPacket getUpdatePacket(){
  159. CompoundNBT nbtTag = new CompoundNBT();
  160. this.write(nbtTag);
  161. return new SUpdateTileEntityPacket(this.getPos(), -1, nbtTag);
  162. }
  163.  
  164. @Override
  165. public void onDataPacket(NetworkManager net, SUpdateTileEntityPacket pkt){
  166. this.read(this.getBlockState(), pkt.getNbtCompound());
  167. Random random = new Random();
  168. if(spawnParticle) {
  169. for (int i = 5; i > 0; i--) {
  170. world.addParticle(TParticleTypes.ARTRON.get(), this.getPos().getX() + random.nextFloat(), this.getPos().getY() + random.nextFloat(), this.getPos().getZ() + random.nextFloat(), 0, 0, 0);
  171. }
  172. }
  173. }
  174.  
  175. @Override
  176. public <T> LazyOptional<T> getCapability(Capability<T> cap, Direction side) {
  177. return cap == CapabilityEnergy.ENERGY ? this.energyHolder.cast() : super.getCapability(cap, side);
  178. }
  179.  
  180. }
  181.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement