Add vehicles by entity id
Add vehicles by entity id for cases where the entity is an existing server npc
This commit is contained in:
parent
b107a3b011
commit
cea0ffb8ac
3 changed files with 55 additions and 3 deletions
|
@ -196,4 +196,16 @@ public interface Npc extends PropertyHolder {
|
||||||
void removePassenger(int entityId);
|
void removePassenger(int entityId);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the vehicle entity id of this npc
|
||||||
|
* @return The entity id of the vehicle
|
||||||
|
*/
|
||||||
|
@Nullable Integer getVehicleId();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the vehicle id of this npc
|
||||||
|
* @param vehicleId The entity id of the vehicle
|
||||||
|
*/
|
||||||
|
void setVehicleId(Integer vehicleId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,7 @@ public class PacketEntity implements PropertyHolder {
|
||||||
private NpcLocation location;
|
private NpcLocation location;
|
||||||
|
|
||||||
private PacketEntity vehicle;
|
private PacketEntity vehicle;
|
||||||
|
private Integer vehicleId;
|
||||||
private List<Integer> passengers;
|
private List<Integer> passengers;
|
||||||
|
|
||||||
public PacketEntity(PacketFactory packetFactory, PropertyHolder properties, Viewable viewable, EntityType type, NpcLocation location) {
|
public PacketEntity(PacketFactory packetFactory, PropertyHolder properties, Viewable viewable, EntityType type, NpcLocation location) {
|
||||||
|
@ -71,9 +72,8 @@ public class PacketEntity implements PropertyHolder {
|
||||||
public void spawn(Player player) {
|
public void spawn(Player player) {
|
||||||
if (type == EntityTypes.PLAYER) packetFactory.spawnPlayer(player, this, properties);
|
if (type == EntityTypes.PLAYER) packetFactory.spawnPlayer(player, this, properties);
|
||||||
else packetFactory.spawnEntity(player, this, properties);
|
else packetFactory.spawnEntity(player, this, properties);
|
||||||
if (vehicle != null) {
|
if (vehicleId != null) {
|
||||||
vehicle.spawn(player);
|
packetFactory.setPassengers(player, vehicleId, this.getEntityId());
|
||||||
packetFactory.setPassengers(player, vehicle.getEntityId(), this.getEntityId());
|
|
||||||
}
|
}
|
||||||
if(passengers != null) {
|
if(passengers != null) {
|
||||||
packetFactory.setPassengers(player, this.getEntityId(), passengers.stream().mapToInt(Integer::intValue).toArray());
|
packetFactory.setPassengers(player, this.getEntityId(), passengers.stream().mapToInt(Integer::intValue).toArray());
|
||||||
|
@ -92,6 +92,26 @@ public class PacketEntity implements PropertyHolder {
|
||||||
return viewable;
|
return viewable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setVehicleId(Integer vehicleId) {
|
||||||
|
if (this.vehicle != null) {
|
||||||
|
for (Player player : viewable.getViewers()) {
|
||||||
|
packetFactory.setPassengers(player, this.vehicle.getEntityId());
|
||||||
|
this.vehicle.despawn(player);
|
||||||
|
packetFactory.teleportEntity(player, this);
|
||||||
|
}
|
||||||
|
} else if (this.vehicleId != null) {
|
||||||
|
for (Player player : viewable.getViewers()) {
|
||||||
|
packetFactory.setPassengers(player, this.vehicleId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.vehicleId = vehicleId;
|
||||||
|
if (vehicleId == null) return;
|
||||||
|
|
||||||
|
for (Player player : viewable.getViewers()) {
|
||||||
|
packetFactory.setPassengers(player, this.getEntityId(), vehicleId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void setVehicle(PacketEntity vehicle) {
|
public void setVehicle(PacketEntity vehicle) {
|
||||||
// remove old vehicle
|
// remove old vehicle
|
||||||
if (this.vehicle != null) {
|
if (this.vehicle != null) {
|
||||||
|
@ -100,6 +120,10 @@ public class PacketEntity implements PropertyHolder {
|
||||||
this.vehicle.despawn(player);
|
this.vehicle.despawn(player);
|
||||||
packetFactory.teleportEntity(player, this);
|
packetFactory.teleportEntity(player, this);
|
||||||
}
|
}
|
||||||
|
} else if (this.vehicleId != null) {
|
||||||
|
for (Player player : viewable.getViewers()) {
|
||||||
|
packetFactory.setPassengers(player, this.vehicleId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.vehicle = vehicle;
|
this.vehicle = vehicle;
|
||||||
|
@ -112,6 +136,10 @@ public class PacketEntity implements PropertyHolder {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Integer getVehicleId() {
|
||||||
|
return vehicleId;
|
||||||
|
}
|
||||||
|
|
||||||
public List<Integer> getPassengers() {
|
public List<Integer> getPassengers() {
|
||||||
return passengers;
|
return passengers;
|
||||||
}
|
}
|
||||||
|
|
|
@ -261,4 +261,16 @@ public class NpcImpl extends Viewable implements Npc {
|
||||||
public void removePassenger(int entityId) {
|
public void removePassenger(int entityId) {
|
||||||
entity.removePassenger(entityId);
|
entity.removePassenger(entityId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable Integer getVehicleId() {
|
||||||
|
return entity.getVehicleId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setVehicleId(Integer vehicleId) {
|
||||||
|
entity.setVehicleId(vehicleId);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue