This commit is contained in:
boy0001 2015-08-01 02:12:53 +10:00
parent 9f89928120
commit 96dd736a6d
7 changed files with 93 additions and 126 deletions

View File

@ -332,7 +332,7 @@ public class SQLManager implements AbstractDB {
stmt.setString((i * 6) + 4, DBFunc.everyone.toString()); stmt.setString((i * 6) + 4, DBFunc.everyone.toString());
} }
stmt.setString((i * 6) + 5, plot.world); stmt.setString((i * 6) + 5, plot.world);
stmt.setTimestamp((i * 6) + 6, new Timestamp(System.currentTimeMillis())); stmt.setString((i * 6) + 6, System.currentTimeMillis() + "");
} }
@Override @Override

View File

@ -23,6 +23,7 @@ package com.intellectualcrafters.plot.object;
import java.util.Collection; import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.UUID; import java.util.UUID;
@ -146,6 +147,14 @@ public class Plot {
this.temp = false; this.temp = false;
} }
/**
* Get the players currently inside this plot
* @return
*/
public List<PlotPlayer> getPlayersInPlot() {
return MainUtil.getPlayersInPlot(this);
}
/** /**
* Check if the plot has a set owner * Check if the plot has a set owner
* *

View File

@ -106,7 +106,7 @@ public class MainUtil {
public static List<PlotPlayer> getPlayersInPlot(Plot plot) { public static List<PlotPlayer> getPlayersInPlot(Plot plot) {
ArrayList<PlotPlayer> players = new ArrayList<>(); ArrayList<PlotPlayer> players = new ArrayList<>();
for (PlotPlayer pp : UUIDHandler.getPlayers().values()) { for (PlotPlayer pp : UUIDHandler.getPlayers().values()) {
if (plot.equals(MainUtil.getPlot(pp.getLocation()))) { if (plot.equals(pp.getCurrentPlot())) {
players.add(pp); players.add(pp);
} }
} }

View File

@ -17,7 +17,10 @@ import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.object.PlotId; import com.intellectualcrafters.plot.object.PlotId;
import com.intellectualcrafters.plot.object.PlotPlayer; import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualcrafters.plot.object.PlotWorld; import com.intellectualcrafters.plot.object.PlotWorld;
import com.intellectualcrafters.plot.object.StaticStrings;
import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualcrafters.plot.util.StringMan;
import com.intellectualcrafters.plot.util.UUIDHandler;
import com.plotsquared.bukkit.util.BukkitUtil; import com.plotsquared.bukkit.util.BukkitUtil;
/** /**
@ -27,7 +30,7 @@ import com.plotsquared.bukkit.util.BukkitUtil;
*/ */
public class ChatListener implements Listener { public class ChatListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.LOWEST)
public void onChat(final AsyncPlayerChatEvent event) { public void onChat(final AsyncPlayerChatEvent event) {
final Player player = event.getPlayer(); final Player player = event.getPlayer();
final String world = player.getWorld().getName(); final String world = player.getWorld().getName();
@ -44,20 +47,21 @@ public class ChatListener implements Listener {
if (plot == null) { if (plot == null) {
return; return;
} }
event.setCancelled(true);
final String message = event.getMessage(); final String message = event.getMessage();
String format = C.PLOT_CHAT_FORMAT.s();
final String sender = event.getPlayer().getDisplayName(); final String sender = event.getPlayer().getDisplayName();
final PlotId id = plot.id; final PlotId id = plot.id;
final Set<Player> recipients = event.getRecipients(); String toSend = StringMan.replaceAll(C.PLOT_CHAT_FORMAT.s(), "%plot_id%", id.x + ";" + id.y, "%sender%", sender, "%msg%", message);
recipients.clear(); PS.debug("FORMAT: " + event.getFormat());
for (final Player p : Bukkit.getOnlinePlayers()) { PS.debug("MESSAGE: " + event.getMessage());
if (p.hasPermission("plots.admin.command.chat") || plot.equals(MainUtil.getPlot(BukkitUtil.getLocation(p)))) { for (PlotPlayer recipient : UUIDHandler.getPlayers().values()) {
recipients.add(p); if (plot.equals(recipient.getCurrentPlot())) {
recipient.sendMessage(toSend);
}
else if (recipient.hasPermission(StaticStrings.PERMISSION_COMMANDS_CHAT)) {
recipient.sendMessage(toSend);
} }
} }
format = format.replaceAll("%plot_id%", id.x + ";" + id.y).replaceAll("%sender%", sender).replaceAll("%msg%", message.replaceAll("([%]{1})", "%%"));
format = ChatColor.translateAlternateColorCodes('&', format);
event.setFormat(format);
} }
} }

