use of net.minecraft.network.protocol.game.ClientboundRemoveEntitiesPacket in project UltraCosmetics by iSach.
the class EntityUtil method clearBlizzard.
@Override
public void clearBlizzard(Player player) {
if (!fakeArmorStandsMap.containsKey(player))
return;
for (ArmorStand as : fakeArmorStandsMap.get(player)) {
if (as == null) {
continue;
}
for (Player pl : player.getWorld().getPlayers()) {
sendPacket(pl, new ClientboundRemoveEntitiesPacket(as.getId()));
}
}
fakeArmorStandsMap.remove(player);
cooldownJumpMap.remove(player);
}
use of net.minecraft.network.protocol.game.ClientboundRemoveEntitiesPacket in project UltraCosmetics by iSach.
the class EntityUtil method sendDestroyPacket.
@Override
public void sendDestroyPacket(Player player, org.bukkit.entity.Entity entity) {
ClientboundRemoveEntitiesPacket packet = new ClientboundRemoveEntitiesPacket(((CraftEntity) entity).getHandle().getId());
((CraftPlayer) player).getHandle().connection.send(packet);
}
use of net.minecraft.network.protocol.game.ClientboundRemoveEntitiesPacket in project UltraCosmetics by iSach.
the class EntityUtil method sendBlizzard.
@Override
public void sendBlizzard(final Player player, Location loc, boolean affectPlayers, Vector v) {
try {
if (!fakeArmorStandsMap.containsKey(player))
fakeArmorStandsMap.put(player, new ArrayList<>());
if (!cooldownJumpMap.containsKey(player))
cooldownJumpMap.put(player, new ArrayList<>());
final List<ArmorStand> fakeArmorStands = fakeArmorStandsMap.get(player);
final List<org.bukkit.entity.Entity> cooldownJump = cooldownJumpMap.get(player);
final ArmorStand as = new ArmorStand(EntityType.ARMOR_STAND, ((CraftWorld) player.getWorld()).getHandle());
as.setInvisible(true);
as.setSharedFlag(5, true);
as.setSmall(true);
as.setNoGravity(true);
as.setShowArms(true);
as.setHeadPose(new Rotations((r.nextInt(360)), (r.nextInt(360)), (r.nextInt(360))));
as.absMoveTo(loc.getX() + MathUtils.randomDouble(-1.5, 1.5), loc.getY() + MathUtils.randomDouble(0, .5) - 0.75, loc.getZ() + MathUtils.randomDouble(-1.5, 1.5), 0, 0);
fakeArmorStands.add(as);
for (Player players : player.getWorld().getPlayers()) {
sendPacket(player, new ClientboundAddEntityPacket(as));
sendPacket(players, new ClientboundSetEntityDataPacket(as.getId(), as.getEntityData(), false));
List<Pair<EquipmentSlot, ItemStack>> list = new ArrayList<>();
list.add(new Pair(EquipmentSlot.HEAD, CraftItemStack.asNMSCopy(new org.bukkit.inventory.ItemStack(org.bukkit.Material.PACKED_ICE))));
sendPacket(players, new ClientboundSetEquipmentPacket(as.getId(), list));
}
UtilParticles.display(Particles.CLOUD, loc.clone().add(MathUtils.randomDouble(-1.5, 1.5), MathUtils.randomDouble(0, .5) - 0.75, MathUtils.randomDouble(-1.5, 1.5)), 2, 0.4f);
Bukkit.getScheduler().runTaskLater(UltraCosmeticsData.get().getPlugin(), () -> {
for (Player pl : player.getWorld().getPlayers()) {
sendPacket(pl, new ClientboundRemoveEntitiesPacket(as.getId()));
}
fakeArmorStands.remove(as);
}, 20);
if (affectPlayers)
as.getBukkitEntity().getNearbyEntities(0.5, 0.5, 0.5).stream().filter(ent -> !cooldownJump.contains(ent) && ent != player).forEachOrdered(ent -> {
MathUtils.applyVelocity(ent, new Vector(0, 1, 0).add(v));
cooldownJump.add(ent);
Bukkit.getScheduler().runTaskLater(UltraCosmeticsData.get().getPlugin(), () -> cooldownJump.remove(ent), 20);
});
} catch (Exception exc) {
}
}
use of net.minecraft.network.protocol.game.ClientboundRemoveEntitiesPacket in project Denizen by DenizenScript.
the class EntityHelperImpl method sendHidePacket.
/*
Hide Entity
*/
@Override
public void sendHidePacket(Player pl, Entity entity) {
if (entity instanceof Player) {
pl.hidePlayer(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).getChunkProvider().chunkMap;
net.minecraft.world.entity.Entity other = ((CraftEntity) entity).getHandle();
ChunkMap.TrackedEntity entry = tracker.G.get(other.getId());
if (entry != null) {
entry.removePlayer(entityPlayer);
}
if (Denizen.supportsPaper) {
// Workaround for Paper issue
entityPlayer.connection.send(new ClientboundRemoveEntitiesPacket(other.getId()));
}
}
}
use of net.minecraft.network.protocol.game.ClientboundRemoveEntitiesPacket in project Denizen by DenizenScript.
the class EntityHelperImpl method sendHidePacket.
/*
Hide Entity
*/
@Override
public void sendHidePacket(Player pl, Entity entity) {
if (entity instanceof Player) {
pl.hidePlayer(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);
}
if (Denizen.supportsPaper) {
// Workaround for Paper issue
entityPlayer.connection.send(new ClientboundRemoveEntitiesPacket(other.getId()));
}
}
}
Aggregations