/** * Send message to all within 64 blocks that have this chunk loaded */ public static void sendToNearby(World world, BlockPos pos, IMessage toSend) { if(world instanceof WorldServer) { WorldServer ws = (WorldServer) world; for (EntityPlayer player : ws.playerEntities) { EntityPlayerMP playerMP = (EntityPlayerMP) player; if (playerMP.getDistanceSq(pos) < 64 * 64 && ws.getPlayerChunkMap().isPlayerWatchingChunk(playerMP, pos.getX() >> 4, pos.getZ() >> 4)) { HANDLER.sendTo(toSend, playerMP); } } } }
final double distance = player.getDistanceSq(colony.getCenter()); if (distance < MAX_SQ_DIST_SUBSCRIBER_UPDATE || (oldSubscribers.contains(player) && distance < MAX_SQ_DIST_OLD_SUBSCRIBER_UPDATE))
@Override public void execute(NPCEntity npc) { BlockPos pos = new BlockPos(npc.getAsEntity()); WorldServer server = (WorldServer) npc.getAsEntity().world; for (EntityPlayer player : server.playerEntities) { EntityPlayerMP mp = ((EntityPlayerMP) player); if (mp.getDistanceSq(pos) < 64 * 64) { HFApi.npc.forceScriptOpen(player, npc.getAsEntity(), script); } } super.execute(npc); }
@Override public void run() { Entity theEntity = thePlayer.world.getEntityByID(message.entityId); // DEBUG System.out.println("Entity = " + theEntity + " targeted with active item = " + thePlayer.getHeldItemMainhand()); // Need to ensure that hackers can't cause trick kills, so double check weapon type // and reach if (thePlayer.getHeldItemMainhand() == null) { return; } if (thePlayer.getHeldItemMainhand().getItem() instanceof IExtendedReach) { // DEBUG System.out.println("Active item has extended reach"); IExtendedReach theExtendedReachWeapon = (IExtendedReach) thePlayer.getHeldItemMainhand().getItem(); double distanceSq = thePlayer.getDistanceSq(theEntity); double reachSq = theExtendedReachWeapon.getReach() * theExtendedReachWeapon.getReach(); if (reachSq >= distanceSq) { // DEBUG System.out.println("The target is within range"); thePlayer.attackTargetEntityWithCurrentItem(theEntity); } } return; // no response in this case } });
public static void sendTileUpdate(TileHarvest tile, PenguinPacket packet) { if (tile.getWorld() instanceof WorldServer) { WorldServer server = (WorldServer)tile.getWorld(); BlockPos pos = tile.getPos(); for (EntityPlayer player : server.playerEntities) { EntityPlayerMP mp = ((EntityPlayerMP) player); if (mp.getDistanceSq(pos) < 64 * 64 && server.getPlayerChunkMap().isPlayerWatchingChunk(mp, pos.getX() >> 4, pos.getZ() >> 4)) { PacketHandler.sendToClient(packet, mp); } } } } }
public static void dispatchTEToNearbyPlayers(@Nonnull TileEntity tile) { if (tile.getWorld() instanceof WorldServer) { WorldServer ws = ((WorldServer) tile.getWorld()); SPacketUpdateTileEntity packet = tile.getUpdatePacket(); if (packet == null) return; for (EntityPlayer player : ws.playerEntities) { if (!(player instanceof EntityPlayerMP)) continue; EntityPlayerMP playerMP = ((EntityPlayerMP) player); if (playerMP.getDistanceSq(tile.getPos()) < 64 * 64 && ws.getPlayerChunkMap().isPlayerWatchingChunk(playerMP, tile.getPos().getX() >> 4, tile.getPos().getZ() >> 4)) { playerMP.connection.sendPacket(packet); } } } }
public static void markTileForUpdate(TileHarvest tile) { PacketRefresh packet = new PacketRefresh(tile.getPos(), tile.getUpdateTag()); if (tile.getWorld() instanceof WorldServer) { WorldServer server = (WorldServer)tile.getWorld(); BlockPos pos = tile.getPos(); for (EntityPlayer player : server.playerEntities) { EntityPlayerMP mp = ((EntityPlayerMP) player); if (mp.getDistanceSq(pos) < 64 * 64 && server.getPlayerChunkMap().isPlayerWatchingChunk(mp, pos.getX() >> 4, pos.getZ() >> 4)) { PacketHandler.sendToClient(packet, mp); } } } }
@SubscribeEvent(priority = EventPriority.LOWEST) public void onServerChat(ServerChatEvent event) { PlayerList players = event.getPlayer().server.getPlayerList(); int distance = (players.getViewDistance() * 16); distance *= distance; EntityPlayerMP sender = event.getPlayer(); ChatMessage message = new ChatMessage(sender, event.getComponent()); for (EntityPlayerMP player : players.getPlayers()) { if (Helpers.isHolding(player, Registry.itemModule, PlethoraModules.CHAT_ID) || Helpers.isHolding(player, Registry.itemModule, PlethoraModules.CHAT_CREATIVE_ID)) { if (player != sender && player.getEntityWorld() == sender.getEntityWorld() && player.getDistanceSq(sender) <= distance) { Plethora.network.sendTo(message, player); } } } }