View File

@ -57,6 +57,7 @@ import com.intellectualcrafters.plot.object.PlotLoc;
import com.intellectualcrafters.plot.object.PlotPlayer; import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualcrafters.plot.object.PlotWorld; import com.intellectualcrafters.plot.object.PlotWorld;
import com.intellectualcrafters.plot.object.RegionWrapper; import com.intellectualcrafters.plot.object.RegionWrapper;
import com.intellectualcrafters.plot.object.RunnableVal;
import com.intellectualcrafters.plot.util.ChunkManager; import com.intellectualcrafters.plot.util.ChunkManager;
import com.intellectualcrafters.plot.util.ClusterManager; import com.intellectualcrafters.plot.util.ClusterManager;
import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.MainUtil;
@ -194,112 +195,61 @@ public class BukkitChunkManager extends ChunkManager {
*/ */
@Override @Override
public boolean copyRegion(final Location pos1, final Location pos2, final Location newPos, final Runnable whenDone) { public boolean copyRegion(final Location pos1, final Location pos2, final Location newPos, final Runnable whenDone) {
TaskManager.index.incrementAndGet();
final int relX = newPos.getX() - pos1.getX(); final int relX = newPos.getX() - pos1.getX();
final int relZ = newPos.getZ() - pos1.getZ(); final int relZ = newPos.getZ() - pos1.getZ();
final int relCX = relX >> 4;
final int relCZ = relZ >> 4;
final RegionWrapper region = new RegionWrapper(pos1.getX(), pos2.getX(), pos1.getZ(), pos2.getZ()); final RegionWrapper region = new RegionWrapper(pos1.getX(), pos2.getX(), pos1.getZ(), pos2.getZ());
final World oldWorld = Bukkit.getWorld(pos1.getWorld()); final World oldWorld = Bukkit.getWorld(pos1.getWorld());
final World newWorld = Bukkit.getWorld(newPos.getWorld()); final World newWorld = Bukkit.getWorld(newPos.getWorld());
final Chunk c1 = newWorld.getChunkAt(pos1.getX() >> 4, pos1.getZ() >> 4);
final Chunk c2 = newWorld.getChunkAt(pos2.getX() >> 4, pos2.getZ() >> 4);
final int sx = pos1.getX();
final int sz = pos1.getZ();
final int ex = pos2.getX();
final int ez = pos2.getZ();
final int c1x = c1.getX();
final int c1z = c1.getZ();
final int c2x = c2.getX();
final int c2z = c2.getZ();
final ArrayList<Chunk> chunks = new ArrayList<>(); final ArrayList<Chunk> chunks = new ArrayList<>();
final ArrayList<Chunk> toGenerate = new ArrayList<>();
// Load chunks initMaps();
for (int x = c1x; x <= c2x; x++) {
for (int z = c1z; z <= c2z; z++) { ChunkManager.chunkTask(pos1, pos2, new RunnableVal<int[]>() {
final Chunk chunk = newWorld.getChunkAt(x, z);
toGenerate.add(chunk);
}
}
final Plugin plugin = BukkitMain.THIS;
final Integer currentIndex = TaskManager.index.get();
final int loadTask = Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
@Override @Override
public void run() { public void run() {
final long start = System.currentTimeMillis(); int bx = value[2];
while ((System.currentTimeMillis() - start) < 25) { int bz = value[3];
if (toGenerate.size() == 0) {
Bukkit.getScheduler().cancelTask(TaskManager.tasks.get(currentIndex)); int tx = value[4];
TaskManager.tasks.remove(currentIndex); int tz = value[5];
TaskManager.runTask(new Runnable() { // Load chunks
@Override ChunkLoc loc1 = new ChunkLoc(value[0], value[1]);
public void run() { ChunkLoc loc2 = new ChunkLoc(loc1.x + relCX, loc1.z + relCZ);
TaskManager.index.incrementAndGet(); Chunk c1 = oldWorld.getChunkAt(loc1.x, loc1.z);
// Copy entities Chunk c2 = oldWorld.getChunkAt(loc2.x, loc2.z);
initMaps(); c1.load(true);
for (int x = c1x; x <= c2x; x++) { c2.load(true);
for (int z = c1z; z <= c2z; z++) { chunks.add(c2);
final Chunk chunk = oldWorld.getChunkAt(x, z); // entities
chunks.add(chunk); saveEntitiesIn(c1, region);
chunk.load(false); // copy chunk
} for (int x = bx; x <= tx; x++) {
} for (int z = bz; z <= tz; z++) {
// Copy blocks saveBlocks(oldWorld, 255, x, z);
final AtomicInteger mx = new AtomicInteger(sx); for (int y = 1; y < 256; y++) {
final Integer currentIndex = TaskManager.index.get(); final Block block = oldWorld.getBlockAt(x, y, z);
final int maxY = oldWorld.getMaxHeight(); final int id = block.getTypeId();
final Integer task = Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() { final byte data = block.getData();
@Override BukkitSetBlockManager.setBlockManager.set(newWorld, x + relX, y, z + relZ, id, data);
public void run() { }
final long start = System.currentTimeMillis();
while ((System.currentTimeMillis() - start) < 25) {
final int xv = mx.intValue();
for (int z = sz; z <= ez; z++) {
saveBlocks(oldWorld, maxY, xv, z);
for (int y = 1; y <= maxY; y++) {
final Block block = oldWorld.getBlockAt(xv, y, z);
final int id = block.getTypeId();
final byte data = block.getData();
BukkitSetBlockManager.setBlockManager.set(newWorld, xv + relX, y, z + relZ, id, data);
}
}
mx.incrementAndGet();
if (xv == ex) { // done!
for (int x = c1x; x <= c2x; x++) {
for (int z = c1z; z <= c2z; z++) {
final Chunk chunk = oldWorld.getChunkAt(x, z);
chunks.add(chunk);
chunk.load(false);
saveEntitiesIn(chunk, region);
}
}
restoreBlocks(newWorld, relX, relZ);
restoreEntities(newWorld, relX, relZ);
BukkitSetBlockManager.setBlockManager.update(chunks);
TaskManager.runTask(whenDone);
Bukkit.getScheduler().cancelTask(TaskManager.tasks.get(currentIndex));
TaskManager.tasks.remove(currentIndex);
return;
}
}
}
}, 1, 1);
TaskManager.tasks.put(currentIndex, task);
}
});
return;
} }
final Chunk chunk = toGenerate.get(0);
toGenerate.remove(0);
chunk.load(true);
chunks.add(chunk);
} }
// restore chunk
restoreBlocks(newWorld, relX, relZ);
restoreEntities(newWorld, relX, relZ);
BukkitSetBlockManager.setBlockManager.update(chunks);
} }
}, 1l, 1l); }, new Runnable() {
TaskManager.tasks.put(currentIndex, loadTask); @Override
public void run() {
// TODO whenDone
TaskManager.runTask(whenDone);
}
}, 5);
return true; return true;
} }
@ -549,7 +499,7 @@ public class BukkitChunkManager extends ChunkManager {
try { try {
entity.spawn(world, x_offset, z_offset); entity.spawn(world, x_offset, z_offset);
} catch (final Exception e) { } catch (final Exception e) {
PS.debug("Failed to restore entity " + entity.x + "," + entity.y + "," + entity.z + " : " + entity.id + " : " + EntityType.fromId(entity.id)); PS.debug("Failed to restore entity (e): " + entity.x + "," + entity.y + "," + entity.z + " : " + entity.id + " : " + EntityType.fromId(entity.id));
e.printStackTrace(); e.printStackTrace();
} }
} }
@ -568,7 +518,7 @@ public class BukkitChunkManager extends ChunkManager {
PS.debug("&c[WARN] Plot clear failed to regenerate chest: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset)); PS.debug("&c[WARN] Plot clear failed to regenerate chest: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset));
} }
} catch (final Exception e) { } catch (final Exception e) {
PS.debug("&c[WARN] Plot clear failed to regenerate chest: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset)); PS.debug("&c[WARN] Plot clear failed to regenerate chest (e): " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset));
} }
} }
for (final BlockLoc loc : signContents.keySet()) { for (final BlockLoc loc : signContents.keySet()) {
@ -601,7 +551,7 @@ public class BukkitChunkManager extends ChunkManager {
PS.debug("&c[WARN] Plot clear failed to regenerate dispenser: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset)); PS.debug("&c[WARN] Plot clear failed to regenerate dispenser: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset));
} }
} catch (final Exception e) { } catch (final Exception e) {
PS.debug("&c[WARN] Plot clear failed to regenerate dispenser: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset)); PS.debug("&c[WARN] Plot clear failed to regenerate dispenser (e): " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset));
} }
} }
for (final BlockLoc loc : dropperContents.keySet()) { for (final BlockLoc loc : dropperContents.keySet()) {
@ -615,7 +565,7 @@ public class BukkitChunkManager extends ChunkManager {
PS.debug("&c[WARN] Plot clear failed to regenerate dispenser: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset)); PS.debug("&c[WARN] Plot clear failed to regenerate dispenser: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset));
} }
} catch (final Exception e) { } catch (final Exception e) {
PS.debug("&c[WARN] Plot clear failed to regenerate dispenser: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset)); PS.debug("&c[WARN] Plot clear failed to regenerate dispenser (e): " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset));
} }
} }
for (final BlockLoc loc : beaconContents.keySet()) { for (final BlockLoc loc : beaconContents.keySet()) {
@ -629,7 +579,7 @@ public class BukkitChunkManager extends ChunkManager {
PS.debug("&c[WARN] Plot clear failed to regenerate beacon: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset)); PS.debug("&c[WARN] Plot clear failed to regenerate beacon: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset));
} }
} catch (final Exception e) { } catch (final Exception e) {
PS.debug("&c[WARN] Plot clear failed to regenerate beacon: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset)); PS.debug("&c[WARN] Plot clear failed to regenerate beacon (e): " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset));
} }
} }
for (final BlockLoc loc : jukeDisc.keySet()) { for (final BlockLoc loc : jukeDisc.keySet()) {
@ -643,7 +593,7 @@ public class BukkitChunkManager extends ChunkManager {
PS.debug("&c[WARN] Plot clear failed to restore jukebox: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset)); PS.debug("&c[WARN] Plot clear failed to restore jukebox: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset));
} }
} catch (final Exception e) { } catch (final Exception e) {
PS.debug("&c[WARN] Plot clear failed to regenerate jukebox: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset)); PS.debug("&c[WARN] Plot clear failed to regenerate jukebox (e): " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset));
} }
} }
for (final BlockLoc loc : skullData.keySet()) { for (final BlockLoc loc : skullData.keySet()) {
@ -666,7 +616,7 @@ public class BukkitChunkManager extends ChunkManager {
PS.debug("&c[WARN] Plot clear failed to restore skull: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset)); PS.debug("&c[WARN] Plot clear failed to restore skull: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset));
} }
} catch (final Exception e) { } catch (final Exception e) {
PS.debug("&c[WARN] Plot clear failed to regenerate skull: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset)); PS.debug("&c[WARN] Plot clear failed to regenerate skull (e): " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset));
} }
} }
for (final BlockLoc loc : hopperContents.keySet()) { for (final BlockLoc loc : hopperContents.keySet()) {
@ -680,7 +630,7 @@ public class BukkitChunkManager extends ChunkManager {
PS.debug("&c[WARN] Plot clear failed to regenerate hopper: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset)); PS.debug("&c[WARN] Plot clear failed to regenerate hopper: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset));
} }
} catch (final Exception e) { } catch (final Exception e) {
PS.debug("&c[WARN] Plot clear failed to regenerate hopper: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset)); PS.debug("&c[WARN] Plot clear failed to regenerate hopper (e): " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset));
} }
} }
for (final BlockLoc loc : noteBlockContents.keySet()) { for (final BlockLoc loc : noteBlockContents.keySet()) {
@ -694,7 +644,7 @@ public class BukkitChunkManager extends ChunkManager {
PS.debug("&c[WARN] Plot clear failed to regenerate note block: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset)); PS.debug("&c[WARN] Plot clear failed to regenerate note block: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset));
} }
} catch (final Exception e) { } catch (final Exception e) {
PS.debug("&c[WARN] Plot clear failed to regenerate note block: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset)); PS.debug("&c[WARN] Plot clear failed to regenerate note block (e): " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset));
} }
} }
for (final BlockLoc loc : brewTime.keySet()) { for (final BlockLoc loc : brewTime.keySet()) {
@ -707,7 +657,7 @@ public class BukkitChunkManager extends ChunkManager {
PS.debug("&c[WARN] Plot clear failed to restore brewing stand cooking: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset)); PS.debug("&c[WARN] Plot clear failed to restore brewing stand cooking: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset));
} }
} catch (final Exception e) { } catch (final Exception e) {
PS.debug("&c[WARN] Plot clear failed to restore brewing stand cooking: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset)); PS.debug("&c[WARN] Plot clear failed to restore brewing stand cooking (e): " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset));
} }
} }
for (final BlockLoc loc : spawnerData.keySet()) { for (final BlockLoc loc : spawnerData.keySet()) {
@ -721,7 +671,7 @@ public class BukkitChunkManager extends ChunkManager {
PS.debug("&c[WARN] Plot clear failed to restore spawner type: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset)); PS.debug("&c[WARN] Plot clear failed to restore spawner type: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset));
} }
} catch (final Exception e) { } catch (final Exception e) {
PS.debug("&c[WARN] Plot clear failed to restore spawner type: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset)); PS.debug("&c[WARN] Plot clear failed to restore spawner type (e): " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset));
} }
} }
for (final BlockLoc loc : cmdData.keySet()) { for (final BlockLoc loc : cmdData.keySet()) {
@ -735,7 +685,7 @@ public class BukkitChunkManager extends ChunkManager {
PS.debug("&c[WARN] Plot clear failed to restore command block: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset)); PS.debug("&c[WARN] Plot clear failed to restore command block: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset));
} }
} catch (final Exception e) { } catch (final Exception e) {
PS.debug("&c[WARN] Plot clear failed to restore command block: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset)); PS.debug("&c[WARN] Plot clear failed to restore command block (e): " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset));
} }
} }
for (final BlockLoc loc : brewingStandContents.keySet()) { for (final BlockLoc loc : brewingStandContents.keySet()) {
@ -749,7 +699,7 @@ public class BukkitChunkManager extends ChunkManager {
PS.debug("&c[WARN] Plot clear failed to regenerate brewing stand: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset)); PS.debug("&c[WARN] Plot clear failed to regenerate brewing stand: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset));
} }
} catch (final Exception e) { } catch (final Exception e) {
PS.debug("&c[WARN] Plot clear failed to regenerate brewing stand: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset)); PS.debug("&c[WARN] Plot clear failed to regenerate brewing stand (e): " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset));
} }
} }
for (final BlockLoc loc : furnaceTime.keySet()) { for (final BlockLoc loc : furnaceTime.keySet()) {
@ -764,7 +714,7 @@ public class BukkitChunkManager extends ChunkManager {
PS.debug("&c[WARN] Plot clear failed to restore furnace cooking: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset)); PS.debug("&c[WARN] Plot clear failed to restore furnace cooking: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset));
} }
} catch (final Exception e) { } catch (final Exception e) {
PS.debug("&c[WARN] Plot clear failed to restore furnace cooking: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset)); PS.debug("&c[WARN] Plot clear failed to restore furnace cooking (e): " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset));
} }
} }
for (final BlockLoc loc : furnaceContents.keySet()) { for (final BlockLoc loc : furnaceContents.keySet()) {
@ -778,7 +728,7 @@ public class BukkitChunkManager extends ChunkManager {
PS.debug("&c[WARN] Plot clear failed to regenerate furnace: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset)); PS.debug("&c[WARN] Plot clear failed to regenerate furnace: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset));
} }
} catch (final Exception e) { } catch (final Exception e) {
PS.debug("&c[WARN] Plot clear failed to regenerate furnace: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset)); PS.debug("&c[WARN] Plot clear failed to regenerate furnace (e): " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset));
} }
} }
for (final BlockLoc loc : bannerBase.keySet()) { for (final BlockLoc loc : bannerBase.keySet()) {
@ -798,7 +748,7 @@ public class BukkitChunkManager extends ChunkManager {
PS.debug("&c[WARN] Plot clear failed to regenerate banner: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset)); PS.debug("&c[WARN] Plot clear failed to regenerate banner: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset));
} }
} catch (final Exception e) { } catch (final Exception e) {
PS.debug("&c[WARN] Plot clear failed to regenerate banner: " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset)); PS.debug("&c[WARN] Plot clear failed to regenerate banner (e): " + (loc.x + x_offset) + "," + (loc.y) + "," + (loc.z + z_offset));
} }
} }
} }

