mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-22 21:26:45 +01:00
Get chunks asynchronously
This commit is contained in:
parent
9e8a6c702d
commit
fe83ef0975
@ -10,14 +10,16 @@ repositories {
|
|||||||
mavenLocal()
|
mavenLocal()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
apply plugin: "com.github.johnrengelman.shadow"
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation project(':Core')
|
implementation project(':Core')
|
||||||
compile project(':Core')
|
compile project(':Core')
|
||||||
compile 'com.destroystokyo.paper:paper-api:1.14.3-R0.1-SNAPSHOT'
|
compile 'com.destroystokyo.paper:paper-api:1.14.4-R0.1-SNAPSHOT'
|
||||||
//implementation 'com.onarandombox.multiversecore:Multiverse-Core:3.0.0-SNAPSHOT'
|
//implementation 'com.onarandombox.multiversecore:Multiverse-Core:3.0.0-SNAPSHOT'
|
||||||
implementation 'org.spigotmc:spigot-api:1.14.3-R0.1-SNAPSHOT'
|
implementation 'org.spigotmc:spigot-api:1.14.4-R0.1-SNAPSHOT'
|
||||||
compile(group: 'com.sk89q.worldedit', name: 'worldedit-bukkit', version: '7.0.0')
|
compile(group: 'com.sk89q.worldedit', name: 'worldedit-bukkit', version: '7.0.0')
|
||||||
compile "io.papermc:paperlib:1.0.1"
|
compile "io.papermc:paperlib:1.0.2"
|
||||||
compile("net.milkbowl.vault:VaultAPI:1.7") {
|
compile("net.milkbowl.vault:VaultAPI:1.7") {
|
||||||
exclude module: 'bukkit'
|
exclude module: 'bukkit'
|
||||||
}
|
}
|
||||||
@ -47,7 +49,7 @@ shadowJar {
|
|||||||
include(dependency('com.squareup.okhttp3:okhttp:3.14.0'))
|
include(dependency('com.squareup.okhttp3:okhttp:3.14.0'))
|
||||||
include(dependency('com.squareup.okio:okio:2.2.2'))
|
include(dependency('com.squareup.okio:okio:2.2.2'))
|
||||||
include(dependency('org.jetbrains.kotlin:kotlin-stdlib:1.3.30'))
|
include(dependency('org.jetbrains.kotlin:kotlin-stdlib:1.3.30'))
|
||||||
include(dependency("io.papermc:paperlib:1.0.1"))
|
include(dependency("io.papermc:paperlib:1.0.2"))
|
||||||
}
|
}
|
||||||
relocate 'io.papermc.lib', 'com.github.intellectualsites.plotsquared.bukkit.paperlib'
|
relocate 'io.papermc.lib', 'com.github.intellectualsites.plotsquared.bukkit.paperlib'
|
||||||
// relocate('org.mcstats', 'com.plotsquared.stats')
|
// relocate('org.mcstats', 'com.plotsquared.stats')
|
||||||
|
@ -10,6 +10,7 @@ import com.github.intellectualsites.plotsquared.plot.util.block.BasicLocalBlockQ
|
|||||||
import com.sk89q.jnbt.CompoundTag;
|
import com.sk89q.jnbt.CompoundTag;
|
||||||
import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
||||||
import com.sk89q.worldedit.world.block.BaseBlock;
|
import com.sk89q.worldedit.world.block.BaseBlock;
|
||||||
|
import io.papermc.lib.PaperLib;
|
||||||
import lombok.NonNull;
|
import lombok.NonNull;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Chunk;
|
import org.bukkit.Chunk;
|
||||||
@ -20,6 +21,7 @@ import org.bukkit.block.Block;
|
|||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
|
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
import java.util.concurrent.ExecutionException;
|
||||||
|
|
||||||
public class BukkitLocalQueue extends BasicLocalBlockQueue {
|
public class BukkitLocalQueue extends BasicLocalBlockQueue {
|
||||||
|
|
||||||
@ -69,7 +71,8 @@ public class BukkitLocalQueue extends BasicLocalBlockQueue {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public final void setComponents(LocalChunk lc) {
|
@Override public final void setComponents(LocalChunk lc)
|
||||||
|
throws ExecutionException, InterruptedException {
|
||||||
setBaseBlocks(lc);
|
setBaseBlocks(lc);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -77,14 +80,17 @@ public class BukkitLocalQueue extends BasicLocalBlockQueue {
|
|||||||
return Bukkit.getWorld(getWorld());
|
return Bukkit.getWorld(getWorld());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Chunk getChunk(int x, int z) {
|
public Chunk getChunk(int x, int z) throws ExecutionException, InterruptedException {
|
||||||
return getBukkitWorld().getChunkAt(x, z);
|
return PaperLib.getChunkAtAsync(getBukkitWorld(), x, z).get();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setBaseBlocks(LocalChunk lc) {
|
public void setBaseBlocks(LocalChunk lc) throws ExecutionException, InterruptedException {
|
||||||
World worldObj = Bukkit.getWorld(getWorld());
|
World worldObj = Bukkit.getWorld(getWorld());
|
||||||
|
if (worldObj == null) {
|
||||||
|
throw new NullPointerException("World cannot be null.");
|
||||||
|
}
|
||||||
|
PaperLib.getChunkAtAsync(worldObj, lc.getX(), lc.getZ(), true).get();
|
||||||
Chunk chunk = worldObj.getChunkAt(lc.getX(), lc.getZ());
|
Chunk chunk = worldObj.getChunkAt(lc.getX(), lc.getZ());
|
||||||
chunk.load(true);
|
|
||||||
for (int layer = 0; layer < lc.baseblocks.length; layer++) {
|
for (int layer = 0; layer < lc.baseblocks.length; layer++) {
|
||||||
BaseBlock[] blocksLayer = lc.baseblocks[layer];
|
BaseBlock[] blocksLayer = lc.baseblocks[layer];
|
||||||
if (blocksLayer != null) {
|
if (blocksLayer != null) {
|
||||||
|
@ -1,19 +1,16 @@
|
|||||||
package com.github.intellectualsites.plotsquared.plot.util.block;
|
package com.github.intellectualsites.plotsquared.plot.util.block;
|
||||||
|
|
||||||
import com.github.intellectualsites.plotsquared.plot.object.LegacyPlotBlock;
|
|
||||||
import com.github.intellectualsites.plotsquared.plot.object.PlotBlock;
|
import com.github.intellectualsites.plotsquared.plot.object.PlotBlock;
|
||||||
import com.github.intellectualsites.plotsquared.plot.object.RunnableVal;
|
import com.github.intellectualsites.plotsquared.plot.object.RunnableVal;
|
||||||
import com.github.intellectualsites.plotsquared.plot.object.StringPlotBlock;
|
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.MainUtil;
|
import com.github.intellectualsites.plotsquared.plot.util.MainUtil;
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.MathMan;
|
import com.github.intellectualsites.plotsquared.plot.util.MathMan;
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.TaskManager;
|
import com.github.intellectualsites.plotsquared.plot.util.TaskManager;
|
||||||
import com.sk89q.worldedit.world.block.BaseBlock;
|
import com.sk89q.worldedit.world.block.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockTypes;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import com.sk89q.worldedit.world.registry.LegacyMapper;
|
|
||||||
import lombok.Getter;
|
|
||||||
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.ConcurrentLinkedDeque;
|
import java.util.concurrent.ConcurrentLinkedDeque;
|
||||||
|
import java.util.concurrent.ExecutionException;
|
||||||
|
|
||||||
public abstract class BasicLocalBlockQueue extends LocalBlockQueue {
|
public abstract class BasicLocalBlockQueue extends LocalBlockQueue {
|
||||||
|
|
||||||
@ -35,7 +32,8 @@ public abstract class BasicLocalBlockQueue extends LocalBlockQueue {
|
|||||||
|
|
||||||
@Override public abstract PlotBlock getBlock(int x, int y, int z);
|
@Override public abstract PlotBlock getBlock(int x, int y, int z);
|
||||||
|
|
||||||
public abstract void setComponents(LocalChunk lc);
|
public abstract void setComponents(LocalChunk lc)
|
||||||
|
throws ExecutionException, InterruptedException;
|
||||||
|
|
||||||
@Override public final String getWorld() {
|
@Override public final String getWorld() {
|
||||||
return world;
|
return world;
|
||||||
@ -62,10 +60,8 @@ public abstract class BasicLocalBlockQueue extends LocalBlockQueue {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final boolean execute(final LocalChunk lc) {
|
public final boolean execute(@NotNull LocalChunk lc)
|
||||||
if (lc == null) {
|
throws ExecutionException, InterruptedException {
|
||||||
return false;
|
|
||||||
}
|
|
||||||
this.setComponents(lc);
|
this.setComponents(lc);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -154,7 +150,6 @@ public abstract class BasicLocalBlockQueue extends LocalBlockQueue {
|
|||||||
TaskManager.IMP.sync(new RunnableVal<Object>() {
|
TaskManager.IMP.sync(new RunnableVal<Object>() {
|
||||||
@Override public void run(Object value) {
|
@Override public void run(Object value) {
|
||||||
while (next()) {
|
while (next()) {
|
||||||
;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user