mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-22 21:26:45 +01:00
Updating chunk sending algorithm effects #210,#204,#167,#162
This commit is contained in:
parent
61569d5212
commit
348fb9cb1b
@ -74,7 +74,6 @@ public class Claim extends SubCommand {
|
||||
SchematicHandler.manager.paste(sch, plot2, 0, 0);
|
||||
}
|
||||
PlotSquared.getPlotManager(world).claimPlot(plotworld, plot);
|
||||
MainUtil.update(loc);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
@ -70,7 +70,6 @@ public class Copy extends SubCommand {
|
||||
@Override
|
||||
public void run() {
|
||||
MainUtil.sendMessage(plr, C.COPY_SUCCESS);
|
||||
MainUtil.update(plr.getLocation());
|
||||
}
|
||||
})) {
|
||||
return true;
|
||||
|
@ -45,7 +45,6 @@ public class CreateRoadSchematic extends SubCommand {
|
||||
return sendMessage(player, C.NOT_IN_PLOT_WORLD);
|
||||
}
|
||||
HybridUtils.manager.setupRoadSchematic(plot);
|
||||
MainUtil.update(loc);
|
||||
MainUtil.sendMessage(player, "&6Saved new road schematic");
|
||||
return true;
|
||||
}
|
||||
|
@ -43,11 +43,7 @@ public class DebugRoadRegen extends SubCommand {
|
||||
}
|
||||
final ChunkLoc chunk = new ChunkLoc(loc.getX() >> 4, loc.getZ() >> 4);
|
||||
final boolean result = HybridUtils.manager.regenerateRoad(world, chunk);
|
||||
if (result) {
|
||||
MainUtil.update(loc);
|
||||
}
|
||||
MainUtil.sendMessage(player, "&6Regenerating chunk: " + chunk.x + "," + chunk.z + "\n&6 - Result: " + (result == true ? "&aSuccess" : "&cFailed"));
|
||||
MainUtil.update(loc);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -193,7 +193,6 @@ public class Merge extends SubCommand {
|
||||
MainUtil.sendMessage(plr, C.SUCCESS_MERGE);
|
||||
MainUtil.mergePlots(world, plots, true);
|
||||
MainUtil.setSign(UUIDHandler.getName(plot.owner), plot);
|
||||
MainUtil.update(loc);
|
||||
}
|
||||
MainUtil.sendMessage(accepter, C.MERGE_ACCEPTED);
|
||||
}
|
||||
@ -223,7 +222,6 @@ public class Merge extends SubCommand {
|
||||
MainUtil.sendMessage(plr, C.SUCCESS_MERGE);
|
||||
MainUtil.mergePlots(world, plots, true);
|
||||
MainUtil.setSign(UUIDHandler.getName(plot.owner), plot);
|
||||
MainUtil.update(loc);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -86,7 +86,6 @@ public class Move extends SubCommand {
|
||||
@Override
|
||||
public void run() {
|
||||
MainUtil.sendMessage(plr, C.MOVE_SUCCESS);
|
||||
MainUtil.update(plr.getLocation());
|
||||
}
|
||||
})) {
|
||||
return true;
|
||||
|
@ -139,7 +139,6 @@ public class SchematicCmd extends SubCommand {
|
||||
if (start > blen) {
|
||||
SchematicHandler.manager.pasteStates(schematic, plot, 0, 0);
|
||||
sendMessage(plr, C.SCHEMATIC_PASTE_SUCCESS);
|
||||
MainUtil.update(plr.getLocation());
|
||||
SchematicCmd.this.running = false;
|
||||
PlotSquared.TASK.cancelTask(SchematicCmd.this.task);
|
||||
return;
|
||||
|
@ -246,7 +246,6 @@ public class Set extends SubCommand {
|
||||
}
|
||||
}
|
||||
manager.setComponent(plotworld, plot.id, component, blocks);
|
||||
MainUtil.update(loc);
|
||||
MainUtil.sendMessage(plr, C.GENERATING_COMPONENT);
|
||||
return true;
|
||||
}
|
||||
|
@ -125,7 +125,6 @@ public class Swap extends SubCommand {
|
||||
public void run() {
|
||||
if (last) {
|
||||
MainUtil.sendMessage(plr, C.SWAP_SUCCESS);
|
||||
MainUtil.update(plr.getLocation());
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -70,7 +70,6 @@ public class Unlink extends SubCommand {
|
||||
MainUtil.sendMessage(plr, "&cUnlink has been cancelled");
|
||||
return;
|
||||
}
|
||||
MainUtil.update(plr.getLocation());
|
||||
MainUtil.sendMessage(plr, C.UNLINK_SUCCESS);
|
||||
}
|
||||
};
|
||||
|
@ -1,6 +1,5 @@
|
||||
package com.intellectualcrafters.plot.generator;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Iterator;
|
||||
import java.util.Random;
|
||||
|
||||
@ -19,9 +18,7 @@ import com.intellectualcrafters.plot.object.PlotId;
|
||||
import com.intellectualcrafters.plot.object.PlotManager;
|
||||
import com.intellectualcrafters.plot.object.PlotWorld;
|
||||
import com.intellectualcrafters.plot.object.RegionWrapper;
|
||||
import com.intellectualcrafters.plot.util.BlockUpdateUtil;
|
||||
import com.intellectualcrafters.plot.util.ChunkManager;
|
||||
import com.intellectualcrafters.plot.util.MainUtil;
|
||||
import com.intellectualcrafters.plot.util.TaskManager;
|
||||
import com.intellectualcrafters.plot.util.bukkit.BukkitChunkManager;
|
||||
import com.intellectualcrafters.plot.util.bukkit.BukkitSetBlockManager;
|
||||
@ -132,7 +129,6 @@ public class AugmentedPopulator extends BlockPopulator {
|
||||
public void run() {
|
||||
populateBiome(world, x, z);
|
||||
chunk.unload(true, true);
|
||||
BukkitSetBlockManager.setBlockManager.update(Arrays.asList(new Chunk[] { chunk }));
|
||||
}
|
||||
}, 20);
|
||||
} else {
|
||||
@ -148,7 +144,6 @@ public class AugmentedPopulator extends BlockPopulator {
|
||||
chunk.load(true);
|
||||
populateBlocks(world, rand, X, Z, x, z, check);
|
||||
chunk.unload(true, true);
|
||||
BukkitSetBlockManager.setBlockManager.update(Arrays.asList(new Chunk[] { chunk }));
|
||||
}
|
||||
}, 40 + rand.nextInt(40));
|
||||
}
|
||||
@ -190,9 +185,6 @@ public class AugmentedPopulator extends BlockPopulator {
|
||||
}
|
||||
for (final BlockPopulator populator : this.generator.getDefaultPopulators(world)) {
|
||||
Chunk chunk = world.getChunkAt(X, Z);
|
||||
if (MainUtil.canSetFast) {
|
||||
((BukkitSetBlockManager) BlockUpdateUtil.setBlockManager).update(Arrays.asList(chunk));
|
||||
}
|
||||
populator.populate(world, this.r, chunk);
|
||||
}
|
||||
}
|
||||
|
@ -11,12 +11,10 @@ import org.bukkit.plugin.Plugin;
|
||||
|
||||
import com.intellectualcrafters.plot.BukkitMain;
|
||||
import com.intellectualcrafters.plot.PlotSquared;
|
||||
import com.intellectualcrafters.plot.api.PlotAPI;
|
||||
import com.intellectualcrafters.plot.config.C;
|
||||
import com.intellectualcrafters.plot.object.ChunkLoc;
|
||||
import com.intellectualcrafters.plot.object.PlotBlock;
|
||||
import com.intellectualcrafters.plot.util.ChunkManager;
|
||||
import com.intellectualcrafters.plot.util.bukkit.BukkitSetBlockManager;
|
||||
import com.intellectualcrafters.plot.util.bukkit.BukkitUtil;
|
||||
|
||||
public class BukkitHybridUtils extends HybridUtils {
|
||||
|
@ -24,10 +24,8 @@ import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Random;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Biome;
|
||||
|
||||
|
@ -2,12 +2,9 @@ package com.intellectualcrafters.plot.generator;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Random;
|
||||
|
||||
import org.bukkit.Chunk;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Biome;
|
||||
import org.bukkit.generator.BlockPopulator;
|
||||
|
||||
import com.intellectualcrafters.plot.PlotSquared;
|
||||
import com.intellectualcrafters.plot.object.PlotLoc;
|
||||
@ -17,7 +14,6 @@ import com.intellectualcrafters.plot.object.PseudoRandom;
|
||||
import com.intellectualcrafters.plot.object.RegionWrapper;
|
||||
import com.intellectualcrafters.plot.object.schematic.PlotItem;
|
||||
import com.intellectualcrafters.plot.util.BlockManager;
|
||||
import com.intellectualcrafters.plot.util.ChunkManager;
|
||||
|
||||
/**
|
||||
* @author Citymonstret
|
||||
|
@ -1,17 +1,13 @@
|
||||
package com.intellectualcrafters.plot.object;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Random;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Random;
|
||||
|
||||
import org.bukkit.Chunk;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.generator.BlockPopulator;
|
||||
|
||||
import com.intellectualcrafters.plot.PlotSquared;
|
||||
import com.intellectualcrafters.plot.object.schematic.PlotItem;
|
||||
import com.intellectualcrafters.plot.util.BlockManager;
|
||||
import com.intellectualcrafters.plot.util.ChunkManager;
|
||||
import com.intellectualcrafters.plot.util.bukkit.BukkitUtil;
|
||||
|
||||
|
@ -2,7 +2,6 @@ package com.intellectualcrafters.plot.util;
|
||||
|
||||
import com.intellectualcrafters.plot.object.Location;
|
||||
import com.intellectualcrafters.plot.object.PlotBlock;
|
||||
import com.intellectualcrafters.plot.object.PseudoRandom;
|
||||
import com.intellectualcrafters.plot.object.schematic.PlotItem;
|
||||
|
||||
public abstract class BlockManager {
|
||||
|
@ -1,11 +1,11 @@
|
||||
package com.intellectualcrafters.plot.util;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Collection;
|
||||
|
||||
import com.intellectualcrafters.plot.object.ChunkLoc;
|
||||
|
||||
public abstract class BlockUpdateUtil {
|
||||
public static BlockUpdateUtil setBlockManager = null;
|
||||
|
||||
public abstract void update(String worldname, List<ChunkLoc> chunkLocs);
|
||||
public abstract void update(String worldname, Collection<ChunkLoc> chunkLocs);
|
||||
}
|
||||
|
@ -1,7 +1,6 @@
|
||||
package com.intellectualcrafters.plot.util;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Random;
|
||||
@ -23,7 +22,6 @@ import com.intellectualcrafters.plot.object.PlotId;
|
||||
import com.intellectualcrafters.plot.object.PlotManager;
|
||||
import com.intellectualcrafters.plot.object.PlotPlayer;
|
||||
import com.intellectualcrafters.plot.object.PlotWorld;
|
||||
import com.intellectualcrafters.plot.util.bukkit.BukkitSetBlockManager;
|
||||
import com.intellectualcrafters.plot.util.bukkit.BukkitUtil;
|
||||
import com.intellectualcrafters.plot.util.bukkit.UUIDHandler;
|
||||
|
||||
@ -277,7 +275,6 @@ public class ClusterManager {
|
||||
@Override
|
||||
public void run() {
|
||||
if ((populator == null) || (plotworld.TYPE == 0)) {
|
||||
BukkitSetBlockManager.setBlockManager.update(Arrays.asList(new Chunk[] { chunk }));
|
||||
world.regenerateChunk(chunk.getX(), chunk.getZ());
|
||||
chunk.unload(true, true);
|
||||
} else {
|
||||
|
@ -29,7 +29,6 @@ import com.intellectualcrafters.plot.config.C;
|
||||
import com.intellectualcrafters.plot.config.Settings;
|
||||
import com.intellectualcrafters.plot.database.DBFunc;
|
||||
import com.intellectualcrafters.plot.object.BlockLoc;
|
||||
import com.intellectualcrafters.plot.object.ChunkLoc;
|
||||
import com.intellectualcrafters.plot.object.Location;
|
||||
import com.intellectualcrafters.plot.object.Plot;
|
||||
import com.intellectualcrafters.plot.object.PlotBlock;
|
||||
@ -171,20 +170,20 @@ public class MainUtil {
|
||||
}
|
||||
}
|
||||
|
||||
public static void update(final Location loc) {
|
||||
final String world = loc.getWorld();
|
||||
int ox = loc.getX() >> 4;
|
||||
int oz = loc.getZ() >> 4;
|
||||
final ArrayList<ChunkLoc> chunks = new ArrayList<>();
|
||||
final int distance = BukkitUtil.getViewDistance();
|
||||
for (int cx = -distance; cx <= distance; cx++) {
|
||||
for (int cz = -distance; cz <= distance; cz++) {
|
||||
final ChunkLoc chunk = new ChunkLoc(ox + cx, oz + cz);
|
||||
chunks.add(chunk);
|
||||
}
|
||||
}
|
||||
BlockUpdateUtil.setBlockManager.update(world, chunks);
|
||||
}
|
||||
// public static void update(final Location loc) {
|
||||
// final String world = loc.getWorld();
|
||||
// int ox = loc.getX() >> 4;
|
||||
// int oz = loc.getZ() >> 4;
|
||||
// final ArrayList<ChunkLoc> chunks = new ArrayList<>();
|
||||
// final int distance = BukkitUtil.getViewDistance();
|
||||
// for (int cx = -distance; cx <= distance; cx++) {
|
||||
// for (int cz = -distance; cz <= distance; cz++) {
|
||||
// final ChunkLoc chunk = new ChunkLoc(ox + cx, oz + cz);
|
||||
// chunks.add(chunk);
|
||||
// }
|
||||
// }
|
||||
// BlockUpdateUtil.setBlockManager.update(world, chunks);
|
||||
// }
|
||||
|
||||
public static void createWorld(final String world, final String generator) {
|
||||
}
|
||||
@ -418,7 +417,6 @@ public class MainUtil {
|
||||
}
|
||||
merge = false;
|
||||
}
|
||||
update(getPlotHome(world, plot));
|
||||
}
|
||||
|
||||
private static boolean ownsPlots(final String world, final ArrayList<PlotId> plots, final UUID uuid, final int dir) {
|
||||
@ -547,7 +545,6 @@ public class MainUtil {
|
||||
MainUtil.setBiome(world, plot, "FOREST");
|
||||
runners.remove(plot);
|
||||
TaskManager.runTask(whenDone);
|
||||
update(location);
|
||||
}
|
||||
};
|
||||
manager.clearPlot(plotworld, plot, isDelete, run);
|
||||
@ -611,7 +608,6 @@ public class MainUtil {
|
||||
final int bottomZ = getPlotBottomLoc(world, plot.id).getZ() + 1;
|
||||
final int topZ = getPlotTopLoc(world, plot.id).getZ();
|
||||
BukkitUtil.setBiome(world, bottomX, bottomZ, topX, topZ, biome);
|
||||
update(getPlotHome(world, plot));
|
||||
}
|
||||
|
||||
public static int getHeighestBlock(final String world, final int x, final int z) {
|
||||
|
@ -1,7 +1,7 @@
|
||||
package com.intellectualcrafters.plot.util.bukkit;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Collection;
|
||||
|
||||
import org.bukkit.Chunk;
|
||||
import org.bukkit.World;
|
||||
@ -14,10 +14,10 @@ public abstract class BukkitSetBlockManager extends BlockUpdateUtil {
|
||||
|
||||
public abstract void set(final org.bukkit.World world, final int x, final int y, final int z, final int blockId, final byte data);
|
||||
|
||||
public abstract void update(List<Chunk> list);
|
||||
public abstract void update(Collection<Chunk> list);
|
||||
|
||||
@Override
|
||||
public void update(final String worldname, final List<ChunkLoc> chunkLocs) {
|
||||
public void update(final String worldname, final Collection<ChunkLoc> chunkLocs) {
|
||||
final World world = BukkitUtil.getWorld(worldname);
|
||||
final ArrayList<Chunk> chunks = new ArrayList<Chunk>();
|
||||
for (final ChunkLoc loc : chunkLocs) {
|
||||
|
@ -1,6 +1,5 @@
|
||||
package com.intellectualcrafters.plot.util.bukkit;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
@ -95,17 +94,17 @@ public class BukkitUtil extends BlockManager {
|
||||
return world.getChunkAt(x, z);
|
||||
}
|
||||
|
||||
public static void update(final String world, final int x, final int z) {
|
||||
final ArrayList<Chunk> chunks = new ArrayList<>();
|
||||
final int distance = Bukkit.getViewDistance();
|
||||
for (int cx = -distance; cx < distance; cx++) {
|
||||
for (int cz = -distance; cz < distance; cz++) {
|
||||
final Chunk chunk = getChunkAt(world, (x >> 4) + cx, (z >> 4) + cz);
|
||||
chunks.add(chunk);
|
||||
}
|
||||
}
|
||||
BukkitSetBlockManager.setBlockManager.update(chunks);
|
||||
}
|
||||
// public static void update(final String world, final int x, final int z) {
|
||||
// final ArrayList<Chunk> chunks = new ArrayList<>();
|
||||
// final int distance = Bukkit.getViewDistance();
|
||||
// for (int cx = -distance; cx < distance; cx++) {
|
||||
// for (int cz = -distance; cz < distance; cz++) {
|
||||
// final Chunk chunk = getChunkAt(world, (x >> 4) + cx, (z >> 4) + cz);
|
||||
// chunks.add(chunk);
|
||||
// }
|
||||
// }
|
||||
// BukkitSetBlockManager.setBlockManager.update(chunks);
|
||||
// }
|
||||
|
||||
public static String getWorld(final Entity entity) {
|
||||
return entity.getWorld().getName();
|
||||
|
@ -3,6 +3,7 @@ package com.intellectualcrafters.plot.util.bukkit;
|
||||
import static com.intellectualcrafters.plot.util.ReflectionUtils.getRefClass;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
@ -53,7 +54,7 @@ public class SendChunk {
|
||||
ChunkCoordIntPairCon = classChunkCoordIntPair.getConstructor(int.class, int.class);
|
||||
}
|
||||
|
||||
public static void sendChunk(final List<Chunk> chunks) {
|
||||
public static void sendChunk(final Collection<Chunk> chunks) {
|
||||
int diffx, diffz;
|
||||
final int view = Bukkit.getServer().getViewDistance() << 4;
|
||||
for (final Chunk chunk : chunks) {
|
||||
|
@ -22,14 +22,16 @@ package com.intellectualcrafters.plot.util.bukkit;
|
||||
|
||||
import static com.intellectualcrafters.plot.util.ReflectionUtils.getRefClass;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
|
||||
import org.bukkit.Chunk;
|
||||
import org.bukkit.World;
|
||||
|
||||
import com.intellectualcrafters.plot.object.ChunkLoc;
|
||||
import com.intellectualcrafters.plot.util.MainUtil;
|
||||
import com.intellectualcrafters.plot.util.ReflectionUtils.RefClass;
|
||||
import com.intellectualcrafters.plot.util.ReflectionUtils.RefMethod;
|
||||
import com.intellectualcrafters.plot.util.TaskManager;
|
||||
|
||||
/**
|
||||
* SetBlockFast class<br> Used to do fast world editing
|
||||
@ -45,6 +47,8 @@ public class SetBlockFast extends BukkitSetBlockManager {
|
||||
private static RefMethod methodGetChunkAt;
|
||||
private static RefMethod methodA;
|
||||
private static RefMethod methodGetById;
|
||||
|
||||
public static HashMap<ChunkLoc, Chunk> toUpdate = new HashMap<>();
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
@ -56,6 +60,15 @@ public class SetBlockFast extends BukkitSetBlockManager {
|
||||
methodGetChunkAt = classWorld.getMethod("getChunkAt", int.class, int.class);
|
||||
methodA = classChunk.getMethod("a", int.class, int.class, int.class, classBlock, int.class);
|
||||
methodGetById = classBlock.getMethod("getById", int.class);
|
||||
TaskManager.runTaskRepeat(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
// TODO Auto-generated method stub
|
||||
update(toUpdate.values());
|
||||
toUpdate = new HashMap<>();
|
||||
}
|
||||
}, 20);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -83,14 +96,13 @@ public class SetBlockFast extends BukkitSetBlockManager {
|
||||
* @param chunks list of chunks to update
|
||||
*/
|
||||
@Override
|
||||
public void update(final List<Chunk> chunks) {
|
||||
public void update(final Collection<Chunk> chunks) {
|
||||
if (chunks.size() == 0) {
|
||||
return;
|
||||
}
|
||||
if (!MainUtil.canSendChunk) {
|
||||
final World world = chunks.get(0).getWorld();
|
||||
for (final Chunk chunk : chunks) {
|
||||
world.refreshChunk(chunk.getX(), chunk.getZ());
|
||||
chunk.unload();
|
||||
chunk.load(false);
|
||||
}
|
||||
return;
|
||||
|
@ -22,7 +22,8 @@ package com.intellectualcrafters.plot.util.bukkit;
|
||||
|
||||
import static com.intellectualcrafters.plot.util.ReflectionUtils.getRefClass;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
|
||||
import org.bukkit.Chunk;
|
||||
import org.bukkit.World;
|
||||
@ -33,6 +34,7 @@ import com.intellectualcrafters.plot.util.MainUtil;
|
||||
import com.intellectualcrafters.plot.util.ReflectionUtils.RefClass;
|
||||
import com.intellectualcrafters.plot.util.ReflectionUtils.RefConstructor;
|
||||
import com.intellectualcrafters.plot.util.ReflectionUtils.RefMethod;
|
||||
import com.intellectualcrafters.plot.util.TaskManager;
|
||||
|
||||
/**
|
||||
* SetBlockFast class<br> Used to do fast world editing
|
||||
@ -52,6 +54,8 @@ public class SetBlockFast_1_8 extends BukkitSetBlockManager {
|
||||
private static RefMethod methodGetByCombinedId;
|
||||
private static RefConstructor constructorBlockPosition;
|
||||
|
||||
public static HashMap<ChunkLoc, Chunk> toUpdate = new HashMap<>();
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
@ -63,6 +67,15 @@ public class SetBlockFast_1_8 extends BukkitSetBlockManager {
|
||||
methodGetHandle = classCraftWorld.getMethod("getHandle");
|
||||
methodGetChunkAt = classWorld.getMethod("getChunkAt", int.class, int.class);
|
||||
methodA = classChunk.getMethod("a", classBlockPosition, classIBlockData);
|
||||
TaskManager.runTaskRepeat(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
// TODO Auto-generated method stub
|
||||
update(toUpdate.values());
|
||||
toUpdate = new HashMap<>();
|
||||
}
|
||||
}, 20);
|
||||
}
|
||||
|
||||
private ChunkLoc lastLoc = null;
|
||||
@ -270,8 +283,12 @@ public class SetBlockFast_1_8 extends BukkitSetBlockManager {
|
||||
int Z = z >> 4;
|
||||
ChunkLoc loc = new ChunkLoc(X, Z);
|
||||
if (!loc.equals(lastLoc)) {
|
||||
world.loadChunk(X, Z, false);
|
||||
lastLoc = loc;
|
||||
Chunk chunk = toUpdate.get(loc);
|
||||
if (chunk == null) {
|
||||
chunk = world.getChunkAt(X, Z);
|
||||
toUpdate.put(loc, chunk);
|
||||
}
|
||||
chunk.load(false);
|
||||
}
|
||||
// check sign
|
||||
final Object w = methodGetHandle.of(world).call();
|
||||
@ -281,20 +298,14 @@ public class SetBlockFast_1_8 extends BukkitSetBlockManager {
|
||||
methodA.of(chunk).call(pos, combined);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update chunks
|
||||
*
|
||||
* @param chunks chunks to be updated
|
||||
*/
|
||||
@Override
|
||||
public void update(final List<Chunk> chunks) {
|
||||
public void update(final Collection<Chunk> chunks) {
|
||||
if (chunks.size() == 0) {
|
||||
return;
|
||||
}
|
||||
if (!MainUtil.canSendChunk) {
|
||||
final World world = chunks.get(0).getWorld();
|
||||
for (final Chunk chunk : chunks) {
|
||||
world.refreshChunk(chunk.getX(), chunk.getZ());
|
||||
chunk.unload();
|
||||
chunk.load(false);
|
||||
}
|
||||
return;
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.intellectualcrafters.plot.util.bukkit;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Collection;
|
||||
|
||||
import org.bukkit.Chunk;
|
||||
import org.bukkit.World;
|
||||
@ -24,7 +24,7 @@ public class SetBlockSlow extends BukkitSetBlockManager {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(final List<Chunk> chunks) {
|
||||
public void update(final Collection<Chunk> chunks) {
|
||||
// TODO Auto-generated method stub
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user