@Override public List<? extends com.sk89q.worldedit.world.World> getWorlds() { WorldServer[] worlds = DimensionManager.getWorlds(); List<com.sk89q.worldedit.world.World> ret = new ArrayList<>(worlds.length); for (WorldServer world : worlds) { ret.add(new ForgeWorld(world)); } return ret; }
@Nullable @Override public World matchWorld(World world) { if (world instanceof ForgeWorld) { return world; } else { for (WorldServer ws : DimensionManager.getWorlds()) { if (ws.getWorldInfo().getWorldName().equals(world.getName())) { return new ForgeWorld(ws); } } return null; } }
@Override public void processPacket(EntityPlayer player) { Stream<?> allPlayers = Arrays.stream(DimensionManager.getWorlds()).map(worldServer -> worldServer.playerEntities).flatMap(Collection::stream); Stream<EntityPlayer> allPlayerEntities = allPlayers.filter(o -> o instanceof EntityPlayer).map(o -> (EntityPlayer) o); MainProxy.sendPacketToPlayer(PacketHandler.getPacket(PlayerList.class) .setStringList(allPlayerEntities.map(entityPlayer -> entityPlayer.getGameProfile().getName()).collect(Collectors.toList())), player); }
public static void sendToAllPlayers(ModernPacket packet) { if (!MainProxy.isServer()) { System.err.println("sendToAllPlayers called clientside !"); new Exception().printStackTrace(); return; } if (packet.isCompressable() || MainProxy.needsToBeCompressed(packet)) { for (World world : DimensionManager.getWorlds()) { for (Object playerObject : world.playerEntities) { EntityPlayer player = (EntityPlayer) playerObject; SimpleServiceLocator.serverBufferHandler.addPacketToCompressor(packet, player); } } } else { MainProxy.channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.ALL); MainProxy.channels.get(Side.SERVER).writeOutbound(packet); } }