Search in sources :

Example 11 with ParallelChunk

use of thpmc.vanilla_source.api.world.parallel.ParallelChunk in project VanillaSource by TheHollowPlanetMC.

the class ImplParallelWorld method hasBlockData.

@Override
public boolean hasBlockData(int blockX, int blockY, int blockZ) {
    int chunkX = blockX >> 4;
    int chunkZ = blockZ >> 4;
    long coord = ChunkUtil.getCoordinateKey(chunkX, chunkZ);
    ParallelChunk parallelChunk = chunkMap.get(coord);
    if (parallelChunk == null)
        return false;
    return parallelChunk.hasBlockData(blockX, blockY, blockZ);
}
Also used : ParallelChunk(thpmc.vanilla_source.api.world.parallel.ParallelChunk)

Example 12 with ParallelChunk

use of thpmc.vanilla_source.api.world.parallel.ParallelChunk in project VanillaSource by TheHollowPlanetMC.

the class ImplParallelWorld method removeBlockData.

@Override
public void removeBlockData(int blockX, int blockY, int blockZ) {
    int chunkX = blockX >> 4;
    int chunkZ = blockZ >> 4;
    long coord = ChunkUtil.getCoordinateKey(chunkX, chunkZ);
    ParallelChunk parallelChunk = chunkMap.get(coord);
    if (parallelChunk == null)
        return;
    parallelChunk.removeBlockData(blockX, blockY, blockZ);
}
Also used : ParallelChunk(thpmc.vanilla_source.api.world.parallel.ParallelChunk)

Example 13 with ParallelChunk

use of thpmc.vanilla_source.api.world.parallel.ParallelChunk in project VanillaSource by TheHollowPlanetMC.

the class ImplParallelWorld method setType.

@Override
public void setType(int blockX, int blockY, int blockZ, Material material) {
    int chunkX = blockX >> 4;
    int chunkZ = blockZ >> 4;
    long coord = ChunkUtil.getCoordinateKey(chunkX, chunkZ);
    ParallelChunk parallelChunk = chunkMap.computeIfAbsent(coord, c -> new ImplParallelChunk(this, chunkX, chunkZ));
    parallelChunk.setType(blockX, blockY, blockZ, material);
}
Also used : ParallelChunk(thpmc.vanilla_source.api.world.parallel.ParallelChunk)

Example 14 with ParallelChunk

use of thpmc.vanilla_source.api.world.parallel.ParallelChunk in project VanillaSource by TheHollowPlanetMC.

the class ImplParallelWorld method hasBlockLight.

@Override
public boolean hasBlockLight(int blockX, int blockY, int blockZ) {
    int chunkX = blockX >> 4;
    int chunkZ = blockZ >> 4;
    long coord = ChunkUtil.getCoordinateKey(chunkX, chunkZ);
    ParallelChunk parallelChunk = chunkMap.get(coord);
    if (parallelChunk == null)
        return false;
    return parallelChunk.hasBlockLight(blockX, blockY, blockZ);
}
Also used : ParallelChunk(thpmc.vanilla_source.api.world.parallel.ParallelChunk)

Example 15 with ParallelChunk

use of thpmc.vanilla_source.api.world.parallel.ParallelChunk in project VanillaSource by TheHollowPlanetMC.

the class ImplEnginePlayer method setUniverse.

@Override
public synchronized void setUniverse(@Nullable ParallelUniverse parallelUniverse) {
    if (currentUniverse == parallelUniverse)
        return;
    if (currentUniverse != null) {
        ((ImplParallelUniverse) currentUniverse).getPlayers().remove(this);
        ParallelWorld currentWorld = currentUniverse.getWorld(player.getWorld().getName());
        this.currentUniverse = parallelUniverse;
        int range = Bukkit.getViewDistance();
        int chunkX = player.getLocation().getBlockX() >> 4;
        int chunkZ = player.getLocation().getBlockZ() >> 4;
        for (int x = -range; x < range; x++) {
            for (int z = -range; z < range; z++) {
                ParallelChunk chunk = currentWorld.getChunk(chunkX + x, chunkZ + z);
                if (chunk == null)
                    continue;
                ((ImplParallelChunk) chunk).sendClearPacket(player);
            }
        }
    }
    if (parallelUniverse != null) {
        ((ImplParallelUniverse) parallelUniverse).getPlayers().add(this);
        ParallelWorld nextWorld = parallelUniverse.getWorld(player.getWorld().getName());
        this.currentUniverse = parallelUniverse;
        int range = Bukkit.getViewDistance();
        int chunkX = player.getLocation().getBlockX() >> 4;
        int chunkZ = player.getLocation().getBlockZ() >> 4;
        for (int x = -range; x < range; x++) {
            for (int z = -range; z < range; z++) {
                ParallelChunk chunk = nextWorld.getChunk(chunkX + x, chunkZ + z);
                if (chunk == null)
                    continue;
                chunk.sendUpdate(player);
            }
        }
    }
    this.currentUniverse = parallelUniverse;
}
Also used : ParallelWorld(thpmc.vanilla_source.api.world.parallel.ParallelWorld) ParallelChunk(thpmc.vanilla_source.api.world.parallel.ParallelChunk)

Aggregations

ParallelChunk (thpmc.vanilla_source.api.world.parallel.ParallelChunk)26 ParallelWorld (thpmc.vanilla_source.api.world.parallel.ParallelWorld)10 ParallelUniverse (thpmc.vanilla_source.api.world.parallel.ParallelUniverse)6 SectionTypeArray (thpmc.vanilla_source.util.SectionTypeArray)6 Nullable (org.jetbrains.annotations.Nullable)5 SectionLevelArray (thpmc.vanilla_source.util.SectionLevelArray)5 World (org.bukkit.World)4 BlockData (org.bukkit.block.data.BlockData)3 java.util (java.util)2 List (java.util.List)2 Bukkit (org.bukkit.Bukkit)2 ChunkSnapshot (org.bukkit.ChunkSnapshot)2 CraftWorld (org.bukkit.craftbukkit.v1_15_R1.CraftWorld)2 CraftBlockData (org.bukkit.craftbukkit.v1_15_R1.block.data.CraftBlockData)2 CraftWorld (org.bukkit.craftbukkit.v1_16_R3.CraftWorld)2 Player (org.bukkit.entity.Player)2 BlockPosition3i (thpmc.vanilla_source.util.BlockPosition3i)2 net.minecraft.server.v1_15_R1 (net.minecraft.server.v1_15_R1)1 BlockPosition (net.minecraft.server.v1_15_R1.BlockPosition)1 ChunkCoordIntPair (net.minecraft.server.v1_15_R1.ChunkCoordIntPair)1