mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-22 13:16:45 +01:00
Pulled files from official repository
This commit is contained in:
commit
a297d505f8
@ -12,23 +12,74 @@ import com.intellectualcrafters.plot.generator.GeneratorWrapper;
|
|||||||
import com.intellectualcrafters.plot.generator.HybridGen;
|
import com.intellectualcrafters.plot.generator.HybridGen;
|
||||||
import com.intellectualcrafters.plot.generator.HybridUtils;
|
import com.intellectualcrafters.plot.generator.HybridUtils;
|
||||||
import com.intellectualcrafters.plot.generator.IndependentPlotGenerator;
|
import com.intellectualcrafters.plot.generator.IndependentPlotGenerator;
|
||||||
import com.intellectualcrafters.plot.object.*;
|
import com.intellectualcrafters.plot.object.Plot;
|
||||||
import com.intellectualcrafters.plot.util.*;
|
import com.intellectualcrafters.plot.object.PlotArea;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotPlayer;
|
||||||
|
import com.intellectualcrafters.plot.object.RunnableVal;
|
||||||
|
import com.intellectualcrafters.plot.object.SetupObject;
|
||||||
|
import com.intellectualcrafters.plot.util.AbstractTitle;
|
||||||
|
import com.intellectualcrafters.plot.util.ChatManager;
|
||||||
|
import com.intellectualcrafters.plot.util.ChunkManager;
|
||||||
|
import com.intellectualcrafters.plot.util.ConsoleColors;
|
||||||
|
import com.intellectualcrafters.plot.util.EconHandler;
|
||||||
|
import com.intellectualcrafters.plot.util.EventUtil;
|
||||||
|
import com.intellectualcrafters.plot.util.InventoryUtil;
|
||||||
|
import com.intellectualcrafters.plot.util.MainUtil;
|
||||||
|
import com.intellectualcrafters.plot.util.PlotQueue;
|
||||||
|
import com.intellectualcrafters.plot.util.SchematicHandler;
|
||||||
|
import com.intellectualcrafters.plot.util.SetupUtils;
|
||||||
|
import com.intellectualcrafters.plot.util.StringMan;
|
||||||
|
import com.intellectualcrafters.plot.util.TaskManager;
|
||||||
|
import com.intellectualcrafters.plot.util.UUIDHandler;
|
||||||
|
import com.intellectualcrafters.plot.util.UUIDHandlerImplementation;
|
||||||
|
import com.intellectualcrafters.plot.util.WorldUtil;
|
||||||
import com.intellectualcrafters.plot.uuid.UUIDWrapper;
|
import com.intellectualcrafters.plot.uuid.UUIDWrapper;
|
||||||
import com.plotsquared.bukkit.commands.DebugUUID;
|
import com.plotsquared.bukkit.commands.DebugUUID;
|
||||||
import com.plotsquared.bukkit.database.plotme.ClassicPlotMeConnector;
|
import com.plotsquared.bukkit.database.plotme.ClassicPlotMeConnector;
|
||||||
import com.plotsquared.bukkit.database.plotme.LikePlotMeConverter;
|
import com.plotsquared.bukkit.database.plotme.LikePlotMeConverter;
|
||||||
import com.plotsquared.bukkit.database.plotme.PlotMeConnector_017;
|
import com.plotsquared.bukkit.database.plotme.PlotMeConnector_017;
|
||||||
import com.plotsquared.bukkit.generator.BukkitPlotGenerator;
|
import com.plotsquared.bukkit.generator.BukkitPlotGenerator;
|
||||||
import com.plotsquared.bukkit.listeners.*;
|
import com.plotsquared.bukkit.listeners.ChunkListener;
|
||||||
|
import com.plotsquared.bukkit.listeners.ForceFieldListener;
|
||||||
|
import com.plotsquared.bukkit.listeners.PlayerEvents;
|
||||||
|
import com.plotsquared.bukkit.listeners.PlayerEvents_1_8;
|
||||||
|
import com.plotsquared.bukkit.listeners.PlayerEvents_1_8_3;
|
||||||
|
import com.plotsquared.bukkit.listeners.PlotPlusListener;
|
||||||
|
import com.plotsquared.bukkit.listeners.WorldEvents;
|
||||||
import com.plotsquared.bukkit.listeners.worldedit.WEListener;
|
import com.plotsquared.bukkit.listeners.worldedit.WEListener;
|
||||||
import com.plotsquared.bukkit.titles.DefaultTitle_19;
|
import com.plotsquared.bukkit.titles.DefaultTitle_19;
|
||||||
import com.plotsquared.bukkit.util.*;
|
import com.plotsquared.bukkit.util.BukkitChatManager;
|
||||||
import com.plotsquared.bukkit.util.block.*;
|
import com.plotsquared.bukkit.util.BukkitChunkManager;
|
||||||
import com.plotsquared.bukkit.uuid.*;
|
import com.plotsquared.bukkit.util.BukkitCommand;
|
||||||
|
import com.plotsquared.bukkit.util.BukkitEconHandler;
|
||||||
|
import com.plotsquared.bukkit.util.BukkitEventUtil;
|
||||||
|
import com.plotsquared.bukkit.util.BukkitHybridUtils;
|
||||||
|
import com.plotsquared.bukkit.util.BukkitInventoryUtil;
|
||||||
|
import com.plotsquared.bukkit.util.BukkitPlainChatManager;
|
||||||
|
import com.plotsquared.bukkit.util.BukkitSchematicHandler;
|
||||||
|
import com.plotsquared.bukkit.util.BukkitSetupUtils;
|
||||||
|
import com.plotsquared.bukkit.util.BukkitTaskManager;
|
||||||
|
import com.plotsquared.bukkit.util.BukkitUtil;
|
||||||
|
import com.plotsquared.bukkit.util.Metrics;
|
||||||
|
import com.plotsquared.bukkit.util.SendChunk;
|
||||||
|
import com.plotsquared.bukkit.util.SetGenCB;
|
||||||
|
import com.plotsquared.bukkit.util.block.FastQueue_1_7;
|
||||||
|
import com.plotsquared.bukkit.util.block.FastQueue_1_8;
|
||||||
|
import com.plotsquared.bukkit.util.block.FastQueue_1_8_3;
|
||||||
|
import com.plotsquared.bukkit.util.block.FastQueue_1_9;
|
||||||
|
import com.plotsquared.bukkit.util.block.SlowQueue;
|
||||||
|
import com.plotsquared.bukkit.uuid.DefaultUUIDWrapper;
|
||||||
|
import com.plotsquared.bukkit.uuid.FileUUIDHandler;
|
||||||
|
import com.plotsquared.bukkit.uuid.LowerOfflineUUIDWrapper;
|
||||||
|
import com.plotsquared.bukkit.uuid.OfflineUUIDWrapper;
|
||||||
|
import com.plotsquared.bukkit.uuid.SQLUUIDHandler;
|
||||||
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
|
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
|
||||||
import org.bukkit.*;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
|
import org.bukkit.Server;
|
||||||
|
import org.bukkit.World;
|
||||||
import org.bukkit.command.PluginCommand;
|
import org.bukkit.command.PluginCommand;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -42,7 +93,11 @@ import java.io.File;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
|
public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
|
||||||
|
|
||||||
@ -87,9 +142,6 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void log(String message) {
|
public void log(String message) {
|
||||||
if (message == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if ((THIS != null) && (Bukkit.getServer().getConsoleSender() != null)) {
|
if ((THIS != null) && (Bukkit.getServer().getConsoleSender() != null)) {
|
||||||
try {
|
try {
|
||||||
message = C.color(message);
|
message = C.color(message);
|
||||||
@ -571,12 +623,10 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
|
|||||||
PS.get().loadWorld(worldname, (BukkitPlotGenerator) gen);
|
PS.get().loadWorld(worldname, (BukkitPlotGenerator) gen);
|
||||||
} else if (gen != null) {
|
} else if (gen != null) {
|
||||||
PS.get().loadWorld(worldname, new BukkitPlotGenerator(worldname, gen));
|
PS.get().loadWorld(worldname, new BukkitPlotGenerator(worldname, gen));
|
||||||
} else {
|
} else if (PS.get().config.contains("worlds." + worldname)) {
|
||||||
if (PS.get().config.contains("worlds." + worldname)) {
|
|
||||||
PS.get().loadWorld(worldname, null);
|
PS.get().loadWorld(worldname, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SchematicHandler initSchematicHandler() {
|
public SchematicHandler initSchematicHandler() {
|
||||||
|
@ -51,12 +51,12 @@ final class MessagePart implements JsonRepresentedObject, ConfigurationSerializa
|
|||||||
}
|
}
|
||||||
|
|
||||||
ChatColor color = ChatColor.WHITE;
|
ChatColor color = ChatColor.WHITE;
|
||||||
ArrayList<ChatColor> styles = new ArrayList<ChatColor>();
|
ArrayList<ChatColor> styles = new ArrayList<>();
|
||||||
String clickActionName = null, clickActionData = null, hoverActionName = null;
|
String clickActionName = null, clickActionData = null, hoverActionName = null;
|
||||||
JsonRepresentedObject hoverActionData = null;
|
JsonRepresentedObject hoverActionData = null;
|
||||||
TextualComponent text = null;
|
TextualComponent text = null;
|
||||||
String insertionData = null;
|
String insertionData = null;
|
||||||
ArrayList<JsonRepresentedObject> translationReplacements = new ArrayList<JsonRepresentedObject>();
|
ArrayList<JsonRepresentedObject> translationReplacements = new ArrayList<>();
|
||||||
|
|
||||||
MessagePart(final TextualComponent text) {
|
MessagePart(final TextualComponent text) {
|
||||||
this.text = text;
|
this.text = text;
|
||||||
@ -134,7 +134,7 @@ final class MessagePart implements JsonRepresentedObject, ConfigurationSerializa
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, Object> serialize() {
|
public Map<String, Object> serialize() {
|
||||||
final HashMap<String, Object> map = new HashMap<String, Object>();
|
final HashMap<String, Object> map = new HashMap<>();
|
||||||
map.put("text", text);
|
map.put("text", text);
|
||||||
map.put("styles", styles);
|
map.put("styles", styles);
|
||||||
map.put("color", color.getChar());
|
map.put("color", color.getChar());
|
||||||
|
@ -1,18 +1,17 @@
|
|||||||
package com.plotsquared.bukkit.database.plotme;
|
package com.plotsquared.bukkit.database.plotme;
|
||||||
|
|
||||||
import java.sql.Connection;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.World;
|
|
||||||
|
|
||||||
import com.intellectualcrafters.configuration.file.FileConfiguration;
|
import com.intellectualcrafters.configuration.file.FileConfiguration;
|
||||||
import com.intellectualcrafters.plot.PS;
|
import com.intellectualcrafters.plot.PS;
|
||||||
import com.intellectualcrafters.plot.object.Location;
|
import com.intellectualcrafters.plot.object.Location;
|
||||||
import com.intellectualcrafters.plot.object.Plot;
|
import com.intellectualcrafters.plot.object.Plot;
|
||||||
import com.intellectualcrafters.plot.object.PlotId;
|
import com.intellectualcrafters.plot.object.PlotId;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.World;
|
||||||
|
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
public abstract class APlotMeConnector {
|
public abstract class APlotMeConnector {
|
||||||
public abstract Connection getPlotMeConnection(final String plugin, final FileConfiguration plotConfig, final String dataFolder);
|
public abstract Connection getPlotMeConnection(final String plugin, final FileConfiguration plotConfig, final String dataFolder);
|
||||||
@ -69,35 +68,14 @@ public abstract class APlotMeConnector {
|
|||||||
|
|
||||||
public void setMerged(final HashMap<String, HashMap<PlotId, boolean[]>> merges, final String world, final PlotId id, final int direction) {
|
public void setMerged(final HashMap<String, HashMap<PlotId, boolean[]>> merges, final String world, final PlotId id, final int direction) {
|
||||||
final HashMap<PlotId, boolean[]> plots = merges.get(world);
|
final HashMap<PlotId, boolean[]> plots = merges.get(world);
|
||||||
PlotId id2;
|
PlotId id2 = new PlotId(id.x, id.y);
|
||||||
switch (direction) {
|
|
||||||
case 0: {
|
|
||||||
id2 = new PlotId(id.x, id.y);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 1: {
|
|
||||||
id2 = new PlotId(id.x, id.y);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
id2 = new PlotId(id.x, id.y);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 3: {
|
|
||||||
id2 = new PlotId(id.x, id.y);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default: {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
boolean[] merge1;
|
boolean[] merge1;
|
||||||
boolean[] merge2;
|
|
||||||
if (plots.containsKey(id)) {
|
if (plots.containsKey(id)) {
|
||||||
merge1 = plots.get(id);
|
merge1 = plots.get(id);
|
||||||
} else {
|
} else {
|
||||||
merge1 = new boolean[] { false, false, false, false };
|
merge1 = new boolean[] { false, false, false, false };
|
||||||
}
|
}
|
||||||
|
boolean[] merge2;
|
||||||
if (plots.containsKey(id2)) {
|
if (plots.containsKey(id2)) {
|
||||||
merge2 = plots.get(id2);
|
merge2 = plots.get(id2);
|
||||||
} else {
|
} else {
|
||||||
|
@ -24,7 +24,11 @@ import com.intellectualcrafters.plot.PS;
|
|||||||
import com.intellectualcrafters.plot.generator.GeneratorWrapper;
|
import com.intellectualcrafters.plot.generator.GeneratorWrapper;
|
||||||
import com.intellectualcrafters.plot.generator.HybridGen;
|
import com.intellectualcrafters.plot.generator.HybridGen;
|
||||||
import com.intellectualcrafters.plot.generator.IndependentPlotGenerator;
|
import com.intellectualcrafters.plot.generator.IndependentPlotGenerator;
|
||||||
import com.intellectualcrafters.plot.object.*;
|
import com.intellectualcrafters.plot.object.PlotArea;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotId;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotManager;
|
||||||
|
import com.intellectualcrafters.plot.object.PseudoRandom;
|
||||||
|
import com.intellectualcrafters.plot.object.SetupObject;
|
||||||
import com.intellectualcrafters.plot.util.ChunkManager;
|
import com.intellectualcrafters.plot.util.ChunkManager;
|
||||||
import com.intellectualcrafters.plot.util.MainUtil;
|
import com.intellectualcrafters.plot.util.MainUtil;
|
||||||
import com.intellectualcrafters.plot.util.PlotChunk;
|
import com.intellectualcrafters.plot.util.PlotChunk;
|
||||||
@ -48,9 +52,9 @@ public class BukkitPlotGenerator extends ChunkGenerator implements GeneratorWrap
|
|||||||
private final PseudoRandom random = new PseudoRandom();
|
private final PseudoRandom random = new PseudoRandom();
|
||||||
private final IndependentPlotGenerator plotGenerator;
|
private final IndependentPlotGenerator plotGenerator;
|
||||||
private final List<BlockPopulator> populators = new ArrayList<>();
|
private final List<BlockPopulator> populators = new ArrayList<>();
|
||||||
|
private final ChunkGenerator platformGenerator;
|
||||||
|
private final boolean full;
|
||||||
private boolean loaded = false;
|
private boolean loaded = false;
|
||||||
private ChunkGenerator platformGenerator;
|
|
||||||
private boolean full;
|
|
||||||
|
|
||||||
public BukkitPlotGenerator(IndependentPlotGenerator generator) {
|
public BukkitPlotGenerator(IndependentPlotGenerator generator) {
|
||||||
this.plotGenerator = generator;
|
this.plotGenerator = generator;
|
||||||
@ -58,11 +62,6 @@ public class BukkitPlotGenerator extends ChunkGenerator implements GeneratorWrap
|
|||||||
populators.add(new BlockPopulator() {
|
populators.add(new BlockPopulator() {
|
||||||
@Override
|
@Override
|
||||||
public void populate(World world, Random r, Chunk c) {
|
public void populate(World world, Random r, Chunk c) {
|
||||||
if (!(chunkSetter instanceof GenChunk)) {
|
|
||||||
PS.debug("Current PlotChunk is not relevant to population?");
|
|
||||||
PS.stacktrace();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
GenChunk result = (GenChunk) chunkSetter;
|
GenChunk result = (GenChunk) chunkSetter;
|
||||||
if (result.result_data != null) {
|
if (result.result_data != null) {
|
||||||
for (int i = 0; i < result.result_data.length; i++) {
|
for (int i = 0; i < result.result_data.length; i++) {
|
||||||
@ -90,7 +89,7 @@ public class BukkitPlotGenerator extends ChunkGenerator implements GeneratorWrap
|
|||||||
throw new IllegalArgumentException("ChunkGenerator: " + cg.getClass().getName() + " is already a BukkitPlotGenerator!");
|
throw new IllegalArgumentException("ChunkGenerator: " + cg.getClass().getName() + " is already a BukkitPlotGenerator!");
|
||||||
}
|
}
|
||||||
this.full = false;
|
this.full = false;
|
||||||
PS.get().debug("BukkitPlotGenerator does not fully support: " + cg);
|
PS.debug("BukkitPlotGenerator does not fully support: " + cg);
|
||||||
platformGenerator = cg;
|
platformGenerator = cg;
|
||||||
plotGenerator = new IndependentPlotGenerator() {
|
plotGenerator = new IndependentPlotGenerator() {
|
||||||
@Override
|
@Override
|
||||||
@ -229,11 +228,6 @@ public class BukkitPlotGenerator extends ChunkGenerator implements GeneratorWrap
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ChunkData generateChunkData(World world, Random random, int cx, int cz, BiomeGrid grid) {
|
public ChunkData generateChunkData(World world, Random random, int cx, int cz, BiomeGrid grid) {
|
||||||
if (!(chunkSetter instanceof GenChunk)) {
|
|
||||||
PS.debug("Current PlotChunk is not relevant to generation?");
|
|
||||||
PS.stacktrace();
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
GenChunk result = (GenChunk) chunkSetter;
|
GenChunk result = (GenChunk) chunkSetter;
|
||||||
// Set the chunk location
|
// Set the chunk location
|
||||||
result.setChunkWrapper(SetQueue.IMP.new ChunkWrapper(world.getName(), cx, cz));
|
result.setChunkWrapper(SetQueue.IMP.new ChunkWrapper(world.getName(), cx, cz));
|
||||||
@ -278,10 +272,6 @@ public class BukkitPlotGenerator extends ChunkGenerator implements GeneratorWrap
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public short[][] generateExtBlockSections(final World world, final Random r, final int cx, final int cz, final BiomeGrid grid) {
|
public short[][] generateExtBlockSections(final World world, final Random r, final int cx, final int cz, final BiomeGrid grid) {
|
||||||
if (!(chunkSetter instanceof GenChunk)) {
|
|
||||||
PS.stacktrace();
|
|
||||||
return new short[16][];
|
|
||||||
}
|
|
||||||
GenChunk result = (GenChunk) chunkSetter;
|
GenChunk result = (GenChunk) chunkSetter;
|
||||||
// Set the chunk location
|
// Set the chunk location
|
||||||
result.setChunkWrapper(SetQueue.IMP.new ChunkWrapper(world.getName(), cx, cz));
|
result.setChunkWrapper(SetQueue.IMP.new ChunkWrapper(world.getName(), cx, cz));
|
||||||
|
@ -27,16 +27,6 @@ import com.plotsquared.bukkit.object.BukkitLazyBlock;
|
|||||||
import com.plotsquared.bukkit.object.BukkitPlayer;
|
import com.plotsquared.bukkit.object.BukkitPlayer;
|
||||||
import com.plotsquared.bukkit.util.BukkitUtil;
|
import com.plotsquared.bukkit.util.BukkitUtil;
|
||||||
import com.plotsquared.listener.PlayerBlockEventType;
|
import com.plotsquared.listener.PlayerBlockEventType;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map.Entry;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.UUID;
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@ -117,11 +107,21 @@ import org.bukkit.projectiles.BlockProjectileSource;
|
|||||||
import org.bukkit.projectiles.ProjectileSource;
|
import org.bukkit.projectiles.ProjectileSource;
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.UUID;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Player Events involving plots
|
* Player Events involving plots
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings({ "deprecation", "unchecked" })
|
|
||||||
public class PlayerEvents extends com.plotsquared.listener.PlotListener implements Listener {
|
public class PlayerEvents extends com.plotsquared.listener.PlotListener implements Listener {
|
||||||
|
|
||||||
private boolean pistonBlocks = true;
|
private boolean pistonBlocks = true;
|
||||||
@ -355,11 +355,11 @@ public class PlayerEvents extends com.plotsquared.listener.PlotListener implemen
|
|||||||
if (c.equals(cmdLabel.getName())) {
|
if (c.equals(cmdLabel.getName())) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
PluginCommand p;
|
|
||||||
final String label = cmdLabel.getName().replaceFirst("/", "");
|
final String label = cmdLabel.getName().replaceFirst("/", "");
|
||||||
if (aliases.contains(label)) {
|
if (aliases.contains(label)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
PluginCommand p;
|
||||||
if ((p = Bukkit.getPluginCommand(label)) != null) {
|
if ((p = Bukkit.getPluginCommand(label)) != null) {
|
||||||
for (String a : p.getAliases()) {
|
for (String a : p.getAliases()) {
|
||||||
if (aliases.contains(a)) {
|
if (aliases.contains(a)) {
|
||||||
@ -1309,9 +1309,7 @@ public class PlayerEvents extends com.plotsquared.listener.PlotListener implemen
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean checkEntity(final Entity entity, final Plot plot) {
|
public boolean checkEntity(final Entity entity, final Plot plot) {
|
||||||
if (plot == null || plot.owner == null || plot.settings == null || plot.getFlags().isEmpty() && plot.getArea().DEFAULT_FLAGS
|
if (plot == null || plot.owner == null || plot.getFlags().isEmpty() && plot.getArea().DEFAULT_FLAGS.isEmpty()) {
|
||||||
.isEmpty
|
|
||||||
()) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
switch (entity.getType()) {
|
switch (entity.getType()) {
|
||||||
@ -1326,6 +1324,10 @@ public class PlayerEvents extends com.plotsquared.listener.PlotListener implemen
|
|||||||
case SNOWBALL:
|
case SNOWBALL:
|
||||||
case ENDER_PEARL:
|
case ENDER_PEARL:
|
||||||
case ARROW:
|
case ARROW:
|
||||||
|
case TIPPED_ARROW:
|
||||||
|
case SPECTRAL_ARROW:
|
||||||
|
case SHULKER_BULLET:
|
||||||
|
case DRAGON_FIREBALL:
|
||||||
// projectile
|
// projectile
|
||||||
case PRIMED_TNT:
|
case PRIMED_TNT:
|
||||||
case FALLING_BLOCK:
|
case FALLING_BLOCK:
|
||||||
@ -1338,6 +1340,7 @@ public class PlayerEvents extends com.plotsquared.listener.PlotListener implemen
|
|||||||
case LEASH_HITCH:
|
case LEASH_HITCH:
|
||||||
case FIREWORK:
|
case FIREWORK:
|
||||||
case WEATHER:
|
case WEATHER:
|
||||||
|
case AREA_EFFECT_CLOUD:
|
||||||
case LIGHTNING:
|
case LIGHTNING:
|
||||||
case WITHER_SKULL:
|
case WITHER_SKULL:
|
||||||
case UNKNOWN:
|
case UNKNOWN:
|
||||||
@ -1362,7 +1365,6 @@ public class PlayerEvents extends com.plotsquared.listener.PlotListener implemen
|
|||||||
case MUSHROOM_COW:
|
case MUSHROOM_COW:
|
||||||
case OCELOT:
|
case OCELOT:
|
||||||
case PIG:
|
case PIG:
|
||||||
case HORSE:
|
|
||||||
case SQUID:
|
case SQUID:
|
||||||
case VILLAGER:
|
case VILLAGER:
|
||||||
case IRON_GOLEM:
|
case IRON_GOLEM:
|
||||||
@ -1371,6 +1373,7 @@ public class PlayerEvents extends com.plotsquared.listener.PlotListener implemen
|
|||||||
case COW:
|
case COW:
|
||||||
case SNOWMAN:
|
case SNOWMAN:
|
||||||
case BAT:
|
case BAT:
|
||||||
|
case HORSE:
|
||||||
// animal
|
// animal
|
||||||
return checkEntity(plot, "entity-cap", "mob-cap", "animal-cap");
|
return checkEntity(plot, "entity-cap", "mob-cap", "animal-cap");
|
||||||
case BLAZE:
|
case BLAZE:
|
||||||
@ -1391,26 +1394,24 @@ public class PlayerEvents extends com.plotsquared.listener.PlotListener implemen
|
|||||||
case WITCH:
|
case WITCH:
|
||||||
case WITHER:
|
case WITHER:
|
||||||
case ZOMBIE:
|
case ZOMBIE:
|
||||||
|
case SHULKER:
|
||||||
// monster
|
// monster
|
||||||
return checkEntity(plot, "entity-cap", "mob-cap", "hostile-cap");
|
return checkEntity(plot, "entity-cap", "mob-cap", "hostile-cap");
|
||||||
default:
|
default:
|
||||||
String[] types;
|
|
||||||
if (entity instanceof LivingEntity) {
|
if (entity instanceof LivingEntity) {
|
||||||
if (entity instanceof Animals) {
|
if (entity instanceof Animals) {
|
||||||
types = new String[] { "entity-cap", "mob-cap", "animal-cap" };
|
return checkEntity(plot, "entity-cap", "mob-cap", "animal-cap");
|
||||||
} else if (entity instanceof Monster) {
|
} else if (entity instanceof Monster) {
|
||||||
types = new String[] { "entity-cap", "mob-cap", "hostile-cap" };
|
return checkEntity(plot, "entity-cap", "mob-cap", "hostile-cap");
|
||||||
} else {
|
} else {
|
||||||
types = new String[] { "entity-cap", "mob-cap" };
|
return checkEntity(plot, "entity-cap", "mob-cap");
|
||||||
}
|
}
|
||||||
} else if (entity instanceof Vehicle) {
|
} else if (entity instanceof Vehicle) {
|
||||||
types = new String[] { "entity-cap", "vehicle-cap" };
|
return checkEntity(plot, "entity-cap", "vehicle-cap");
|
||||||
} else if (entity instanceof Hanging) {
|
} else if (entity instanceof Hanging) {
|
||||||
types = new String[] { "entity-cap", "misc-cap" };
|
return checkEntity(plot, "entity-cap", "misc-cap");
|
||||||
} else {
|
|
||||||
types = new String[] { "entity-cap" };
|
|
||||||
}
|
}
|
||||||
return checkEntity(plot, types);
|
return checkEntity(plot, "entity-cap");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1444,14 +1445,12 @@ public class PlayerEvents extends com.plotsquared.listener.PlotListener implemen
|
|||||||
} else {
|
} else {
|
||||||
if (ent != null) {
|
if (ent != null) {
|
||||||
loc = BukkitUtil.getLocation(ent);
|
loc = BukkitUtil.getLocation(ent);
|
||||||
} else {
|
} else if (player != null) {
|
||||||
if (player != null) {
|
|
||||||
loc = BukkitUtil.getLocation(player);
|
loc = BukkitUtil.getLocation(player);
|
||||||
} else {
|
} else {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
PlotArea area = loc.getPlotArea();
|
PlotArea area = loc.getPlotArea();
|
||||||
if (area == null) {
|
if (area == null) {
|
||||||
return;
|
return;
|
||||||
@ -1594,8 +1593,7 @@ public class PlayerEvents extends com.plotsquared.listener.PlotListener implemen
|
|||||||
}
|
}
|
||||||
} else if (lastPlot != null && now.equals(lastPlot)) {
|
} else if (lastPlot != null && now.equals(lastPlot)) {
|
||||||
return;
|
return;
|
||||||
} else {
|
} else if (!plotEntry(pp, now) && tmp_teleport) {
|
||||||
if (!plotEntry(pp, now) && tmp_teleport) {
|
|
||||||
MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_ENTRY_DENIED);
|
MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_ENTRY_DENIED);
|
||||||
if (!now.equals(area.getPlot(BukkitUtil.getLocation(from)))) {
|
if (!now.equals(area.getPlot(BukkitUtil.getLocation(from)))) {
|
||||||
tmp_teleport = false;
|
tmp_teleport = false;
|
||||||
@ -1612,7 +1610,6 @@ public class PlayerEvents extends com.plotsquared.listener.PlotListener implemen
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
final Integer border = area.getBorder();
|
final Integer border = area.getBorder();
|
||||||
if (tmp_teleport) {
|
if (tmp_teleport) {
|
||||||
if (x2 > border) {
|
if (x2 > border) {
|
||||||
@ -1666,8 +1663,7 @@ public class PlayerEvents extends com.plotsquared.listener.PlotListener implemen
|
|||||||
}
|
}
|
||||||
} else if (lastPlot != null && now.equals(lastPlot)) {
|
} else if (lastPlot != null && now.equals(lastPlot)) {
|
||||||
return;
|
return;
|
||||||
} else {
|
} else if (!plotEntry(pp, now) && tmp_teleport) {
|
||||||
if (!plotEntry(pp, now) && tmp_teleport) {
|
|
||||||
MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_ENTRY_DENIED);
|
MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_ENTRY_DENIED);
|
||||||
if (!now.equals(area.getPlot(BukkitUtil.getLocation(from)))) {
|
if (!now.equals(area.getPlot(BukkitUtil.getLocation(from)))) {
|
||||||
tmp_teleport = false;
|
tmp_teleport = false;
|
||||||
@ -1684,7 +1680,6 @@ public class PlayerEvents extends com.plotsquared.listener.PlotListener implemen
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
final Integer border = area.getBorder();
|
final Integer border = area.getBorder();
|
||||||
if (tmp_teleport) {
|
if (tmp_teleport) {
|
||||||
if (z2 > border) {
|
if (z2 > border) {
|
||||||
@ -1721,8 +1716,7 @@ public class PlayerEvents extends com.plotsquared.listener.PlotListener implemen
|
|||||||
}
|
}
|
||||||
MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_BUILD_ROAD);
|
MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_BUILD_ROAD);
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
} else {
|
} else if (!plot.hasOwner()) {
|
||||||
if (!plot.hasOwner()) {
|
|
||||||
if (Permissions.hasPermission(pp, C.PERMISSION_ADMIN_BUILD_UNOWNED)) {
|
if (Permissions.hasPermission(pp, C.PERMISSION_ADMIN_BUILD_UNOWNED)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1740,7 +1734,6 @@ public class PlayerEvents extends com.plotsquared.listener.PlotListener implemen
|
|||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST)
|
@EventHandler(priority = EventPriority.HIGHEST)
|
||||||
public void onInventoryClick(final InventoryClickEvent event) {
|
public void onInventoryClick(final InventoryClickEvent event) {
|
||||||
|
@ -57,7 +57,7 @@ import java.util.UUID;
|
|||||||
*
|
*
|
||||||
|
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings({ "deprecation" })
|
@SuppressWarnings("deprecation")
|
||||||
public class PlotPlusListener extends PlotListener implements Listener {
|
public class PlotPlusListener extends PlotListener implements Listener {
|
||||||
private final static HashMap<String, Interval> feedRunnable = new HashMap<>();
|
private final static HashMap<String, Interval> feedRunnable = new HashMap<>();
|
||||||
private final static HashMap<String, Interval> healRunnable = new HashMap<>();
|
private final static HashMap<String, Interval> healRunnable = new HashMap<>();
|
||||||
@ -122,6 +122,9 @@ public class PlotPlusListener extends PlotListener implements Listener {
|
|||||||
if (!FlagManager.isBooleanFlag(plot, "ice-melt", false)) {
|
if (!FlagManager.isBooleanFlag(plot, "ice-melt", false)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
if (FlagManager.isPlotFlagFalse(plot, "snow-melt")) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGH)
|
@EventHandler(priority = EventPriority.HIGH)
|
||||||
|
@ -34,6 +34,7 @@ import org.bukkit.util.Vector;
|
|||||||
|
|
||||||
public class EntityWrapper {
|
public class EntityWrapper {
|
||||||
|
|
||||||
|
private final int hash;
|
||||||
public EntityType type;
|
public EntityType type;
|
||||||
public float yaw;
|
public float yaw;
|
||||||
public float pitch;
|
public float pitch;
|
||||||
@ -54,8 +55,6 @@ public class EntityWrapper {
|
|||||||
private HorseStats horse;
|
private HorseStats horse;
|
||||||
private ArmorStandStats stand;
|
private ArmorStandStats stand;
|
||||||
|
|
||||||
private int hash;
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
public EntityWrapper(final org.bukkit.entity.Entity entity, final short depth) {
|
public EntityWrapper(final org.bukkit.entity.Entity entity, final short depth) {
|
||||||
hash = entity.getEntityId();
|
hash = entity.getEntityId();
|
||||||
@ -153,10 +152,7 @@ public class EntityWrapper {
|
|||||||
}
|
}
|
||||||
// END MISC //
|
// END MISC //
|
||||||
// INVENTORY HOLDER //
|
// INVENTORY HOLDER //
|
||||||
case MINECART_CHEST: {
|
case MINECART_CHEST:
|
||||||
storeInventory((InventoryHolder) entity);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
case MINECART_HOPPER: {
|
case MINECART_HOPPER: {
|
||||||
storeInventory((InventoryHolder) entity);
|
storeInventory((InventoryHolder) entity);
|
||||||
return;
|
return;
|
||||||
@ -508,10 +504,7 @@ public class EntityWrapper {
|
|||||||
}
|
}
|
||||||
// END MISC //
|
// END MISC //
|
||||||
// INVENTORY HOLDER //
|
// INVENTORY HOLDER //
|
||||||
case MINECART_CHEST: {
|
case MINECART_CHEST:
|
||||||
restoreInventory((InventoryHolder) entity);
|
|
||||||
return entity;
|
|
||||||
}
|
|
||||||
case MINECART_HOPPER: {
|
case MINECART_HOPPER: {
|
||||||
restoreInventory((InventoryHolder) entity);
|
restoreInventory((InventoryHolder) entity);
|
||||||
return entity;
|
return entity;
|
||||||
|
@ -5,9 +5,17 @@ import com.intellectualcrafters.plot.object.PlotBlock;
|
|||||||
import com.intellectualcrafters.plot.object.PlotPlayer;
|
import com.intellectualcrafters.plot.object.PlotPlayer;
|
||||||
import com.intellectualcrafters.plot.object.RegionWrapper;
|
import com.intellectualcrafters.plot.object.RegionWrapper;
|
||||||
import com.intellectualcrafters.plot.object.schematic.PlotItem;
|
import com.intellectualcrafters.plot.object.schematic.PlotItem;
|
||||||
import com.intellectualcrafters.plot.util.*;
|
import com.intellectualcrafters.plot.util.MathMan;
|
||||||
|
import com.intellectualcrafters.plot.util.StringComparison;
|
||||||
|
import com.intellectualcrafters.plot.util.StringMan;
|
||||||
|
import com.intellectualcrafters.plot.util.TaskManager;
|
||||||
|
import com.intellectualcrafters.plot.util.UUIDHandler;
|
||||||
|
import com.intellectualcrafters.plot.util.WorldUtil;
|
||||||
import com.plotsquared.bukkit.object.BukkitPlayer;
|
import com.plotsquared.bukkit.object.BukkitPlayer;
|
||||||
import org.bukkit.*;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
|
import org.bukkit.World;
|
||||||
import org.bukkit.block.Biome;
|
import org.bukkit.block.Biome;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.BlockState;
|
import org.bukkit.block.BlockState;
|
||||||
@ -17,7 +25,12 @@ import org.bukkit.entity.Player;
|
|||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
import org.bukkit.inventory.InventoryHolder;
|
import org.bukkit.inventory.InventoryHolder;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.material.*;
|
import org.bukkit.material.MaterialData;
|
||||||
|
import org.bukkit.material.Sandstone;
|
||||||
|
import org.bukkit.material.Step;
|
||||||
|
import org.bukkit.material.Tree;
|
||||||
|
import org.bukkit.material.WoodenStep;
|
||||||
|
import org.bukkit.material.Wool;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -282,7 +295,7 @@ public class BukkitUtil extends WorldUtil {
|
|||||||
final World world = getWorld(loc.getWorld());
|
final World world = getWorld(loc.getWorld());
|
||||||
final Block block = world.getBlockAt(loc.getX(), loc.getY(), loc.getZ());
|
final Block block = world.getBlockAt(loc.getX(), loc.getY(), loc.getZ());
|
||||||
if (block == null) {
|
if (block == null) {
|
||||||
return new PlotBlock((short) 0, (byte) 0);
|
return PlotBlock.EVERYTHING;
|
||||||
}
|
}
|
||||||
return new PlotBlock((short) block.getTypeId(), block.getData());
|
return new PlotBlock((short) block.getTypeId(), block.getData());
|
||||||
}
|
}
|
||||||
|
@ -558,7 +558,7 @@ public class JSONArray {
|
|||||||
* @return this.
|
* @return this.
|
||||||
*/
|
*/
|
||||||
public JSONArray put(final int value) {
|
public JSONArray put(final int value) {
|
||||||
this.put(new Integer(value));
|
this.put(Integer.valueOf(value));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -570,7 +570,7 @@ public class JSONArray {
|
|||||||
* @return this.
|
* @return this.
|
||||||
*/
|
*/
|
||||||
public JSONArray put(final long value) {
|
public JSONArray put(final long value) {
|
||||||
this.put(new Long(value));
|
this.put(Long.valueOf(value));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -658,7 +658,7 @@ public class JSONArray {
|
|||||||
* @throws JSONException If the index is negative.
|
* @throws JSONException If the index is negative.
|
||||||
*/
|
*/
|
||||||
public JSONArray put(final int index, final int value) throws JSONException {
|
public JSONArray put(final int index, final int value) throws JSONException {
|
||||||
this.put(index, new Integer(value));
|
this.put(index, Integer.valueOf(value));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -674,7 +674,7 @@ public class JSONArray {
|
|||||||
* @throws JSONException If the index is negative.
|
* @throws JSONException If the index is negative.
|
||||||
*/
|
*/
|
||||||
public JSONArray put(final int index, final long value) throws JSONException {
|
public JSONArray put(final int index, final long value) throws JSONException {
|
||||||
this.put(index, new Long(value));
|
this.put(index, Long.valueOf(value));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -452,7 +452,7 @@ public class JSONObject {
|
|||||||
return d;
|
return d;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
final Long myLong = new Long(string);
|
final Long myLong = Long.valueOf(string);
|
||||||
if (string.equals(myLong.toString())) {
|
if (string.equals(myLong.toString())) {
|
||||||
if (myLong == myLong.intValue()) {
|
if (myLong == myLong.intValue()) {
|
||||||
return myLong.intValue();
|
return myLong.intValue();
|
||||||
|
@ -8,18 +8,19 @@ import java.util.Iterator;
|
|||||||
* @author JSON.org
|
* @author JSON.org
|
||||||
* @version 2014-05-03
|
* @version 2014-05-03
|
||||||
*/
|
*/
|
||||||
public class XML {
|
class XML {
|
||||||
public static final Character AMP = '&';
|
|
||||||
public static final Character APOS = '\'';
|
|
||||||
public static final Character BANG = '!';
|
|
||||||
public static final Character EQ = '=';
|
|
||||||
public static final Character GT = '>';
|
|
||||||
public static final Character LT = '<';
|
|
||||||
public static final Character QUEST = '?';
|
|
||||||
public static final Character QUOT = '"';
|
|
||||||
public static final Character SLASH = '/';
|
|
||||||
|
|
||||||
public static String escape(final String string) {
|
static final Character AMP = '&';
|
||||||
|
static final Character APOS = '\'';
|
||||||
|
static final Character BANG = '!';
|
||||||
|
static final Character EQ = '=';
|
||||||
|
static final Character GT = '>';
|
||||||
|
static final Character LT = '<';
|
||||||
|
static final Character QUEST = '?';
|
||||||
|
static final Character QUOT = '"';
|
||||||
|
static final Character SLASH = '/';
|
||||||
|
|
||||||
|
static String escape(final String string) {
|
||||||
final StringBuilder sb = new StringBuilder(string.length());
|
final StringBuilder sb = new StringBuilder(string.length());
|
||||||
for (int i = 0, length = string.length(); i < length; i++) {
|
for (int i = 0, length = string.length(); i < length; i++) {
|
||||||
final char c = string.charAt(i);
|
final char c = string.charAt(i);
|
||||||
@ -53,14 +54,13 @@ public class XML {
|
|||||||
*
|
*
|
||||||
* @throws JSONException
|
* @throws JSONException
|
||||||
*/
|
*/
|
||||||
public static void noSpace(final String string) throws JSONException {
|
static void noSpace(final String string) throws JSONException {
|
||||||
int i;
|
|
||||||
final int length = string.length();
|
final int length = string.length();
|
||||||
if (length == 0) {
|
if (length == 0) {
|
||||||
throw new JSONException("Empty string.");
|
throw new JSONException("Empty string.");
|
||||||
}
|
}
|
||||||
for (i = 0; i < length; i += 1) {
|
for (char c : string.toCharArray()) {
|
||||||
if (Character.isWhitespace(string.charAt(i))) {
|
if (Character.isWhitespace(c)) {
|
||||||
throw new JSONException("'" + string + "' contains a space character.");
|
throw new JSONException("'" + string + "' contains a space character.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -78,12 +78,6 @@ public class XML {
|
|||||||
* @throws JSONException
|
* @throws JSONException
|
||||||
*/
|
*/
|
||||||
private static boolean parse(final XMLTokener x, final JSONObject context, final String name) throws JSONException {
|
private static boolean parse(final XMLTokener x, final JSONObject context, final String name) throws JSONException {
|
||||||
char c;
|
|
||||||
int i;
|
|
||||||
JSONObject jsonobject = null;
|
|
||||||
String string;
|
|
||||||
String tagName;
|
|
||||||
Object token;
|
|
||||||
// Test for and skip past these forms:
|
// Test for and skip past these forms:
|
||||||
// <!-- ... -->
|
// <!-- ... -->
|
||||||
// <! ... >
|
// <! ... >
|
||||||
@ -93,10 +87,11 @@ public class XML {
|
|||||||
// <>
|
// <>
|
||||||
// <=
|
// <=
|
||||||
// <<
|
// <<
|
||||||
token = x.nextToken();
|
Object token = x.nextToken();
|
||||||
// <!
|
// <!
|
||||||
|
String string;
|
||||||
if (token == BANG) {
|
if (token == BANG) {
|
||||||
c = x.next();
|
char c = x.next();
|
||||||
if (c == '-') {
|
if (c == '-') {
|
||||||
if (x.next() == '-') {
|
if (x.next() == '-') {
|
||||||
x.skipPast("-->");
|
x.skipPast("-->");
|
||||||
@ -116,7 +111,7 @@ public class XML {
|
|||||||
}
|
}
|
||||||
throw x.syntaxError("Expected 'CDATA['");
|
throw x.syntaxError("Expected 'CDATA['");
|
||||||
}
|
}
|
||||||
i = 1;
|
int i = 1;
|
||||||
do {
|
do {
|
||||||
token = x.nextMeta();
|
token = x.nextMeta();
|
||||||
if (token == null) {
|
if (token == null) {
|
||||||
@ -149,9 +144,9 @@ public class XML {
|
|||||||
throw x.syntaxError("Misshaped tag");
|
throw x.syntaxError("Misshaped tag");
|
||||||
// Open tag <
|
// Open tag <
|
||||||
} else {
|
} else {
|
||||||
tagName = (String) token;
|
String tagName = (String) token;
|
||||||
token = null;
|
token = null;
|
||||||
jsonobject = new JSONObject();
|
JSONObject jsonobject = new JSONObject();
|
||||||
for (;;) {
|
for (;;) {
|
||||||
if (token == null) {
|
if (token == null) {
|
||||||
token = x.nextToken();
|
token = x.nextToken();
|
||||||
@ -225,7 +220,7 @@ public class XML {
|
|||||||
*
|
*
|
||||||
* @return A simple JSON value.
|
* @return A simple JSON value.
|
||||||
*/
|
*/
|
||||||
public static Object stringToValue(final String string) {
|
static Object stringToValue(final String string) {
|
||||||
if ("true".equalsIgnoreCase(string)) {
|
if ("true".equalsIgnoreCase(string)) {
|
||||||
return Boolean.TRUE;
|
return Boolean.TRUE;
|
||||||
}
|
}
|
||||||
@ -292,12 +287,8 @@ public class XML {
|
|||||||
final StringBuilder sb = new StringBuilder();
|
final StringBuilder sb = new StringBuilder();
|
||||||
int i;
|
int i;
|
||||||
JSONArray ja;
|
JSONArray ja;
|
||||||
JSONObject jo;
|
|
||||||
String key;
|
|
||||||
Iterator<String> keys;
|
|
||||||
int length;
|
int length;
|
||||||
String string;
|
String string;
|
||||||
Object value;
|
|
||||||
if (object instanceof JSONObject) {
|
if (object instanceof JSONObject) {
|
||||||
// Emit <tagName>
|
// Emit <tagName>
|
||||||
if (tagName != null) {
|
if (tagName != null) {
|
||||||
@ -306,11 +297,11 @@ public class XML {
|
|||||||
sb.append('>');
|
sb.append('>');
|
||||||
}
|
}
|
||||||
// Loop thru the keys.
|
// Loop thru the keys.
|
||||||
jo = (JSONObject) object;
|
JSONObject jo = (JSONObject) object;
|
||||||
keys = jo.keys();
|
Iterator<String> keys = jo.keys();
|
||||||
while (keys.hasNext()) {
|
while (keys.hasNext()) {
|
||||||
key = keys.next();
|
String key = keys.next();
|
||||||
value = jo.opt(key);
|
Object value = jo.opt(key);
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
value = "";
|
value = "";
|
||||||
}
|
}
|
||||||
@ -378,7 +369,7 @@ public class XML {
|
|||||||
}
|
}
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
} else {
|
} else {
|
||||||
string = (object == null) ? "null" : escape(object.toString());
|
string = escape(object.toString());
|
||||||
return (tagName == null) ? "\"" + string + "\"" :
|
return (tagName == null) ? "\"" + string + "\"" :
|
||||||
(string.isEmpty()) ? "<" + tagName + "/>" : "<" + tagName + ">" + string + "</" + tagName + ">";
|
(string.isEmpty()) ? "<" + tagName + "/>" : "<" + tagName + ">" + string + "</" + tagName + ">";
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,11 @@ import com.intellectualcrafters.plot.commands.WE_Anywhere;
|
|||||||
import com.intellectualcrafters.plot.config.C;
|
import com.intellectualcrafters.plot.config.C;
|
||||||
import com.intellectualcrafters.plot.config.Configuration;
|
import com.intellectualcrafters.plot.config.Configuration;
|
||||||
import com.intellectualcrafters.plot.config.Settings;
|
import com.intellectualcrafters.plot.config.Settings;
|
||||||
import com.intellectualcrafters.plot.database.*;
|
import com.intellectualcrafters.plot.database.DBFunc;
|
||||||
|
import com.intellectualcrafters.plot.database.Database;
|
||||||
|
import com.intellectualcrafters.plot.database.MySQL;
|
||||||
|
import com.intellectualcrafters.plot.database.SQLManager;
|
||||||
|
import com.intellectualcrafters.plot.database.SQLite;
|
||||||
import com.intellectualcrafters.plot.flag.AbstractFlag;
|
import com.intellectualcrafters.plot.flag.AbstractFlag;
|
||||||
import com.intellectualcrafters.plot.flag.FlagManager;
|
import com.intellectualcrafters.plot.flag.FlagManager;
|
||||||
import com.intellectualcrafters.plot.flag.FlagValue;
|
import com.intellectualcrafters.plot.flag.FlagValue;
|
||||||
@ -16,21 +20,67 @@ import com.intellectualcrafters.plot.generator.GeneratorWrapper;
|
|||||||
import com.intellectualcrafters.plot.generator.HybridPlotWorld;
|
import com.intellectualcrafters.plot.generator.HybridPlotWorld;
|
||||||
import com.intellectualcrafters.plot.generator.HybridUtils;
|
import com.intellectualcrafters.plot.generator.HybridUtils;
|
||||||
import com.intellectualcrafters.plot.generator.IndependentPlotGenerator;
|
import com.intellectualcrafters.plot.generator.IndependentPlotGenerator;
|
||||||
import com.intellectualcrafters.plot.object.*;
|
import com.intellectualcrafters.plot.object.Location;
|
||||||
import com.intellectualcrafters.plot.util.*;
|
import com.intellectualcrafters.plot.object.Plot;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotAnalysis;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotArea;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotCluster;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotFilter;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotId;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotManager;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotPlayer;
|
||||||
|
import com.intellectualcrafters.plot.object.RegionWrapper;
|
||||||
|
import com.intellectualcrafters.plot.object.RunnableVal;
|
||||||
|
import com.intellectualcrafters.plot.util.AbstractTitle;
|
||||||
|
import com.intellectualcrafters.plot.util.ChatManager;
|
||||||
|
import com.intellectualcrafters.plot.util.ChunkManager;
|
||||||
|
import com.intellectualcrafters.plot.util.CommentManager;
|
||||||
|
import com.intellectualcrafters.plot.util.EconHandler;
|
||||||
|
import com.intellectualcrafters.plot.util.EventUtil;
|
||||||
|
import com.intellectualcrafters.plot.util.ExpireManager;
|
||||||
|
import com.intellectualcrafters.plot.util.InventoryUtil;
|
||||||
|
import com.intellectualcrafters.plot.util.MainUtil;
|
||||||
|
import com.intellectualcrafters.plot.util.MathMan;
|
||||||
|
import com.intellectualcrafters.plot.util.PlotGamemode;
|
||||||
|
import com.intellectualcrafters.plot.util.PlotWeather;
|
||||||
|
import com.intellectualcrafters.plot.util.ReflectionUtils;
|
||||||
|
import com.intellectualcrafters.plot.util.SchematicHandler;
|
||||||
|
import com.intellectualcrafters.plot.util.SetQueue;
|
||||||
|
import com.intellectualcrafters.plot.util.SetupUtils;
|
||||||
|
import com.intellectualcrafters.plot.util.StringMan;
|
||||||
|
import com.intellectualcrafters.plot.util.TaskManager;
|
||||||
|
import com.intellectualcrafters.plot.util.UUIDHandler;
|
||||||
|
import com.intellectualcrafters.plot.util.WorldUtil;
|
||||||
import com.intellectualcrafters.plot.util.area.QuadMap;
|
import com.intellectualcrafters.plot.util.area.QuadMap;
|
||||||
import com.plotsquared.listener.WESubscriber;
|
import com.plotsquared.listener.WESubscriber;
|
||||||
import com.sk89q.worldedit.WorldEdit;
|
import com.sk89q.worldedit.WorldEdit;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.net.URLConnection;
|
import java.net.URLConnection;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.*;
|
import java.util.ArrayDeque;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.UUID;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
import java.util.zip.ZipEntry;
|
import java.util.zip.ZipEntry;
|
||||||
import java.util.zip.ZipInputStream;
|
import java.util.zip.ZipInputStream;
|
||||||
@ -46,12 +96,7 @@ public class PS {
|
|||||||
|
|
||||||
// protected static:
|
// protected static:
|
||||||
private static PS instance;
|
private static PS instance;
|
||||||
private HashSet<Integer> plotareaHashCheck = new HashSet<>();
|
private final HashSet<Integer> plotareaHashCheck = new HashSet<>();
|
||||||
private boolean plotareaHasCollision = false;
|
|
||||||
/**
|
|
||||||
* All plot areas (quick global access)
|
|
||||||
*/
|
|
||||||
private PlotArea[] plotareas = new PlotArea[0];
|
|
||||||
/**
|
/**
|
||||||
* All plot areas mapped by world (quick world access)
|
* All plot areas mapped by world (quick world access)
|
||||||
*/
|
*/
|
||||||
@ -73,6 +118,11 @@ public class PS {
|
|||||||
public TaskManager TASK;
|
public TaskManager TASK;
|
||||||
public WorldEdit worldedit;
|
public WorldEdit worldedit;
|
||||||
public URL update;
|
public URL update;
|
||||||
|
private boolean plotareaHasCollision = false;
|
||||||
|
/**
|
||||||
|
* All plot areas (quick global access)
|
||||||
|
*/
|
||||||
|
private PlotArea[] plotareas = new PlotArea[0];
|
||||||
// private:
|
// private:
|
||||||
private File storageFile;
|
private File storageFile;
|
||||||
private File FILE = null; // This file
|
private File FILE = null; // This file
|
||||||
@ -1511,7 +1561,7 @@ public class PS {
|
|||||||
}
|
}
|
||||||
for (String areaId : areasSection.getKeys(false)) {
|
for (String areaId : areasSection.getKeys(false)) {
|
||||||
log(C.PREFIX.s() + "&3 - " + areaId);
|
log(C.PREFIX.s() + "&3 - " + areaId);
|
||||||
String[] split = areaId.split("(?<![;])-");
|
String[] split = areaId.split("([^\\-]+)(?:-{1})(-{0,1}\\d+\\;-{0,1}\\d+)(?:-{1})(-{0,1}\\d+\\;-{0,1}\\d+)");
|
||||||
if (split.length != 3) {
|
if (split.length != 3) {
|
||||||
throw new IllegalArgumentException("Invalid Area identifier: " + areaId + ". Expected form `<name>-<pos1>-<pos2>`");
|
throw new IllegalArgumentException("Invalid Area identifier: " + areaId + ". Expected form `<name>-<pos1>-<pos2>`");
|
||||||
}
|
}
|
||||||
@ -1904,6 +1954,7 @@ public class PS {
|
|||||||
FlagManager.addFlag(new AbstractFlag("block-ignition", new FlagValue.BooleanValue()));
|
FlagManager.addFlag(new AbstractFlag("block-ignition", new FlagValue.BooleanValue()));
|
||||||
FlagManager.addFlag(new AbstractFlag("block-burn", new FlagValue.BooleanValue()));
|
FlagManager.addFlag(new AbstractFlag("block-burn", new FlagValue.BooleanValue()));
|
||||||
FlagManager.addFlag(new AbstractFlag("fire-spread", new FlagValue.BooleanValue()));
|
FlagManager.addFlag(new AbstractFlag("fire-spread", new FlagValue.BooleanValue()));
|
||||||
|
FlagManager.addFlag(new AbstractFlag("snow-melt", new FlagValue.BooleanValue()));
|
||||||
FlagManager.addFlag(new AbstractFlag("keep") {
|
FlagManager.addFlag(new AbstractFlag("keep") {
|
||||||
@Override
|
@Override
|
||||||
public Object parseValueRaw(final String value) {
|
public Object parseValueRaw(final String value) {
|
||||||
@ -2315,7 +2366,7 @@ public class PS {
|
|||||||
*/
|
*/
|
||||||
private void setupStorage() {
|
private void setupStorage() {
|
||||||
storage.set("version", StringMan.join(VERSION, "."));
|
storage.set("version", StringMan.join(VERSION, "."));
|
||||||
final Map<String, Object> options = new HashMap<>();
|
final Map<String, Object> options = new HashMap<>(9);
|
||||||
options.put("mysql.use", false);
|
options.put("mysql.use", false);
|
||||||
options.put("sqlite.use", true);
|
options.put("sqlite.use", true);
|
||||||
options.put("sqlite.db", "storage");
|
options.put("sqlite.db", "storage");
|
||||||
@ -2346,7 +2397,7 @@ public class PS {
|
|||||||
*/
|
*/
|
||||||
private void showDebug() {
|
private void showDebug() {
|
||||||
if (Settings.DEBUG) {
|
if (Settings.DEBUG) {
|
||||||
final Map<String, String> settings = new HashMap<>();
|
final Map<String, String> settings = new HashMap<>(9);
|
||||||
settings.put("Kill Road Mobs", "" + Settings.KILL_ROAD_MOBS);
|
settings.put("Kill Road Mobs", "" + Settings.KILL_ROAD_MOBS);
|
||||||
settings.put("Use Metrics", "" + Settings.METRICS);
|
settings.put("Use Metrics", "" + Settings.METRICS);
|
||||||
settings.put("Delete Plots On Ban", "" + Settings.DELETE_PLOTS_ON_BAN);
|
settings.put("Delete Plots On Ban", "" + Settings.DELETE_PLOTS_ON_BAN);
|
||||||
|
@ -7,8 +7,24 @@ import com.intellectualcrafters.plot.config.Configuration;
|
|||||||
import com.intellectualcrafters.plot.generator.AugmentedUtils;
|
import com.intellectualcrafters.plot.generator.AugmentedUtils;
|
||||||
import com.intellectualcrafters.plot.generator.HybridGen;
|
import com.intellectualcrafters.plot.generator.HybridGen;
|
||||||
import com.intellectualcrafters.plot.generator.HybridPlotWorld;
|
import com.intellectualcrafters.plot.generator.HybridPlotWorld;
|
||||||
import com.intellectualcrafters.plot.object.*;
|
import com.intellectualcrafters.plot.object.ChunkLoc;
|
||||||
import com.intellectualcrafters.plot.util.*;
|
import com.intellectualcrafters.plot.object.Location;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotArea;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotId;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotMessage;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotPlayer;
|
||||||
|
import com.intellectualcrafters.plot.object.RegionWrapper;
|
||||||
|
import com.intellectualcrafters.plot.object.RunnableVal;
|
||||||
|
import com.intellectualcrafters.plot.object.RunnableVal3;
|
||||||
|
import com.intellectualcrafters.plot.object.SetupObject;
|
||||||
|
import com.intellectualcrafters.plot.util.ChunkManager;
|
||||||
|
import com.intellectualcrafters.plot.util.CmdConfirm;
|
||||||
|
import com.intellectualcrafters.plot.util.MainUtil;
|
||||||
|
import com.intellectualcrafters.plot.util.MathMan;
|
||||||
|
import com.intellectualcrafters.plot.util.Permissions;
|
||||||
|
import com.intellectualcrafters.plot.util.SetupUtils;
|
||||||
|
import com.intellectualcrafters.plot.util.StringMan;
|
||||||
|
import com.intellectualcrafters.plot.util.WorldUtil;
|
||||||
import com.plotsquared.general.commands.CommandDeclaration;
|
import com.plotsquared.general.commands.CommandDeclaration;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -16,14 +32,8 @@ import java.util.ArrayList;
|
|||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@CommandDeclaration(
|
@CommandDeclaration(command = "area", permission = "plots.area", category = CommandCategory.ADMINISTRATION, requiredType = RequiredType.NONE,
|
||||||
command = "area",
|
description = "Create a new PlotArea", aliases = "world", usage = "/plot area <create|info|list|tp|regen>")
|
||||||
permission = "plots.area",
|
|
||||||
category = CommandCategory.ADMINISTRATION,
|
|
||||||
requiredType = RequiredType.NONE,
|
|
||||||
description = "Create a new PlotArea",
|
|
||||||
aliases = { "world" },
|
|
||||||
usage = "/plot area <create|info|list|tp|regen>")
|
|
||||||
public class Area extends SubCommand {
|
public class Area extends SubCommand {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -48,7 +58,7 @@ public class Area extends SubCommand {
|
|||||||
case 2: {
|
case 2: {
|
||||||
switch (args[1].toLowerCase()) {
|
switch (args[1].toLowerCase()) {
|
||||||
case "pos1": { // Set position 1
|
case "pos1": { // Set position 1
|
||||||
HybridPlotWorld area = plr.<HybridPlotWorld> getMeta("area_create_area");
|
HybridPlotWorld area = plr.getMeta("area_create_area");
|
||||||
if (area == null) {
|
if (area == null) {
|
||||||
C.COMMAND_SYNTAX.send(plr, "/plot area create [world[:id]] [<modifier>=<value>]...");
|
C.COMMAND_SYNTAX.send(plr, "/plot area create [world[:id]] [<modifier>=<value>]...");
|
||||||
return false;
|
return false;
|
||||||
@ -61,13 +71,13 @@ public class Area extends SubCommand {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
case "pos2": { // Set position 2 and finish creation for type=2 (partial)
|
case "pos2": { // Set position 2 and finish creation for type=2 (partial)
|
||||||
final HybridPlotWorld area = plr.<HybridPlotWorld> getMeta("area_create_area");
|
final HybridPlotWorld area = plr.getMeta("area_create_area");
|
||||||
if (area == null) {
|
if (area == null) {
|
||||||
C.COMMAND_SYNTAX.send(plr, "/plot area create [world[:id]] [<modifier>=<value>]...");
|
C.COMMAND_SYNTAX.send(plr, "/plot area create [world[:id]] [<modifier>=<value>]...");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
Location pos1 = plr.getLocation();
|
Location pos1 = plr.getLocation();
|
||||||
Location pos2 = plr.<Location> getMeta("area_pos1");
|
Location pos2 = plr.getMeta("area_pos1");
|
||||||
int dx = Math.abs(pos1.getX() - pos2.getX());
|
int dx = Math.abs(pos1.getX() - pos2.getX());
|
||||||
int dz = Math.abs(pos1.getZ() - pos2.getZ());
|
int dz = Math.abs(pos1.getZ() - pos2.getZ());
|
||||||
int numx = Math.max(1, (dx + 1 + area.ROAD_WIDTH + (area.SIZE / 2)) / area.SIZE);
|
int numx = Math.max(1, (dx + 1 + area.ROAD_WIDTH + (area.SIZE / 2)) / area.SIZE);
|
||||||
|
@ -32,14 +32,8 @@ import com.intellectualcrafters.plot.util.MainUtil;
|
|||||||
import com.intellectualcrafters.plot.util.Permissions;
|
import com.intellectualcrafters.plot.util.Permissions;
|
||||||
import com.plotsquared.general.commands.CommandDeclaration;
|
import com.plotsquared.general.commands.CommandDeclaration;
|
||||||
|
|
||||||
@CommandDeclaration(
|
@CommandDeclaration(command = "auto", permission = "plots.auto", category = CommandCategory.CLAIMING, requiredType = RequiredType.NONE,
|
||||||
command = "auto",
|
description = "Claim the nearest plot", aliases = "a", usage = "/plot auto [length,width]")
|
||||||
permission = "plots.auto",
|
|
||||||
category = CommandCategory.CLAIMING,
|
|
||||||
requiredType = RequiredType.NONE,
|
|
||||||
description = "Claim the nearest plot",
|
|
||||||
aliases = { "a" },
|
|
||||||
usage = "/plot auto [length,width]")
|
|
||||||
public class Auto extends SubCommand {
|
public class Auto extends SubCommand {
|
||||||
|
|
||||||
public static PlotId getNextPlotId(final PlotId id, final int step) {
|
public static PlotId getNextPlotId(final PlotId id, final int step) {
|
||||||
@ -149,7 +143,7 @@ public class Auto extends SubCommand {
|
|||||||
sendMessage(plr, C.REMOVED_BALANCE, cost + "");
|
sendMessage(plr, C.REMOVED_BALANCE, cost + "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (schematic != null && !schematic.equals("")) {
|
if (schematic != null && !schematic.isEmpty()) {
|
||||||
if (!plotarea.SCHEMATICS.contains(schematic.toLowerCase())) {
|
if (!plotarea.SCHEMATICS.contains(schematic.toLowerCase())) {
|
||||||
sendMessage(plr, C.SCHEMATIC_INVALID, "non-existent: " + schematic);
|
sendMessage(plr, C.SCHEMATIC_INVALID, "non-existent: " + schematic);
|
||||||
return true;
|
return true;
|
||||||
|
@ -31,14 +31,8 @@ import com.intellectualcrafters.plot.util.EconHandler;
|
|||||||
import com.intellectualcrafters.plot.util.Permissions;
|
import com.intellectualcrafters.plot.util.Permissions;
|
||||||
import com.plotsquared.general.commands.CommandDeclaration;
|
import com.plotsquared.general.commands.CommandDeclaration;
|
||||||
|
|
||||||
@CommandDeclaration(
|
@CommandDeclaration(command = "claim", aliases = "c", description = "Claim the current plot you're standing on", category = CommandCategory.CLAIMING,
|
||||||
command = "claim",
|
requiredType = RequiredType.NONE, permission = "plots.claim", usage = "/plot claim")
|
||||||
aliases = { "c" },
|
|
||||||
description = "Claim the current plot you're standing on",
|
|
||||||
category = CommandCategory.CLAIMING,
|
|
||||||
requiredType = RequiredType.NONE,
|
|
||||||
permission = "plots.claim",
|
|
||||||
usage = "/plot claim")
|
|
||||||
public class Claim extends SubCommand {
|
public class Claim extends SubCommand {
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(final PlotPlayer plr, final String... args) {
|
public boolean onCommand(final PlotPlayer plr, final String... args) {
|
||||||
@ -87,7 +81,7 @@ public class Claim extends SubCommand {
|
|||||||
}
|
}
|
||||||
sendMessage(plr, C.REMOVED_GRANTED_PLOT, "1", "" + (grants - 1));
|
sendMessage(plr, C.REMOVED_GRANTED_PLOT, "1", "" + (grants - 1));
|
||||||
}
|
}
|
||||||
if (!schematic.equals("")) {
|
if (!schematic.isEmpty()) {
|
||||||
if (world.SCHEMATIC_CLAIM_SPECIFY) {
|
if (world.SCHEMATIC_CLAIM_SPECIFY) {
|
||||||
if (!world.SCHEMATICS.contains(schematic.toLowerCase())) {
|
if (!world.SCHEMATICS.contains(schematic.toLowerCase())) {
|
||||||
return sendMessage(plr, C.SCHEMATIC_INVALID, "non-existent: " + schematic);
|
return sendMessage(plr, C.SCHEMATIC_INVALID, "non-existent: " + schematic);
|
||||||
|
@ -24,7 +24,13 @@ import com.intellectualcrafters.plot.PS;
|
|||||||
import com.intellectualcrafters.plot.config.C;
|
import com.intellectualcrafters.plot.config.C;
|
||||||
import com.intellectualcrafters.plot.config.Settings;
|
import com.intellectualcrafters.plot.config.Settings;
|
||||||
import com.intellectualcrafters.plot.database.DBFunc;
|
import com.intellectualcrafters.plot.database.DBFunc;
|
||||||
import com.intellectualcrafters.plot.object.*;
|
import com.intellectualcrafters.plot.object.BlockLoc;
|
||||||
|
import com.intellectualcrafters.plot.object.Location;
|
||||||
|
import com.intellectualcrafters.plot.object.Plot;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotArea;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotCluster;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotId;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotPlayer;
|
||||||
import com.intellectualcrafters.plot.util.MainUtil;
|
import com.intellectualcrafters.plot.util.MainUtil;
|
||||||
import com.intellectualcrafters.plot.util.Permissions;
|
import com.intellectualcrafters.plot.util.Permissions;
|
||||||
import com.intellectualcrafters.plot.util.UUIDHandler;
|
import com.intellectualcrafters.plot.util.UUIDHandler;
|
||||||
@ -35,13 +41,8 @@ import java.util.HashSet;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@CommandDeclaration(
|
@CommandDeclaration(command = "cluster", aliases = "clusters", category = CommandCategory.ADMINISTRATION, requiredType = RequiredType.NONE,
|
||||||
command = "cluster",
|
permission = "plots.cluster", description = "Manage a plot cluster")
|
||||||
aliases = { "clusters" },
|
|
||||||
category = CommandCategory.ADMINISTRATION,
|
|
||||||
requiredType = RequiredType.NONE,
|
|
||||||
permission = "plots.cluster",
|
|
||||||
description = "Manage a plot cluster")
|
|
||||||
public class Cluster extends SubCommand {
|
public class Cluster extends SubCommand {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -379,7 +380,6 @@ public class Cluster extends SubCommand {
|
|||||||
for (final Plot plot : new ArrayList<>(PS.get().getPlots(plr.getLocation().getWorld(), uuid))) {
|
for (final Plot plot : new ArrayList<>(PS.get().getPlots(plr.getLocation().getWorld(), uuid))) {
|
||||||
final PlotCluster current = plot.getCluster();
|
final PlotCluster current = plot.getCluster();
|
||||||
if ((current != null) && current.equals(cluster)) {
|
if ((current != null) && current.equals(cluster)) {
|
||||||
plr.getLocation().getWorld();
|
|
||||||
plot.unclaim();
|
plot.unclaim();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -94,12 +94,12 @@ public class Condense extends SubCommand {
|
|||||||
int size = sizes.get(i);
|
int size = sizes.get(i);
|
||||||
ArrayList<Plot> array = buckets[size];
|
ArrayList<Plot> array = buckets[size];
|
||||||
if (array == null) {
|
if (array == null) {
|
||||||
array = new ArrayList<Plot>();
|
array = new ArrayList<>();
|
||||||
buckets[size] = array;
|
buckets[size] = array;
|
||||||
}
|
}
|
||||||
array.add(plot);
|
array.add(plot);
|
||||||
}
|
}
|
||||||
final ArrayList<Plot> allPlots = new ArrayList<Plot>(plots.size());
|
final ArrayList<Plot> allPlots = new ArrayList<>(plots.size());
|
||||||
for (int i = buckets.length - 1; i >= 0; i--) {
|
for (int i = buckets.length - 1; i >= 0; i--) {
|
||||||
ArrayList<Plot> array = buckets[i];
|
ArrayList<Plot> array = buckets[i];
|
||||||
if (array != null) {
|
if (array != null) {
|
||||||
|
@ -20,8 +20,6 @@
|
|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
package com.intellectualcrafters.plot.commands;
|
package com.intellectualcrafters.plot.commands;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import com.intellectualcrafters.plot.config.C;
|
import com.intellectualcrafters.plot.config.C;
|
||||||
import com.intellectualcrafters.plot.database.DBFunc;
|
import com.intellectualcrafters.plot.database.DBFunc;
|
||||||
import com.intellectualcrafters.plot.object.Plot;
|
import com.intellectualcrafters.plot.object.Plot;
|
||||||
@ -32,8 +30,9 @@ import com.intellectualcrafters.plot.object.RunnableVal;
|
|||||||
import com.intellectualcrafters.plot.util.MainUtil;
|
import com.intellectualcrafters.plot.util.MainUtil;
|
||||||
import com.plotsquared.general.commands.CommandDeclaration;
|
import com.plotsquared.general.commands.CommandDeclaration;
|
||||||
|
|
||||||
@CommandDeclaration(command = "info", aliases = { "i" }, description = "Display plot info", usage = "/plot info <id>",
|
import java.util.UUID;
|
||||||
category = CommandCategory.INFO)
|
|
||||||
|
@CommandDeclaration(command = "info", aliases = "i", description = "Display plot info", usage = "/plot info <id>", category = CommandCategory.INFO)
|
||||||
public class Info extends SubCommand {
|
public class Info extends SubCommand {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -73,7 +72,7 @@ public class Info extends SubCommand {
|
|||||||
plot = player.getCurrentPlot();
|
plot = player.getCurrentPlot();
|
||||||
}
|
}
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
MainUtil.sendMessage(player, C.NOT_IN_PLOT);
|
MainUtil.sendMessage(player, C.NOT_IN_PLOT.s());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (arg != null) {
|
if (arg != null) {
|
||||||
@ -116,8 +115,8 @@ public class Info extends SubCommand {
|
|||||||
boolean trustedEveryone;
|
boolean trustedEveryone;
|
||||||
// Wildcard player {added}
|
// Wildcard player {added}
|
||||||
{
|
{
|
||||||
containsEveryone = (plot.getTrusted() != null) && plot.getTrusted().contains(DBFunc.everyone);
|
containsEveryone = plot.getTrusted().contains(DBFunc.everyone);
|
||||||
trustedEveryone = (plot.getMembers() != null) && plot.getMembers().contains(DBFunc.everyone);
|
trustedEveryone = plot.getMembers().contains(DBFunc.everyone);
|
||||||
}
|
}
|
||||||
// Unclaimed?
|
// Unclaimed?
|
||||||
if (!hasOwner && !containsEveryone && !trustedEveryone) {
|
if (!hasOwner && !containsEveryone && !trustedEveryone) {
|
||||||
|
@ -41,7 +41,6 @@ import com.plotsquared.general.commands.CommandManager;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -53,7 +52,6 @@ import java.util.List;
|
|||||||
public class MainCommand extends CommandManager<PlotPlayer> {
|
public class MainCommand extends CommandManager<PlotPlayer> {
|
||||||
|
|
||||||
private static MainCommand instance;
|
private static MainCommand instance;
|
||||||
private HashMap<String, Command<PlotPlayer>> setCommands;
|
|
||||||
|
|
||||||
private MainCommand() {
|
private MainCommand() {
|
||||||
super(null, new ArrayList<Command<PlotPlayer>>());
|
super(null, new ArrayList<Command<PlotPlayer>>());
|
||||||
@ -282,8 +280,8 @@ public class MainCommand extends CommandManager<PlotPlayer> {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// Save meta
|
// Save meta
|
||||||
loc = (Location) player.getMeta("location");
|
loc = player.getMeta("location");
|
||||||
plot = (Plot) player.getMeta("lastplot");
|
plot = player.getMeta("lastplot");
|
||||||
tp = true;
|
tp = true;
|
||||||
// Set loc
|
// Set loc
|
||||||
player.setMeta("location", newPlot.getBottomAbs());
|
player.setMeta("location", newPlot.getBottomAbs());
|
||||||
@ -320,7 +318,7 @@ public class MainCommand extends CommandManager<PlotPlayer> {
|
|||||||
public int getMatch(String[] args, Command<PlotPlayer> cmd) {
|
public int getMatch(String[] args, Command<PlotPlayer> cmd) {
|
||||||
int count = 0;
|
int count = 0;
|
||||||
String perm = cmd.getPermission();
|
String perm = cmd.getPermission();
|
||||||
HashSet<String> desc = new HashSet<String>();
|
HashSet<String> desc = new HashSet<>();
|
||||||
for (String alias : cmd.getAliases()) {
|
for (String alias : cmd.getAliases()) {
|
||||||
if (alias.startsWith(args[0])) {
|
if (alias.startsWith(args[0])) {
|
||||||
count += 5;
|
count += 5;
|
||||||
|
@ -89,8 +89,7 @@ public class Merge extends SubCommand {
|
|||||||
}
|
}
|
||||||
final PlotArea plotworld = plot.getArea();
|
final PlotArea plotworld = plot.getArea();
|
||||||
final double price = plotworld.PRICES.get("merge");
|
final double price = plotworld.PRICES.get("merge");
|
||||||
if (EconHandler.manager != null && plotworld.USE_ECONOMY && price > 0d
|
if (EconHandler.manager != null && plotworld.USE_ECONOMY && price > 0d && EconHandler.manager.getMoney(plr) < price) {
|
||||||
&& EconHandler.manager.getMoney(plr) < price) {
|
|
||||||
sendMessage(plr, C.CANNOT_AFFORD_MERGE, price + "");
|
sendMessage(plr, C.CANNOT_AFFORD_MERGE, price + "");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -123,7 +122,7 @@ public class Merge extends SubCommand {
|
|||||||
terrain = "true".equalsIgnoreCase(args[1]);
|
terrain = "true".equalsIgnoreCase(args[1]);
|
||||||
}
|
}
|
||||||
if (plot.autoMerge(-1, maxSize, uuid, terrain)) {
|
if (plot.autoMerge(-1, maxSize, uuid, terrain)) {
|
||||||
if (EconHandler.manager != null && price > 0d) {
|
if (EconHandler.manager != null && plotworld.USE_ECONOMY && price > 0d) {
|
||||||
EconHandler.manager.withdrawMoney(plr, price);
|
EconHandler.manager.withdrawMoney(plr, price);
|
||||||
sendMessage(plr, C.REMOVED_BALANCE, price + "");
|
sendMessage(plr, C.REMOVED_BALANCE, price + "");
|
||||||
}
|
}
|
||||||
|
@ -44,14 +44,8 @@ import java.util.HashMap;
|
|||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@CommandDeclaration(
|
@CommandDeclaration(command = "rate", permission = "plots.rate", description = "Rate the plot", usage = "/plot rate [#|next]", aliases = "rt",
|
||||||
command = "rate",
|
category = CommandCategory.INFO, requiredType = RequiredType.NONE)
|
||||||
permission = "plots.rate",
|
|
||||||
description = "Rate the plot",
|
|
||||||
usage = "/plot rate [#|next]",
|
|
||||||
aliases = {"rt"},
|
|
||||||
category = CommandCategory.INFO,
|
|
||||||
requiredType = RequiredType.NONE)
|
|
||||||
public class Rate extends SubCommand {
|
public class Rate extends SubCommand {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -221,21 +215,23 @@ public class Rate extends SubCommand {
|
|||||||
|
|
||||||
private int value;
|
private int value;
|
||||||
|
|
||||||
public MutableInt(int i) {
|
MutableInt(int i) {
|
||||||
value = i;
|
value = i;
|
||||||
}
|
}
|
||||||
public void increment() {
|
|
||||||
|
void increment() {
|
||||||
value++;
|
value++;
|
||||||
}
|
}
|
||||||
public void decrement() {
|
|
||||||
|
void decrement() {
|
||||||
value--;
|
value--;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getValue() {
|
int getValue() {
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void add(Number v) {
|
void add(Number v) {
|
||||||
this.value += v.intValue();
|
this.value += v.intValue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -31,7 +31,14 @@ import com.intellectualcrafters.plot.object.PlotMessage;
|
|||||||
import com.intellectualcrafters.plot.object.PlotPlayer;
|
import com.intellectualcrafters.plot.object.PlotPlayer;
|
||||||
import com.intellectualcrafters.plot.object.Rating;
|
import com.intellectualcrafters.plot.object.Rating;
|
||||||
import com.intellectualcrafters.plot.object.RunnableVal3;
|
import com.intellectualcrafters.plot.object.RunnableVal3;
|
||||||
import com.intellectualcrafters.plot.util.*;
|
import com.intellectualcrafters.plot.util.EconHandler;
|
||||||
|
import com.intellectualcrafters.plot.util.ExpireManager;
|
||||||
|
import com.intellectualcrafters.plot.util.MainUtil;
|
||||||
|
import com.intellectualcrafters.plot.util.MathMan;
|
||||||
|
import com.intellectualcrafters.plot.util.Permissions;
|
||||||
|
import com.intellectualcrafters.plot.util.StringComparison;
|
||||||
|
import com.intellectualcrafters.plot.util.StringMan;
|
||||||
|
import com.intellectualcrafters.plot.util.UUIDHandler;
|
||||||
import com.plotsquared.general.commands.CommandDeclaration;
|
import com.plotsquared.general.commands.CommandDeclaration;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -97,7 +104,7 @@ public class list extends SubCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void noArgs(final PlotPlayer plr) {
|
public void noArgs(final PlotPlayer plr) {
|
||||||
MainUtil.sendMessage(plr, C.SUBCOMMAND_SET_OPTIONS_HEADER.s() + getArgumentList(plr));
|
MainUtil.sendMessage(plr, C.SUBCOMMAND_SET_OPTIONS_HEADER.s() + Arrays.toString(getArgumentList(plr)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -228,10 +235,9 @@ public class list extends SubCommand {
|
|||||||
@Override
|
@Override
|
||||||
public int compare(final Plot p1, final Plot p2) {
|
public int compare(final Plot p1, final Plot p2) {
|
||||||
double v1 = 0;
|
double v1 = 0;
|
||||||
double v2 = 0;
|
final int p1s = p1.getSettings().getRatings().size();
|
||||||
final int p1s = p1.getSettings().ratings != null ? p1.getSettings().ratings.size() : 0;
|
final int p2s = p2.getRatings().size();
|
||||||
final int p2s = p2.getSettings().ratings != null ? p2.getSettings().ratings.size() : 0;
|
if (!p1.getSettings().getRatings().isEmpty()) {
|
||||||
if ((p1.getSettings().ratings != null) && (p1s > 0)) {
|
|
||||||
for (final Entry<UUID, Rating> entry : p1.getRatings().entrySet()) {
|
for (final Entry<UUID, Rating> entry : p1.getRatings().entrySet()) {
|
||||||
final double av = entry.getValue().getAverageRating();
|
final double av = entry.getValue().getAverageRating();
|
||||||
v1 += av * av;
|
v1 += av * av;
|
||||||
@ -239,7 +245,8 @@ public class list extends SubCommand {
|
|||||||
v1 /= p1s;
|
v1 /= p1s;
|
||||||
v1 += p1s;
|
v1 += p1s;
|
||||||
}
|
}
|
||||||
if ((p2.getSettings().ratings != null) && (p2s > 0)) {
|
double v2 = 0;
|
||||||
|
if (!p2.getSettings().getRatings().isEmpty()) {
|
||||||
for (final Entry<UUID, Rating> entry : p2.getRatings().entrySet()) {
|
for (final Entry<UUID, Rating> entry : p2.getRatings().entrySet()) {
|
||||||
final double av = entry.getValue().getAverageRating();
|
final double av = entry.getValue().getAverageRating();
|
||||||
v2 += av * av;
|
v2 += av * av;
|
||||||
@ -415,13 +422,4 @@ public class list extends SubCommand {
|
|||||||
}, "/plot list " + args[0], C.PLOT_LIST_HEADER_PAGED.s());
|
}, "/plot list " + args[0], C.PLOT_LIST_HEADER_PAGED.s());
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getArgumentList(final String[] strings) {
|
|
||||||
final StringBuilder builder = new StringBuilder();
|
|
||||||
String prefix = "";
|
|
||||||
for (final String s : strings) {
|
|
||||||
builder.append(prefix + s);
|
|
||||||
prefix = " | ";
|
|
||||||
}
|
|
||||||
return builder.toString();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,13 @@
|
|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
package com.intellectualcrafters.plot.config;
|
package com.intellectualcrafters.plot.config;
|
||||||
|
|
||||||
|
import com.intellectualcrafters.configuration.ConfigurationSection;
|
||||||
|
import com.intellectualcrafters.configuration.file.YamlConfiguration;
|
||||||
|
import com.intellectualcrafters.plot.PS;
|
||||||
|
import com.intellectualcrafters.plot.object.ConsolePlayer;
|
||||||
|
import com.intellectualcrafters.plot.util.StringMan;
|
||||||
|
import com.plotsquared.general.commands.CommandCaller;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@ -28,13 +35,6 @@ import java.util.LinkedHashMap;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import com.intellectualcrafters.configuration.ConfigurationSection;
|
|
||||||
import com.intellectualcrafters.configuration.file.YamlConfiguration;
|
|
||||||
import com.intellectualcrafters.plot.PS;
|
|
||||||
import com.intellectualcrafters.plot.object.ConsolePlayer;
|
|
||||||
import com.intellectualcrafters.plot.util.StringMan;
|
|
||||||
import com.plotsquared.general.commands.CommandCaller;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Captions class.
|
* Captions class.
|
||||||
*
|
*
|
||||||
@ -655,9 +655,7 @@ public enum C {
|
|||||||
*/
|
*/
|
||||||
C(final String d, final boolean prefix, final String cat) {
|
C(final String d, final boolean prefix, final String cat) {
|
||||||
this.d = d;
|
this.d = d;
|
||||||
if (s == null) {
|
this.s = d;
|
||||||
s = d;
|
|
||||||
}
|
|
||||||
this.prefix = prefix;
|
this.prefix = prefix;
|
||||||
this.cat = cat.toLowerCase();
|
this.cat = cat.toLowerCase();
|
||||||
}
|
}
|
||||||
|
@ -122,18 +122,10 @@ public class Settings {
|
|||||||
* Max allowed plots
|
* Max allowed plots
|
||||||
*/
|
*/
|
||||||
public static int MAX_PLOTS = 127;
|
public static int MAX_PLOTS = 127;
|
||||||
/**
|
|
||||||
* WorldGuard region on claimed plots
|
|
||||||
*/
|
|
||||||
public static boolean WORLDGUARD = false;
|
|
||||||
/**
|
/**
|
||||||
* metrics
|
* metrics
|
||||||
*/
|
*/
|
||||||
public static boolean METRICS = true;
|
public static boolean METRICS = true;
|
||||||
/**
|
|
||||||
* plot specific resource pack
|
|
||||||
*/
|
|
||||||
public static String PLOT_SPECIFIC_RESOURCE_PACK = "";
|
|
||||||
/**
|
/**
|
||||||
* Kill road mobs?
|
* Kill road mobs?
|
||||||
*/
|
*/
|
||||||
|
@ -20,14 +20,14 @@
|
|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
package com.intellectualcrafters.plot.database;
|
package com.intellectualcrafters.plot.database;
|
||||||
|
|
||||||
|
import com.intellectualcrafters.plot.PS;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.DriverManager;
|
import java.sql.DriverManager;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.sql.Statement;
|
import java.sql.Statement;
|
||||||
|
|
||||||
import com.intellectualcrafters.plot.PS;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Connects to and uses a MySQL database
|
* Connects to and uses a MySQL database
|
||||||
*
|
*
|
||||||
@ -103,16 +103,18 @@ public class MySQL extends Database {
|
|||||||
if (checkConnection()) {
|
if (checkConnection()) {
|
||||||
openConnection();
|
openConnection();
|
||||||
}
|
}
|
||||||
final Statement statement = connection.createStatement();
|
try (Statement statement = connection.createStatement()) {
|
||||||
return statement.executeQuery(query);
|
return statement.executeQuery(query);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int updateSQL(final String query) throws SQLException, ClassNotFoundException {
|
public int updateSQL(final String query) throws SQLException, ClassNotFoundException {
|
||||||
if (checkConnection()) {
|
if (checkConnection()) {
|
||||||
openConnection();
|
openConnection();
|
||||||
}
|
}
|
||||||
final Statement statement = connection.createStatement();
|
try (Statement statement = connection.createStatement()) {
|
||||||
return statement.executeUpdate(query);
|
return statement.executeUpdate(query);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
@ -25,15 +25,37 @@ import com.intellectualcrafters.plot.PS;
|
|||||||
import com.intellectualcrafters.plot.config.Settings;
|
import com.intellectualcrafters.plot.config.Settings;
|
||||||
import com.intellectualcrafters.plot.flag.Flag;
|
import com.intellectualcrafters.plot.flag.Flag;
|
||||||
import com.intellectualcrafters.plot.flag.FlagManager;
|
import com.intellectualcrafters.plot.flag.FlagManager;
|
||||||
import com.intellectualcrafters.plot.object.*;
|
import com.intellectualcrafters.plot.object.BlockLoc;
|
||||||
|
import com.intellectualcrafters.plot.object.Plot;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotArea;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotCluster;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotId;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotSettings;
|
||||||
|
import com.intellectualcrafters.plot.object.RunnableVal;
|
||||||
import com.intellectualcrafters.plot.object.comment.PlotComment;
|
import com.intellectualcrafters.plot.object.comment.PlotComment;
|
||||||
import com.intellectualcrafters.plot.util.MainUtil;
|
import com.intellectualcrafters.plot.util.MainUtil;
|
||||||
import com.intellectualcrafters.plot.util.StringMan;
|
import com.intellectualcrafters.plot.util.StringMan;
|
||||||
import com.intellectualcrafters.plot.util.TaskManager;
|
import com.intellectualcrafters.plot.util.TaskManager;
|
||||||
|
|
||||||
import java.sql.*;
|
import java.sql.Connection;
|
||||||
import java.util.*;
|
import java.sql.DatabaseMetaData;
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.sql.Statement;
|
||||||
|
import java.sql.Timestamp;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
import java.util.Queue;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.UUID;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
@ -1224,9 +1246,6 @@ public class SQLManager implements AbstractDB {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteSettings(final Plot plot) {
|
public void deleteSettings(final Plot plot) {
|
||||||
if (plot.settings == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
addPlotTask(plot, new UniqueStatement("delete_plot_settings") {
|
addPlotTask(plot, new UniqueStatement("delete_plot_settings") {
|
||||||
@Override
|
@Override
|
||||||
public void set(final PreparedStatement stmt) throws SQLException {
|
public void set(final PreparedStatement stmt) throws SQLException {
|
||||||
@ -1669,10 +1688,7 @@ public class SQLManager implements AbstractDB {
|
|||||||
}
|
}
|
||||||
final Plot plot = plots.get(id);
|
final Plot plot = plots.get(id);
|
||||||
if (plot != null) {
|
if (plot != null) {
|
||||||
if (plot.getSettings().ratings == null) {
|
plot.getSettings().getRatings().put(user, r.getInt("rating"));
|
||||||
plot.getSettings().ratings = new HashMap<>();
|
|
||||||
}
|
|
||||||
plot.getSettings().ratings.put(user, r.getInt("rating"));
|
|
||||||
} else if (Settings.AUTO_PURGE) {
|
} else if (Settings.AUTO_PURGE) {
|
||||||
toDelete.add(id);
|
toDelete.add(id);
|
||||||
} else {
|
} else {
|
||||||
@ -2561,7 +2577,8 @@ public class SQLManager implements AbstractDB {
|
|||||||
try {
|
try {
|
||||||
BlockLoc loc = BlockLoc.fromString(pos);
|
BlockLoc loc = BlockLoc.fromString(pos);
|
||||||
cluster.settings.setPosition(loc);
|
cluster.settings.setPosition(loc);
|
||||||
} catch (final Exception e) {}
|
} catch (final Exception ignored) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
final Integer m = r.getInt("merged");
|
final Integer m = r.getInt("merged");
|
||||||
final boolean[] merged = new boolean[4];
|
final boolean[] merged = new boolean[4];
|
||||||
|
@ -20,6 +20,8 @@
|
|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
package com.intellectualcrafters.plot.database;
|
package com.intellectualcrafters.plot.database;
|
||||||
|
|
||||||
|
import com.intellectualcrafters.plot.PS;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
@ -28,11 +30,10 @@ import java.sql.ResultSet;
|
|||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.sql.Statement;
|
import java.sql.Statement;
|
||||||
|
|
||||||
import com.intellectualcrafters.plot.PS;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Connects to and uses a SQLite database
|
* Connects to and uses a SQLite database
|
||||||
*
|
*
|
||||||
|
|
||||||
* @author tips48
|
* @author tips48
|
||||||
*/
|
*/
|
||||||
public class SQLite extends Database {
|
public class SQLite extends Database {
|
||||||
@ -94,18 +95,20 @@ public class SQLite extends Database {
|
|||||||
if (checkConnection()) {
|
if (checkConnection()) {
|
||||||
openConnection();
|
openConnection();
|
||||||
}
|
}
|
||||||
final Statement statement = connection.createStatement();
|
try (Statement statement = connection.createStatement()) {
|
||||||
return statement.executeQuery(query);
|
return statement.executeQuery(query);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int updateSQL(final String query) throws SQLException, ClassNotFoundException {
|
public int updateSQL(final String query) throws SQLException, ClassNotFoundException {
|
||||||
if (checkConnection()) {
|
if (checkConnection()) {
|
||||||
openConnection();
|
openConnection();
|
||||||
}
|
}
|
||||||
final Statement statement = connection.createStatement();
|
try (Statement statement = connection.createStatement()) {
|
||||||
return statement.executeUpdate(query);
|
return statement.executeUpdate(query);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Connection forceConnection() throws SQLException, ClassNotFoundException {
|
public Connection forceConnection() throws SQLException, ClassNotFoundException {
|
||||||
|
@ -97,16 +97,6 @@ public class HybridPlotWorld extends ClassicPlotWorld {
|
|||||||
case 163:
|
case 163:
|
||||||
case 164:
|
case 164:
|
||||||
case 180:
|
case 180:
|
||||||
data = wrap(data, 0);
|
|
||||||
data = wrap(data, 4);
|
|
||||||
data = wrap(data, 8);
|
|
||||||
data = wrap(data, 12);
|
|
||||||
return data;
|
|
||||||
|
|
||||||
case 26:
|
|
||||||
case 86:
|
|
||||||
data = wrap(data, 0);
|
|
||||||
return data;
|
|
||||||
case 64:
|
case 64:
|
||||||
case 71:
|
case 71:
|
||||||
case 193:
|
case 193:
|
||||||
@ -127,6 +117,11 @@ public class HybridPlotWorld extends ClassicPlotWorld {
|
|||||||
data = wrap(data, 8);
|
data = wrap(data, 8);
|
||||||
data = wrap(data, 12);
|
data = wrap(data, 12);
|
||||||
return data;
|
return data;
|
||||||
|
|
||||||
|
case 26:
|
||||||
|
case 86:
|
||||||
|
data = wrap(data, 0);
|
||||||
|
return data;
|
||||||
case 28:
|
case 28:
|
||||||
case 66:
|
case 66:
|
||||||
case 157:
|
case 157:
|
||||||
|
@ -115,9 +115,7 @@ public abstract class SquarePlotManager extends GridPlotManager {
|
|||||||
end = pathWidthLower + dpw.PLOT_WIDTH;
|
end = pathWidthLower + dpw.PLOT_WIDTH;
|
||||||
}
|
}
|
||||||
int dx;
|
int dx;
|
||||||
int dz;
|
|
||||||
int rx;
|
int rx;
|
||||||
int rz;
|
|
||||||
if (x < 0) {
|
if (x < 0) {
|
||||||
dx = (x / size);
|
dx = (x / size);
|
||||||
rx = size + (x % size);
|
rx = size + (x % size);
|
||||||
@ -125,6 +123,8 @@ public abstract class SquarePlotManager extends GridPlotManager {
|
|||||||
dx = (x / size) + 1;
|
dx = (x / size) + 1;
|
||||||
rx = (x % size);
|
rx = (x % size);
|
||||||
}
|
}
|
||||||
|
int dz;
|
||||||
|
int rz;
|
||||||
if (z < 0) {
|
if (z < 0) {
|
||||||
dz = (z / size);
|
dz = (z / size);
|
||||||
rz = size + (z % size);
|
rz = size + (z % size);
|
||||||
|
@ -29,18 +29,34 @@ import com.intellectualcrafters.plot.config.Settings;
|
|||||||
import com.intellectualcrafters.plot.database.DBFunc;
|
import com.intellectualcrafters.plot.database.DBFunc;
|
||||||
import com.intellectualcrafters.plot.flag.Flag;
|
import com.intellectualcrafters.plot.flag.Flag;
|
||||||
import com.intellectualcrafters.plot.flag.FlagManager;
|
import com.intellectualcrafters.plot.flag.FlagManager;
|
||||||
import com.intellectualcrafters.plot.util.*;
|
import com.intellectualcrafters.plot.util.BO3Handler;
|
||||||
|
import com.intellectualcrafters.plot.util.ChunkManager;
|
||||||
|
import com.intellectualcrafters.plot.util.EventUtil;
|
||||||
|
import com.intellectualcrafters.plot.util.MainUtil;
|
||||||
|
import com.intellectualcrafters.plot.util.Permissions;
|
||||||
|
import com.intellectualcrafters.plot.util.SchematicHandler;
|
||||||
|
import com.intellectualcrafters.plot.util.SetQueue;
|
||||||
|
import com.intellectualcrafters.plot.util.TaskManager;
|
||||||
|
import com.intellectualcrafters.plot.util.UUIDHandler;
|
||||||
|
import com.intellectualcrafters.plot.util.WorldUtil;
|
||||||
import com.plotsquared.listener.PlotListener;
|
import com.plotsquared.listener.PlotListener;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.Rectangle;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.PathIterator;
|
import java.awt.geom.PathIterator;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.*;
|
import java.util.ArrayDeque;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.UUID;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
@ -61,11 +77,9 @@ public class Plot {
|
|||||||
private static HashSet<Plot> connected_cache;
|
private static HashSet<Plot> connected_cache;
|
||||||
private static HashSet<RegionWrapper> regions_cache;
|
private static HashSet<RegionWrapper> regions_cache;
|
||||||
/**
|
/**
|
||||||
* plot ID
|
* The {@link PlotId}
|
||||||
* Direct access is Deprecated: use getId()
|
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
private final PlotId id;
|
||||||
public final PlotId id;
|
|
||||||
/**
|
/**
|
||||||
* plot owner
|
* plot owner
|
||||||
* (Merged plots can have multiple owners)
|
* (Merged plots can have multiple owners)
|
||||||
@ -73,39 +87,6 @@ public class Plot {
|
|||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public UUID owner;
|
public UUID owner;
|
||||||
/**
|
|
||||||
* Plot creation timestamp (not accurate if the plot was created before this was implemented)<br>
|
|
||||||
* - Milliseconds since the epoch<br>
|
|
||||||
* Direct access is Deprecated: use {@link #getTimestamp() getTimestamp}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public long timestamp;
|
|
||||||
/**
|
|
||||||
* List of trusted (with plot permissions)
|
|
||||||
* Direct access is Deprecated: use getTrusted()
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public HashSet<UUID> trusted;
|
|
||||||
/**
|
|
||||||
* List of members users (with plot permissions)
|
|
||||||
* Direct access is Deprecated: use getMembers()
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public HashSet<UUID> members;
|
|
||||||
/**
|
|
||||||
* List of denied players
|
|
||||||
* Direct access is Deprecated: use getDenied()
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public HashSet<UUID> denied;
|
|
||||||
/**
|
|
||||||
* External settings class<br>
|
|
||||||
* - Please favor the methods over direct access to this class<br>
|
|
||||||
* - The methods are more likely to be left unchanged from version changes<br>
|
|
||||||
* Direct access is Deprecated: use getSettings()
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public PlotSettings settings;
|
|
||||||
/**
|
/**
|
||||||
* Has the plot changed since the last save cycle?
|
* Has the plot changed since the last save cycle?
|
||||||
*/
|
*/
|
||||||
@ -119,8 +100,30 @@ public class Plot {
|
|||||||
@Deprecated
|
@Deprecated
|
||||||
public int temp;
|
public int temp;
|
||||||
/**
|
/**
|
||||||
* plot world
|
* Plot creation timestamp (not accurate if the plot was created before this was implemented)<br>
|
||||||
* Direct access is Deprecated: use getWorld()
|
* - Milliseconds since the epoch<br>
|
||||||
|
*/
|
||||||
|
private long timestamp;
|
||||||
|
/**
|
||||||
|
* List of trusted (with plot permissions)
|
||||||
|
*/
|
||||||
|
private HashSet<UUID> trusted;
|
||||||
|
/**
|
||||||
|
* List of members users (with plot permissions)
|
||||||
|
*/
|
||||||
|
private HashSet<UUID> members;
|
||||||
|
/**
|
||||||
|
* List of denied players
|
||||||
|
*/
|
||||||
|
private HashSet<UUID> denied;
|
||||||
|
/**
|
||||||
|
* External settings class<br>
|
||||||
|
* - Please favor the methods over direct access to this class<br>
|
||||||
|
* - The methods are more likely to be left unchanged from version changes<br>
|
||||||
|
*/
|
||||||
|
private PlotSettings settings;
|
||||||
|
/**
|
||||||
|
* The {@link PlotArea}
|
||||||
*/
|
*/
|
||||||
private PlotArea area;
|
private PlotArea area;
|
||||||
/**
|
/**
|
||||||
@ -486,10 +489,7 @@ public class Plot {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public boolean isBasePlot() {
|
public boolean isBasePlot() {
|
||||||
if ((this.settings == null) || !this.isMerged()) {
|
return !this.isMerged() || this.equals(this.getBasePlot(false));
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return this.equals(this.getBasePlot(false));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -530,10 +530,7 @@ public class Plot {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public boolean isMerged() {
|
public boolean isMerged() {
|
||||||
if (this.settings == null) {
|
return getSettings().getMerged(0) || getSettings().getMerged(2) || getSettings().getMerged(1) || getSettings().getMerged(3);
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return this.settings.getMerged(0) || this.settings.getMerged(2) || this.settings.getMerged(1) || this.settings.getMerged(3);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -567,20 +564,18 @@ public class Plot {
|
|||||||
* @return true if merged in that direction
|
* @return true if merged in that direction
|
||||||
*/
|
*/
|
||||||
public boolean getMerged(final int direction) {
|
public boolean getMerged(final int direction) {
|
||||||
if (this.settings == null) {
|
if (isMerged()) {
|
||||||
return false;
|
|
||||||
}
|
|
||||||
switch (direction) {
|
switch (direction) {
|
||||||
case 0:
|
case 0:
|
||||||
case 1:
|
case 1:
|
||||||
case 2:
|
case 2:
|
||||||
case 3:
|
case 3:
|
||||||
return this.settings.getMerged(direction);
|
return this.getSettings().getMerged(direction);
|
||||||
case 7:
|
case 7:
|
||||||
int i = direction - 4;
|
int i = direction - 4;
|
||||||
int i2 = 0;
|
int i2 = 0;
|
||||||
if (this.settings.getMerged(i2)) {
|
if (this.getSettings().getMerged(i2)) {
|
||||||
if (this.settings.getMerged(i)) {
|
if (this.getSettings().getMerged(i)) {
|
||||||
if (this.area.getPlotAbs(this.id.getRelative(i)).getMerged(i2)) {
|
if (this.area.getPlotAbs(this.id.getRelative(i)).getMerged(i2)) {
|
||||||
if (this.area.getPlotAbs(this.id.getRelative(i2)).getMerged(i)) {
|
if (this.area.getPlotAbs(this.id.getRelative(i2)).getMerged(i)) {
|
||||||
return true;
|
return true;
|
||||||
@ -594,13 +589,16 @@ public class Plot {
|
|||||||
case 6:
|
case 6:
|
||||||
i = direction - 4;
|
i = direction - 4;
|
||||||
i2 = direction - 3;
|
i2 = direction - 3;
|
||||||
return this.settings.getMerged(i2)
|
return this.getSettings().getMerged(i2)
|
||||||
&& this.settings.getMerged(i)
|
&& this.getSettings().getMerged(i)
|
||||||
&& this.area.getPlotAbs(this.id.getRelative(i)).getMerged(i2)
|
&& this.area.getPlotAbs(this.id.getRelative(i)).getMerged(i2)
|
||||||
&& this.area.getPlotAbs(this.id.getRelative(i2)).getMerged(i);
|
&& this.area.getPlotAbs(this.id.getRelative(i2)).getMerged(i);
|
||||||
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1132,17 +1130,13 @@ public class Plot {
|
|||||||
*/
|
*/
|
||||||
public void setHome(final BlockLoc loc) {
|
public void setHome(final BlockLoc loc) {
|
||||||
final BlockLoc pos = this.getSettings().getPosition();
|
final BlockLoc pos = this.getSettings().getPosition();
|
||||||
if ((((pos == null) || pos.equals(new BlockLoc(0, 0, 0))) && (loc == null)) || ((pos != null) && pos.equals(loc))) {
|
if (pos.equals(new BlockLoc(0, 0, 0)) && loc == null || pos.equals(loc)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final Plot plot = this.getBasePlot(false);
|
final Plot plot = this.getBasePlot(false);
|
||||||
plot.getSettings().setPosition(loc);
|
plot.getSettings().setPosition(loc);
|
||||||
if (plot.getSettings().getPosition() == null) {
|
|
||||||
DBFunc.setPosition(plot, "");
|
|
||||||
} else {
|
|
||||||
DBFunc.setPosition(plot, this.getSettings().getPosition().toString());
|
DBFunc.setPosition(plot, this.getSettings().getPosition().toString());
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the default home location for a plot<br>
|
* Get the default home location for a plot<br>
|
||||||
@ -1240,11 +1234,7 @@ public class Plot {
|
|||||||
|
|
||||||
public boolean hasRatings() {
|
public boolean hasRatings() {
|
||||||
Plot base = this.getBasePlot(false);
|
Plot base = this.getBasePlot(false);
|
||||||
if (base.settings != null && base.settings.ratings != null) {
|
return base.settings != null && base.settings.ratings != null;
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1368,7 +1358,7 @@ public class Plot {
|
|||||||
this.getDenied().clear();
|
this.getDenied().clear();
|
||||||
this.settings = new PlotSettings();
|
this.settings = new PlotSettings();
|
||||||
if (this.area.addPlot(this)) {
|
if (this.area.addPlot(this)) {
|
||||||
DBFunc.createPlotAndSettings(Plot.this, new Runnable() {
|
DBFunc.createPlotAndSettings(this, new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
final PlotArea plotworld = Plot.this.area;
|
final PlotArea plotworld = Plot.this.area;
|
||||||
@ -1910,10 +1900,7 @@ public class Plot {
|
|||||||
* @return boolean [ north, east, south, west ]
|
* @return boolean [ north, east, south, west ]
|
||||||
*/
|
*/
|
||||||
public boolean[] getMerged() {
|
public boolean[] getMerged() {
|
||||||
if (this.settings == null) {
|
return this.getSettings().getMerged();
|
||||||
return new boolean[] { false, false, false, false };
|
|
||||||
}
|
|
||||||
return this.settings.getMerged();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1948,10 +1935,7 @@ public class Plot {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public BlockLoc getPosition() {
|
public BlockLoc getPosition() {
|
||||||
if (this.settings == null) {
|
return this.getSettings().getPosition();
|
||||||
return new BlockLoc(0, 0, 0);
|
|
||||||
}
|
|
||||||
return this.settings.getPosition();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2085,7 +2069,7 @@ public class Plot {
|
|||||||
}
|
}
|
||||||
visited.add(current);
|
visited.add(current);
|
||||||
Set<Plot> plots;
|
Set<Plot> plots;
|
||||||
if ((max >= 0) && ((dir == -1) || (dir == 0)) && !current.getMerged(0)) {
|
if ((dir == -1 || (dir == 0)) && !current.getMerged(0)) {
|
||||||
final Plot other = current.getRelative(0);
|
final Plot other = current.getRelative(0);
|
||||||
if ((other != null)
|
if ((other != null)
|
||||||
&& other.isOwner(uuid)
|
&& other.isOwner(uuid)
|
||||||
@ -2256,10 +2240,10 @@ public class Plot {
|
|||||||
PS.debug("Fixing invalid merge: " + this);
|
PS.debug("Fixing invalid merge: " + this);
|
||||||
if (tmp.isOwnerAbs(owner)) {
|
if (tmp.isOwnerAbs(owner)) {
|
||||||
tmp.getSettings().setMerged(2, true);
|
tmp.getSettings().setMerged(2, true);
|
||||||
DBFunc.setMerged(tmp, tmp.settings.getMerged());
|
DBFunc.setMerged(tmp, tmp.getSettings().getMerged());
|
||||||
} else {
|
} else {
|
||||||
this.getSettings().setMerged(0, false);
|
this.getSettings().setMerged(0, false);
|
||||||
DBFunc.setMerged(this, this.settings.getMerged());
|
DBFunc.setMerged(this, this.getSettings().getMerged());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
queuecache.add(tmp);
|
queuecache.add(tmp);
|
||||||
@ -2272,10 +2256,10 @@ public class Plot {
|
|||||||
PS.debug("Fixing invalid merge: " + this);
|
PS.debug("Fixing invalid merge: " + this);
|
||||||
if (tmp.isOwnerAbs(owner)) {
|
if (tmp.isOwnerAbs(owner)) {
|
||||||
tmp.getSettings().setMerged(3, true);
|
tmp.getSettings().setMerged(3, true);
|
||||||
DBFunc.setMerged(tmp, tmp.settings.getMerged());
|
DBFunc.setMerged(tmp, tmp.getSettings().getMerged());
|
||||||
} else {
|
} else {
|
||||||
this.getSettings().setMerged(1, false);
|
this.getSettings().setMerged(1, false);
|
||||||
DBFunc.setMerged(this, this.settings.getMerged());
|
DBFunc.setMerged(this, this.getSettings().getMerged());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
queuecache.add(tmp);
|
queuecache.add(tmp);
|
||||||
@ -2288,10 +2272,10 @@ public class Plot {
|
|||||||
PS.debug("Fixing invalid merge: " + this);
|
PS.debug("Fixing invalid merge: " + this);
|
||||||
if (tmp.isOwnerAbs(owner)) {
|
if (tmp.isOwnerAbs(owner)) {
|
||||||
tmp.getSettings().setMerged(0, true);
|
tmp.getSettings().setMerged(0, true);
|
||||||
DBFunc.setMerged(tmp, tmp.settings.getMerged());
|
DBFunc.setMerged(tmp, tmp.getSettings().getMerged());
|
||||||
} else {
|
} else {
|
||||||
this.getSettings().setMerged(2, false);
|
this.getSettings().setMerged(2, false);
|
||||||
DBFunc.setMerged(this, this.settings.getMerged());
|
DBFunc.setMerged(this, this.getSettings().getMerged());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
queuecache.add(tmp);
|
queuecache.add(tmp);
|
||||||
@ -2304,10 +2288,10 @@ public class Plot {
|
|||||||
PS.debug("Fixing invalid merge: " + this);
|
PS.debug("Fixing invalid merge: " + this);
|
||||||
if (tmp.isOwnerAbs(owner)) {
|
if (tmp.isOwnerAbs(owner)) {
|
||||||
tmp.getSettings().setMerged(1, true);
|
tmp.getSettings().setMerged(1, true);
|
||||||
DBFunc.setMerged(tmp, tmp.settings.getMerged());
|
DBFunc.setMerged(tmp, tmp.getSettings().getMerged());
|
||||||
} else {
|
} else {
|
||||||
this.getSettings().setMerged(3, false);
|
this.getSettings().setMerged(3, false);
|
||||||
DBFunc.setMerged(this, this.settings.getMerged());
|
DBFunc.setMerged(this, this.getSettings().getMerged());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
queuecache.add(tmp);
|
queuecache.add(tmp);
|
||||||
@ -2324,6 +2308,9 @@ public class Plot {
|
|||||||
connected_cache.add(current);
|
connected_cache.add(current);
|
||||||
queuecache.remove(current);
|
queuecache.remove(current);
|
||||||
merged = current.getMerged();
|
merged = current.getMerged();
|
||||||
|
for (int i = 0; i < 5; i++) {
|
||||||
|
|
||||||
|
}
|
||||||
if (merged[0]) {
|
if (merged[0]) {
|
||||||
tmp = current.area.getPlotAbs(current.id.getRelative(0));
|
tmp = current.area.getPlotAbs(current.id.getRelative(0));
|
||||||
if ((tmp != null) && !queuecache.contains(tmp) && !connected_cache.contains(tmp)) {
|
if ((tmp != null) && !queuecache.contains(tmp) && !connected_cache.contains(tmp)) {
|
||||||
@ -2794,7 +2781,7 @@ public class Plot {
|
|||||||
for (final Plot plot : plots) {
|
for (final Plot plot : plots) {
|
||||||
final Plot other = plot.getRelative(offset.x, offset.y);
|
final Plot other = plot.getRelative(offset.x, offset.y);
|
||||||
other.create(other.owner, false);
|
other.create(other.owner, false);
|
||||||
if ((plot.getFlags() != null) && !plot.getFlags().isEmpty()) {
|
if (!plot.getFlags().isEmpty()) {
|
||||||
other.getSettings().flags = plot.getFlags();
|
other.getSettings().flags = plot.getFlags();
|
||||||
DBFunc.setFlags(other, plot.getFlags().values());
|
DBFunc.setFlags(other, plot.getFlags().values());
|
||||||
}
|
}
|
||||||
|
@ -1,41 +1,22 @@
|
|||||||
package com.intellectualcrafters.plot.object;
|
package com.intellectualcrafters.plot.object;
|
||||||
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import com.intellectualcrafters.plot.database.DBFunc;
|
import com.intellectualcrafters.plot.database.DBFunc;
|
||||||
import com.intellectualcrafters.plot.util.MainUtil;
|
import com.intellectualcrafters.plot.util.MainUtil;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
public class PlotCluster {
|
public class PlotCluster {
|
||||||
public PlotArea area;
|
public PlotArea area;
|
||||||
public PlotSettings settings;
|
public PlotSettings settings;
|
||||||
public UUID owner;
|
public UUID owner;
|
||||||
public HashSet<UUID> helpers = new HashSet<UUID>();
|
public HashSet<UUID> helpers = new HashSet<>();
|
||||||
public HashSet<UUID> invited = new HashSet<UUID>();
|
public HashSet<UUID> invited = new HashSet<>();
|
||||||
|
public int temp;
|
||||||
private PlotId pos1;
|
private PlotId pos1;
|
||||||
private PlotId pos2;
|
private PlotId pos2;
|
||||||
private RegionWrapper region;
|
private RegionWrapper region;
|
||||||
|
|
||||||
public int temp;
|
|
||||||
|
|
||||||
public PlotId getP1() {
|
|
||||||
return pos1;
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlotId getP2() {
|
|
||||||
return pos2;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setP1(final PlotId id) {
|
|
||||||
pos1 = id;
|
|
||||||
setRegion();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setP2(final PlotId id) {
|
|
||||||
pos2 = id;
|
|
||||||
setRegion();
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlotCluster(final PlotArea area, final PlotId pos1, final PlotId pos2, final UUID owner) {
|
public PlotCluster(final PlotArea area, final PlotId pos1, final PlotId pos2, final UUID owner) {
|
||||||
this.area = area;
|
this.area = area;
|
||||||
this.pos1 = pos1;
|
this.pos1 = pos1;
|
||||||
@ -56,6 +37,24 @@ public class PlotCluster {
|
|||||||
setRegion();
|
setRegion();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public PlotId getP1() {
|
||||||
|
return pos1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setP1(final PlotId id) {
|
||||||
|
pos1 = id;
|
||||||
|
setRegion();
|
||||||
|
}
|
||||||
|
|
||||||
|
public PlotId getP2() {
|
||||||
|
return pos2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setP2(final PlotId id) {
|
||||||
|
pos2 = id;
|
||||||
|
setRegion();
|
||||||
|
}
|
||||||
|
|
||||||
private void setRegion() {
|
private void setRegion() {
|
||||||
region = new RegionWrapper(pos1.x, pos2.x, pos1.y, pos2.y);
|
region = new RegionWrapper(pos1.x, pos2.x, pos1.y, pos2.y);
|
||||||
}
|
}
|
||||||
@ -84,6 +83,14 @@ public class PlotCluster {
|
|||||||
return ((1 + pos2.x) - pos1.x) * ((1 + pos2.y) - pos1.y);
|
return ((1 + pos2.x) - pos1.x) * ((1 + pos2.y) - pos1.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setArea(PlotArea plotarea) {
|
||||||
|
if (this.area != null) {
|
||||||
|
this.area.removeCluster(this);
|
||||||
|
}
|
||||||
|
this.area = plotarea;
|
||||||
|
plotarea.addCluster(this);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return pos1.hashCode();
|
return pos1.hashCode();
|
||||||
@ -155,14 +162,6 @@ public class PlotCluster {
|
|||||||
return (pos1.x <= this.pos2.x) && (pos2.x >= this.pos1.x) && (pos1.y <= this.pos2.y) && (pos2.y >= this.pos1.y);
|
return (pos1.x <= this.pos2.x) && (pos2.x >= this.pos1.x) && (pos1.y <= this.pos2.y) && (pos2.y >= this.pos1.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setArea(PlotArea plotarea) {
|
|
||||||
if (this.area != null) {
|
|
||||||
this.area.removeCluster(this);
|
|
||||||
}
|
|
||||||
this.area = plotarea;
|
|
||||||
plotarea.addCluster(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean contains(final PlotId id) {
|
public boolean contains(final PlotId id) {
|
||||||
return (pos1.x <= id.x) && (pos1.y <= id.y) && (pos2.x >= id.x) && (pos2.y >= id.y);
|
return (pos1.x <= id.x) && (pos1.y <= id.y) && (pos2.x >= id.x) && (pos2.y >= id.y);
|
||||||
}
|
}
|
||||||
|
@ -95,7 +95,7 @@ public class BO3Handler {
|
|||||||
BO3 bo3 = map.get(loc);
|
BO3 bo3 = map.get(loc);
|
||||||
for (int y = 1; y < height; y++) {
|
for (int y = 1; y < height; y++) {
|
||||||
final PlotBlock block = WorldUtil.IMP.getBlock(new Location(plot.getArea().worldname, x, y, z));
|
final PlotBlock block = WorldUtil.IMP.getBlock(new Location(plot.getArea().worldname, x, y, z));
|
||||||
if ((block != null) && !contains(cpw.MAIN_BLOCK, block)) {
|
if (!contains(cpw.MAIN_BLOCK, block)) {
|
||||||
if (bo3 == null) {
|
if (bo3 == null) {
|
||||||
bo3 = new BO3(alias, loc);
|
bo3 = new BO3(alias, loc);
|
||||||
map.put(loc, bo3);
|
map.put(loc, bo3);
|
||||||
@ -105,7 +105,7 @@ public class BO3Handler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
final PlotBlock floor = WorldUtil.IMP.getBlock(new Location(plot.getArea().worldname, x, height, z));
|
final PlotBlock floor = WorldUtil.IMP.getBlock(new Location(plot.getArea().worldname, x, height, z));
|
||||||
if ((floor != null) && !contains(cpw.TOP_BLOCK, floor)) {
|
if (!contains(cpw.TOP_BLOCK, floor)) {
|
||||||
if (bo3 == null) {
|
if (bo3 == null) {
|
||||||
bo3 = new BO3(alias, loc);
|
bo3 = new BO3(alias, loc);
|
||||||
map.put(loc, bo3);
|
map.put(loc, bo3);
|
||||||
@ -115,7 +115,7 @@ public class BO3Handler {
|
|||||||
}
|
}
|
||||||
for (int y = height + 1; y < 256; y++) {
|
for (int y = height + 1; y < 256; y++) {
|
||||||
final PlotBlock block = WorldUtil.IMP.getBlock(new Location(plot.getArea().worldname, x, y, z));
|
final PlotBlock block = WorldUtil.IMP.getBlock(new Location(plot.getArea().worldname, x, y, z));
|
||||||
if ((block != null) && (block.id != 0)) {
|
if (block.id != 0) {
|
||||||
if (bo3 == null) {
|
if (bo3 == null) {
|
||||||
bo3 = new BO3(alias, loc);
|
bo3 = new BO3(alias, loc);
|
||||||
map.put(loc, bo3);
|
map.put(loc, bo3);
|
||||||
|
@ -7,7 +7,14 @@ import com.intellectualcrafters.plot.database.DBFunc;
|
|||||||
import com.intellectualcrafters.plot.flag.Flag;
|
import com.intellectualcrafters.plot.flag.Flag;
|
||||||
import com.intellectualcrafters.plot.flag.FlagManager;
|
import com.intellectualcrafters.plot.flag.FlagManager;
|
||||||
import com.intellectualcrafters.plot.generator.HybridUtils;
|
import com.intellectualcrafters.plot.generator.HybridUtils;
|
||||||
import com.intellectualcrafters.plot.object.*;
|
import com.intellectualcrafters.plot.object.OfflinePlotPlayer;
|
||||||
|
import com.intellectualcrafters.plot.object.Plot;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotAnalysis;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotArea;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotMessage;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotPlayer;
|
||||||
|
import com.intellectualcrafters.plot.object.RunnableVal;
|
||||||
|
import com.intellectualcrafters.plot.object.RunnableVal2;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
@ -20,7 +27,7 @@ public class ExpireManager {
|
|||||||
public static ExpireManager IMP;
|
public static ExpireManager IMP;
|
||||||
|
|
||||||
private static HashSet<Plot> plotsToDelete;
|
private static HashSet<Plot> plotsToDelete;
|
||||||
private ConcurrentHashMap<UUID, Long> dates_cache = new ConcurrentHashMap<>();
|
private final ConcurrentHashMap<UUID, Long> dates_cache = new ConcurrentHashMap<>();
|
||||||
/**
|
/**
|
||||||
* 0 = stopped, 1 = stopping, 2 = running
|
* 0 = stopped, 1 = stopping, 2 = running
|
||||||
*/
|
*/
|
||||||
@ -154,7 +161,7 @@ public class ExpireManager {
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (plots.size() == 0) {
|
if (plots.isEmpty()) {
|
||||||
running = 3;
|
running = 3;
|
||||||
TaskManager.runTaskLater(new Runnable() {
|
TaskManager.runTaskLater(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
@ -165,7 +172,6 @@ public class ExpireManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, 86400000);
|
}, 86400000);
|
||||||
return;
|
|
||||||
} else {
|
} else {
|
||||||
TaskManager.runTaskLaterAsync(task, Settings.CLEAR_INTERVAL * 20);
|
TaskManager.runTaskLaterAsync(task, Settings.CLEAR_INTERVAL * 20);
|
||||||
}
|
}
|
||||||
|
@ -1,24 +1,56 @@
|
|||||||
package com.intellectualcrafters.plot.util;
|
package com.intellectualcrafters.plot.util;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.intellectualcrafters.jnbt.*;
|
import com.intellectualcrafters.jnbt.ByteArrayTag;
|
||||||
|
import com.intellectualcrafters.jnbt.CompoundTag;
|
||||||
|
import com.intellectualcrafters.jnbt.IntTag;
|
||||||
|
import com.intellectualcrafters.jnbt.ListTag;
|
||||||
|
import com.intellectualcrafters.jnbt.NBTInputStream;
|
||||||
|
import com.intellectualcrafters.jnbt.NBTOutputStream;
|
||||||
|
import com.intellectualcrafters.jnbt.ShortTag;
|
||||||
|
import com.intellectualcrafters.jnbt.StringTag;
|
||||||
|
import com.intellectualcrafters.jnbt.Tag;
|
||||||
import com.intellectualcrafters.json.JSONArray;
|
import com.intellectualcrafters.json.JSONArray;
|
||||||
import com.intellectualcrafters.json.JSONException;
|
import com.intellectualcrafters.json.JSONException;
|
||||||
import com.intellectualcrafters.plot.PS;
|
import com.intellectualcrafters.plot.PS;
|
||||||
import com.intellectualcrafters.plot.config.Settings;
|
import com.intellectualcrafters.plot.config.Settings;
|
||||||
import com.intellectualcrafters.plot.flag.Flag;
|
import com.intellectualcrafters.plot.flag.Flag;
|
||||||
import com.intellectualcrafters.plot.generator.ClassicPlotWorld;
|
import com.intellectualcrafters.plot.generator.ClassicPlotWorld;
|
||||||
import com.intellectualcrafters.plot.object.*;
|
import com.intellectualcrafters.plot.object.ChunkLoc;
|
||||||
|
import com.intellectualcrafters.plot.object.Location;
|
||||||
|
import com.intellectualcrafters.plot.object.Plot;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotArea;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotBlock;
|
||||||
|
import com.intellectualcrafters.plot.object.RegionWrapper;
|
||||||
|
import com.intellectualcrafters.plot.object.RunnableVal;
|
||||||
import com.intellectualcrafters.plot.object.schematic.PlotItem;
|
import com.intellectualcrafters.plot.object.schematic.PlotItem;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.BufferedReader;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.io.OutputStreamWriter;
|
||||||
|
import java.io.PrintWriter;
|
||||||
import java.net.HttpURLConnection;
|
import java.net.HttpURLConnection;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.net.URLConnection;
|
import java.net.URLConnection;
|
||||||
import java.nio.channels.Channels;
|
import java.nio.channels.Channels;
|
||||||
import java.nio.channels.ReadableByteChannel;
|
import java.nio.channels.ReadableByteChannel;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.UUID;
|
||||||
import java.util.zip.GZIPInputStream;
|
import java.util.zip.GZIPInputStream;
|
||||||
import java.util.zip.GZIPOutputStream;
|
import java.util.zip.GZIPOutputStream;
|
||||||
|
|
||||||
@ -35,7 +67,7 @@ public abstract class SchematicHandler {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
exportAll = true;
|
exportAll = true;
|
||||||
final ArrayList<Plot> plots = new ArrayList<Plot>(collection);
|
final ArrayList<Plot> plots = new ArrayList<>(collection);
|
||||||
TaskManager.runTask(new Runnable() {
|
TaskManager.runTask(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
@ -661,14 +693,14 @@ public abstract class SchematicHandler {
|
|||||||
getCompoundTag(plot.getArea().worldname, plot.getRegions(), new RunnableVal<CompoundTag>() {
|
getCompoundTag(plot.getArea().worldname, plot.getRegions(), new RunnableVal<CompoundTag>() {
|
||||||
@Override
|
@Override
|
||||||
public void run(CompoundTag value) {
|
public void run(CompoundTag value) {
|
||||||
if (plot.getFlags().size() > 0) {
|
if (!plot.getFlags().isEmpty()) {
|
||||||
HashMap<String, Tag> flagMap = new HashMap<>();
|
HashMap<String, Tag> flagMap = new HashMap<>();
|
||||||
for (Map.Entry<String, Flag> entry : plot.getFlags().entrySet()) {
|
for (Map.Entry<String, Flag> entry : plot.getFlags().entrySet()) {
|
||||||
String key = entry.getKey();
|
String key = entry.getKey();
|
||||||
flagMap.put(key, new StringTag(key, entry.getValue().getValueString()));
|
flagMap.put(key, new StringTag(key, entry.getValue().getValueString()));
|
||||||
}
|
}
|
||||||
CompoundTag tag = new CompoundTag("Flags", flagMap);
|
CompoundTag tag = new CompoundTag("Flags", flagMap);
|
||||||
HashMap<String, Tag> map = new HashMap<String, Tag>(value.getValue());
|
HashMap<String, Tag> map = new HashMap<>(value.getValue());
|
||||||
map.put("Flags", tag);
|
map.put("Flags", tag);
|
||||||
value.setValue(map);
|
value.setValue(map);
|
||||||
}
|
}
|
||||||
@ -716,9 +748,8 @@ public abstract class SchematicHandler {
|
|||||||
// Lossy but fast
|
// Lossy but fast
|
||||||
private final short[] ids;
|
private final short[] ids;
|
||||||
private final byte[] datas;
|
private final byte[] datas;
|
||||||
private Map<String, Tag> flags;
|
|
||||||
|
|
||||||
private final Dimension schematicDimension;
|
private final Dimension schematicDimension;
|
||||||
|
private Map<String, Tag> flags;
|
||||||
private HashSet<PlotItem> items;
|
private HashSet<PlotItem> items;
|
||||||
|
|
||||||
public Schematic(final short[] i, final byte[] b, final Dimension d, Map<String, Tag> flags) {
|
public Schematic(final short[] i, final byte[] b, final Dimension d, Map<String, Tag> flags) {
|
||||||
|
@ -44,7 +44,7 @@ public class StringMan {
|
|||||||
if (obj == null) {
|
if (obj == null) {
|
||||||
return "null";
|
return "null";
|
||||||
}
|
}
|
||||||
if (obj.getClass() == String.class) {
|
if (obj instanceof String) {
|
||||||
return (String) obj;
|
return (String) obj;
|
||||||
}
|
}
|
||||||
if (obj.getClass().isArray()) {
|
if (obj.getClass().isArray()) {
|
||||||
@ -124,7 +124,7 @@ public class StringMan {
|
|||||||
public static boolean isAlphanumericUnd(final String str) {
|
public static boolean isAlphanumericUnd(final String str) {
|
||||||
for (int i = 0; i < str.length(); i++) {
|
for (int i = 0; i < str.length(); i++) {
|
||||||
final char c = str.charAt(i);
|
final char c = str.charAt(i);
|
||||||
if ((c < 0x30) || ((c >= 0x3a) && (c <= 0x40)) || ((c > 0x5a) && (c <= 0x60)) || (c > 0x7a) || (c == '_')) {
|
if (c < 0x30 || (c >= 0x3a) && (c <= 0x40) || (c > 0x5a) && (c <= 0x60) || (c > 0x7a)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,15 +7,13 @@ import com.plotsquared.general.commands.Command;
|
|||||||
|
|
||||||
public class HelpObject {
|
public class HelpObject {
|
||||||
|
|
||||||
private final Command _command;
|
|
||||||
private final String _rendered;
|
private final String _rendered;
|
||||||
|
|
||||||
public HelpObject(final Command command, final String label) {
|
public HelpObject(final Command command, final String label) {
|
||||||
_command = command;
|
_rendered = StringMan.replaceAll(C.HELP_ITEM.s(), "%usage%", command.getUsage().replaceAll("\\{label\\}", label), "[%alias%]",
|
||||||
_rendered = StringMan.replaceAll(C.HELP_ITEM.s(), "%usage%", _command.getUsage().replaceAll("\\{label\\}", label), "[%alias%]",
|
!command.getAliases().isEmpty() ? "(" + StringMan.join(command.getAliases(), "|") + ")" : "", "%desc%", command.getDescription(),
|
||||||
!_command.getAliases().isEmpty() ? "(" + StringMan.join(_command.getAliases(), "|") + ")" : "", "%desc%", _command.getDescription(),
|
|
||||||
"%arguments%",
|
"%arguments%",
|
||||||
buildArgumentList(_command.getRequiredArguments()), "{label}", label);
|
buildArgumentList(command.getRequiredArguments()), "{label}", label);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -155,9 +155,6 @@ public abstract class Command<E extends CommandCaller> extends CommandManager {
|
|||||||
if (this == obj) {
|
if (this == obj) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (obj == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (getClass() != obj.getClass()) {
|
if (getClass() != obj.getClass()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user