Prepack EntityItemUseMessage

This commit is contained in:
kuroppoi 2024-02-24 00:34:53 +01:00
parent 5dbc7555de
commit 7a06129e8b
3 changed files with 62 additions and 15 deletions

View file

@ -338,11 +338,7 @@ public class Player extends Entity implements CommandExecutor {
Collection<Player> peers = zone.getPlayers(); Collection<Player> peers = zone.getPlayers();
sendMessage(new EntityStatusMessage(peers, EntityStatus.ENTERING)); sendMessage(new EntityStatusMessage(peers, EntityStatus.ENTERING));
sendMessage(new EntityPositionMessage(peers)); sendMessage(new EntityPositionMessage(peers));
sendMessage(new EntityItemUseMessage(peers));
// TODO prepack this as well
for(Player peer : peers) {
sendMessage(new EntityItemUseMessage(peer.getId(), 0, peer.getHeldItem(), 0));
}
// Send achievement data // Send achievement data
for(Achievement achievement : AchievementManager.getAchievements()) { for(Achievement achievement : AchievementManager.getAchievements()) {

View file

@ -1,21 +1,29 @@
package brainwine.gameserver.server.messages; package brainwine.gameserver.server.messages;
import java.util.Arrays;
import java.util.Collection;
import java.util.stream.Collectors;
import brainwine.gameserver.annotations.MessageInfo; import brainwine.gameserver.annotations.MessageInfo;
import brainwine.gameserver.entity.player.Player;
import brainwine.gameserver.item.Item; import brainwine.gameserver.item.Item;
import brainwine.gameserver.server.Message; import brainwine.gameserver.server.Message;
import brainwine.gameserver.server.models.EntityItemUseData;
@MessageInfo(id = 10, collection = true) @MessageInfo(id = 10, prepacked = true)
public class EntityItemUseMessage extends Message { public class EntityItemUseMessage extends Message {
public int entityId; public Collection<EntityItemUseData> data;
public int type;
public Item item;
public int status;
public EntityItemUseMessage(int entityId, int type, Item item, int status) { public EntityItemUseMessage(Collection<? extends Player> players) {
this.entityId = entityId; this.data = players.stream().map(EntityItemUseData::new).collect(Collectors.toList());
this.type = type; }
this.item = item;
this.status = status; public EntityItemUseMessage(Player player) {
this.data = Arrays.asList(new EntityItemUseData(player));
}
public EntityItemUseMessage(int id, int type, Item item, int status) {
this.data = Arrays.asList(new EntityItemUseData(id, type, item, status));
} }
} }

View file

@ -0,0 +1,43 @@
package brainwine.gameserver.server.models;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonFormat.Shape;
import brainwine.gameserver.entity.player.Player;
import brainwine.gameserver.item.Item;
@JsonFormat(shape = Shape.ARRAY)
public class EntityItemUseData {
private final int id;
private final int type;
private final Item item;
private final int status;
public EntityItemUseData(Player player) {
this(player.getId(), 0, player.getHeldItem(), 0);
}
public EntityItemUseData(int id, int type, Item item, int status) {
this.id = id;
this.type = type;
this.item = item;
this.status = status;
}
public int getId() {
return id;
}
public int getType() {
return type;
}
public Item getItem() {
return item;
}
public int getStatus() {
return status;
}
}