109 lines
2.3 KiB
Java
Executable File
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;
|
|
}
|
|
|
|
}
|