ProjectZombie/src/projectzombie/entity/EntityGrapplingHook.java

109 lines
2.3 KiB
Java
Executable File

package projectzombie.entity;
import bdf.types.BdfNamedList;
import bdf.types.BdfObject;
import gl_engine.vec.Vec3d;
import projectzombie.Main;
import projectzombie.entity.player.EntityPlayer;
import projectzombie.init.Models;
import projectzombie.model.Model;
import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer;
import projectzombie.world.layer.layergen.LayerGenRememberPlayerPos;
public class EntityGrapplingHook extends Entity
{
private int layerId;
private double height;
private Entity entity;
public EntityGrapplingHook(BdfObject bdf) {
super(bdf);
}
@Override
public void BdfClassLoad(BdfObject bdf) {
super.BdfClassLoad(bdf);
BdfNamedList nl = bdf.getNamedList();
layerId = nl.get("layer").getInteger();
height = nl.get("height").getDouble();
}
@Override
public void BdfClassSave(BdfObject bdf) {
super.BdfClassSave(bdf);
BdfNamedList nl = bdf.getNamedList();
nl.set("layer", BdfObject.withInteger(layerId));
nl.set("height", BdfObject.withDouble(height));
}
public EntityGrapplingHook(Vec3d pos, int layerId, Entity entity) {
super(pos, new Vec3d(0, 0, 0));
this.layerId = layerId;
this.height = -16;
this.entity = entity;
if(entity instanceof EntityPlayer) {
EntityPlayer ep = (EntityPlayer)entity;
ep.in_animation = true;
}
}
@Override
public void tick(Chunk chunk, Layer layer) {
super.tick(chunk, layer);
if(height >= -8)
{
Vec3d epos = entity.getPos();
double h = epos.y;
epos.y += 0.02;
if(entity instanceof EntityPlayer) {
EntityPlayer ep = (EntityPlayer)entity;
ep.moving = true;
}
if(h >= 8)
{
epos.y = 0;
Main.world.setLayer(layerId);
if(layer.layergen.destroyOnLeave) {
Main.world.removeLayer(layerId);
}
if(entity instanceof EntityPlayer)
{
EntityPlayer ep = (EntityPlayer)entity;
ep.in_animation = false;
ep.moving = false;
}
if(layer.layergen instanceof LayerGenRememberPlayerPos) {
LayerGenRememberPlayerPos lgrpp = (LayerGenRememberPlayerPos)layer.layergen;
entity.setPos(lgrpp.getPlayerPos());
}
kill();
return;
}
}
else {
height += 0.05;
}
}
@Override
public Model getModel() {
return Models.ENTITY_GRAPPLING_HOOK;
}
}