Minestom/src/main/java/fr/themode/demo/entity/ChickenCreature.java

93 lines
3.3 KiB
Java

package fr.themode.demo.entity;
import net.minestom.server.entity.Entity;
import net.minestom.server.entity.EntityCreature;
import net.minestom.server.entity.EntityType;
import net.minestom.server.entity.Player;
import net.minestom.server.entity.vehicle.PlayerVehicleInformation;
import net.minestom.server.utils.Position;
import net.minestom.server.utils.Vector;
public class ChickenCreature extends EntityCreature {
public ChickenCreature(Position defaultPosition) {
super(EntityType.CHICKEN, defaultPosition);
setBoundingBox(0.4f, 0.7f, 0.4f);
}
public ChickenCreature() {
this(new Position());
}
@Override
public void spawn() {
}
@Override
public void update() {
super.update();
float speed = 0.075f;
if (hasPassenger()) {
Entity passenger = getPassengers().iterator().next();
if (passenger instanceof Player) {
Player player = (Player) passenger;
PlayerVehicleInformation vehicleInformation = player.getVehicleInformation();
float sideways = vehicleInformation.getSideways();
float forward = vehicleInformation.getForward();
boolean jump = vehicleInformation.shouldJump();
boolean unmount = vehicleInformation.shouldUnmount();
if (jump && isOnGround()) {
setVelocity(new Vector(0, 6, 0), 500);
}
boolean updateView = forward > 0;
if (sideways == 0f && forward == 0f)
return;
float yaw = player.getPosition().getYaw();
yaw %= 360;
sideways = yaw + (updateView ? -sideways * 90 : sideways * 90);
if (forward > 0) {
forward = yaw * forward;
} else {
forward = yaw + forward * 360;
}
yaw = (forward + sideways) / 2 % 360;
double radian = Math.toRadians(yaw + 90);
double cos = Math.cos(radian);
double sin = Math.sin(radian);
float x = (float) cos * speed;
float z = (float) sin * speed;
/*BlockPosition blockPosition = getPosition().toBlockPosition();
BlockPosition belowPosition = blockPosition.clone().add(0, -1, 0);
BlockPosition upPosition = blockPosition.clone().add(0, 1, 0);
boolean airCurrent = getInstance().getBlockId(blockPosition) == 0;
boolean airBelow = getInstance().getBlockId(belowPosition) == 0;
boolean airUp = getInstance().getBlockId(upPosition) == 0;
boolean shouldJump = false;
int boundingBoxY = (int) Math.ceil(getBoundingBox().getY());
for (int i = 0; i < boundingBoxY; i++) {
}*/
//System.out.println("test: "+player.isVehicleJump());
//System.out.println(getInstance().getBlockId(getPosition().toBlockPosition()));
move(x, 0, z, updateView);
}
} else {
//move(0.5f * speed, 0, 0.5f * speed, true);
}
//Player player = MinecraftServer.getConnectionManager().getPlayer("TheMode911");
//moveTo(player.getPosition().clone());
}
}