use of net.minecraft.server.level.ChunkMap in project Denizen-For-Bukkit by DenizenScript.
the class EntityHelperImpl method setTrackingRange.
@Override
public void setTrackingRange(Entity entity, int range) {
try {
ChunkMap map = ((CraftWorld) entity.getWorld()).getHandle().getChunkProvider().chunkMap;
ChunkMap.TrackedEntity entry = map.G.get(entity.getEntityId());
TRACKING_RANGE_SETTER.invoke(entry, range);
} catch (Throwable ex) {
Debug.echoError(ex);
}
}
use of net.minecraft.server.level.ChunkMap in project Denizen-For-Bukkit by DenizenScript.
the class PacketHelperImpl method sendRename.
@Override
public void sendRename(Player player, Entity entity, String name, boolean listMode) {
try {
if (entity.getType() == EntityType.PLAYER) {
if (listMode) {
send(player, new ClientboundPlayerInfoPacket(ClientboundPlayerInfoPacket.Action.UPDATE_DISPLAY_NAME, ((CraftPlayer) player).getHandle()));
} else {
// For player entities, force a respawn packet and let the dynamic intercept correct the details
ChunkMap tracker = ((ServerLevel) ((CraftEntity) entity).getHandle().level).getChunkProvider().chunkMap;
ChunkMap.TrackedEntity entityTracker = tracker.G.get(entity.getEntityId());
if (entityTracker != null) {
try {
ServerEntity entry = (ServerEntity) ENTITY_TRACKER_ENTRY_GETTER.get(entityTracker);
if (entry != null) {
entry.removePairing(((CraftPlayer) player).getHandle());
entry.addPairing(((CraftPlayer) player).getHandle());
}
} catch (Throwable ex) {
Debug.echoError(ex);
}
}
}
return;
}
SynchedEntityData fakeData = new SynchedEntityData(((CraftEntity) entity).getHandle());
ClientboundSetEntityDataPacket packet = new ClientboundSetEntityDataPacket(entity.getEntityId(), fakeData, false);
List<SynchedEntityData.DataItem<?>> list = new ArrayList<>();
list.add(new SynchedEntityData.DataItem<>(ENTITY_CUSTOM_NAME_METADATA, Optional.of(Handler.componentToNMS(FormattedTextHelper.parse(name, ChatColor.WHITE)))));
list.add(new SynchedEntityData.DataItem<>(ENTITY_CUSTOM_NAME_VISIBLE_METADATA, true));
ENTITY_METADATA_LIST_SETTER.invoke(packet, list);
send(player, packet);
} catch (Throwable ex) {
Debug.echoError(ex);
}
}
use of net.minecraft.server.level.ChunkMap in project Denizen-For-Bukkit by DenizenScript.
the class PacketHelperImpl method sendRename.
@Override
public void sendRename(Player player, Entity entity, String name, boolean listMode) {
try {
if (entity.getType() == EntityType.PLAYER) {
if (listMode) {
send(player, new ClientboundPlayerInfoPacket(ClientboundPlayerInfoPacket.Action.UPDATE_DISPLAY_NAME, ((CraftPlayer) player).getHandle()));
} else {
// For player entities, force a respawn packet and let the dynamic intercept correct the details
ChunkMap tracker = ((ServerLevel) ((CraftEntity) entity).getHandle().level).getChunkSource().chunkMap;
ChunkMap.TrackedEntity entityTracker = tracker.entityMap.get(entity.getEntityId());
if (entityTracker != null) {
try {
ServerEntity entry = (ServerEntity) ENTITY_TRACKER_ENTRY_GETTER.get(entityTracker);
if (entry != null) {
entry.removePairing(((CraftPlayer) player).getHandle());
entry.addPairing(((CraftPlayer) player).getHandle());
}
} catch (Throwable ex) {
Debug.echoError(ex);
}
}
}
return;
}
SynchedEntityData fakeData = new SynchedEntityData(((CraftEntity) entity).getHandle());
ClientboundSetEntityDataPacket packet = new ClientboundSetEntityDataPacket(entity.getEntityId(), fakeData, false);
List<SynchedEntityData.DataItem<?>> list = new ArrayList<>();
list.add(new SynchedEntityData.DataItem<>(ENTITY_CUSTOM_NAME_METADATA, Optional.of(Handler.componentToNMS(FormattedTextHelper.parse(name, ChatColor.WHITE)))));
list.add(new SynchedEntityData.DataItem<>(ENTITY_CUSTOM_NAME_VISIBLE_METADATA, true));
ENTITY_METADATA_LIST_SETTER.invoke(packet, list);
send(player, packet);
} catch (Throwable ex) {
Debug.echoError(ex);
}
}
use of net.minecraft.server.level.ChunkMap in project Denizen-For-Bukkit by DenizenScript.
the class EntityHelperImpl method setTrackingRange.
@Override
public void setTrackingRange(Entity entity, int range) {
try {
ChunkMap map = ((CraftWorld) entity.getWorld()).getHandle().getChunkSource().chunkMap;
ChunkMap.TrackedEntity entry = map.entityMap.get(entity.getEntityId());
TRACKING_RANGE_SETTER.invoke(entry, range);
} catch (Throwable ex) {
Debug.echoError(ex);
}
}
use of net.minecraft.server.level.ChunkMap in project Denizen-For-Bukkit by DenizenScript.
the class EntityHelperImpl method sendShowPacket.
@Override
public void sendShowPacket(Player pl, Entity entity) {
if (entity instanceof Player) {
pl.showPlayer(Denizen.getInstance(), (Player) entity);
return;
}
CraftPlayer craftPlayer = (CraftPlayer) pl;
ServerPlayer entityPlayer = craftPlayer.getHandle();
if (entityPlayer.connection != null && !craftPlayer.equals(entity)) {
ChunkMap tracker = ((ServerLevel) craftPlayer.getHandle().level).getChunkSource().chunkMap;
net.minecraft.world.entity.Entity other = ((CraftEntity) entity).getHandle();
ChunkMap.TrackedEntity entry = tracker.entityMap.get(other.getId());
if (entry != null) {
entry.removePlayer(entityPlayer);
entry.updatePlayer(entityPlayer);
}
}
}
Aggregations