mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
# Conflicts: # src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBalefire.java # src/main/java/com/hbm/tileentity/machine/TileEntityAshpit.java # src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java # src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java # src/main/java/com/hbm/tileentity/machine/TileEntityCore.java # src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnace.java # src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java # src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java # src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java # src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceSteel.java # src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java # src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoilerIndustrial.java # src/main/java/com/hbm/tileentity/machine/TileEntityHeaterHeatex.java # src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutosaw.java # src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java # src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java # src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java # src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java # src/main/java/com/hbm/tileentity/machine/TileEntityMachineHephaestus.java # src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java # src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java # src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java # src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpBase.java # src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java # src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java # src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java # src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java # src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java # src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java # src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java # src/main/java/com/hbm/tileentity/machine/TileEntitySteamEngine.java # src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticCracker.java # src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java # src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java # src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java # src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java # src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java # src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java # src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java # src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java # src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlAuto.java # src/main/java/com/hbm/tileentity/machine/storage/TileEntityMassStorage.java # src/main/java/com/hbm/tileentity/network/TileEntityCraneRouter.java # src/main/java/com/hbm/tileentity/network/TileEntityDroneCrate.java # src/main/java/com/hbm/tileentity/network/TileEntityDroneRequester.java # src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java # src/main/java/com/hbm/tileentity/turret/TileEntityTurretMaxwell.java # src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java # src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java # src/main/java/com/hbm/tileentity/turret/TileEntityTurretTauon.java
200 lines
4.3 KiB
Java
200 lines
4.3 KiB
Java
package com.hbm.tileentity.bomb;
|
|
|
|
import com.hbm.entity.effect.EntityNukeTorex;
|
|
import com.hbm.entity.logic.EntityBalefire;
|
|
import com.hbm.inventory.container.ContainerNukeFstbmb;
|
|
import com.hbm.inventory.gui.GUINukeFstbmb;
|
|
import com.hbm.items.ModItems;
|
|
import com.hbm.tileentity.IGUIProvider;
|
|
import com.hbm.tileentity.TileEntityMachineBase;
|
|
|
|
import api.hbm.energymk2.IBatteryItem;
|
|
import cpw.mods.fml.relauncher.Side;
|
|
import cpw.mods.fml.relauncher.SideOnly;
|
|
import io.netty.buffer.ByteBuf;
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.inventory.Container;
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
import net.minecraft.tileentity.TileEntity;
|
|
import net.minecraft.util.AxisAlignedBB;
|
|
import net.minecraft.world.World;
|
|
|
|
public class TileEntityNukeBalefire extends TileEntityMachineBase implements IGUIProvider {
|
|
|
|
public boolean loaded;
|
|
public boolean started;
|
|
public int timer;
|
|
|
|
public TileEntityNukeBalefire() {
|
|
super(2);
|
|
timer = 18000;
|
|
}
|
|
|
|
@Override
|
|
public String getName() {
|
|
return "container.nukeFstbmb";
|
|
}
|
|
|
|
@Override
|
|
public void updateEntity() {
|
|
|
|
if(!worldObj.isRemote) {
|
|
|
|
if(!this.isLoaded()) {
|
|
started = false;
|
|
}
|
|
|
|
if(started) {
|
|
timer--;
|
|
|
|
if(timer % 20 == 0)
|
|
worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:weapon.fstbmbPing", 5.0F, 1.0F);
|
|
}
|
|
|
|
if(timer <= 0) {
|
|
explode();
|
|
}
|
|
|
|
networkPackNT(250);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void serialize(ByteBuf buf) {
|
|
super.serialize(buf);
|
|
|
|
buf.writeInt(this.timer);
|
|
buf.writeBoolean(this.started);
|
|
buf.writeBoolean(this.loaded);
|
|
}
|
|
|
|
@Override
|
|
public void deserialize(ByteBuf buf) {
|
|
super.deserialize(buf);
|
|
|
|
this.timer = buf.readInt();
|
|
this.started = buf.readBoolean();
|
|
this.loaded = buf.readBoolean();
|
|
}
|
|
|
|
public void handleButtonPacket(int value, int meta) {
|
|
|
|
if(meta == 0 && this.isLoaded()) {
|
|
worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:weapon.fstbmbStart", 5.0F, 1.0F);
|
|
started = true;
|
|
}
|
|
|
|
if(meta == 1)
|
|
timer = value * 20;
|
|
}
|
|
|
|
public boolean isLoaded() {
|
|
|
|
return hasEgg() && hasBattery();
|
|
}
|
|
|
|
public boolean hasEgg() {
|
|
|
|
if(slots[0] != null && slots[0].getItem() == ModItems.egg_balefire) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public boolean hasBattery() {
|
|
|
|
return getBattery() > 0;
|
|
}
|
|
|
|
public int getBattery() {
|
|
|
|
if(slots[1] != null && slots[1].getItem() == ModItems.battery_spark &&
|
|
((IBatteryItem)ModItems.battery_spark).getCharge(slots[1]) == ((IBatteryItem)ModItems.battery_spark).getMaxCharge(slots[1])) {
|
|
return 1;
|
|
}
|
|
|
|
if(slots[1] != null && slots[1].getItem() == ModItems.battery_trixite &&
|
|
((IBatteryItem)ModItems.battery_trixite).getCharge(slots[1]) == ((IBatteryItem)ModItems.battery_trixite).getMaxCharge(slots[1])) {
|
|
return 2;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
public void explode() {
|
|
|
|
for(int i = 0; i < slots.length; i++)
|
|
slots[i] = null;
|
|
|
|
worldObj.func_147480_a(xCoord, yCoord, zCoord, false);
|
|
|
|
EntityBalefire bf = new EntityBalefire(worldObj);
|
|
bf.posX = xCoord + 0.5;
|
|
bf.posY = yCoord + 0.5;
|
|
bf.posZ = zCoord + 0.5;
|
|
bf.destructionRange = (int) 250;
|
|
worldObj.spawnEntityInWorld(bf);
|
|
EntityNukeTorex.statFacBale(worldObj, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, 250);
|
|
}
|
|
|
|
public String getMinutes() {
|
|
|
|
String mins = "" + (timer / 1200);
|
|
|
|
if(mins.length() == 1)
|
|
mins = "0" + mins;
|
|
|
|
return mins;
|
|
}
|
|
|
|
public String getSeconds() {
|
|
|
|
String mins = "" + ((timer / 20) % 60);
|
|
|
|
if(mins.length() == 1)
|
|
mins = "0" + mins;
|
|
|
|
return mins;
|
|
}
|
|
|
|
@Override
|
|
public void readFromNBT(NBTTagCompound nbt) {
|
|
super.readFromNBT(nbt);
|
|
|
|
started = nbt.getBoolean("started");
|
|
timer = nbt.getInteger("timer");
|
|
}
|
|
|
|
@Override
|
|
public void writeToNBT(NBTTagCompound nbt) {
|
|
super.writeToNBT(nbt);
|
|
|
|
nbt.setBoolean("started", started);
|
|
nbt.setInteger("timer", timer);
|
|
}
|
|
|
|
@Override
|
|
public AxisAlignedBB getRenderBoundingBox() {
|
|
return TileEntity.INFINITE_EXTENT_AABB;
|
|
}
|
|
|
|
@Override
|
|
@SideOnly(Side.CLIENT)
|
|
public double getMaxRenderDistanceSquared()
|
|
{
|
|
return 65536.0D;
|
|
}
|
|
|
|
@Override
|
|
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
|
return new ContainerNukeFstbmb(player.inventory, this);
|
|
}
|
|
|
|
@Override
|
|
@SideOnly(Side.CLIENT)
|
|
public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
|
return new GUINukeFstbmb(player.inventory, this);
|
|
}
|
|
}
|