SteamWar/SpigotCore
Archiviert
13
0

Nametag fix for Replay, Tablist fix for replay #258

Zusammengeführt
Lixfel hat 1 Commits von fixTagAndTab nach master 2024-03-22 15:30:21 +01:00 zusammengeführt
3 geänderte Dateien mit 24 neuen und 31 gelöschten Zeilen

Datei anzeigen

@ -52,8 +52,11 @@ public class REntity {
@Getter
protected final UUID uuid;
@Getter
protected double x;
@Getter
protected double y;
@Getter
protected double z;
private byte yaw;
private byte pitch;
@ -257,18 +260,6 @@ public class REntity {
return isGlowing;
}
public double getX() {
return x;
}
public double getY() {
return y;
}
public double getZ() {
return z;
}
private static int spawnPacketOffset() {
switch (Core.getVersion()) {
case 8:
@ -309,6 +300,10 @@ public class REntity {
return packet;
}
void list(Consumer<Object> packetSink) {
// empty for regular entity
}
private static final Function<REntity, Object> livingSpawnPacketGenerator = Core.getVersion() >= 19 ? REntity::spawnPacketGenerator : entitySpawnPacketGenerator(ProtocolWrapper.spawnLivingPacket, Core.getVersion() == 8 ? 2 : 0);
void spawn(Consumer<Object> packetSink) {
if(entityType.isAlive()) {
@ -365,6 +360,10 @@ public class REntity {
packetSink.accept(packet);
}
void delist(Consumer<Object> packetSink) {
// empty for regular entity
}
double x() {
return x;
}

Datei anzeigen

@ -129,6 +129,7 @@ public class REntityServer implements Listener {
void addEntity(REntity entity) {
entityMap.put(entity.entityId, entity);
addEntityToChunk(entity);
entity.list(packet -> updateEntity(entity, packet));
entity.spawn(packet -> updateEntity(entity, packet));
}
@ -140,6 +141,7 @@ public class REntityServer implements Listener {
if(!entity.isHidden())
onMissing(players.get(fromId), players.get(toId), entity::despawn);
onMissing(players.get(fromId), players.get(toId), entity::delist);
removeEntityFromChunk(entity);
}
@ -150,6 +152,7 @@ public class REntityServer implements Listener {
return;
addEntityToChunk(entity);
onMissing(players.get(toId), players.get(fromId), entity::list);
if(!entity.isHidden())
onMissing(players.get(toId), players.get(fromId), entity::spawn);
}
@ -166,6 +169,7 @@ public class REntityServer implements Listener {
void removeEntity(REntity entity) {
entity.despawn(packet -> updateEntity(entity, packet));
removeEntityFromChunk(entity);
entity.delist(packet -> updateEntity(entity, packet));
entityMap.remove(entity.entityId);
}
@ -265,6 +269,7 @@ public class REntityServer implements Listener {
long id = chunkToId(x, z);
players.computeIfAbsent(id, i -> new HashSet<>()).add(player);
for(REntity entity : entities.getOrDefault(id, emptyEntities)) {
entity.list(packet -> TinyProtocol.instance.sendPacket(player, packet));
if(!entity.isHidden())
entity.spawn(packet -> TinyProtocol.instance.sendPacket(player, packet));
}
@ -281,6 +286,7 @@ public class REntityServer implements Listener {
for(REntity entity : entities.getOrDefault(id, emptyEntities)) {
if(!entity.isHidden())
entity.despawn(packet -> TinyProtocol.instance.sendPacket(player, packet));
entity.delist(packet -> TinyProtocol.instance.sendPacket(player, packet));
}
}

Datei anzeigen

@ -36,21 +36,9 @@ import java.util.UUID;
import java.util.function.Consumer;
import java.util.function.Function;
@Getter
public class RPlayer extends REntity {
/*
private static final String SCOREBOARD_TEAMNAME = "Replay";
private static final Team team;
static {
if(FightScoreboard.getBukkit().getTeam(SCOREBOARD_TEAMNAME) == null)
team = FightScoreboard.getBukkit().registerNewTeam(SCOREBOARD_TEAMNAME);
else
team = FightScoreboard.getBukkit().getTeam(SCOREBOARD_TEAMNAME);
team.setNameTagVisibility(NameTagVisibility.NEVER);
}
*/
private static int skinPartsIndex() {
switch(Core.getVersion()) {
case 8:
@ -73,19 +61,21 @@ public class RPlayer extends REntity {
private static final Object skinPartsDataWatcher = BountifulWrapper.impl.getDataWatcherObject(skinPartsIndex(), Byte.class);
@Getter
private final String name;
public RPlayer(REntityServer server, UUID uuid, String name, Location location) {
super(server, EntityType.PLAYER, uuid, location,0);
this.name = name;
//team.addEntry(name);
server.addEntity(this);
}
@Override
void spawn(Consumer<Object> packetSink) {
void list(Consumer<Object> packetSink) {
packetSink.accept(ProtocolWrapper.impl.playerInfoPacketConstructor(ProtocolWrapper.PlayerInfoAction.ADD, new GameProfile(uuid, name), GameMode.CREATIVE));
}
@Override
void spawn(Consumer<Object> packetSink) {
packetSink.accept(getNamedSpawnPacket());
packetSink.accept(getDataWatcherPacket(skinPartsDataWatcher, (byte) 0x7F));
@ -97,9 +87,7 @@ public class RPlayer extends REntity {
}
@Override
void despawn(Consumer<Object> packetSink) {
//team.removeEntry(name);
super.despawn(packetSink);
void delist(Consumer<Object> packetSink) {
packetSink.accept(ProtocolWrapper.impl.playerInfoPacketConstructor(ProtocolWrapper.PlayerInfoAction.REMOVE, new GameProfile(uuid, name), GameMode.CREATIVE));
}