mirror of
https://github.com/Minestom/Minestom.git
synced 2025-02-20 14:21:29 +01:00
Added LivingEntity#setArrowCount and fixed metadata during respawn
This commit is contained in:
parent
a962b83958
commit
14e9dcb811
@ -10,6 +10,7 @@ import net.minestom.server.entity.damage.DamageType;
|
||||
import net.minestom.server.entity.fakeplayer.FakePlayer;
|
||||
import net.minestom.server.entity.fakeplayer.FakePlayerController;
|
||||
import net.minestom.server.event.entity.EntityAttackEvent;
|
||||
import net.minestom.server.event.entity.EntityDeathEvent;
|
||||
import net.minestom.server.event.item.ItemDropEvent;
|
||||
import net.minestom.server.event.item.ItemUpdateStateEvent;
|
||||
import net.minestom.server.event.item.PickupItemEvent;
|
||||
@ -152,6 +153,10 @@ public class PlayerInit {
|
||||
//chickenCreature.setInstance(player.getInstance());
|
||||
|
||||
FakePlayer fakePlayer = new FakePlayer(UUID.randomUUID(), "test", true);
|
||||
fakePlayer.addEventCallback(EntityDeathEvent.class, e -> {
|
||||
fakePlayer.getController().respawn();
|
||||
});
|
||||
fakePlayer.setArrowCount(25);
|
||||
FakePlayerController controller = fakePlayer.getController();
|
||||
controller.sendChatMessage("I am a bot!");
|
||||
|
||||
@ -207,7 +212,7 @@ public class PlayerInit {
|
||||
|
||||
player.addEventCallback(PlayerSpawnEvent.class, event -> {
|
||||
player.setGameMode(GameMode.SURVIVAL);
|
||||
player.teleport(new Position(0, 70, 0));
|
||||
player.teleport(new Position(0, 45, 0));
|
||||
|
||||
player.setGlowing(true);
|
||||
|
||||
@ -245,7 +250,7 @@ public class PlayerInit {
|
||||
});
|
||||
|
||||
player.addEventCallback(PlayerRespawnEvent.class, event -> {
|
||||
event.setRespawnPosition(new Position(0f, 70f, 0f));
|
||||
event.setRespawnPosition(new Position(0f, 45f, 0f));
|
||||
});
|
||||
|
||||
player.addEventCallback(PlayerUseItemEvent.class, useEvent -> {
|
||||
|
@ -35,6 +35,8 @@ public abstract class LivingEntity extends Entity implements EquipmentHandler {
|
||||
private boolean isHandActive;
|
||||
private boolean offHand;
|
||||
private boolean riptideSpinAttack;
|
||||
// The number of arrows in entity
|
||||
private int arrowCount;
|
||||
|
||||
/**
|
||||
* Time at which this entity must be extinguished
|
||||
@ -117,6 +119,7 @@ public abstract class LivingEntity extends Entity implements EquipmentHandler {
|
||||
super.getMetadataConsumer().accept(packet);
|
||||
fillMetadataIndex(packet, 7);
|
||||
fillMetadataIndex(packet, 8);
|
||||
fillMetadataIndex(packet, 11);
|
||||
|
||||
// TODO all remaining metadata
|
||||
};
|
||||
@ -141,9 +144,22 @@ public abstract class LivingEntity extends Entity implements EquipmentHandler {
|
||||
packet.writeByte((byte) 8);
|
||||
packet.writeByte(METADATA_FLOAT);
|
||||
packet.writeFloat(health);
|
||||
} else if (index == 11) {
|
||||
packet.writeByte((byte) 11);
|
||||
packet.writeByte(METADATA_VARINT);
|
||||
packet.writeVarInt(arrowCount);
|
||||
}
|
||||
}
|
||||
|
||||
public int getArrowCount() {
|
||||
return arrowCount;
|
||||
}
|
||||
|
||||
public void setArrowCount(int arrowCount) {
|
||||
this.arrowCount = arrowCount;
|
||||
sendMetadataIndex(11);
|
||||
}
|
||||
|
||||
/**
|
||||
* Kill the entity, trigger the {@link EntityDeathEvent} event
|
||||
*/
|
||||
@ -151,6 +167,10 @@ public abstract class LivingEntity extends Entity implements EquipmentHandler {
|
||||
refreshIsDead(true); // So the entity isn't killed over and over again
|
||||
triggerStatus((byte) 3); // Start death animation status
|
||||
setHealth(0);
|
||||
|
||||
// Reset velocity
|
||||
velocity.zero();
|
||||
|
||||
EntityDeathEvent entityDeathEvent = new EntityDeathEvent(this);
|
||||
callEvent(EntityDeathEvent.class, entityDeathEvent);
|
||||
}
|
||||
@ -342,7 +362,7 @@ public abstract class LivingEntity extends Entity implements EquipmentHandler {
|
||||
sendPacketToViewers(getMetadataPacket());
|
||||
}
|
||||
|
||||
public void refreshIsDead(boolean isDead) {
|
||||
protected void refreshIsDead(boolean isDead) {
|
||||
this.isDead = isDead;
|
||||
}
|
||||
|
||||
|
@ -835,6 +835,7 @@ public class Player extends LivingEntity {
|
||||
spawnPlayerPacket.playerUuid = getUuid();
|
||||
spawnPlayerPacket.position = getPosition();
|
||||
sendPacketToViewers(spawnPlayerPacket);
|
||||
sendPacketToViewersAndSelf(getMetadataPacket());
|
||||
playerConnection.sendPacket(getPropertiesPacket());
|
||||
sendUpdateHealthPacket();
|
||||
syncEquipments();
|
||||
@ -1356,7 +1357,7 @@ public class Player extends LivingEntity {
|
||||
sendPacketToViewersAndSelf(playerInfoPacket);
|
||||
}
|
||||
|
||||
public void refreshLevelType(LevelType levelType) {
|
||||
protected void refreshLevelType(LevelType levelType) {
|
||||
this.levelType = levelType;
|
||||
}
|
||||
|
||||
@ -1375,7 +1376,7 @@ public class Player extends LivingEntity {
|
||||
refreshEating(false);
|
||||
}
|
||||
|
||||
public void refreshOpenInventory(Inventory openInventory) {
|
||||
protected void refreshOpenInventory(Inventory openInventory) {
|
||||
this.openInventory = openInventory;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user