Java 类org.bukkit.craftbukkit.chunkio.ChunkIOExecutor 实例源码

项目:SpigotSource    文件:PlayerChunk.java   
public void b(EntityPlayer entityplayer) {
    if (this.c.contains(entityplayer)) {
        // CraftBukkit start - If we haven't loaded yet don't load the chunk just so we can clean it up
        if (!this.done) {
            this.c.remove(entityplayer);

            if (this.c.isEmpty()) {
                ChunkIOExecutor.dropQueuedChunkLoad(this.playerChunkMap.getWorld(), this.location.x, this.location.z, this.loadedRunnable);
                this.playerChunkMap.b(this);
            }

            return;
        }
        // CraftBukkit end
        if (this.done) {
            entityplayer.playerConnection.sendPacket(new PacketPlayOutUnloadChunk(this.location.x, this.location.z));
        }

        this.c.remove(entityplayer);
        if (this.c.isEmpty()) {
            this.playerChunkMap.b(this);
        }

    }
}
项目:SpigotSource    文件:ChunkProviderServer.java   
@Nullable
public Chunk getOrLoadChunkAt(int i, int j) {
    Chunk chunk = this.getLoadedChunkAt(i, j);

    if (chunk == null) {
        // CraftBukkit start
        ChunkRegionLoader loader = null;

        if (this.chunkLoader instanceof ChunkRegionLoader) {
            loader = (ChunkRegionLoader) this.chunkLoader;
        }
        if (loader != null && loader.chunkExists(world, i, j)) {
            chunk = ChunkIOExecutor.syncChunkLoad(world, loader, this, i, j);
        }
        /* chunk = this.loadChunk(i, j);
        if (chunk != null) {
            this.chunks.put(ChunkCoordIntPair.a(i, j), chunk);
            chunk.addEntities();
            chunk.loadNearby(this, this.chunkGenerator);
        }
        */
        // CraftBukkit end
    }

    return chunk;
}
项目:CraftBukkit    文件:ChunkProviderServer.java   
public Chunk getChunkAt(int i, int j, Runnable runnable) {
    this.unloadQueue.remove(i, j);
    Chunk chunk = this.chunks.get(LongHash.toLong(i, j));
    ChunkRegionLoader loader = null;

    if (this.f instanceof ChunkRegionLoader) {
        loader = (ChunkRegionLoader) this.f;
    }

    // We can only use the queue for already generated chunks
    if (chunk == null && loader != null && loader.chunkExists(this.world, i, j)) {
        if (runnable != null) {
            ChunkIOExecutor.queueChunkLoad(this.world, loader, this, i, j, runnable);
            return null;
        } else {
            chunk = ChunkIOExecutor.syncChunkLoad(this.world, loader, this, i, j);
        }
    } else if (chunk == null) {
        chunk = this.originalGetChunkAt(i, j);
    }

    // If we didn't load the chunk async and have a callback run it now
    if (runnable != null) {
        runnable.run();
    }

    return chunk;
}
项目:Almura-Server    文件:PlayerList.java   
public String disconnect(EntityPlayer entityplayer) { // CraftBukkit - return string
    if (entityplayer.playerConnection.disconnected) return null; // CraftBukkit - exploitsies fix

    // CraftBukkit start - Quitting must be before we do final save of data, in case plugins need to modify it
    org.bukkit.craftbukkit.event.CraftEventFactory.handleInventoryCloseEvent(entityplayer);

    PlayerQuitEvent playerQuitEvent = new PlayerQuitEvent(this.cserver.getPlayer(entityplayer), "\u00A7e" + entityplayer.name + " left the game.");
    this.cserver.getPluginManager().callEvent(playerQuitEvent);
    entityplayer.getBukkitEntity().disconnect(playerQuitEvent.getQuitMessage());
    // CraftBukkit end

    this.b(entityplayer);
    WorldServer worldserver = entityplayer.p();

    if (entityplayer.vehicle != null && !(entityplayer.vehicle instanceof EntityPlayer)) { // CraftBukkit - Don't remove players
        worldserver.removeEntity(entityplayer.vehicle);
        // System.out.println("removing player mount"); // CraftBukkit - Removed debug message
    }

    worldserver.kill(entityplayer);
    worldserver.getPlayerChunkMap().removePlayer(entityplayer);
    this.players.remove(entityplayer);
    removePlayer(entityplayer); // Almura
    ChunkIOExecutor.adjustPoolSize(this.getPlayerCount()); // CraftBukkit

    // CraftBukkit start - .name -> .listName, replace sendAll with loop
    Packet201PlayerInfo packet = new Packet201PlayerInfo(entityplayer.listName, false, 9999);
    for (int i = 0; i < this.players.size(); ++i) {
        EntityPlayer entityplayer1 = (EntityPlayer) this.players.get(i);

        if (entityplayer1.getBukkitEntity().canSee(entityplayer.getBukkitEntity())) {
            entityplayer1.playerConnection.sendPacket(packet);
        }
    }
    // This removes the scoreboard (and player reference) for the specific player in the manager
    this.cserver.getScoreboardManager().removePlayer(entityplayer.getBukkitEntity());

    return playerQuitEvent.getQuitMessage();
    // CraftBukkit end
}
项目:Tweakkit-Server    文件:ChunkProviderServer.java   
public Chunk getChunkAt(int i, int j, Runnable runnable) {
    this.unloadQueue.remove(i, j);
    Chunk chunk = this.chunks.get(LongHash.toLong(i, j));
    ChunkRegionLoader loader = null;

    if (this.f instanceof ChunkRegionLoader) {
        loader = (ChunkRegionLoader) this.f;
    }

    // We can only use the queue for already generated chunks
    if (chunk == null && loader != null && loader.chunkExists(this.world, i, j)) {
        if (runnable != null) {
            ChunkIOExecutor.queueChunkLoad(this.world, loader, this, i, j, runnable);
            return null;
        } else {
            chunk = ChunkIOExecutor.syncChunkLoad(this.world, loader, this, i, j);
        }
    } else if (chunk == null) {
        chunk = this.originalGetChunkAt(i, j);
    }

    // If we didn't load the chunk async and have a callback run it now
    if (runnable != null) {
        runnable.run();
    }

    return chunk;
}
项目:SpigotSource    文件:ChunkProviderServer.java   
public Chunk getChunkAt(int i, int j, Runnable runnable, boolean generate) {
    Chunk chunk = getChunkIfLoaded(i, j);
    ChunkRegionLoader loader = null;

    if (this.chunkLoader instanceof ChunkRegionLoader) {
        loader = (ChunkRegionLoader) this.chunkLoader;

    }
    // We can only use the queue for already generated chunks
    if (chunk == null && loader != null && loader.chunkExists(world, i, j)) {
        if (runnable != null) {
            ChunkIOExecutor.queueChunkLoad(world, loader, this, i, j, runnable);
            return null;
        } else {
            chunk = ChunkIOExecutor.syncChunkLoad(world, loader, this, i, j);
        }
    } else if (chunk == null && generate) {
        chunk = originalGetChunkAt(i, j);
    }

    // If we didn't load the chunk async and have a callback run it now
    if (runnable != null) {
        runnable.run();
    }

    return chunk;
}
项目:Craft-city    文件:PlayerList.java   
public String disconnect(EntityPlayer entityplayer) { // CraftBukkit - return string
    if (entityplayer.playerConnection.disconnected) return null; // CraftBukkit - exploitsies fix

    // CraftBukkit start - Quitting must be before we do final save of data, in case plugins need to modify it
    PlayerQuitEvent playerQuitEvent = new PlayerQuitEvent(this.cserver.getPlayer(entityplayer), "\u00A7e" + entityplayer.name + " left the game.");
    this.cserver.getPluginManager().callEvent(playerQuitEvent);
    entityplayer.getBukkitEntity().disconnect(playerQuitEvent.getQuitMessage());
    // CraftBukkit end

    this.b(entityplayer);
    WorldServer worldserver = entityplayer.o();

    if (entityplayer.vehicle != null) {
        worldserver.kill(entityplayer.vehicle);
        System.out.println("removing player mount");
    }

    worldserver.kill(entityplayer);
    worldserver.getPlayerChunkMap().removePlayer(entityplayer);
    this.players.remove(entityplayer);
    ChunkIOExecutor.adjustPoolSize(this.getPlayerCount()); // CraftBukkit

    // CraftBukkit start - .name -> .listName, replace sendAll with loop
    Packet201PlayerInfo packet = new Packet201PlayerInfo(entityplayer.listName, false, 9999);
    for (int i = 0; i < this.players.size(); ++i) {
        EntityPlayer entityplayer1 = (EntityPlayer) this.players.get(i);

        if (entityplayer1.getBukkitEntity().canSee(entityplayer.getBukkitEntity())) {
            entityplayer1.playerConnection.sendPacket(packet);
        }
    }
    // This removes the scoreboard (and player reference) for the specific player in the manager
    this.cserver.getScoreboardManager().removePlayer(entityplayer.getBukkitEntity());

    return playerQuitEvent.getQuitMessage();
    // CraftBukkit end
}
项目:CraftBukkit    文件:PlayerList.java   
public String disconnect(EntityPlayer entityplayer) { // CraftBukkit - return string
    entityplayer.a(StatisticList.f);

    // CraftBukkit start - Quitting must be before we do final save of data, in case plugins need to modify it
    org.bukkit.craftbukkit.event.CraftEventFactory.handleInventoryCloseEvent(entityplayer);

    PlayerQuitEvent playerQuitEvent = new PlayerQuitEvent(this.cserver.getPlayer(entityplayer), "\u00A7e" + entityplayer.getName() + " left the game.");
    this.cserver.getPluginManager().callEvent(playerQuitEvent);
    entityplayer.getBukkitEntity().disconnect(playerQuitEvent.getQuitMessage());
    // CraftBukkit end

    this.b(entityplayer);
    WorldServer worldserver = entityplayer.r();

    if (entityplayer.vehicle != null && !(entityplayer.vehicle instanceof EntityPlayer)) { // CraftBukkit - Don't remove players
        worldserver.removeEntity(entityplayer.vehicle);
        g.debug("removing player mount");
    }

    worldserver.kill(entityplayer);
    worldserver.getPlayerChunkMap().removePlayer(entityplayer);
    this.players.remove(entityplayer);
    this.n.remove(entityplayer.getUniqueID());
    ChunkIOExecutor.adjustPoolSize(this.getPlayerCount()); // CraftBukkit

    // CraftBukkit start - .name -> .listName, replace sendAll with loop
    // this.sendAll(new PacketPlayOutPlayerInfo(entityplayer.getName(), false, 9999));
    PacketPlayOutPlayerInfo packet = new PacketPlayOutPlayerInfo(entityplayer.listName, false, 9999);
    for (int i = 0; i < this.players.size(); ++i) {
        EntityPlayer entityplayer1 = (EntityPlayer) this.players.get(i);

        if (entityplayer1.getBukkitEntity().canSee(entityplayer.getBukkitEntity())) {
            entityplayer1.playerConnection.sendPacket(packet);
        } else {
            entityplayer1.getBukkitEntity().removeDisconnectingPlayer(entityplayer.getBukkitEntity());
        }
    }
    // This removes the scoreboard (and player reference) for the specific player in the manager
    this.cserver.getScoreboardManager().removePlayer(entityplayer.getBukkitEntity());

    return playerQuitEvent.getQuitMessage();
    // CraftBukkit end
}
项目:Tweakkit-Server    文件:PlayerList.java   
public String disconnect(EntityPlayer entityplayer) { // CraftBukkit - return string
    entityplayer.a(StatisticList.f);

    // CraftBukkit start - Quitting must be before we do final save of data, in case plugins need to modify it
    org.bukkit.craftbukkit.event.CraftEventFactory.handleInventoryCloseEvent(entityplayer);

    PlayerQuitEvent playerQuitEvent = new PlayerQuitEvent(this.cserver.getPlayer(entityplayer), "\u00A7e" + entityplayer.getName() + " left the game.");
    this.cserver.getPluginManager().callEvent(playerQuitEvent);
    entityplayer.getBukkitEntity().disconnect(playerQuitEvent.getQuitMessage());
    // CraftBukkit end

    this.b(entityplayer);
    WorldServer worldserver = entityplayer.r();

    if (entityplayer.vehicle != null && !(entityplayer.vehicle instanceof EntityPlayer)) { // CraftBukkit - Don't remove players
        worldserver.removeEntity(entityplayer.vehicle);
        g.debug("removing player mount");
    }

    worldserver.kill(entityplayer);
    worldserver.getPlayerChunkMap().removePlayer(entityplayer);
    this.players.remove(entityplayer);
    this.n.remove(entityplayer.getUniqueID());
    ChunkIOExecutor.adjustPoolSize(this.getPlayerCount()); // CraftBukkit

    // CraftBukkit start - .name -> .listName, replace sendAll with loop
    // this.sendAll(new PacketPlayOutPlayerInfo(entityplayer.getName(), false, 9999));
    PacketPlayOutPlayerInfo packet = new PacketPlayOutPlayerInfo(entityplayer.listName, false, 9999);
    for (int i = 0; i < this.players.size(); ++i) {
        EntityPlayer entityplayer1 = (EntityPlayer) this.players.get(i);

        if (entityplayer1.getBukkitEntity().canSee(entityplayer.getBukkitEntity())) {
            entityplayer1.playerConnection.sendPacket(packet);
        } else {
            entityplayer1.getBukkitEntity().removeDisconnectingPlayer(entityplayer.getBukkitEntity());
        }
    }
    // This removes the scoreboard (and player reference) for the specific player in the manager
    this.cserver.getScoreboardManager().removePlayer(entityplayer.getBukkitEntity());

    return playerQuitEvent.getQuitMessage();
    // CraftBukkit end
}
项目:SpigotSource    文件:PlayerList.java   
public void onPlayerJoin(EntityPlayer entityplayer, String joinMessage) { // CraftBukkit added param
    this.players.add(entityplayer);
    this.playersByName.put(entityplayer.getName(), entityplayer); // Spigot
    this.j.put(entityplayer.getUniqueID(), entityplayer);
    // this.sendAll(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, new EntityPlayer[] { entityplayer})); // CraftBukkit - replaced with loop below
    WorldServer worldserver = this.server.getWorldServer(entityplayer.dimension);

    // CraftBukkit start
    PlayerJoinEvent playerJoinEvent = new PlayerJoinEvent(cserver.getPlayer(entityplayer), joinMessage);
    cserver.getPluginManager().callEvent(playerJoinEvent);

    joinMessage = playerJoinEvent.getJoinMessage();

    if (joinMessage != null && joinMessage.length() > 0) {
        for (IChatBaseComponent line : org.bukkit.craftbukkit.util.CraftChatMessage.fromString(joinMessage)) {
            server.getPlayerList().sendAll(new PacketPlayOutChat(line));
        }
    }

    ChunkIOExecutor.adjustPoolSize(getPlayerCount());
    // CraftBukkit end

    // CraftBukkit start - sendAll above replaced with this loop
    PacketPlayOutPlayerInfo packet = new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, entityplayer);

    for (int i = 0; i < this.players.size(); ++i) {
        EntityPlayer entityplayer1 = (EntityPlayer) this.players.get(i);

        if (entityplayer1.getBukkitEntity().canSee(entityplayer.getBukkitEntity())) {
            entityplayer1.playerConnection.sendPacket(packet);
        }

        if (!entityplayer.getBukkitEntity().canSee(entityplayer1.getBukkitEntity())) {
            continue;
        }

        entityplayer.playerConnection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, new EntityPlayer[] { entityplayer1}));
    }
    // CraftBukkit end

    // CraftBukkit start - Only add if the player wasn't moved in the event
    if (entityplayer.world == worldserver && !worldserver.players.contains(entityplayer)) {
        worldserver.addEntity(entityplayer);
        this.a(entityplayer, (WorldServer) null);
    }
    // CraftBukkit end
}
项目:SpigotSource    文件:PlayerList.java   
public String disconnect(EntityPlayer entityplayer) { // CraftBukkit - return string
    WorldServer worldserver = entityplayer.x();

    entityplayer.b(StatisticList.f);

    // CraftBukkit start - Quitting must be before we do final save of data, in case plugins need to modify it
    org.bukkit.craftbukkit.event.CraftEventFactory.handleInventoryCloseEvent(entityplayer);

    PlayerQuitEvent playerQuitEvent = new PlayerQuitEvent(cserver.getPlayer(entityplayer), "\u00A7e" + entityplayer.getName() + " left the game.");
    cserver.getPluginManager().callEvent(playerQuitEvent);
    entityplayer.getBukkitEntity().disconnect(playerQuitEvent.getQuitMessage());
    // CraftBukkit end

    this.savePlayerFile(entityplayer);
    if (entityplayer.isPassenger()) {
        Entity entity = entityplayer.getVehicle();

        if (entity.b(EntityPlayer.class).size() == 1) {
            PlayerList.f.debug("Removing player mount");
            entityplayer.stopRiding();
            worldserver.removeEntity(entity);
            Iterator iterator = entity.bw().iterator();

            while (iterator.hasNext()) {
                Entity entity1 = (Entity) iterator.next();

                worldserver.removeEntity(entity1);
            }

            worldserver.getChunkAt(entityplayer.ab, entityplayer.ad).e();
        }
    }

    worldserver.kill(entityplayer);
    worldserver.getPlayerChunkMap().removePlayer(entityplayer);
    this.players.remove(entityplayer);
    this.playersByName.remove(entityplayer.getName()); // Spigot
    UUID uuid = entityplayer.getUniqueID();
    EntityPlayer entityplayer1 = (EntityPlayer) this.j.get(uuid);

    if (entityplayer1 == entityplayer) {
        this.j.remove(uuid);
        this.o.remove(uuid);
    }

    // CraftBukkit start
    //  this.sendAll(new PacketPlayOutPlayerInfo(EnumPlayerInfoAction.REMOVE_PLAYER, new EntityPlayer[] { entityplayer}));
    PacketPlayOutPlayerInfo packet = new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.REMOVE_PLAYER, entityplayer);
    for (int i = 0; i < players.size(); i++) {
        EntityPlayer entityplayer2 = (EntityPlayer) this.players.get(i);

        if (entityplayer2.getBukkitEntity().canSee(entityplayer.getBukkitEntity())) {
            entityplayer2.playerConnection.sendPacket(packet);
        } else {
            entityplayer2.getBukkitEntity().removeDisconnectingPlayer(entityplayer.getBukkitEntity());
        }
    }
    // This removes the scoreboard (and player reference) for the specific player in the manager
    cserver.getScoreboardManager().removePlayer(entityplayer.getBukkitEntity());
    // CraftBukkit end

    ChunkIOExecutor.adjustPoolSize(this.getPlayerCount()); // CraftBukkit

    return playerQuitEvent.getQuitMessage(); // CraftBukkit
}