mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-22 21:26:45 +01:00
Max plot members, keep if modified, added block data to SetBlockQueue, rgar debug commands
This commit is contained in:
parent
a2480c0458
commit
79564eed08
@ -8,7 +8,7 @@
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
<artifactId>PlotSquared</artifactId>
|
||||
<version>2.11.13</version>
|
||||
<version>2.11.14</version>
|
||||
<name>PlotSquared</name>
|
||||
<packaging>jar</packaging>
|
||||
<build>
|
||||
|
@ -415,10 +415,13 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
|
||||
|
||||
@Override
|
||||
public EconHandler getEconomyHandler() {
|
||||
BukkitEconHandler econ = new BukkitEconHandler();
|
||||
if (econ.init()) {
|
||||
return econ;
|
||||
try {
|
||||
BukkitEconHandler econ = new BukkitEconHandler();
|
||||
if (econ.init()) {
|
||||
return econ;
|
||||
}
|
||||
}
|
||||
catch (Throwable e) {};
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -832,6 +832,7 @@ public class PlotSquared {
|
||||
options.put("clear.on.ban", false);
|
||||
options.put("clear.fastmode", Settings.ENABLE_CLUSTERS);
|
||||
options.put("clear.auto.clear-interval-seconds", Settings.CLEAR_INTERVAL);
|
||||
options.put("clear.keep-if-modified", Settings.MIN_BLOCKS_CHANGED);
|
||||
|
||||
// Schematics
|
||||
options.put("schematics.save_path", Settings.SCHEMATIC_SAVE_PATH);
|
||||
@ -908,9 +909,10 @@ public class PlotSquared {
|
||||
Settings.FAST_CLEAR = config.getBoolean("clear.fastmode");
|
||||
Settings.AUTO_CLEAR_DAYS = config.getInt("clear.auto.days");
|
||||
Settings.AUTO_CLEAR_CHECK_DISK = config.getBoolean("clear.check-disk");
|
||||
Settings.DELETE_PLOTS_ON_BAN = config.getBoolean("clear.on.ban");
|
||||
Settings.AUTO_CLEAR = config.getBoolean("clear.auto.enabled");
|
||||
|
||||
Settings.CLEAR_INTERVAL = config.getInt("clear.auto.clear-interval-seconds");
|
||||
Settings.MIN_BLOCKS_CHANGED = config.getInt("clear.keep-if-modified");
|
||||
|
||||
// Schematics
|
||||
Settings.SCHEMATIC_SAVE_PATH = config.getString("schematics.save_path");
|
||||
|
@ -22,6 +22,7 @@ package com.intellectualcrafters.plot.commands;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import com.intellectualcrafters.plot.PlotSquared;
|
||||
import com.intellectualcrafters.plot.config.C;
|
||||
import com.intellectualcrafters.plot.database.DBFunc;
|
||||
import com.intellectualcrafters.plot.object.Location;
|
||||
@ -76,6 +77,10 @@ public class Add extends SubCommand {
|
||||
DBFunc.removeTrusted(loc.getWorld(), plot, uuid);
|
||||
}
|
||||
if (plot.denied.contains(uuid)) {
|
||||
if (plot.members.size() + plot.trusted.size() >= PlotSquared.getPlotWorld(plot.world).MAX_PLOT_MEMBERS) {
|
||||
MainUtil.sendMessage(plr, C.PLOT_MAX_MEMBERS);
|
||||
return false;
|
||||
}
|
||||
plot.denied.remove(uuid);
|
||||
DBFunc.removeDenied(loc.getWorld(), plot, uuid);
|
||||
}
|
||||
@ -86,6 +91,10 @@ public class Add extends SubCommand {
|
||||
MainUtil.sendMessage(plr, C.ALREADY_ADDED);
|
||||
return false;
|
||||
}
|
||||
if (plot.members.size() + plot.trusted.size() >= PlotSquared.getPlotWorld(plot.world).MAX_PLOT_MEMBERS) {
|
||||
MainUtil.sendMessage(plr, C.PLOT_MAX_MEMBERS);
|
||||
return false;
|
||||
}
|
||||
MainUtil.sendMessage(plr, C.MEMBER_ADDED);
|
||||
return true;
|
||||
}
|
||||
|
@ -34,11 +34,14 @@ import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
import com.intellectualcrafters.plot.PlotSquared;
|
||||
import com.intellectualcrafters.plot.generator.BukkitHybridUtils;
|
||||
import com.intellectualcrafters.plot.generator.HybridUtils;
|
||||
import com.intellectualcrafters.plot.object.ChunkLoc;
|
||||
import com.intellectualcrafters.plot.object.OfflinePlotPlayer;
|
||||
import com.intellectualcrafters.plot.object.Plot;
|
||||
import com.intellectualcrafters.plot.object.PlotPlayer;
|
||||
import com.intellectualcrafters.plot.util.BlockManager;
|
||||
import com.intellectualcrafters.plot.util.ChunkManager;
|
||||
import com.intellectualcrafters.plot.util.ExpireManager;
|
||||
import com.intellectualcrafters.plot.util.MainUtil;
|
||||
import com.intellectualcrafters.plot.util.bukkit.UUIDHandler;
|
||||
@ -63,6 +66,40 @@ public class DebugExec extends SubCommand {
|
||||
ExpireManager.task = -1;
|
||||
return MainUtil.sendMessage(player, "Cancelled task.");
|
||||
}
|
||||
case "start-rgar": {
|
||||
if (args.length != 2) {
|
||||
PlotSquared.log("&cInvalid syntax: /plot debugexec start-rgar <world>");
|
||||
return false;
|
||||
}
|
||||
boolean result;
|
||||
if (BukkitHybridUtils.regions != null) {
|
||||
result = ((BukkitHybridUtils)(HybridUtils.manager)).scheduleRoadUpdate(args[1], BukkitHybridUtils.regions);
|
||||
}
|
||||
else {
|
||||
result = HybridUtils.manager.scheduleRoadUpdate(args[1]);
|
||||
}
|
||||
if (!result) {
|
||||
PlotSquared.log("&cCannot schedule mass schematic update! (Is one already in progress?)");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
case "stop-rgar": {
|
||||
if (((BukkitHybridUtils)(HybridUtils.manager)).task == 0) {
|
||||
PlotSquared.log("&cTASK NOT RUNNING!");
|
||||
return false;
|
||||
}
|
||||
Bukkit.getScheduler().cancelTask(((BukkitHybridUtils)(HybridUtils.manager)).task);
|
||||
PlotSquared.log("&cCancelling task...");
|
||||
while (BukkitHybridUtils.chunks.size() > 0) {
|
||||
ChunkLoc chunk = BukkitHybridUtils.chunks.get(0);
|
||||
BukkitHybridUtils.chunks.remove(0);
|
||||
((BukkitHybridUtils)(HybridUtils.manager)).regenerateRoad(BukkitHybridUtils.world, chunk);
|
||||
ChunkManager.manager.unloadChunk(BukkitHybridUtils.world, chunk);
|
||||
}
|
||||
PlotSquared.log("&cCancelled!");
|
||||
return true;
|
||||
}
|
||||
case "start-expire": {
|
||||
if (ExpireManager.task == -1) {
|
||||
ExpireManager.runTask();
|
||||
|
@ -22,6 +22,7 @@ package com.intellectualcrafters.plot.commands;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import com.intellectualcrafters.plot.PlotSquared;
|
||||
import com.intellectualcrafters.plot.config.C;
|
||||
import com.intellectualcrafters.plot.database.DBFunc;
|
||||
import com.intellectualcrafters.plot.object.Location;
|
||||
@ -76,6 +77,10 @@ public class Trust extends SubCommand {
|
||||
DBFunc.removeMember(loc.getWorld(), plot, uuid);
|
||||
}
|
||||
if (plot.denied.contains(uuid)) {
|
||||
if (plot.members.size() + plot.trusted.size() >= PlotSquared.getPlotWorld(plot.world).MAX_PLOT_MEMBERS) {
|
||||
MainUtil.sendMessage(plr, C.PLOT_MAX_MEMBERS);
|
||||
return false;
|
||||
}
|
||||
plot.denied.remove(uuid);
|
||||
DBFunc.removeDenied(loc.getWorld(), plot, uuid);
|
||||
}
|
||||
@ -86,6 +91,10 @@ public class Trust extends SubCommand {
|
||||
MainUtil.sendMessage(plr, C.ALREADY_ADDED);
|
||||
return false;
|
||||
}
|
||||
if (plot.members.size() + plot.trusted.size() >= PlotSquared.getPlotWorld(plot.world).MAX_PLOT_MEMBERS) {
|
||||
MainUtil.sendMessage(plr, C.PLOT_MAX_MEMBERS);
|
||||
return false;
|
||||
}
|
||||
MainUtil.sendMessage(plr, C.TRUSTED_ADDED);
|
||||
return true;
|
||||
}
|
||||
|
@ -450,6 +450,7 @@ public enum C {
|
||||
MEMBER_ADDED("$4That user can now build while the plot owner is online", "Member"),
|
||||
MEMBER_REMOVED("$1You successfully removed a user from the plot", "Member"),
|
||||
MEMBER_WAS_NOT_ADDED("$2That player was not added as a user on this plot", "Member"),
|
||||
PLOT_MAX_MEMBERS("$2You are not allowed to add any more players to this plot", "Member"),
|
||||
/*
|
||||
* Set Owner
|
||||
*/
|
||||
|
@ -167,7 +167,7 @@ public class BukkitHybridUtils extends HybridUtils {
|
||||
}
|
||||
|
||||
private static boolean UPDATE = false;
|
||||
private int task;
|
||||
public int task;
|
||||
private long last;
|
||||
|
||||
@Override
|
||||
@ -180,12 +180,23 @@ public class BukkitHybridUtils extends HybridUtils {
|
||||
return scheduleRoadUpdate(world, regions);
|
||||
}
|
||||
|
||||
public boolean scheduleRoadUpdate(final String world, final List<ChunkLoc> regions) {
|
||||
final List<ChunkLoc> chunks = new ArrayList<ChunkLoc>();
|
||||
public static List<ChunkLoc> regions;
|
||||
public static List<ChunkLoc> chunks = new ArrayList<>();
|
||||
public static String world;
|
||||
|
||||
public boolean scheduleRoadUpdate(final String world, final List<ChunkLoc> rgs) {
|
||||
BukkitHybridUtils.regions = rgs;
|
||||
BukkitHybridUtils.world = world;
|
||||
chunks = new ArrayList<ChunkLoc>();
|
||||
final Plugin plugin = BukkitMain.THIS;
|
||||
final MutableInt count = new MutableInt(0);
|
||||
this.task = Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
count.increment();
|
||||
if (count.intValue() % 20 == 0) {
|
||||
PlotSquared.log("PROGRESS: " + ((100 * (2048 - chunks.size())) / 1024) + "%");
|
||||
}
|
||||
if (regions.size() == 0 && chunks.size() == 0) {
|
||||
BukkitHybridUtils.UPDATE = false;
|
||||
PlotSquared.log(C.PREFIX.s() + "Finished road conversion");
|
||||
@ -205,7 +216,7 @@ public class BukkitHybridUtils extends HybridUtils {
|
||||
}
|
||||
if (chunks.size() > 0) {
|
||||
long diff = System.currentTimeMillis() + 25;
|
||||
if (System.currentTimeMillis() - last > 1000 && last != 0) {
|
||||
if (System.currentTimeMillis() - last > 1200 && last != 0) {
|
||||
last = 0;
|
||||
PlotSquared.log(C.PREFIX.s() + "Detected low TPS. Rescheduling in 30s");
|
||||
while (chunks.size() > 0) {
|
||||
@ -220,10 +231,10 @@ public class BukkitHybridUtils extends HybridUtils {
|
||||
public void run() {
|
||||
scheduleRoadUpdate(world, regions);
|
||||
}
|
||||
}, 600);
|
||||
}, 2400);
|
||||
return;
|
||||
}
|
||||
if (System.currentTimeMillis() - last < 50) {
|
||||
if (System.currentTimeMillis() - last < 1000) {
|
||||
while (System.currentTimeMillis() < diff && chunks.size() > 0) {
|
||||
ChunkLoc chunk = chunks.get(0);
|
||||
chunks.remove(0);
|
||||
@ -249,7 +260,7 @@ public class BukkitHybridUtils extends HybridUtils {
|
||||
}
|
||||
}
|
||||
}
|
||||
}, 1, 1);
|
||||
}, 20, 20);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -1459,10 +1459,10 @@ public class PlayerEvents extends com.intellectualcrafters.plot.listeners.PlotLi
|
||||
e.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
} else if (aPlr && FlagManager.isBooleanFlag(plot, "pvp", false)) {
|
||||
} else if (aPlr && FlagManager.isPlotFlagTrue(plot, "pvp")) {
|
||||
return;
|
||||
}
|
||||
if (!aPlr && FlagManager.isBooleanFlag(plot, "pve", false)) {
|
||||
if (!aPlr && FlagManager.isPlotFlagTrue(plot, "pve")) {
|
||||
return;
|
||||
}
|
||||
assert plot != null;
|
||||
|
@ -59,6 +59,7 @@ public abstract class PlotWorld {
|
||||
public final static boolean SPAWN_CUSTOM_DEFAULT = true;
|
||||
public final static boolean SPAWN_BREEDING_DEFAULT = false;
|
||||
public final static boolean WORLD_BORDER_DEFAULT = false;
|
||||
public final static int MAX_PLOT_MEMBERS_DEFAULT = 128;
|
||||
// are plot clusters enabled
|
||||
// require claim in cluster
|
||||
// TODO make this configurable
|
||||
@ -68,6 +69,7 @@ public abstract class PlotWorld {
|
||||
BLOCKS = new int[] { 1, 2, 3, 4, 5, 7, 14, 15, 16, 17, 19, 21, 22, 23, 24, 25, 35, 41, 42, 43, 45, 47, 48, 49, 52, 56, 57, 58, 61, 62, 73, 74, 80, 82, 84, 86, 87, 88, 91, 97, 98, 99, 100, 103, 110, 112, 120, 121, 123, 124, 125, 129, 133, 153, 155, 159, 162, 165, 166, 168, 170, 172, 173, 174, 179, 181 };
|
||||
}
|
||||
public final String worldname;
|
||||
public int MAX_PLOT_MEMBERS;
|
||||
public boolean AUTO_MERGE;
|
||||
public boolean ALLOW_SIGNS;
|
||||
public boolean MOB_SPAWNING;
|
||||
@ -134,6 +136,7 @@ public abstract class PlotWorld {
|
||||
}
|
||||
this.MOB_SPAWNING = config.getBoolean("natural_mob_spawning");
|
||||
this.AUTO_MERGE = config.getBoolean("plot.auto_merge");
|
||||
this.MAX_PLOT_MEMBERS = config.getInt("limits.max-members");
|
||||
this.ALLOW_SIGNS = config.getBoolean("plot.create_signs");
|
||||
this.PLOT_BIOME = (String) Configuration.BIOME.parseString(config.getString("plot.biome"));
|
||||
this.SCHEMATIC_ON_CLAIM = config.getBoolean("schematic.on_claim");
|
||||
@ -223,7 +226,7 @@ public abstract class PlotWorld {
|
||||
options.put("event.spawn.custom", PlotWorld.SPAWN_CUSTOM_DEFAULT);
|
||||
options.put("event.spawn.breeding", PlotWorld.SPAWN_BREEDING_DEFAULT);
|
||||
options.put("world.border", PlotWorld.WORLD_BORDER_DEFAULT);
|
||||
|
||||
options.put("limits.max-members", PlotWorld.MAX_PLOT_MEMBERS_DEFAULT);
|
||||
options.put("home.default", "side");
|
||||
options.put("home.allow-nonmembers", false);
|
||||
|
||||
|
@ -18,12 +18,16 @@ import com.intellectualcrafters.plot.config.Settings;
|
||||
import com.intellectualcrafters.plot.database.DBFunc;
|
||||
import com.intellectualcrafters.plot.flag.Flag;
|
||||
import com.intellectualcrafters.plot.flag.FlagManager;
|
||||
import com.intellectualcrafters.plot.generator.ClassicPlotManager;
|
||||
import com.intellectualcrafters.plot.generator.HybridPlotManager;
|
||||
import com.intellectualcrafters.plot.generator.HybridUtils;
|
||||
import com.intellectualcrafters.plot.object.OfflinePlotPlayer;
|
||||
import com.intellectualcrafters.plot.object.Plot;
|
||||
import com.intellectualcrafters.plot.object.PlotHandler;
|
||||
import com.intellectualcrafters.plot.object.PlotManager;
|
||||
import com.intellectualcrafters.plot.object.PlotPlayer;
|
||||
import com.intellectualcrafters.plot.object.PlotWorld;
|
||||
import com.intellectualcrafters.plot.object.RunnableVal;
|
||||
import com.intellectualcrafters.plot.util.bukkit.UUIDHandler;
|
||||
|
||||
public class ExpireManager {
|
||||
@ -47,35 +51,6 @@ public class ExpireManager {
|
||||
final long now = System.currentTimeMillis();
|
||||
if (now > getTimeStamp(world)) {
|
||||
timestamp.put(world, now + 86400000l);
|
||||
|
||||
|
||||
// TaskManager.index.increment();
|
||||
// final ArrayList<Plot> plots = new ArrayList<>(PlotSquared.getPlots(world).values());
|
||||
// int value = TaskManager.index.intValue();
|
||||
// int id = TaskManager.runTaskRepeat(new Runnable() {
|
||||
// @Override
|
||||
// public void run() {
|
||||
// long start = System.currentTimeMillis();
|
||||
// while (System.currentTimeMillis() - start < 15) {
|
||||
// Plot plot = plots.remove(0);
|
||||
// final Flag keepFlag = FlagManager.getPlotFlag(plot, "keep");
|
||||
// if (keepFlag != null && (Boolean) keepFlag.getValue()) {
|
||||
// continue;
|
||||
// }
|
||||
//
|
||||
//
|
||||
// final HashMap<Plot, Long> toRemove = new HashMap<>();
|
||||
// final HashMap<UUID, Long> remove = new HashMap<>();
|
||||
// final Set<UUID> keep = new HashSet<>();
|
||||
// Iterator<Plot> iter = plots.iterator();
|
||||
// }
|
||||
// }
|
||||
// }, 1);
|
||||
//
|
||||
// TaskManager.tasks.put(value, id);
|
||||
|
||||
|
||||
|
||||
TaskManager.runTaskAsync(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
@ -147,18 +122,39 @@ public class ExpireManager {
|
||||
MainUtil.unlinkPlot(plot);
|
||||
}
|
||||
final PlotWorld plotworld = PlotSquared.getPlotWorld(world);
|
||||
manager.clearPlot(plotworld, plot, false, null);
|
||||
MainUtil.removeSign(plot);
|
||||
DBFunc.delete(world, plot);
|
||||
PlotSquared.removePlot(world, plot.id, false);
|
||||
expiredPlots.get(world).remove(plot);
|
||||
PlotSquared.log("&cDeleted expired plot: " + plot.id);
|
||||
PlotSquared.log("&3 - World: " + plot.world);
|
||||
if (plot.hasOwner()) {
|
||||
PlotSquared.log("&3 - Owner: " + UUIDHandler.getName(plot.owner));
|
||||
} else {
|
||||
PlotSquared.log("&3 - Owner: Unowned");
|
||||
RunnableVal run = new RunnableVal() {
|
||||
@Override
|
||||
public void run() {
|
||||
int changed = (int) this.value;
|
||||
if (changed >= Settings.MIN_BLOCKS_CHANGED) {
|
||||
PlotSquared.log("&aKeep flag added to: " + plot.id + (changed != -1 ? " (changed " + value + ")" : ""));
|
||||
FlagManager.addPlotFlag(plot, new Flag(FlagManager.getFlag("keep"), true));
|
||||
expiredPlots.get(world).remove(plot);
|
||||
return;
|
||||
}
|
||||
manager.clearPlot(plotworld, plot, false, null);
|
||||
MainUtil.removeSign(plot);
|
||||
DBFunc.delete(world, plot);
|
||||
PlotSquared.removePlot(world, plot.id, false);
|
||||
expiredPlots.get(world).remove(plot);
|
||||
PlotSquared.log("&cDeleted expired plot: " + plot.id + (changed != -1 ? " (changed " + value + ")" : ""));
|
||||
PlotSquared.log("&3 - World: " + plot.world);
|
||||
if (plot.hasOwner()) {
|
||||
PlotSquared.log("&3 - Owner: " + UUIDHandler.getName(plot.owner));
|
||||
} else {
|
||||
PlotSquared.log("&3 - Owner: Unowned");
|
||||
}
|
||||
}
|
||||
};
|
||||
if (Settings.MIN_BLOCKS_CHANGED > 0 && manager instanceof ClassicPlotManager) {
|
||||
HybridUtils.manager.checkModified(plot, run);
|
||||
}
|
||||
else {
|
||||
run.value = -1;
|
||||
run.run();
|
||||
}
|
||||
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -773,7 +773,7 @@ public class MainUtil {
|
||||
final Runnable run = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
MainUtil.setBiome(world, plot, "FOREST");
|
||||
// MainUtil.setBiome(world, plot, "FOREST");
|
||||
runners.remove(plot);
|
||||
TaskManager.runTask(whenDone);
|
||||
}
|
||||
|
@ -159,6 +159,29 @@ public class SetBlockQueue {
|
||||
private static int lastInt = 0;
|
||||
private static PlotBlock lastBlock = new PlotBlock((short) 0, (byte) 0);
|
||||
|
||||
public static void setData(final String world, int x, final int y, int z, final byte data) {
|
||||
locked = true;
|
||||
if (!running) {
|
||||
init();
|
||||
}
|
||||
int X = x >> 4;
|
||||
int Z = z >> 4;
|
||||
x -= X << 4;
|
||||
z -= Z << 4;
|
||||
ChunkWrapper wrap = new ChunkWrapper(world, X, Z);
|
||||
PlotBlock[][] result;
|
||||
result = blocks.get(wrap);
|
||||
if (!blocks.containsKey(wrap)) {
|
||||
result = new PlotBlock[16][];
|
||||
blocks.put(wrap, result);
|
||||
}
|
||||
if (result[y >> 4] == null) {
|
||||
result[y >> 4] = new PlotBlock[4096];
|
||||
}
|
||||
result[y >> 4][((y & 0xF) << 8) | (z << 4) | x] = new PlotBlock((short) -1, data);
|
||||
locked = false;
|
||||
}
|
||||
|
||||
public static void setBlock(final String world, int x, final int y, int z, final int id) {
|
||||
locked = true;
|
||||
if (!running) {
|
||||
|
@ -26,6 +26,7 @@ import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
|
||||
import org.bukkit.Chunk;
|
||||
import org.bukkit.block.Block;
|
||||
|
||||
import com.intellectualcrafters.plot.object.ChunkLoc;
|
||||
import com.intellectualcrafters.plot.util.MainUtil;
|
||||
@ -86,7 +87,10 @@ public class SetBlockFast extends BukkitSetBlockManager {
|
||||
*/
|
||||
@Override
|
||||
public void set(final org.bukkit.World world, final int x, final int y, final int z, final int blockId, final byte data) {
|
||||
|
||||
if (blockId == -1) {
|
||||
world.getBlockAt(x, y, z).setData(data, false);
|
||||
return;
|
||||
}
|
||||
int X = x >> 4;
|
||||
int Z = z >> 4;
|
||||
ChunkLoc loc = new ChunkLoc(X, Z);
|
||||
|
@ -22,8 +22,11 @@ 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.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import org.bukkit.Chunk;
|
||||
import org.bukkit.World;
|
||||
@ -71,9 +74,18 @@ public class SetBlockFast_1_8 extends BukkitSetBlockManager {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
// TODO Auto-generated method stub
|
||||
update(toUpdate.values());
|
||||
toUpdate = new HashMap<>();
|
||||
int count = 0;
|
||||
ArrayList<Chunk> chunks = new ArrayList<Chunk>();
|
||||
Iterator<Entry<ChunkLoc, Chunk>> i = toUpdate.entrySet().iterator();
|
||||
while (i.hasNext() && count < 1024) {
|
||||
chunks.add(i.next().getValue());
|
||||
i.remove();
|
||||
count++;
|
||||
}
|
||||
if (count == 0) {
|
||||
return;
|
||||
}
|
||||
update(chunks);
|
||||
}
|
||||
}, 20);
|
||||
}
|
||||
@ -93,7 +105,10 @@ public class SetBlockFast_1_8 extends BukkitSetBlockManager {
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
public void set(final World world, final int x, final int y, final int z, final int id, final byte data) {
|
||||
|
||||
if (id == -1) {
|
||||
world.getBlockAt(x, y, z).setData(data, false);
|
||||
return;
|
||||
}
|
||||
// Start blockstate workaround //
|
||||
switch (id) {
|
||||
case 54:
|
||||
|
@ -12,6 +12,10 @@ public class SetBlockSlow extends BukkitSetBlockManager {
|
||||
@Override
|
||||
public void set(final World world, final int x, final int y, final int z, final int id, final byte data) {
|
||||
final Block block = world.getBlockAt(x, y, z);
|
||||
if (id == -1) {
|
||||
block.setData(data, false);
|
||||
return;
|
||||
}
|
||||
if (block.getData() == data) {
|
||||
if (block.getTypeId() != id) {
|
||||
block.setTypeId(id, false);
|
||||
|
Loading…
Reference in New Issue
Block a user