View File

@ -56,9 +56,9 @@ public class FileUUIDHandler extends UUIDHandlerImplementation {
@Override @Override
public void run() { public void run() {
PS.debug(C.PREFIX.s() + "&6Starting player data caching for: " + world); PS.debug(C.PREFIX.s() + "&6Starting player data caching for: " + world);
final HashBiMap<StringWrapper, UUID> toAdd = HashBiMap.create(new HashMap<StringWrapper, UUID>());
toAdd.put(new StringWrapper("*"), DBFunc.everyone);
if (Settings.TWIN_MODE_UUID) { if (Settings.TWIN_MODE_UUID) {
final HashBiMap<StringWrapper, UUID> toAdd = HashBiMap.create(new HashMap<StringWrapper, UUID>());
toAdd.put(new StringWrapper("*"), DBFunc.everyone);
HashSet<UUID> all = UUIDHandler.getAllUUIDS(); HashSet<UUID> all = UUIDHandler.getAllUUIDS();
PS.debug("&aFast mode UUID caching enabled!"); PS.debug("&aFast mode UUID caching enabled!");
final File playerdataFolder = new File(container, world + File.separator + "playerdata"); final File playerdataFolder = new File(container, world + File.separator + "playerdata");
@ -99,6 +99,8 @@ public class FileUUIDHandler extends UUIDHandlerImplementation {
PS.debug("Failed to cache: " + all.size() + " uuids - slowly processing all files"); PS.debug("Failed to cache: " + all.size() + " uuids - slowly processing all files");
} }
} }
final HashBiMap<StringWrapper, UUID> toAdd = HashBiMap.create(new HashMap<StringWrapper, UUID>());
toAdd.put(new StringWrapper("*"), DBFunc.everyone);
final HashSet<String> worlds = new HashSet<>(); final HashSet<String> worlds = new HashSet<>();
worlds.add(world); worlds.add(world);
worlds.add("world"); worlds.add("world");

View File

@ -218,14 +218,16 @@ public class MainListener {
String sender = player.getName(); String sender = player.getName();
PlotId id = plot.id; PlotId id = plot.id;
String newMessage = StringMan.replaceAll(C.PLOT_CHAT_FORMAT.s(), "%plot_id%", id.x + ";" + id.y, "%sender%", sender); String newMessage = StringMan.replaceAll(C.PLOT_CHAT_FORMAT.s(), "%plot_id%", id.x + ";" + id.y, "%sender%", sender);
String forcedMessage = StringMan.replaceAll(C.PLOT_CHAT_FORCED.s(), "%plot_id%", id.x + ";" + id.y, "%sender%", sender); Text forcedMessage = event.getMessage();
// String forcedMessage = StringMan.replaceAll(C.PLOT_CHAT_FORCED.s(), "%plot_id%", id.x + ";" + id.y, "%sender%", sender);
for (PlotPlayer user : UUIDHandler.getPlayers().values()) { for (PlotPlayer user : UUIDHandler.getPlayers().values()) {
String toSend; String toSend;
if (plot.equals(MainUtil.getPlot(user.getLocation()))) { if (plot.equals(MainUtil.getPlot(user.getLocation()))) {
toSend = newMessage; toSend = newMessage;
} }
else if (Permissions.hasPermission(user, PERMISSION_COMMANDS_CHAT)) { else if (Permissions.hasPermission(user, PERMISSION_COMMANDS_CHAT)) {
toSend = forcedMessage; ((SpongePlayer) user).player.sendMessage(forcedMessage);
continue;
} }
else { else {
continue; continue;