mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
108 lines
2.8 KiB
Java
108 lines
2.8 KiB
Java
package com.hbm.entity.missile;
|
|
|
|
import com.hbm.blocks.ModBlocks;
|
|
import com.hbm.items.ModItems;
|
|
import com.hbm.tileentity.machine.TileEntitySoyuzCapsule;
|
|
|
|
import cpw.mods.fml.relauncher.Side;
|
|
import cpw.mods.fml.relauncher.SideOnly;
|
|
import net.minecraft.entity.projectile.EntityThrowable;
|
|
import net.minecraft.init.Blocks;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
import net.minecraft.nbt.NBTTagList;
|
|
import net.minecraft.util.MovingObjectPosition;
|
|
import net.minecraft.world.World;
|
|
|
|
public class EntitySoyuzCapsule extends EntityThrowable {
|
|
|
|
public int soyuz;
|
|
public ItemStack[] payload = new ItemStack[18];
|
|
|
|
public EntitySoyuzCapsule(World p_i1582_1_) {
|
|
super(p_i1582_1_);
|
|
this.ignoreFrustumCheck = true;
|
|
this.isImmuneToFire = true;
|
|
}
|
|
|
|
@Override
|
|
public void onUpdate() {
|
|
|
|
this.lastTickPosX = this.prevPosX = posX;
|
|
this.lastTickPosY = this.prevPosY = posY;
|
|
this.lastTickPosZ = this.prevPosZ = posZ;
|
|
this.setPosition(posX + this.motionX, posY + this.motionY, posZ + this.motionZ);
|
|
|
|
if(this.motionY > -0.2)
|
|
this.motionY -= 0.02;
|
|
|
|
if(posY > 600)
|
|
posY = 600;
|
|
|
|
if(this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.air) {
|
|
|
|
this.setDead();
|
|
|
|
if(!worldObj.isRemote) {
|
|
worldObj.setBlock((int)(this.posX), (int)(this.posY + 1), (int)(this.posZ), ModBlocks.soyuz_capsule);
|
|
|
|
TileEntitySoyuzCapsule capsule = (TileEntitySoyuzCapsule)worldObj.getTileEntity((int)(this.posX), (int)(this.posY + 1), (int)(this.posZ));
|
|
if(capsule != null) {
|
|
|
|
for(int i = 0; i < payload.length; i++) {
|
|
capsule.setInventorySlotContents(i, payload[i]);
|
|
}
|
|
}
|
|
|
|
capsule.setInventorySlotContents(18, new ItemStack(ModItems.missile_soyuz, 1, soyuz));
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
protected void onImpact(MovingObjectPosition p_70184_1_) {
|
|
|
|
}
|
|
|
|
@Override
|
|
@SideOnly(Side.CLIENT)
|
|
public boolean isInRangeToRenderDist(double distance)
|
|
{
|
|
return distance < 500000;
|
|
}
|
|
|
|
@Override
|
|
public void readEntityFromNBT(NBTTagCompound nbt) {
|
|
|
|
NBTTagList list = nbt.getTagList("items", 10);
|
|
|
|
soyuz = nbt.getInteger("soyuz");
|
|
|
|
for (int i = 0; i < list.tagCount(); i++) {
|
|
NBTTagCompound nbt1 = list.getCompoundTagAt(i);
|
|
byte b0 = nbt1.getByte("slot");
|
|
if (b0 >= 0 && b0 < payload.length) {
|
|
payload[b0] = ItemStack.loadItemStackFromNBT(nbt1);
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void writeEntityToNBT(NBTTagCompound nbt) {
|
|
|
|
NBTTagList list = new NBTTagList();
|
|
|
|
nbt.setInteger("soyuz", soyuz);
|
|
|
|
for (int i = 0; i < payload.length; i++) {
|
|
if (payload[i] != null) {
|
|
NBTTagCompound nbt1 = new NBTTagCompound();
|
|
nbt1.setByte("slot", (byte) i);
|
|
payload[i].writeToNBT(nbt1);
|
|
list.appendTag(nbt1);
|
|
}
|
|
}
|
|
nbt.setTag("items", list);
|
|
}
|
|
}
|