generated from tilera/1710mod
117 lines
3.0 KiB
Java
117 lines
3.0 KiB
Java
package icbm.gangshao.turret.mount;
|
|
|
|
import cpw.mods.fml.common.registry.IEntityAdditionalSpawnData;
|
|
import icbm.core.MainBase;
|
|
import io.netty.buffer.ByteBuf;
|
|
import net.minecraft.entity.Entity;
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
import net.minecraft.tileentity.TileEntity;
|
|
import net.minecraft.world.World;
|
|
import universalelectricity.core.vector.Vector3;
|
|
|
|
public class ESeat extends Entity implements IEntityAdditionalSpawnData {
|
|
private TileEntity controller;
|
|
private boolean shouldSit;
|
|
|
|
public ESeat(final World par1World) {
|
|
super(par1World);
|
|
this.shouldSit = false;
|
|
this.setSize(1.0f, 1.0f);
|
|
super.noClip = true;
|
|
}
|
|
|
|
public ESeat(
|
|
final World par1World,
|
|
final Vector3 position,
|
|
final TileEntity controller,
|
|
final boolean sit
|
|
) {
|
|
this(par1World);
|
|
super.isImmuneToFire = true;
|
|
this.setPosition(position.x, position.y, position.z);
|
|
this.controller = controller;
|
|
this.shouldSit = sit;
|
|
}
|
|
|
|
@Override
|
|
public String getCommandSenderName() {
|
|
return "Seat";
|
|
}
|
|
|
|
@Override
|
|
public void writeSpawnData(final ByteBuf data) {
|
|
if (this.controller != null) {
|
|
data.writeInt(this.controller.xCoord);
|
|
data.writeInt(this.controller.yCoord);
|
|
data.writeInt(this.controller.zCoord);
|
|
} else {
|
|
MainBase.LOGGER.severe("Failed to send ridable turret packet!");
|
|
}
|
|
|
|
data.writeBoolean(this.shouldSit);
|
|
}
|
|
|
|
@Override
|
|
public void readSpawnData(final ByteBuf data) {
|
|
try {
|
|
this.controller = super.worldObj.getTileEntity(
|
|
data.readInt(), data.readInt(), data.readInt()
|
|
);
|
|
this.shouldSit = data.readBoolean();
|
|
} catch (final Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onUpdate() {
|
|
if (this.controller == null) {
|
|
this.setDead();
|
|
return;
|
|
}
|
|
|
|
if (this.controller.isInvalid()) {
|
|
this.setDead();
|
|
return;
|
|
}
|
|
|
|
if (this.controller instanceof TTurretSeat) {
|
|
((TTurretSeat) this.controller).entityFake = this;
|
|
}
|
|
|
|
if (super.worldObj.isRemote && super.riddenByEntity != null) {
|
|
super.riddenByEntity.updateRiderPosition();
|
|
}
|
|
|
|
super.posY = this.controller.yCoord + 1.2;
|
|
}
|
|
|
|
@Override
|
|
public double getMountedYOffset() {
|
|
return -0.5;
|
|
}
|
|
|
|
@Override
|
|
protected boolean canTriggerWalking() {
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean shouldRiderSit() {
|
|
return this.shouldSit;
|
|
}
|
|
|
|
@Override
|
|
protected void entityInit() {}
|
|
|
|
@Override
|
|
protected void readEntityFromNBT(final NBTTagCompound nbt) {
|
|
this.shouldSit = nbt.getBoolean("shouldSit");
|
|
}
|
|
|
|
@Override
|
|
protected void writeEntityToNBT(final NBTTagCompound nbt) {
|
|
nbt.setBoolean("shouldSit", this.shouldSit);
|
|
}
|
|
}
|