diff --git a/Bukkit/build.gradle b/Bukkit/build.gradle
index 4d6bb295c..af38aea0f 100644
--- a/Bukkit/build.gradle
+++ b/Bukkit/build.gradle
@@ -1,27 +1,29 @@
repositories {
- maven {url "https://hub.spigotmc.org/nexus/content/groups/public/"}
- maven { url = "https://oss.sonatype.org/content/repositories/snapshots/"}
- maven {url "http://nexus.hc.to/content/repositories/pub_releases"}
+ maven { url "https://hub.spigotmc.org/nexus/content/repositories/snapshots/" }
+ maven { url = "https://oss.sonatype.org/content/repositories/snapshots/" }
+ maven { url "http://nexus.hc.to/content/repositories/pub_releases" }
mavenLocal()
}
dependencies {
compile project(':Core')
- compile 'org.spigotmc:spigot-api:1.12.1-R0.1-SNAPSHOT'
+ compile 'org.spigotmc:spigot-api:1.13-R0.1-SNAPSHOT'
+ compile(group: 'com.sk89q.worldedit', name: 'worldedit-bukkit', version: '7.0.0-SNAPSHOT')
compile("net.milkbowl.vault:VaultAPI:1.6") {
exclude module: 'bukkit'
}
+ compileOnly 'org.projectlombok:lombok:1.16.18'
}
-sourceCompatibility = 1.7
-targetCompatibility = 1.7
+sourceCompatibility = 1.8
+targetCompatibility = 1.8
processResources {
from('src/main/resources') {
include 'plugin.yml'
expand(
- name: project.parent.name,
- version: project.parent.version
+ name: project.parent.name,
+ version: project.parent.version
)
}
}
@@ -39,7 +41,7 @@ shadowJar {
shadowJar.doLast {
task ->
- ant.checksum file: task.archivePath
+ ant.checksum file: task.archivePath
}
build.dependsOn(shadowJar);
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/BukkitMain.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/BukkitMain.java
similarity index 60%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/BukkitMain.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/BukkitMain.java
index 059d65d46..f7b9239a2 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/BukkitMain.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/BukkitMain.java
@@ -1,100 +1,38 @@
-package com.plotsquared.bukkit;
+package com.github.intellectualsites.plotsquared.bukkit;
-import static com.intellectualcrafters.plot.util.ReflectionUtils.getRefClass;
-
-import com.intellectualcrafters.configuration.ConfigurationSection;
-import com.intellectualcrafters.plot.IPlotMain;
-import com.intellectualcrafters.plot.PS;
-import com.intellectualcrafters.plot.config.C;
-import com.intellectualcrafters.plot.config.ConfigurationNode;
-import com.intellectualcrafters.plot.config.Settings;
-import com.intellectualcrafters.plot.generator.GeneratorWrapper;
-import com.intellectualcrafters.plot.generator.HybridGen;
-import com.intellectualcrafters.plot.generator.HybridUtils;
-import com.intellectualcrafters.plot.generator.IndependentPlotGenerator;
-import com.intellectualcrafters.plot.object.Plot;
-import com.intellectualcrafters.plot.object.PlotArea;
-import com.intellectualcrafters.plot.object.PlotId;
-import com.intellectualcrafters.plot.object.PlotPlayer;
-import com.intellectualcrafters.plot.object.RunnableVal;
-import com.intellectualcrafters.plot.object.SetupObject;
-import com.intellectualcrafters.plot.object.chat.PlainChatManager;
-import com.intellectualcrafters.plot.object.worlds.PlotAreaManager;
-import com.intellectualcrafters.plot.object.worlds.SinglePlotArea;
-import com.intellectualcrafters.plot.object.worlds.SinglePlotAreaManager;
-import com.intellectualcrafters.plot.object.worlds.SingleWorldGenerator;
-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.ReflectionUtils;
-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.util.block.QueueProvider;
-import com.intellectualcrafters.plot.uuid.UUIDWrapper;
-import com.plotsquared.bukkit.database.plotme.ClassicPlotMeConnector;
-import com.plotsquared.bukkit.database.plotme.LikePlotMeConverter;
-import com.plotsquared.bukkit.database.plotme.PlotMeConnector_017;
-import com.plotsquared.bukkit.generator.BukkitPlotGenerator;
-import com.plotsquared.bukkit.listeners.ChunkListener;
-import com.plotsquared.bukkit.listeners.EntityPortal_1_7_9;
-import com.plotsquared.bukkit.listeners.EntitySpawnListener;
-import com.plotsquared.bukkit.listeners.PlayerEvents;
-import com.plotsquared.bukkit.listeners.PlayerEvents183;
-import com.plotsquared.bukkit.listeners.PlayerEvents_1_8;
-import com.plotsquared.bukkit.listeners.PlayerEvents_1_9;
-import com.plotsquared.bukkit.listeners.PlotPlusListener;
-import com.plotsquared.bukkit.listeners.PlotPlusListener_1_12;
-import com.plotsquared.bukkit.listeners.PlotPlusListener_Legacy;
-import com.plotsquared.bukkit.listeners.SingleWorldListener;
-import com.plotsquared.bukkit.listeners.WorldEvents;
-import com.plotsquared.bukkit.titles.DefaultTitle_111;
-import com.plotsquared.bukkit.util.BukkitChatManager;
-import com.plotsquared.bukkit.util.BukkitChunkManager;
-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.BukkitSchematicHandler;
-import com.plotsquared.bukkit.util.BukkitSetupUtils;
-import com.plotsquared.bukkit.util.BukkitTaskManager;
-import com.plotsquared.bukkit.util.BukkitUtil;
-import com.plotsquared.bukkit.util.BukkitVersion;
-import com.plotsquared.bukkit.util.Metrics;
-import com.plotsquared.bukkit.util.SendChunk;
-import com.plotsquared.bukkit.util.SetGenCB;
-import com.plotsquared.bukkit.util.block.BukkitLocalQueue;
-import com.plotsquared.bukkit.util.block.BukkitLocalQueue_1_7;
-import com.plotsquared.bukkit.util.block.BukkitLocalQueue_1_8;
-import com.plotsquared.bukkit.util.block.BukkitLocalQueue_1_8_3;
-import com.plotsquared.bukkit.util.block.BukkitLocalQueue_1_9;
-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.github.intellectualsites.plotsquared.bukkit.database.plotme.ClassicPlotMeConnector;
+import com.github.intellectualsites.plotsquared.bukkit.database.plotme.LikePlotMeConverter;
+import com.github.intellectualsites.plotsquared.bukkit.database.plotme.PlotMeConnector_017;
+import com.github.intellectualsites.plotsquared.bukkit.generator.BukkitPlotGenerator;
+import com.github.intellectualsites.plotsquared.bukkit.listeners.*;
+import com.github.intellectualsites.plotsquared.bukkit.titles.DefaultTitle_111;
+import com.github.intellectualsites.plotsquared.bukkit.util.*;
+import com.github.intellectualsites.plotsquared.bukkit.util.block.BukkitLocalQueue;
+import com.github.intellectualsites.plotsquared.bukkit.uuid.*;
+import com.github.intellectualsites.plotsquared.configuration.ConfigurationSection;
+import com.github.intellectualsites.plotsquared.plot.IPlotMain;
+import com.github.intellectualsites.plotsquared.plot.PlotSquared;
+import com.github.intellectualsites.plotsquared.plot.config.C;
+import com.github.intellectualsites.plotsquared.plot.config.ConfigurationNode;
+import com.github.intellectualsites.plotsquared.plot.config.Settings;
+import com.github.intellectualsites.plotsquared.plot.generator.GeneratorWrapper;
+import com.github.intellectualsites.plotsquared.plot.generator.HybridGen;
+import com.github.intellectualsites.plotsquared.plot.generator.HybridUtils;
+import com.github.intellectualsites.plotsquared.plot.generator.IndependentPlotGenerator;
+import com.github.intellectualsites.plotsquared.plot.object.*;
+import com.github.intellectualsites.plotsquared.plot.object.chat.PlainChatManager;
+import com.github.intellectualsites.plotsquared.plot.object.worlds.PlotAreaManager;
+import com.github.intellectualsites.plotsquared.plot.object.worlds.SinglePlotArea;
+import com.github.intellectualsites.plotsquared.plot.object.worlds.SinglePlotAreaManager;
+import com.github.intellectualsites.plotsquared.plot.object.worlds.SingleWorldGenerator;
+import com.github.intellectualsites.plotsquared.plot.util.*;
+import com.github.intellectualsites.plotsquared.plot.util.block.QueueProvider;
+import com.github.intellectualsites.plotsquared.plot.uuid.UUIDWrapper;
import com.sk89q.worldedit.WorldEdit;
-import java.io.File;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
-import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
-import org.bukkit.Chunk;
+import lombok.Getter;
+import lombok.NonNull;
+import org.bukkit.*;
import org.bukkit.Location;
-import org.bukkit.OfflinePlayer;
-import org.bukkit.World;
import org.bukkit.command.PluginCommand;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
@@ -107,9 +45,19 @@ import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
+import javax.annotation.Nullable;
+import java.io.File;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+
+import static com.github.intellectualsites.plotsquared.plot.util.ReflectionUtils.getRefClass;
+
public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
- private static ConcurrentHashMap pluginMap;
+ @Getter private static WorldEdit worldEdit;
+ private static Map pluginMap;
static {
// Disable AWE as otherwise both fail to load
@@ -128,14 +76,15 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
iter.remove();
}
}
- Map lookupNames = (Map) lookupNamesField.get(manager);
+ Map lookupNames =
+ (Map) lookupNamesField.get(manager);
lookupNames.remove("PlotMe");
lookupNames.remove("PlotMe-DefaultGenerator");
pluginsField.set(manager, new ArrayList(plugins) {
- @Override
- public boolean add(Plugin plugin) {
+ @Override public boolean add(Plugin plugin) {
if (plugin.getName().startsWith("PlotMe")) {
- System.out.print("Disabling `" + plugin.getName() + "` for PlotMe conversion (configure in PlotSquared settings.yml)");
+ System.out.print("Disabling `" + plugin.getName()
+ + "` for PlotMe conversion (configure in PlotSquared settings.yml)");
} else {
return super.add(plugin);
}
@@ -143,8 +92,7 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
}
});
pluginMap = new ConcurrentHashMap(lookupNames) {
- @Override
- public Plugin put(String key, Plugin plugin) {
+ @Override public Plugin put(String key, Plugin plugin) {
if (!plugin.getName().startsWith("PlotMe")) {
return super.put(key, plugin);
}
@@ -153,17 +101,20 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
};
lookupNamesField.set(manager, pluginMap);
}
- } catch (Throwable ignore) {}
+ } catch (Throwable ignore) {
+ }
}
- public static WorldEdit worldEdit;
-
+ private final LegacyMappings legacyMappings = new BukkitLegacyMappings();
+ private final BlockRegistry blockRegistry =
+ new BukkitBlockRegistry(Material.values());
private int[] version;
- private String name;
- private SingleWorldListener singleWorldListener;
+ @Getter private String pluginName;
+ @Getter private SingleWorldListener singleWorldListener;
+ private Method methodUnloadChunk0;
+ private boolean methodUnloadSetup = false;
- @Override
- public int[] getServerVersion() {
+ @Override public int[] getServerVersion() {
if (this.version == null) {
try {
this.version = new int[3];
@@ -175,32 +126,34 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
}
} catch (NumberFormatException e) {
e.printStackTrace();
- PS.debug(StringMan.getString(Bukkit.getBukkitVersion()));
- PS.debug(StringMan.getString(Bukkit.getBukkitVersion().split("-")[0].split("\\.")));
- return new int[]{1, 13, 0};
+ PlotSquared.debug(StringMan.getString(Bukkit.getBukkitVersion()));
+ PlotSquared.debug(
+ StringMan.getString(Bukkit.getBukkitVersion().split("-")[0].split("\\.")));
+ return new int[] {1, 13, 0};
}
}
return this.version;
}
- @Override
- public void onEnable() {
+ @Override public void onEnable() {
if (pluginMap != null) {
pluginMap.put("PlotMe-DefaultGenerator", this);
}
- this.name = getDescription().getName();
+ this.pluginName = getDescription().getName();
getServer().getName();
- new PS(this, "Bukkit");
+
+ PlotPlayer.registerConverter(Player.class, BukkitUtil::getPlayer);
+
+ new PlotSquared(this, "Bukkit");
if (Settings.Enabled_Components.METRICS) {
new Metrics(this).start();
- PS.log(C.PREFIX + "&6Metrics enabled.");
+ PlotSquared.log(C.PREFIX + "&6Metrics enabled.");
} else {
- PS.log(C.CONSOLE_PLEASE_ENABLE_METRICS.f(getPluginName()));
+ PlotSquared.log(C.CONSOLE_PLEASE_ENABLE_METRICS.f(getPluginName()));
}
if (Settings.Enabled_Components.WORLDS) {
TaskManager.IMP.taskRepeat(new Runnable() {
- @Override
- public void run() {
+ @Override public void run() {
unload();
}
}, 20);
@@ -212,72 +165,73 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
}
}
- public SingleWorldListener getSingleWorldListener() {
- return singleWorldListener;
- }
-
- private Method methodUnloadChunk0;
- private boolean methodUnloadSetup = false;
-
public void unload() {
- if (!methodUnloadSetup) {
- methodUnloadSetup = true;
+ if (!this.methodUnloadSetup) {
+ this.methodUnloadSetup = true;
try {
ReflectionUtils.RefClass classCraftWorld = getRefClass("{cb}.CraftWorld");
- methodUnloadChunk0 = classCraftWorld.getRealClass().getDeclaredMethod("unloadChunk0", int.class, int.class, boolean.class);
- methodUnloadChunk0.setAccessible(true);
+ this.methodUnloadChunk0 = classCraftWorld.getRealClass()
+ .getDeclaredMethod("unloadChunk0", int.class, int.class, boolean.class);
+ this.methodUnloadChunk0.setAccessible(true);
} catch (Throwable ignore) {
ignore.printStackTrace();
}
}
- PlotAreaManager manager = PS.get().getPlotAreaManager();
+ final PlotAreaManager manager = PlotSquared.get().getPlotAreaManager();
if (manager instanceof SinglePlotAreaManager) {
long start = System.currentTimeMillis();
- SinglePlotArea area = ((SinglePlotAreaManager) manager).getArea();
+ final SinglePlotArea area = ((SinglePlotAreaManager) manager).getArea();
+
outer:
- for (World world : Bukkit.getWorlds()) {
- String name = world.getName();
- char char0 = name.charAt(0);
- if (!Character.isDigit(char0) && char0 != '-') continue;
+ for (final World world : Bukkit.getWorlds()) {
+ final String name = world.getName();
+ final char char0 = name.charAt(0);
+ if (!Character.isDigit(char0) && char0 != '-') {
+ continue;
+ }
+
if (!world.getPlayers().isEmpty()) {
continue;
}
- PlotId id = PlotId.fromString(name);
+ final PlotId id = PlotId.fromString(name);
if (id != null) {
- Plot plot = area.getOwnedPlot(id);
+ final Plot plot = area.getOwnedPlot(id);
if (plot != null) {
if (PlotPlayer.wrap(plot.owner) == null) {
if (world.getKeepSpawnInMemory()) {
world.setKeepSpawnInMemory(false);
return;
}
- Chunk[] chunks = world.getLoadedChunks();
+ final Chunk[] chunks = world.getLoadedChunks();
if (chunks.length == 0) {
if (!Bukkit.unloadWorld(world, true)) {
- PS.debug("Failed to unload " + world.getName());
+ PlotSquared.debug("Failed to unload " + world.getName());
}
return;
} else {
int index = 0;
do {
- Chunk chunkI = chunks[index++];
+ final Chunk chunkI = chunks[index++];
boolean result;
if (methodUnloadChunk0 != null) {
try {
- result = (boolean) methodUnloadChunk0.invoke(world, chunkI.getX(), chunkI.getZ(), true);
+ result = (boolean) methodUnloadChunk0
+ .invoke(world, chunkI.getX(), chunkI.getZ(), true);
} catch (Throwable e) {
methodUnloadChunk0 = null;
e.printStackTrace();
continue outer;
}
} else {
- result = world.unloadChunk(chunkI.getX(), chunkI.getZ(), true, false);
+ result = world
+ .unloadChunk(chunkI.getX(), chunkI.getZ(), true, false);
}
if (!result) {
continue outer;
}
- } while (index < chunks.length && System.currentTimeMillis() - start < 5);
+ } while (index < chunks.length
+ && System.currentTimeMillis() - start < 5);
return;
}
}
@@ -287,83 +241,68 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
}
}
- @Override
- public void onDisable() {
- PS.get().disable();
+ @Override public void onDisable() {
+ PlotSquared.get().disable();
Bukkit.getScheduler().cancelTasks(this);
}
- @Override
- public void log(String message) {
+ @Override public void log(@NonNull String message) {
try {
message = C.color(message);
if (!Settings.Chat.CONSOLE_COLOR) {
message = ChatColor.stripColor(message);
}
this.getServer().getConsoleSender().sendMessage(message);
- } catch (Throwable ignored) {
+ } catch (final Throwable ignored) {
System.out.println(ConsoleColors.fromString(message));
}
}
- @Override
- public void disable() {
+ @Override public void disable() {
onDisable();
}
- @Override
- public int[] getPluginVersion() {
+ @Override public int[] getPluginVersion() {
String ver = getDescription().getVersion();
if (ver.contains("-")) {
ver = ver.split("-")[0];
}
String[] split = ver.split("\\.");
- return new int[]{Integer.parseInt(split[0]), Integer.parseInt(split[1]), Integer.parseInt(split[2])};
+ return new int[] {Integer.parseInt(split[0]), Integer.parseInt(split[1]),
+ Integer.parseInt(split[2])};
}
@Override public String getPluginVersionString() {
return getDescription().getVersion();
}
- @Override
- public String getPluginName() {
- return name;
- }
-
- @Override
- public void registerCommands() {
- BukkitCommand bukkitCommand = new BukkitCommand();
- PluginCommand plotCommand = getCommand("plots");
+ @Override public void registerCommands() {
+ final BukkitCommand bukkitCommand = new BukkitCommand();
+ final PluginCommand plotCommand = getCommand("plots");
plotCommand.setExecutor(bukkitCommand);
plotCommand.setAliases(Arrays.asList("p", "ps", "plotme", "plot"));
plotCommand.setTabCompleter(bukkitCommand);
}
- @Override
- public File getDirectory() {
+ @Override public File getDirectory() {
return getDataFolder();
}
- @Override
- public File getWorldContainer() {
+ @Override public File getWorldContainer() {
return Bukkit.getWorldContainer();
}
- @Override
- public TaskManager getTaskManager() {
+ @Override public TaskManager getTaskManager() {
return new BukkitTaskManager(this);
}
- @Override
- public void runEntityTask() {
- PS.log(C.PREFIX + "KillAllEntities started.");
+ @Override @SuppressWarnings("deprecation") public void runEntityTask() {
+ PlotSquared.log(C.PREFIX + "KillAllEntities started.");
TaskManager.runTaskRepeat(new Runnable() {
- @Override
- public void run() {
- PS.get().foreachPlotArea(new RunnableVal() {
- @Override
- public void run(PlotArea plotArea) {
- World world = Bukkit.getWorld(plotArea.worldname);
+ @Override public void run() {
+ PlotSquared.get().foreachPlotArea(new RunnableVal() {
+ @Override public void run(PlotArea plotArea) {
+ final World world = Bukkit.getWorld(plotArea.worldname);
try {
if (world == null) {
return;
@@ -416,10 +355,15 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
case MINECART_TNT:
case BOAT:
if (Settings.Enabled_Components.KILL_ROAD_VEHICLES) {
- com.intellectualcrafters.plot.object.Location location = BukkitUtil.getLocation(entity.getLocation());
+ com.github.intellectualsites.plotsquared.plot.object.Location
+ location =
+ BukkitUtil.getLocation(entity.getLocation());
Plot plot = location.getPlot();
if (plot == null) {
if (location.isPlotArea()) {
+ if (entity.hasMetadata("ps-tmp-teleport")) {
+ continue;
+ }
iterator.remove();
entity.remove();
}
@@ -431,6 +375,9 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
}
Plot origin = (Plot) meta.get(0).value();
if (!plot.equals(origin.getBasePlot(false))) {
+ if (entity.hasMetadata("ps-tmp-teleport")) {
+ continue;
+ }
iterator.remove();
entity.remove();
}
@@ -503,10 +450,17 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
Location location = entity.getLocation();
if (BukkitUtil.getLocation(location).isPlotRoad()) {
if (entity instanceof LivingEntity) {
- LivingEntity livingEntity = (LivingEntity) entity;
- if (!livingEntity.isLeashed() || !entity.hasMetadata("keep")) {
+ LivingEntity livingEntity =
+ (LivingEntity) entity;
+ if (!livingEntity.isLeashed() || !entity
+ .hasMetadata("keep")) {
Entity passenger = entity.getPassenger();
- if (!(passenger instanceof Player) && entity.getMetadata("keep").isEmpty()) {
+ if (!(passenger instanceof Player) && entity
+ .getMetadata("keep").isEmpty()) {
+ if (entity
+ .hasMetadata("ps-tmp-teleport")) {
+ continue;
+ }
iterator.remove();
entity.remove();
continue;
@@ -514,7 +468,11 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
}
} else {
Entity passenger = entity.getPassenger();
- if (!(passenger instanceof Player) && entity.getMetadata("keep").isEmpty()) {
+ if (!(passenger instanceof Player) && entity
+ .getMetadata("keep").isEmpty()) {
+ if (entity.hasMetadata("ps-tmp-teleport")) {
+ continue;
+ }
iterator.remove();
entity.remove();
continue;
@@ -529,18 +487,32 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
LivingEntity livingEntity = (LivingEntity) entity;
List meta = entity.getMetadata("plot");
if (meta != null && !meta.isEmpty()) {
- if (livingEntity.isLeashed()) continue;
+ if (livingEntity.isLeashed())
+ continue;
- List keep = entity.getMetadata("keep");
- if (keep != null && !keep.isEmpty()) continue;
+ List keep =
+ entity.getMetadata("keep");
+ if (keep != null && !keep.isEmpty())
+ continue;
- PlotId originalPlotId = (PlotId) meta.get(0).value();
+ PlotId originalPlotId =
+ (PlotId) meta.get(0).value();
if (originalPlotId != null) {
- com.intellectualcrafters.plot.object.Location pLoc = BukkitUtil.getLocation(entity.getLocation());
+ com.github.intellectualsites.plotsquared.plot.object.Location
+ pLoc = BukkitUtil
+ .getLocation(entity.getLocation());
PlotArea area = pLoc.getPlotArea();
if (area != null) {
- PlotId currentPlotId = PlotId.of(area.getPlotAbs(pLoc));
- if (!originalPlotId.equals(currentPlotId) && (currentPlotId == null || !area.getPlot(originalPlotId).equals(area.getPlot(currentPlotId)))) {
+ PlotId currentPlotId =
+ PlotId.of(area.getPlotAbs(pLoc));
+ if (!originalPlotId.equals(currentPlotId)
+ && (currentPlotId == null || !area
+ .getPlot(originalPlotId)
+ .equals(area.getPlot(currentPlotId)))) {
+ if (entity
+ .hasMetadata("ps-tmp-teleport")) {
+ continue;
+ }
iterator.remove();
entity.remove();
}
@@ -548,17 +520,22 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
}
} else {
//This is to apply the metadata to already spawned shulkers (see EntitySpawnListener.java)
- com.intellectualcrafters.plot.object.Location pLoc = BukkitUtil.getLocation(entity.getLocation());
+ com.github.intellectualsites.plotsquared.plot.object.Location
+ pLoc =
+ BukkitUtil.getLocation(entity.getLocation());
PlotArea area = pLoc.getPlotArea();
if (area != null) {
- PlotId currentPlotId = PlotId.of(area.getPlotAbs(pLoc));
+ PlotId currentPlotId =
+ PlotId.of(area.getPlotAbs(pLoc));
if (currentPlotId != null) {
- entity.setMetadata("plot", new FixedMetadataValue((Plugin) PS.get().IMP, currentPlotId));
+ entity.setMetadata("plot",
+ new FixedMetadataValue(
+ (Plugin) PlotSquared.get().IMP,
+ currentPlotId));
}
}
}
}
- continue;
}
}
}
@@ -571,87 +548,49 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
}, 20);
}
- @Override
- public final ChunkGenerator getDefaultWorldGenerator(String world, String id) {
+ @Override @Nullable
+ public final ChunkGenerator getDefaultWorldGenerator(final String world, final String id) {
if (Settings.Enabled_Components.PLOTME_CONVERTER) {
initPlotMeConverter();
Settings.Enabled_Components.PLOTME_CONVERTER = false;
}
- IndependentPlotGenerator result;
+ final IndependentPlotGenerator result;
if (id != null && id.equalsIgnoreCase("single")) {
result = new SingleWorldGenerator();
} else {
- result = PS.get().IMP.getDefaultGenerator();
- if (!PS.get().setupPlotWorld(world, id, result)) {
+ result = PlotSquared.get().IMP.getDefaultGenerator();
+ if (!PlotSquared.get().setupPlotWorld(world, id, result)) {
return null;
}
}
return (ChunkGenerator) result.specify(world);
}
- @Override
- public void registerPlayerEvents() {
- PlayerEvents main = new PlayerEvents();
+ @Override public void registerPlayerEvents() {
+ final PlayerEvents main = new PlayerEvents();
getServer().getPluginManager().registerEvents(main, this);
try {
getServer().getClass().getMethod("spigot");
Class.forName("org.bukkit.event.entity.EntitySpawnEvent");
getServer().getPluginManager().registerEvents(new EntitySpawnListener(), this);
- } catch (NoSuchMethodException | ClassNotFoundException ignored) {
- PS.debug("Not running Spigot. Skipping EntitySpawnListener event.");
- }
- if (PS.get().checkVersion(getServerVersion(), 1, 7, 9)) {
- try {
- getServer().getPluginManager().registerEvents(new EntityPortal_1_7_9(), this);
- } catch (Throwable e) {
- e.printStackTrace();
- }
- }
- if (PS.get().checkVersion(getServerVersion(), BukkitVersion.v1_8_0)) {
- try {
- getServer().getPluginManager().registerEvents(new PlayerEvents_1_8(), this);
- } catch (Throwable e) {
- e.printStackTrace();
- }
- }
- if (PS.get().checkVersion(getServerVersion(), BukkitVersion.v1_8_3)) {
- try {
- getServer().getPluginManager().registerEvents(new PlayerEvents183(), this);
- } catch (Throwable e) {
- e.printStackTrace();
- }
- }
- if (PS.get().checkVersion(getServerVersion(), BukkitVersion.v1_9_0)) {
- try {
- getServer().getPluginManager().registerEvents(new PlayerEvents_1_9(main), this);
- } catch (Throwable e) {
- e.printStackTrace();
- }
+ } catch (final NoSuchMethodException | ClassNotFoundException ignored) {
+ PlotSquared.debug("Not running Spigot. Skipping EntitySpawnListener event.");
}
}
- @Override
- public void registerInventoryEvents() {
+ @Override public void registerInventoryEvents() {
// Part of PlayerEvents - can be moved if necessary
}
- @Override
- public void registerPlotPlusEvents() {
+ @Override public void registerPlotPlusEvents() {
PlotPlusListener.startRunnable(this);
getServer().getPluginManager().registerEvents(new PlotPlusListener(), this);
- if (PS.get().checkVersion(getServerVersion(), BukkitVersion.v1_12_0)) {
- getServer().getPluginManager().registerEvents(new PlotPlusListener_1_12(), this);
- } else {
- getServer().getPluginManager().registerEvents(new PlotPlusListener_Legacy(), this);
- }
}
- @Override
- public void registerForceFieldEvents() {
+ @Override public void registerForceFieldEvents() {
}
- @Override
- public boolean initWorldEdit() {
+ @Override public boolean initWorldEdit() {
if (getServer().getPluginManager().getPlugin("WorldEdit") != null) {
worldEdit = WorldEdit.getInstance();
return true;
@@ -659,50 +598,35 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
return false;
}
- @Override
- public EconHandler getEconomyHandler() {
+ @Override public EconHandler getEconomyHandler() {
try {
BukkitEconHandler econ = new BukkitEconHandler();
if (econ.init()) {
return econ;
}
} catch (Throwable ignored) {
- PS.debug("No economy detected!");
+ PlotSquared.debug("No economy detected!");
}
return null;
}
- @Override
- public QueueProvider initBlockQueue() {
+ @Override public QueueProvider initBlockQueue() {
try {
new SendChunk();
MainUtil.canSendChunk = true;
} catch (ClassNotFoundException | NoSuchFieldException | NoSuchMethodException e) {
- PS.debug(SendChunk.class + " does not support " + StringMan.getString(getServerVersion()));
+ PlotSquared.debug(
+ SendChunk.class + " does not support " + StringMan.getString(getServerVersion()));
MainUtil.canSendChunk = false;
}
- if (PS.get().checkVersion(getServerVersion(), BukkitVersion.v1_13_0)) {
- return QueueProvider.of(BukkitLocalQueue.class, BukkitLocalQueue.class);
- }
- if (PS.get().checkVersion(getServerVersion(), BukkitVersion.v1_9_0)) {
- return QueueProvider.of(BukkitLocalQueue_1_9.class, BukkitLocalQueue.class);
- }
- if (PS.get().checkVersion(getServerVersion(), BukkitVersion.v1_8_3)) {
- return QueueProvider.of(BukkitLocalQueue_1_8_3.class, BukkitLocalQueue.class);
- }
- if (PS.get().checkVersion(getServerVersion(), BukkitVersion.v1_8_0)) {
- return QueueProvider.of(BukkitLocalQueue_1_8.class, BukkitLocalQueue.class);
- }
- return QueueProvider.of(BukkitLocalQueue_1_7.class, BukkitLocalQueue.class);
+ return QueueProvider.of(BukkitLocalQueue.class, BukkitLocalQueue.class);
}
- @Override
- public WorldUtil initWorldUtil() {
+ @Override public WorldUtil initWorldUtil() {
return new BukkitUtil();
}
- @Override
- public boolean initPlotMeConverter() {
+ @Override public boolean initPlotMeConverter() {
if (new LikePlotMeConverter("PlotMe").run(new ClassicPlotMeConnector())) {
return true;
} else if (new LikePlotMeConverter("PlotMe").run(new PlotMeConnector_017())) {
@@ -711,12 +635,12 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
return false;
}
- @Override
- public GeneratorWrapper> getGenerator(String world, String name) {
+ @Override @Nullable public GeneratorWrapper> getGenerator(@NonNull final String world,
+ @Nullable final String name) {
if (name == null) {
return null;
}
- Plugin genPlugin = Bukkit.getPluginManager().getPlugin(name);
+ final Plugin genPlugin = Bukkit.getPluginManager().getPlugin(name);
if (genPlugin != null && genPlugin.isEnabled()) {
ChunkGenerator gen = genPlugin.getDefaultWorldGenerator(world, "");
if (gen instanceof GeneratorWrapper>) {
@@ -724,28 +648,26 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
}
return new BukkitPlotGenerator(world, gen);
} else {
- return new BukkitPlotGenerator(PS.get().IMP.getDefaultGenerator());
+ return new BukkitPlotGenerator(PlotSquared.get().IMP.getDefaultGenerator());
}
}
- @Override
- public HybridUtils initHybridUtils() {
+ @Override public HybridUtils initHybridUtils() {
return new BukkitHybridUtils();
}
- @Override
- public SetupUtils initSetupUtils() {
+ @Override public SetupUtils initSetupUtils() {
return new BukkitSetupUtils();
}
- @Override
- public UUIDHandlerImplementation initUUIDHandler() {
+ @Override public UUIDHandlerImplementation initUUIDHandler() {
boolean checkVersion = false;
try {
OfflinePlayer.class.getDeclaredMethod("getUniqueId");
checkVersion = true;
- } catch (Throwable ignore) {}
- UUIDWrapper wrapper;
+ } catch (Throwable ignore) {
+ }
+ final UUIDWrapper wrapper;
if (Settings.UUID.OFFLINE) {
if (Settings.UUID.FORCE_LOWERCASE) {
wrapper = new LowerOfflineUUIDWrapper();
@@ -765,20 +687,22 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
Settings.UUID.OFFLINE = true;
}
if (!checkVersion) {
- PS.log(C.PREFIX + " &c[WARN] Titles are disabled - please update your version of Bukkit to support this feature.");
+ PlotSquared.log(C.PREFIX
+ + " &c[WARN] Titles are disabled - please update your version of Bukkit to support this feature.");
Settings.TITLES = false;
} else {
AbstractTitle.TITLE_CLASS = new DefaultTitle_111();
- if (wrapper instanceof DefaultUUIDWrapper || wrapper.getClass() == OfflineUUIDWrapper.class && !Bukkit.getOnlineMode()) {
+ if (wrapper instanceof DefaultUUIDWrapper
+ || wrapper.getClass() == OfflineUUIDWrapper.class && !Bukkit.getOnlineMode()) {
Settings.UUID.NATIVE_UUID_PROVIDER = true;
}
}
if (Settings.UUID.OFFLINE) {
- PS.log(C.PREFIX
- + " &6" + getPluginName() + " is using Offline Mode UUIDs either because of user preference, or because you are using an old version of "
- + "Bukkit");
+ PlotSquared.log(C.PREFIX + " &6" + getPluginName()
+ + " is using Offline Mode UUIDs either because of user preference, or because you are using an old version of "
+ + "Bukkit");
} else {
- PS.log(C.PREFIX + " &6" + getPluginName() + " is using online UUIDs");
+ PlotSquared.log(C.PREFIX + " &6" + getPluginName() + " is using online UUIDs");
}
if (Settings.UUID.USE_SQLUUIDHANDLER) {
return new SQLUUIDHandler(wrapper);
@@ -787,53 +711,45 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
}
}
- @Override
- public ChunkManager initChunkManager() {
+ @Override public ChunkManager initChunkManager() {
return new BukkitChunkManager();
}
- @Override
- public EventUtil initEventUtil() {
+ @Override public EventUtil initEventUtil() {
return new BukkitEventUtil();
}
- @Override
- public void unregister(PlotPlayer player) {
+ @Override public void unregister(@NonNull final PlotPlayer player) {
BukkitUtil.removePlayer(player.getName());
}
- @Override
- public void registerChunkProcessor() {
+ @Override public void registerChunkProcessor() {
getServer().getPluginManager().registerEvents(new ChunkListener(), this);
}
- @Override
- public void registerWorldEvents() {
+ @Override public void registerWorldEvents() {
getServer().getPluginManager().registerEvents(new WorldEvents(), this);
}
- @Override
- public IndependentPlotGenerator getDefaultGenerator() {
+ @Override public IndependentPlotGenerator getDefaultGenerator() {
return new HybridGen();
}
- @Override
- public InventoryUtil initInventoryUtil() {
+ @Override public InventoryUtil initInventoryUtil() {
return new BukkitInventoryUtil();
}
- @Override
- public void startMetrics() {
+ @Override public void startMetrics() {
new Metrics(this).start();
- PS.log(C.PREFIX + "&6Metrics enabled.");
+ PlotSquared.log(C.PREFIX + "&6Metrics enabled.");
}
- @Override
- public void setGenerator(String worldName) {
+ @Override public void setGenerator(@NonNull final String worldName) {
World world = BukkitUtil.getWorld(worldName);
if (world == null) {
// create world
- ConfigurationSection worldConfig = PS.get().worlds.getConfigurationSection("worlds." + worldName);
+ ConfigurationSection worldConfig =
+ PlotSquared.get().worlds.getConfigurationSection("worlds." + worldName);
String manager = worldConfig.getString("generator.plugin", getPluginName());
SetupObject setup = new SetupObject();
setup.plotManager = manager;
@@ -846,38 +762,35 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
world = Bukkit.getWorld(worldName);
} else {
try {
- if (!PS.get().hasPlotArea(worldName)) {
+ if (!PlotSquared.get().hasPlotArea(worldName)) {
SetGenCB.setGenerator(BukkitUtil.getWorld(worldName));
}
} catch (Exception ignored) {
- PS.log("Failed to reload world: " + world + " | " + ignored.getMessage());
+ PlotSquared.log("Failed to reload world: " + world + " | " + ignored.getMessage());
Bukkit.getServer().unloadWorld(world, false);
return;
}
}
ChunkGenerator gen = world.getGenerator();
if (gen instanceof BukkitPlotGenerator) {
- PS.get().loadWorld(worldName, (BukkitPlotGenerator) gen);
+ PlotSquared.get().loadWorld(worldName, (BukkitPlotGenerator) gen);
} else if (gen != null) {
- PS.get().loadWorld(worldName, new BukkitPlotGenerator(worldName, gen));
- } else if (PS.get().worlds.contains("worlds." + worldName)) {
- PS.get().loadWorld(worldName, null);
+ PlotSquared.get().loadWorld(worldName, new BukkitPlotGenerator(worldName, gen));
+ } else if (PlotSquared.get().worlds.contains("worlds." + worldName)) {
+ PlotSquared.get().loadWorld(worldName, null);
}
}
- @Override
- public SchematicHandler initSchematicHandler() {
+ @Override public SchematicHandler initSchematicHandler() {
return new BukkitSchematicHandler();
}
- @Override
- public AbstractTitle initTitleManager() {
+ @Override public AbstractTitle initTitleManager() {
// Already initialized in UUID handler
return AbstractTitle.TITLE_CLASS;
}
- @Override
- public PlotPlayer wrapPlayer(Object player) {
+ @Override @Nullable public PlotPlayer wrapPlayer(final Object player) {
if (player instanceof Player) {
return BukkitUtil.getPlayer((Player) player);
}
@@ -893,14 +806,12 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
return null;
}
- @Override
- public String getNMSPackage() {
- String name = Bukkit.getServer().getClass().getPackage().getName();
+ @Override public String getNMSPackage() {
+ final String name = Bukkit.getServer().getClass().getPackage().getName();
return name.substring(name.lastIndexOf('.') + 1);
}
- @Override
- public ChatManager> initChatManager() {
+ @Override public ChatManager> initChatManager() {
if (Settings.Chat.INTERACTIVE) {
return new BukkitChatManager();
} else {
@@ -908,17 +819,25 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
}
}
- @Override
- public GeneratorWrapper> wrapPlotGenerator(String world, IndependentPlotGenerator generator) {
+ @Override public GeneratorWrapper> wrapPlotGenerator(@Nullable final String world,
+ @NonNull final IndependentPlotGenerator generator) {
return new BukkitPlotGenerator(generator);
}
- @Override
- public List getPluginIds() {
- ArrayList names = new ArrayList<>();
- for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
- names.add(plugin.getName() + ';' + plugin.getDescription().getVersion() + ':' + plugin.isEnabled());
+ @Override public List getPluginIds() {
+ final List names = new ArrayList<>();
+ for (final Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
+ names.add(plugin.getName() + ';' + plugin.getDescription().getVersion() + ':' + plugin
+ .isEnabled());
}
return names;
}
-}
\ No newline at end of file
+
+ @Override public BlockRegistry getBlockRegistry() {
+ return this.blockRegistry;
+ }
+
+ @Override public LegacyMappings getLegacyMappings() {
+ return this.legacyMappings;
+ }
+}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/chat/ArrayWrapper.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/chat/ArrayWrapper.java
similarity index 87%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/chat/ArrayWrapper.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/chat/ArrayWrapper.java
index 2dd68fa4e..064d77d86 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/chat/ArrayWrapper.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/chat/ArrayWrapper.java
@@ -1,4 +1,4 @@
-package com.plotsquared.bukkit.chat;
+package com.github.intellectualsites.plotsquared.bukkit.chat;
import org.apache.commons.lang.Validate;
@@ -19,6 +19,8 @@ import java.util.Collection;
*/
public final class ArrayWrapper {
+ private E[] _array;
+
/**
* Creates an array wrapper with some elements.
*
@@ -28,7 +30,38 @@ public final class ArrayWrapper {
setArray(elements);
}
- private E[] _array;
+ /**
+ * Converts an iterable element collection to an array of elements.
+ * The iteration order of the specified object will be used as the array element order.
+ *
+ * @param list The iterable of objects which will be converted to an array.
+ * @param c The type of the elements of the array.
+ * @return An array of elements in the specified iterable.
+ */
+ @SuppressWarnings("unchecked") public static T[] toArray(Iterable extends T> list,
+ Class c) {
+ int size = -1;
+ if (list instanceof Collection>) {
+ @SuppressWarnings("rawtypes") Collection coll = (Collection) list;
+ size = coll.size();
+ }
+
+
+ if (size < 0) {
+ size = 0;
+ // Ugly hack: Count it ourselves
+ for (@SuppressWarnings("unused") T element : list) {
+ size++;
+ }
+ }
+
+ T[] result = (T[]) Array.newInstance(c, size);
+ int i = 0;
+ for (T element : list) { // Assumes iteration order is consistent
+ result[i++] = element; // Assign array element at index THEN increment counter
+ }
+ return result;
+ }
/**
* Retrieves a reference to the wrapped array instance.
@@ -54,9 +87,7 @@ public final class ArrayWrapper {
*
* @see Arrays#equals(Object[], Object[])
*/
- @SuppressWarnings("rawtypes")
- @Override
- public boolean equals(Object other) {
+ @SuppressWarnings("rawtypes") @Override public boolean equals(Object other) {
if (!(other instanceof ArrayWrapper)) {
return false;
}
@@ -69,43 +100,8 @@ public final class ArrayWrapper {
* @return This object's hash code.
* @see Arrays#hashCode(Object[])
*/
- @Override
- public int hashCode() {
+ @Override public int hashCode() {
return Arrays.hashCode(_array);
}
- /**
- * Converts an iterable element collection to an array of elements.
- * The iteration order of the specified object will be used as the array element order.
- *
- * @param list The iterable of objects which will be converted to an array.
- * @param c The type of the elements of the array.
- * @return An array of elements in the specified iterable.
- */
- @SuppressWarnings("unchecked")
- public static T[] toArray(Iterable extends T> list, Class c) {
- int size = -1;
- if (list instanceof Collection>) {
- @SuppressWarnings("rawtypes")
- Collection coll = (Collection) list;
- size = coll.size();
- }
-
-
- if (size < 0) {
- size = 0;
- // Ugly hack: Count it ourselves
- for (@SuppressWarnings("unused") T element : list) {
- size++;
- }
- }
-
- T[] result = (T[]) Array.newInstance(c, size);
- int i = 0;
- for (T element : list) { // Assumes iteration order is consistent
- result[i++] = element; // Assign array element at index THEN increment counter
- }
- return result;
- }
-
}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/chat/FancyMessage.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/chat/FancyMessage.java
similarity index 83%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/chat/FancyMessage.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/chat/FancyMessage.java
index 0f1b0d529..41ec91e49 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/chat/FancyMessage.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/chat/FancyMessage.java
@@ -1,17 +1,11 @@
-package com.plotsquared.bukkit.chat;
-
-import static com.plotsquared.bukkit.chat.TextualComponent.rawText;
+package com.github.intellectualsites.plotsquared.bukkit.chat;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.stream.JsonWriter;
-import org.bukkit.Achievement;
-import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
-import org.bukkit.Material;
-import org.bukkit.Statistic;
+import org.bukkit.*;
import org.bukkit.Statistic.Type;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.serialization.ConfigurationSerializable;
@@ -22,17 +16,8 @@ import org.bukkit.inventory.ItemStack;
import java.io.IOException;
import java.io.StringWriter;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
+import java.lang.reflect.*;
+import java.util.*;
import java.util.logging.Level;
/**
@@ -45,7 +30,14 @@ import java.util.logging.Level;
* optionally initializing it with text. Further property-setting method calls will affect that editing component.
*
*/
-public class FancyMessage implements JsonRepresentedObject, Cloneable, Iterable, ConfigurationSerializable {
+public class FancyMessage
+ implements JsonRepresentedObject, Cloneable, Iterable, ConfigurationSerializable {
+
+ private static Constructor> nmsPacketPlayOutChatConstructor;
+ // The ChatSerializer's instance of Gson
+ private static Object nmsChatSerializerGsonInstance;
+ private static Method fromJsonMethod;
+ private static JsonParser _stringParser = new JsonParser();
static {
ConfigurationSerialization.registerClass(FancyMessage.class);
@@ -55,27 +47,13 @@ public class FancyMessage implements JsonRepresentedObject, Cloneable, Iterable<
private String jsonString;
private boolean dirty;
- private static Constructor> nmsPacketPlayOutChatConstructor;
-
- @Override
- public FancyMessage clone() throws CloneNotSupportedException {
- FancyMessage instance = (FancyMessage) super.clone();
- instance.messageParts = new ArrayList<>(messageParts.size());
- for (int i = 0; i < messageParts.size(); i++) {
- instance.messageParts.add(i, messageParts.get(i).clone());
- }
- instance.dirty = false;
- instance.jsonString = null;
- return instance;
- }
-
/**
* Creates a JSON message with text.
*
* @param firstPartText The existing text in the message.
*/
public FancyMessage(final String firstPartText) {
- this(rawText(firstPartText));
+ this(TextualComponent.rawText(firstPartText));
}
private FancyMessage(final TextualComponent firstPartText) {
@@ -85,10 +63,12 @@ public class FancyMessage implements JsonRepresentedObject, Cloneable, Iterable<
dirty = false;
if (nmsPacketPlayOutChatConstructor == null) {
try {
- nmsPacketPlayOutChatConstructor = Reflection.getNMSClass("PacketPlayOutChat").getDeclaredConstructor(Reflection.getNMSClass("IChatBaseComponent"));
+ nmsPacketPlayOutChatConstructor = Reflection.getNMSClass("PacketPlayOutChat")
+ .getDeclaredConstructor(Reflection.getNMSClass("IChatBaseComponent"));
nmsPacketPlayOutChatConstructor.setAccessible(true);
} catch (NoSuchMethodException e) {
- Bukkit.getLogger().log(Level.SEVERE, "Could not find Minecraft method or constructor.", e);
+ Bukkit.getLogger()
+ .log(Level.SEVERE, "Could not find Minecraft method or constructor.", e);
} catch (SecurityException e) {
Bukkit.getLogger().log(Level.WARNING, "Could not access constructor.", e);
}
@@ -102,6 +82,113 @@ public class FancyMessage implements JsonRepresentedObject, Cloneable, Iterable<
this((TextualComponent) null);
}
+ /**
+ * Deserializes a JSON-represented message from a mapping of key-value pairs.
+ * This is called by the Bukkit serialization API.
+ * It is not intended for direct public API consumption.
+ *
+ * @param serialized The key-value mapping which represents a fancy message.
+ */
+ @SuppressWarnings("unchecked") public static FancyMessage deserialize(
+ Map serialized) {
+ FancyMessage msg = new FancyMessage();
+ msg.messageParts = (List) serialized.get("messageParts");
+ msg.jsonString = serialized.containsKey("JSON") ? serialized.get("JSON").toString() : null;
+ msg.dirty = !serialized.containsKey("JSON");
+ return msg;
+ }
+
+ /**
+ * Deserializes a fancy message from its JSON representation. This JSON representation is of the format of
+ * that returned by {@link #toJSONString()}, and is compatible with vanilla inputs.
+ *
+ * @param json The JSON string which represents a fancy message.
+ * @return A {@code FancyMessage} representing the parameterized JSON message.
+ */
+ public static FancyMessage deserialize(String json) {
+ JsonObject serialized = _stringParser.parse(json).getAsJsonObject();
+ JsonArray extra = serialized.getAsJsonArray("extra"); // Get the extra component
+ FancyMessage returnVal = new FancyMessage();
+ returnVal.messageParts.clear();
+ for (JsonElement mPrt : extra) {
+ MessagePart component = new MessagePart();
+ JsonObject messagePart = mPrt.getAsJsonObject();
+ for (Map.Entry entry : messagePart.entrySet()) {
+ // Deserialize text
+ if (TextualComponent.isTextKey(entry.getKey())) {
+ // The map mimics the YAML serialization, which has a "key" field and one or more "value" fields
+ Map serializedMapForm =
+ new HashMap<>(); // Must be object due to Bukkit serializer API compliance
+ serializedMapForm.put("key", entry.getKey());
+ if (entry.getValue().isJsonPrimitive()) {
+ // Assume string
+ serializedMapForm.put("value", entry.getValue().getAsString());
+ } else {
+ // Composite object, but we assume each element is a string
+ for (Map.Entry compositeNestedElement : entry
+ .getValue().getAsJsonObject().entrySet()) {
+ serializedMapForm.put("value." + compositeNestedElement.getKey(),
+ compositeNestedElement.getValue().getAsString());
+ }
+ }
+ component.text = TextualComponent.deserialize(serializedMapForm);
+ } else if (MessagePart.stylesToNames.inverse().containsKey(entry.getKey())) {
+ if (entry.getValue().getAsBoolean()) {
+ component.styles
+ .add(MessagePart.stylesToNames.inverse().get(entry.getKey()));
+ }
+ } else if (entry.getKey().equals("color")) {
+ component.color =
+ ChatColor.valueOf(entry.getValue().getAsString().toUpperCase());
+ } else if (entry.getKey().equals("clickEvent")) {
+ JsonObject object = entry.getValue().getAsJsonObject();
+ component.clickActionName = object.get("action").getAsString();
+ component.clickActionData = object.get("value").getAsString();
+ } else if (entry.getKey().equals("hoverEvent")) {
+ JsonObject object = entry.getValue().getAsJsonObject();
+ component.hoverActionName = object.get("action").getAsString();
+ if (object.get("value").isJsonPrimitive()) {
+ // Assume string
+ component.hoverActionData =
+ new JsonString(object.get("value").getAsString());
+ } else {
+ // Assume composite type
+ // The only composite type we currently store is another FancyMessage
+ // Therefore, recursion time!
+ component.hoverActionData = deserialize(object.get("value")
+ .toString() /* This should properly serialize the JSON object as a JSON string */);
+ }
+ } else if (entry.getKey().equals("insertion")) {
+ component.insertionData = entry.getValue().getAsString();
+ } else if (entry.getKey().equals("with")) {
+ for (JsonElement object : entry.getValue().getAsJsonArray()) {
+ if (object.isJsonPrimitive()) {
+ component.translationReplacements
+ .add(new JsonString(object.getAsString()));
+ } else {
+ // Only composite type stored in this array is - again - FancyMessages
+ // Recurse within this function to parse this as a translation replacement
+ component.translationReplacements.add(deserialize(object.toString()));
+ }
+ }
+ }
+ }
+ returnVal.messageParts.add(component);
+ }
+ return returnVal;
+ }
+
+ @Override public FancyMessage clone() throws CloneNotSupportedException {
+ FancyMessage instance = (FancyMessage) super.clone();
+ instance.messageParts = new ArrayList<>(messageParts.size());
+ for (int i = 0; i < messageParts.size(); i++) {
+ instance.messageParts.add(i, messageParts.get(i).clone());
+ }
+ instance.dirty = false;
+ instance.jsonString = null;
+ return instance;
+ }
+
/**
* Sets the text of the current editing component to a value.
*
@@ -110,7 +197,7 @@ public class FancyMessage implements JsonRepresentedObject, Cloneable, Iterable<
*/
public FancyMessage text(String text) {
MessagePart latest = latest();
- latest.text = rawText(text);
+ latest.text = TextualComponent.rawText(text);
dirty = true;
return this;
}
@@ -242,8 +329,12 @@ public class FancyMessage implements JsonRepresentedObject, Cloneable, Iterable<
*/
public FancyMessage achievementTooltip(final Achievement which) {
try {
- Object achievement = Reflection.getMethod(Reflection.getOBCClass("CraftStatistic"), "getNMSAchievement", Achievement.class).invoke(null, which);
- return achievementTooltip((String) Reflection.getField(Reflection.getNMSClass("Achievement"), "name").get(achievement));
+ Object achievement = Reflection
+ .getMethod(Reflection.getOBCClass("CraftStatistic"), "getNMSAchievement",
+ Achievement.class).invoke(null, which);
+ return achievementTooltip(
+ (String) Reflection.getField(Reflection.getNMSClass("Achievement"), "name")
+ .get(achievement));
} catch (IllegalAccessException e) {
Bukkit.getLogger().log(Level.WARNING, "Could not access method.", e);
return this;
@@ -251,7 +342,8 @@ public class FancyMessage implements JsonRepresentedObject, Cloneable, Iterable<
Bukkit.getLogger().log(Level.WARNING, "Argument could not be passed.", e);
return this;
} catch (InvocationTargetException e) {
- Bukkit.getLogger().log(Level.WARNING, "A error has occurred during invoking of method.", e);
+ Bukkit.getLogger()
+ .log(Level.WARNING, "A error has occurred during invoking of method.", e);
return this;
}
}
@@ -267,11 +359,16 @@ public class FancyMessage implements JsonRepresentedObject, Cloneable, Iterable<
public FancyMessage statisticTooltip(final Statistic which) {
Type type = which.getType();
if (type != Type.UNTYPED) {
- throw new IllegalArgumentException("That statistic requires an additional " + type + " parameter!");
+ throw new IllegalArgumentException(
+ "That statistic requires an additional " + type + " parameter!");
}
try {
- Object statistic = Reflection.getMethod(Reflection.getOBCClass("CraftStatistic"), "getNMSStatistic", Statistic.class).invoke(null, which);
- return achievementTooltip((String) Reflection.getField(Reflection.getNMSClass("Statistic"), "name").get(statistic));
+ Object statistic = Reflection
+ .getMethod(Reflection.getOBCClass("CraftStatistic"), "getNMSStatistic",
+ Statistic.class).invoke(null, which);
+ return achievementTooltip(
+ (String) Reflection.getField(Reflection.getNMSClass("Statistic"), "name")
+ .get(statistic));
} catch (IllegalAccessException e) {
Bukkit.getLogger().log(Level.WARNING, "Could not access method.", e);
return this;
@@ -279,7 +376,8 @@ public class FancyMessage implements JsonRepresentedObject, Cloneable, Iterable<
Bukkit.getLogger().log(Level.WARNING, "Argument could not be passed.", e);
return this;
} catch (InvocationTargetException e) {
- Bukkit.getLogger().log(Level.WARNING, "A error has occurred during invoking of method.", e);
+ Bukkit.getLogger()
+ .log(Level.WARNING, "A error has occurred during invoking of method.", e);
return this;
}
}
@@ -299,11 +397,16 @@ public class FancyMessage implements JsonRepresentedObject, Cloneable, Iterable<
throw new IllegalArgumentException("That statistic needs no additional parameter!");
}
if ((type == Type.BLOCK && item.isBlock()) || type == Type.ENTITY) {
- throw new IllegalArgumentException("Wrong parameter type for that statistic - needs " + type + "!");
+ throw new IllegalArgumentException(
+ "Wrong parameter type for that statistic - needs " + type + "!");
}
try {
- Object statistic = Reflection.getMethod(Reflection.getOBCClass("CraftStatistic"), "getMaterialStatistic", Statistic.class, Material.class).invoke(null, which, item);
- return achievementTooltip((String) Reflection.getField(Reflection.getNMSClass("Statistic"), "name").get(statistic));
+ Object statistic = Reflection
+ .getMethod(Reflection.getOBCClass("CraftStatistic"), "getMaterialStatistic",
+ Statistic.class, Material.class).invoke(null, which, item);
+ return achievementTooltip(
+ (String) Reflection.getField(Reflection.getNMSClass("Statistic"), "name")
+ .get(statistic));
} catch (IllegalAccessException e) {
Bukkit.getLogger().log(Level.WARNING, "Could not access method.", e);
return this;
@@ -311,7 +414,8 @@ public class FancyMessage implements JsonRepresentedObject, Cloneable, Iterable<
Bukkit.getLogger().log(Level.WARNING, "Argument could not be passed.", e);
return this;
} catch (InvocationTargetException e) {
- Bukkit.getLogger().log(Level.WARNING, "A error has occurred during invoking of method.", e);
+ Bukkit.getLogger()
+ .log(Level.WARNING, "A error has occurred during invoking of method.", e);
return this;
}
}
@@ -331,11 +435,16 @@ public class FancyMessage implements JsonRepresentedObject, Cloneable, Iterable<
throw new IllegalArgumentException("That statistic needs no additional parameter!");
}
if (type != Type.ENTITY) {
- throw new IllegalArgumentException("Wrong parameter type for that statistic - needs " + type + "!");
+ throw new IllegalArgumentException(
+ "Wrong parameter type for that statistic - needs " + type + "!");
}
try {
- Object statistic = Reflection.getMethod(Reflection.getOBCClass("CraftStatistic"), "getEntityStatistic", Statistic.class, EntityType.class).invoke(null, which, entity);
- return achievementTooltip((String) Reflection.getField(Reflection.getNMSClass("Statistic"), "name").get(statistic));
+ Object statistic = Reflection
+ .getMethod(Reflection.getOBCClass("CraftStatistic"), "getEntityStatistic",
+ Statistic.class, EntityType.class).invoke(null, which, entity);
+ return achievementTooltip(
+ (String) Reflection.getField(Reflection.getNMSClass("Statistic"), "name")
+ .get(statistic));
} catch (IllegalAccessException e) {
Bukkit.getLogger().log(Level.WARNING, "Could not access method.", e);
return this;
@@ -343,7 +452,8 @@ public class FancyMessage implements JsonRepresentedObject, Cloneable, Iterable<
Bukkit.getLogger().log(Level.WARNING, "Argument could not be passed.", e);
return this;
} catch (InvocationTargetException e) {
- Bukkit.getLogger().log(Level.WARNING, "A error has occurred during invoking of method.", e);
+ Bukkit.getLogger()
+ .log(Level.WARNING, "A error has occurred during invoking of method.", e);
return this;
}
}
@@ -356,7 +466,8 @@ public class FancyMessage implements JsonRepresentedObject, Cloneable, Iterable<
* @return This builder instance.
*/
public FancyMessage itemTooltip(final String itemJSON) {
- onHover("show_item", new JsonString(itemJSON)); // Seems a bit hacky, considering we have a JSON object as a parameter
+ onHover("show_item", new JsonString(
+ itemJSON)); // Seems a bit hacky, considering we have a JSON object as a parameter
return this;
}
@@ -369,8 +480,13 @@ public class FancyMessage implements JsonRepresentedObject, Cloneable, Iterable<
*/
public FancyMessage itemTooltip(final ItemStack itemStack) {
try {
- Object nmsItem = Reflection.getMethod(Reflection.getOBCClass("inventory.CraftItemStack"), "asNMSCopy", ItemStack.class).invoke(null, itemStack);
- return itemTooltip(Reflection.getMethod(Reflection.getNMSClass("ItemStack"), "save", Reflection.getNMSClass("NBTTagCompound")).invoke(nmsItem, Reflection.getNMSClass("NBTTagCompound").newInstance()).toString());
+ Object nmsItem = Reflection
+ .getMethod(Reflection.getOBCClass("inventory.CraftItemStack"), "asNMSCopy",
+ ItemStack.class).invoke(null, itemStack);
+ return itemTooltip(Reflection.getMethod(Reflection.getNMSClass("ItemStack"), "save",
+ Reflection.getNMSClass("NBTTagCompound"))
+ .invoke(nmsItem, Reflection.getNMSClass("NBTTagCompound").newInstance())
+ .toString());
} catch (Exception e) {
e.printStackTrace();
return this;
@@ -397,9 +513,25 @@ public class FancyMessage implements JsonRepresentedObject, Cloneable, Iterable<
* @return This builder instance.
*/
public FancyMessage tooltip(final Iterable lines) {
- tooltip(com.plotsquared.bukkit.chat.ArrayWrapper.toArray(lines, String.class));
+ tooltip(ArrayWrapper.toArray(lines, String.class));
return this;
}
+ /*
+
+ /**
+ * If the text is a translatable key, and it has replaceable values, this function can be used to set the replacements that will be used in the message.
+ * @param replacements The replacements, in order, that will be used in the language-specific message.
+ * @return This builder instance.
+ */ /* ------------
+ public FancyMessage translationReplacements(final Iterable extends CharSequence> replacements){
+ for(CharSequence str : replacements){
+ latest().translationReplacements.add(new JsonString(str));
+ }
+
+ return this;
+ }
+
+ */
/**
* Set the behavior of the current editing component to display raw text when the client hovers over the text.
@@ -453,29 +585,34 @@ public class FancyMessage implements JsonRepresentedObject, Cloneable, Iterable<
}
FancyMessage result = new FancyMessage();
- result.messageParts.clear(); // Remove the one existing text component that exists by default, which destabilizes the object
+ result.messageParts
+ .clear(); // Remove the one existing text component that exists by default, which destabilizes the object
for (int i = 0; i < lines.length; i++) {
try {
for (MessagePart component : lines[i]) {
if (component.clickActionData != null && component.clickActionName != null) {
- throw new IllegalArgumentException("The tooltip text cannot have click data.");
- } else if (component.hoverActionData != null && component.hoverActionName != null) {
- throw new IllegalArgumentException("The tooltip text cannot have a tooltip.");
+ throw new IllegalArgumentException(
+ "The tooltip text cannot have click data.");
+ } else if (component.hoverActionData != null
+ && component.hoverActionName != null) {
+ throw new IllegalArgumentException(
+ "The tooltip text cannot have a tooltip.");
}
if (component.hasText()) {
result.messageParts.add(component.clone());
}
}
if (i != lines.length - 1) {
- result.messageParts.add(new MessagePart(rawText("\n")));
+ result.messageParts.add(new MessagePart(TextualComponent.rawText("\n")));
}
} catch (CloneNotSupportedException e) {
Bukkit.getLogger().log(Level.WARNING, "Failed to clone object", e);
return this;
}
}
- return formattedTooltip(result.messageParts.isEmpty() ? null : result); // Throws NPE if size is 0, intended
+ return formattedTooltip(
+ result.messageParts.isEmpty() ? null : result); // Throws NPE if size is 0, intended
}
/**
@@ -486,7 +623,7 @@ public class FancyMessage implements JsonRepresentedObject, Cloneable, Iterable<
* @return This builder instance.
*/
public FancyMessage formattedTooltip(final Iterable lines) {
- return formattedTooltip(com.plotsquared.bukkit.chat.ArrayWrapper.toArray(lines, FancyMessage.class));
+ return formattedTooltip(ArrayWrapper.toArray(lines, FancyMessage.class));
}
/**
@@ -503,22 +640,6 @@ public class FancyMessage implements JsonRepresentedObject, Cloneable, Iterable<
return this;
}
- /*
-
- /**
- * If the text is a translatable key, and it has replaceable values, this function can be used to set the replacements that will be used in the message.
- * @param replacements The replacements, in order, that will be used in the language-specific message.
- * @return This builder instance.
- */ /* ------------
- public FancyMessage translationReplacements(final Iterable extends CharSequence> replacements){
- for(CharSequence str : replacements){
- latest().translationReplacements.add(new JsonString(str));
- }
-
- return this;
- }
-
- */
/**
* If the text is a translatable key, and it has replaceable values, this function can be used to set the replacements that will be used in the message.
@@ -543,7 +664,7 @@ public class FancyMessage implements JsonRepresentedObject, Cloneable, Iterable<
* @return This builder instance.
*/
public FancyMessage translationReplacements(final Iterable replacements) {
- return translationReplacements(com.plotsquared.bukkit.chat.ArrayWrapper.toArray(replacements, FancyMessage.class));
+ return translationReplacements(ArrayWrapper.toArray(replacements, FancyMessage.class));
}
/**
@@ -554,7 +675,7 @@ public class FancyMessage implements JsonRepresentedObject, Cloneable, Iterable<
* @return This builder instance.
*/
public FancyMessage then(final String text) {
- return then(rawText(text));
+ return then(TextualComponent.rawText(text));
}
/**
@@ -588,8 +709,7 @@ public class FancyMessage implements JsonRepresentedObject, Cloneable, Iterable<
return this;
}
- @Override
- public void writeJson(JsonWriter writer) throws IOException {
+ @Override public void writeJson(JsonWriter writer) throws IOException {
if (messageParts.size() == 1) {
latest().writeJson(writer);
} else {
@@ -641,8 +761,11 @@ public class FancyMessage implements JsonRepresentedObject, Cloneable, Iterable<
Player player = (Player) sender;
try {
Object handle = Reflection.getHandle(player);
- Object connection = Reflection.getField(handle.getClass(), "playerConnection").get(handle);
- Reflection.getMethod(connection.getClass(), "sendPacket", Reflection.getNMSClass("Packet")).invoke(connection, createChatPacket(jsonString));
+ Object connection =
+ Reflection.getField(handle.getClass(), "playerConnection").get(handle);
+ Reflection
+ .getMethod(connection.getClass(), "sendPacket", Reflection.getNMSClass("Packet"))
+ .invoke(connection, createChatPacket(jsonString));
} catch (IllegalArgumentException e) {
Bukkit.getLogger().log(Level.WARNING, "Argument could not be passed.", e);
} catch (IllegalAccessException e) {
@@ -650,7 +773,8 @@ public class FancyMessage implements JsonRepresentedObject, Cloneable, Iterable<
} catch (InstantiationException e) {
Bukkit.getLogger().log(Level.WARNING, "Underlying class is abstract.", e);
} catch (InvocationTargetException e) {
- Bukkit.getLogger().log(Level.WARNING, "A error has occurred during invoking of method.", e);
+ Bukkit.getLogger()
+ .log(Level.WARNING, "A error has occurred during invoking of method.", e);
} catch (NoSuchMethodException e) {
Bukkit.getLogger().log(Level.WARNING, "Could not find method.", e);
} catch (ClassNotFoundException e) {
@@ -658,11 +782,9 @@ public class FancyMessage implements JsonRepresentedObject, Cloneable, Iterable<
}
}
- // The ChatSerializer's instance of Gson
- private static Object nmsChatSerializerGsonInstance;
- private static Method fromJsonMethod;
-
- private Object createChatPacket(String json) throws IllegalArgumentException, IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchMethodException, ClassNotFoundException {
+ private Object createChatPacket(String json)
+ throws IllegalArgumentException, IllegalAccessException, InstantiationException,
+ InvocationTargetException, NoSuchMethodException, ClassNotFoundException {
if (nmsChatSerializerGsonInstance == null) {
// Find the field and its value, completely bypassing obfuscation
Class> chatSerializerClazz;
@@ -673,7 +795,8 @@ public class FancyMessage implements JsonRepresentedObject, Cloneable, Iterable<
// Y = minor
// Z = revision
final String version = Reflection.getVersion();
- String[] split = version.substring(1, version.length() - 1).split("_"); // Remove trailing dot
+ String[] split =
+ version.substring(1, version.length() - 1).split("_"); // Remove trailing dot
//int majorVersion = Integer.parseInt(split[0]);
int minorVersion = Integer.parseInt(split[1]);
int revisionVersion = Integer.parseInt(split[2].substring(1)); // Substring to ignore R
@@ -689,11 +812,14 @@ public class FancyMessage implements JsonRepresentedObject, Cloneable, Iterable<
}
for (Field declaredField : chatSerializerClazz.getDeclaredFields()) {
- if (Modifier.isFinal(declaredField.getModifiers()) && Modifier.isStatic(declaredField.getModifiers()) && declaredField.getType().getName().endsWith("Gson")) {
+ if (Modifier.isFinal(declaredField.getModifiers()) && Modifier
+ .isStatic(declaredField.getModifiers()) && declaredField.getType().getName()
+ .endsWith("Gson")) {
// We've found our field
declaredField.setAccessible(true);
nmsChatSerializerGsonInstance = declaredField.get(null);
- fromJsonMethod = nmsChatSerializerGsonInstance.getClass().getMethod("fromJson", String.class, Class.class);
+ fromJsonMethod = nmsChatSerializerGsonInstance.getClass()
+ .getMethod("fromJson", String.class, Class.class);
break;
}
}
@@ -701,7 +827,8 @@ public class FancyMessage implements JsonRepresentedObject, Cloneable, Iterable<
// Since the method is so simple, and all the obfuscated methods have the same name, it's easier to reimplement 'IChatBaseComponent a(String)' than to reflectively call it
// Of course, the implementation may change, but fuzzy matches might break with signature changes
- Object serializedChatComponent = fromJsonMethod.invoke(nmsChatSerializerGsonInstance, json, Reflection.getNMSClass("IChatBaseComponent"));
+ Object serializedChatComponent = fromJsonMethod.invoke(nmsChatSerializerGsonInstance, json,
+ Reflection.getNMSClass("IChatBaseComponent"));
return nmsPacketPlayOutChatConstructor.newInstance(serializedChatComponent);
}
@@ -782,26 +909,10 @@ public class FancyMessage implements JsonRepresentedObject, Cloneable, Iterable<
public Map serialize() {
HashMap map = new HashMap<>();
map.put("messageParts", messageParts);
-// map.put("JSON", toJSONString());
+ // map.put("JSON", toJSONString());
return map;
}
- /**
- * Deserializes a JSON-represented message from a mapping of key-value pairs.
- * This is called by the Bukkit serialization API.
- * It is not intended for direct public API consumption.
- *
- * @param serialized The key-value mapping which represents a fancy message.
- */
- @SuppressWarnings("unchecked")
- public static FancyMessage deserialize(Map serialized) {
- FancyMessage msg = new FancyMessage();
- msg.messageParts = (List) serialized.get("messageParts");
- msg.jsonString = serialized.containsKey("JSON") ? serialized.get("JSON").toString() : null;
- msg.dirty = !serialized.containsKey("JSON");
- return msg;
- }
-
/**
* Internally called method. Not for API consumption.
*/
@@ -809,78 +920,4 @@ public class FancyMessage implements JsonRepresentedObject, Cloneable, Iterable<
return messageParts.iterator();
}
- private static JsonParser _stringParser = new JsonParser();
-
- /**
- * Deserializes a fancy message from its JSON representation. This JSON representation is of the format of
- * that returned by {@link #toJSONString()}, and is compatible with vanilla inputs.
- *
- * @param json The JSON string which represents a fancy message.
- * @return A {@code FancyMessage} representing the parameterized JSON message.
- */
- public static FancyMessage deserialize(String json) {
- JsonObject serialized = _stringParser.parse(json).getAsJsonObject();
- JsonArray extra = serialized.getAsJsonArray("extra"); // Get the extra component
- FancyMessage returnVal = new FancyMessage();
- returnVal.messageParts.clear();
- for (JsonElement mPrt : extra) {
- MessagePart component = new MessagePart();
- JsonObject messagePart = mPrt.getAsJsonObject();
- for (Map.Entry entry : messagePart.entrySet()) {
- // Deserialize text
- if (TextualComponent.isTextKey(entry.getKey())) {
- // The map mimics the YAML serialization, which has a "key" field and one or more "value" fields
- Map serializedMapForm = new HashMap<>(); // Must be object due to Bukkit serializer API compliance
- serializedMapForm.put("key", entry.getKey());
- if (entry.getValue().isJsonPrimitive()) {
- // Assume string
- serializedMapForm.put("value", entry.getValue().getAsString());
- } else {
- // Composite object, but we assume each element is a string
- for (Map.Entry compositeNestedElement : entry.getValue().getAsJsonObject().entrySet()) {
- serializedMapForm.put("value." + compositeNestedElement.getKey(), compositeNestedElement.getValue().getAsString());
- }
- }
- component.text = TextualComponent.deserialize(serializedMapForm);
- } else if (MessagePart.stylesToNames.inverse().containsKey(entry.getKey())) {
- if (entry.getValue().getAsBoolean()) {
- component.styles.add(MessagePart.stylesToNames.inverse().get(entry.getKey()));
- }
- } else if (entry.getKey().equals("color")) {
- component.color = ChatColor.valueOf(entry.getValue().getAsString().toUpperCase());
- } else if (entry.getKey().equals("clickEvent")) {
- JsonObject object = entry.getValue().getAsJsonObject();
- component.clickActionName = object.get("action").getAsString();
- component.clickActionData = object.get("value").getAsString();
- } else if (entry.getKey().equals("hoverEvent")) {
- JsonObject object = entry.getValue().getAsJsonObject();
- component.hoverActionName = object.get("action").getAsString();
- if (object.get("value").isJsonPrimitive()) {
- // Assume string
- component.hoverActionData = new JsonString(object.get("value").getAsString());
- } else {
- // Assume composite type
- // The only composite type we currently store is another FancyMessage
- // Therefore, recursion time!
- component.hoverActionData = deserialize(object.get("value").toString() /* This should properly serialize the JSON object as a JSON string */);
- }
- } else if (entry.getKey().equals("insertion")) {
- component.insertionData = entry.getValue().getAsString();
- } else if (entry.getKey().equals("with")) {
- for (JsonElement object : entry.getValue().getAsJsonArray()) {
- if (object.isJsonPrimitive()) {
- component.translationReplacements.add(new JsonString(object.getAsString()));
- } else {
- // Only composite type stored in this array is - again - FancyMessages
- // Recurse within this function to parse this as a translation replacement
- component.translationReplacements.add(deserialize(object.toString()));
- }
- }
- }
- }
- returnVal.messageParts.add(component);
- }
- return returnVal;
- }
-
}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/chat/JsonRepresentedObject.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/chat/JsonRepresentedObject.java
similarity index 87%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/chat/JsonRepresentedObject.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/chat/JsonRepresentedObject.java
index 6092bce60..04f036526 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/chat/JsonRepresentedObject.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/chat/JsonRepresentedObject.java
@@ -1,4 +1,4 @@
-package com.plotsquared.bukkit.chat;
+package com.github.intellectualsites.plotsquared.bukkit.chat;
import com.google.gson.stream.JsonWriter;
@@ -11,6 +11,7 @@ interface JsonRepresentedObject {
/**
* Writes the JSON representation of this object to the specified writer.
+ *
* @param writer The JSON writer which will receive the object.
* @throws IOException If an error occurs writing to the stream.
*/
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/chat/JsonString.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/chat/JsonString.java
similarity index 86%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/chat/JsonString.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/chat/JsonString.java
index 1fb197e8b..7f8dd4d29 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/chat/JsonString.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/chat/JsonString.java
@@ -1,4 +1,4 @@
-package com.plotsquared.bukkit.chat;
+package com.github.intellectualsites.plotsquared.bukkit.chat;
import com.google.gson.stream.JsonWriter;
import org.bukkit.configuration.serialization.ConfigurationSerializable;
@@ -20,8 +20,11 @@ final class JsonString implements JsonRepresentedObject, ConfigurationSerializab
_value = value == null ? null : value.toString();
}
- @Override
- public void writeJson(JsonWriter writer) throws IOException {
+ public static JsonString deserialize(Map map) {
+ return new JsonString(map.get("stringValue").toString());
+ }
+
+ @Override public void writeJson(JsonWriter writer) throws IOException {
writer.value(getValue());
}
@@ -35,12 +38,7 @@ final class JsonString implements JsonRepresentedObject, ConfigurationSerializab
return theSingleValue;
}
- public static JsonString deserialize(Map map) {
- return new JsonString(map.get("stringValue").toString());
- }
-
- @Override
- public String toString() {
+ @Override public String toString() {
return _value;
}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/chat/MessagePart.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/chat/MessagePart.java
similarity index 83%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/chat/MessagePart.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/chat/MessagePart.java
index a3ed7fa2b..6c2e838d6 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/chat/MessagePart.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/chat/MessagePart.java
@@ -1,4 +1,4 @@
-package com.plotsquared.bukkit.chat;
+package com.github.intellectualsites.plotsquared.bukkit.chat;
import com.google.common.collect.BiMap;
import com.google.common.collect.ImmutableBiMap;
@@ -19,43 +19,6 @@ import java.util.logging.Level;
*/
final class MessagePart implements JsonRepresentedObject, ConfigurationSerializable, Cloneable {
- ChatColor color = ChatColor.WHITE;
- ArrayList styles = new ArrayList<>();
- String clickActionName = null;
- String clickActionData = null;
- String hoverActionName = null;
- JsonRepresentedObject hoverActionData = null;
- TextualComponent text = null;
- String insertionData = null;
- ArrayList translationReplacements = new ArrayList<>();
-
- MessagePart(final TextualComponent text) {
- this.text = text;
- }
-
- MessagePart() {
- this.text = null;
- }
-
- boolean hasText() {
- return text != null;
- }
-
- @Override
- @SuppressWarnings("unchecked")
- public MessagePart clone() throws CloneNotSupportedException {
- MessagePart obj = (MessagePart) super.clone();
- obj.styles = (ArrayList) styles.clone();
- if (hoverActionData instanceof JsonString) {
- obj.hoverActionData = new JsonString(((JsonString) hoverActionData).getValue());
- } else if (hoverActionData instanceof FancyMessage) {
- obj.hoverActionData = ((FancyMessage) hoverActionData).clone();
- }
- obj.translationReplacements = (ArrayList) translationReplacements.clone();
- return obj;
-
- }
-
static final BiMap stylesToNames;
static {
@@ -83,6 +46,62 @@ final class MessagePart implements JsonRepresentedObject, ConfigurationSerializa
stylesToNames = builder.build();
}
+ static {
+ ConfigurationSerialization.registerClass(MessagePart.class);
+ }
+
+ ChatColor color = ChatColor.WHITE;
+ ArrayList styles = new ArrayList<>();
+ String clickActionName = null;
+ String clickActionData = null;
+ String hoverActionName = null;
+ JsonRepresentedObject hoverActionData = null;
+ TextualComponent text = null;
+ String insertionData = null;
+ ArrayList translationReplacements = new ArrayList<>();
+
+ MessagePart(final TextualComponent text) {
+ this.text = text;
+ }
+
+ MessagePart() {
+ this.text = null;
+ }
+
+ @SuppressWarnings("unchecked")
+ public static MessagePart deserialize(Map serialized) {
+ MessagePart part = new MessagePart((TextualComponent) serialized.get("text"));
+ part.styles = (ArrayList) serialized.get("styles");
+ part.color = ChatColor.getByChar(serialized.get("color").toString());
+ part.hoverActionName = (String) serialized.get("hoverActionName");
+ part.hoverActionData = (JsonRepresentedObject) serialized.get("hoverActionData");
+ part.clickActionName = (String) serialized.get("clickActionName");
+ part.clickActionData = (String) serialized.get("clickActionData");
+ part.insertionData = (String) serialized.get("insertion");
+ part.translationReplacements =
+ (ArrayList) serialized.get("translationReplacements");
+ return part;
+ }
+
+ boolean hasText() {
+ return text != null;
+ }
+
+ @Override @SuppressWarnings("unchecked") public MessagePart clone()
+ throws CloneNotSupportedException {
+ MessagePart obj = (MessagePart) super.clone();
+ obj.styles = (ArrayList) styles.clone();
+ if (hoverActionData instanceof JsonString) {
+ obj.hoverActionData = new JsonString(((JsonString) hoverActionData).getValue());
+ } else if (hoverActionData instanceof FancyMessage) {
+ obj.hoverActionData = ((FancyMessage) hoverActionData).clone();
+ }
+ obj.translationReplacements =
+ (ArrayList) translationReplacements.clone();
+ return obj;
+
+ }
+
public void writeJson(JsonWriter json) {
try {
json.beginObject();
@@ -92,24 +111,20 @@ final class MessagePart implements JsonRepresentedObject, ConfigurationSerializa
json.name(stylesToNames.get(style)).value(true);
}
if (clickActionName != null && clickActionData != null) {
- json.name("clickEvent")
- .beginObject()
- .name("action").value(clickActionName)
- .name("value").value(clickActionData)
- .endObject();
+ json.name("clickEvent").beginObject().name("action").value(clickActionName)
+ .name("value").value(clickActionData).endObject();
}
if (hoverActionName != null && hoverActionData != null) {
- json.name("hoverEvent")
- .beginObject()
- .name("action").value(hoverActionName)
- .name("value");
+ json.name("hoverEvent").beginObject().name("action").value(hoverActionName)
+ .name("value");
hoverActionData.writeJson(json);
json.endObject();
}
if (insertionData != null) {
json.name("insertion").value(insertionData);
}
- if (translationReplacements.size() > 0 && text != null && TextualComponent.isTranslatableText(text)) {
+ if (translationReplacements.size() > 0 && text != null && TextualComponent
+ .isTranslatableText(text)) {
json.name("with").beginArray();
for (JsonRepresentedObject obj : translationReplacements) {
obj.writeJson(json);
@@ -118,7 +133,8 @@ final class MessagePart implements JsonRepresentedObject, ConfigurationSerializa
}
json.endObject();
} catch (IOException e) {
- Bukkit.getLogger().log(Level.WARNING, "A problem occured during writing of JSON string", e);
+ Bukkit.getLogger()
+ .log(Level.WARNING, "A problem occured during writing of JSON string", e);
}
}
@@ -136,22 +152,4 @@ final class MessagePart implements JsonRepresentedObject, ConfigurationSerializa
return map;
}
- @SuppressWarnings("unchecked")
- public static MessagePart deserialize(Map serialized) {
- MessagePart part = new MessagePart((TextualComponent) serialized.get("text"));
- part.styles = (ArrayList) serialized.get("styles");
- part.color = ChatColor.getByChar(serialized.get("color").toString());
- part.hoverActionName = (String) serialized.get("hoverActionName");
- part.hoverActionData = (JsonRepresentedObject) serialized.get("hoverActionData");
- part.clickActionName = (String) serialized.get("clickActionName");
- part.clickActionData = (String) serialized.get("clickActionData");
- part.insertionData = (String) serialized.get("insertion");
- part.translationReplacements = (ArrayList) serialized.get("translationReplacements");
- return part;
- }
-
- static {
- ConfigurationSerialization.registerClass(MessagePart.class);
- }
-
}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/chat/Reflection.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/chat/Reflection.java
similarity index 95%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/chat/Reflection.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/chat/Reflection.java
index de315c06e..79c445dcc 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/chat/Reflection.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/chat/Reflection.java
@@ -1,4 +1,4 @@
-package com.plotsquared.bukkit.chat;
+package com.github.intellectualsites.plotsquared.bukkit.chat;
import org.bukkit.Bukkit;
@@ -28,10 +28,12 @@ public final class Reflection {
* Contains loaded methods in a cache.
* The map maps [types to maps of [method names to maps of [parameter types to method instances]]].
*/
- private static final Map, Map>, Method>>> _loadedMethods = new HashMap<>();
+ private static final Map, Map>, Method>>>
+ _loadedMethods = new HashMap<>();
private static String _versionString;
- private Reflection() { }
+ private Reflection() {
+ }
/**
* Gets the version string from the package name of the CraftBukkit server implementation.
@@ -109,8 +111,9 @@ public final class Reflection {
* @param obj The object for which to retrieve an NMS handle.
* @return The NMS handle of the specified object, or {@code null} if it could not be retrieved using {@code getHandle()}.
*/
- public synchronized static Object getHandle(Object obj) throws InvocationTargetException, IllegalAccessException, IllegalArgumentException {
- return getMethod(obj.getClass(), "getHandle").invoke(obj);
+ public synchronized static Object getHandle(Object obj)
+ throws InvocationTargetException, IllegalAccessException, IllegalArgumentException {
+ return getMethod(obj.getClass(), "getHandle").invoke(obj);
}
/**
@@ -181,7 +184,8 @@ public final class Reflection {
_loadedMethods.put(clazz, new HashMap>, Method>>());
}
- Map>, Method>> loadedMethodNames = _loadedMethods.get(clazz);
+ Map>, Method>> loadedMethodNames =
+ _loadedMethods.get(clazz);
if (!loadedMethodNames.containsKey(name)) {
loadedMethodNames.put(name, new HashMap>, Method>());
}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/chat/TextualComponent.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/chat/TextualComponent.java
similarity index 81%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/chat/TextualComponent.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/chat/TextualComponent.java
index 44005ed39..14e3d2305 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/chat/TextualComponent.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/chat/TextualComponent.java
@@ -1,4 +1,4 @@
-package com.plotsquared.bukkit.chat;
+package com.github.intellectualsites.plotsquared.bukkit.chat;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableMap;
@@ -27,7 +27,8 @@ public abstract class TextualComponent implements Cloneable {
if (map.containsKey("key") && map.size() == 2 && map.containsKey("value")) {
// Arbitrary text component
return ArbitraryTextTypeComponent.deserialize(map);
- } else if (map.size() >= 2 && map.containsKey("key") && !map.containsKey("value") /* It contains keys that START WITH value */) {
+ } else if (map.size() >= 2 && map.containsKey("key") && !map
+ .containsKey("value") /* It contains keys that START WITH value */) {
// Complex JSON object
return ComplexTextTypeComponent.deserialize(map);
}
@@ -36,11 +37,13 @@ public abstract class TextualComponent implements Cloneable {
}
static boolean isTextKey(String key) {
- return key.equals("translate") || key.equals("text") || key.equals("score") || key.equals("selector");
+ return key.equals("translate") || key.equals("text") || key.equals("score") || key
+ .equals("selector");
}
static boolean isTranslatableText(TextualComponent component) {
- return component instanceof ComplexTextTypeComponent && component.getKey().equals("translate");
+ return component instanceof ComplexTextTypeComponent && component.getKey()
+ .equals("translate");
}
/**
@@ -73,7 +76,8 @@ public abstract class TextualComponent implements Cloneable {
}
private static void throwUnsupportedSnapshot() {
- throw new UnsupportedOperationException("This feature is only supported in snapshot releases.");
+ throw new UnsupportedOperationException(
+ "This feature is only supported in snapshot releases.");
}
/**
@@ -98,11 +102,11 @@ public abstract class TextualComponent implements Cloneable {
*
This method is currently guaranteed to throw an {@code UnsupportedOperationException}
* as it is only supported on snapshot clients.
*
- * @param playerName The name of the player whos score will be shown. If
- * this string represents the single-character sequence
- * "*", the viewing player's score will be displayed.
- * Standard minecraft selectors (@a, @p, etc)
- * are not supported.
+ * @param playerName The name of the player whos score will be shown. If
+ * this string represents the single-character sequence
+ * "*", the viewing player's score will be displayed.
+ * Standard minecraft selectors (@a, @p, etc)
+ * are not supported.
* @param scoreboardObjective The name of the objective for
* which to display the score.
* @return The text component representing the specified scoreboard score
@@ -112,10 +116,9 @@ public abstract class TextualComponent implements Cloneable {
throwUnsupportedSnapshot(); // Remove this line when the feature is released to non-snapshot versions, in addition to updating ALL THE
// OVERLOADS documentation accordingly
- return new ComplexTextTypeComponent("score", ImmutableMap.builder()
- .put("name", playerName)
- .put("objective", scoreboardObjective)
- .build());
+ return new ComplexTextTypeComponent("score",
+ ImmutableMap.builder().put("name", playerName)
+ .put("objective", scoreboardObjective).build());
}
/**
@@ -126,7 +129,7 @@ public abstract class TextualComponent implements Cloneable {
*
*
* @param selector The minecraft player or entity selector which will capture the entities whose string representations will be displayed in
- * the place of this text component.
+ * the place of this text component.
* @return The text component representing the name of the entities captured by the selector.
*/
public static TextualComponent selector(String selector) {
@@ -136,8 +139,7 @@ public abstract class TextualComponent implements Cloneable {
return new ArbitraryTextTypeComponent("selector", selector);
}
- @Override
- public String toString() {
+ @Override public String toString() {
return getReadableString();
}
@@ -155,8 +157,7 @@ public abstract class TextualComponent implements Cloneable {
* Clones a textual component instance.
* The returned object should not reference this textual component instance, but should maintain the same key and value.
*/
- @Override
- public abstract TextualComponent clone() throws CloneNotSupportedException;
+ @Override public abstract TextualComponent clone() throws CloneNotSupportedException;
/**
* Writes the text data represented by this textual component to the specified JSON writer object.
@@ -171,7 +172,8 @@ public abstract class TextualComponent implements Cloneable {
* Internal class used to represent all types of text components.
* Exception validating done is on keys and values.
*/
- private static final class ArbitraryTextTypeComponent extends TextualComponent implements ConfigurationSerializable {
+ private static final class ArbitraryTextTypeComponent extends TextualComponent
+ implements ConfigurationSerializable {
private String key;
private String value;
@@ -182,16 +184,17 @@ public abstract class TextualComponent implements Cloneable {
}
public static ArbitraryTextTypeComponent deserialize(Map map) {
- return new ArbitraryTextTypeComponent(map.get("key").toString(), map.get("value").toString());
+ return new ArbitraryTextTypeComponent(map.get("key").toString(),
+ map.get("value").toString());
}
- @Override
- public String getKey() {
+ @Override public String getKey() {
return key;
}
public void setKey(String key) {
- Preconditions.checkArgument(key != null && !key.isEmpty(), "The key must be specified.");
+ Preconditions
+ .checkArgument(key != null && !key.isEmpty(), "The key must be specified.");
this.key = key;
}
@@ -204,20 +207,16 @@ public abstract class TextualComponent implements Cloneable {
this.value = value;
}
- @Override
- public TextualComponent clone() throws CloneNotSupportedException {
+ @Override public TextualComponent clone() throws CloneNotSupportedException {
// Since this is a private and final class, we can just reinstantiate this class instead of casting super.clone
return new ArbitraryTextTypeComponent(getKey(), getValue());
}
- @Override
- public void writeJson(JsonWriter writer) throws IOException {
+ @Override public void writeJson(JsonWriter writer) throws IOException {
writer.name(getKey()).value(getValue());
}
- @Override
- @SuppressWarnings("serial")
- public Map serialize() {
+ @Override @SuppressWarnings("serial") public Map serialize() {
return new HashMap() {
{
put("key", getKey());
@@ -226,19 +225,20 @@ public abstract class TextualComponent implements Cloneable {
};
}
- @Override
- public String getReadableString() {
+ @Override public String getReadableString() {
return getValue();
}
}
+
/**
* Internal class used to represent a text component with a nested JSON
* value.
*
*
Exception validating done is on keys and values.
*/
- private static final class ComplexTextTypeComponent extends TextualComponent implements ConfigurationSerializable {
+ private static final class ComplexTextTypeComponent extends TextualComponent
+ implements ConfigurationSerializable {
private String key;
private Map value;
@@ -255,19 +255,20 @@ public abstract class TextualComponent implements Cloneable {
if (valEntry.getKey().equals("key")) {
key = (String) valEntry.getValue();
} else if (valEntry.getKey().startsWith("value.")) {
- value.put(valEntry.getKey().substring(6) /* Strips out the value prefix */, valEntry.getValue().toString());
+ value.put(valEntry.getKey().substring(6) /* Strips out the value prefix */,
+ valEntry.getValue().toString());
}
}
return new ComplexTextTypeComponent(key, value);
}
- @Override
- public String getKey() {
+ @Override public String getKey() {
return key;
}
public void setKey(String key) {
- Preconditions.checkArgument(key != null && !key.isEmpty(), "The key must be specified.");
+ Preconditions
+ .checkArgument(key != null && !key.isEmpty(), "The key must be specified.");
this.key = key;
}
@@ -280,14 +281,12 @@ public abstract class TextualComponent implements Cloneable {
this.value = value;
}
- @Override
- public TextualComponent clone() {
+ @Override public TextualComponent clone() {
// Since this is a private and final class, we can just reinstantiate this class instead of casting super.clone
return new ComplexTextTypeComponent(getKey(), getValue());
}
- @Override
- public void writeJson(JsonWriter writer) throws IOException {
+ @Override public void writeJson(JsonWriter writer) throws IOException {
writer.name(getKey());
writer.beginObject();
for (Map.Entry jsonPair : value.entrySet()) {
@@ -296,9 +295,7 @@ public abstract class TextualComponent implements Cloneable {
writer.endObject();
}
- @Override
- @SuppressWarnings("serial")
- public Map serialize() {
+ @Override @SuppressWarnings("serial") public Map serialize() {
return new java.util.HashMap() {
{
put("key", getKey());
@@ -309,8 +306,7 @@ public abstract class TextualComponent implements Cloneable {
};
}
- @Override
- public String getReadableString() {
+ @Override public String getReadableString() {
return getKey();
}
}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/commands/DebugUUID.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/commands/DebugUUID.java
similarity index 68%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/commands/DebugUUID.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/commands/DebugUUID.java
index b3934109a..e53c69b02 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/commands/DebugUUID.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/commands/DebugUUID.java
@@ -1,54 +1,40 @@
-package com.plotsquared.bukkit.commands;
+package com.github.intellectualsites.plotsquared.bukkit.commands;
+import com.github.intellectualsites.plotsquared.bukkit.uuid.DatFileFilter;
+import com.github.intellectualsites.plotsquared.bukkit.uuid.DefaultUUIDWrapper;
+import com.github.intellectualsites.plotsquared.bukkit.uuid.LowerOfflineUUIDWrapper;
+import com.github.intellectualsites.plotsquared.bukkit.uuid.OfflineUUIDWrapper;
+import com.github.intellectualsites.plotsquared.commands.Argument;
+import com.github.intellectualsites.plotsquared.commands.CommandDeclaration;
+import com.github.intellectualsites.plotsquared.plot.PlotSquared;
+import com.github.intellectualsites.plotsquared.plot.commands.CommandCategory;
+import com.github.intellectualsites.plotsquared.plot.commands.RequiredType;
+import com.github.intellectualsites.plotsquared.plot.commands.SubCommand;
+import com.github.intellectualsites.plotsquared.plot.config.C;
+import com.github.intellectualsites.plotsquared.plot.database.DBFunc;
+import com.github.intellectualsites.plotsquared.plot.object.OfflinePlotPlayer;
+import com.github.intellectualsites.plotsquared.plot.object.Plot;
+import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer;
+import com.github.intellectualsites.plotsquared.plot.object.StringWrapper;
+import com.github.intellectualsites.plotsquared.plot.util.*;
+import com.github.intellectualsites.plotsquared.plot.uuid.UUIDWrapper;
import com.google.common.collect.Sets;
-import com.intellectualcrafters.plot.PS;
-import com.intellectualcrafters.plot.commands.CommandCategory;
-import com.intellectualcrafters.plot.commands.RequiredType;
-import com.intellectualcrafters.plot.commands.SubCommand;
-import com.intellectualcrafters.plot.config.C;
-import com.intellectualcrafters.plot.database.DBFunc;
-import com.intellectualcrafters.plot.object.OfflinePlotPlayer;
-import com.intellectualcrafters.plot.object.Plot;
-import com.intellectualcrafters.plot.object.PlotPlayer;
-import com.intellectualcrafters.plot.object.StringWrapper;
-import com.intellectualcrafters.plot.util.MainUtil;
-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.uuid.UUIDWrapper;
-import com.plotsquared.bukkit.uuid.DatFileFilter;
-import com.plotsquared.bukkit.uuid.DefaultUUIDWrapper;
-import com.plotsquared.bukkit.uuid.LowerOfflineUUIDWrapper;
-import com.plotsquared.bukkit.uuid.OfflineUUIDWrapper;
-import com.plotsquared.general.commands.Argument;
-import com.plotsquared.general.commands.CommandDeclaration;
+
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
+import java.util.*;
import java.util.Map.Entry;
-import java.util.UUID;
-@CommandDeclaration(
- command = "uuidconvert",
- permission = "plots.admin",
- description = "Debug UUID conversion",
- usage = "/plot uuidconvert ",
- requiredType = RequiredType.CONSOLE,
- category = CommandCategory.DEBUG)
+@CommandDeclaration(command = "uuidconvert", permission = "plots.admin", description = "Debug UUID conversion", usage = "/plot uuidconvert ", requiredType = RequiredType.CONSOLE, category = CommandCategory.DEBUG)
public class DebugUUID extends SubCommand {
public DebugUUID() {
super(Argument.String);
}
- @Override
- public boolean onCommand(final PlotPlayer player, String[] args) {
+ @Override public boolean onCommand(final PlotPlayer player, String[] args) {
final UUIDWrapper currentUUIDWrapper = UUIDHandler.getUUIDWrapper();
final UUIDWrapper newWrapper;
@@ -67,7 +53,8 @@ public class DebugUUID extends SubCommand {
Class> clazz = Class.forName(args[0]);
newWrapper = (UUIDWrapper) clazz.newInstance();
} catch (ClassNotFoundException | IllegalAccessException | InstantiationException ignored) {
- MainUtil.sendMessage(player, C.COMMAND_SYNTAX, "/plot uuidconvert ");
+ MainUtil.sendMessage(player, C.COMMAND_SYNTAX,
+ "/plot uuidconvert ");
return false;
}
}
@@ -75,23 +62,29 @@ public class DebugUUID extends SubCommand {
if (args.length != 2 || !"-o".equals(args[1])) {
MainUtil.sendMessage(player, C.COMMAND_SYNTAX, "/plot uuidconvert " + args[0] + " - o");
MainUtil.sendMessage(player, "&cBe aware of the following!");
- MainUtil.sendMessage(player, "&8 - &cUse the database command or another method to backup your plots beforehand");
- MainUtil.sendMessage(player, "&8 - &cIf the process is interrupted, all plots could be deleted");
+ MainUtil.sendMessage(player,
+ "&8 - &cUse the database command or another method to backup your plots beforehand");
+ MainUtil.sendMessage(player,
+ "&8 - &cIf the process is interrupted, all plots could be deleted");
MainUtil.sendMessage(player, "&8 - &cIf an error occurs, all plots could be deleted");
MainUtil.sendMessage(player, "&8 - &cPlot settings WILL be lost upon conversion");
- MainUtil.sendMessage(player, "&cTO REITERATE: BACK UP YOUR DATABASE BEFORE USING THIS!!!");
- MainUtil.sendMessage(player, "&7Retype the command with the override parameter when ready :)");
+ MainUtil
+ .sendMessage(player, "&cTO REITERATE: BACK UP YOUR DATABASE BEFORE USING THIS!!!");
+ MainUtil.sendMessage(player,
+ "&7Retype the command with the override parameter when ready :)");
return false;
}
- if (currentUUIDWrapper.getClass().getCanonicalName().equals(newWrapper.getClass().getCanonicalName())) {
+ if (currentUUIDWrapper.getClass().getCanonicalName()
+ .equals(newWrapper.getClass().getCanonicalName())) {
MainUtil.sendMessage(player, "&cUUID mode already in use!");
return false;
}
MainUtil.sendMessage(player, "&6Beginning UUID mode conversion");
MainUtil.sendMessage(player, "&7 - Disconnecting players");
for (Entry entry : UUIDHandler.getPlayers().entrySet()) {
- entry.getValue().kick("UUID conversion has been initiated. You may reconnect when finished.");
+ entry.getValue()
+ .kick("UUID conversion has been initiated. You may reconnect when finished.");
}
MainUtil.sendMessage(player, "&7 - Initializing map");
@@ -135,12 +128,14 @@ public class DebugUUID extends SubCommand {
OfflinePlotPlayer op = wrapper.getOfflinePlayer(uuid);
uuid = currentUUIDWrapper.getUUID(op);
uuid2 = newWrapper.getUUID(op);
- if (!uuid.equals(uuid2) && !uCMap.containsKey(uuid) && !uCReverse.containsKey(uuid2)) {
+ if (!uuid.equals(uuid2) && !uCMap.containsKey(uuid) && !uCReverse
+ .containsKey(uuid2)) {
uCMap.put(uuid, uuid2);
uCReverse.put(uuid2, uuid);
}
} catch (Throwable ignored) {
- MainUtil.sendMessage(player, C.PREFIX + "&6Invalid playerdata: " + uuid.toString() + ".dat");
+ MainUtil.sendMessage(player,
+ C.PREFIX + "&6Invalid playerdata: " + uuid.toString() + ".dat");
}
}
for (String name : names) {
@@ -175,8 +170,7 @@ public class DebugUUID extends SubCommand {
MainUtil.sendMessage(player, "&7 - Replacing cache");
TaskManager.runTaskAsync(new Runnable() {
- @Override
- public void run() {
+ @Override public void run() {
for (Entry entry : uCMap.entrySet()) {
String name = UUIDHandler.getName(entry.getKey());
if (name != null) {
@@ -186,10 +180,11 @@ public class DebugUUID extends SubCommand {
MainUtil.sendMessage(player, "&7 - Scanning for applicable files (uuids.txt)");
- File file = new File(PS.get().IMP.getDirectory(), "uuids.txt");
+ File file = new File(PlotSquared.get().IMP.getDirectory(), "uuids.txt");
if (file.exists()) {
try {
- List lines = Files.readAllLines(file.toPath(), StandardCharsets.UTF_8);
+ List lines =
+ Files.readAllLines(file.toPath(), StandardCharsets.UTF_8);
for (String line : lines) {
try {
line = line.trim();
@@ -199,7 +194,8 @@ public class DebugUUID extends SubCommand {
line = line.replaceAll("[\\|][0-9]+[\\|][0-9]+[\\|]", "");
String[] split = line.split("\\|");
String name = split[0];
- if (name.isEmpty() || name.length() > 16 || !StringMan.isAlphanumericUnd(name)) {
+ if (name.isEmpty() || name.length() > 16 || !StringMan
+ .isAlphanumericUnd(name)) {
continue;
}
UUID old = currentUUIDWrapper.getUUID(name);
@@ -224,7 +220,7 @@ public class DebugUUID extends SubCommand {
MainUtil.sendMessage(player, "&7 - Updating plot objects");
- for (Plot plot : PS.get().getPlots()) {
+ for (Plot plot : PlotSquared.get().getPlots()) {
UUID value = uCMap.get(plot.owner);
if (value != null) {
plot.owner = value;
@@ -243,18 +239,18 @@ public class DebugUUID extends SubCommand {
DBFunc.createTables();
if (!result) {
MainUtil.sendMessage(player, "&cConversion failed! Attempting recovery");
- for (Plot plot : PS.get().getPlots()) {
+ for (Plot plot : PlotSquared.get().getPlots()) {
UUID value = uCReverse.get(plot.owner);
if (value != null) {
plot.owner = value;
}
}
- DBFunc.createPlotsAndData(new ArrayList<>(PS.get().getPlots()), new Runnable() {
- @Override
- public void run() {
- MainUtil.sendMessage(player, "&6Recovery was successful!");
- }
- });
+ DBFunc.createPlotsAndData(new ArrayList<>(PlotSquared.get().getPlots()),
+ new Runnable() {
+ @Override public void run() {
+ MainUtil.sendMessage(player, "&6Recovery was successful!");
+ }
+ });
return;
}
} catch (Exception e) {
@@ -263,27 +259,26 @@ public class DebugUUID extends SubCommand {
}
if (newWrapper instanceof OfflineUUIDWrapper) {
- PS.get().worlds.set("UUID.force-lowercase", false);
- PS.get().worlds.set("UUID.offline", true);
+ PlotSquared.get().worlds.set("UUID.force-lowercase", false);
+ PlotSquared.get().worlds.set("UUID.offline", true);
} else if (newWrapper instanceof DefaultUUIDWrapper) {
- PS.get().worlds.set("UUID.force-lowercase", false);
- PS.get().worlds.set("UUID.offline", false);
+ PlotSquared.get().worlds.set("UUID.force-lowercase", false);
+ PlotSquared.get().worlds.set("UUID.offline", false);
}
try {
- PS.get().worlds.save(PS.get().worldsFile);
+ PlotSquared.get().worlds.save(PlotSquared.get().worldsFile);
} catch (IOException ignored) {
- MainUtil.sendMessage(player, "Could not save configuration. It will need to be manual set!");
+ MainUtil.sendMessage(player,
+ "Could not save configuration. It will need to be manual set!");
}
MainUtil.sendMessage(player, "&7 - Populating tables");
TaskManager.runTaskAsync(new Runnable() {
- @Override
- public void run() {
- ArrayList plots = new ArrayList<>(PS.get().getPlots());
+ @Override public void run() {
+ ArrayList plots = new ArrayList<>(PlotSquared.get().getPlots());
DBFunc.createPlotsAndData(plots, new Runnable() {
- @Override
- public void run() {
+ @Override public void run() {
MainUtil.sendMessage(player, "&aConversion complete!");
}
});
@@ -291,7 +286,8 @@ public class DebugUUID extends SubCommand {
});
MainUtil.sendMessage(player, "&aIt is now safe for players to join");
- MainUtil.sendMessage(player, "&cConversion is still in progress, you will be notified when it is complete");
+ MainUtil.sendMessage(player,
+ "&cConversion is still in progress, you will be notified when it is complete");
}
});
return true;
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/database/plotme/APlotMeConnector.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/database/plotme/APlotMeConnector.java
similarity index 59%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/database/plotme/APlotMeConnector.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/database/plotme/APlotMeConnector.java
index 1ebae3a93..c55020080 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/database/plotme/APlotMeConnector.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/database/plotme/APlotMeConnector.java
@@ -1,10 +1,10 @@
-package com.plotsquared.bukkit.database.plotme;
+package com.github.intellectualsites.plotsquared.bukkit.database.plotme;
-import com.intellectualcrafters.configuration.file.FileConfiguration;
-import com.intellectualcrafters.plot.PS;
-import com.intellectualcrafters.plot.object.Location;
-import com.intellectualcrafters.plot.object.Plot;
-import com.intellectualcrafters.plot.object.PlotId;
+import com.github.intellectualsites.plotsquared.configuration.file.FileConfiguration;
+import com.github.intellectualsites.plotsquared.plot.PlotSquared;
+import com.github.intellectualsites.plotsquared.plot.object.Location;
+import com.github.intellectualsites.plotsquared.plot.object.Plot;
+import com.github.intellectualsites.plotsquared.plot.object.PlotId;
import java.sql.Connection;
import java.sql.SQLException;
@@ -13,9 +13,11 @@ import java.util.HashMap;
public abstract class APlotMeConnector {
- public abstract Connection getPlotMeConnection(String plugin, FileConfiguration plotConfig, String dataFolder);
+ public abstract Connection getPlotMeConnection(String plugin, FileConfiguration plotConfig,
+ String dataFolder);
- public abstract HashMap> getPlotMePlots(Connection connection) throws SQLException;
+ public abstract HashMap> getPlotMePlots(Connection connection)
+ throws SQLException;
public abstract boolean accepts(String version);
@@ -25,21 +27,23 @@ public abstract class APlotMeConnector {
public void copyConfig(FileConfiguration plotConfig, String world, String actualWorldName) {
int pathWidth = plotConfig.getInt("worlds." + world + ".PathWidth"); //
- PS.get().worlds.set("worlds." + actualWorldName + ".road.width", pathWidth);
+ PlotSquared.get().worlds.set("worlds." + actualWorldName + ".road.width", pathWidth);
int plotSize = plotConfig.getInt("worlds." + world + ".PlotSize"); //
- PS.get().worlds.set("worlds." + actualWorldName + ".plot.size", plotSize);
+ PlotSquared.get().worlds.set("worlds." + actualWorldName + ".plot.size", plotSize);
String wallBlock = plotConfig.getString("worlds." + world + ".WallBlockId"); //
- PS.get().worlds.set("worlds." + actualWorldName + ".wall.block", wallBlock);
+ PlotSquared.get().worlds.set("worlds." + actualWorldName + ".wall.block", wallBlock);
String floor = plotConfig.getString("worlds." + world + ".PlotFloorBlockId"); //
- PS.get().worlds.set("worlds." + actualWorldName + ".plot.floor", Collections.singletonList(floor));
+ PlotSquared.get().worlds
+ .set("worlds." + actualWorldName + ".plot.floor", Collections.singletonList(floor));
String filling = plotConfig.getString("worlds." + world + ".PlotFillingBlockId"); //
- PS.get().worlds.set("worlds." + actualWorldName + ".plot.filling", Collections.singletonList(filling));
+ PlotSquared.get().worlds
+ .set("worlds." + actualWorldName + ".plot.filling", Collections.singletonList(filling));
String road = plotConfig.getString("worlds." + world + ".RoadMainBlockId");
- PS.get().worlds.set("worlds." + actualWorldName + ".road.block", road);
+ PlotSquared.get().worlds.set("worlds." + actualWorldName + ".road.block", road);
int height = plotConfig.getInt("worlds." + world + ".RoadHeight"); //
- PS.get().worlds.set("worlds." + actualWorldName + ".road.height", height);
- PS.get().worlds.set("worlds." + actualWorldName + ".plot.height", height);
- PS.get().worlds.set("worlds." + actualWorldName + ".wall.height", height);
+ PlotSquared.get().worlds.set("worlds." + actualWorldName + ".road.height", height);
+ PlotSquared.get().worlds.set("worlds." + actualWorldName + ".plot.height", height);
+ PlotSquared.get().worlds.set("worlds." + actualWorldName + ".wall.height", height);
}
public Location getPlotTopLocAbs(int path, int plot, PlotId plotId) {
@@ -58,25 +62,26 @@ public abstract class APlotMeConnector {
return new Location(null, x, 1, z);
}
- public void setMerged(HashMap> merges, String world, PlotId id, int direction) {
+ public void setMerged(HashMap> merges, String world,
+ PlotId id, int direction) {
HashMap plots = merges.get(world);
PlotId id2 = new PlotId(id.x, id.y);
boolean[] merge1;
if (plots.containsKey(id)) {
merge1 = plots.get(id);
} else {
- merge1 = new boolean[] { false, false, false, false };
+ merge1 = new boolean[] {false, false, false, false};
}
boolean[] merge2;
if (plots.containsKey(id2)) {
merge2 = plots.get(id2);
} else {
- merge2 = new boolean[] { false, false, false, false };
+ merge2 = new boolean[] {false, false, false, false};
}
merge1[direction] = true;
merge2[(direction + 2) % 4] = true;
plots.put(id, merge1);
plots.put(id2, merge1);
}
-
+
}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/database/plotme/ClassicPlotMeConnector.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/database/plotme/ClassicPlotMeConnector.java
similarity index 74%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/database/plotme/ClassicPlotMeConnector.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/database/plotme/ClassicPlotMeConnector.java
index 11cea6ddb..929360555 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/database/plotme/ClassicPlotMeConnector.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/database/plotme/ClassicPlotMeConnector.java
@@ -1,25 +1,17 @@
-package com.plotsquared.bukkit.database.plotme;
+package com.github.intellectualsites.plotsquared.bukkit.database.plotme;
+import com.github.intellectualsites.plotsquared.configuration.file.FileConfiguration;
+import com.github.intellectualsites.plotsquared.plot.PlotSquared;
+import com.github.intellectualsites.plotsquared.plot.config.Settings;
+import com.github.intellectualsites.plotsquared.plot.database.DBFunc;
+import com.github.intellectualsites.plotsquared.plot.database.SQLite;
+import com.github.intellectualsites.plotsquared.plot.object.*;
+import com.github.intellectualsites.plotsquared.plot.util.UUIDHandler;
import com.google.common.base.Charsets;
-import com.intellectualcrafters.configuration.file.FileConfiguration;
-import com.intellectualcrafters.plot.PS;
-import com.intellectualcrafters.plot.config.Settings;
-import com.intellectualcrafters.plot.database.DBFunc;
-import com.intellectualcrafters.plot.database.SQLite;
-import com.intellectualcrafters.plot.object.Location;
-import com.intellectualcrafters.plot.object.Plot;
-import com.intellectualcrafters.plot.object.PlotArea;
-import com.intellectualcrafters.plot.object.PlotId;
-import com.intellectualcrafters.plot.object.StringWrapper;
-import com.intellectualcrafters.plot.util.UUIDHandler;
import java.io.File;
import java.nio.ByteBuffer;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
+import java.sql.*;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.UUID;
@@ -29,8 +21,8 @@ public class ClassicPlotMeConnector extends APlotMeConnector {
private String plugin = "PlotMe";
private String prefix;
- @Override
- public Connection getPlotMeConnection(String plugin, FileConfiguration plotConfig, String dataFolder) {
+ @Override public Connection getPlotMeConnection(String plugin, FileConfiguration plotConfig,
+ String dataFolder) {
this.plugin = plugin.toLowerCase();
this.prefix = plotConfig.getString("mySQLprefix", this.plugin.toLowerCase());
try {
@@ -40,7 +32,8 @@ public class ClassicPlotMeConnector extends APlotMeConnector {
String con = plotConfig.getString("mySQLconn");
return DriverManager.getConnection(con, user, password);
} else {
- return new SQLite(new File(dataFolder + File.separator + "plots.db")).openConnection();
+ return new SQLite(new File(dataFolder + File.separator + "plots.db"))
+ .openConnection();
}
} catch (SQLException | ClassNotFoundException e) {
e.printStackTrace();
@@ -48,13 +41,14 @@ public class ClassicPlotMeConnector extends APlotMeConnector {
return null;
}
- @Override
- public HashMap> getPlotMePlots(Connection connection) throws SQLException {
+ @Override public HashMap> getPlotMePlots(Connection connection)
+ throws SQLException {
HashMap plotWidth = new HashMap<>();
HashMap roadWidth = new HashMap<>();
HashMap> plots = new HashMap<>();
HashMap> merges = new HashMap<>();
- PreparedStatement statement = connection.prepareStatement("SELECT * FROM `" + this.prefix + "Plots`");
+ PreparedStatement statement =
+ connection.prepareStatement("SELECT * FROM `" + this.prefix + "Plots`");
ResultSet resultSet = statement.executeQuery();
String column = null;
boolean checkUUID = DBFunc.hasColumn(resultSet, "ownerid");
@@ -64,7 +58,8 @@ public class ClassicPlotMeConnector extends APlotMeConnector {
} else if (checkUUID2) {
column = "ownerId";
}
- boolean merge = !"plotme".equalsIgnoreCase(this.plugin) && Settings.Enabled_Components.PLOTME_CONVERTER;
+ boolean merge =
+ !"plotme".equalsIgnoreCase(this.plugin) && Settings.Enabled_Components.PLOTME_CONVERTER;
int missing = 0;
while (resultSet.next()) {
PlotId id = new PlotId(resultSet.getInt("idX"), resultSet.getInt("idZ"));
@@ -73,8 +68,8 @@ public class ClassicPlotMeConnector extends APlotMeConnector {
if (!plots.containsKey(world)) {
plots.put(world, new HashMap());
if (merge) {
- int plot = PS.get().worlds.getInt("worlds." + world + ".plot.size");
- int path = PS.get().worlds.getInt("worlds." + world + ".road.width");
+ int plot = PlotSquared.get().worlds.getInt("worlds." + world + ".plot.size");
+ int path = PlotSquared.get().worlds.getInt("worlds." + world + ".road.width");
plotWidth.put(world, plot);
roadWidth.put(world, path);
merges.put(world, new HashMap());
@@ -105,7 +100,7 @@ public class ClassicPlotMeConnector extends APlotMeConnector {
UUID owner = UUIDHandler.getUUID(name, null);
if (owner == null) {
if ("*".equals(name)) {
- owner = DBFunc.everyone;
+ owner = DBFunc.EVERYONE;
} else {
if (checkUUID || checkUUID2) {
byte[] bytes = resultSet.getBytes(column);
@@ -118,11 +113,13 @@ public class ClassicPlotMeConnector extends APlotMeConnector {
}
}
if (name.isEmpty()) {
- PS.log("&cCould not identify owner for plot: " + id + " -> '" + name + "'");
+ PlotSquared.log(
+ "&cCould not identify owner for plot: " + id + " -> '" + name + "'");
missing++;
continue;
}
- owner = UUID.nameUUIDFromBytes(("OfflinePlayer:" + name.toLowerCase()).getBytes(Charsets.UTF_8));
+ owner = UUID.nameUUIDFromBytes(
+ ("OfflinePlayer:" + name.toLowerCase()).getBytes(Charsets.UTF_8));
}
} else {
UUIDHandler.add(new StringWrapper(name), owner);
@@ -131,10 +128,13 @@ public class ClassicPlotMeConnector extends APlotMeConnector {
plots.get(world).put(id, plot);
}
if (missing > 0) {
- PS.log("&cSome names could not be identified:");
- PS.log("&7 - Empty quotes mean PlotMe just stored an unowned plot in the database");
- PS.log("&7 - Names you have never seen before could be from people mistyping commands");
- PS.log("&7 - Converting from a non-uuid version of PlotMe can't identify owners if the playerdata files are deleted (these plots will "
+ PlotSquared.log("&cSome names could not be identified:");
+ PlotSquared
+ .log("&7 - Empty quotes mean PlotMe just stored an unowned plot in the database");
+ PlotSquared.log(
+ "&7 - Names you have never seen before could be from people mistyping commands");
+ PlotSquared.log(
+ "&7 - Converting from a non-uuid version of PlotMe can't identify owners if the playerdata files are deleted (these plots will "
+ "remain unknown until the player connects)");
}
@@ -154,7 +154,7 @@ public class ClassicPlotMeConnector extends APlotMeConnector {
try {
- PS.log(" - " + this.prefix + "Denied");
+ PlotSquared.log(" - " + this.prefix + "Denied");
statement = connection.prepareStatement("SELECT * FROM `" + this.prefix + "Denied`");
resultSet = statement.executeQuery();
@@ -165,7 +165,7 @@ public class ClassicPlotMeConnector extends APlotMeConnector {
UUID denied = UUIDHandler.getUUID(name, null);
if (denied == null) {
if ("*".equals(name)) {
- denied = DBFunc.everyone;
+ denied = DBFunc.EVERYONE;
} else if (DBFunc.hasColumn(resultSet, "playerid")) {
byte[] bytes = resultSet.getBytes("playerid");
if (bytes != null) {
@@ -177,7 +177,7 @@ public class ClassicPlotMeConnector extends APlotMeConnector {
}
}
if (denied == null) {
- PS.log("&6Could not identify denied for plot: " + id);
+ PlotSquared.log("&6Could not identify denied for plot: " + id);
continue;
}
}
@@ -200,7 +200,7 @@ public class ClassicPlotMeConnector extends APlotMeConnector {
UUID helper = UUIDHandler.getUUID(name, null);
if (helper == null) {
if ("*".equals(name)) {
- helper = DBFunc.everyone;
+ helper = DBFunc.EVERYONE;
} else if (DBFunc.hasColumn(resultSet, "playerid")) {
byte[] bytes = resultSet.getBytes("playerid");
if (bytes != null) {
@@ -212,7 +212,7 @@ public class ClassicPlotMeConnector extends APlotMeConnector {
}
}
if (helper == null) {
- PS.log("&6Could not identify helper for plot: " + id);
+ PlotSquared.log("&6Could not identify helper for plot: " + id);
continue;
}
}
@@ -228,12 +228,13 @@ public class ClassicPlotMeConnector extends APlotMeConnector {
resultSet.close();
statement.close();
- } catch (SQLException ignored) {}
+ } catch (SQLException ignored) {
+ }
return plots;
}
- @Override
- public boolean accepts(String version) {
- return version == null || PS.get().canUpdate(version, "0.17.0") || PS.get().canUpdate("0.999.999", version);
+ @Override public boolean accepts(String version) {
+ return version == null || PlotSquared.get().canUpdate(version, "0.17.0") || PlotSquared
+ .get().canUpdate("0.999.999", version);
}
}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/database/plotme/LikePlotMeConverter.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/database/plotme/LikePlotMeConverter.java
similarity index 58%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/database/plotme/LikePlotMeConverter.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/database/plotme/LikePlotMeConverter.java
index 05d8f4a20..b17583107 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/database/plotme/LikePlotMeConverter.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/database/plotme/LikePlotMeConverter.java
@@ -1,17 +1,22 @@
-package com.plotsquared.bukkit.database.plotme;
+package com.github.intellectualsites.plotsquared.bukkit.database.plotme;
+
+import com.github.intellectualsites.plotsquared.bukkit.generator.BukkitPlotGenerator;
+import com.github.intellectualsites.plotsquared.configuration.ConfigurationSection;
+import com.github.intellectualsites.plotsquared.configuration.MemorySection;
+import com.github.intellectualsites.plotsquared.configuration.file.FileConfiguration;
+import com.github.intellectualsites.plotsquared.configuration.file.YamlConfiguration;
+import com.github.intellectualsites.plotsquared.plot.PlotSquared;
+import com.github.intellectualsites.plotsquared.plot.config.Settings;
+import com.github.intellectualsites.plotsquared.plot.database.DBFunc;
+import com.github.intellectualsites.plotsquared.plot.object.Plot;
+import com.github.intellectualsites.plotsquared.plot.object.PlotArea;
+import com.github.intellectualsites.plotsquared.plot.object.PlotId;
+import com.github.intellectualsites.plotsquared.plot.util.TaskManager;
+import org.bukkit.Bukkit;
+import org.bukkit.World;
+import org.bukkit.WorldCreator;
+import org.bukkit.command.CommandException;
-import com.intellectualcrafters.configuration.ConfigurationSection;
-import com.intellectualcrafters.configuration.MemorySection;
-import com.intellectualcrafters.configuration.file.FileConfiguration;
-import com.intellectualcrafters.configuration.file.YamlConfiguration;
-import com.intellectualcrafters.plot.PS;
-import com.intellectualcrafters.plot.config.Settings;
-import com.intellectualcrafters.plot.database.DBFunc;
-import com.intellectualcrafters.plot.object.Plot;
-import com.intellectualcrafters.plot.object.PlotArea;
-import com.intellectualcrafters.plot.object.PlotId;
-import com.intellectualcrafters.plot.util.TaskManager;
-import com.plotsquared.bukkit.generator.BukkitPlotGenerator;
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
@@ -20,17 +25,9 @@ import java.nio.file.Path;
import java.nio.file.Paths;
import java.sql.Connection;
import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
+import java.util.*;
import java.util.Map.Entry;
-import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
-import org.bukkit.Bukkit;
-import org.bukkit.World;
-import org.bukkit.WorldCreator;
-import org.bukkit.command.CommandException;
public class LikePlotMeConverter {
@@ -50,11 +47,13 @@ public class LikePlotMeConverter {
}
private void sendMessage(String message) {
- PS.debug("&3PlotMe&8->&3" + PS.imp().getPluginName() + "&8: &7" + message);
+ PlotSquared
+ .debug("&3PlotMe&8->&3" + PlotSquared.imp().getPluginName() + "&8: &7" + message);
}
public String getPlotMePath() {
- return new File(".").getAbsolutePath() + File.separator + "plugins" + File.separator + plugin + File.separator;
+ return new File(".").getAbsolutePath() + File.separator + "plugins" + File.separator
+ + plugin + File.separator;
}
public FileConfiguration getPlotMeConfig(String dataFolder) {
@@ -71,8 +70,9 @@ public class LikePlotMeConverter {
public void mergeWorldYml(FileConfiguration plotConfig) {
try {
- File genConfig =
- new File("plugins" + File.separator + plugin + File.separator + "PlotMe-DefaultGenerator" + File.separator + "config.yml");
+ File genConfig = new File(
+ "plugins" + File.separator + plugin + File.separator + "PlotMe-DefaultGenerator"
+ + File.separator + "config.yml");
if (genConfig.exists()) {
YamlConfiguration yml = YamlConfiguration.loadConfiguration(genConfig);
for (String key : yml.getKeys(true)) {
@@ -97,40 +97,47 @@ public class LikePlotMeConverter {
return;
}
String content = new String(Files.readAllBytes(path), StandardCharsets.UTF_8);
- String pluginName = PS.imp().getPluginName();
+ String pluginName = PlotSquared.imp().getPluginName();
content = content.replace("PlotMe-DefaultGenerator", pluginName);
content = content.replace("PlotMe", pluginName);
content = content.replace("AthionPlots", pluginName);
content = content.replace("PlotZWorld", pluginName);
Files.write(path, content.getBytes(StandardCharsets.UTF_8));
- } catch (IOException ignored) {}
+ } catch (IOException ignored) {
+ }
}
private void copyConfig(ConfigurationSection plotmeDgYml, String world) throws IOException {
String actualWorldName = getWorld(world);
String plotMeWorldName = world.toLowerCase();
Integer pathWidth = plotmeDgYml.getInt("worlds." + plotMeWorldName + ".PathWidth"); //
- PS.get().worlds.set("worlds." + world + ".road.width", pathWidth);
- int height = plotmeDgYml.getInt("worlds." + plotMeWorldName + ".RoadHeight", plotmeDgYml.getInt("worlds." + plotMeWorldName + ".GroundHeight", 64)); //
- PS.get().worlds.set("worlds." + world + ".road.height", height);
- PS.get().worlds.set("worlds." + world + ".wall.height", height);
- PS.get().worlds.set("worlds." + world + ".plot.height", height);
+ PlotSquared.get().worlds.set("worlds." + world + ".road.width", pathWidth);
+ int height = plotmeDgYml.getInt("worlds." + plotMeWorldName + ".RoadHeight",
+ plotmeDgYml.getInt("worlds." + plotMeWorldName + ".GroundHeight", 64)); //
+ PlotSquared.get().worlds.set("worlds." + world + ".road.height", height);
+ PlotSquared.get().worlds.set("worlds." + world + ".wall.height", height);
+ PlotSquared.get().worlds.set("worlds." + world + ".plot.height", height);
int plotSize = plotmeDgYml.getInt("worlds." + plotMeWorldName + ".PlotSize", 32); //
- PS.get().worlds.set("worlds." + world + ".plot.size", plotSize);
- String wallblock = plotmeDgYml.getString("worlds." + plotMeWorldName + ".UnclaimedBorder", plotmeDgYml.getString("worlds." + plotMeWorldName + ".WallBlock", "44")); //
- PS.get().worlds.set("worlds." + world + ".wall.block", wallblock);
- String claimed = plotmeDgYml.getString("worlds." + plotMeWorldName + ".ProtectedWallBlock", "44:1"); //
- PS.get().worlds.set("worlds." + world + ".wall.block_claimed", claimed);
- String floor = plotmeDgYml.getString("worlds." + plotMeWorldName + ".PlotFloorBlock", "2"); //
- PS.get().worlds.set("worlds." + world + ".plot.floor", Collections.singletonList(floor));
+ PlotSquared.get().worlds.set("worlds." + world + ".plot.size", plotSize);
+ String wallblock = plotmeDgYml.getString("worlds." + plotMeWorldName + ".UnclaimedBorder",
+ plotmeDgYml.getString("worlds." + plotMeWorldName + ".WallBlock", "44")); //
+ PlotSquared.get().worlds.set("worlds." + world + ".wall.block", wallblock);
+ String claimed =
+ plotmeDgYml.getString("worlds." + plotMeWorldName + ".ProtectedWallBlock", "44:1"); //
+ PlotSquared.get().worlds.set("worlds." + world + ".wall.block_claimed", claimed);
+ String floor =
+ plotmeDgYml.getString("worlds." + plotMeWorldName + ".PlotFloorBlock", "2"); //
+ PlotSquared.get().worlds
+ .set("worlds." + world + ".plot.floor", Collections.singletonList(floor));
String filling = plotmeDgYml.getString("worlds." + plotMeWorldName + ".FillBlock", "3"); //
- PS.get().worlds.set("worlds." + world + ".plot.filling", Collections.singletonList(filling));
+ PlotSquared.get().worlds
+ .set("worlds." + world + ".plot.filling", Collections.singletonList(filling));
String road = plotmeDgYml.getString("worlds." + plotMeWorldName + ".RoadMainBlock", "5");
- PS.get().worlds.set("worlds." + world + ".road.block", road);
- PS.get().worlds.set("worlds." + actualWorldName + ".road.height", height);
- PS.get().worlds.set("worlds." + actualWorldName + ".plot.height", height);
- PS.get().worlds.set("worlds." + actualWorldName + ".wall.height", height);
- PS.get().worlds.save(PS.get().worldsFile);
+ PlotSquared.get().worlds.set("worlds." + world + ".road.block", road);
+ PlotSquared.get().worlds.set("worlds." + actualWorldName + ".road.height", height);
+ PlotSquared.get().worlds.set("worlds." + actualWorldName + ".plot.height", height);
+ PlotSquared.get().worlds.set("worlds." + actualWorldName + ".wall.height", height);
+ PlotSquared.get().worlds.save(PlotSquared.get().worldsFile);
}
public boolean run(APlotMeConnector connector) {
@@ -149,16 +156,17 @@ public class LikePlotMeConverter {
return false;
}
- PS.debug("&3Using connector: " + connector.getClass().getCanonicalName());
+ PlotSquared.debug("&3Using connector: " + connector.getClass().getCanonicalName());
- Connection connection = connector.getPlotMeConnection(plugin,plotConfig, dataFolder);
+ Connection connection = connector.getPlotMeConnection(plugin, plotConfig, dataFolder);
if (!connector.isValidConnection(connection)) {
sendMessage("Cannot connect to PlotMe DB. Conversion process will not continue");
return false;
}
- sendMessage("PlotMe conversion has started. To disable this, please set 'enabled-components -> plotme-converter' to false in the 'settings.yml'");
+ sendMessage(
+ "PlotMe conversion has started. To disable this, please set 'enabled-components -> plotme-converter' to false in the 'settings.yml'");
mergeWorldYml(plotConfig);
@@ -181,11 +189,11 @@ public class LikePlotMeConverter {
try {
String actualWorldName = getWorld(world);
connector.copyConfig(plotConfig, world, actualWorldName);
- PS.get().worlds.save(PS.get().worldsFile);
+ PlotSquared.get().worlds.save(PlotSquared.get().worldsFile);
} catch (IOException e) {
e.printStackTrace();
sendMessage("&c-- &lFailed to save configuration for world '" + world
- + "'\nThis will need to be done using the setup command, or manually");
+ + "'\nThis will need to be done using the setup command, or manually");
}
}
}
@@ -201,7 +209,9 @@ public class LikePlotMeConverter {
sendMessage(" - " + dbPrefix + "Allowed");
sendMessage("Collected " + plotCount + " plots from PlotMe");
- File plotmeDgFile = new File(dataFolder + File.separator + "PlotMe-DefaultGenerator" + File.separator + "config.yml");
+ File plotmeDgFile = new File(
+ dataFolder + File.separator + "PlotMe-DefaultGenerator" + File.separator
+ + "config.yml");
if (plotmeDgFile.exists()) {
YamlConfiguration plotmeDgYml = YamlConfiguration.loadConfiguration(plotmeDgFile);
try {
@@ -216,7 +226,7 @@ public class LikePlotMeConverter {
}
for (Entry> entry : plots.entrySet()) {
String world = entry.getKey();
- PlotArea area = PS.get().getPlotArea(world, null);
+ PlotArea area = PlotSquared.get().getPlotArea(world, null);
int duplicate = 0;
if (area != null) {
for (Entry entry2 : entry.getValue().entrySet()) {
@@ -227,12 +237,13 @@ public class LikePlotMeConverter {
}
}
if (duplicate > 0) {
- PS.debug("&c[WARNING] Found " + duplicate + " duplicate plots already in DB for world: '" + world
- + "'. Have you run the converter already?");
+ PlotSquared.debug("&c[WARNING] Found " + duplicate
+ + " duplicate plots already in DB for world: '" + world
+ + "'. Have you run the converter already?");
}
} else {
- if (PS.get().plots_tmp != null) {
- HashMap map = PS.get().plots_tmp.get(world);
+ if (PlotSquared.get().plots_tmp != null) {
+ HashMap map = PlotSquared.get().plots_tmp.get(world);
if (map != null) {
for (Entry entry2 : entry.getValue().entrySet()) {
if (map.containsKey(entry2.getKey())) {
@@ -242,8 +253,9 @@ public class LikePlotMeConverter {
}
}
if (duplicate > 0) {
- PS.debug("&c[WARNING] Found " + duplicate + " duplicate plots already in DB for world: '" + world
- + "'. Have you run the converter already?");
+ PlotSquared.debug("&c[WARNING] Found " + duplicate
+ + " duplicate plots already in DB for world: '" + world
+ + "'. Have you run the converter already?");
}
continue;
}
@@ -255,80 +267,96 @@ public class LikePlotMeConverter {
Thread.sleep(1000);
final AtomicBoolean done = new AtomicBoolean(false);
DBFunc.createPlotsAndData(createdPlots, new Runnable() {
- @Override
- public void run() {
+ @Override public void run() {
if (done.get()) {
done();
sendMessage("&aDatabase conversion is now complete!");
- PS.debug("&c - Stop the server");
- PS.debug("&c - Disable 'plotme-converter' and 'plotme-convert.cache-uuids' in the settings.yml");
- PS.debug("&c - Correct any generator settings that haven't copied to 'settings.yml' properly");
- PS.debug("&c - Start the server");
- PS.get().setPlots(DBFunc.getPlots());
+ PlotSquared.debug("&c - Stop the server");
+ PlotSquared.debug(
+ "&c - Disable 'plotme-converter' and 'plotme-convert.cache-uuids' in the settings.yml");
+ PlotSquared.debug(
+ "&c - Correct any generator settings that haven't copied to 'settings.yml' properly");
+ PlotSquared.debug("&c - Start the server");
+ PlotSquared.get().setPlots(DBFunc.getPlots());
} else {
- sendMessage("&cPlease wait until database conversion is complete. You will be notified with instructions when this happens!");
+ sendMessage(
+ "&cPlease wait until database conversion is complete. You will be notified with instructions when this happens!");
done.set(true);
}
}
});
sendMessage("Saving configuration...");
try {
- PS.get().worlds.save(PS.get().worldsFile);
+ PlotSquared.get().worlds.save(PlotSquared.get().worldsFile);
} catch (IOException ignored) {
sendMessage(" - &cFailed to save configuration.");
}
TaskManager.runTask(new Runnable() {
- @Override
- public void run() {
+ @Override public void run() {
try {
boolean mv = false;
boolean mw = false;
- if ((Bukkit.getPluginManager().getPlugin("Multiverse-Core") != null) && Bukkit.getPluginManager().getPlugin("Multiverse-Core")
- .isEnabled()) {
+ if ((Bukkit.getPluginManager().getPlugin("Multiverse-Core") != null)
+ && Bukkit.getPluginManager().getPlugin("Multiverse-Core").isEnabled()) {
mv = true;
- } else if ((Bukkit.getPluginManager().getPlugin("MultiWorld") != null) && Bukkit.getPluginManager().getPlugin("MultiWorld")
- .isEnabled()) {
+ } else if ((Bukkit.getPluginManager().getPlugin("MultiWorld") != null)
+ && Bukkit.getPluginManager().getPlugin("MultiWorld").isEnabled()) {
mw = true;
}
for (String worldName : worlds) {
World world = Bukkit.getWorld(getWorld(worldName));
if (world == null) {
- sendMessage("&cInvalid world in PlotMe configuration: " + worldName);
+ sendMessage(
+ "&cInvalid world in PlotMe configuration: " + worldName);
continue;
}
String actualWorldName = world.getName();
- sendMessage("Reloading generator for world: '" + actualWorldName + "'...");
- if (!Bukkit.getWorlds().isEmpty() && Bukkit.getWorlds().get(0).getName().equals(worldName)) {
- sendMessage("&cYou need to stop the server to reload this world properly");
+ sendMessage(
+ "Reloading generator for world: '" + actualWorldName + "'...");
+ if (!Bukkit.getWorlds().isEmpty() && Bukkit.getWorlds().get(0).getName()
+ .equals(worldName)) {
+ sendMessage(
+ "&cYou need to stop the server to reload this world properly");
} else {
- PS.get().removePlotAreas(actualWorldName);
+ PlotSquared.get().removePlotAreas(actualWorldName);
if (mv) {
// unload world with MV
- Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mv unload " + actualWorldName);
+ Bukkit.getServer()
+ .dispatchCommand(Bukkit.getServer().getConsoleSender(),
+ "mv unload " + actualWorldName);
try {
Thread.sleep(1000);
} catch (InterruptedException ignored) {
Thread.currentThread().interrupt();
}
// load world with MV
- Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(),
- "mv import " + actualWorldName + " normal -g " + PS.imp().getPluginName());
+ Bukkit.getServer()
+ .dispatchCommand(Bukkit.getServer().getConsoleSender(),
+ "mv import " + actualWorldName + " normal -g "
+ + PlotSquared.imp().getPluginName());
} else if (mw) {
// unload world with MW
- Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mw unload " + actualWorldName);
+ Bukkit.getServer()
+ .dispatchCommand(Bukkit.getServer().getConsoleSender(),
+ "mw unload " + actualWorldName);
try {
Thread.sleep(1000);
} catch (InterruptedException ignored) {
Thread.currentThread().interrupt();
}
// load world with MW
- Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(),
- "mw create " + actualWorldName + " plugin:" + PS.imp().getPluginName());
+ Bukkit.getServer()
+ .dispatchCommand(Bukkit.getServer().getConsoleSender(),
+ "mw create " + actualWorldName + " plugin:"
+ + PlotSquared.imp().getPluginName());
} else {
// Load using Bukkit API
// - User must set generator manually
Bukkit.getServer().unloadWorld(world, true);
- World myWorld = WorldCreator.name(actualWorldName).generator(new BukkitPlotGenerator(PS.get().IMP.getDefaultGenerator())).createWorld();
+ World myWorld = WorldCreator.name(actualWorldName).generator(
+ new BukkitPlotGenerator(
+ PlotSquared.get().IMP.getDefaultGenerator()))
+ .createWorld();
myWorld.save();
}
}
@@ -339,24 +367,27 @@ public class LikePlotMeConverter {
if (done.get()) {
done();
sendMessage("&aDatabase conversion is now complete!");
- PS.debug("&c - Stop the server");
- PS.debug("&c - Disable 'plotme-converter' and 'plotme-convert.cache-uuids' in the settings.yml");
- PS.debug("&c - Correct any generator settings that haven't copied to 'settings.yml' properly");
- PS.debug("&c - Start the server");
+ PlotSquared.debug("&c - Stop the server");
+ PlotSquared.debug(
+ "&c - Disable 'plotme-converter' and 'plotme-convert.cache-uuids' in the settings.yml");
+ PlotSquared.debug(
+ "&c - Correct any generator settings that haven't copied to 'settings.yml' properly");
+ PlotSquared.debug("&c - Start the server");
} else {
- sendMessage("&cPlease wait until database conversion is complete. You will be notified with instructions when this happens!");
+ sendMessage(
+ "&cPlease wait until database conversion is complete. You will be notified with instructions when this happens!");
done.set(true);
}
}
});
} catch (InterruptedException | SQLException e) {
e.printStackTrace();
- PS.debug("&/end/");
+ PlotSquared.debug("&/end/");
}
return true;
}
public void done() {
- PS.get().setPlots(DBFunc.getPlots());
+ PlotSquared.get().setPlots(DBFunc.getPlots());
}
}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/database/plotme/PlotMeConnector_017.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/database/plotme/PlotMeConnector_017.java
similarity index 66%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/database/plotme/PlotMeConnector_017.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/database/plotme/PlotMeConnector_017.java
index 9567ebb8f..0aa5afcd5 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/database/plotme/PlotMeConnector_017.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/database/plotme/PlotMeConnector_017.java
@@ -1,23 +1,15 @@
-package com.plotsquared.bukkit.database.plotme;
+package com.github.intellectualsites.plotsquared.bukkit.database.plotme;
-import com.intellectualcrafters.configuration.file.FileConfiguration;
-import com.intellectualcrafters.plot.PS;
-import com.intellectualcrafters.plot.config.Settings;
-import com.intellectualcrafters.plot.database.DBFunc;
-import com.intellectualcrafters.plot.database.SQLite;
-import com.intellectualcrafters.plot.object.Location;
-import com.intellectualcrafters.plot.object.Plot;
-import com.intellectualcrafters.plot.object.PlotArea;
-import com.intellectualcrafters.plot.object.PlotId;
-import com.intellectualcrafters.plot.object.StringWrapper;
-import com.intellectualcrafters.plot.util.UUIDHandler;
+import com.github.intellectualsites.plotsquared.configuration.file.FileConfiguration;
+import com.github.intellectualsites.plotsquared.plot.PlotSquared;
+import com.github.intellectualsites.plotsquared.plot.config.Settings;
+import com.github.intellectualsites.plotsquared.plot.database.DBFunc;
+import com.github.intellectualsites.plotsquared.plot.database.SQLite;
+import com.github.intellectualsites.plotsquared.plot.object.*;
+import com.github.intellectualsites.plotsquared.plot.util.UUIDHandler;
import java.io.File;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
+import java.sql.*;
import java.util.HashMap;
import java.util.UUID;
@@ -25,8 +17,8 @@ public class PlotMeConnector_017 extends APlotMeConnector {
private String plugin;
- @Override
- public Connection getPlotMeConnection(String plugin, FileConfiguration plotConfig, String dataFolder) {
+ @Override public Connection getPlotMeConnection(String plugin, FileConfiguration plotConfig,
+ String dataFolder) {
this.plugin = plugin.toLowerCase();
try {
if (plotConfig.getBoolean("usemySQL")) {
@@ -39,7 +31,8 @@ public class PlotMeConnector_017 extends APlotMeConnector {
if (file.exists()) {
return new SQLite(file).openConnection();
}
- return new SQLite(new File(dataFolder + File.separator + "plots.db")).openConnection();
+ return new SQLite(new File(dataFolder + File.separator + "plots.db"))
+ .openConnection();
}
} catch (SQLException | ClassNotFoundException e) {
e.printStackTrace();
@@ -47,8 +40,8 @@ public class PlotMeConnector_017 extends APlotMeConnector {
return null;
}
- @Override
- public HashMap> getPlotMePlots(Connection connection) throws SQLException {
+ @Override public HashMap> getPlotMePlots(Connection connection)
+ throws SQLException {
ResultSet resultSet;
PreparedStatement statement;
HashMap plotWidth = new HashMap<>();
@@ -56,26 +49,30 @@ public class PlotMeConnector_017 extends APlotMeConnector {
HashMap plots = new HashMap<>();
HashMap> merges = new HashMap<>();
try {
- statement = connection.prepareStatement("SELECT * FROM `" + this.plugin + "core_plots`");
+ statement =
+ connection.prepareStatement("SELECT * FROM `" + this.plugin + "core_plots`");
resultSet = statement.executeQuery();
} catch (SQLException e) {
- PS.debug("========= Table does not exist =========");
+ PlotSquared.debug("========= Table does not exist =========");
e.printStackTrace();
- PS.debug("=======================================");
- PS.debug("&8 - &7The database does not match the version specified in the PlotMe config");
- PS.debug("&8 - &7Please correct this, or if you are unsure, the most common is 0.16.3");
+ PlotSquared.debug("=======================================");
+ PlotSquared.debug(
+ "&8 - &7The database does not match the version specified in the PlotMe config");
+ PlotSquared.debug(
+ "&8 - &7Please correct this, or if you are unsure, the most common is 0.16.3");
return null;
}
boolean checkUUID = DBFunc.hasColumn(resultSet, "ownerID");
- boolean merge = !"plotme".equals(this.plugin) && Settings.Enabled_Components.PLOTME_CONVERTER;
+ boolean merge =
+ !"plotme".equals(this.plugin) && Settings.Enabled_Components.PLOTME_CONVERTER;
while (resultSet.next()) {
int key = resultSet.getInt("plot_id");
PlotId id = new PlotId(resultSet.getInt("plotX"), resultSet.getInt("plotZ"));
String name = resultSet.getString("owner");
String world = LikePlotMeConverter.getWorld(resultSet.getString("world"));
if (!plots.containsKey(world) && merge) {
- int plot = PS.get().worlds.getInt("worlds." + world + ".plot.size");
- int path = PS.get().worlds.getInt("worlds." + world + ".road.width");
+ int plot = PlotSquared.get().worlds.getInt("worlds." + world + ".plot.size");
+ int path = PlotSquared.get().worlds.getInt("worlds." + world + ".road.width");
plotWidth.put(world, plot);
roadWidth.put(world, path);
merges.put(world, new HashMap());
@@ -105,7 +102,7 @@ public class PlotMeConnector_017 extends APlotMeConnector {
UUID owner = UUIDHandler.getUUID(name, null);
if (owner == null) {
if (name.equals("*")) {
- owner = DBFunc.everyone;
+ owner = DBFunc.EVERYONE;
} else {
if (checkUUID) {
byte[] bytes = resultSet.getBytes("ownerid");
@@ -115,7 +112,8 @@ public class PlotMeConnector_017 extends APlotMeConnector {
}
}
if (owner == null) {
- PS.log("&cCould not identify owner for plot: " + id + " -> '" + name + '\'');
+ PlotSquared.log(
+ "&cCould not identify owner for plot: " + id + " -> '" + name + '\'');
continue;
}
}
@@ -136,35 +134,39 @@ public class PlotMeConnector_017 extends APlotMeConnector {
resultSet.close();
statement.close();
try {
- PS.log(" - " + this.plugin + "core_denied");
- statement = connection.prepareStatement("SELECT * FROM `" + this.plugin + "core_denied`");
+ PlotSquared.log(" - " + this.plugin + "core_denied");
+ statement =
+ connection.prepareStatement("SELECT * FROM `" + this.plugin + "core_denied`");
resultSet = statement.executeQuery();
while (resultSet.next()) {
int key = resultSet.getInt("plot_id");
Plot plot = plots.get(key);
if (plot == null) {
- PS.log("&6Denied (" + key + ") references deleted plot; ignoring entry.");
+ PlotSquared
+ .log("&6Denied (" + key + ") references deleted plot; ignoring entry.");
continue;
}
String player = resultSet.getString("player");
- UUID denied = player.equals("*") ? DBFunc.everyone : UUID.fromString(player);
+ UUID denied = player.equals("*") ? DBFunc.EVERYONE : UUID.fromString(player);
plot.getDenied().add(denied);
}
- PS.log(" - " + this.plugin + "core_allowed");
- statement = connection.prepareStatement("SELECT * FROM `" + this.plugin + "core_allowed`");
+ PlotSquared.log(" - " + this.plugin + "core_allowed");
+ statement =
+ connection.prepareStatement("SELECT * FROM `" + this.plugin + "core_allowed`");
resultSet = statement.executeQuery();
while (resultSet.next()) {
int key = resultSet.getInt("plot_id");
Plot plot = plots.get(key);
if (plot == null) {
- PS.log("&6Allowed (" + key + ") references deleted plot; ignoring entry.");
+ PlotSquared
+ .log("&6Allowed (" + key + ") references deleted plot; ignoring entry.");
continue;
}
String player = resultSet.getString("player");
- UUID allowed = player.equals("*") ? DBFunc.everyone : UUID.fromString(player);
+ UUID allowed = player.equals("*") ? DBFunc.EVERYONE : UUID.fromString(player);
plot.getTrusted().add(allowed);
}
resultSet.close();
@@ -186,11 +188,10 @@ public class PlotMeConnector_017 extends APlotMeConnector {
return processed;
}
- @Override
- public boolean accepts(String version) {
+ @Override public boolean accepts(String version) {
if (version == null) {
return false;
}
- return !PS.get().canUpdate(version, "0.17");
+ return !PlotSquared.get().canUpdate(version, "0.17");
}
}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/events/ClusterFlagRemoveEvent.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/ClusterFlagRemoveEvent.java
similarity index 75%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/events/ClusterFlagRemoveEvent.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/ClusterFlagRemoveEvent.java
index 40e4a4e43..40acef111 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/events/ClusterFlagRemoveEvent.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/ClusterFlagRemoveEvent.java
@@ -1,7 +1,7 @@
-package com.plotsquared.bukkit.events;
+package com.github.intellectualsites.plotsquared.bukkit.events;
-import com.intellectualcrafters.plot.flag.Flag;
-import com.intellectualcrafters.plot.object.PlotCluster;
+import com.github.intellectualsites.plotsquared.plot.flag.Flag;
+import com.github.intellectualsites.plotsquared.plot.object.PlotCluster;
import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
@@ -19,7 +19,7 @@ public class ClusterFlagRemoveEvent extends Event implements Cancellable {
/**
* PlotFlagRemoveEvent: Called when a flag is removed from a plot.
*
- * @param flag Flag that was removed
+ * @param flag Flag that was removed
* @param cluster PlotCluster from which the flag was removed
*/
public ClusterFlagRemoveEvent(Flag flag, PlotCluster cluster) {
@@ -49,18 +49,15 @@ public class ClusterFlagRemoveEvent extends Event implements Cancellable {
return this.flag;
}
- @Override
- public HandlerList getHandlers() {
+ @Override public HandlerList getHandlers() {
return handlers;
}
- @Override
- public boolean isCancelled() {
+ @Override public boolean isCancelled() {
return this.cancelled;
}
- @Override
- public void setCancelled(boolean b) {
+ @Override public void setCancelled(boolean b) {
this.cancelled = b;
}
}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlayerClaimPlotEvent.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlayerClaimPlotEvent.java
similarity index 79%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/events/PlayerClaimPlotEvent.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlayerClaimPlotEvent.java
index 6972e1b56..269b64296 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlayerClaimPlotEvent.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlayerClaimPlotEvent.java
@@ -1,62 +1,59 @@
-package com.plotsquared.bukkit.events;
-
-import com.intellectualcrafters.plot.object.Plot;
-import org.bukkit.entity.Player;
-import org.bukkit.event.Cancellable;
-import org.bukkit.event.HandlerList;
-import org.bukkit.event.player.PlayerEvent;
-
-public class PlayerClaimPlotEvent extends PlayerEvent implements Cancellable {
-
- private static final HandlerList handlers = new HandlerList();
- private final Plot plot;
- private final boolean auto;
- private boolean cancelled;
-
- /**
- * PlayerClaimPlotEvent: Called when a plot is claimed.
- *
- * @param player Player that claimed the plot
- * @param plot Plot that was claimed
- */
- public PlayerClaimPlotEvent(Player player, Plot plot, boolean auto) {
- super(player);
- this.plot = plot;
- this.auto = auto;
- }
-
- public static HandlerList getHandlerList() {
- return handlers;
- }
-
- /**
- * Get the plot involved
- *
- * @return Plot
- */
- public Plot getPlot() {
- return this.plot;
- }
-
- /**
- * @return true if it was an automated claim, else false
- */
- public boolean wasAuto() {
- return this.auto;
- }
-
- @Override
- public HandlerList getHandlers() {
- return handlers;
- }
-
- @Override
- public boolean isCancelled() {
- return this.cancelled;
- }
-
- @Override
- public void setCancelled(boolean b) {
- this.cancelled = b;
- }
-}
+package com.github.intellectualsites.plotsquared.bukkit.events;
+
+import com.github.intellectualsites.plotsquared.plot.object.Plot;
+import org.bukkit.entity.Player;
+import org.bukkit.event.Cancellable;
+import org.bukkit.event.HandlerList;
+import org.bukkit.event.player.PlayerEvent;
+
+public class PlayerClaimPlotEvent extends PlayerEvent implements Cancellable {
+
+ private static final HandlerList handlers = new HandlerList();
+ private final Plot plot;
+ private final boolean auto;
+ private boolean cancelled;
+
+ /**
+ * PlayerClaimPlotEvent: Called when a plot is claimed.
+ *
+ * @param player Player that claimed the plot
+ * @param plot Plot that was claimed
+ */
+ public PlayerClaimPlotEvent(Player player, Plot plot, boolean auto) {
+ super(player);
+ this.plot = plot;
+ this.auto = auto;
+ }
+
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
+
+ /**
+ * Get the plot involved
+ *
+ * @return Plot
+ */
+ public Plot getPlot() {
+ return this.plot;
+ }
+
+ /**
+ * @return true if it was an automated claim, else false
+ */
+ public boolean wasAuto() {
+ return this.auto;
+ }
+
+ @Override public HandlerList getHandlers() {
+ return handlers;
+ }
+
+ @Override public boolean isCancelled() {
+ return this.cancelled;
+ }
+
+ @Override public void setCancelled(boolean b) {
+ this.cancelled = b;
+ }
+}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlayerEnterPlotEvent.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlayerEnterPlotEvent.java
similarity index 81%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/events/PlayerEnterPlotEvent.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlayerEnterPlotEvent.java
index db860f35a..a40365b40 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlayerEnterPlotEvent.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlayerEnterPlotEvent.java
@@ -1,41 +1,40 @@
-package com.plotsquared.bukkit.events;
-
-import com.intellectualcrafters.plot.object.Plot;
-import org.bukkit.entity.Player;
-import org.bukkit.event.HandlerList;
-import org.bukkit.event.player.PlayerEvent;
-
-public class PlayerEnterPlotEvent extends PlayerEvent {
-
- private static final HandlerList handlers = new HandlerList();
- private final Plot plot;
-
- /**
- * Called when a player leaves a plot.
- *
- * @param player Player that entered the plot
- * @param plot Plot that was entered
- */
- public PlayerEnterPlotEvent(Player player, Plot plot) {
- super(player);
- this.plot = plot;
- }
-
- public static HandlerList getHandlerList() {
- return handlers;
- }
-
- /**
- * Get the plot involved.
- *
- * @return Plot
- */
- public Plot getPlot() {
- return this.plot;
- }
-
- @Override
- public HandlerList getHandlers() {
- return handlers;
- }
-}
+package com.github.intellectualsites.plotsquared.bukkit.events;
+
+import com.github.intellectualsites.plotsquared.plot.object.Plot;
+import org.bukkit.entity.Player;
+import org.bukkit.event.HandlerList;
+import org.bukkit.event.player.PlayerEvent;
+
+public class PlayerEnterPlotEvent extends PlayerEvent {
+
+ private static final HandlerList handlers = new HandlerList();
+ private final Plot plot;
+
+ /**
+ * Called when a player leaves a plot.
+ *
+ * @param player Player that entered the plot
+ * @param plot Plot that was entered
+ */
+ public PlayerEnterPlotEvent(Player player, Plot plot) {
+ super(player);
+ this.plot = plot;
+ }
+
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
+
+ /**
+ * Get the plot involved.
+ *
+ * @return Plot
+ */
+ public Plot getPlot() {
+ return this.plot;
+ }
+
+ @Override public HandlerList getHandlers() {
+ return handlers;
+ }
+}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlayerLeavePlotEvent.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlayerLeavePlotEvent.java
similarity index 81%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/events/PlayerLeavePlotEvent.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlayerLeavePlotEvent.java
index 225d89042..465e8cee9 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlayerLeavePlotEvent.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlayerLeavePlotEvent.java
@@ -1,45 +1,44 @@
-package com.plotsquared.bukkit.events;
-
-import com.intellectualcrafters.plot.object.Plot;
-import org.bukkit.entity.Player;
-import org.bukkit.event.HandlerList;
-import org.bukkit.event.player.PlayerEvent;
-
-/**
-
-
- */
-public class PlayerLeavePlotEvent extends PlayerEvent {
-
- private static final HandlerList handlers = new HandlerList();
- private final Plot plot;
-
- /**
- * PlayerLeavePlotEvent: Called when a player leaves a plot
- *
- * @param player Player that left the plot
- * @param plot Plot that was left
- */
- public PlayerLeavePlotEvent(Player player, Plot plot) {
- super(player);
- this.plot = plot;
- }
-
- public static HandlerList getHandlerList() {
- return handlers;
- }
-
- /**
- * Get the plot involved
- *
- * @return Plot
- */
- public Plot getPlot() {
- return this.plot;
- }
-
- @Override
- public HandlerList getHandlers() {
- return handlers;
- }
-}
+package com.github.intellectualsites.plotsquared.bukkit.events;
+
+import com.github.intellectualsites.plotsquared.plot.object.Plot;
+import org.bukkit.entity.Player;
+import org.bukkit.event.HandlerList;
+import org.bukkit.event.player.PlayerEvent;
+
+/**
+
+
+ */
+public class PlayerLeavePlotEvent extends PlayerEvent {
+
+ private static final HandlerList handlers = new HandlerList();
+ private final Plot plot;
+
+ /**
+ * PlayerLeavePlotEvent: Called when a player leaves a plot
+ *
+ * @param player Player that left the plot
+ * @param plot Plot that was left
+ */
+ public PlayerLeavePlotEvent(Player player, Plot plot) {
+ super(player);
+ this.plot = plot;
+ }
+
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
+
+ /**
+ * Get the plot involved
+ *
+ * @return Plot
+ */
+ public Plot getPlot() {
+ return this.plot;
+ }
+
+ @Override public HandlerList getHandlers() {
+ return handlers;
+ }
+}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlayerPlotDeniedEvent.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlayerPlotDeniedEvent.java
similarity index 87%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/events/PlayerPlotDeniedEvent.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlayerPlotDeniedEvent.java
index ab9b43b8b..c9c4d56b9 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlayerPlotDeniedEvent.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlayerPlotDeniedEvent.java
@@ -1,66 +1,65 @@
-package com.plotsquared.bukkit.events;
-
-import com.intellectualcrafters.plot.object.Plot;
-import org.bukkit.entity.Player;
-import org.bukkit.event.HandlerList;
-
-import java.util.UUID;
-
-public class PlayerPlotDeniedEvent extends PlotEvent {
-
- private static final HandlerList handlers = new HandlerList();
- private final Player initiator;
- private final boolean added;
- private final UUID player;
-
- /**
- * PlayerPlotDeniedEvent: Called when the denied UUID list is modified for a plot.
- *
- * @param initiator Player that initiated the event
- * @param plot Plot in which the event occurred
- * @param player Player that was denied/un-denied
- * @param added true of add to deny list, false if removed
- */
- public PlayerPlotDeniedEvent(Player initiator, Plot plot, UUID player, boolean added) {
- super(plot);
- this.initiator = initiator;
- this.added = added;
- this.player = player;
- }
-
- public static HandlerList getHandlerList() {
- return handlers;
- }
-
- /**
- * If a user was added.
- *
- * @return boolean
- */
- public boolean wasAdded() {
- return this.added;
- }
-
- /**
- * The player added/removed.
- *
- * @return UUID
- */
- public UUID getPlayer() {
- return this.player;
- }
-
- /**
- * The player initiating the action.
- *
- * @return Player
- */
- public Player getInitiator() {
- return this.initiator;
- }
-
- @Override
- public HandlerList getHandlers() {
- return handlers;
- }
-}
+package com.github.intellectualsites.plotsquared.bukkit.events;
+
+import com.github.intellectualsites.plotsquared.plot.object.Plot;
+import org.bukkit.entity.Player;
+import org.bukkit.event.HandlerList;
+
+import java.util.UUID;
+
+public class PlayerPlotDeniedEvent extends PlotEvent {
+
+ private static final HandlerList handlers = new HandlerList();
+ private final Player initiator;
+ private final boolean added;
+ private final UUID player;
+
+ /**
+ * PlayerPlotDeniedEvent: Called when the denied UUID list is modified for a plot.
+ *
+ * @param initiator Player that initiated the event
+ * @param plot Plot in which the event occurred
+ * @param player Player that was denied/un-denied
+ * @param added true of add to deny list, false if removed
+ */
+ public PlayerPlotDeniedEvent(Player initiator, Plot plot, UUID player, boolean added) {
+ super(plot);
+ this.initiator = initiator;
+ this.added = added;
+ this.player = player;
+ }
+
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
+
+ /**
+ * If a user was added.
+ *
+ * @return boolean
+ */
+ public boolean wasAdded() {
+ return this.added;
+ }
+
+ /**
+ * The player added/removed.
+ *
+ * @return UUID
+ */
+ public UUID getPlayer() {
+ return this.player;
+ }
+
+ /**
+ * The player initiating the action.
+ *
+ * @return Player
+ */
+ public Player getInitiator() {
+ return this.initiator;
+ }
+
+ @Override public HandlerList getHandlers() {
+ return handlers;
+ }
+}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlayerPlotHelperEvent.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlayerPlotHelperEvent.java
similarity index 87%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/events/PlayerPlotHelperEvent.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlayerPlotHelperEvent.java
index 8fc635494..2773f9b73 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlayerPlotHelperEvent.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlayerPlotHelperEvent.java
@@ -1,70 +1,69 @@
-package com.plotsquared.bukkit.events;
-
-import com.intellectualcrafters.plot.object.Plot;
-import org.bukkit.entity.Player;
-import org.bukkit.event.HandlerList;
-
-import java.util.UUID;
-
-/**
-
-
- */
-public class PlayerPlotHelperEvent extends PlotEvent {
-
- private static final HandlerList handlers = new HandlerList();
- private final Player initiator;
- private final boolean added;
- private final UUID player;
-
- /**
- * PlayerPlotHelperEvent: Called when a plot helper is added/removed
- *
- * @param initiator Player that initiated the event
- * @param plot Plot in which the event occurred
- * @param player Player that was added/removed from the helper list
- * @param added true of the player was added, false if the player was removed
- */
- public PlayerPlotHelperEvent(Player initiator, Plot plot, UUID player, boolean added) {
- super(plot);
- this.initiator = initiator;
- this.added = added;
- this.player = player;
- }
-
- public static HandlerList getHandlerList() {
- return handlers;
- }
-
- /**
- * If a player was added
- *
- * @return boolean
- */
- public boolean wasAdded() {
- return this.added;
- }
-
- /**
- * The UUID added/removed
- *
- * @return UUID
- */
- public UUID getPlayer() {
- return this.player;
- }
-
- /**
- * The player initiating the action
- *
- * @return Player
- */
- public Player getInitiator() {
- return this.initiator;
- }
-
- @Override
- public HandlerList getHandlers() {
- return handlers;
- }
-}
+package com.github.intellectualsites.plotsquared.bukkit.events;
+
+import com.github.intellectualsites.plotsquared.plot.object.Plot;
+import org.bukkit.entity.Player;
+import org.bukkit.event.HandlerList;
+
+import java.util.UUID;
+
+/**
+
+
+ */
+public class PlayerPlotHelperEvent extends PlotEvent {
+
+ private static final HandlerList handlers = new HandlerList();
+ private final Player initiator;
+ private final boolean added;
+ private final UUID player;
+
+ /**
+ * PlayerPlotHelperEvent: Called when a plot helper is added/removed
+ *
+ * @param initiator Player that initiated the event
+ * @param plot Plot in which the event occurred
+ * @param player Player that was added/removed from the helper list
+ * @param added true of the player was added, false if the player was removed
+ */
+ public PlayerPlotHelperEvent(Player initiator, Plot plot, UUID player, boolean added) {
+ super(plot);
+ this.initiator = initiator;
+ this.added = added;
+ this.player = player;
+ }
+
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
+
+ /**
+ * If a player was added
+ *
+ * @return boolean
+ */
+ public boolean wasAdded() {
+ return this.added;
+ }
+
+ /**
+ * The UUID added/removed
+ *
+ * @return UUID
+ */
+ public UUID getPlayer() {
+ return this.player;
+ }
+
+ /**
+ * The player initiating the action
+ *
+ * @return Player
+ */
+ public Player getInitiator() {
+ return this.initiator;
+ }
+
+ @Override public HandlerList getHandlers() {
+ return handlers;
+ }
+}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlayerPlotTrustedEvent.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlayerPlotTrustedEvent.java
similarity index 87%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/events/PlayerPlotTrustedEvent.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlayerPlotTrustedEvent.java
index 2af07a33a..95440056f 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlayerPlotTrustedEvent.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlayerPlotTrustedEvent.java
@@ -1,70 +1,69 @@
-package com.plotsquared.bukkit.events;
-
-import com.intellectualcrafters.plot.object.Plot;
-import org.bukkit.entity.Player;
-import org.bukkit.event.HandlerList;
-
-import java.util.UUID;
-
-/**
-
-
- */
-public class PlayerPlotTrustedEvent extends PlotEvent {
-
- private static final HandlerList handlers = new HandlerList();
- private final Player initiator;
- private final boolean added;
- private final UUID player;
-
- /**
- * PlayerPlotTrustedEvent: Called when a plot trusted user is added/removed
- *
- * @param initiator Player that initiated the event
- * @param plot Plot in which the event occurred
- * @param player Player that was added/removed from the trusted list
- * @param added true of the player was added, false if the player was removed
- */
- public PlayerPlotTrustedEvent(Player initiator, Plot plot, UUID player, boolean added) {
- super(plot);
- this.initiator = initiator;
- this.added = added;
- this.player = player;
- }
-
- public static HandlerList getHandlerList() {
- return handlers;
- }
-
- /**
- * If a player was added
- *
- * @return boolean
- */
- public boolean wasAdded() {
- return this.added;
- }
-
- /**
- * The UUID added/removed
- *
- * @return UUID
- */
- public UUID getPlayer() {
- return this.player;
- }
-
- /**
- * The player initiating the action
- *
- * @return Player
- */
- public Player getInitiator() {
- return this.initiator;
- }
-
- @Override
- public HandlerList getHandlers() {
- return handlers;
- }
-}
+package com.github.intellectualsites.plotsquared.bukkit.events;
+
+import com.github.intellectualsites.plotsquared.plot.object.Plot;
+import org.bukkit.entity.Player;
+import org.bukkit.event.HandlerList;
+
+import java.util.UUID;
+
+/**
+
+
+ */
+public class PlayerPlotTrustedEvent extends PlotEvent {
+
+ private static final HandlerList handlers = new HandlerList();
+ private final Player initiator;
+ private final boolean added;
+ private final UUID player;
+
+ /**
+ * PlayerPlotTrustedEvent: Called when a plot trusted user is added/removed
+ *
+ * @param initiator Player that initiated the event
+ * @param plot Plot in which the event occurred
+ * @param player Player that was added/removed from the trusted list
+ * @param added true of the player was added, false if the player was removed
+ */
+ public PlayerPlotTrustedEvent(Player initiator, Plot plot, UUID player, boolean added) {
+ super(plot);
+ this.initiator = initiator;
+ this.added = added;
+ this.player = player;
+ }
+
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
+
+ /**
+ * If a player was added
+ *
+ * @return boolean
+ */
+ public boolean wasAdded() {
+ return this.added;
+ }
+
+ /**
+ * The UUID added/removed
+ *
+ * @return UUID
+ */
+ public UUID getPlayer() {
+ return this.player;
+ }
+
+ /**
+ * The player initiating the action
+ *
+ * @return Player
+ */
+ public Player getInitiator() {
+ return this.initiator;
+ }
+
+ @Override public HandlerList getHandlers() {
+ return handlers;
+ }
+}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlayerTeleportToPlotEvent.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlayerTeleportToPlotEvent.java
similarity index 77%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/events/PlayerTeleportToPlotEvent.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlayerTeleportToPlotEvent.java
index 069ade2ca..79d43391e 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlayerTeleportToPlotEvent.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlayerTeleportToPlotEvent.java
@@ -1,72 +1,66 @@
-package com.plotsquared.bukkit.events;
-
-import com.intellectualcrafters.plot.object.Location;
-import com.intellectualcrafters.plot.object.Plot;
-import org.bukkit.entity.Player;
-import org.bukkit.event.Cancellable;
-import org.bukkit.event.HandlerList;
-import org.bukkit.event.player.PlayerEvent;
-
-/**
- * Called when a player teleports to a plot
- *
-
-
- */
-public class PlayerTeleportToPlotEvent extends PlayerEvent implements Cancellable {
-
- private static final HandlerList handlers = new HandlerList();
- private final Location from;
- private final Plot plot;
- private boolean cancelled;
-
- /**
- * PlayerTeleportToPlotEvent: Called when a player teleports to a plot
- *
- * @param player That was teleported
- * @param from Start location
- * @param plot Plot to which the player was teleported
- */
- public PlayerTeleportToPlotEvent(Player player, Location from, Plot plot) {
- super(player);
- this.from = from;
- this.plot = plot;
- }
-
- public static HandlerList getHandlerList() {
- return handlers;
- }
-
- @Override
- public HandlerList getHandlers() {
- return handlers;
- }
-
- /**
- * Get the from location
- *
- * @return Location
- */
- public Location getFrom() {
- return this.from;
- }
-
- /**
- * Get the plot involved
- *
- * @return Plot
- */
- public Plot getPlot() {
- return this.plot;
- }
-
- @Override
- public boolean isCancelled() {
- return this.cancelled;
- }
-
- @Override
- public void setCancelled(boolean cancelled) {
- this.cancelled = cancelled;
- }
-}
+package com.github.intellectualsites.plotsquared.bukkit.events;
+
+import com.github.intellectualsites.plotsquared.plot.object.Location;
+import com.github.intellectualsites.plotsquared.plot.object.Plot;
+import org.bukkit.entity.Player;
+import org.bukkit.event.Cancellable;
+import org.bukkit.event.HandlerList;
+import org.bukkit.event.player.PlayerEvent;
+
+/**
+ * Called when a player teleports to a plot
+ */
+public class PlayerTeleportToPlotEvent extends PlayerEvent implements Cancellable {
+
+ private static final HandlerList handlers = new HandlerList();
+ private final Location from;
+ private final Plot plot;
+ private boolean cancelled;
+
+ /**
+ * PlayerTeleportToPlotEvent: Called when a player teleports to a plot
+ *
+ * @param player That was teleported
+ * @param from Start location
+ * @param plot Plot to which the player was teleported
+ */
+ public PlayerTeleportToPlotEvent(Player player, Location from, Plot plot) {
+ super(player);
+ this.from = from;
+ this.plot = plot;
+ }
+
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
+
+ @Override public HandlerList getHandlers() {
+ return handlers;
+ }
+
+ /**
+ * Get the from location
+ *
+ * @return Location
+ */
+ public Location getFrom() {
+ return this.from;
+ }
+
+ /**
+ * Get the plot involved
+ *
+ * @return Plot
+ */
+ public Plot getPlot() {
+ return this.plot;
+ }
+
+ @Override public boolean isCancelled() {
+ return this.cancelled;
+ }
+
+ @Override public void setCancelled(boolean cancelled) {
+ this.cancelled = cancelled;
+ }
+}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotChangeOwnerEvent.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotChangeOwnerEvent.java
similarity index 83%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotChangeOwnerEvent.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotChangeOwnerEvent.java
index 81dea45a3..3fba03284 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotChangeOwnerEvent.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotChangeOwnerEvent.java
@@ -1,7 +1,7 @@
-package com.plotsquared.bukkit.events;
+package com.github.intellectualsites.plotsquared.bukkit.events;
-import com.intellectualcrafters.plot.object.Plot;
-import com.intellectualcrafters.plot.object.PlotId;
+import com.github.intellectualsites.plotsquared.plot.object.Plot;
+import com.github.intellectualsites.plotsquared.plot.object.PlotId;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
@@ -24,7 +24,8 @@ public class PlotChangeOwnerEvent extends PlotEvent implements Cancellable {
* @param oldOwner The old owner of the plot
* @param plot The plot having its owner changed
*/
- public PlotChangeOwnerEvent(Player initiator, Plot plot, UUID oldOwner, UUID newOwner, boolean hasOldOwner) {
+ public PlotChangeOwnerEvent(Player initiator, Plot plot, UUID oldOwner, UUID newOwner,
+ boolean hasOldOwner) {
super(plot);
this.initiator = initiator;
this.newOwner = newOwner;
@@ -90,18 +91,15 @@ public class PlotChangeOwnerEvent extends PlotEvent implements Cancellable {
return this.hasOldOwner;
}
- @Override
- public HandlerList getHandlers() {
+ @Override public HandlerList getHandlers() {
return handlers;
}
- @Override
- public boolean isCancelled() {
+ @Override public boolean isCancelled() {
return this.cancelled;
}
- @Override
- public void setCancelled(boolean b) {
+ @Override public void setCancelled(boolean b) {
this.cancelled = b;
}
}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotClearEvent.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotClearEvent.java
similarity index 69%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotClearEvent.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotClearEvent.java
index 20ab1d519..b4ab469a2 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotClearEvent.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotClearEvent.java
@@ -1,56 +1,53 @@
-package com.plotsquared.bukkit.events;
-
-import com.intellectualcrafters.plot.object.Plot;
-import com.intellectualcrafters.plot.object.PlotId;
-import org.bukkit.event.Cancellable;
-import org.bukkit.event.HandlerList;
-
-/**
- * Called when a plot is cleared
- *
- */
-public class PlotClearEvent extends PlotEvent implements Cancellable {
-
- private static final HandlerList handlers = new HandlerList();
- private boolean cancelled;
- public PlotClearEvent(Plot plot) {
- super(plot);
- }
-
- public static HandlerList getHandlerList() {
- return handlers;
- }
-
- /**
- * Get the PlotId.
- *
- * @return PlotId
- */
- public PlotId getPlotId() {
- return getPlot().getId();
- }
-
- /**
- * Get the world name.
- *
- * @return String
- */
- public String getWorld() {
- return getPlot().getWorldName();
- }
-
- @Override
- public HandlerList getHandlers() {
- return handlers;
- }
-
- @Override
- public boolean isCancelled() {
- return this.cancelled;
- }
-
- @Override
- public void setCancelled(boolean b) {
- this.cancelled = b;
- }
-}
+package com.github.intellectualsites.plotsquared.bukkit.events;
+
+import com.github.intellectualsites.plotsquared.plot.object.Plot;
+import com.github.intellectualsites.plotsquared.plot.object.PlotId;
+import org.bukkit.event.Cancellable;
+import org.bukkit.event.HandlerList;
+
+/**
+ * Called when a plot is cleared
+ */
+public class PlotClearEvent extends PlotEvent implements Cancellable {
+
+ private static final HandlerList handlers = new HandlerList();
+ private boolean cancelled;
+
+ public PlotClearEvent(Plot plot) {
+ super(plot);
+ }
+
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
+
+ /**
+ * Get the PlotId.
+ *
+ * @return PlotId
+ */
+ public PlotId getPlotId() {
+ return getPlot().getId();
+ }
+
+ /**
+ * Get the world name.
+ *
+ * @return String
+ */
+ public String getWorld() {
+ return getPlot().getWorldName();
+ }
+
+ @Override public HandlerList getHandlers() {
+ return handlers;
+ }
+
+ @Override public boolean isCancelled() {
+ return this.cancelled;
+ }
+
+ @Override public void setCancelled(boolean b) {
+ this.cancelled = b;
+ }
+}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotComponentSetEvent.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotComponentSetEvent.java
similarity index 79%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotComponentSetEvent.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotComponentSetEvent.java
index d7b33a06b..6911ccdd4 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotComponentSetEvent.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotComponentSetEvent.java
@@ -1,12 +1,11 @@
-package com.plotsquared.bukkit.events;
+package com.github.intellectualsites.plotsquared.bukkit.events;
-import com.intellectualcrafters.plot.object.Plot;
-import com.intellectualcrafters.plot.object.PlotId;
+import com.github.intellectualsites.plotsquared.plot.object.Plot;
+import com.github.intellectualsites.plotsquared.plot.object.PlotId;
import org.bukkit.event.HandlerList;
/**
* Called when a plot component is set
- *
*/
public class PlotComponentSetEvent extends PlotEvent {
@@ -49,8 +48,7 @@ public class PlotComponentSetEvent extends PlotEvent {
return this.component;
}
- @Override
- public HandlerList getHandlers() {
+ @Override public HandlerList getHandlers() {
return handlers;
}
}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotDeleteEvent.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotDeleteEvent.java
similarity index 73%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotDeleteEvent.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotDeleteEvent.java
index 126b735d7..d8669279d 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotDeleteEvent.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotDeleteEvent.java
@@ -1,45 +1,43 @@
-package com.plotsquared.bukkit.events;
-
-import com.intellectualcrafters.plot.object.Plot;
-import com.intellectualcrafters.plot.object.PlotId;
-import org.bukkit.event.HandlerList;
-
-/**
- * Called when a plot is deleted
- *
- */
-public class PlotDeleteEvent extends PlotEvent {
-
- private static final HandlerList handlers = new HandlerList();
-
- public PlotDeleteEvent(Plot plot) {
- super(plot);
- }
-
- public static HandlerList getHandlerList() {
- return handlers;
- }
-
- /**
- * Get the PlotId
- *
- * @return PlotId
- */
- public PlotId getPlotId() {
- return getPlot().getId();
- }
-
- /**
- * Get the world name
- *
- * @return String
- */
- public String getWorld() {
- return getPlot().getWorldName();
- }
-
- @Override
- public HandlerList getHandlers() {
- return handlers;
- }
-}
+package com.github.intellectualsites.plotsquared.bukkit.events;
+
+import com.github.intellectualsites.plotsquared.plot.object.Plot;
+import com.github.intellectualsites.plotsquared.plot.object.PlotId;
+import org.bukkit.event.HandlerList;
+
+/**
+ * Called when a plot is deleted
+ */
+public class PlotDeleteEvent extends PlotEvent {
+
+ private static final HandlerList handlers = new HandlerList();
+
+ public PlotDeleteEvent(Plot plot) {
+ super(plot);
+ }
+
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
+
+ /**
+ * Get the PlotId
+ *
+ * @return PlotId
+ */
+ public PlotId getPlotId() {
+ return getPlot().getId();
+ }
+
+ /**
+ * Get the world name
+ *
+ * @return String
+ */
+ public String getWorld() {
+ return getPlot().getWorldName();
+ }
+
+ @Override public HandlerList getHandlers() {
+ return handlers;
+ }
+}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotEvent.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotEvent.java
similarity index 65%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotEvent.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotEvent.java
index 94e2dc4cc..ae4b0c1d7 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotEvent.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotEvent.java
@@ -1,6 +1,6 @@
-package com.plotsquared.bukkit.events;
+package com.github.intellectualsites.plotsquared.bukkit.events;
-import com.intellectualcrafters.plot.object.Plot;
+import com.github.intellectualsites.plotsquared.plot.object.Plot;
import org.bukkit.event.Event;
public abstract class PlotEvent extends Event {
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotFlagAddEvent.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotFlagAddEvent.java
similarity index 71%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotFlagAddEvent.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotFlagAddEvent.java
index 3ab3fc822..e8c4ac63c 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotFlagAddEvent.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotFlagAddEvent.java
@@ -1,56 +1,52 @@
-package com.plotsquared.bukkit.events;
-
-import com.intellectualcrafters.plot.flag.Flag;
-import com.intellectualcrafters.plot.object.Plot;
-import org.bukkit.event.Cancellable;
-import org.bukkit.event.HandlerList;
-
-/**
- * Called when a Flag is added to a plot.
- *
- */
-public class PlotFlagAddEvent extends PlotEvent implements Cancellable {
-
- private static final HandlerList handlers = new HandlerList();
- private final Flag flag;
- private boolean cancelled;
-
- /**
- * PlotFlagAddEvent: Called when a Flag is added to a plot.
- *
- * @param flag Flag that was added
- * @param plot Plot to which the flag was added
- */
- public PlotFlagAddEvent(Flag flag, Plot plot) {
- super(plot);
- this.flag = flag;
- }
-
- public static HandlerList getHandlerList() {
- return handlers;
- }
-
- /**
- * Get the flag involved.
- *
- * @return Flag
- */
- public Flag getFlag() {
- return this.flag;
- }
-
- @Override
- public HandlerList getHandlers() {
- return handlers;
- }
-
- @Override
- public final boolean isCancelled() {
- return this.cancelled;
- }
-
- @Override
- public final void setCancelled(boolean cancelled) {
- this.cancelled = cancelled;
- }
-}
+package com.github.intellectualsites.plotsquared.bukkit.events;
+
+import com.github.intellectualsites.plotsquared.plot.flag.Flag;
+import com.github.intellectualsites.plotsquared.plot.object.Plot;
+import org.bukkit.event.Cancellable;
+import org.bukkit.event.HandlerList;
+
+/**
+ * Called when a Flag is added to a plot.
+ */
+public class PlotFlagAddEvent extends PlotEvent implements Cancellable {
+
+ private static final HandlerList handlers = new HandlerList();
+ private final Flag flag;
+ private boolean cancelled;
+
+ /**
+ * PlotFlagAddEvent: Called when a Flag is added to a plot.
+ *
+ * @param flag Flag that was added
+ * @param plot Plot to which the flag was added
+ */
+ public PlotFlagAddEvent(Flag flag, Plot plot) {
+ super(plot);
+ this.flag = flag;
+ }
+
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
+
+ /**
+ * Get the flag involved.
+ *
+ * @return Flag
+ */
+ public Flag getFlag() {
+ return this.flag;
+ }
+
+ @Override public HandlerList getHandlers() {
+ return handlers;
+ }
+
+ @Override public final boolean isCancelled() {
+ return this.cancelled;
+ }
+
+ @Override public final void setCancelled(boolean cancelled) {
+ this.cancelled = cancelled;
+ }
+}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotFlagRemoveEvent.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotFlagRemoveEvent.java
similarity index 71%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotFlagRemoveEvent.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotFlagRemoveEvent.java
index 0a8e9679b..3e3e48b55 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotFlagRemoveEvent.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotFlagRemoveEvent.java
@@ -1,56 +1,52 @@
-package com.plotsquared.bukkit.events;
-
-import com.intellectualcrafters.plot.flag.Flag;
-import com.intellectualcrafters.plot.object.Plot;
-import org.bukkit.event.Cancellable;
-import org.bukkit.event.HandlerList;
-
-/**
- * Called when a flag is removed from a plot
- *
- */
-public class PlotFlagRemoveEvent extends PlotEvent implements Cancellable {
-
- private static final HandlerList handlers = new HandlerList();
- private final Flag flag;
- private boolean cancelled;
-
- /**
- * PlotFlagRemoveEvent: Called when a flag is removed from a plot
- *
- * @param flag Flag that was removed
- * @param plot Plot from which the flag was removed
- */
- public PlotFlagRemoveEvent(Flag flag, Plot plot) {
- super(plot);
- this.flag = flag;
- }
-
- public static HandlerList getHandlerList() {
- return handlers;
- }
-
- /**
- * Get the flag involved
- *
- * @return Flag
- */
- public Flag getFlag() {
- return this.flag;
- }
-
- @Override
- public HandlerList getHandlers() {
- return handlers;
- }
-
- @Override
- public final boolean isCancelled() {
- return this.cancelled;
- }
-
- @Override
- public final void setCancelled(boolean cancelled) {
- this.cancelled = cancelled;
- }
-}
+package com.github.intellectualsites.plotsquared.bukkit.events;
+
+import com.github.intellectualsites.plotsquared.plot.flag.Flag;
+import com.github.intellectualsites.plotsquared.plot.object.Plot;
+import org.bukkit.event.Cancellable;
+import org.bukkit.event.HandlerList;
+
+/**
+ * Called when a flag is removed from a plot
+ */
+public class PlotFlagRemoveEvent extends PlotEvent implements Cancellable {
+
+ private static final HandlerList handlers = new HandlerList();
+ private final Flag flag;
+ private boolean cancelled;
+
+ /**
+ * PlotFlagRemoveEvent: Called when a flag is removed from a plot
+ *
+ * @param flag Flag that was removed
+ * @param plot Plot from which the flag was removed
+ */
+ public PlotFlagRemoveEvent(Flag flag, Plot plot) {
+ super(plot);
+ this.flag = flag;
+ }
+
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
+
+ /**
+ * Get the flag involved
+ *
+ * @return Flag
+ */
+ public Flag getFlag() {
+ return this.flag;
+ }
+
+ @Override public HandlerList getHandlers() {
+ return handlers;
+ }
+
+ @Override public final boolean isCancelled() {
+ return this.cancelled;
+ }
+
+ @Override public final void setCancelled(boolean cancelled) {
+ this.cancelled = cancelled;
+ }
+}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotMergeEvent.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotMergeEvent.java
similarity index 76%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotMergeEvent.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotMergeEvent.java
index c03733ef8..20e88f90a 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotMergeEvent.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotMergeEvent.java
@@ -1,62 +1,59 @@
-package com.plotsquared.bukkit.events;
-
-import com.intellectualcrafters.plot.object.Plot;
-import com.intellectualcrafters.plot.object.PlotId;
-import org.bukkit.World;
-import org.bukkit.event.Cancellable;
-import org.bukkit.event.HandlerList;
-
-import java.util.ArrayList;
-
-public class PlotMergeEvent extends PlotEvent implements Cancellable {
-
- private static final HandlerList handlers = new HandlerList();
- private final ArrayList plots;
- private final World world;
- private boolean cancelled;
-
- /**
- * PlotMergeEvent: Called when plots are merged
- *
- * @param world World in which the event occurred
- * @param plot Plot that was merged
- * @param plots A list of plots involved in the event
- */
- public PlotMergeEvent(World world, Plot plot, ArrayList plots) {
- super(plot);
- this.world = world;
- this.plots = plots;
- }
-
- public static HandlerList getHandlerList() {
- return handlers;
- }
-
- /**
- * Get the plots being added.
- *
- * @return Plot
- */
- public ArrayList getPlots() {
- return this.plots;
- }
-
- public World getWorld() {
- return this.world;
- }
-
- @Override
- public HandlerList getHandlers() {
- return handlers;
- }
-
- @Override
- public boolean isCancelled() {
- return this.cancelled;
- }
-
- @Override
- public void setCancelled(boolean b) {
- this.cancelled = b;
- }
-}
+package com.github.intellectualsites.plotsquared.bukkit.events;
+
+import com.github.intellectualsites.plotsquared.plot.object.Plot;
+import com.github.intellectualsites.plotsquared.plot.object.PlotId;
+import org.bukkit.World;
+import org.bukkit.event.Cancellable;
+import org.bukkit.event.HandlerList;
+
+import java.util.ArrayList;
+
+public class PlotMergeEvent extends PlotEvent implements Cancellable {
+
+ private static final HandlerList handlers = new HandlerList();
+ private final ArrayList plots;
+ private final World world;
+ private boolean cancelled;
+
+ /**
+ * PlotMergeEvent: Called when plots are merged
+ *
+ * @param world World in which the event occurred
+ * @param plot Plot that was merged
+ * @param plots A list of plots involved in the event
+ */
+ public PlotMergeEvent(World world, Plot plot, ArrayList plots) {
+ super(plot);
+ this.world = world;
+ this.plots = plots;
+ }
+
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
+
+ /**
+ * Get the plots being added.
+ *
+ * @return Plot
+ */
+ public ArrayList getPlots() {
+ return this.plots;
+ }
+
+ public World getWorld() {
+ return this.world;
+ }
+
+ @Override public HandlerList getHandlers() {
+ return handlers;
+ }
+
+ @Override public boolean isCancelled() {
+ return this.cancelled;
+ }
+
+ @Override public void setCancelled(boolean b) {
+ this.cancelled = b;
+ }
+}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotRateEvent.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotRateEvent.java
similarity index 67%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotRateEvent.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotRateEvent.java
index 2c7bcb230..b6ca46593 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotRateEvent.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotRateEvent.java
@@ -1,52 +1,49 @@
-package com.plotsquared.bukkit.events;
-
-import com.intellectualcrafters.plot.object.Plot;
-import com.intellectualcrafters.plot.object.PlotPlayer;
-import com.intellectualcrafters.plot.object.Rating;
-import org.bukkit.event.Cancellable;
-import org.bukkit.event.HandlerList;
-
-public class PlotRateEvent extends PlotEvent implements Cancellable {
-
- private static final HandlerList handlers = new HandlerList();
- private final PlotPlayer rater;
- private Rating rating;
- private boolean cancelled = false;
-
- public PlotRateEvent(PlotPlayer rater, Rating rating, Plot plot) {
- super(plot);
- this.rater = rater;
- this.rating = rating;
- }
-
- public static HandlerList getHandlerList() {
- return handlers;
- }
-
- public PlotPlayer getRater() {
- return this.rater;
- }
-
- public Rating getRating() {
- return this.rating;
- }
-
- public void setRating(Rating rating) {
- this.rating = rating;
- }
-
- @Override
- public HandlerList getHandlers() {
- return handlers;
- }
-
- @Override
- public boolean isCancelled() {
- return this.cancelled;
- }
-
- @Override
- public void setCancelled(boolean cancelled) {
- this.cancelled = cancelled;
- }
-}
+package com.github.intellectualsites.plotsquared.bukkit.events;
+
+import com.github.intellectualsites.plotsquared.plot.object.Plot;
+import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer;
+import com.github.intellectualsites.plotsquared.plot.object.Rating;
+import org.bukkit.event.Cancellable;
+import org.bukkit.event.HandlerList;
+
+public class PlotRateEvent extends PlotEvent implements Cancellable {
+
+ private static final HandlerList handlers = new HandlerList();
+ private final PlotPlayer rater;
+ private Rating rating;
+ private boolean cancelled = false;
+
+ public PlotRateEvent(PlotPlayer rater, Rating rating, Plot plot) {
+ super(plot);
+ this.rater = rater;
+ this.rating = rating;
+ }
+
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
+
+ public PlotPlayer getRater() {
+ return this.rater;
+ }
+
+ public Rating getRating() {
+ return this.rating;
+ }
+
+ public void setRating(Rating rating) {
+ this.rating = rating;
+ }
+
+ @Override public HandlerList getHandlers() {
+ return handlers;
+ }
+
+ @Override public boolean isCancelled() {
+ return this.cancelled;
+ }
+
+ @Override public void setCancelled(boolean cancelled) {
+ this.cancelled = cancelled;
+ }
+}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotUnlinkEvent.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotUnlinkEvent.java
similarity index 77%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotUnlinkEvent.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotUnlinkEvent.java
index fb37b3a39..914f394fd 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotUnlinkEvent.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotUnlinkEvent.java
@@ -1,67 +1,64 @@
-package com.plotsquared.bukkit.events;
-
-import com.intellectualcrafters.plot.object.PlotArea;
-import com.intellectualcrafters.plot.object.PlotId;
-import org.bukkit.World;
-import org.bukkit.event.Cancellable;
-import org.bukkit.event.Event;
-import org.bukkit.event.HandlerList;
-
-import java.util.ArrayList;
-
-public class PlotUnlinkEvent extends Event implements Cancellable {
-
- private static final HandlerList handlers = new HandlerList();
- private final ArrayList plots;
- private final World world;
- private final PlotArea area;
- private boolean cancelled;
-
- /**
- * Called when a mega-plot is unlinked.
- *
- * @param world World in which the event occurred
- * @param plots Plots that are involved in the event
- */
- public PlotUnlinkEvent(World world, PlotArea area, ArrayList plots) {
- this.plots = plots;
- this.world = world;
- this.area = area;
- }
-
- public static HandlerList getHandlerList() {
- return handlers;
- }
-
- /**
- * Get the plots involved.
- *
- * @return The {@link PlotId}'s of the plots involved
- */
- public ArrayList getPlots() {
- return this.plots;
- }
-
- public World getWorld() {
- return this.world;
- }
-
- public PlotArea getArea() {
- return this.area;
- }
-
- @Override
- public HandlerList getHandlers() {
- return handlers;
- }
-
- @Override
- public boolean isCancelled() {
- return this.cancelled;
- }
-
- @Override
- public void setCancelled(boolean b) {
- this.cancelled = b;
- }
-}
+package com.github.intellectualsites.plotsquared.bukkit.events;
+
+import com.github.intellectualsites.plotsquared.plot.object.PlotArea;
+import com.github.intellectualsites.plotsquared.plot.object.PlotId;
+import org.bukkit.World;
+import org.bukkit.event.Cancellable;
+import org.bukkit.event.Event;
+import org.bukkit.event.HandlerList;
+
+import java.util.ArrayList;
+
+public class PlotUnlinkEvent extends Event implements Cancellable {
+
+ private static final HandlerList handlers = new HandlerList();
+ private final ArrayList plots;
+ private final World world;
+ private final PlotArea area;
+ private boolean cancelled;
+
+ /**
+ * Called when a mega-plot is unlinked.
+ *
+ * @param world World in which the event occurred
+ * @param plots Plots that are involved in the event
+ */
+ public PlotUnlinkEvent(World world, PlotArea area, ArrayList plots) {
+ this.plots = plots;
+ this.world = world;
+ this.area = area;
+ }
+
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
+
+ /**
+ * Get the plots involved.
+ *
+ * @return The {@link PlotId}'s of the plots involved
+ */
+ public ArrayList getPlots() {
+ return this.plots;
+ }
+
+ public World getWorld() {
+ return this.world;
+ }
+
+ public PlotArea getArea() {
+ return this.area;
+ }
+
+ @Override public HandlerList getHandlers() {
+ return handlers;
+ }
+
+ @Override public boolean isCancelled() {
+ return this.cancelled;
+ }
+
+ @Override public void setCancelled(boolean b) {
+ this.cancelled = b;
+ }
+}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/generator/BukkitAugmentedGenerator.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/generator/BukkitAugmentedGenerator.java
similarity index 78%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/generator/BukkitAugmentedGenerator.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/generator/BukkitAugmentedGenerator.java
index 231d9c51c..6022632eb 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/generator/BukkitAugmentedGenerator.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/generator/BukkitAugmentedGenerator.java
@@ -1,6 +1,6 @@
-package com.plotsquared.bukkit.generator;
+package com.github.intellectualsites.plotsquared.bukkit.generator;
-import com.intellectualcrafters.plot.generator.AugmentedUtils;
+import com.github.intellectualsites.plotsquared.plot.generator.AugmentedUtils;
import org.bukkit.Chunk;
import org.bukkit.World;
import org.bukkit.generator.BlockPopulator;
@@ -8,7 +8,7 @@ import org.bukkit.generator.BlockPopulator;
import java.util.Random;
public class BukkitAugmentedGenerator extends BlockPopulator {
-
+
private static BukkitAugmentedGenerator generator;
public static BukkitAugmentedGenerator get(World world) {
@@ -24,8 +24,7 @@ public class BukkitAugmentedGenerator extends BlockPopulator {
return generator;
}
- @Override
- public void populate(World world, Random r, Chunk chunk) {
+ @Override public void populate(World world, Random r, Chunk chunk) {
AugmentedUtils.generate(world.getName(), chunk.getX(), chunk.getZ(), null);
}
}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/generator/BukkitPlotGenerator.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/generator/BukkitPlotGenerator.java
similarity index 75%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/generator/BukkitPlotGenerator.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/generator/BukkitPlotGenerator.java
index c9b7c3169..0d1128fc9 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/generator/BukkitPlotGenerator.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/generator/BukkitPlotGenerator.java
@@ -1,45 +1,36 @@
-package com.plotsquared.bukkit.generator;
+package com.github.intellectualsites.plotsquared.bukkit.generator;
-import com.intellectualcrafters.plot.PS;
-import com.intellectualcrafters.plot.generator.GeneratorWrapper;
-import com.intellectualcrafters.plot.generator.IndependentPlotGenerator;
-import com.intellectualcrafters.plot.object.ChunkLoc;
-import com.intellectualcrafters.plot.object.ChunkWrapper;
-import com.intellectualcrafters.plot.object.Location;
-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.object.worlds.SingleWorldGenerator;
-import com.intellectualcrafters.plot.util.ChunkManager;
-import com.intellectualcrafters.plot.util.MainUtil;
-import com.intellectualcrafters.plot.util.MathMan;
-import com.intellectualcrafters.plot.util.block.GlobalBlockQueue;
-import com.intellectualcrafters.plot.util.block.LocalBlockQueue;
-import com.intellectualcrafters.plot.util.block.ScopedLocalBlockQueue;
-import com.plotsquared.bukkit.util.BukkitUtil;
-import com.plotsquared.bukkit.util.block.GenChunk;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Random;
-import java.util.Set;
+import com.github.intellectualsites.plotsquared.bukkit.util.BukkitUtil;
+import com.github.intellectualsites.plotsquared.bukkit.util.block.GenChunk;
+import com.github.intellectualsites.plotsquared.plot.PlotSquared;
+import com.github.intellectualsites.plotsquared.plot.generator.GeneratorWrapper;
+import com.github.intellectualsites.plotsquared.plot.generator.IndependentPlotGenerator;
+import com.github.intellectualsites.plotsquared.plot.object.*;
+import com.github.intellectualsites.plotsquared.plot.object.worlds.SingleWorldGenerator;
+import com.github.intellectualsites.plotsquared.plot.util.ChunkManager;
+import com.github.intellectualsites.plotsquared.plot.util.MainUtil;
+import com.github.intellectualsites.plotsquared.plot.util.MathMan;
+import com.github.intellectualsites.plotsquared.plot.util.block.GlobalBlockQueue;
+import com.github.intellectualsites.plotsquared.plot.util.block.LocalBlockQueue;
+import com.github.intellectualsites.plotsquared.plot.util.block.ScopedLocalBlockQueue;
import org.bukkit.Chunk;
import org.bukkit.World;
import org.bukkit.block.Biome;
import org.bukkit.generator.BlockPopulator;
import org.bukkit.generator.ChunkGenerator;
-public class BukkitPlotGenerator extends ChunkGenerator implements GeneratorWrapper {
-
+import java.util.*;
+
+public class BukkitPlotGenerator extends ChunkGenerator
+ implements GeneratorWrapper {
+
private final GenChunk chunkSetter;
private final PseudoRandom random = new PseudoRandom();
private final IndependentPlotGenerator plotGenerator;
- private List populators;
private final ChunkGenerator platformGenerator;
private final boolean full;
private final HashMap dataMap = new HashMap<>();
+ private List populators;
private boolean loaded = false;
public BukkitPlotGenerator(IndependentPlotGenerator generator) {
@@ -53,12 +44,12 @@ public class BukkitPlotGenerator extends ChunkGenerator implements GeneratorWrap
private LocalBlockQueue queue;
- @Override
- public void populate(World world, Random r, Chunk c) {
+ @Override public void populate(World world, Random r, Chunk c) {
if (queue == null) {
queue = GlobalBlockQueue.IMP.getNewQueue(world.getName(), false);
}
- byte[][] resultData = dataMap.isEmpty() ? null : dataMap.remove(new ChunkLoc(c.getX(), c.getZ()));
+ byte[][] resultData =
+ dataMap.isEmpty() ? null : dataMap.remove(new ChunkLoc(c.getX(), c.getZ()));
if (resultData == null) {
GenChunk result = BukkitPlotGenerator.this.chunkSetter;
// Set the chunk location
@@ -87,10 +78,11 @@ public class BukkitPlotGenerator extends ChunkGenerator implements GeneratorWrap
}
}
BukkitPlotGenerator.this.random.state = c.getX() << 16 | c.getZ() & 0xFFFF;
- PlotArea area = PS.get().getPlotArea(world.getName(), null);
+ PlotArea area = PlotSquared.get().getPlotArea(world.getName(), null);
ChunkWrapper wrap = new ChunkWrapper(area.worldname, c.getX(), c.getZ());
ScopedLocalBlockQueue chunk = queue.getForChunk(wrap.x, wrap.z);
- if (BukkitPlotGenerator.this.plotGenerator.populateChunk(chunk, area, BukkitPlotGenerator.this.random)) {
+ if (BukkitPlotGenerator.this.plotGenerator
+ .populateChunk(chunk, area, BukkitPlotGenerator.this.random)) {
queue.flush();
}
}
@@ -99,51 +91,50 @@ public class BukkitPlotGenerator extends ChunkGenerator implements GeneratorWrap
this.full = true;
MainUtil.initCache();
}
-
+
public BukkitPlotGenerator(final String world, final ChunkGenerator cg) {
if (cg instanceof BukkitPlotGenerator) {
- 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;
- PS.debug("BukkitPlotGenerator does not fully support: " + cg);
+ PlotSquared.debug("BukkitPlotGenerator does not fully support: " + cg);
this.platformGenerator = cg;
this.plotGenerator = new IndependentPlotGenerator() {
- @Override
- public void processSetup(SetupObject setup) {}
-
- @Override
- public void initialize(PlotArea area) {}
-
- @Override
- public PlotManager getNewPlotManager() {
- return PS.get().IMP.getDefaultGenerator().getNewPlotManager();
+ @Override public void processSetup(SetupObject setup) {
}
-
- @Override
- public String getName() {
+
+ @Override public void initialize(PlotArea area) {
+ }
+
+ @Override public PlotManager getNewPlotManager() {
+ return PlotSquared.get().IMP.getDefaultGenerator().getNewPlotManager();
+ }
+
+ @Override public String getName() {
return cg.getClass().getName();
}
-
+
@Override
public PlotArea getNewPlotArea(String world, String id, PlotId min, PlotId max) {
- return PS.get().IMP.getDefaultGenerator().getNewPlotArea(world, id, min, max);
+ return PlotSquared.get().IMP.getDefaultGenerator()
+ .getNewPlotArea(world, id, min, max);
}
-
+
@Override
- public void generateChunk(final ScopedLocalBlockQueue result, PlotArea settings, PseudoRandom random) {
+ public void generateChunk(final ScopedLocalBlockQueue result, PlotArea settings,
+ PseudoRandom random) {
World w = BukkitUtil.getWorld(world);
Location min = result.getMin();
int cx = min.getX() >> 4;
int cz = min.getZ() >> 4;
Random r = new Random(MathMan.pair((short) cx, (short) cz));
BiomeGrid grid = new BiomeGrid() {
- @Override
- public void setBiome(int x, int z, Biome biome) {
+ @Override public void setBiome(int x, int z, Biome biome) {
result.setBiome(x, z, biome.name());
}
-
- @Override
- public Biome getBiome(int arg0, int arg1) {
+
+ @Override public Biome getBiome(int arg0, int arg1) {
return Biome.FOREST;
}
};
@@ -153,7 +144,8 @@ public class BukkitPlotGenerator extends ChunkGenerator implements GeneratorWrap
if (data != null) {
return;
}
- } catch (Throwable ignored) {}
+ } catch (Throwable ignored) {
+ }
// Populator spillage
short[][] tmp = cg.generateExtBlockSections(w, r, cx, cz, grid);
if (tmp != null) {
@@ -187,34 +179,29 @@ public class BukkitPlotGenerator extends ChunkGenerator implements GeneratorWrap
this.chunkSetter = new GenChunk(null, new ChunkWrapper(world, 0, 0));
MainUtil.initCache();
}
-
- @Override
- public void augment(PlotArea area) {
+
+ @Override public void augment(PlotArea area) {
BukkitAugmentedGenerator.get(BukkitUtil.getWorld(area.worldname));
}
-
- @Override
- public boolean isFull() {
+
+ @Override public boolean isFull() {
return this.full;
}
-
- @Override
- public IndependentPlotGenerator getPlotGenerator() {
+
+ @Override public IndependentPlotGenerator getPlotGenerator() {
return this.plotGenerator;
}
-
- @Override
- public ChunkGenerator getPlatformGenerator() {
+
+ @Override public ChunkGenerator getPlatformGenerator() {
return this.platformGenerator;
}
- @Override
- public List getDefaultPopulators(World world) {
+ @Override public List getDefaultPopulators(World world) {
try {
if (!this.loaded) {
String name = world.getName();
- PS.get().loadWorld(name, this);
- Set areas = PS.get().getPlotAreas(name);
+ PlotSquared.get().loadWorld(name, this);
+ Set areas = PlotSquared.get().getPlotAreas(name);
if (!areas.isEmpty()) {
PlotArea area = areas.iterator().next();
if (!area.MOB_SPAWNING) {
@@ -290,7 +277,7 @@ public class BukkitPlotGenerator extends ChunkGenerator implements GeneratorWrap
// Load if improperly loaded
if (!this.loaded) {
String name = world.getName();
- PS.get().loadWorld(name, this);
+ PlotSquared.get().loadWorld(name, this);
this.loaded = true;
}
// Set random seed
@@ -299,7 +286,7 @@ public class BukkitPlotGenerator extends ChunkGenerator implements GeneratorWrap
if (ChunkManager.preProcessChunk(result)) {
return;
}
- PlotArea area = PS.get().getPlotArea(world.getName(), null);
+ PlotArea area = PlotSquared.get().getPlotArea(world.getName(), null);
try {
this.plotGenerator.generateChunk(this.chunkSetter, area, this.random);
} catch (Throwable e) {
@@ -308,9 +295,9 @@ public class BukkitPlotGenerator extends ChunkGenerator implements GeneratorWrap
}
ChunkManager.postProcessChunk(result);
}
-
- @Override
- public short[][] generateExtBlockSections(World world, Random r, int cx, int cz, BiomeGrid grid) {
+
+ public short[][] generateExtBlockSections(World world, Random r, int cx, int cz,
+ BiomeGrid grid) {
GenChunk result = this.chunkSetter;
// Set the chunk location
result.setChunk(new ChunkWrapper(world.getName(), cx, cz));
@@ -339,21 +326,20 @@ public class BukkitPlotGenerator extends ChunkGenerator implements GeneratorWrap
// Return the result data
return result.result;
}
-
+
/**
* Allow spawning everywhere.
+ *
* @param world Ignored
- * @param x Ignored
- * @param z Ignored
+ * @param x Ignored
+ * @param z Ignored
* @return always true
*/
- @Override
- public boolean canSpawn(World world, int x, int z) {
+ @Override public boolean canSpawn(World world, int x, int z) {
return true;
}
-
- @Override
- public String toString() {
+
+ @Override public String toString() {
if (this.platformGenerator == this) {
return this.plotGenerator.getName();
}
@@ -363,9 +349,8 @@ public class BukkitPlotGenerator extends ChunkGenerator implements GeneratorWrap
return this.platformGenerator.getClass().getName();
}
}
-
- @Override
- public boolean equals(Object obj) {
+
+ @Override public boolean equals(Object obj) {
if (obj == null) {
return false;
}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/listeners/ChunkListener.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/listeners/ChunkListener.java
similarity index 75%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/listeners/ChunkListener.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/listeners/ChunkListener.java
index ca0dc871e..4fdfd28ed 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/listeners/ChunkListener.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/listeners/ChunkListener.java
@@ -1,16 +1,14 @@
-package com.plotsquared.bukkit.listeners;
+package com.github.intellectualsites.plotsquared.bukkit.listeners;
-import com.intellectualcrafters.plot.PS;
-import com.intellectualcrafters.plot.config.C;
-import com.intellectualcrafters.plot.config.Settings;
-import com.intellectualcrafters.plot.object.Location;
-import com.intellectualcrafters.plot.object.Plot;
-import com.intellectualcrafters.plot.util.ReflectionUtils.RefClass;
-import com.intellectualcrafters.plot.util.ReflectionUtils.RefField;
-import com.intellectualcrafters.plot.util.ReflectionUtils.RefMethod;
-import com.intellectualcrafters.plot.util.TaskManager;
-import java.lang.reflect.Method;
-import java.util.HashSet;
+import com.github.intellectualsites.plotsquared.plot.PlotSquared;
+import com.github.intellectualsites.plotsquared.plot.config.C;
+import com.github.intellectualsites.plotsquared.plot.config.Settings;
+import com.github.intellectualsites.plotsquared.plot.object.Location;
+import com.github.intellectualsites.plotsquared.plot.object.Plot;
+import com.github.intellectualsites.plotsquared.plot.util.ReflectionUtils.RefClass;
+import com.github.intellectualsites.plotsquared.plot.util.ReflectionUtils.RefField;
+import com.github.intellectualsites.plotsquared.plot.util.ReflectionUtils.RefMethod;
+import com.github.intellectualsites.plotsquared.plot.util.TaskManager;
import org.bukkit.Bukkit;
import org.bukkit.Chunk;
import org.bukkit.Material;
@@ -29,14 +27,17 @@ import org.bukkit.event.entity.ItemSpawnEvent;
import org.bukkit.event.world.ChunkLoadEvent;
import org.bukkit.event.world.ChunkUnloadEvent;
+import java.lang.reflect.Method;
+import java.util.HashSet;
-import static com.intellectualcrafters.plot.util.ReflectionUtils.getRefClass;
+import static com.github.intellectualsites.plotsquared.plot.util.ReflectionUtils.getRefClass;
-public class ChunkListener implements Listener {
+@SuppressWarnings("unused") public class ChunkListener implements Listener {
private RefMethod methodGetHandleChunk;
private RefField mustSave;
private Chunk lastChunk;
+ private boolean ignoreUnload = false;
public ChunkListener() {
if (Settings.Chunk_Processor.AUTO_TRIM) {
@@ -46,7 +47,8 @@ public class ChunkListener implements Listener {
this.mustSave = classChunk.getField("mustSave");
this.methodGetHandleChunk = classCraftChunk.getMethod("getHandle");
} catch (Throwable ignored) {
- PS.debug(PS.imp().getPluginName() + "/Server not compatible for chunk processor trim/gc");
+ PlotSquared.debug(PlotSquared.imp().getPluginName()
+ + "/Server not compatible for chunk processor trim/gc");
Settings.Chunk_Processor.AUTO_TRIM = false;
}
}
@@ -57,21 +59,23 @@ public class ChunkListener implements Listener {
world.setAutoSave(false);
}
TaskManager.runTaskRepeat(new Runnable() {
- @Override
- public void run() {
+ @Override public void run() {
try {
HashSet toUnload = new HashSet<>();
for (World world : Bukkit.getWorlds()) {
String worldName = world.getName();
- if (!PS.get().hasPlotArea(worldName)) {
+ if (!PlotSquared.get().hasPlotArea(worldName)) {
continue;
}
Object w = world.getClass().getDeclaredMethod("getHandle").invoke(world);
- Object chunkMap = w.getClass().getDeclaredMethod("getPlayerChunkMap").invoke(w);
- Method methodIsChunkInUse = chunkMap.getClass().getDeclaredMethod("isChunkInUse", int.class, int.class);
+ Object chunkMap =
+ w.getClass().getDeclaredMethod("getPlayerChunkMap").invoke(w);
+ Method methodIsChunkInUse = chunkMap.getClass()
+ .getDeclaredMethod("isChunkInUse", int.class, int.class);
Chunk[] chunks = world.getLoadedChunks();
for (Chunk chunk : chunks) {
- if ((boolean) methodIsChunkInUse.invoke(chunkMap, chunk.getX(), chunk.getZ())) {
+ if ((boolean) methodIsChunkInUse
+ .invoke(chunkMap, chunk.getX(), chunk.getZ())) {
continue;
}
int x = chunk.getX();
@@ -100,8 +104,6 @@ public class ChunkListener implements Listener {
}, 1);
}
- private boolean ignoreUnload = false;
-
public boolean unloadChunk(String world, Chunk chunk, boolean safe) {
if (safe && shouldSave(world, chunk.getX(), chunk.getZ())) {
return false;
@@ -144,15 +146,14 @@ public class ChunkListener implements Listener {
return plot != null && plot.hasOwner();
}
- @EventHandler
- public void onChunkUnload(ChunkUnloadEvent event) {
+ @EventHandler public void onChunkUnload(ChunkUnloadEvent event) {
if (ignoreUnload) {
return;
}
if (Settings.Chunk_Processor.AUTO_TRIM) {
Chunk chunk = event.getChunk();
String world = chunk.getWorld().getName();
- if (PS.get().hasPlotArea(world)) {
+ if (PlotSquared.get().hasPlotArea(world)) {
if (unloadChunk(world, chunk, true)) {
return;
}
@@ -162,14 +163,12 @@ public class ChunkListener implements Listener {
event.setCancelled(true);
}
}
-
- @EventHandler
- public void onChunkLoad(ChunkLoadEvent event) {
+
+ @EventHandler public void onChunkLoad(ChunkLoadEvent event) {
processChunk(event.getChunk(), false);
}
-
- @EventHandler(priority = EventPriority.LOWEST)
- public void onItemSpawn(ItemSpawnEvent event) {
+
+ @EventHandler(priority = EventPriority.LOWEST) public void onItemSpawn(ItemSpawnEvent event) {
Item entity = event.getEntity();
Chunk chunk = entity.getLocation().getChunk();
if (chunk == this.lastChunk) {
@@ -177,7 +176,7 @@ public class ChunkListener implements Listener {
event.setCancelled(true);
return;
}
- if (!PS.get().hasPlotArea(chunk.getWorld().getName())) {
+ if (!PlotSquared.get().hasPlotArea(chunk.getWorld().getName())) {
return;
}
Entity[] entities = chunk.getEntities();
@@ -189,14 +188,14 @@ public class ChunkListener implements Listener {
this.lastChunk = null;
}
}
-
+
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockPhysics(BlockPhysicsEvent event) {
if (Settings.Chunk_Processor.DISABLE_PHYSICS) {
event.setCancelled(true);
}
}
-
+
@EventHandler(priority = EventPriority.LOWEST)
public void onEntitySpawn(CreatureSpawnEvent event) {
LivingEntity entity = event.getEntity();
@@ -206,7 +205,7 @@ public class ChunkListener implements Listener {
event.setCancelled(true);
return;
}
- if (!PS.get().hasPlotArea(chunk.getWorld().getName())) {
+ if (!PlotSquared.get().hasPlotArea(chunk.getWorld().getName())) {
return;
}
Entity[] entities = chunk.getEntities();
@@ -223,12 +222,12 @@ public class ChunkListener implements Listener {
TaskManager.index.incrementAndGet();
final Integer currentIndex = TaskManager.index.get();
Integer task = TaskManager.runTaskRepeat(new Runnable() {
- @Override
- public void run() {
+ @Override public void run() {
if (!chunk.isLoaded()) {
Bukkit.getScheduler().cancelTask(TaskManager.tasks.get(currentIndex));
TaskManager.tasks.remove(currentIndex);
- PS.debug(C.PREFIX.s() + "&aSuccessfully processed and unloaded chunk!");
+ PlotSquared
+ .debug(C.PREFIX.s() + "&aSuccessfully processed and unloaded chunk!");
chunk.unload(true, true);
return;
}
@@ -236,7 +235,8 @@ public class ChunkListener implements Listener {
if (tiles.length == 0) {
Bukkit.getScheduler().cancelTask(TaskManager.tasks.get(currentIndex));
TaskManager.tasks.remove(currentIndex);
- PS.debug(C.PREFIX.s() + "&aSuccessfully processed and unloaded chunk!");
+ PlotSquared
+ .debug(C.PREFIX.s() + "&aSuccessfully processed and unloaded chunk!");
chunk.unload(true, true);
return;
}
@@ -246,7 +246,8 @@ public class ChunkListener implements Listener {
if (i >= tiles.length) {
Bukkit.getScheduler().cancelTask(TaskManager.tasks.get(currentIndex));
TaskManager.tasks.remove(currentIndex);
- PS.debug(C.PREFIX.s() + "&aSuccessfully processed and unloaded chunk!");
+ PlotSquared
+ .debug(C.PREFIX.s() + "&aSuccessfully processed and unloaded chunk!");
chunk.unload(true, true);
return;
}
@@ -259,7 +260,7 @@ public class ChunkListener implements Listener {
}
public boolean processChunk(Chunk chunk, boolean unload) {
- if (!PS.get().hasPlotArea(chunk.getWorld().getName())) {
+ if (!PlotSquared.get().hasPlotArea(chunk.getWorld().getName())) {
return false;
}
Entity[] entities = chunk.getEntities();
@@ -270,11 +271,15 @@ public class ChunkListener implements Listener {
ent.remove();
}
}
- PS.debug(C.PREFIX.s() + "&a detected unsafe chunk and processed: " + (chunk.getX() << 4) + "," + (chunk.getX() << 4));
+ PlotSquared.debug(
+ C.PREFIX.s() + "&a detected unsafe chunk and processed: " + (chunk.getX() << 4)
+ + "," + (chunk.getX() << 4));
}
if (tiles.length > Settings.Chunk_Processor.MAX_TILES) {
if (unload) {
- PS.debug(C.PREFIX.s() + "&c detected unsafe chunk: " + (chunk.getX() << 4) + "," + (chunk.getX() << 4));
+ PlotSquared.debug(
+ C.PREFIX.s() + "&c detected unsafe chunk: " + (chunk.getX() << 4) + "," + (
+ chunk.getX() << 4));
cleanChunk(chunk);
return true;
}
diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/listeners/EntitySpawnListener.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/listeners/EntitySpawnListener.java
new file mode 100644
index 000000000..9f787297d
--- /dev/null
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/listeners/EntitySpawnListener.java
@@ -0,0 +1,142 @@
+package com.github.intellectualsites.plotsquared.bukkit.listeners;
+
+import com.github.intellectualsites.plotsquared.bukkit.util.BukkitUtil;
+import com.github.intellectualsites.plotsquared.plot.PlotSquared;
+import com.github.intellectualsites.plotsquared.plot.config.Settings;
+import com.github.intellectualsites.plotsquared.plot.flag.Flags;
+import com.github.intellectualsites.plotsquared.plot.object.Location;
+import com.github.intellectualsites.plotsquared.plot.object.Plot;
+import com.github.intellectualsites.plotsquared.plot.object.PlotArea;
+import org.bukkit.World;
+import org.bukkit.entity.ArmorStand;
+import org.bukkit.entity.Entity;
+import org.bukkit.entity.EntityType;
+import org.bukkit.entity.Vehicle;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.EventPriority;
+import org.bukkit.event.Listener;
+import org.bukkit.event.entity.CreatureSpawnEvent;
+import org.bukkit.event.entity.EntitySpawnEvent;
+import org.bukkit.event.entity.EntityTeleportEvent;
+import org.bukkit.event.vehicle.*;
+import org.bukkit.metadata.FixedMetadataValue;
+import org.bukkit.metadata.MetadataValue;
+import org.bukkit.plugin.Plugin;
+
+import java.util.List;
+
+@SuppressWarnings("unused") public class EntitySpawnListener implements Listener {
+
+ private static boolean ignoreTP = false;
+
+ public static void test(Entity entity) {
+ List meta = entity.getMetadata("plotworld");
+ World world = entity.getLocation().getWorld();
+ if (meta == null || meta.isEmpty()) {
+ if (PlotSquared.get().hasPlotArea(world.getName())) {
+ entity.setMetadata("plotworld",
+ new FixedMetadataValue((Plugin) PlotSquared.get().IMP, entity.getLocation()));
+ }
+ } else {
+ org.bukkit.Location origin = (org.bukkit.Location) meta.get(0).value();
+ World originWorld = origin.getWorld();
+ if (!originWorld.equals(world)) {
+ if (!ignoreTP) {
+ if (!world.getName().equalsIgnoreCase(originWorld + "_the_end")) {
+ try {
+ ignoreTP = true;
+ entity.teleport(origin);
+ } finally {
+ ignoreTP = false;
+ }
+ if (entity.getLocation().getWorld().equals(world)) {
+ entity.remove();
+ }
+ }
+ } else {
+ entity.remove();
+ }
+ }
+ }
+ }
+
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
+ public void creatureSpawnEvent(EntitySpawnEvent event) {
+ Entity entity = event.getEntity();
+ Location location = BukkitUtil.getLocation(entity.getLocation());
+ PlotArea area = location.getPlotArea();
+ if (area == null) {
+ return;
+ }
+ Plot plot = area.getOwnedPlotAbs(location);
+ if (plot == null) {
+ if (!area.MOB_SPAWNING) {
+ EntityType type = entity.getType();
+ switch (type) {
+ case DROPPED_ITEM:
+ if (Settings.Enabled_Components.KILL_ROAD_ITEMS) {
+ break;
+ }
+ case PLAYER:
+ return;
+ }
+ if (type.isAlive() || !area.MISC_SPAWN_UNOWNED) {
+ event.setCancelled(true);
+ }
+ }
+ return;
+ }
+ if (Settings.Done.RESTRICT_BUILDING && plot.hasFlag(Flags.DONE)) {
+ event.setCancelled(true);
+ }
+ switch (entity.getType()) {
+ case ENDER_CRYSTAL:
+ if (PlayerEvents.checkEntity(entity, plot)) {
+ event.setCancelled(true);
+ }
+ case SHULKER:
+ if (!entity.hasMetadata("plot")) {
+ entity.setMetadata("plot",
+ new FixedMetadataValue((Plugin) PlotSquared.get().IMP, plot.getId()));
+ }
+ }
+ }
+
+ @EventHandler public void onVehicle(VehicleUpdateEvent event) {
+ test(event.getVehicle());
+ }
+
+ @EventHandler public void onVehicle(VehicleDestroyEvent event) {
+ test(event.getVehicle());
+ }
+
+ @EventHandler public void onVehicle(VehicleEntityCollisionEvent event) {
+ test(event.getVehicle());
+ }
+
+ @EventHandler public void onVehicle(VehicleCreateEvent event) {
+ test(event.getVehicle());
+ }
+
+ @EventHandler public void onVehicle(VehicleBlockCollisionEvent event) {
+ test(event.getVehicle());
+ }
+
+ @EventHandler public void onTeleport(EntityTeleportEvent event) {
+ Entity ent = event.getEntity();
+ if (ent instanceof Vehicle || ent instanceof ArmorStand)
+ test(event.getEntity());
+ }
+
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
+ public void vehicleMove(VehicleMoveEvent event) throws IllegalAccessException {
+ test(event.getVehicle());
+ }
+
+ @EventHandler public void spawn(CreatureSpawnEvent event) {
+ switch (event.getEntityType()) {
+ case ARMOR_STAND:
+ test(event.getEntity());
+ }
+ }
+}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/listeners/ForceFieldListener.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/listeners/ForceFieldListener.java
similarity index 70%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/listeners/ForceFieldListener.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/listeners/ForceFieldListener.java
index 32b421a56..97d1bb7d7 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/listeners/ForceFieldListener.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/listeners/ForceFieldListener.java
@@ -1,98 +1,104 @@
-package com.plotsquared.bukkit.listeners;
-
-import com.google.common.collect.Iterables;
-import com.intellectualcrafters.plot.config.C;
-import com.intellectualcrafters.plot.flag.Flags;
-import com.intellectualcrafters.plot.object.Location;
-import com.intellectualcrafters.plot.object.Plot;
-import com.intellectualcrafters.plot.object.PlotPlayer;
-import com.intellectualcrafters.plot.util.Permissions;
-import com.plotsquared.bukkit.object.BukkitPlayer;
-import com.plotsquared.bukkit.util.BukkitUtil;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.UUID;
-import org.bukkit.entity.Player;
-import org.bukkit.util.Vector;
-
-public class ForceFieldListener {
-
- private static Set getNearbyPlayers(Player player, Plot plot) {
- Set players = new HashSet<>();
- for (Player nearPlayer : Iterables.filter(player.getNearbyEntities(5d, 5d, 5d),Player.class)) {
- PlotPlayer plotPlayer;
- if ((plotPlayer = BukkitUtil.getPlayer(nearPlayer)) == null || !plot.equals(plotPlayer.getCurrentPlot())) {
- continue;
- }
- if (!plot.isAdded(plotPlayer.getUUID())) {
- players.add(plotPlayer);
- }
- }
- return players;
- }
-
- private static PlotPlayer hasNearbyPermitted(Player player, Plot plot) {
- for (Player nearPlayer : Iterables.filter(player.getNearbyEntities(5d, 5d, 5d),Player.class)) {
- PlotPlayer plotPlayer;
- if ((plotPlayer = BukkitUtil.getPlayer(nearPlayer)) == null || !plot.equals(plotPlayer.getCurrentPlot())) {
- continue;
- }
- if (plot.isAdded(plotPlayer.getUUID())) {
- return plotPlayer;
- }
- }
- return null;
- }
-
- private static Vector calculateVelocity(PlotPlayer player, PlotPlayer e) {
- Location playerLocation = player.getLocationFull();
- Location oPlayerLocation = e.getLocation();
- double playerX = playerLocation.getX();
- double playerY = playerLocation.getY();
- double playerZ = playerLocation.getZ();
- double oPlayerX = oPlayerLocation.getX();
- double oPlayerY = oPlayerLocation.getY();
- double oPlayerZ = oPlayerLocation.getZ();
- double x = 0d;
- if (playerX < oPlayerX) {
- x = 1.0d;
- } else if (playerX > oPlayerX) {
- x = -1.0d;
- }
- double y = 0d;
- if (playerY < oPlayerY) {
- y = 0.5d;
- } else if (playerY > oPlayerY) {
- y = -0.5d;
- }
- double z = 0d;
- if (playerZ < oPlayerZ) {
- z = 1.0d;
- } else if (playerZ > oPlayerZ) {
- z = -1.0d;
- }
- return new Vector(x, y, z);
- }
-
- public static void handleForcefield(Player player, PlotPlayer plotPlayer, Plot plot) {
- if (Flags.FORCEFIELD.isTrue(plot)) {
- UUID uuid = plotPlayer.getUUID();
- if (plot.isAdded(uuid)) {
- Set players = getNearbyPlayers(player, plot);
- for (PlotPlayer oPlayer : players) {
- if (!Permissions.hasPermission(oPlayer, C.PERMISSION_ADMIN_ENTRY_FORCEFIELD)) {
- ((BukkitPlayer) oPlayer).player.setVelocity(calculateVelocity(plotPlayer, oPlayer));
- }
- }
- } else {
- PlotPlayer oPlayer = hasNearbyPermitted(player, plot);
- if (oPlayer == null) {
- return;
- }
- if (!Permissions.hasPermission(plotPlayer, C.PERMISSION_ADMIN_ENTRY_FORCEFIELD)) {
- player.setVelocity(calculateVelocity(oPlayer, plotPlayer));
- }
- }
- }
- }
-}
+package com.github.intellectualsites.plotsquared.bukkit.listeners;
+
+import com.github.intellectualsites.plotsquared.bukkit.object.BukkitPlayer;
+import com.github.intellectualsites.plotsquared.bukkit.util.BukkitUtil;
+import com.github.intellectualsites.plotsquared.plot.config.C;
+import com.github.intellectualsites.plotsquared.plot.flag.Flags;
+import com.github.intellectualsites.plotsquared.plot.object.Location;
+import com.github.intellectualsites.plotsquared.plot.object.Plot;
+import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer;
+import com.github.intellectualsites.plotsquared.plot.util.Permissions;
+import com.google.common.collect.Iterables;
+import org.bukkit.entity.Player;
+import org.bukkit.util.Vector;
+
+import java.util.HashSet;
+import java.util.Set;
+import java.util.UUID;
+
+@SuppressWarnings("unused") public class ForceFieldListener {
+
+ private static Set getNearbyPlayers(Player player, Plot plot) {
+ Set players = new HashSet<>();
+ for (Player nearPlayer : Iterables
+ .filter(player.getNearbyEntities(5d, 5d, 5d), Player.class)) {
+ PlotPlayer plotPlayer;
+ if ((plotPlayer = BukkitUtil.getPlayer(nearPlayer)) == null || !plot
+ .equals(plotPlayer.getCurrentPlot())) {
+ continue;
+ }
+ if (!plot.isAdded(plotPlayer.getUUID())) {
+ players.add(plotPlayer);
+ }
+ }
+ return players;
+ }
+
+ private static PlotPlayer hasNearbyPermitted(Player player, Plot plot) {
+ for (Player nearPlayer : Iterables
+ .filter(player.getNearbyEntities(5d, 5d, 5d), Player.class)) {
+ PlotPlayer plotPlayer;
+ if ((plotPlayer = BukkitUtil.getPlayer(nearPlayer)) == null || !plot
+ .equals(plotPlayer.getCurrentPlot())) {
+ continue;
+ }
+ if (plot.isAdded(plotPlayer.getUUID())) {
+ return plotPlayer;
+ }
+ }
+ return null;
+ }
+
+ private static Vector calculateVelocity(PlotPlayer player, PlotPlayer e) {
+ Location playerLocation = player.getLocationFull();
+ Location oPlayerLocation = e.getLocation();
+ double playerX = playerLocation.getX();
+ double playerY = playerLocation.getY();
+ double playerZ = playerLocation.getZ();
+ double oPlayerX = oPlayerLocation.getX();
+ double oPlayerY = oPlayerLocation.getY();
+ double oPlayerZ = oPlayerLocation.getZ();
+ double x = 0d;
+ if (playerX < oPlayerX) {
+ x = 1.0d;
+ } else if (playerX > oPlayerX) {
+ x = -1.0d;
+ }
+ double y = 0d;
+ if (playerY < oPlayerY) {
+ y = 0.5d;
+ } else if (playerY > oPlayerY) {
+ y = -0.5d;
+ }
+ double z = 0d;
+ if (playerZ < oPlayerZ) {
+ z = 1.0d;
+ } else if (playerZ > oPlayerZ) {
+ z = -1.0d;
+ }
+ return new Vector(x, y, z);
+ }
+
+ public static void handleForcefield(Player player, PlotPlayer plotPlayer, Plot plot) {
+ if (Flags.FORCEFIELD.isTrue(plot)) {
+ UUID uuid = plotPlayer.getUUID();
+ if (plot.isAdded(uuid)) {
+ Set players = getNearbyPlayers(player, plot);
+ for (PlotPlayer oPlayer : players) {
+ if (!Permissions.hasPermission(oPlayer, C.PERMISSION_ADMIN_ENTRY_FORCEFIELD)) {
+ ((BukkitPlayer) oPlayer).player
+ .setVelocity(calculateVelocity(plotPlayer, oPlayer));
+ }
+ }
+ } else {
+ PlotPlayer oPlayer = hasNearbyPermitted(player, plot);
+ if (oPlayer == null) {
+ return;
+ }
+ if (!Permissions.hasPermission(plotPlayer, C.PERMISSION_ADMIN_ENTRY_FORCEFIELD)) {
+ player.setVelocity(calculateVelocity(oPlayer, plotPlayer));
+ }
+ }
+ }
+ }
+}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/listeners/PlayerEvents.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/listeners/PlayerEvents.java
similarity index 72%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/listeners/PlayerEvents.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/listeners/PlayerEvents.java
index 972c26dfe..97c0fb1fa 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/listeners/PlayerEvents.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/listeners/PlayerEvents.java
@@ -1,32 +1,18 @@
-package com.plotsquared.bukkit.listeners;
+package com.github.intellectualsites.plotsquared.bukkit.listeners;
+import com.github.intellectualsites.plotsquared.bukkit.BukkitMain;
+import com.github.intellectualsites.plotsquared.bukkit.object.BukkitLazyBlock;
+import com.github.intellectualsites.plotsquared.bukkit.object.BukkitPlayer;
+import com.github.intellectualsites.plotsquared.bukkit.util.BukkitUtil;
+import com.github.intellectualsites.plotsquared.plot.PlotSquared;
+import com.github.intellectualsites.plotsquared.plot.config.C;
+import com.github.intellectualsites.plotsquared.plot.config.Settings;
+import com.github.intellectualsites.plotsquared.plot.flag.Flags;
+import com.github.intellectualsites.plotsquared.plot.listener.PlayerBlockEventType;
+import com.github.intellectualsites.plotsquared.plot.listener.PlotListener;
+import com.github.intellectualsites.plotsquared.plot.object.*;
+import com.github.intellectualsites.plotsquared.plot.util.*;
import com.google.common.base.Optional;
-import com.intellectualcrafters.plot.PS;
-import com.intellectualcrafters.plot.config.C;
-import com.intellectualcrafters.plot.config.Settings;
-import com.intellectualcrafters.plot.flag.Flags;
-import com.intellectualcrafters.plot.flag.IntegerFlag;
-import com.intellectualcrafters.plot.object.*;
-import com.intellectualcrafters.plot.util.*;
-import com.plotsquared.bukkit.BukkitMain;
-import com.plotsquared.bukkit.object.BukkitLazyBlock;
-import com.plotsquared.bukkit.object.BukkitPlayer;
-import com.plotsquared.bukkit.util.BukkitUtil;
-import com.plotsquared.bukkit.util.BukkitVersion;
-import com.plotsquared.listener.PlayerBlockEventType;
-import com.plotsquared.listener.PlotListener;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-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.ChatColor;
import org.bukkit.Material;
@@ -34,82 +20,29 @@ import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.block.BlockState;
+import org.bukkit.block.data.BlockData;
+import org.bukkit.block.data.type.Piston;
import org.bukkit.command.PluginCommand;
-import org.bukkit.entity.Ageable;
-import org.bukkit.entity.Animals;
-import org.bukkit.entity.Arrow;
-import org.bukkit.entity.Creature;
-import org.bukkit.entity.EnderDragon;
-import org.bukkit.entity.Entity;
-import org.bukkit.entity.EntityType;
-import org.bukkit.entity.FallingBlock;
-import org.bukkit.entity.Fireball;
-import org.bukkit.entity.Hanging;
-import org.bukkit.entity.HumanEntity;
-import org.bukkit.entity.ItemFrame;
-import org.bukkit.entity.LivingEntity;
-import org.bukkit.entity.Monster;
-import org.bukkit.entity.Player;
-import org.bukkit.entity.Projectile;
-import org.bukkit.entity.TNTPrimed;
-import org.bukkit.entity.Tameable;
-import org.bukkit.entity.ThrownPotion;
-import org.bukkit.entity.Vehicle;
-import org.bukkit.entity.Villager;
+import org.bukkit.entity.*;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
-import org.bukkit.event.block.Action;
-import org.bukkit.event.block.BlockBreakEvent;
-import org.bukkit.event.block.BlockBurnEvent;
-import org.bukkit.event.block.BlockDamageEvent;
-import org.bukkit.event.block.BlockDispenseEvent;
-import org.bukkit.event.block.BlockFadeEvent;
-import org.bukkit.event.block.BlockFormEvent;
-import org.bukkit.event.block.BlockFromToEvent;
-import org.bukkit.event.block.BlockGrowEvent;
-import org.bukkit.event.block.BlockIgniteEvent;
-import org.bukkit.event.block.BlockPhysicsEvent;
-import org.bukkit.event.block.BlockPistonExtendEvent;
-import org.bukkit.event.block.BlockPistonRetractEvent;
-import org.bukkit.event.block.BlockPlaceEvent;
-import org.bukkit.event.block.BlockRedstoneEvent;
-import org.bukkit.event.block.BlockSpreadEvent;
-import org.bukkit.event.block.EntityBlockFormEvent;
-import org.bukkit.event.entity.CreatureSpawnEvent;
-import org.bukkit.event.entity.EntityChangeBlockEvent;
-import org.bukkit.event.entity.EntityCombustByEntityEvent;
-import org.bukkit.event.entity.EntityDamageByEntityEvent;
-import org.bukkit.event.entity.EntityDamageEvent;
-import org.bukkit.event.entity.EntityExplodeEvent;
-import org.bukkit.event.entity.ExplosionPrimeEvent;
-import org.bukkit.event.entity.PotionSplashEvent;
-import org.bukkit.event.entity.ProjectileHitEvent;
-import org.bukkit.event.entity.ProjectileLaunchEvent;
+import org.bukkit.event.block.*;
+import org.bukkit.event.entity.*;
import org.bukkit.event.hanging.HangingBreakByEntityEvent;
import org.bukkit.event.hanging.HangingPlaceEvent;
+import org.bukkit.event.inventory.InventoryAction;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCloseEvent;
-import org.bukkit.event.player.AsyncPlayerChatEvent;
-import org.bukkit.event.player.PlayerBucketEmptyEvent;
-import org.bukkit.event.player.PlayerBucketFillEvent;
-import org.bukkit.event.player.PlayerChangedWorldEvent;
-import org.bukkit.event.player.PlayerCommandPreprocessEvent;
-import org.bukkit.event.player.PlayerEggThrowEvent;
-import org.bukkit.event.player.PlayerEvent;
-import org.bukkit.event.player.PlayerInteractEntityEvent;
-import org.bukkit.event.player.PlayerInteractEvent;
-import org.bukkit.event.player.PlayerJoinEvent;
-import org.bukkit.event.player.PlayerMoveEvent;
-import org.bukkit.event.player.PlayerQuitEvent;
-import org.bukkit.event.player.PlayerRespawnEvent;
-import org.bukkit.event.player.PlayerTeleportEvent;
+import org.bukkit.event.player.*;
import org.bukkit.event.vehicle.VehicleCreateEvent;
import org.bukkit.event.vehicle.VehicleDestroyEvent;
import org.bukkit.event.vehicle.VehicleMoveEvent;
import org.bukkit.event.world.StructureGrowEvent;
import org.bukkit.help.HelpTopic;
import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.PlayerInventory;
+import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.metadata.MetadataValue;
import org.bukkit.plugin.Plugin;
@@ -117,70 +50,229 @@ import org.bukkit.projectiles.BlockProjectileSource;
import org.bukkit.projectiles.ProjectileSource;
import org.bukkit.util.Vector;
+import java.lang.reflect.Field;
+import java.util.*;
+import java.util.Map.Entry;
+import java.util.regex.Pattern;
+
/**
* Player Events involving plots.
- *
*/
-public class PlayerEvents extends PlotListener implements Listener {
+@SuppressWarnings("unused") public class PlayerEvents extends PlotListener implements Listener {
private boolean pistonBlocks = true;
private float lastRadius;
// To prevent recursion
private boolean tmpTeleport = true;
+ private Field fieldPlayer;
+ private PlayerMoveEvent moveTmp;
- public static void sendBlockChange(final org.bukkit.Location bloc, final Material type, final byte data) {
- TaskManager.runTaskLater(new Runnable() {
- @Override
- public void run() {
- String world = bloc.getWorld().getName();
- int x = bloc.getBlockX();
- int z = bloc.getBlockZ();
- int distance = Bukkit.getViewDistance() * 16;
- for (Entry entry : UUIDHandler.getPlayers().entrySet()) {
- PlotPlayer player = entry.getValue();
- Location loc = player.getLocation();
- if (loc.getWorld().equals(world)) {
- if (16 * Math.abs(loc.getX() - x) / 16 > distance || 16 * Math.abs(loc.getZ() - z) / 16 > distance) {
- continue;
- }
- ((BukkitPlayer) player).player.sendBlockChange(bloc, type, data);
+ {
+ try {
+ fieldPlayer = PlayerEvent.class.getDeclaredField("player");
+ fieldPlayer.setAccessible(true);
+ } catch (NoSuchFieldException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public static void sendBlockChange(final org.bukkit.Location bloc, final BlockData data) {
+ TaskManager.runTaskLater(() -> {
+ String world = bloc.getWorld().getName();
+ int x = bloc.getBlockX();
+ int z = bloc.getBlockZ();
+ int distance = Bukkit.getViewDistance() * 16;
+ for (Entry entry : UUIDHandler.getPlayers().entrySet()) {
+ PlotPlayer player = entry.getValue();
+ Location loc = player.getLocation();
+ if (loc.getWorld().equals(world)) {
+ if (16 * Math.abs(loc.getX() - x) / 16 > distance
+ || 16 * Math.abs(loc.getZ() - z) / 16 > distance) {
+ continue;
}
+ ((BukkitPlayer) player).player.sendBlockChange(bloc, data);
}
}
}, 3);
}
- @EventHandler
- public void onRedstoneEvent(BlockRedstoneEvent event) {
+ public static boolean checkEntity(Entity entity, Plot plot) {
+ if (plot == null || !plot.hasOwner() || plot.getFlags().isEmpty() && plot
+ .getArea().DEFAULT_FLAGS.isEmpty()) {
+ return false;
+ }
+ switch (entity.getType()) {
+ case PLAYER:
+ return false;
+ case LLAMA_SPIT:
+ case SMALL_FIREBALL:
+ case FIREBALL:
+ case DROPPED_ITEM:
+ case EGG:
+ case THROWN_EXP_BOTTLE:
+ case SPLASH_POTION:
+ case LINGERING_POTION:
+ case SNOWBALL:
+ case ENDER_PEARL:
+ case ARROW:
+ case TIPPED_ARROW:
+ case SPECTRAL_ARROW:
+ case SHULKER_BULLET:
+ case DRAGON_FIREBALL:
+ // projectile
+ case PRIMED_TNT:
+ case FALLING_BLOCK:
+ // Block entities
+ case ENDER_CRYSTAL:
+ case COMPLEX_PART:
+ case FISHING_HOOK:
+ case ENDER_SIGNAL:
+ case EXPERIENCE_ORB:
+ case LEASH_HITCH:
+ case FIREWORK:
+ case WEATHER:
+ case AREA_EFFECT_CLOUD:
+ case LIGHTNING:
+ case WITHER_SKULL:
+ case EVOKER_FANGS:
+ case UNKNOWN:
+ // non moving / unmovable
+ return EntityUtil.checkEntity(plot, Flags.ENTITY_CAP);
+ case ITEM_FRAME:
+ case PAINTING:
+ case ARMOR_STAND:
+ return EntityUtil.checkEntity(plot, Flags.ENTITY_CAP, Flags.MISC_CAP);
+ // misc
+ case MINECART:
+ case MINECART_CHEST:
+ case MINECART_COMMAND:
+ case MINECART_FURNACE:
+ case MINECART_HOPPER:
+ case MINECART_MOB_SPAWNER:
+ case MINECART_TNT:
+ case BOAT:
+ return EntityUtil.checkEntity(plot, Flags.ENTITY_CAP, Flags.VEHICLE_CAP);
+ case POLAR_BEAR:
+ case RABBIT:
+ case SHEEP:
+ case MUSHROOM_COW:
+ case OCELOT:
+ case PIG:
+ case SQUID:
+ case VILLAGER:
+ case IRON_GOLEM:
+ case WOLF:
+ case CHICKEN:
+ case COW:
+ case SNOWMAN:
+ case BAT:
+ case HORSE:
+ case DONKEY:
+ case LLAMA:
+ case MULE:
+ case ZOMBIE_HORSE:
+ case SKELETON_HORSE:
+ // animal
+ return EntityUtil
+ .checkEntity(plot, Flags.ENTITY_CAP, Flags.MOB_CAP, Flags.ANIMAL_CAP);
+ case BLAZE:
+ case CAVE_SPIDER:
+ case CREEPER:
+ case ENDERMAN:
+ case ENDERMITE:
+ case ENDER_DRAGON:
+ case GHAST:
+ case GIANT:
+ case GUARDIAN:
+ case MAGMA_CUBE:
+ case PIG_ZOMBIE:
+ case SILVERFISH:
+ case SKELETON:
+ case SLIME:
+ case SPIDER:
+ case WITCH:
+ case WITHER:
+ case ZOMBIE:
+ case SHULKER:
+ case HUSK:
+ case STRAY:
+ case ELDER_GUARDIAN:
+ case WITHER_SKELETON:
+ case VINDICATOR:
+ case EVOKER:
+ case VEX:
+ case ZOMBIE_VILLAGER:
+ // monster
+ return EntityUtil
+ .checkEntity(plot, Flags.ENTITY_CAP, Flags.MOB_CAP, Flags.HOSTILE_CAP);
+ default:
+ if (entity instanceof LivingEntity) {
+ if (entity instanceof Animals) {
+ return EntityUtil
+ .checkEntity(plot, Flags.ENTITY_CAP, Flags.MOB_CAP, Flags.ANIMAL_CAP);
+ } else if (entity instanceof Monster) {
+ return EntityUtil
+ .checkEntity(plot, Flags.ENTITY_CAP, Flags.MOB_CAP, Flags.HOSTILE_CAP);
+ } else {
+ return EntityUtil.checkEntity(plot, Flags.ENTITY_CAP, Flags.MOB_CAP);
+ }
+ }
+ if (entity instanceof Vehicle) {
+ return EntityUtil.checkEntity(plot, Flags.ENTITY_CAP, Flags.VEHICLE_CAP);
+ }
+ if (entity instanceof Hanging) {
+ return EntityUtil.checkEntity(plot, Flags.ENTITY_CAP, Flags.MISC_CAP);
+ }
+ return EntityUtil.checkEntity(plot, Flags.ENTITY_CAP);
+ }
+ }
+
+ @EventHandler public void onRedstoneEvent(BlockRedstoneEvent event) {
Block block = event.getBlock();
switch (block.getType()) {
case OBSERVER:
- case REDSTONE_LAMP_OFF:
+ case REDSTONE:
+ case REDSTONE_ORE:
+ case REDSTONE_BLOCK:
+ case REDSTONE_TORCH:
+ case REDSTONE_WALL_TORCH:
case REDSTONE_WIRE:
- case REDSTONE_LAMP_ON:
- case PISTON_BASE:
- case PISTON_STICKY_BASE:
- case IRON_DOOR_BLOCK:
+ case REDSTONE_LAMP:
+ case PISTON_HEAD:
+ case PISTON:
+ case STICKY_PISTON:
+ case MOVING_PISTON:
case LEVER:
- case WOODEN_DOOR:
- case FENCE_GATE:
- case WOOD_BUTTON:
+ case ACACIA_BUTTON:
+ case BIRCH_BUTTON:
+ case DARK_OAK_BUTTON:
+ case JUNGLE_BUTTON:
+ case OAK_BUTTON:
+ case SPRUCE_BUTTON:
case STONE_BUTTON:
- case IRON_PLATE:
- case WOOD_PLATE:
- case STONE_PLATE:
- case GOLD_PLATE:
+ case STONE_PRESSURE_PLATE:
+ case ACACIA_PRESSURE_PLATE:
+ case BIRCH_PRESSURE_PLATE:
+ case DARK_OAK_PRESSURE_PLATE:
+ case HEAVY_WEIGHTED_PRESSURE_PLATE:
+ case JUNGLE_PRESSURE_PLATE:
+ case LIGHT_WEIGHTED_PRESSURE_PLATE:
+ case OAK_PRESSURE_PLATE:
+ case SPRUCE_PRESSURE_PLATE:
case SPRUCE_DOOR:
case BIRCH_DOOR:
case JUNGLE_DOOR:
case ACACIA_DOOR:
case DARK_OAK_DOOR:
+ case IRON_DOOR:
+ case OAK_DOOR:
case IRON_TRAPDOOR:
case SPRUCE_FENCE_GATE:
case BIRCH_FENCE_GATE:
case JUNGLE_FENCE_GATE:
case ACACIA_FENCE_GATE:
case DARK_OAK_FENCE_GATE:
+ case OAK_FENCE_GATE:
case POWERED_RAIL:
return;
default:
@@ -208,7 +300,7 @@ public class PlayerEvents extends PlotListener implements Listener {
}
}
} else {
- disable = UUIDHandler.getPlayer(plot.owner) == null;
+ disable = UUIDHandler.getPlayer(plot.guessOwner()) == null;
}
if (disable) {
for (UUID trusted : plot.getTrusted()) {
@@ -237,8 +329,7 @@ public class PlayerEvents extends PlotListener implements Listener {
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
public void onPhysicsEvent(BlockPhysicsEvent event) {
switch (event.getChangedType()) {
- case REDSTONE_COMPARATOR_OFF:
- case REDSTONE_COMPARATOR_ON: {
+ case COMPARATOR: {
Block block = event.getBlock();
Location loc = BukkitUtil.getLocation(block.getLocation());
PlotArea area = loc.getPlotArea();
@@ -277,8 +368,9 @@ public class PlayerEvents extends PlotListener implements Listener {
if (Settings.Redstone.DETECT_INVALID_EDGE_PISTONS) {
Block block = event.getBlock();
switch (block.getType()) {
- case PISTON_BASE:
- case PISTON_STICKY_BASE:
+ case PISTON:
+ case STICKY_PISTON:
+ Piston piston = (Piston) block.getBlockData();
Location loc = BukkitUtil.getLocation(block.getLocation());
PlotArea area = loc.getPlotArea();
if (area == null) {
@@ -288,22 +380,17 @@ public class PlayerEvents extends PlotListener implements Listener {
if (plot == null) {
return;
}
- int data = block.getData();
- switch (data) {
- case 5:
- case 13:
+ switch (piston.getFacing()) {
+ case EAST:
loc.setX(loc.getX() + 1);
break;
- case 4:
- case 12:
+ case SOUTH:
loc.setX(loc.getX() - 1);
break;
- case 3:
- case 11:
+ case WEST:
loc.setZ(loc.getZ() + 1);
break;
- case 2:
- case 10:
+ case NORTH:
loc.setZ(loc.getZ() - 1);
break;
}
@@ -312,14 +399,13 @@ public class PlayerEvents extends PlotListener implements Listener {
event.setCancelled(true);
return;
}
+ }
}
- }
- break;
+ break;
}
}
- @EventHandler
- public void onProjectileLaunch(ProjectileLaunchEvent event) {
+ @EventHandler public void onProjectileLaunch(ProjectileLaunchEvent event) {
Projectile entity = event.getEntity();
if (!(entity instanceof ThrownPotion)) {
return;
@@ -329,7 +415,7 @@ public class PlayerEvents extends PlotListener implements Listener {
return;
}
Location l = BukkitUtil.getLocation(entity);
- if (!PS.get().hasPlotArea(l.getWorld())) {
+ if (!PlotSquared.get().hasPlotArea(l.getWorld())) {
return;
}
PlotPlayer pp = BukkitUtil.getPlayer((Player) shooter);
@@ -340,11 +426,10 @@ public class PlayerEvents extends PlotListener implements Listener {
}
}
- @EventHandler
- public boolean onProjectileHit(ProjectileHitEvent event) {
+ @EventHandler public boolean onProjectileHit(ProjectileHitEvent event) {
Projectile entity = event.getEntity();
Location loc = BukkitUtil.getLocation(entity);
- if (!PS.get().hasPlotArea(loc.getWorld())) {
+ if (!PlotSquared.get().hasPlotArea(loc.getWorld())) {
return true;
}
PlotArea area = loc.getPlotArea();
@@ -362,7 +447,8 @@ public class PlayerEvents extends PlotListener implements Listener {
}
return true;
}
- if (plot.isAdded(pp.getUUID()) || Permissions.hasPermission(pp, C.PERMISSION_PROJECTILE_OTHER)) {
+ if (plot.isAdded(pp.getUUID()) || Permissions
+ .hasPermission(pp, C.PERMISSION_PROJECTILE_OTHER)) {
return true;
}
entity.remove();
@@ -373,7 +459,8 @@ public class PlayerEvents extends PlotListener implements Listener {
entity.remove();
return false;
}
- Location sLoc = BukkitUtil.getLocation(((BlockProjectileSource) shooter).getBlock().getLocation());
+ Location sLoc =
+ BukkitUtil.getLocation(((BlockProjectileSource) shooter).getBlock().getLocation());
if (!area.contains(sLoc.getX(), sLoc.getZ())) {
entity.remove();
return false;
@@ -402,13 +489,14 @@ public class PlayerEvents extends PlotListener implements Listener {
}
String[] parts = msg.split(" ");
Plot plot = pp.getCurrentPlot();
- if (BukkitMain.worldEdit != null) { // Check WorldEdit
+ if (BukkitMain.getWorldEdit() != null) { // Check WorldEdit
switch (parts[0].toLowerCase()) {
case "up":
case "/up":
case "worldedit:up":
case "worldedit:/up":
- if (plot == null || (!plot.isAdded(pp.getUUID()) && !Permissions.hasPermission(pp, C.PERMISSION_ADMIN_BUILD_OTHER, true))) {
+ if (plot == null || (!plot.isAdded(pp.getUUID()) && !Permissions
+ .hasPermission(pp, C.PERMISSION_ADMIN_BUILD_OTHER, true))) {
event.setCancelled(true);
return;
}
@@ -418,7 +506,8 @@ public class PlayerEvents extends PlotListener implements Listener {
return;
}
Optional> flag = plot.getFlag(Flags.BLOCKED_CMDS);
- if (flag.isPresent() && !Permissions.hasPermission(pp, C.PERMISSION_ADMIN_INTERACT_BLOCKED_CMDS)) {
+ if (flag.isPresent() && !Permissions
+ .hasPermission(pp, C.PERMISSION_ADMIN_INTERACT_BLOCKED_CMDS)) {
List blocked_cmds = flag.get();
String c = parts[0];
if (parts[0].contains(":")) {
@@ -501,8 +590,7 @@ public class PlayerEvents extends PlotListener implements Listener {
// Async
TaskManager.runTaskLaterAsync(new Runnable() {
- @Override
- public void run() {
+ @Override public void run() {
if (!player.hasPlayedBefore() && player.isOnline()) {
player.saveData();
}
@@ -520,15 +608,16 @@ public class PlayerEvents extends PlotListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onTeleport(PlayerTeleportEvent event) {
- if (event.getTo() == null || event.getFrom() == null || !event.getFrom().getWorld().equals(event.getTo().getWorld())) {
- BukkitUtil.getPlayer(event.getPlayer()).deleteMeta("location");
- BukkitUtil.getPlayer(event.getPlayer()).deleteMeta("lastplot");
+ if (event.getTo() == null || event.getFrom() == null || !event.getFrom().getWorld()
+ .equals(event.getTo().getWorld())) {
+ BukkitUtil.getPlayer(event.getPlayer()).deleteMeta(PlotPlayer.META_LOCATION);
+ BukkitUtil.getPlayer(event.getPlayer()).deleteMeta(PlotPlayer.META_LAST_PLOT);
org.bukkit.Location to = event.getTo();
if (to != null) {
Player player = event.getPlayer();
PlotPlayer pp = PlotPlayer.wrap(player);
Location loc = BukkitUtil.getLocation(to);
- PlotArea area = PS.get().getPlotAreaAbs(loc);
+ PlotArea area = PlotSquared.get().getPlotAreaAbs(loc);
if (area == null) {
return;
}
@@ -542,50 +631,39 @@ public class PlayerEvents extends PlotListener implements Listener {
playerMove(event);
}
- private Field fieldPlayer;
- {
- try {
- fieldPlayer = PlayerEvent.class.getDeclaredField("player");
- fieldPlayer.setAccessible(true);
- } catch (NoSuchFieldException e) {
- e.printStackTrace();
- }
- }
- private PlayerMoveEvent moveTmp;
- private boolean v112 = PS.get().checkVersion(PS.imp().getServerVersion(), BukkitVersion.v1_12_0);
-
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void vehicleMove(VehicleMoveEvent event) throws IllegalAccessException {
final org.bukkit.Location from = event.getFrom();
final org.bukkit.Location to = event.getTo();
int toX, toZ;
- if ((toX = MathMan.roundInt(to.getX())) != MathMan.roundInt(from.getX()) | (toZ = MathMan.roundInt(to.getZ())) != MathMan.roundInt(from.getZ())) {
+ if ((toX = MathMan.roundInt(to.getX())) != MathMan.roundInt(from.getX())
+ | (toZ = MathMan.roundInt(to.getZ())) != MathMan.roundInt(from.getZ())) {
Vehicle vehicle = event.getVehicle();
// Check allowed
- Entity passenger = vehicle.getPassenger();
+ Entity passenger = vehicle.getPassengers().get(1);
if (passenger instanceof Player) {
final Player player = (Player) passenger;
// reset
- if (moveTmp == null) moveTmp = new PlayerMoveEvent(null, from, to);
+ if (moveTmp == null)
+ moveTmp = new PlayerMoveEvent(null, from, to);
moveTmp.setFrom(from);
moveTmp.setTo(to);
moveTmp.setCancelled(false);
fieldPlayer.set(moveTmp, player);
- List passengers;
- if (v112) passengers = vehicle.getPassengers();
- else passengers = null;
+ List passengers = vehicle.getPassengers();
this.playerMove(moveTmp);
org.bukkit.Location dest;
if (moveTmp.isCancelled()) {
dest = from;
- } else if (MathMan.roundInt(moveTmp.getTo().getX()) != toX || MathMan.roundInt(moveTmp.getTo().getZ()) != toZ) {
+ } else if (MathMan.roundInt(moveTmp.getTo().getX()) != toX
+ || MathMan.roundInt(moveTmp.getTo().getZ()) != toZ) {
dest = to;
} else {
dest = null;
@@ -595,7 +673,7 @@ public class PlayerEvents extends PlotListener implements Listener {
vehicle.eject();
vehicle.setVelocity(new Vector(0d, 0d, 0d));
vehicle.teleport(dest);
- for (final Entity entity : passengers) vehicle.addPassenger(entity);
+ passengers.forEach(vehicle::addPassenger);
} else {
vehicle.eject();
vehicle.setVelocity(new Vector(0d, 0d, 0d));
@@ -624,7 +702,8 @@ public class PlayerEvents extends PlotListener implements Listener {
vehicle.remove();
}
} else if (toPlot != null) {
- vehicle.setMetadata("plot", new FixedMetadataValue((Plugin) PS.get().IMP, toPlot));
+ vehicle.setMetadata("plot",
+ new FixedMetadataValue((Plugin) PlotSquared.get().IMP, toPlot));
}
}
}
@@ -644,14 +723,14 @@ public class PlayerEvents extends PlotListener implements Listener {
TaskManager.TELEPORT_QUEUE.remove(pp.getName());
// Set last location
Location loc = BukkitUtil.getLocation(to);
- pp.setMeta("location", loc);
+ pp.setMeta(PlotPlayer.META_LOCATION, loc);
PlotArea area = loc.getPlotArea();
if (area == null) {
- pp.deleteMeta("lastplot");
+ pp.deleteMeta(PlotPlayer.META_LAST_PLOT);
return;
}
Plot now = area.getPlot(loc);
- Plot lastPlot = pp.getMeta("lastplot");
+ Plot lastPlot = pp.getMeta(PlotPlayer.META_LAST_PLOT);
if (now == null) {
if (lastPlot != null && !plotExit(pp, lastPlot) && this.tmpTeleport) {
MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_EXIT_DENIED);
@@ -705,14 +784,14 @@ public class PlayerEvents extends PlotListener implements Listener {
TaskManager.TELEPORT_QUEUE.remove(pp.getName());
// Set last location
Location loc = BukkitUtil.getLocation(to);
- pp.setMeta("location", loc);
+ pp.setMeta(PlotPlayer.META_LOCATION, loc);
PlotArea area = loc.getPlotArea();
if (area == null) {
- pp.deleteMeta("lastplot");
+ pp.deleteMeta(PlotPlayer.META_LAST_PLOT);
return;
}
Plot now = area.getPlot(loc);
- Plot lastPlot = pp.getMeta("lastplot");
+ Plot lastPlot = pp.getMeta(PlotPlayer.META_LAST_PLOT);
if (now == null) {
if (lastPlot != null && !plotExit(pp, lastPlot) && this.tmpTeleport) {
MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_EXIT_DENIED);
@@ -757,8 +836,7 @@ public class PlayerEvents extends PlotListener implements Listener {
}
}
- @EventHandler(priority = EventPriority.LOW)
- public void onChat(AsyncPlayerChatEvent event) {
+ @EventHandler(priority = EventPriority.LOW) public void onChat(AsyncPlayerChatEvent event) {
if (event.isCancelled())
return;
@@ -791,7 +869,8 @@ public class PlayerEvents extends PlotListener implements Listener {
}
}
}
- String partial = ChatColor.translateAlternateColorCodes('&',format.replace("%plot_id%", id.x + ";" + id.y).replace("%sender%", sender));
+ String partial = ChatColor.translateAlternateColorCodes('&',
+ format.replace("%plot_id%", id.x + ";" + id.y).replace("%sender%", sender));
if (plotPlayer.hasPermission("plots.chat.color")) {
message = C.color(message);
}
@@ -800,16 +879,16 @@ public class PlayerEvents extends PlotListener implements Listener {
receiver.sendMessage(full);
}
if (!spies.isEmpty()) {
- String spyMessage = C.PLOT_CHAT_SPY_FORMAT.s().replace("%plot_id%", id.x + ";" + id.y).replace("%sender%", sender).replace("%msg%", message);
+ String spyMessage = C.PLOT_CHAT_SPY_FORMAT.s().replace("%plot_id%", id.x + ";" + id.y)
+ .replace("%sender%", sender).replace("%msg%", message);
for (Player player : spies) {
player.sendMessage(spyMessage);
}
}
- PS.debug(full);
+ PlotSquared.debug(full);
}
- @EventHandler(priority = EventPriority.LOWEST)
- public void blockDestroy(BlockBreakEvent event) {
+ @EventHandler(priority = EventPriority.LOWEST) public void blockDestroy(BlockBreakEvent event) {
Player player = event.getPlayer();
Location location = BukkitUtil.getLocation(event.getBlock().getLocation());
PlotArea area = location.getPlotArea();
@@ -820,21 +899,27 @@ public class PlayerEvents extends PlotListener implements Listener {
if (plot != null) {
PlotPlayer plotPlayer = BukkitUtil.getPlayer(player);
if (event.getBlock().getY() == 0) {
- if (!Permissions.hasPermission(plotPlayer, C.PERMISSION_ADMIN_DESTROY_GROUNDLEVEL)) {
- MainUtil.sendMessage(plotPlayer, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_DESTROY_GROUNDLEVEL);
+ if (!Permissions
+ .hasPermission(plotPlayer, C.PERMISSION_ADMIN_DESTROY_GROUNDLEVEL)) {
+ MainUtil.sendMessage(plotPlayer, C.NO_PERMISSION_EVENT,
+ C.PERMISSION_ADMIN_DESTROY_GROUNDLEVEL);
event.setCancelled(true);
return;
}
- } else if ((location.getY() > area.MAX_BUILD_HEIGHT || location.getY() < area.MIN_BUILD_HEIGHT) && !Permissions
+ } else if (
+ (location.getY() > area.MAX_BUILD_HEIGHT || location.getY() < area.MIN_BUILD_HEIGHT)
+ && !Permissions
.hasPermission(plotPlayer, C.PERMISSION_ADMIN_BUILD_HEIGHTLIMIT)) {
event.setCancelled(true);
- MainUtil.sendMessage(plotPlayer, C.HEIGHT_LIMIT.s().replace("{limit}", String.valueOf(area.MAX_BUILD_HEIGHT)));
+ MainUtil.sendMessage(plotPlayer,
+ C.HEIGHT_LIMIT.s().replace("{limit}", String.valueOf(area.MAX_BUILD_HEIGHT)));
}
if (!plot.hasOwner()) {
if (Permissions.hasPermission(plotPlayer, C.PERMISSION_ADMIN_DESTROY_UNOWNED)) {
return;
}
- MainUtil.sendMessage(plotPlayer, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_DESTROY_UNOWNED);
+ MainUtil.sendMessage(plotPlayer, C.NO_PERMISSION_EVENT,
+ C.PERMISSION_ADMIN_DESTROY_UNOWNED);
event.setCancelled(true);
return;
}
@@ -842,17 +927,19 @@ public class PlayerEvents extends PlotListener implements Listener {
Optional> destroy = plot.getFlag(Flags.BREAK);
Block block = event.getBlock();
if (destroy.isPresent() && destroy.get()
- .contains(PlotBlock.get((short) block.getTypeId(), block.getData()))) {
+ .contains(PlotBlock.get(block.getType().name()))) {
return;
}
if (Permissions.hasPermission(plotPlayer, C.PERMISSION_ADMIN_DESTROY_OTHER)) {
return;
}
- MainUtil.sendMessage(plotPlayer, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_DESTROY_OTHER);
+ MainUtil.sendMessage(plotPlayer, C.NO_PERMISSION_EVENT,
+ C.PERMISSION_ADMIN_DESTROY_OTHER);
event.setCancelled(true);
} else if (Settings.Done.RESTRICT_BUILDING && plot.getFlags().containsKey(Flags.DONE)) {
if (!Permissions.hasPermission(plotPlayer, C.PERMISSION_ADMIN_BUILD_OTHER)) {
- MainUtil.sendMessage(plotPlayer, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_BUILD_OTHER);
+ MainUtil.sendMessage(plotPlayer, C.NO_PERMISSION_EVENT,
+ C.PERMISSION_ADMIN_BUILD_OTHER);
event.setCancelled(true);
return;
}
@@ -863,8 +950,9 @@ public class PlayerEvents extends PlotListener implements Listener {
if (Permissions.hasPermission(pp, C.PERMISSION_ADMIN_DESTROY_ROAD)) {
return;
}
- if (PS.get().worldedit != null && pp.getAttribute("worldedit")) {
- if (player.getItemInHand().getTypeId() == PS.get().worldedit.getConfiguration().wandItem) {
+ if (PlotSquared.get().worldedit != null && pp.getAttribute("worldedit")) {
+ if (player.getInventory().getItemInMainHand().getType() == Material
+ .getMaterial(PlotSquared.get().worldedit.getConfiguration().wandItem)) {
return;
}
}
@@ -877,7 +965,7 @@ public class PlayerEvents extends PlotListener implements Listener {
Location location = BukkitUtil.getLocation(event.getLocation());
PlotArea area = location.getPlotArea();
if (area == null) {
- if (!PS.get().hasPlotArea(location.getWorld())) {
+ if (!PlotSquared.get().hasPlotArea(location.getWorld())) {
return;
}
Iterator iterator = event.blockList().iterator();
@@ -900,11 +988,14 @@ public class PlayerEvents extends PlotListener implements Listener {
origin = (Plot) meta.get(0).value();
}
if (this.lastRadius != 0) {
- List nearby = event.getEntity().getNearbyEntities(this.lastRadius, this.lastRadius, this.lastRadius);
+ List nearby = event.getEntity()
+ .getNearbyEntities(this.lastRadius, this.lastRadius, this.lastRadius);
for (Entity near : nearby) {
- if (near instanceof TNTPrimed || near.getType().equals(EntityType.MINECART_TNT)) {
+ if (near instanceof TNTPrimed || near.getType()
+ .equals(EntityType.MINECART_TNT)) {
if (!near.hasMetadata("plot")) {
- near.setMetadata("plot", new FixedMetadataValue((Plugin) PS.get().IMP, plot));
+ near.setMetadata("plot",
+ new FixedMetadataValue((Plugin) PlotSquared.get().IMP, plot));
}
}
}
@@ -914,7 +1005,8 @@ public class PlayerEvents extends PlotListener implements Listener {
while (iterator.hasNext()) {
Block block = iterator.next();
location = BukkitUtil.getLocation(block.getLocation());
- if (!area.contains(location.getX(), location.getZ()) || !origin.equals(area.getOwnedPlot(location))) {
+ if (!area.contains(location.getX(), location.getZ()) || !origin
+ .equals(area.getOwnedPlot(location))) {
iterator.remove();
}
}
@@ -929,12 +1021,12 @@ public class PlayerEvents extends PlotListener implements Listener {
Player player = event.getPlayer();
PlotPlayer pp = BukkitUtil.getPlayer(player);
// Delete last location
- pp.deleteMeta("location");
- Plot plot = (Plot) pp.deleteMeta("lastplot");
+ pp.deleteMeta(PlotPlayer.META_LOCATION);
+ Plot plot = (Plot) pp.deleteMeta(PlotPlayer.META_LAST_PLOT);
if (plot != null) {
plotExit(pp, plot);
}
- if (PS.get().worldedit != null) {
+ if (PlotSquared.get().worldedit != null) {
if (!Permissions.hasPermission(pp, C.PERMISSION_WORLDEDIT_BYPASS)) {
if (pp.getAttribute("worldedit")) {
pp.removeAttribute("worldedit");
@@ -945,7 +1037,7 @@ public class PlayerEvents extends PlotListener implements Listener {
pp.deleteMeta("perm");
}
Location loc = pp.getLocation();
- PlotArea area = PS.get().getPlotAreaAbs(loc);
+ PlotArea area = PlotSquared.get().getPlotAreaAbs(loc);
if (area == null) {
return;
}
@@ -963,7 +1055,8 @@ public class PlayerEvents extends PlotListener implements Listener {
PlotArea area = location.getPlotArea();
if (area != null) {
Plot plot = area.getOwnedPlot(location);
- if (plot != null && Flags.MOB_BREAK.isTrue(plot)) return;
+ if (plot != null && Flags.MOB_BREAK.isTrue(plot))
+ return;
event.setCancelled(true);
}
}
@@ -972,7 +1065,7 @@ public class PlayerEvents extends PlotListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onEntityBlockForm(EntityBlockFormEvent event) {
String world = event.getBlock().getWorld().getName();
- if (!PS.get().hasPlotArea(world)) {
+ if (!PlotSquared.get().hasPlotArea(world)) {
return;
}
Location location = BukkitUtil.getLocation(event.getBlock().getLocation());
@@ -1033,7 +1126,7 @@ public class PlayerEvents extends PlotListener implements Listener {
event.setCancelled(true);
}
break;
- case MYCEL:
+ case MYCELIUM:
if (Flags.MYCEL_GROW.isFalse(plot)) {
event.setCancelled(true);
}
@@ -1116,8 +1209,9 @@ public class PlayerEvents extends PlotListener implements Listener {
if (!plot.isAdded(plotPlayer.getUUID())) {
Optional> destroy = plot.getFlag(Flags.BREAK);
Block block = event.getBlock();
- if (destroy.isPresent() && destroy.get().contains(PlotBlock.get((short) block.getTypeId(), block.getData())) || Permissions
- .hasPermission(plotPlayer, C.PERMISSION_ADMIN_DESTROY_OTHER)) {
+ if (destroy.isPresent() && destroy.get()
+ .contains(PlotBlock.get(block.getType().name())) || Permissions
+ .hasPermission(plotPlayer, C.PERMISSION_ADMIN_DESTROY_OTHER)) {
return;
}
event.setCancelled(true);
@@ -1156,7 +1250,7 @@ public class PlayerEvents extends PlotListener implements Listener {
event.setCancelled(true);
}
break;
- case SOIL:
+ case FARMLAND:
if (Flags.SOIL_DRY.isFalse(plot)) {
event.setCancelled(true);
}
@@ -1179,20 +1273,20 @@ public class PlayerEvents extends PlotListener implements Listener {
if (Flags.DISABLE_PHYSICS.isFalse(plot)) {
event.setCancelled(true);
return;
- } else if (!area.contains(fLocation.getX(), fLocation.getZ()) || !Objects.equals(plot, area.getOwnedPlot(fLocation))) {
+ } else if (!area.contains(fLocation.getX(), fLocation.getZ()) || !Objects
+ .equals(plot, area.getOwnedPlot(fLocation))) {
event.setCancelled(true);
return;
}
if (Flags.LIQUID_FLOW.isFalse(plot)) {
switch (to.getType()) {
case WATER:
- case STATIONARY_WATER:
case LAVA:
- case STATIONARY_LAVA:
event.setCancelled(true);
}
}
- } else if (!area.contains(fLocation.getX(), fLocation.getZ()) || !Objects.equals(plot, area.getOwnedPlot(fLocation))) {
+ } else if (!area.contains(fLocation.getX(), fLocation.getZ()) || !Objects
+ .equals(null, area.getOwnedPlot(fLocation))) {
event.setCancelled(true);
}
}
@@ -1214,7 +1308,7 @@ public class PlayerEvents extends PlotListener implements Listener {
Vector relative = new Vector(face.getModX(), face.getModY(), face.getModZ());
PlotArea area = location.getPlotArea();
if (area == null) {
- if (!PS.get().hasPlotArea(location.getWorld())) {
+ if (!PlotSquared.get().hasPlotArea(location.getWorld())) {
return;
}
for (Block b : event.getBlocks()) {
@@ -1233,11 +1327,13 @@ public class PlayerEvents extends PlotListener implements Listener {
List blocks = event.getBlocks();
for (Block b : blocks) {
Location bloc = BukkitUtil.getLocation(b.getLocation());
- if (!area.contains(bloc.getX(), bloc.getZ()) || !area.contains(bloc.getX() + relative.getBlockX(), bloc.getZ() + relative.getBlockZ())) {
+ if (!area.contains(bloc.getX(), bloc.getZ()) || !area
+ .contains(bloc.getX() + relative.getBlockX(), bloc.getZ() + relative.getBlockZ())) {
event.setCancelled(true);
return;
}
- if (!plot.equals(area.getOwnedPlot(bloc)) || !plot.equals(area.getOwnedPlot(bloc.add(relative.getBlockX(), relative.getBlockY(), relative.getBlockZ())))) {
+ if (!plot.equals(area.getOwnedPlot(bloc)) || !plot.equals(area.getOwnedPlot(
+ bloc.add(relative.getBlockX(), relative.getBlockY(), relative.getBlockZ())))) {
event.setCancelled(true);
return;
}
@@ -1250,7 +1346,7 @@ public class PlayerEvents extends PlotListener implements Listener {
Location location = BukkitUtil.getLocation(block.getLocation());
PlotArea area = location.getPlotArea();
if (area == null) {
- if (!PS.get().hasPlotArea(location.getWorld())) {
+ if (!PlotSquared.get().hasPlotArea(location.getWorld())) {
return;
}
if (this.pistonBlocks) {
@@ -1266,9 +1362,10 @@ public class PlayerEvents extends PlotListener implements Listener {
this.pistonBlocks = false;
}
}
- if (!this.pistonBlocks && block.getType() != Material.PISTON_BASE) {
+ if (!this.pistonBlocks && !block.getType().toString().contains("PISTON")) {
BlockFace dir = event.getDirection();
- location = BukkitUtil.getLocation(block.getLocation().add(dir.getModX() * 2, dir.getModY() * 2, dir.getModZ() * 2));
+ location = BukkitUtil.getLocation(block.getLocation()
+ .add(dir.getModX() * 2, dir.getModY() * 2, dir.getModZ() * 2));
if (location.getPlotArea() != null) {
event.setCancelled(true);
return;
@@ -1278,17 +1375,18 @@ public class PlayerEvents extends PlotListener implements Listener {
}
Plot plot = area.getOwnedPlot(location);
BlockFace dir = event.getDirection();
-// Location head = location.add(-dir.getModX(), -dir.getModY(), -dir.getModZ());
-//
-// if (!Objects.equals(plot, area.getOwnedPlot(head))) {
-// // FIXME: cancelling the event doesn't work here. See issue #1484
-// event.setCancelled(true);
-// return;
-// }
+ // Location head = location.add(-dir.getModX(), -dir.getModY(), -dir.getModZ());
+ //
+ // if (!Objects.equals(plot, area.getOwnedPlot(head))) {
+ // // FIXME: cancelling the event doesn't work here. See issue #1484
+ // event.setCancelled(true);
+ // return;
+ // }
if (this.pistonBlocks) {
try {
for (Block pulled : event.getBlocks()) {
- Location from = BukkitUtil.getLocation(pulled.getLocation().add(dir.getModX(), dir.getModY(), dir.getModZ()));
+ Location from = BukkitUtil.getLocation(
+ pulled.getLocation().add(dir.getModX(), dir.getModY(), dir.getModZ()));
Location to = BukkitUtil.getLocation(pulled.getLocation());
if (!area.contains(to.getX(), to.getZ())) {
event.setCancelled(true);
@@ -1305,8 +1403,9 @@ public class PlayerEvents extends PlotListener implements Listener {
this.pistonBlocks = false;
}
}
- if (!this.pistonBlocks && block.getType() != Material.PISTON_BASE) {
- location = BukkitUtil.getLocation(block.getLocation().add(dir.getModX() * 2, dir.getModY() * 2, dir.getModZ() * 2));
+ if (!this.pistonBlocks && !block.getType().toString().contains("PISTON")) {
+ location = BukkitUtil.getLocation(
+ block.getLocation().add(dir.getModX() * 2, dir.getModY() * 2, dir.getModZ() * 2));
if (!area.contains(location)) {
event.setCancelled(true);
return;
@@ -1324,19 +1423,23 @@ public class PlayerEvents extends PlotListener implements Listener {
switch (type) {
case WATER_BUCKET:
case LAVA_BUCKET: {
- if (event.getBlock().getType() == Material.DROPPER) return;
- BlockFace targetFace = ((org.bukkit.material.Dispenser) event.getBlock().getState().getData()).getFacing();
- Location location = BukkitUtil.getLocation(event.getBlock().getRelative(targetFace).getLocation());
+ if (event.getBlock().getType() == Material.DROPPER)
+ return;
+ BlockFace targetFace =
+ ((org.bukkit.material.Dispenser) event.getBlock().getState().getData())
+ .getFacing();
+ Location location =
+ BukkitUtil.getLocation(event.getBlock().getRelative(targetFace).getLocation());
if (location.isPlotRoad()) {
event.setCancelled(true);
}
}
- }
+ }
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onStructureGrow(StructureGrowEvent event) {
- if (!PS.get().hasPlotArea(event.getWorld().getName())) {
+ if (!PlotSquared.get().hasPlotArea(event.getWorld().getName())) {
return;
}
List blocks = event.getBlocks();
@@ -1391,6 +1494,203 @@ public class PlayerEvents extends PlotListener implements Listener {
}
}
+ @SuppressWarnings("deprecation")
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
+ public void onInventoryClick(InventoryClickEvent event) {
+ if (!event.isLeftClick() || (event.getAction() != InventoryAction.PLACE_ALL) || event
+ .isShiftClick()) {
+ return;
+ }
+ HumanEntity entity = event.getWhoClicked();
+ if (!(entity instanceof Player) || !PlotSquared.get()
+ .hasPlotArea(entity.getWorld().getName())) {
+ return;
+ }
+
+ HumanEntity clicker = event.getWhoClicked();
+ if (!(clicker instanceof Player)) {
+ return;
+ }
+ Player player = (Player) clicker;
+ PlotPlayer pp = BukkitUtil.getPlayer(player);
+ PlotInventory inventory = pp.getMeta("inventory");
+ if (inventory != null && event.getRawSlot() == event.getSlot()) {
+ if (!inventory.onClick(event.getSlot())) {
+ event.setCancelled(true);
+ inventory.close();
+ }
+ }
+ PlayerInventory inv = player.getInventory();
+ int slot = inv.getHeldItemSlot();
+ if ((slot > 8) || !event.getEventName().equals("InventoryCreativeEvent")) {
+ return;
+ }
+ ItemStack current = inv.getItemInHand();
+ ItemStack newItem = event.getCursor();
+ ItemMeta newMeta = newItem.getItemMeta();
+ ItemMeta oldMeta = newItem.getItemMeta();
+ String newLore = "";
+ if (newMeta != null) {
+ List lore = newMeta.getLore();
+ if (lore != null) {
+ newLore = lore.toString();
+ }
+ }
+ String oldLore = "";
+ if (oldMeta != null) {
+ List lore = oldMeta.getLore();
+ if (lore != null) {
+ oldLore = lore.toString();
+ }
+ }
+ if (!"[(+NBT)]".equals(newLore) || (current.equals(newItem) && newLore.equals(oldLore))) {
+ switch (newItem.getType()) {
+ case LEGACY_BANNER:
+ case PLAYER_HEAD:
+ if (newMeta != null)
+ break;
+ default:
+ return;
+ }
+ }
+ Block block = player.getTargetBlock(null, 7);
+ BlockState state = block.getState();
+ if (state == null) {
+ return;
+ }
+ Material stateType = state.getType();
+ Material itemType = newItem.getType();
+ if (stateType != itemType) {
+ switch (stateType) {
+ case LEGACY_STANDING_BANNER:
+ case LEGACY_WALL_BANNER:
+ if (itemType == Material.LEGACY_BANNER)
+ break;
+ case LEGACY_SKULL:
+ if (itemType == Material.LEGACY_SKULL_ITEM)
+ break;
+ default:
+ return;
+ }
+ }
+ Location l = BukkitUtil.getLocation(state.getLocation());
+ PlotArea area = l.getPlotArea();
+ if (area == null) {
+ return;
+ }
+ Plot plot = area.getPlotAbs(l);
+ boolean cancelled = false;
+ if (plot == null) {
+ if (!Permissions.hasPermission(pp, "plots.admin.interact.road")) {
+ MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, "plots.admin.interact.road");
+ cancelled = true;
+ }
+ } else if (!plot.hasOwner()) {
+ if (!Permissions.hasPermission(pp, "plots.admin.interact.unowned")) {
+ MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, "plots.admin.interact.unowned");
+ cancelled = true;
+ }
+ } else {
+ UUID uuid = pp.getUUID();
+ if (!plot.isAdded(uuid)) {
+ if (!Permissions.hasPermission(pp, "plots.admin.interact.other")) {
+ MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, "plots.admin.interact.other");
+ cancelled = true;
+ }
+ }
+ }
+ if (cancelled) {
+ if ((current.getType() == newItem.getType()) && (current.getDurability() == newItem
+ .getDurability())) {
+ event.setCursor(
+ new ItemStack(newItem.getType(), newItem.getAmount(), newItem.getDurability()));
+ event.setCancelled(true);
+ return;
+ }
+ event.setCursor(
+ new ItemStack(newItem.getType(), newItem.getAmount(), newItem.getDurability()));
+ }
+ }
+
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
+ public void onPotionSplash(LingeringPotionSplashEvent event) {
+ LingeringPotion entity = event.getEntity();
+ Location l = BukkitUtil.getLocation(entity);
+ if (!PlotSquared.get().hasPlotArea(l.getWorld())) {
+ return;
+ }
+ if (!this.onProjectileHit(event)) {
+ event.setCancelled(true);
+ }
+ }
+
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
+ public void onInteract(PlayerInteractAtEntityEvent e) {
+ Entity entity = e.getRightClicked();
+ if (!(entity instanceof ArmorStand)) {
+ return;
+ }
+ Location l = BukkitUtil.getLocation(e.getRightClicked().getLocation());
+ PlotArea area = l.getPlotArea();
+ if (area == null) {
+ return;
+ }
+
+ EntitySpawnListener.test(entity);
+
+ Plot plot = area.getPlotAbs(l);
+ PlotPlayer pp = BukkitUtil.getPlayer(e.getPlayer());
+ if (plot == null) {
+ if (!Permissions.hasPermission(pp, "plots.admin.interact.road")) {
+ MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, "plots.admin.interact.road");
+ e.setCancelled(true);
+ }
+ } else if (!plot.hasOwner()) {
+ if (!Permissions.hasPermission(pp, "plots.admin.interact.unowned")) {
+ MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, "plots.admin.interact.unowned");
+ e.setCancelled(true);
+ }
+ } else {
+ UUID uuid = pp.getUUID();
+ if (!plot.isAdded(uuid)) {
+ if (Flags.MISC_INTERACT.isTrue(plot)) {
+ return;
+ }
+ if (!Permissions.hasPermission(pp, "plots.admin.interact.other")) {
+ MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, "plots.admin.interact.other");
+ e.setCancelled(true);
+ }
+ }
+ }
+ }
+
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
+ public void onBigBoom(BlockExplodeEvent event) {
+ Block block = event.getBlock();
+ Location location = BukkitUtil.getLocation(block.getLocation());
+ String world = location.getWorld();
+ if (!PlotSquared.get().hasPlotArea(world)) {
+ return;
+ }
+ PlotArea area = location.getPlotArea();
+ if (area == null) {
+ Iterator iterator = event.blockList().iterator();
+ while (iterator.hasNext()) {
+ location = BukkitUtil.getLocation(iterator.next().getLocation());
+ if (location.getPlotArea() != null) {
+ iterator.remove();
+ }
+ }
+ return;
+ }
+ Plot plot = area.getOwnedPlot(location);
+ if (plot == null || !plot.getFlag(Flags.EXPLOSION).or(false)) {
+ event.setCancelled(true);
+ }
+ event.blockList().removeIf(
+ b -> !plot.equals(area.getOwnedPlot(BukkitUtil.getLocation(b.getLocation()))));
+ }
+
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onInteract(PlayerInteractEvent event) {
Player player = event.getPlayer();
@@ -1415,7 +1715,8 @@ public class PlayerEvents extends PlotListener implements Listener {
Block block = event.getClickedBlock();
location = BukkitUtil.getLocation(block.getLocation());
Material blockType = block.getType();
- int blockId = blockType.getId();
+ int blockId = ((LegacyPlotBlock) PlotSquared.get().IMP.getLegacyMappings()
+ .fromStringToLegacy(blockType.name())).id;
switch (blockType) {
case ANVIL:
case ACACIA_DOOR:
@@ -1424,48 +1725,98 @@ public class PlayerEvents extends PlotListener implements Listener {
case IRON_DOOR:
case JUNGLE_DOOR:
case SPRUCE_DOOR:
- case TRAP_DOOR:
+ case OAK_DOOR:
+ case ACACIA_TRAPDOOR:
+ case BIRCH_TRAPDOOR:
+ case DARK_OAK_TRAPDOOR:
+ case JUNGLE_TRAPDOOR:
+ case OAK_TRAPDOOR:
+ case SPRUCE_TRAPDOOR:
case IRON_TRAPDOOR:
- case WOOD_DOOR:
- case WOODEN_DOOR:
case TRAPPED_CHEST:
case ENDER_CHEST:
case CHEST:
case ACACIA_FENCE_GATE:
case BIRCH_FENCE_GATE:
case DARK_OAK_FENCE_GATE:
- case FENCE_GATE:
+ case OAK_FENCE_GATE:
case JUNGLE_FENCE_GATE:
case SPRUCE_FENCE_GATE:
case LEVER:
- case DIODE:
- case DIODE_BLOCK_OFF:
- case DIODE_BLOCK_ON:
- case COMMAND:
- case REDSTONE_COMPARATOR:
- case REDSTONE_COMPARATOR_OFF:
- case REDSTONE_COMPARATOR_ON:
+ case REDSTONE_TORCH:
+ case REDSTONE_WALL_TORCH:
+ case COMMAND_BLOCK:
+ case COMPARATOR:
case REDSTONE_ORE:
- case WOOD_BUTTON:
+ case BIRCH_BUTTON:
+ case DARK_OAK_BUTTON:
+ case JUNGLE_BUTTON:
+ case ACACIA_BUTTON:
+ case OAK_BUTTON:
+ case SPRUCE_BUTTON:
case STONE_BUTTON:
case BEACON:
- case BED_BLOCK:
+ case BLACK_BED:
+ case BLUE_BED:
+ case BROWN_BED:
+ case CYAN_BED:
+ case GRAY_BED:
+ case GREEN_BED:
+ case LIGHT_BLUE_BED:
+ case LIGHT_GRAY_BED:
+ case LIME_BED:
+ case MAGENTA_BED:
+ case ORANGE_BED:
+ case PINK_BED:
+ case PURPLE_BED:
+ case RED_BED:
+ case WHITE_BED:
+ case YELLOW_BED:
case SIGN:
case WALL_SIGN:
- case SIGN_POST:
- case ENCHANTMENT_TABLE:
+ case ENCHANTING_TABLE:
case BREWING_STAND:
- case STANDING_BANNER:
- case BURNING_FURNACE:
+ case BLACK_BANNER:
+ case BLACK_WALL_BANNER:
+ case BLUE_BANNER:
+ case BLUE_WALL_BANNER:
+ case BROWN_BANNER:
+ case BROWN_WALL_BANNER:
+ case CYAN_BANNER:
+ case CYAN_WALL_BANNER:
+ case GRAY_BANNER:
+ case GRAY_WALL_BANNER:
+ case GREEN_BANNER:
+ case GREEN_WALL_BANNER:
+ case LIGHT_BLUE_BANNER:
+ case LIGHT_BLUE_WALL_BANNER:
+ case LIGHT_GRAY_BANNER:
+ case LIGHT_GRAY_WALL_BANNER:
+ case LIME_BANNER:
+ case LIME_WALL_BANNER:
+ case MAGENTA_BANNER:
+ case MAGENTA_WALL_BANNER:
+ case ORANGE_BANNER:
+ case ORANGE_WALL_BANNER:
+ case PINK_BANNER:
+ case PINK_WALL_BANNER:
+ case PURPLE_BANNER:
+ case PURPLE_WALL_BANNER:
+ case RED_BANNER:
+ case RED_WALL_BANNER:
+ case WHITE_BANNER:
+ case WHITE_WALL_BANNER:
+ case YELLOW_BANNER:
+ case YELLOW_WALL_BANNER:
case FURNACE:
- case CAKE_BLOCK:
+ case CAKE:
case DISPENSER:
case DROPPER:
case HOPPER:
case NOTE_BLOCK:
case JUKEBOX:
- case WORKBENCH:
- case SILVER_SHULKER_BOX:
+ case CRAFTING_TABLE:
+ case LIGHT_GRAY_SHULKER_BOX:
case BLACK_SHULKER_BOX:
case BLUE_SHULKER_BOX:
case RED_SHULKER_BOX:
@@ -1481,8 +1832,8 @@ public class PlayerEvents extends PlotListener implements Listener {
case LIME_SHULKER_BOX:
case LIGHT_BLUE_SHULKER_BOX:
case MAGENTA_SHULKER_BOX:
- case COMMAND_REPEATING:
- case COMMAND_CHAIN:
+ case CHAIN_COMMAND_BLOCK:
+ case REPEATING_COMMAND_BLOCK:
eventType = PlayerBlockEventType.INTERACT_BLOCK;
break;
@@ -1495,80 +1846,100 @@ public class PlayerEvents extends PlotListener implements Listener {
}
break;
}
- lb = new BukkitLazyBlock(blockId, block);
- ItemStack hand = player.getItemInHand();
- if (eventType != null && (eventType != PlayerBlockEventType.INTERACT_BLOCK || !player.isSneaking())) {
+ lb = new BukkitLazyBlock(PlotBlock.get(block.getType().toString()));
+ ItemStack hand = player.getInventory().getItemInMainHand();
+ if (eventType != null && (eventType != PlayerBlockEventType.INTERACT_BLOCK
+ || !player.isSneaking())) {
break;
}
Material type = (hand == null) ? null : hand.getType();
- int id = (type == null) ? 0 : type.getId();
if (type == Material.AIR) {
eventType = PlayerBlockEventType.INTERACT_BLOCK;
break;
}
- if (id < 198) {
- location = BukkitUtil.getLocation(block.getRelative(event.getBlockFace()).getLocation());
+ if (type == null || type.isBlock()) {
+ location = BukkitUtil
+ .getLocation(block.getRelative(event.getBlockFace()).getLocation());
eventType = PlayerBlockEventType.PLACE_BLOCK;
- lb = new BukkitLazyBlock(id, block);
break;
}
Material handType = hand.getType();
- lb = new BukkitLazyBlock(PlotBlock.get((short) handType.getId(), (byte) 0));
- switch (handType) {
- case FIREWORK:
- case MONSTER_EGG:
- case MONSTER_EGGS:
- eventType = PlayerBlockEventType.SPAWN_MOB;
- break;
- case ARMOR_STAND:
- location = BukkitUtil.getLocation(block.getRelative(event.getBlockFace()).getLocation());
- eventType = PlayerBlockEventType.PLACE_MISC;
- break;
- case WRITTEN_BOOK:
- case BOOK_AND_QUILL:
- case BOOK:
- eventType = PlayerBlockEventType.READ;
- break;
- case APPLE:
- case BAKED_POTATO:
- case MUSHROOM_SOUP:
- case BREAD:
- case CARROT:
- case CARROT_ITEM:
- case COOKIE:
- case GRILLED_PORK:
- case POISONOUS_POTATO:
- case MUTTON:
- case PORK:
- case POTATO:
- case POTATO_ITEM:
- case POTION:
- case PUMPKIN_PIE:
- case RABBIT:
- case RABBIT_FOOT:
- case RABBIT_STEW:
- case RAW_BEEF:
- case RAW_FISH:
- case RAW_CHICKEN:
- eventType = PlayerBlockEventType.EAT;
- break;
- case MINECART:
- case STORAGE_MINECART:
- case POWERED_MINECART:
- case HOPPER_MINECART:
- case EXPLOSIVE_MINECART:
- case COMMAND_MINECART:
- case BOAT:
- eventType = PlayerBlockEventType.PLACE_VEHICLE;
- break;
- case PAINTING:
- case ITEM_FRAME:
- location = BukkitUtil.getLocation(block.getRelative(event.getBlockFace()).getLocation());
- eventType = PlayerBlockEventType.PLACE_HANGING;
- break;
- default:
- eventType = PlayerBlockEventType.INTERACT_BLOCK;
- break;
+ lb = new BukkitLazyBlock(PlotBlock.get(handType.toString()));
+ if (handType.toString().endsWith("egg")) {
+ eventType = PlayerBlockEventType.SPAWN_MOB;
+ } else {
+ switch (handType) {
+ case FIREWORK_ROCKET:
+ case FIREWORK_STAR:
+ eventType = PlayerBlockEventType.SPAWN_MOB;
+ break;
+ case ARMOR_STAND:
+ location = BukkitUtil
+ .getLocation(block.getRelative(event.getBlockFace()).getLocation());
+ eventType = PlayerBlockEventType.PLACE_MISC;
+ break;
+ case WRITTEN_BOOK:
+ case WRITABLE_BOOK:
+ case ENCHANTED_BOOK:
+ case KNOWLEDGE_BOOK:
+ case BOOK:
+ eventType = PlayerBlockEventType.READ;
+ break;
+ case APPLE:
+ case BAKED_POTATO:
+ case MUSHROOM_STEW:
+ case BREAD:
+ case CARROT:
+ case GOLDEN_CARROT:
+ case COOKIE:
+ case PORKCHOP:
+ case POISONOUS_POTATO:
+ case MUTTON:
+ case COOKED_PORKCHOP:
+ case POTATO:
+ case POTION:
+ case PUMPKIN_PIE:
+ case RABBIT:
+ case RABBIT_FOOT:
+ case RABBIT_STEW:
+ case BEEF:
+ case COOKED_BEEF:
+ case TROPICAL_FISH:
+ case PUFFERFISH:
+ case CHICKEN:
+ case COOKED_CHICKEN:
+ case COOKED_MUTTON:
+ case COOKED_RABBIT:
+ case COOKED_SALMON:
+ case SALMON:
+ case COD:
+ case COOKED_COD:
+ eventType = PlayerBlockEventType.EAT;
+ break;
+ case MINECART:
+ case CHEST_MINECART:
+ case FURNACE_MINECART:
+ case HOPPER_MINECART:
+ case TNT_MINECART:
+ case COMMAND_BLOCK_MINECART:
+ case BIRCH_BOAT:
+ case ACACIA_BOAT:
+ case DARK_OAK_BOAT:
+ case JUNGLE_BOAT:
+ case OAK_BOAT:
+ case SPRUCE_BOAT:
+ eventType = PlayerBlockEventType.PLACE_VEHICLE;
+ break;
+ case PAINTING:
+ case ITEM_FRAME:
+ location = BukkitUtil
+ .getLocation(block.getRelative(event.getBlockFace()).getLocation());
+ eventType = PlayerBlockEventType.PLACE_HANGING;
+ break;
+ default:
+ eventType = PlayerBlockEventType.INTERACT_BLOCK;
+ break;
+ }
}
break;
}
@@ -1581,8 +1952,9 @@ public class PlayerEvents extends PlotListener implements Listener {
default:
return;
}
- if (PS.get().worldedit != null && pp.getAttribute("worldedit")) {
- if (player.getItemInHand().getTypeId() == PS.get().worldedit.getConfiguration().wandItem) {
+ if (PlotSquared.get().worldedit != null && pp.getAttribute("worldedit")) {
+ if (player.getInventory().getItemInMainHand().getType() == Material
+ .getMaterial(PlotSquared.get().worldedit.getConfiguration().wandItem)) {
return;
}
}
@@ -1619,7 +1991,7 @@ public class PlayerEvents extends PlotListener implements Listener {
case BUILD_WITHER:
case BUILD_SNOWMAN:
case CUSTOM:
- if (!area.SPAWN_CUSTOM && entity.getType().getTypeId() != 30) {
+ if (!area.SPAWN_CUSTOM && entity.getType() != EntityType.ARMOR_STAND) {
event.setCancelled(true);
return;
}
@@ -1651,7 +2023,7 @@ public class PlayerEvents extends PlotListener implements Listener {
Block block = event.getBlock();
World world = block.getWorld();
String worldName = world.getName();
- if (!PS.get().hasPlotArea(worldName)) {
+ if (!PlotSquared.get().hasPlotArea(worldName)) {
return;
}
Location location = BukkitUtil.getLocation(block.getLocation());
@@ -1676,219 +2048,15 @@ public class PlayerEvents extends PlotListener implements Listener {
entity.remove();
}
} else if (event.getTo() == Material.AIR) {
- event.getEntity().setMetadata("plot", new FixedMetadataValue((Plugin) PS.get().IMP, plot));
+ event.getEntity()
+ .setMetadata("plot", new FixedMetadataValue((Plugin) PlotSquared.get().IMP, plot));
}
}
- @EventHandler
- public void onPrime(ExplosionPrimeEvent event) {
+ @EventHandler public void onPrime(ExplosionPrimeEvent event) {
this.lastRadius = event.getRadius() + 1;
}
- public static boolean checkEntity(Plot plot, IntegerFlag... flags) {
- if (Settings.Done.RESTRICT_BUILDING && Flags.DONE.isSet(plot)) {
- return true;
- }
- int[] mobs = null;
- for (IntegerFlag flag : flags) {
- int i;
- switch (flag.getName()) {
- case "entity-cap":
- i = 0;
- break;
- case "mob-cap":
- i = 3;
- break;
- case "hostile-cap":
- i = 2;
- break;
- case "animal-cap":
- i = 1;
- break;
- case "vehicle-cap":
- i = 4;
- break;
- case "misc-cap":
- i = 5;
- break;
- default:
- i = 0;
- }
- int cap = plot.getFlag(flag, Integer.MAX_VALUE);
- if (cap == Integer.MAX_VALUE) {
- continue;
- }
- if (cap == 0) {
- return true;
- }
- if (mobs == null) {
- mobs = plot.countEntities();
- }
- if (mobs[i] >= cap) {
- plot.setMeta("EntityCount", mobs);
- plot.setMeta("EntityCountTime", System.currentTimeMillis());
- return true;
- }
- }
- if (mobs != null) {
- for (IntegerFlag flag : flags) {
- int i;
- switch (flag.getName()) {
- case "entity-cap":
- i = 0;
- break;
- case "mob-cap":
- i = 3;
- break;
- case "hostile-cap":
- i = 2;
- break;
- case "animal-cap":
- i = 1;
- break;
- case "vehicle-cap":
- i = 4;
- break;
- case "misc-cap":
- i = 5;
- break;
- default:
- i = 0;
- }
- mobs[i]++;
- }
- plot.setMeta("EntityCount", mobs);
- plot.setMeta("EntityCountTime", System.currentTimeMillis());
- }
- return false;
- }
-
- public static boolean checkEntity(Entity entity, Plot plot) {
- if (plot == null || !plot.hasOwner() || plot.getFlags().isEmpty() && plot.getArea().DEFAULT_FLAGS.isEmpty()) {
- return false;
- }
- switch (entity.getType()) {
- case PLAYER:
- return false;
- case LLAMA_SPIT:
- case SMALL_FIREBALL:
- case FIREBALL:
- case DROPPED_ITEM:
- case EGG:
- case THROWN_EXP_BOTTLE:
- case SPLASH_POTION:
- case LINGERING_POTION:
- case SNOWBALL:
- case ENDER_PEARL:
- case ARROW:
- case TIPPED_ARROW:
- case SPECTRAL_ARROW:
- case SHULKER_BULLET:
- case DRAGON_FIREBALL:
- // projectile
- case PRIMED_TNT:
- case FALLING_BLOCK:
- // Block entities
- case ENDER_CRYSTAL:
- case COMPLEX_PART:
- case FISHING_HOOK:
- case ENDER_SIGNAL:
- case EXPERIENCE_ORB:
- case LEASH_HITCH:
- case FIREWORK:
- case WEATHER:
- case AREA_EFFECT_CLOUD:
- case LIGHTNING:
- case WITHER_SKULL:
- case EVOKER_FANGS:
- case UNKNOWN:
- // non moving / unmovable
- return checkEntity(plot, Flags.ENTITY_CAP);
- case ITEM_FRAME:
- case PAINTING:
- case ARMOR_STAND:
- return checkEntity(plot, Flags.ENTITY_CAP, Flags.MISC_CAP);
- // misc
- case MINECART:
- case MINECART_CHEST:
- case MINECART_COMMAND:
- case MINECART_FURNACE:
- case MINECART_HOPPER:
- case MINECART_MOB_SPAWNER:
- case MINECART_TNT:
- case BOAT:
- return checkEntity(plot, Flags.ENTITY_CAP, Flags.VEHICLE_CAP);
- case POLAR_BEAR:
- case RABBIT:
- case SHEEP:
- case MUSHROOM_COW:
- case OCELOT:
- case PIG:
- case SQUID:
- case VILLAGER:
- case IRON_GOLEM:
- case WOLF:
- case CHICKEN:
- case COW:
- case SNOWMAN:
- case BAT:
- case HORSE:
- case DONKEY:
- case LLAMA:
- case MULE:
- case ZOMBIE_HORSE:
- case SKELETON_HORSE:
- // animal
- return checkEntity(plot, Flags.ENTITY_CAP, Flags.MOB_CAP, Flags.ANIMAL_CAP);
- case BLAZE:
- case CAVE_SPIDER:
- case CREEPER:
- case ENDERMAN:
- case ENDERMITE:
- case ENDER_DRAGON:
- case GHAST:
- case GIANT:
- case GUARDIAN:
- case MAGMA_CUBE:
- case PIG_ZOMBIE:
- case SILVERFISH:
- case SKELETON:
- case SLIME:
- case SPIDER:
- case WITCH:
- case WITHER:
- case ZOMBIE:
- case SHULKER:
- case HUSK:
- case STRAY:
- case ELDER_GUARDIAN:
- case WITHER_SKELETON:
- case VINDICATOR:
- case EVOKER:
- case VEX:
- case ZOMBIE_VILLAGER:
- // monster
- return checkEntity(plot, Flags.ENTITY_CAP, Flags.MOB_CAP, Flags.HOSTILE_CAP);
- default:
- if (entity instanceof LivingEntity) {
- if (entity instanceof Animals) {
- return checkEntity(plot, Flags.ENTITY_CAP, Flags.MOB_CAP, Flags.ANIMAL_CAP);
- } else if (entity instanceof Monster) {
- return checkEntity(plot, Flags.ENTITY_CAP, Flags.MOB_CAP, Flags.HOSTILE_CAP);
- } else {
- return checkEntity(plot, Flags.ENTITY_CAP, Flags.MOB_CAP);
- }
- }
- if (entity instanceof Vehicle) {
- return checkEntity(plot, Flags.ENTITY_CAP, Flags.VEHICLE_CAP);
- }
- if (entity instanceof Hanging) {
- return checkEntity(plot, Flags.ENTITY_CAP, Flags.MISC_CAP);
- }
- return checkEntity(plot, Flags.ENTITY_CAP);
- }
- }
-
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockBurn(BlockBurnEvent event) {
Block b = event.getBlock();
@@ -1942,7 +2110,8 @@ public class PlayerEvents extends PlotListener implements Listener {
}
} else if (!plot.hasOwner()) {
if (!Permissions.hasPermission(pp, C.PERMISSION_ADMIN_BUILD_UNOWNED)) {
- MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_BUILD_UNOWNED);
+ MainUtil
+ .sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_BUILD_UNOWNED);
event.setCancelled(true);
}
} else if (!plot.isAdded(pp.getUUID())) {
@@ -1959,7 +2128,7 @@ public class PlayerEvents extends PlotListener implements Listener {
return;
}
if (ignitingEntity != null) {
- if (!plot.getFlag(Flags.BLOCK_IGNITION,false)) {
+ if (!plot.getFlag(Flags.BLOCK_IGNITION, false)) {
event.setCancelled(true);
return;
}
@@ -1971,7 +2140,8 @@ public class PlayerEvents extends PlotListener implements Listener {
Entity shooter = (Entity) fireball.getShooter();
location = BukkitUtil.getLocation(shooter.getLocation());
} else if (fireball.getShooter() instanceof BlockProjectileSource) {
- Block shooter = ((BlockProjectileSource) fireball.getShooter()).getBlock();
+ Block shooter =
+ ((BlockProjectileSource) fireball.getShooter()).getBlock();
location = BukkitUtil.getLocation(shooter.getLocation());
}
if (location != null && !plot.equals(location.getPlot())) {
@@ -1983,10 +2153,13 @@ public class PlayerEvents extends PlotListener implements Listener {
} else if (event.getIgnitingBlock() != null) {
Block ignitingBlock = event.getIgnitingBlock();
Plot plotIgnited = BukkitUtil.getLocation(ignitingBlock.getLocation()).getPlot();
- if (igniteCause == BlockIgniteEvent.IgniteCause.FLINT_AND_STEEL && (!plot.getFlag(Flags.BLOCK_IGNITION,false)
- || plotIgnited == null || !plotIgnited.equals(plot))
- || (igniteCause == BlockIgniteEvent.IgniteCause.SPREAD || igniteCause == BlockIgniteEvent.IgniteCause.LAVA) && (
- !plot.getFlag(Flags.BLOCK_IGNITION).or(false) || plotIgnited == null || !plotIgnited.equals(plot))) {
+ if (igniteCause == BlockIgniteEvent.IgniteCause.FLINT_AND_STEEL && (
+ !plot.getFlag(Flags.BLOCK_IGNITION, false) || plotIgnited == null
+ || !plotIgnited.equals(plot)) ||
+ (igniteCause == BlockIgniteEvent.IgniteCause.SPREAD
+ || igniteCause == BlockIgniteEvent.IgniteCause.LAVA) && (
+ !plot.getFlag(Flags.BLOCK_IGNITION).or(false) || plotIgnited == null
+ || !plotIgnited.equals(plot))) {
event.setCancelled(true);
}
}
@@ -1996,7 +2169,9 @@ public class PlayerEvents extends PlotListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBucketEmpty(PlayerBucketEmptyEvent event) {
BlockFace bf = event.getBlockFace();
- Block b = event.getBlockClicked().getLocation().add(bf.getModX(), bf.getModY(), bf.getModZ()).getBlock();
+ Block b =
+ event.getBlockClicked().getLocation().add(bf.getModX(), bf.getModY(), bf.getModZ())
+ .getBlock();
Location location = BukkitUtil.getLocation(b.getLocation());
PlotArea area = location.getPlotArea();
if (area == null) {
@@ -2028,23 +2203,6 @@ public class PlayerEvents extends PlotListener implements Listener {
}
}
- @EventHandler(priority = EventPriority.HIGHEST)
- public void onInventoryClick(InventoryClickEvent event) {
- HumanEntity clicker = event.getWhoClicked();
- if (!(clicker instanceof Player)) {
- return;
- }
- Player player = (Player) clicker;
- PlotPlayer pp = BukkitUtil.getPlayer(player);
- PlotInventory inventory = pp.getMeta("inventory");
- if (inventory != null && event.getRawSlot() == event.getSlot()) {
- if (!inventory.onClick(event.getSlot())) {
- event.setCancelled(true);
- inventory.close();
- }
- }
- }
-
@EventHandler(priority = EventPriority.HIGHEST)
public void onInventoryClose(InventoryCloseEvent event) {
HumanEntity closer = event.getPlayer();
@@ -2055,8 +2213,7 @@ public class PlayerEvents extends PlotListener implements Listener {
BukkitUtil.getPlayer(player).deleteMeta("inventory");
}
- @EventHandler(priority = EventPriority.MONITOR)
- public void onLeave(PlayerQuitEvent event) {
+ @EventHandler(priority = EventPriority.MONITOR) public void onLeave(PlayerQuitEvent event) {
if (TaskManager.TELEPORT_QUEUE.contains(event.getPlayer().getName())) {
TaskManager.TELEPORT_QUEUE.remove(event.getPlayer().getName());
}
@@ -2085,12 +2242,13 @@ public class PlayerEvents extends PlotListener implements Listener {
if (Permissions.hasPermission(plotPlayer, C.PERMISSION_ADMIN_BUILD_UNOWNED)) {
return;
}
- MainUtil.sendMessage(plotPlayer, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_BUILD_UNOWNED);
+ MainUtil
+ .sendMessage(plotPlayer, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_BUILD_UNOWNED);
event.setCancelled(true);
} else if (!plot.isAdded(plotPlayer.getUUID())) {
Optional> use = plot.getFlag(Flags.USE);
Block block = event.getBlockClicked();
- if (use.isPresent() && use.get().contains(PlotBlock.get(block.getTypeId(), block.getData()))) {
+ if (use.isPresent() && use.get().contains(PlotBlock.get(block.getType().name()))) {
return;
}
if (Permissions.hasPermission(plotPlayer, C.PERMISSION_ADMIN_BUILD_OTHER)) {
@@ -2115,7 +2273,8 @@ public class PlayerEvents extends PlotListener implements Listener {
return;
}
if (Settings.Enabled_Components.KILL_ROAD_VEHICLES) {
- entity.setMetadata("plot", new FixedMetadataValue((Plugin) PS.get().IMP, plot));
+ entity
+ .setMetadata("plot", new FixedMetadataValue((Plugin) PlotSquared.get().IMP, plot));
}
}
@@ -2138,15 +2297,17 @@ public class PlayerEvents extends PlotListener implements Listener {
} else {
if (!plot.hasOwner()) {
if (!Permissions.hasPermission(pp, C.PERMISSION_ADMIN_BUILD_UNOWNED)) {
- MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_BUILD_UNOWNED);
+ MainUtil
+ .sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_BUILD_UNOWNED);
event.setCancelled(true);
}
return;
}
if (!plot.isAdded(pp.getUUID())) {
- if (!plot.getFlag(Flags.HANGING_PLACE,false)) {
+ if (!plot.getFlag(Flags.HANGING_PLACE, false)) {
if (!Permissions.hasPermission(pp, C.PERMISSION_ADMIN_BUILD_OTHER)) {
- MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_BUILD_OTHER);
+ MainUtil
+ .sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_BUILD_OTHER);
event.setCancelled(true);
}
return;
@@ -2173,12 +2334,14 @@ public class PlayerEvents extends PlotListener implements Listener {
Plot plot = area.getPlot(location);
if (plot == null) {
if (!Permissions.hasPermission(pp, C.PERMISSION_ADMIN_DESTROY_ROAD)) {
- MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_DESTROY_ROAD);
+ MainUtil
+ .sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_DESTROY_ROAD);
event.setCancelled(true);
}
} else if (!plot.hasOwner()) {
if (!Permissions.hasPermission(pp, C.PERMISSION_ADMIN_DESTROY_UNOWNED)) {
- MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_DESTROY_UNOWNED);
+ MainUtil
+ .sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_DESTROY_UNOWNED);
event.setCancelled(true);
}
} else if (!plot.isAdded(pp.getUUID())) {
@@ -2186,7 +2349,8 @@ public class PlayerEvents extends PlotListener implements Listener {
return;
}
if (!Permissions.hasPermission(pp, C.PERMISSION_ADMIN_DESTROY_OTHER)) {
- MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_DESTROY_OTHER);
+ MainUtil
+ .sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_DESTROY_OTHER);
event.setCancelled(true);
}
}
@@ -2203,14 +2367,18 @@ public class PlayerEvents extends PlotListener implements Listener {
Plot plot = area.getPlot(BukkitUtil.getLocation(event.getEntity()));
if (plot != null) {
if (!plot.hasOwner()) {
- if (!Permissions.hasPermission(player, C.PERMISSION_ADMIN_DESTROY_UNOWNED)) {
- MainUtil.sendMessage(player, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_DESTROY_UNOWNED);
+ if (!Permissions
+ .hasPermission(player, C.PERMISSION_ADMIN_DESTROY_UNOWNED)) {
+ MainUtil.sendMessage(player, C.NO_PERMISSION_EVENT,
+ C.PERMISSION_ADMIN_DESTROY_UNOWNED);
event.setCancelled(true);
}
} else if (!plot.isAdded(player.getUUID())) {
if (!plot.getFlag(Flags.HANGING_BREAK, false)) {
- if (!Permissions.hasPermission(player, C.PERMISSION_ADMIN_DESTROY_OTHER)) {
- MainUtil.sendMessage(player, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_DESTROY_OTHER);
+ if (!Permissions
+ .hasPermission(player, C.PERMISSION_ADMIN_DESTROY_OTHER)) {
+ MainUtil.sendMessage(player, C.NO_PERMISSION_EVENT,
+ C.PERMISSION_ADMIN_DESTROY_OTHER);
event.setCancelled(true);
}
}
@@ -2239,7 +2407,8 @@ public class PlayerEvents extends PlotListener implements Listener {
}
} else if (!plot.hasOwner()) {
if (!Permissions.hasPermission(pp, C.PERMISSION_ADMIN_INTERACT_UNOWNED)) {
- MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_INTERACT_UNOWNED);
+ MainUtil
+ .sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_INTERACT_UNOWNED);
event.setCancelled(true);
}
} else if (!plot.isAdded(pp.getUUID())) {
@@ -2250,7 +2419,8 @@ public class PlayerEvents extends PlotListener implements Listener {
if (entity instanceof Animals && plot.getFlag(Flags.ANIMAL_INTERACT, false)) {
return;
}
- if (entity instanceof Tameable && ((Tameable) entity).isTamed() && plot.getFlag(Flags.TAMED_INTERACT, false)) {
+ if (entity instanceof Tameable && ((Tameable) entity).isTamed() && plot
+ .getFlag(Flags.TAMED_INTERACT, false)) {
return;
}
if (entity instanceof Vehicle && plot.getFlag(Flags.VEHICLE_USE, false)) {
@@ -2286,13 +2456,15 @@ public class PlayerEvents extends PlotListener implements Listener {
Plot plot = area.getPlot(l);
if (plot == null) {
if (!Permissions.hasPermission(pp, "plots.admin.vehicle.break.road")) {
- MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, "plots.admin.vehicle.break.road");
+ MainUtil
+ .sendMessage(pp, C.NO_PERMISSION_EVENT, "plots.admin.vehicle.break.road");
event.setCancelled(true);
}
} else {
if (!plot.hasOwner()) {
if (!Permissions.hasPermission(pp, "plots.admin.vehicle.break.unowned")) {
- MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, "plots.admin.vehicle.break.unowned");
+ MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT,
+ "plots.admin.vehicle.break.unowned");
event.setCancelled(true);
return;
}
@@ -2303,7 +2475,8 @@ public class PlayerEvents extends PlotListener implements Listener {
return;
}
if (!Permissions.hasPermission(pp, "plots.admin.vehicle.break.other")) {
- MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, "plots.admin.vehicle.break.other");
+ MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT,
+ "plots.admin.vehicle.break.other");
event.setCancelled(true);
}
}
@@ -2315,7 +2488,7 @@ public class PlayerEvents extends PlotListener implements Listener {
public void onPotionSplash(PotionSplashEvent event) {
ThrownPotion damager = event.getPotion();
Location l = BukkitUtil.getLocation(damager);
- if (!PS.get().hasPlotArea(l.getWorld())) {
+ if (!PlotSquared.get().hasPlotArea(l.getWorld())) {
return;
}
int count = 0;
@@ -2330,26 +2503,11 @@ public class PlayerEvents extends PlotListener implements Listener {
}
}
- @SuppressWarnings("deprecation")
- @EventHandler(priority = EventPriority.HIGHEST)
+ @SuppressWarnings("deprecation") @EventHandler(priority = EventPriority.HIGHEST)
public void onEntityCombustByEntity(EntityCombustByEntityEvent event) {
EntityDamageByEntityEvent eventChange = null;
- if (PS.get().checkVersion(PS.get().IMP.getServerVersion(), BukkitVersion.v1_11_0)) {
- eventChange = new EntityDamageByEntityEvent(event.getCombuster(), event.getEntity(),
- EntityDamageEvent.DamageCause.FIRE_TICK, (double)event.getDuration());
- } else {
- try {
- Constructor constructor = EntityDamageByEntityEvent.class.getConstructor(Entity.class,
- Entity.class, EntityDamageEvent.DamageCause.class, Integer.TYPE);
- eventChange = constructor.newInstance(event.getCombuster(), event.getEntity(),
- EntityDamageEvent.DamageCause.FIRE_TICK, event.getDuration());
- } catch (NoSuchMethodException | IllegalAccessException | InstantiationException | InvocationTargetException e) {
- e.printStackTrace();
- }
- }
- if (eventChange == null) {
- return;
- }
+ eventChange = new EntityDamageByEntityEvent(event.getCombuster(), event.getEntity(),
+ EntityDamageEvent.DamageCause.FIRE_TICK, (double) event.getDuration());
onEntityDamageByEntityEvent(eventChange);
if (eventChange.isCancelled()) {
event.setCancelled(true);
@@ -2360,7 +2518,7 @@ public class PlayerEvents extends PlotListener implements Listener {
public void onEntityDamageByEntityEvent(EntityDamageByEntityEvent event) {
Entity damager = event.getDamager();
Location l = BukkitUtil.getLocation(damager);
- if (!PS.get().hasPlotArea(l.getWorld())) {
+ if (!PlotSquared.get().hasPlotArea(l.getWorld())) {
return;
}
Entity victim = event.getEntity();
@@ -2382,7 +2540,8 @@ public class PlayerEvents extends PlotListener implements Listener {
Location dloc = BukkitUtil.getLocation(damager);
Location vloc = BukkitUtil.getLocation(victim);
PlotArea dArea = dloc.getPlotArea();
- PlotArea vArea = dArea != null && dArea.contains(vloc.getX(), vloc.getZ()) ? dArea : vloc.getPlotArea();
+ PlotArea vArea =
+ dArea != null && dArea.contains(vloc.getX(), vloc.getZ()) ? dArea : vloc.getPlotArea();
if (dArea == null && vArea == null) {
return true;
}
@@ -2438,7 +2597,8 @@ public class PlayerEvents extends PlotListener implements Listener {
player = (Player) shooter;
} else { // shooter is not player
if (shooter instanceof BlockProjectileSource) {
- Location sLoc = BukkitUtil.getLocation(((BlockProjectileSource) shooter).getBlock().getLocation());
+ Location sLoc = BukkitUtil
+ .getLocation(((BlockProjectileSource) shooter).getBlock().getLocation());
dplot = dArea.getPlot(sLoc);
}
player = null;
@@ -2449,76 +2609,92 @@ public class PlayerEvents extends PlotListener implements Listener {
if (player != null) {
PlotPlayer plotPlayer = BukkitUtil.getPlayer(player);
if (victim instanceof Hanging) { // hanging
- if (plot != null && (plot.getFlag(Flags.HANGING_BREAK, false) || plot.isAdded(plotPlayer.getUUID()))) {
+ if (plot != null && (plot.getFlag(Flags.HANGING_BREAK, false) || plot
+ .isAdded(plotPlayer.getUUID()))) {
return true;
}
if (!Permissions.hasPermission(plotPlayer, "plots.admin.destroy." + stub)) {
- MainUtil.sendMessage(plotPlayer, C.NO_PERMISSION_EVENT, "plots.admin.destroy." + stub);
+ MainUtil.sendMessage(plotPlayer, C.NO_PERMISSION_EVENT,
+ "plots.admin.destroy." + stub);
return false;
}
} else if (victim.getEntityId() == 30) {
- if (plot != null && (plot.getFlag(Flags.MISC_BREAK, false) || plot.isAdded(plotPlayer.getUUID()))) {
+ if (plot != null && (plot.getFlag(Flags.MISC_BREAK, false) || plot
+ .isAdded(plotPlayer.getUUID()))) {
return true;
}
if (!Permissions.hasPermission(plotPlayer, "plots.admin.destroy." + stub)) {
- MainUtil.sendMessage(plotPlayer, C.NO_PERMISSION_EVENT, "plots.admin.destroy." + stub);
+ MainUtil.sendMessage(plotPlayer, C.NO_PERMISSION_EVENT,
+ "plots.admin.destroy." + stub);
return false;
}
- } else if (victim instanceof Monster || victim instanceof EnderDragon) { // victim is monster
- if (plot != null && (plot.getFlag(Flags.HOSTILE_ATTACK, false) || plot.getFlag(Flags.PVE, false) || plot
- .isAdded(plotPlayer.getUUID()))) {
+ } else if (victim instanceof Monster
+ || victim instanceof EnderDragon) { // victim is monster
+ if (plot != null && (plot.getFlag(Flags.HOSTILE_ATTACK, false) || plot
+ .getFlag(Flags.PVE, false) || plot.isAdded(plotPlayer.getUUID()))) {
return true;
}
if (!Permissions.hasPermission(plotPlayer, "plots.admin.pve." + stub)) {
- MainUtil.sendMessage(plotPlayer, C.NO_PERMISSION_EVENT, "plots.admin.pve." + stub);
+ MainUtil
+ .sendMessage(plotPlayer, C.NO_PERMISSION_EVENT, "plots.admin.pve." + stub);
return false;
}
} else if (victim instanceof Tameable) { // victim is tameable
- if (plot != null && (plot.getFlag(Flags.TAMED_ATTACK, false) || plot.getFlag(Flags.PVE, false) || plot.isAdded(plotPlayer.getUUID()))) {
+ if (plot != null && (plot.getFlag(Flags.TAMED_ATTACK, false) || plot
+ .getFlag(Flags.PVE, false) || plot.isAdded(plotPlayer.getUUID()))) {
return true;
}
if (!Permissions.hasPermission(plotPlayer, "plots.admin.pve." + stub)) {
- MainUtil.sendMessage(plotPlayer, C.NO_PERMISSION_EVENT, "plots.admin.pve." + stub);
+ MainUtil
+ .sendMessage(plotPlayer, C.NO_PERMISSION_EVENT, "plots.admin.pve." + stub);
return false;
}
} else if (victim instanceof Player) {
if (plot != null) {
- if (Flags.PVP.isFalse(plot) && !Permissions.hasPermission(plotPlayer, "plots.admin.pvp." + stub)) {
- MainUtil.sendMessage(plotPlayer, C.NO_PERMISSION_EVENT, "plots.admin.pvp." + stub);
+ if (Flags.PVP.isFalse(plot) && !Permissions
+ .hasPermission(plotPlayer, "plots.admin.pvp." + stub)) {
+ MainUtil.sendMessage(plotPlayer, C.NO_PERMISSION_EVENT,
+ "plots.admin.pvp." + stub);
return false;
} else {
return true;
}
}
if (!Permissions.hasPermission(plotPlayer, "plots.admin.pvp." + stub)) {
- MainUtil.sendMessage(plotPlayer, C.NO_PERMISSION_EVENT, "plots.admin.pvp." + stub);
+ MainUtil
+ .sendMessage(plotPlayer, C.NO_PERMISSION_EVENT, "plots.admin.pvp." + stub);
return false;
}
} else if (victim instanceof Creature) { // victim is animal
- if (plot != null && (plot.getFlag(Flags.ANIMAL_ATTACK, false) || plot.getFlag(Flags.PVE, false) || plot
- .isAdded(plotPlayer.getUUID()))) {
+ if (plot != null && (plot.getFlag(Flags.ANIMAL_ATTACK, false) || plot
+ .getFlag(Flags.PVE, false) || plot.isAdded(plotPlayer.getUUID()))) {
return true;
}
if (!Permissions.hasPermission(plotPlayer, "plots.admin.pve." + stub)) {
- MainUtil.sendMessage(plotPlayer, C.NO_PERMISSION_EVENT, "plots.admin.pve." + stub);
+ MainUtil
+ .sendMessage(plotPlayer, C.NO_PERMISSION_EVENT, "plots.admin.pve." + stub);
return false;
}
} else if (victim instanceof Vehicle) { // Vehicles are managed in vehicle destroy event
return true;
} else { // victim is something else
- if (plot != null && (plot.getFlag(Flags.PVE, false) || plot.isAdded(plotPlayer.getUUID()))) {
+ if (plot != null && (plot.getFlag(Flags.PVE, false) || plot
+ .isAdded(plotPlayer.getUUID()))) {
return true;
}
if (!Permissions.hasPermission(plotPlayer, "plots.admin.pve." + stub)) {
- MainUtil.sendMessage(plotPlayer, C.NO_PERMISSION_EVENT, "plots.admin.pve." + stub);
+ MainUtil
+ .sendMessage(plotPlayer, C.NO_PERMISSION_EVENT, "plots.admin.pve." + stub);
return false;
}
}
return true;
- } else if (dplot != null && (!(dplot.equals(vplot)) || (vplot != null && Objects.equals(dplot.owner, vplot.owner)))) {
+ } else if (dplot != null && (!dplot.equals(vplot) || Objects
+ .equals(dplot.guessOwner(), vplot.guessOwner()))) {
return vplot != null && Flags.PVE.isTrue(vplot);
}
- return ((vplot != null && Flags.PVE.isTrue(vplot)) || !(damager instanceof Arrow && !(victim instanceof Creature)));
+ return ((vplot != null && Flags.PVE.isTrue(vplot)) || !(damager instanceof Arrow
+ && !(victim instanceof Creature)));
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
@@ -2533,17 +2709,20 @@ public class PlayerEvents extends PlotListener implements Listener {
Plot plot = area.getPlot(l);
if (plot == null) {
if (!Permissions.hasPermission(plotPlayer, "plots.admin.projectile.road")) {
- MainUtil.sendMessage(plotPlayer, C.NO_PERMISSION_EVENT, "plots.admin.projectile.road");
+ MainUtil
+ .sendMessage(plotPlayer, C.NO_PERMISSION_EVENT, "plots.admin.projectile.road");
event.setHatching(false);
}
} else if (!plot.hasOwner()) {
if (!Permissions.hasPermission(plotPlayer, "plots.admin.projectile.unowned")) {
- MainUtil.sendMessage(plotPlayer, C.NO_PERMISSION_EVENT, "plots.admin.projectile.unowned");
+ MainUtil.sendMessage(plotPlayer, C.NO_PERMISSION_EVENT,
+ "plots.admin.projectile.unowned");
event.setHatching(false);
}
} else if (!plot.isAdded(plotPlayer.getUUID())) {
if (!Permissions.hasPermission(plotPlayer, "plots.admin.projectile.other")) {
- MainUtil.sendMessage(plotPlayer, C.NO_PERMISSION_EVENT, "plots.admin.projectile.other");
+ MainUtil
+ .sendMessage(plotPlayer, C.NO_PERMISSION_EVENT, "plots.admin.projectile.other");
event.setHatching(false);
}
}
@@ -2560,14 +2739,16 @@ public class PlayerEvents extends PlotListener implements Listener {
PlotPlayer pp = BukkitUtil.getPlayer(player);
Plot plot = area.getPlot(location);
if (plot != null) {
- if ((location.getY() > area.MAX_BUILD_HEIGHT || location.getY() < area.MIN_BUILD_HEIGHT) && !Permissions
- .hasPermission(pp, C.PERMISSION_ADMIN_BUILD_HEIGHTLIMIT)) {
+ if ((location.getY() > area.MAX_BUILD_HEIGHT || location.getY() < area.MIN_BUILD_HEIGHT)
+ && !Permissions.hasPermission(pp, C.PERMISSION_ADMIN_BUILD_HEIGHTLIMIT)) {
event.setCancelled(true);
- MainUtil.sendMessage(pp, C.HEIGHT_LIMIT.s().replace("{limit}", String.valueOf(area.MAX_BUILD_HEIGHT)));
+ MainUtil.sendMessage(pp,
+ C.HEIGHT_LIMIT.s().replace("{limit}", String.valueOf(area.MAX_BUILD_HEIGHT)));
}
if (!plot.hasOwner()) {
if (!Permissions.hasPermission(pp, C.PERMISSION_ADMIN_BUILD_UNOWNED)) {
- MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_BUILD_UNOWNED);
+ MainUtil
+ .sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_BUILD_UNOWNED);
event.setCancelled(true);
return;
}
@@ -2575,7 +2756,7 @@ public class PlayerEvents extends PlotListener implements Listener {
Set place = plot.getFlag(Flags.PLACE, null);
if (place != null) {
Block block = event.getBlock();
- if (place.contains(PlotBlock.get((short) block.getTypeId(), block.getData()))) {
+ if (place.contains(PlotBlock.get(block.getType().name()))) {
return;
}
}
@@ -2594,7 +2775,7 @@ public class PlayerEvents extends PlotListener implements Listener {
if (plot.getFlag(Flags.DISABLE_PHYSICS, false)) {
Block block = event.getBlockPlaced();
if (block.getType().hasGravity()) {
- sendBlockChange(block.getLocation(), block.getType(), block.getData());
+ sendBlockChange(block.getLocation(), block.getBlockData());
}
}
} else if (!Permissions.hasPermission(pp, C.PERMISSION_ADMIN_BUILD_ROAD)) {
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/listeners/PlotPlusListener.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/listeners/PlotPlusListener.java
similarity index 62%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/listeners/PlotPlusListener.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/listeners/PlotPlusListener.java
index 7b9d43100..afabd8250 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/listeners/PlotPlusListener.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/listeners/PlotPlusListener.java
@@ -1,21 +1,18 @@
-package com.plotsquared.bukkit.listeners;
+package com.github.intellectualsites.plotsquared.bukkit.listeners;
+import com.github.intellectualsites.plotsquared.bukkit.events.PlayerEnterPlotEvent;
+import com.github.intellectualsites.plotsquared.bukkit.events.PlayerLeavePlotEvent;
+import com.github.intellectualsites.plotsquared.bukkit.util.BukkitUtil;
+import com.github.intellectualsites.plotsquared.plot.flag.Flags;
+import com.github.intellectualsites.plotsquared.plot.listener.PlotListener;
+import com.github.intellectualsites.plotsquared.plot.object.Plot;
+import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer;
import com.google.common.base.Optional;
-import com.intellectualcrafters.plot.flag.Flags;
-import com.intellectualcrafters.plot.object.Plot;
-import com.intellectualcrafters.plot.object.PlotPlayer;
-import com.plotsquared.bukkit.events.PlayerEnterPlotEvent;
-import com.plotsquared.bukkit.events.PlayerLeavePlotEvent;
-import com.plotsquared.bukkit.util.BukkitUtil;
-import com.plotsquared.listener.PlotListener;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map.Entry;
-import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.block.Block;
import org.bukkit.entity.EntityType;
+import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
@@ -23,22 +20,28 @@ import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockDamageEvent;
import org.bukkit.event.entity.EntityDamageEvent;
+import org.bukkit.event.entity.EntityPickupItemEvent;
import org.bukkit.event.player.PlayerDropItemEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.java.JavaPlugin;
-public class PlotPlusListener extends PlotListener implements Listener {
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map.Entry;
+import java.util.UUID;
- private static final HashMap feedRunnable = new HashMap<>();
- private static final HashMap healRunnable = new HashMap<>();
+@SuppressWarnings("unused") public class PlotPlusListener extends PlotListener implements Listener {
+
+ private static final HashMap feedRunnable = new HashMap<>();
+ private static final HashMap healRunnable = new HashMap<>();
public static void startRunnable(JavaPlugin plugin) {
plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
- @Override
- public void run() {
+ @Override public void run() {
if (!healRunnable.isEmpty()) {
- for (Iterator> iterator = healRunnable.entrySet().iterator(); iterator.hasNext(); ) {
- Entry entry = iterator.next();
+ for (Iterator> iterator =
+ healRunnable.entrySet().iterator(); iterator.hasNext(); ) {
+ Entry entry = iterator.next();
Interval value = entry.getValue();
++value.count;
if (value.count == value.interval) {
@@ -56,8 +59,9 @@ public class PlotPlusListener extends PlotListener implements Listener {
}
}
if (!feedRunnable.isEmpty()) {
- for (Iterator> iterator = feedRunnable.entrySet().iterator(); iterator.hasNext(); ) {
- Entry entry = iterator.next();
+ for (Iterator> iterator =
+ feedRunnable.entrySet().iterator(); iterator.hasNext(); ) {
+ Entry entry = iterator.next();
Interval value = entry.getValue();
++value.count;
if (value.count == value.interval) {
@@ -78,8 +82,7 @@ public class PlotPlusListener extends PlotListener implements Listener {
}, 0L, 20L);
}
- @EventHandler(priority = EventPriority.HIGH)
- public void onInteract(BlockDamageEvent event) {
+ @EventHandler(priority = EventPriority.HIGH) public void onInteract(BlockDamageEvent event) {
Player player = event.getPlayer();
if (player.getGameMode() != GameMode.SURVIVAL) {
return;
@@ -97,9 +100,8 @@ public class PlotPlusListener extends PlotListener implements Listener {
}
}
}
-
- @EventHandler(priority = EventPriority.HIGH)
- public void onDamage(EntityDamageEvent event) {
+
+ @EventHandler(priority = EventPriority.HIGH) public void onDamage(EntityDamageEvent event) {
if (event.getEntityType() != EntityType.PLAYER) {
return;
}
@@ -112,9 +114,8 @@ public class PlotPlusListener extends PlotListener implements Listener {
event.setCancelled(true);
}
}
-
- @EventHandler
- public void onItemDrop(PlayerDropItemEvent event) {
+
+ @EventHandler public void onItemDrop(PlayerDropItemEvent event) {
Player player = event.getPlayer();
PlotPlayer pp = BukkitUtil.getPlayer(player);
Plot plot = BukkitUtil.getLocation(player).getOwnedPlot();
@@ -128,42 +129,53 @@ public class PlotPlusListener extends PlotListener implements Listener {
}
}
}
-
- @EventHandler
- public void onPlotEnter(PlayerEnterPlotEvent event) {
+
+ @EventHandler public void onPlotEnter(PlayerEnterPlotEvent event) {
Player player = event.getPlayer();
Plot plot = event.getPlot();
Optional feed = plot.getFlag(Flags.FEED);
if (feed.isPresent()) {
Integer[] value = feed.get();
- feedRunnable.put(player.getName(), new Interval(value[0], value[1], 20));
+ feedRunnable.put(player.getUniqueId(), new Interval(value[0], value[1], 20));
}
Optional heal = plot.getFlag(Flags.HEAL);
if (heal.isPresent()) {
Integer[] value = heal.get();
- healRunnable.put(player.getName(), new Interval(value[0], value[1], 20));
+ healRunnable.put(player.getUniqueId(), new Interval(value[0], value[1], 20));
}
}
-
- @EventHandler
- public void onPlayerQuit(PlayerQuitEvent event) {
+
+ @EventHandler public void onPlayerQuit(PlayerQuitEvent event) {
Player player = event.getPlayer();
- String name = player.getName();
- feedRunnable.remove(name);
- healRunnable.remove(name);
+ feedRunnable.remove(player.getUniqueId());
+ healRunnable.remove(player.getUniqueId());
}
-
- @EventHandler
- public void onPlotLeave(PlayerLeavePlotEvent event) {
+
+ @EventHandler public void onPlotLeave(PlayerLeavePlotEvent event) {
Player leaver = event.getPlayer();
Plot plot = event.getPlot();
if (!plot.hasOwner()) {
return;
}
BukkitUtil.getPlayer(leaver);
- String name = leaver.getName();
- feedRunnable.remove(name);
- healRunnable.remove(name);
+ feedRunnable.remove(leaver.getUniqueId());
+ healRunnable.remove(leaver.getUniqueId());
+ }
+
+ @EventHandler public void onItemPickup(EntityPickupItemEvent event) {
+ LivingEntity ent = event.getEntity();
+ if (ent instanceof Player) {
+ Player player = (Player) ent;
+ PlotPlayer pp = BukkitUtil.getPlayer(player);
+ Plot plot = BukkitUtil.getLocation(player).getOwnedPlot();
+ if (plot == null) {
+ return;
+ }
+ UUID uuid = pp.getUUID();
+ if (!plot.isAdded(uuid) && Flags.DROP_PROTECTION.isTrue(plot)) {
+ event.setCancelled(true);
+ }
+ }
}
private static class Interval {
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/listeners/SingleWorldListener.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/listeners/SingleWorldListener.java
similarity index 64%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/listeners/SingleWorldListener.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/listeners/SingleWorldListener.java
index 146d30f53..6a3e26d59 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/listeners/SingleWorldListener.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/listeners/SingleWorldListener.java
@@ -1,11 +1,9 @@
-package com.plotsquared.bukkit.listeners;
+package com.github.intellectualsites.plotsquared.bukkit.listeners;
-import com.intellectualcrafters.plot.PS;
-import com.intellectualcrafters.plot.object.worlds.PlotAreaManager;
-import com.intellectualcrafters.plot.object.worlds.SinglePlotAreaManager;
-import com.intellectualcrafters.plot.util.ReflectionUtils;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
+import com.github.intellectualsites.plotsquared.plot.PlotSquared;
+import com.github.intellectualsites.plotsquared.plot.object.worlds.PlotAreaManager;
+import com.github.intellectualsites.plotsquared.plot.object.worlds.SinglePlotAreaManager;
+import com.github.intellectualsites.plotsquared.plot.util.ReflectionUtils;
import org.bukkit.Bukkit;
import org.bukkit.Chunk;
import org.bukkit.World;
@@ -16,10 +14,12 @@ import org.bukkit.event.world.ChunkEvent;
import org.bukkit.event.world.ChunkLoadEvent;
import org.bukkit.plugin.Plugin;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
-import static com.intellectualcrafters.plot.util.ReflectionUtils.getRefClass;
+import static com.github.intellectualsites.plotsquared.plot.util.ReflectionUtils.getRefClass;
-public class SingleWorldListener implements Listener {
+@SuppressWarnings("unused") public class SingleWorldListener implements Listener {
private Method methodGetHandleChunk;
private Field mustSave, done, lit, s;
@@ -42,10 +42,14 @@ public class SingleWorldListener implements Listener {
public void markChunkAsClean(Chunk chunk) {
try {
Object nmsChunk = methodGetHandleChunk.invoke(chunk);
- if (done != null) this.done.set(nmsChunk, true);
- if (mustSave != null) this.mustSave.set(nmsChunk, false);
- if (lit != null) this.lit.set(nmsChunk, false);
- if (s != null) this.s.set(nmsChunk, false);
+ if (done != null)
+ this.done.set(nmsChunk, true);
+ if (mustSave != null)
+ this.mustSave.set(nmsChunk, false);
+ if (lit != null)
+ this.lit.set(nmsChunk, false);
+ if (s != null)
+ this.s.set(nmsChunk, false);
} catch (Throwable e) {
e.printStackTrace();
}
@@ -54,20 +58,21 @@ public class SingleWorldListener implements Listener {
private void handle(ChunkEvent event) {
World world = event.getWorld();
String name = world.getName();
- PlotAreaManager man = PS.get().getPlotAreaManager();
- if (!(man instanceof SinglePlotAreaManager)) return;
- if (!isPlotId(name)) return;
+ PlotAreaManager man = PlotSquared.get().getPlotAreaManager();
+ if (!(man instanceof SinglePlotAreaManager))
+ return;
+ if (!isPlotId(name))
+ return;
markChunkAsClean(event.getChunk());
}
-// @EventHandler
-// public void onPopulate(ChunkPopulateEvent event) {
-// handle(event);
-// }
+ // @EventHandler
+ // public void onPopulate(ChunkPopulateEvent event) {
+ // handle(event);
+ // }
- @EventHandler(priority = EventPriority.LOWEST)
- public void onChunkLoad(ChunkLoadEvent event) {
+ @EventHandler(priority = EventPriority.LOWEST) public void onChunkLoad(ChunkLoadEvent event) {
handle(event);
}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/listeners/WorldEvents.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/listeners/WorldEvents.java
similarity index 51%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/listeners/WorldEvents.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/listeners/WorldEvents.java
index 1e80cc19b..98d6c0f5a 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/listeners/WorldEvents.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/listeners/WorldEvents.java
@@ -1,10 +1,10 @@
-package com.plotsquared.bukkit.listeners;
+package com.github.intellectualsites.plotsquared.bukkit.listeners;
-import com.intellectualcrafters.plot.PS;
-import com.intellectualcrafters.plot.generator.GeneratorWrapper;
-import com.intellectualcrafters.plot.object.worlds.PlotAreaManager;
-import com.intellectualcrafters.plot.object.worlds.SinglePlotAreaManager;
-import com.plotsquared.bukkit.generator.BukkitPlotGenerator;
+import com.github.intellectualsites.plotsquared.bukkit.generator.BukkitPlotGenerator;
+import com.github.intellectualsites.plotsquared.plot.PlotSquared;
+import com.github.intellectualsites.plotsquared.plot.generator.GeneratorWrapper;
+import com.github.intellectualsites.plotsquared.plot.object.worlds.PlotAreaManager;
+import com.github.intellectualsites.plotsquared.plot.object.worlds.SinglePlotAreaManager;
import org.bukkit.World;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
@@ -12,13 +12,13 @@ import org.bukkit.event.Listener;
import org.bukkit.event.world.WorldInitEvent;
import org.bukkit.generator.ChunkGenerator;
-public class WorldEvents implements Listener {
-
+@SuppressWarnings("unused") public class WorldEvents implements Listener {
+
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onWorldInit(WorldInitEvent event) {
World world = event.getWorld();
String name = world.getName();
- PlotAreaManager manager = PS.get().getPlotAreaManager();
+ PlotAreaManager manager = PlotSquared.get().getPlotAreaManager();
if (manager instanceof SinglePlotAreaManager) {
SinglePlotAreaManager single = (SinglePlotAreaManager) manager;
if (single.isWorld(name)) {
@@ -28,9 +28,9 @@ public class WorldEvents implements Listener {
}
ChunkGenerator gen = world.getGenerator();
if (gen instanceof GeneratorWrapper) {
- PS.get().loadWorld(name, (GeneratorWrapper>) gen);
+ PlotSquared.get().loadWorld(name, (GeneratorWrapper>) gen);
} else {
- PS.get().loadWorld(name, new BukkitPlotGenerator(name, gen));
+ PlotSquared.get().loadWorld(name, new BukkitPlotGenerator(name, gen));
}
}
}
diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/BukkitLazyBlock.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/BukkitLazyBlock.java
new file mode 100644
index 000000000..0903e78d9
--- /dev/null
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/BukkitLazyBlock.java
@@ -0,0 +1,25 @@
+package com.github.intellectualsites.plotsquared.bukkit.object;
+
+import com.github.intellectualsites.plotsquared.plot.object.LazyBlock;
+import com.github.intellectualsites.plotsquared.plot.object.PlotBlock;
+import com.github.intellectualsites.plotsquared.plot.object.StringPlotBlock;
+import org.bukkit.block.Block;
+
+public class BukkitLazyBlock extends LazyBlock {
+
+ private StringPlotBlock pb;
+
+ public BukkitLazyBlock(Block block) {
+ this.pb = (StringPlotBlock) PlotBlock.get(block.getType().toString());
+ }
+
+ public BukkitLazyBlock(StringPlotBlock pb) {
+ this.pb = pb;
+ }
+
+ public StringPlotBlock getPlotBlock() {
+ return this.pb;
+ }
+
+
+}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/object/BukkitOfflinePlayer.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/BukkitOfflinePlayer.java
similarity index 66%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/object/BukkitOfflinePlayer.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/BukkitOfflinePlayer.java
index 715b92bee..390e9d9be 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/object/BukkitOfflinePlayer.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/BukkitOfflinePlayer.java
@@ -1,6 +1,6 @@
-package com.plotsquared.bukkit.object;
+package com.github.intellectualsites.plotsquared.bukkit.object;
-import com.intellectualcrafters.plot.object.OfflinePlotPlayer;
+import com.github.intellectualsites.plotsquared.plot.object.OfflinePlotPlayer;
import org.bukkit.OfflinePlayer;
import java.util.UUID;
@@ -19,23 +19,19 @@ public class BukkitOfflinePlayer implements OfflinePlotPlayer {
this.player = player;
}
- @Override
- public UUID getUUID() {
+ @Override public UUID getUUID() {
return this.player.getUniqueId();
}
- @Override
- public long getLastPlayed() {
+ @Override public long getLastPlayed() {
return this.player.getLastPlayed();
}
- @Override
- public boolean isOnline() {
+ @Override public boolean isOnline() {
return this.player.isOnline();
}
- @Override
- public String getName() {
+ @Override public String getName() {
return this.player.getName();
}
}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/object/BukkitPlayer.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/BukkitPlayer.java
similarity index 71%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/object/BukkitPlayer.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/BukkitPlayer.java
index efeb04e11..a97993cfc 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/object/BukkitPlayer.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/BukkitPlayer.java
@@ -1,28 +1,27 @@
-package com.plotsquared.bukkit.object;
+package com.github.intellectualsites.plotsquared.bukkit.object;
-import com.intellectualcrafters.plot.PS;
-import com.intellectualcrafters.plot.config.C;
-import com.intellectualcrafters.plot.object.Location;
-import com.intellectualcrafters.plot.object.PlotPlayer;
-import com.intellectualcrafters.plot.util.*;
-import com.plotsquared.bukkit.util.BukkitUtil;
-import org.apache.commons.lang.StringUtils;
+import com.github.intellectualsites.plotsquared.bukkit.util.BukkitUtil;
+import com.github.intellectualsites.plotsquared.plot.PlotSquared;
+import com.github.intellectualsites.plotsquared.plot.config.C;
+import com.github.intellectualsites.plotsquared.plot.object.Location;
+import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer;
+import com.github.intellectualsites.plotsquared.plot.util.*;
import org.bukkit.Effect;
import org.bukkit.GameMode;
import org.bukkit.WeatherType;
import org.bukkit.entity.Player;
+import org.bukkit.event.Event;
import org.bukkit.event.EventException;
import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
+import org.bukkit.permissions.PermissionAttachmentInfo;
+import org.bukkit.plugin.RegisteredListener;
import java.util.Set;
import java.util.UUID;
-import org.bukkit.permissions.PermissionAttachmentInfo;
-import org.bukkit.plugin.RegisteredListener;
-
public class BukkitPlayer extends PlotPlayer {
-
+
public final Player player;
public boolean offline;
private UUID uuid;
@@ -31,6 +30,7 @@ public class BukkitPlayer extends PlotPlayer {
/**
*
Please do not use this method. Instead use
* BukkitUtil.getPlayer(Player), as it caches player objects.
+ *
* @param player
*/
public BukkitPlayer(Player player) {
@@ -44,14 +44,12 @@ public class BukkitPlayer extends PlotPlayer {
super.populatePersistentMetaMap();
}
- @Override
- public Location getLocation() {
+ @Override public Location getLocation() {
Location location = super.getLocation();
return location == null ? BukkitUtil.getLocation(this.player) : location;
}
-
- @Override
- public UUID getUUID() {
+
+ @Override public UUID getUUID() {
if (this.uuid == null) {
this.uuid = UUIDHandler.getUUID(this);
}
@@ -62,28 +60,23 @@ public class BukkitPlayer extends PlotPlayer {
return this.player.getLastPlayed();
}
- @Override
- public boolean canTeleport(Location loc) {
+ @Override public boolean canTeleport(Location loc) {
org.bukkit.Location to = BukkitUtil.getLocation(loc);
org.bukkit.Location from = player.getLocation();
PlayerTeleportEvent event = new PlayerTeleportEvent(player, from, to);
- RegisteredListener[] listeners = event.getHandlers().getRegisteredListeners();
- for (RegisteredListener listener : listeners) {
- if (listener.getPlugin().getName().equals(PS.imp().getPluginName())) {
- continue;
- }
- try {
- listener.callEvent(event);
- } catch (EventException e) {
- e.printStackTrace();
- }
- }
+ callEvent(event);
if (event.isCancelled() || !event.getTo().equals(to)) {
return false;
}
event = new PlayerTeleportEvent(player, to, from);
+ callEvent(event);
+ return true;
+ }
+
+ private void callEvent(final Event event) {
+ RegisteredListener[] listeners = event.getHandlers().getRegisteredListeners();
for (RegisteredListener listener : listeners) {
- if (listener.getPlugin().getName().equals(PS.imp().getPluginName())) {
+ if (listener.getPlugin().getName().equals(PlotSquared.imp().getPluginName())) {
continue;
}
try {
@@ -92,19 +85,16 @@ public class BukkitPlayer extends PlotPlayer {
e.printStackTrace();
}
}
- return true;
}
- @Override
- public boolean hasPermission(String permission) {
+ @Override public boolean hasPermission(String permission) {
if (this.offline && EconHandler.manager != null) {
return EconHandler.manager.hasPermission(getName(), permission);
}
return this.player.hasPermission(permission);
}
- @Override
- public int hasPermissionRange(String stub, int range) {
+ @Override public int hasPermissionRange(String stub, int range) {
if (hasPermission(C.PERMISSION_ADMIN.s())) {
return Integer.MAX_VALUE;
}
@@ -131,8 +121,10 @@ public class BukkitPlayer extends PlotPlayer {
String end = perm.substring(stubPlus.length());
if (MathMan.isInteger(end)) {
int val = Integer.parseInt(end);
- if (val > range) return val;
- if (val > max) max = val;
+ if (val > range)
+ return val;
+ if (val > max)
+ max = val;
}
}
}
@@ -146,57 +138,52 @@ public class BukkitPlayer extends PlotPlayer {
return max;
}
- @Override
- public boolean isPermissionSet(String permission) {
+ @Override public boolean isPermissionSet(String permission) {
return this.player.isPermissionSet(permission);
}
- @Override
- public void sendMessage(String message) {
- if (!StringMan.isEqual(this.getMeta("lastMessage"), message) || (System.currentTimeMillis() - this.getMeta("lastMessageTime") > 5000)) {
+ @Override public void sendMessage(String message) {
+ if (!StringMan.isEqual(this.getMeta("lastMessage"), message) || (
+ System.currentTimeMillis() - this.getMeta("lastMessageTime") > 5000)) {
setMeta("lastMessage", message);
setMeta("lastMessageTime", System.currentTimeMillis());
this.player.sendMessage(message);
}
}
-
- @Override
- public void teleport(Location location) {
+
+ @Override public void teleport(Location location) {
if (Math.abs(location.getX()) >= 30000000 || Math.abs(location.getZ()) >= 30000000) {
return;
}
this.player.teleport(
- new org.bukkit.Location(BukkitUtil.getWorld(location.getWorld()), location.getX() + 0.5, location.getY(), location.getZ() + 0.5,
- location.getYaw(), location.getPitch()), TeleportCause.COMMAND);
+ new org.bukkit.Location(BukkitUtil.getWorld(location.getWorld()), location.getX() + 0.5,
+ location.getY(), location.getZ() + 0.5, location.getYaw(), location.getPitch()),
+ TeleportCause.COMMAND);
}
-
- @Override
- public String getName() {
+
+ @Override public String getName() {
if (this.name == null) {
this.name = this.player.getName();
}
return this.name;
}
-
- @Override
- public boolean isOnline() {
+
+ @Override public boolean isOnline() {
return !this.offline && this.player.isOnline();
}
-
- @Override
- public void setCompassTarget(Location location) {
+
+ @Override public void setCompassTarget(Location location) {
this.player.setCompassTarget(
- new org.bukkit.Location(BukkitUtil.getWorld(location.getWorld()), location.getX(), location.getY(), location.getZ()));
-
+ new org.bukkit.Location(BukkitUtil.getWorld(location.getWorld()), location.getX(),
+ location.getY(), location.getZ()));
+
}
-
- @Override
- public Location getLocationFull() {
+
+ @Override public Location getLocationFull() {
return BukkitUtil.getLocationFull(this.player);
}
- @Override
- public void setWeather(PlotWeather weather) {
+ @Override public void setWeather(PlotWeather weather) {
switch (weather) {
case CLEAR:
this.player.setPlayerWeather(WeatherType.CLEAR);
@@ -212,9 +199,8 @@ public class BukkitPlayer extends PlotPlayer {
break;
}
}
-
- @Override
- public PlotGameMode getGameMode() {
+
+ @Override public PlotGameMode getGameMode() {
switch (this.player.getGameMode()) {
case ADVENTURE:
return PlotGameMode.ADVENTURE;
@@ -228,9 +214,8 @@ public class BukkitPlayer extends PlotPlayer {
return PlotGameMode.NOT_SET;
}
}
-
- @Override
- public void setGameMode(PlotGameMode gameMode) {
+
+ @Override public void setGameMode(PlotGameMode gameMode) {
switch (gameMode) {
case ADVENTURE:
this.player.setGameMode(GameMode.ADVENTURE);
@@ -249,34 +234,29 @@ public class BukkitPlayer extends PlotPlayer {
break;
}
}
-
- @Override
- public void setTime(long time) {
+
+ @Override public void setTime(long time) {
if (time != Long.MAX_VALUE) {
this.player.setPlayerTime(time, false);
} else {
this.player.resetPlayerTime();
}
}
-
- @Override
- public void setFlight(boolean fly) {
- this.player.setAllowFlight(fly);
- }
- @Override
- public boolean getFlight() {
+ @Override public boolean getFlight() {
return player.getAllowFlight();
}
- @Override
- public void playMusic(Location location, int id) {
+ @Override public void setFlight(boolean fly) {
+ this.player.setAllowFlight(fly);
+ }
+
+ @Override public void playMusic(Location location, int id) {
//noinspection deprecation
this.player.playEffect(BukkitUtil.getLocation(location), Effect.RECORD_PLAY, id);
}
-
- @Override
- public void kick(String message) {
+
+ @Override public void kick(String message) {
this.player.kickPlayer(message);
}
@@ -286,8 +266,7 @@ public class BukkitPlayer extends PlotPlayer {
}
}
- @Override
- public boolean isBanned() {
+ @Override public boolean isBanned() {
return this.player.isBanned();
}
}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/object/entity/AgeableStats.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/entity/AgeableStats.java
similarity index 52%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/object/entity/AgeableStats.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/entity/AgeableStats.java
index a7016efb6..5769f0e46 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/object/entity/AgeableStats.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/entity/AgeableStats.java
@@ -1,4 +1,4 @@
-package com.plotsquared.bukkit.object.entity;
+package com.github.intellectualsites.plotsquared.bukkit.object.entity;
class AgeableStats {
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/object/entity/ArmorStandStats.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/entity/ArmorStandStats.java
similarity index 83%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/object/entity/ArmorStandStats.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/entity/ArmorStandStats.java
index e6331436c..56b36e2bb 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/object/entity/ArmorStandStats.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/entity/ArmorStandStats.java
@@ -1,4 +1,4 @@
-package com.plotsquared.bukkit.object.entity;
+package com.github.intellectualsites.plotsquared.bukkit.object.entity;
class ArmorStandStats {
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/object/entity/EntityBaseStats.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/entity/EntityBaseStats.java
similarity index 67%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/object/entity/EntityBaseStats.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/entity/EntityBaseStats.java
index 5a26d675f..d33b4d913 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/object/entity/EntityBaseStats.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/entity/EntityBaseStats.java
@@ -1,4 +1,4 @@
-package com.plotsquared.bukkit.object.entity;
+package com.github.intellectualsites.plotsquared.bukkit.object.entity;
class EntityBaseStats {
diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/entity/EntityWrapper.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/entity/EntityWrapper.java
new file mode 100644
index 000000000..d0b6f28b5
--- /dev/null
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/entity/EntityWrapper.java
@@ -0,0 +1,40 @@
+package com.github.intellectualsites.plotsquared.bukkit.object.entity;
+
+import lombok.Getter;
+import lombok.NonNull;
+import org.bukkit.Location;
+import org.bukkit.World;
+import org.bukkit.entity.Entity;
+import org.bukkit.entity.EntityType;
+
+@Getter public abstract class EntityWrapper {
+
+ protected final float yaw;
+ protected final float pitch;
+ private final Entity entity;
+ private final EntityType type;
+ public double x;
+ public double y;
+ public double z;
+
+ EntityWrapper(@NonNull final Entity entity) {
+ this.entity = entity;
+ this.type = entity.getType();
+
+ final Location location = entity.getLocation();
+ this.x = location.getX();
+ this.y = location.getY();
+ this.z = location.getZ();
+ this.yaw = location.getYaw();
+ this.pitch = location.getPitch();
+ }
+
+ @SuppressWarnings("deprecation") @Override public String toString() {
+ return String.format("[%s, x=%s, y=%s, z=%s]", type.getName(), x, y, z);
+ }
+
+ public abstract Entity spawn(World world, int xOffset, int zOffset);
+
+ public abstract void saveEntity();
+
+}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/object/entity/HorseStats.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/entity/HorseStats.java
similarity index 69%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/object/entity/HorseStats.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/entity/HorseStats.java
index 2253136d4..7fd976258 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/object/entity/HorseStats.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/entity/HorseStats.java
@@ -1,4 +1,4 @@
-package com.plotsquared.bukkit.object.entity;
+package com.github.intellectualsites.plotsquared.bukkit.object.entity;
import org.bukkit.entity.Horse;
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/object/entity/LivingEntityStats.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/entity/LivingEntityStats.java
similarity index 88%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/object/entity/LivingEntityStats.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/entity/LivingEntityStats.java
index 39e79c2b0..c702ffaa7 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/object/entity/LivingEntityStats.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/entity/LivingEntityStats.java
@@ -1,4 +1,4 @@
-package com.plotsquared.bukkit.object.entity;
+package com.github.intellectualsites.plotsquared.bukkit.object.entity;
import org.bukkit.inventory.ItemStack;
import org.bukkit.potion.PotionEffect;
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/object/entity/EntityWrapper.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/entity/ReplicatingEntityWrapper.java
similarity index 81%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/object/entity/EntityWrapper.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/entity/ReplicatingEntityWrapper.java
index 33dc737ab..e71373771 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/object/entity/EntityWrapper.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/entity/ReplicatingEntityWrapper.java
@@ -1,52 +1,21 @@
-package com.plotsquared.bukkit.object.entity;
+package com.github.intellectualsites.plotsquared.bukkit.object.entity;
-import com.intellectualcrafters.plot.PS;
-import com.plotsquared.bukkit.util.BukkitVersion;
-import org.bukkit.Art;
-import org.bukkit.DyeColor;
-import org.bukkit.Location;
-import org.bukkit.Rotation;
-import org.bukkit.TreeSpecies;
-import org.bukkit.World;
+import com.github.intellectualsites.plotsquared.plot.PlotSquared;
+import org.bukkit.*;
import org.bukkit.block.BlockFace;
-import org.bukkit.entity.Ageable;
-import org.bukkit.entity.ArmorStand;
-import org.bukkit.entity.Bat;
-import org.bukkit.entity.Boat;
-import org.bukkit.entity.EnderDragon;
-import org.bukkit.entity.Entity;
-import org.bukkit.entity.EntityType;
-import org.bukkit.entity.Guardian;
-import org.bukkit.entity.Horse;
-import org.bukkit.entity.IronGolem;
-import org.bukkit.entity.Item;
-import org.bukkit.entity.ItemFrame;
-import org.bukkit.entity.LivingEntity;
-import org.bukkit.entity.Painting;
-import org.bukkit.entity.Rabbit;
-import org.bukkit.entity.Rabbit.Type;
-import org.bukkit.entity.Sheep;
-import org.bukkit.entity.Skeleton;
-import org.bukkit.entity.Skeleton.SkeletonType;
-import org.bukkit.entity.Slime;
-import org.bukkit.entity.Tameable;
+import org.bukkit.entity.*;
import org.bukkit.inventory.EntityEquipment;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack;
import org.bukkit.util.EulerAngle;
import org.bukkit.util.Vector;
-public class EntityWrapper {
+public final class ReplicatingEntityWrapper extends EntityWrapper {
- private final EntityType type;
- private final float yaw;
- private final float pitch;
private final short depth;
private final int hash;
private final EntityBaseStats base = new EntityBaseStats();
- public double x;
- public double y;
- public double z;
+
public ItemStack[] inventory;
// Extended
private ItemStack stack;
@@ -60,22 +29,18 @@ public class EntityWrapper {
private HorseStats horse;
private boolean noGravity;
- public EntityWrapper(Entity entity, short depth) {
+ public ReplicatingEntityWrapper(Entity entity, short depth) {
+ super(entity);
+
this.hash = entity.getEntityId();
this.depth = depth;
- Location location = entity.getLocation();
- this.yaw = location.getYaw();
- this.pitch = location.getPitch();
- this.x = location.getX();
- this.y = location.getY();
- this.z = location.getZ();
- this.type = entity.getType();
+
if (depth == 0) {
return;
}
Entity passenger = entity.getPassenger();
if (passenger != null) {
- this.base.passenger = new EntityWrapper(passenger, depth);
+ this.base.passenger = new ReplicatingEntityWrapper(passenger, depth);
}
this.base.fall = entity.getFallDistance();
this.base.fire = (short) entity.getFireTicks();
@@ -87,18 +52,15 @@ public class EntityWrapper {
if (depth == 1) {
return;
}
- if (PS.get().checkVersion(PS.get().IMP.getServerVersion(), BukkitVersion.v1_10_0) || entity instanceof ArmorStand) {
- if (!entity.hasGravity()) {
- this.noGravity = true;
- }
+ if (!entity.hasGravity()) {
+ this.noGravity = true;
}
switch (entity.getType()) {
- case ARROW:
case BOAT:
- if (PS.get().checkVersion(PS.get().IMP.getServerVersion(), BukkitVersion.v1_9_0)) {
- Boat boat = (Boat) entity;
- this.dataByte = getOrdinal(TreeSpecies.values(), boat.getWoodType());
- }
+ Boat boat = (Boat) entity;
+ this.dataByte = getOrdinal(TreeSpecies.values(), boat.getWoodType());
+ return;
+ case ARROW:
case COMPLEX_PART:
case EGG:
case ENDER_CRYSTAL:
@@ -134,9 +96,6 @@ public class EntityWrapper {
case AREA_EFFECT_CLOUD:
// Do this stuff later
return;
- default:
- PS.debug("&cCOULD NOT IDENTIFY ENTITY: " + entity.getType());
- return;
// MISC //
case DROPPED_ITEM:
Item item = (Item) entity;
@@ -210,7 +169,7 @@ public class EntityWrapper {
storeLiving((LivingEntity) entity);
return;
case RABBIT:
- this.dataByte = getOrdinal(Type.values(), ((Rabbit) entity).getRabbitType());
+ this.dataByte = getOrdinal(Rabbit.Type.values(), ((Rabbit) entity).getRabbitType());
storeAgeable((Ageable) entity);
storeLiving((LivingEntity) entity);
return;
@@ -220,13 +179,16 @@ public class EntityWrapper {
storeLiving((LivingEntity) entity);
return;
case SKELETON:
- this.dataByte = getOrdinal(SkeletonType.values(),((Skeleton)entity).getSkeletonType());
+ this.dataByte = getOrdinal(Skeleton.SkeletonType.values(),
+ ((Skeleton) entity).getSkeletonType());
storeLiving((LivingEntity) entity);
return;
case ARMOR_STAND:
ArmorStand stand = (ArmorStand) entity;
- this.inventory = new ItemStack[]{stand.getItemInHand().clone(), stand.getHelmet().clone(), stand.getChestplate().clone(),
- stand.getLeggings().clone(), stand.getBoots().clone()};
+ this.inventory =
+ new ItemStack[] {stand.getItemInHand().clone(), stand.getHelmet().clone(),
+ stand.getChestplate().clone(), stand.getLeggings().clone(),
+ stand.getBoots().clone()};
storeLiving(stand);
this.stand = new ArmorStandStats();
@@ -312,16 +274,16 @@ public class EntityWrapper {
}
storeLiving((LivingEntity) entity);
// END LIVING //
+ default:
+ PlotSquared.debug("&cCOULD NOT IDENTIFY ENTITY: " + entity.getType());
}
}
- @Override
- public boolean equals(Object obj) {
+ @Override public boolean equals(Object obj) {
return this.hash == obj.hashCode();
}
- @Override
- public int hashCode() {
+ @Override public int hashCode() {
return this.hash;
}
@@ -354,12 +316,8 @@ public class EntityWrapper {
void restoreEquipment(LivingEntity entity) {
EntityEquipment equipment = entity.getEquipment();
- if (PS.get().checkVersion(PS.get().IMP.getServerVersion(), BukkitVersion.v1_9_0)) {
- equipment.setItemInMainHand(this.lived.mainHand);
- equipment.setItemInOffHand(this.lived.offHand);
- } else {
- equipment.setItemInHand(this.lived.mainHand);
- }
+ equipment.setItemInMainHand(this.lived.mainHand);
+ equipment.setItemInOffHand(this.lived.offHand);
equipment.setHelmet(this.lived.helmet);
equipment.setChestplate(this.lived.chestplate);
equipment.setLeggings(this.lived.leggings);
@@ -370,7 +328,7 @@ public class EntityWrapper {
try {
entity.getInventory().setContents(this.inventory);
} catch (IllegalArgumentException e) {
- PS.debug("&c[WARN] Failed to restore inventory.\n Reason: " + e.getMessage());
+ PlotSquared.debug("&c[WARN] Failed to restore inventory.\n Reason: " + e.getMessage());
}
}
@@ -398,13 +356,8 @@ public class EntityWrapper {
}
void storeEquipment(EntityEquipment equipment) {
- if (PS.get().checkVersion(PS.get().IMP.getServerVersion(), BukkitVersion.v1_9_0)) {
- this.lived.mainHand = equipment.getItemInMainHand().clone();
- this.lived.offHand = equipment.getItemInOffHand().clone();
- } else {
- this.lived.mainHand = equipment.getItemInHand().clone();
- this.lived.offHand = null;
- }
+ this.lived.mainHand = equipment.getItemInMainHand().clone();
+ this.lived.offHand = equipment.getItemInOffHand().clone();
this.lived.boots = equipment.getBoots().clone();
this.lived.leggings = equipment.getLeggings().clone();
this.lived.chestplate = equipment.getChestplate().clone();
@@ -443,15 +396,15 @@ public class EntityWrapper {
this.tamed.tamed = tamed.isTamed();
}
- public Entity spawn(World world, int xOffset, int zOffset) {
+ @Override public Entity spawn(World world, int xOffset, int zOffset) {
Location location = new Location(world, this.x + xOffset, this.y, this.z + zOffset);
location.setYaw(this.yaw);
location.setPitch(this.pitch);
- if (!this.type.isSpawnable()) {
+ if (!this.getType().isSpawnable()) {
return null;
}
Entity entity;
- switch (this.type) {
+ switch (this.getType()) {
case DROPPED_ITEM:
return world.dropItem(location, this.stack);
case PLAYER:
@@ -464,7 +417,7 @@ public class EntityWrapper {
entity = world.spawn(location, Painting.class);
break;
default:
- entity = world.spawnEntity(location, this.type);
+ entity = world.spawnEntity(location, this.getType());
break;
}
if (this.depth == 0) {
@@ -473,7 +426,8 @@ public class EntityWrapper {
if (this.base.passenger != null) {
try {
entity.setPassenger(this.base.passenger.spawn(world, xOffset, zOffset));
- } catch (Exception ignored) { }
+ } catch (Exception ignored) {
+ }
}
if (this.base.fall != 0) {
entity.setFallDistance(this.base.fall);
@@ -488,19 +442,18 @@ public class EntityWrapper {
if (this.depth == 1) {
return entity;
}
- if (PS.get().checkVersion(PS.get().IMP.getServerVersion(), BukkitVersion.v1_10_0) || entity instanceof ArmorStand) {
- if (this.noGravity) {
- entity.setGravity(false);
- }
+ if (this.noGravity) {
+ entity.setGravity(false);
}
switch (entity.getType()) {
- case ARROW:
case BOAT:
- if (PS.get().checkVersion(PS.get().IMP.getServerVersion(), BukkitVersion.v1_9_0)) {
- Boat boat = (Boat) entity;
- boat.setWoodType(TreeSpecies.values()[dataByte]);
- }
-
+ Boat boat = (Boat) entity;
+ boat.setWoodType(TreeSpecies.values()[dataByte]);
+ return entity;
+ case SLIME:
+ ((Slime) entity).setSize(this.dataByte);
+ return entity;
+ case ARROW:
case COMPLEX_PART:
case EGG:
case ENDER_CRYSTAL:
@@ -520,10 +473,6 @@ public class EntityWrapper {
case MINECART_TNT:
case PLAYER:
case PRIMED_TNT:
- return entity;
- case SLIME:
- ((Slime) entity).setSize(this.dataByte);
- return entity;
case SMALL_FIREBALL:
case SNOWBALL:
case SPLASH_POTION:
@@ -540,9 +489,6 @@ public class EntityWrapper {
case UNKNOWN:
// Do this stuff later
return entity;
- default:
- PS.debug("&cCOULD NOT IDENTIFY ENTITY: " + entity.getType());
- return entity;
// MISC //
case ITEM_FRAME:
ItemFrame itemframe = (ItemFrame) entity;
@@ -606,7 +552,7 @@ public class EntityWrapper {
// END AGEABLE //
case RABBIT:
if (this.dataByte != 0) {
- ((Rabbit) entity).setRabbitType(Type.values()[this.dataByte]);
+ ((Rabbit) entity).setRabbitType(Rabbit.Type.values()[this.dataByte]);
}
restoreAgeable((Ageable) entity);
restoreLiving((LivingEntity) entity);
@@ -619,7 +565,8 @@ public class EntityWrapper {
return entity;
case SKELETON:
if (this.dataByte != 0) {
- ((Skeleton) entity).setSkeletonType(SkeletonType.values()[this.dataByte]);
+ ((Skeleton) entity)
+ .setSkeletonType(Skeleton.SkeletonType.values()[this.dataByte]);
}
storeLiving((LivingEntity) entity);
return entity;
@@ -642,27 +589,37 @@ public class EntityWrapper {
stand.setBoots(this.inventory[4]);
}
if (this.stand.head[0] != 0 || this.stand.head[1] != 0 || this.stand.head[2] != 0) {
- EulerAngle pose = new EulerAngle(this.stand.head[0], this.stand.head[1], this.stand.head[2]);
+ EulerAngle pose =
+ new EulerAngle(this.stand.head[0], this.stand.head[1], this.stand.head[2]);
stand.setHeadPose(pose);
}
if (this.stand.body[0] != 0 || this.stand.body[1] != 0 || this.stand.body[2] != 0) {
- EulerAngle pose = new EulerAngle(this.stand.body[0], this.stand.body[1], this.stand.body[2]);
+ EulerAngle pose =
+ new EulerAngle(this.stand.body[0], this.stand.body[1], this.stand.body[2]);
stand.setBodyPose(pose);
}
- if (this.stand.leftLeg[0] != 0 || this.stand.leftLeg[1] != 0 || this.stand.leftLeg[2] != 0) {
- EulerAngle pose = new EulerAngle(this.stand.leftLeg[0], this.stand.leftLeg[1], this.stand.leftLeg[2]);
+ if (this.stand.leftLeg[0] != 0 || this.stand.leftLeg[1] != 0
+ || this.stand.leftLeg[2] != 0) {
+ EulerAngle pose = new EulerAngle(this.stand.leftLeg[0], this.stand.leftLeg[1],
+ this.stand.leftLeg[2]);
stand.setLeftLegPose(pose);
}
- if (this.stand.rightLeg[0] != 0 || this.stand.rightLeg[1] != 0 || this.stand.rightLeg[2] != 0) {
- EulerAngle pose = new EulerAngle(this.stand.rightLeg[0], this.stand.rightLeg[1], this.stand.rightLeg[2]);
+ if (this.stand.rightLeg[0] != 0 || this.stand.rightLeg[1] != 0
+ || this.stand.rightLeg[2] != 0) {
+ EulerAngle pose = new EulerAngle(this.stand.rightLeg[0], this.stand.rightLeg[1],
+ this.stand.rightLeg[2]);
stand.setRightLegPose(pose);
}
- if (this.stand.leftArm[0] != 0 || this.stand.leftArm[1] != 0 || this.stand.leftArm[2] != 0) {
- EulerAngle pose = new EulerAngle(this.stand.leftArm[0], this.stand.leftArm[1], this.stand.leftArm[2]);
+ if (this.stand.leftArm[0] != 0 || this.stand.leftArm[1] != 0
+ || this.stand.leftArm[2] != 0) {
+ EulerAngle pose = new EulerAngle(this.stand.leftArm[0], this.stand.leftArm[1],
+ this.stand.leftArm[2]);
stand.setLeftArmPose(pose);
}
- if (this.stand.rightArm[0] != 0 || this.stand.rightArm[1] != 0 || this.stand.rightArm[2] != 0) {
- EulerAngle pose = new EulerAngle(this.stand.rightArm[0], this.stand.rightArm[1], this.stand.rightArm[2]);
+ if (this.stand.rightArm[0] != 0 || this.stand.rightArm[1] != 0
+ || this.stand.rightArm[2] != 0) {
+ EulerAngle pose = new EulerAngle(this.stand.rightArm[0], this.stand.rightArm[1],
+ this.stand.rightArm[2]);
stand.setRightArmPose(pose);
}
if (this.stand.invisible) {
@@ -716,10 +673,16 @@ public class EntityWrapper {
}
restoreLiving((LivingEntity) entity);
return entity;
- // END LIVING
+ default:
+ PlotSquared.debug("&cCOULD NOT IDENTIFY ENTITY: " + entity.getType());
+ return entity;
+ // END LIVING
}
}
+ public void saveEntity() {
+ }
+
private byte getOrdinal(Object[] list, Object value) {
for (byte i = 0; i < list.length; i++) {
if (list[i].equals(value)) {
@@ -729,9 +692,5 @@ public class EntityWrapper {
return 0;
}
- @SuppressWarnings("deprecation")
- @Override
- public String toString() {
- return String.format("[%s, x=%s, y=%s, z=%s]", type.getName(), x, y, z);
- }
+
}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/object/entity/TameableStats.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/entity/TameableStats.java
similarity index 60%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/object/entity/TameableStats.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/entity/TameableStats.java
index 217952e49..f9e8ded36 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/object/entity/TameableStats.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/entity/TameableStats.java
@@ -1,4 +1,4 @@
-package com.plotsquared.bukkit.object.entity;
+package com.github.intellectualsites.plotsquared.bukkit.object.entity;
import org.bukkit.entity.AnimalTamer;
diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/entity/TeleportEntityWrapper.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/entity/TeleportEntityWrapper.java
new file mode 100644
index 000000000..7456ae10e
--- /dev/null
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/entity/TeleportEntityWrapper.java
@@ -0,0 +1,93 @@
+package com.github.intellectualsites.plotsquared.bukkit.object.entity;
+
+import com.github.intellectualsites.plotsquared.bukkit.BukkitMain;
+import org.bukkit.Chunk;
+import org.bukkit.Location;
+import org.bukkit.World;
+import org.bukkit.entity.Entity;
+import org.bukkit.metadata.FixedMetadataValue;
+
+public class TeleportEntityWrapper extends EntityWrapper {
+
+ private Location oldLocation;
+ private boolean gravityOld;
+ private boolean invulnerableOld;
+ private int fireTicksOld;
+ private int livingTicksOld;
+
+ public TeleportEntityWrapper(final Entity entity) {
+ super(entity);
+ }
+
+ @Override public Entity spawn(final World world, final int xOffset, final int zOffset) {
+ if (!getEntity().getLocation().getChunk().equals(oldLocation.getChunk())) {
+ final Location oldLocation = this.oldLocation.clone();
+ oldLocation.add(xOffset, 0, xOffset);
+ getEntity().teleport(oldLocation);
+ getEntity().setGravity(gravityOld);
+ getEntity().setInvulnerable(invulnerableOld);
+ getEntity().setFireTicks(fireTicksOld);
+ getEntity().setTicksLived(livingTicksOld);
+ getEntity().removeMetadata("ps-tmp-teleport", BukkitMain.getPlugin(BukkitMain.class));
+ }
+ return getEntity();
+ }
+
+ @Override public void saveEntity() {
+ if (getEntity().hasMetadata("ps-tmp-teleport")) {
+ this.oldLocation = (Location) this.getEntity().getMetadata("ps-tmp-teleport").get(0);
+ } else {
+ this.oldLocation = this.getEntity().getLocation();
+ }
+
+ // To account for offsets in the chunk manager
+ this.oldLocation = oldLocation.clone();
+ this.oldLocation.setX(this.x);
+ this.oldLocation.setY(this.y);
+ this.oldLocation.setZ(this.z);
+
+ this.gravityOld = this.getEntity().hasGravity();
+ this.getEntity().setGravity(false);
+ this.invulnerableOld = this.getEntity().isInvulnerable();
+ this.getEntity().setInvulnerable(true);
+ this.fireTicksOld = this.getEntity().getFireTicks();
+ this.livingTicksOld = this.getEntity().getTicksLived();
+ this.getEntity().setMetadata("ps-tmp-teleport",
+ new FixedMetadataValue(BukkitMain.getPlugin(BukkitMain.class), oldLocation));
+ final Chunk newChunk = getNewChunk();
+ this.getEntity().teleport(
+ new Location(newChunk.getWorld(), newChunk.getX() << 4, 5000, newChunk.getZ() << 4));
+ }
+
+ private Chunk getNewChunk() {
+ final Chunk oldChunk = oldLocation.getChunk();
+ Chunk chunk = null;
+
+ for (Chunk lChunk : oldChunk.getWorld().getLoadedChunks()) {
+ if (!lChunk.equals(oldChunk) && lChunk.isLoaded()) {
+ chunk = lChunk;
+ break;
+ }
+ }
+ if (chunk == null) {
+ for (int dx = 1; dx < Integer.MAX_VALUE; dx++) {
+ for (int dz = 0; dz < Integer.MAX_VALUE; dz++) {
+ if ((chunk = getChunkRelative(oldChunk, dx, dz)).isLoaded()) {
+ break;
+ } else if ((chunk = getChunkRelative(oldChunk, -dx, dz)).isLoaded()) {
+ break;
+ } else if ((chunk = getChunkRelative(oldChunk, dx, -dz)).isLoaded()) {
+ break;
+ } else if ((chunk = getChunkRelative(oldChunk, -dx, -dz)).isLoaded()) {
+ break;
+ }
+ }
+ }
+ }
+ return chunk;
+ }
+
+ private Chunk getChunkRelative(final Chunk chunk, final int dx, final int dz) {
+ return chunk.getWorld().getChunkAt(chunk.getX() + dx, chunk.getZ() + dz);
+ }
+}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/object/schematic/StateWrapper.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/schematic/StateWrapper.java
similarity index 63%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/object/schematic/StateWrapper.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/schematic/StateWrapper.java
index 3431e6b77..cfc84338a 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/object/schematic/StateWrapper.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/object/schematic/StateWrapper.java
@@ -1,13 +1,8 @@
-package com.plotsquared.bukkit.object.schematic;
+package com.github.intellectualsites.plotsquared.bukkit.object.schematic;
-import com.intellectualcrafters.jnbt.ByteTag;
-import com.intellectualcrafters.jnbt.CompoundTag;
-import com.intellectualcrafters.jnbt.ListTag;
-import com.intellectualcrafters.jnbt.ShortTag;
-import com.intellectualcrafters.jnbt.Tag;
-import com.intellectualcrafters.plot.object.schematic.ItemType;
-import com.intellectualcrafters.plot.util.MathMan;
-import com.plotsquared.bukkit.util.BukkitUtil;
+import com.github.intellectualsites.plotsquared.bukkit.util.BukkitUtil;
+import com.sk89q.jnbt.*;
+import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
@@ -43,21 +38,14 @@ public class StateWrapper {
case "chest":
List itemsTag = this.tag.getListTag("Items").getValue();
int length = itemsTag.size();
- short[] ids = new short[length];
- byte[] datas = new byte[length];
+ String[] ids = new String[length];
byte[] amounts = new byte[length];
byte[] slots = new byte[length];
for (int i = 0; i < length; i++) {
Tag itemTag = itemsTag.get(i);
CompoundTag itemComp = (CompoundTag) itemTag;
- short id = itemComp.getShort("id");
- String idStr = itemComp.getString("id");
- if (idStr != null && !MathMan.isInteger(idStr)) {
- idStr = idStr.split(":")[1].toLowerCase();
- id = (short) ItemType.getId(idStr);
- }
+ String id = itemComp.getString("id");
ids[i] = id;
- datas[i] = (byte) itemComp.getShort("Damage");
amounts[i] = itemComp.getByte("Count");
slots[i] = itemComp.getByte("Slot");
}
@@ -71,7 +59,8 @@ public class StateWrapper {
InventoryHolder holder = (InventoryHolder) state;
Inventory inv = holder.getInventory();
for (int i = 0; i < ids.length; i++) {
- ItemStack item = new ItemStack(ids[i], amounts[i], datas[i]);
+ ItemStack item =
+ new ItemStack(Material.getMaterial(ids[i]), (int) amounts[i]);
inv.addItem(item);
}
state.update(true);
@@ -89,7 +78,7 @@ public class StateWrapper {
InventoryHolder inv = (InventoryHolder) this.state;
ItemStack[] contents = inv.getInventory().getContents();
Map values = new HashMap<>();
- values.put("Items", new ListTag("Items", CompoundTag.class, serializeInventory(contents)));
+ values.put("Items", new ListTag(CompoundTag.class, serializeInventory(contents)));
return new CompoundTag(values);
}
return null;
@@ -104,41 +93,29 @@ public class StateWrapper {
for (int i = 0; i < items.length; ++i) {
if (items[i] != null) {
Map tagData = serializeItem(items[i]);
- tagData.put("Slot", new ByteTag("Slot", (byte) i));
+ tagData.put("Slot", new ByteTag((byte) i));
tags.add(new CompoundTag(tagData));
}
}
return tags;
}
- /*
- * TODO: Move this into the sponge module!
- *
- public Map serializeItem(final org.spongepowered.api.item.inventory.ItemStack item) {
- final Map data = new HashMap();
-
- // FIXME serialize sponge item
-
- return data;
- }
- */
-
public Map serializeItem(ItemStack item) {
Map data = new HashMap<>();
- data.put("id", new ShortTag("id", (short) item.getTypeId()));
- data.put("Damage", new ShortTag("Damage", item.getDurability()));
- data.put("Count", new ByteTag("Count", (byte) item.getAmount()));
+ data.put("id", new StringTag(item.getType().name()));
+ data.put("Damage", new ShortTag(item.getDurability()));
+ data.put("Count", new ByteTag((byte) item.getAmount()));
if (!item.getEnchantments().isEmpty()) {
List enchantmentList = new ArrayList<>();
for (Entry entry : item.getEnchantments().entrySet()) {
Map enchantment = new HashMap<>();
- enchantment.put("id", new ShortTag("id", (short) entry.getKey().getId()));
- enchantment.put("lvl", new ShortTag("lvl", entry.getValue().shortValue()));
+ enchantment.put("id", new StringTag(entry.getKey().toString()));
+ enchantment.put("lvl", new ShortTag(entry.getValue().shortValue()));
enchantmentList.add(new CompoundTag(enchantment));
}
Map auxData = new HashMap<>();
- auxData.put("ench", new ListTag("ench", CompoundTag.class, enchantmentList));
- data.put("tag", new CompoundTag("tag", auxData));
+ auxData.put("ench", new ListTag(CompoundTag.class, enchantmentList));
+ data.put("tag", new CompoundTag(auxData));
}
return data;
}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/titles/DefaultTitleManager.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/titles/DefaultTitleManager.java
similarity index 66%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/titles/DefaultTitleManager.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/titles/DefaultTitleManager.java
index 98ea32db9..a5447f9bf 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/titles/DefaultTitleManager.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/titles/DefaultTitleManager.java
@@ -1,6 +1,6 @@
-package com.plotsquared.bukkit.titles;
+package com.github.intellectualsites.plotsquared.bukkit.titles;
-import com.plotsquared.bukkit.chat.Reflection;
+import com.github.intellectualsites.plotsquared.bukkit.chat.Reflection;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
@@ -12,13 +12,14 @@ public class DefaultTitleManager extends TitleManager {
/**
* Create a new 1.8 title.
*
- * @param title Title text
- * @param subtitle Subtitle text
- * @param fadeInTime Fade in time
- * @param stayTime Stay on screen time
+ * @param title Title text
+ * @param subtitle Subtitle text
+ * @param fadeInTime Fade in time
+ * @param stayTime Stay on screen time
* @param fadeOutTime Fade out time
*/
- DefaultTitleManager(String title, String subtitle, int fadeInTime, int stayTime, int fadeOutTime) {
+ DefaultTitleManager(String title, String subtitle, int fadeInTime, int stayTime,
+ int fadeOutTime) {
super(title, subtitle, fadeInTime, stayTime, fadeOutTime);
}
@@ -32,7 +33,8 @@ public class DefaultTitleManager extends TitleManager {
this.nmsChatSerializer = Reflection.getNMSClass("ChatSerializer");
}
- @Override public void send(Player player) throws IllegalArgumentException, ReflectiveOperationException, SecurityException {
+ @Override public void send(Player player)
+ throws IllegalArgumentException, ReflectiveOperationException, SecurityException {
if (this.packetTitle != null) {
// First reset previous settings
resetTitle(player);
@@ -41,38 +43,44 @@ public class DefaultTitleManager extends TitleManager {
Object connection = getField(handle.getClass(), "playerConnection").get(handle);
Object[] actions = this.packetActions.getEnumConstants();
Method sendPacket = getMethod(connection.getClass(), "sendPacket");
- Object packet = this.packetTitle.getConstructor(this.packetActions, this.chatBaseComponent, Integer.TYPE, Integer.TYPE, Integer.TYPE)
- .newInstance(actions[2], null, this.fadeInTime * (this.ticks ? 1 : 20),
- this.stayTime * (this.ticks ? 1 : 20), this.fadeOutTime * (this.ticks ? 1 : 20));
+ Object packet = this.packetTitle
+ .getConstructor(this.packetActions, this.chatBaseComponent, Integer.TYPE,
+ Integer.TYPE, Integer.TYPE)
+ .newInstance(actions[2], null, this.fadeInTime * (this.ticks ? 1 : 20),
+ this.stayTime * (this.ticks ? 1 : 20),
+ this.fadeOutTime * (this.ticks ? 1 : 20));
// Send if set
if (this.fadeInTime != -1 && this.fadeOutTime != -1 && this.stayTime != -1) {
sendPacket.invoke(connection, packet);
}
// Send title
Object serialized = getMethod(this.nmsChatSerializer, "a", String.class).invoke(null,
- "{text:\"" + ChatColor.translateAlternateColorCodes('&', this.getTitle()) + "\",color:" + this.titleColor.name().toLowerCase()
- + '}');
- packet = this.packetTitle.getConstructor(this.packetActions, this.chatBaseComponent).newInstance(actions[0], serialized);
+ "{text:\"" + ChatColor.translateAlternateColorCodes('&', this.getTitle())
+ + "\",color:" + this.titleColor.name().toLowerCase() + '}');
+ packet = this.packetTitle.getConstructor(this.packetActions, this.chatBaseComponent)
+ .newInstance(actions[0], serialized);
sendPacket.invoke(connection, packet);
if (!this.getSubtitle().isEmpty()) {
// Send subtitle if present
serialized = getMethod(this.nmsChatSerializer, "a", String.class).invoke(null,
- "{text:\"" + ChatColor.translateAlternateColorCodes('&', this.getSubtitle()) + "\",color:" + this.subtitleColor.name()
- .toLowerCase() + '}');
- packet = this.packetTitle.getConstructor(this.packetActions, this.chatBaseComponent).newInstance(actions[1], serialized);
+ "{text:\"" + ChatColor.translateAlternateColorCodes('&', this.getSubtitle())
+ + "\",color:" + this.subtitleColor.name().toLowerCase() + '}');
+ packet = this.packetTitle.getConstructor(this.packetActions, this.chatBaseComponent)
+ .newInstance(actions[1], serialized);
sendPacket.invoke(connection, packet);
}
}
}
- @Override
- public void clearTitle(Player player) throws IllegalArgumentException, ReflectiveOperationException, SecurityException {
+ @Override public void clearTitle(Player player)
+ throws IllegalArgumentException, ReflectiveOperationException, SecurityException {
// Send timings first
Object handle = getHandle(player);
Object connection = getField(handle.getClass(), "playerConnection").get(handle);
Object[] actions = this.packetActions.getEnumConstants();
Method sendPacket = getMethod(connection.getClass(), "sendPacket");
- Object packet = this.packetTitle.getConstructor(this.packetActions, this.chatBaseComponent).newInstance(actions[3], null);
+ Object packet = this.packetTitle.getConstructor(this.packetActions, this.chatBaseComponent)
+ .newInstance(actions[3], null);
sendPacket.invoke(connection, packet);
}
@@ -84,14 +92,15 @@ public class DefaultTitleManager extends TitleManager {
* @throws ReflectiveOperationException
* @throws SecurityException
*/
- @Override
- public void resetTitle(Player player) throws IllegalArgumentException, ReflectiveOperationException, SecurityException {
+ @Override public void resetTitle(Player player)
+ throws IllegalArgumentException, ReflectiveOperationException, SecurityException {
// Send timings first
Object handle = getHandle(player);
Object connection = getField(handle.getClass(), "playerConnection").get(handle);
Object[] actions = this.packetActions.getEnumConstants();
Method sendPacket = getMethod(connection.getClass(), "sendPacket");
- Object packet = this.packetTitle.getConstructor(this.packetActions, this.chatBaseComponent).newInstance(actions[4], null);
+ Object packet = this.packetTitle.getConstructor(this.packetActions, this.chatBaseComponent)
+ .newInstance(actions[4], null);
sendPacket.invoke(connection, packet);
}
@@ -108,7 +117,8 @@ public class DefaultTitleManager extends TitleManager {
Method getMethod(Class> clazz, String name, Class>... args) {
for (Method m : clazz.getMethods()) {
- if (m.getName().equals(name) && (args.length == 0 || classListEqual(args, m.getParameterTypes()))) {
+ if (m.getName().equals(name) && (args.length == 0 || classListEqual(args,
+ m.getParameterTypes()))) {
m.setAccessible(true);
return m;
}
diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/titles/DefaultTitle_111.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/titles/DefaultTitle_111.java
new file mode 100644
index 000000000..c0d176019
--- /dev/null
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/titles/DefaultTitle_111.java
@@ -0,0 +1,20 @@
+package com.github.intellectualsites.plotsquared.bukkit.titles;
+
+import com.github.intellectualsites.plotsquared.bukkit.object.BukkitPlayer;
+import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer;
+import com.github.intellectualsites.plotsquared.plot.util.AbstractTitle;
+import org.bukkit.entity.Player;
+
+@SuppressWarnings("deprecation") public class DefaultTitle_111 extends AbstractTitle {
+
+ @Override
+ public void sendTitle(PlotPlayer player, String head, String sub, int in, int delay, int out) {
+ try {
+ final Player playerObj = ((BukkitPlayer) player).player;
+ TitleManager_1_11 title = new TitleManager_1_11(head, sub, in, delay, out);
+ title.send(playerObj);
+ return;
+ } catch (Throwable ignored) {
+ }
+ }
+}
diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/titles/HackTitle.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/titles/HackTitle.java
new file mode 100644
index 000000000..ae2b50a60
--- /dev/null
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/titles/HackTitle.java
@@ -0,0 +1,22 @@
+package com.github.intellectualsites.plotsquared.bukkit.titles;
+
+import com.github.intellectualsites.plotsquared.bukkit.object.BukkitPlayer;
+import com.github.intellectualsites.plotsquared.plot.PlotSquared;
+import com.github.intellectualsites.plotsquared.plot.config.Settings;
+import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer;
+import com.github.intellectualsites.plotsquared.plot.util.AbstractTitle;
+
+public class HackTitle extends AbstractTitle {
+
+ @Override
+ public void sendTitle(PlotPlayer player, String head, String sub, int in, int delay, int out) {
+ try {
+ HackTitleManager title = new HackTitleManager(head, sub, in, delay, out);
+ title.send(((BukkitPlayer) player).player);
+ } catch (Exception ignored) {
+ PlotSquared.debug("&cYour server version does not support titles!");
+ Settings.TITLES = false;
+ AbstractTitle.TITLE_CLASS = null;
+ }
+ }
+}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/titles/HackTitleManager.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/titles/HackTitleManager.java
similarity index 67%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/titles/HackTitleManager.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/titles/HackTitleManager.java
index cf8e87b95..2ec197927 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/titles/HackTitleManager.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/titles/HackTitleManager.java
@@ -1,6 +1,6 @@
-package com.plotsquared.bukkit.titles;
+package com.github.intellectualsites.plotsquared.bukkit.titles;
-import com.plotsquared.bukkit.chat.Reflection;
+import com.github.intellectualsites.plotsquared.bukkit.chat.Reflection;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
@@ -13,10 +13,10 @@ public class HackTitleManager extends TitleManager {
/**
* Create a new 1.8 title.
*
- * @param title Title text
- * @param subtitle Subtitle text
- * @param fadeInTime Fade in time
- * @param stayTime Stay on screen time
+ * @param title Title text
+ * @param subtitle Subtitle text
+ * @param fadeInTime Fade in time
+ * @param stayTime Stay on screen time
* @param fadeOutTime Fade out time
*/
HackTitleManager(String title, String subtitle, int fadeInTime, int stayTime, int fadeOutTime) {
@@ -26,14 +26,14 @@ public class HackTitleManager extends TitleManager {
/**
* Load spigot and NMS classes.
*/
- @Override
- void loadClasses() {
+ @Override void loadClasses() {
this.packetTitle = getClass("org.spigotmc.ProtocolInjector$PacketTitle");
this.packetActions = getClass("org.spigotmc.ProtocolInjector$PacketTitle$Action");
this.nmsChatSerializer = Reflection.getNMSClass("ChatSerializer");
}
- @Override public void send(Player player) throws IllegalArgumentException, ReflectiveOperationException, SecurityException {
+ @Override public void send(Player player)
+ throws IllegalArgumentException, ReflectiveOperationException, SecurityException {
if ((getProtocolVersion(player) >= 47) && isSpigot() && (this.packetTitle != null)) {
// First reset previous settings
resetTitle(player);
@@ -42,8 +42,9 @@ public class HackTitleManager extends TitleManager {
Object connection = getField(handle.getClass(), "playerConnection").get(handle);
Object[] actions = this.packetActions.getEnumConstants();
Method sendPacket = getMethod(connection.getClass(), "sendPacket");
- Object packet = this.packetTitle.getConstructor(this.packetActions, Integer.TYPE, Integer.TYPE, Integer.TYPE).newInstance(actions[2],
- this.fadeInTime * (this.ticks ? 1 : 20),
+ Object packet = this.packetTitle
+ .getConstructor(this.packetActions, Integer.TYPE, Integer.TYPE, Integer.TYPE)
+ .newInstance(actions[2], this.fadeInTime * (this.ticks ? 1 : 20),
this.stayTime * (this.ticks ? 1 : 20),
this.fadeOutTime * (this.ticks ? 1 : 20));
// Send if set
@@ -52,43 +53,49 @@ public class HackTitleManager extends TitleManager {
}
// Send title
Object serialized = getMethod(this.nmsChatSerializer, "a", String.class).invoke(null,
- "{text:\"" + ChatColor.translateAlternateColorCodes('&', this.getTitle()) + "\",color:" + this.titleColor.name().toLowerCase()
- + "}");
- packet = this.packetTitle.getConstructor(this.packetActions, Reflection.getNMSClass("IChatBaseComponent"))
- .newInstance(actions[0], serialized);
+ "{text:\"" + ChatColor.translateAlternateColorCodes('&', this.getTitle())
+ + "\",color:" + this.titleColor.name().toLowerCase() + "}");
+ packet = this.packetTitle
+ .getConstructor(this.packetActions, Reflection.getNMSClass("IChatBaseComponent"))
+ .newInstance(actions[0], serialized);
sendPacket.invoke(connection, packet);
if (!this.getSubtitle().isEmpty()) {
// Send subtitle if present
serialized = getMethod(this.nmsChatSerializer, "a", String.class).invoke(null,
- "{text:\"" + ChatColor.translateAlternateColorCodes('&', this.getSubtitle()) + "\",color:" + this.subtitleColor.name()
- .toLowerCase() + "}");
- packet = this.packetTitle.getConstructor(this.packetActions, Reflection.getNMSClass("IChatBaseComponent"))
- .newInstance(actions[1], serialized);
+ "{text:\"" + ChatColor.translateAlternateColorCodes('&', this.getSubtitle())
+ + "\",color:" + this.subtitleColor.name().toLowerCase() + "}");
+ packet = this.packetTitle.getConstructor(this.packetActions,
+ Reflection.getNMSClass("IChatBaseComponent"))
+ .newInstance(actions[1], serialized);
sendPacket.invoke(connection, packet);
}
}
}
- @Override public void clearTitle(Player player) throws IllegalArgumentException, ReflectiveOperationException, SecurityException {
+ @Override public void clearTitle(Player player)
+ throws IllegalArgumentException, ReflectiveOperationException, SecurityException {
if ((getProtocolVersion(player) >= 47) && isSpigot()) {
// Send timings first
Object handle = getHandle(player);
Object connection = getField(handle.getClass(), "playerConnection").get(handle);
Object[] actions = this.packetActions.getEnumConstants();
Method sendPacket = getMethod(connection.getClass(), "sendPacket");
- Object packet = this.packetTitle.getConstructor(this.packetActions).newInstance(actions[3]);
+ Object packet =
+ this.packetTitle.getConstructor(this.packetActions).newInstance(actions[3]);
sendPacket.invoke(connection, packet);
}
}
- @Override public void resetTitle(Player player) throws IllegalArgumentException, ReflectiveOperationException, SecurityException {
+ @Override public void resetTitle(Player player)
+ throws IllegalArgumentException, ReflectiveOperationException, SecurityException {
if ((getProtocolVersion(player) >= 47) && isSpigot()) {
// Send timings first
Object handle = getHandle(player);
Object connection = getField(handle.getClass(), "playerConnection").get(handle);
Object[] actions = this.packetActions.getEnumConstants();
Method sendPacket = getMethod(connection.getClass(), "sendPacket");
- Object packet = this.packetTitle.getConstructor(this.packetActions).newInstance(actions[4]);
+ Object packet =
+ this.packetTitle.getConstructor(this.packetActions).newInstance(actions[4]);
sendPacket.invoke(connection, packet);
}
}
@@ -102,7 +109,8 @@ public class HackTitleManager extends TitleManager {
* @throws ReflectiveOperationException
* @throws SecurityException
*/
- private int getProtocolVersion(Player player) throws IllegalArgumentException, ReflectiveOperationException, SecurityException {
+ private int getProtocolVersion(Player player)
+ throws IllegalArgumentException, ReflectiveOperationException, SecurityException {
Object handle = getHandle(player);
Object connection = getField(handle.getClass(), "playerConnection").get(handle);
Object networkManager = getValue("networkManager", connection);
@@ -127,15 +135,18 @@ public class HackTitleManager extends TitleManager {
private Class> getClass(String namespace) {
try {
return Class.forName(namespace);
- } catch (ClassNotFoundException ignored) {}
+ } catch (ClassNotFoundException ignored) {
+ }
return null;
}
- private Field getField(String name, Class> clazz) throws NoSuchFieldException, SecurityException {
+ private Field getField(String name, Class> clazz)
+ throws NoSuchFieldException, SecurityException {
return clazz.getDeclaredField(name);
}
- private Object getValue(String name, Object obj) throws ReflectiveOperationException, SecurityException, IllegalArgumentException {
+ private Object getValue(String name, Object obj)
+ throws ReflectiveOperationException, SecurityException, IllegalArgumentException {
Field f = getField(name, obj.getClass());
f.setAccessible(true);
return f.get(obj);
@@ -154,7 +165,8 @@ public class HackTitleManager extends TitleManager {
private Method getMethod(Class> clazz, String name, Class>... args) {
for (Method m : clazz.getMethods()) {
- if (m.getName().equals(name) && ((args.length == 0) || classListEqual(args, m.getParameterTypes()))) {
+ if (m.getName().equals(name) && ((args.length == 0) || classListEqual(args,
+ m.getParameterTypes()))) {
m.setAccessible(true);
return m;
}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/titles/TitleManager.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/titles/TitleManager.java
similarity index 87%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/titles/TitleManager.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/titles/TitleManager.java
index 91a5d68a0..f4c249f97 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/titles/TitleManager.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/titles/TitleManager.java
@@ -1,4 +1,4 @@
-package com.plotsquared.bukkit.titles;
+package com.github.intellectualsites.plotsquared.bukkit.titles;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
@@ -12,17 +12,13 @@ import java.util.Map;
public abstract class TitleManager {
private static final Map, Class>> CORRESPONDING_TYPES = new HashMap<>();
- /* Title packet */
- Class> packetTitle;
- /* Title packet actions ENUM */
- Class> packetActions;
- /* Chat serializer */
- Class> nmsChatSerializer;
+ /* Title packet */ Class> packetTitle;
+ /* Title packet actions ENUM */ Class> packetActions;
+ /* Chat serializer */ Class> nmsChatSerializer;
Class> chatBaseComponent;
ChatColor titleColor = ChatColor.WHITE;
ChatColor subtitleColor = ChatColor.WHITE;
- /* Title timings */
- int fadeInTime = -1;
+ /* Title timings */ int fadeInTime = -1;
int stayTime = -1;
int fadeOutTime = -1;
boolean ticks = false;
@@ -34,10 +30,10 @@ public abstract class TitleManager {
/**
* Create a new 1.8 title.
*
- * @param title Title text
- * @param subtitle Subtitle text
- * @param fadeInTime Fade in time
- * @param stayTime Stay on screen time
+ * @param title Title text
+ * @param subtitle Subtitle text
+ * @param fadeInTime Fade in time
+ * @param stayTime Stay on screen time
* @param fadeOutTime Fade out time
*/
TitleManager(String title, String subtitle, int fadeInTime, int stayTime, int fadeOutTime) {
@@ -154,7 +150,8 @@ public abstract class TitleManager {
* @throws ReflectiveOperationException
* @throws SecurityException
*/
- public abstract void send(Player player) throws IllegalArgumentException, ReflectiveOperationException, SecurityException;
+ public abstract void send(Player player)
+ throws IllegalArgumentException, ReflectiveOperationException, SecurityException;
/**
* Broadcasts the title to all players.
@@ -175,7 +172,8 @@ public abstract class TitleManager {
* @throws ReflectiveOperationException
* @throws SecurityException
*/
- public abstract void clearTitle(Player player) throws IllegalArgumentException, ReflectiveOperationException, SecurityException;
+ public abstract void clearTitle(Player player)
+ throws IllegalArgumentException, ReflectiveOperationException, SecurityException;
/**
* Resets the title settings.
@@ -185,7 +183,8 @@ public abstract class TitleManager {
* @throws ReflectiveOperationException
* @throws SecurityException
*/
- public abstract void resetTitle(Player player) throws IllegalArgumentException, ReflectiveOperationException, SecurityException;
+ public abstract void resetTitle(Player player)
+ throws IllegalArgumentException, ReflectiveOperationException, SecurityException;
private Class> getPrimitiveType(Class> clazz) {
if (CORRESPONDING_TYPES.containsKey(clazz)) {
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/titles/TitleManager_1_11.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/titles/TitleManager_1_11.java
similarity index 78%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/titles/TitleManager_1_11.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/titles/TitleManager_1_11.java
index 935f3d850..92155ba45 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/titles/TitleManager_1_11.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/titles/TitleManager_1_11.java
@@ -1,14 +1,14 @@
-package com.plotsquared.bukkit.titles;
+package com.github.intellectualsites.plotsquared.bukkit.titles;
+
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.entity.Player;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
-import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
-import org.bukkit.entity.Player;
-
/**
* Minecraft 1.8 Title
* For 1.11
@@ -17,6 +17,8 @@ import org.bukkit.entity.Player;
* @version 1.1.0
*/
public class TitleManager_1_11 {
+ private static final Map, Class>> CORRESPONDING_TYPES =
+ new HashMap, Class>>();
/* Title packet */
private static Class> packetTitle;
/* Title packet actions ENUM */
@@ -43,8 +45,6 @@ public class TitleManager_1_11 {
private int fadeOutTime = -1;
private boolean ticks = false;
- private static final Map, Class>> CORRESPONDING_TYPES = new HashMap, Class>>();
-
public TitleManager_1_11() {
loadClasses();
}
@@ -98,7 +98,8 @@ public class TitleManager_1_11 {
* @param stayTime Stay on screen time
* @param fadeOutTime Fade out time
*/
- public TitleManager_1_11(String title, String subtitle, int fadeInTime, int stayTime, int fadeOutTime) {
+ public TitleManager_1_11(String title, String subtitle, int fadeInTime, int stayTime,
+ int fadeOutTime) {
this.title = title;
this.subtitle = subtitle;
this.fadeInTime = fadeInTime;
@@ -107,6 +108,15 @@ public class TitleManager_1_11 {
loadClasses();
}
+ private static boolean equalsTypeArray(Class>[] a, Class>[] o) {
+ if (a.length != o.length)
+ return false;
+ for (int i = 0; i < a.length; i++)
+ if (!a[i].equals(o[i]) && !a[i].isAssignableFrom(o[i]))
+ return false;
+ return true;
+ }
+
/**
* Load spigot and NMS classes
*/
@@ -118,23 +128,13 @@ public class TitleManager_1_11 {
nmsChatSerializer = getNMSClass("ChatComponentText");
nmsPlayer = getNMSClass("EntityPlayer");
nmsPlayerConnection = getNMSClass("PlayerConnection");
- playerConnection = getField(nmsPlayer,
- "playerConnection");
+ playerConnection = getField(nmsPlayer, "playerConnection");
sendPacket = getMethod(nmsPlayerConnection, "sendPacket");
obcPlayer = getOBCClass("entity.CraftPlayer");
methodPlayerGetHandle = getMethod("getHandle", obcPlayer);
}
}
- /**
- * Set title text
- *
- * @param title Title
- */
- public void setTitle(String title) {
- this.title = title;
- }
-
/**
* Get title text
*
@@ -145,12 +145,12 @@ public class TitleManager_1_11 {
}
/**
- * Set subtitle text
+ * Set title text
*
- * @param subtitle Subtitle text
+ * @param title Title
*/
- public void setSubtitle(String subtitle) {
- this.subtitle = subtitle;
+ public void setTitle(String title) {
+ this.title = title;
}
/**
@@ -163,48 +163,12 @@ public class TitleManager_1_11 {
}
/**
- * Set the title color
+ * Set subtitle text
*
- * @param color Chat color
+ * @param subtitle Subtitle text
*/
- public void setTitleColor(ChatColor color) {
- this.titleColor = color;
- }
-
- /**
- * Set the subtitle color
- *
- * @param color Chat color
- */
- public void setSubtitleColor(ChatColor color) {
- this.subtitleColor = color;
- }
-
- /**
- * Set title fade in time
- *
- * @param time Time
- */
- public void setFadeInTime(int time) {
- this.fadeInTime = time;
- }
-
- /**
- * Set title fade out time
- *
- * @param time Time
- */
- public void setFadeOutTime(int time) {
- this.fadeOutTime = time;
- }
-
- /**
- * Set title stay time
- *
- * @param time Time
- */
- public void setStayTime(int time) {
- this.stayTime = time;
+ public void setSubtitle(String subtitle) {
+ this.subtitle = subtitle;
}
/**
@@ -235,12 +199,10 @@ public class TitleManager_1_11 {
Object handle = getHandle(player);
Object connection = playerConnection.get(handle);
Object[] actions = packetActions.getEnumConstants();
- Object packet = packetTitle.getConstructor(packetActions,
- chatBaseComponent, Integer.TYPE, Integer.TYPE,
- Integer.TYPE).newInstance(actions[3], null,
- fadeInTime * (ticks ? 1 : 20),
- stayTime * (ticks ? 1 : 20),
- fadeOutTime * (ticks ? 1 : 20));
+ Object packet = packetTitle
+ .getConstructor(packetActions, chatBaseComponent, Integer.TYPE, Integer.TYPE,
+ Integer.TYPE).newInstance(actions[3], null, fadeInTime * (ticks ? 1 : 20),
+ stayTime * (ticks ? 1 : 20), fadeOutTime * (ticks ? 1 : 20));
// Send if set
if (fadeInTime != -1 && fadeOutTime != -1 && stayTime != -1)
sendPacket.invoke(connection, packet);
@@ -248,22 +210,18 @@ public class TitleManager_1_11 {
Object serialized;
if (!subtitle.equals("")) {
// Send subtitle if present
- serialized = nmsChatSerializer.getConstructor(String.class)
- .newInstance(subtitleColor +
- ChatColor.translateAlternateColorCodes('&',
- subtitle));
- packet = packetTitle.getConstructor(packetActions,
- chatBaseComponent).newInstance(actions[1],
- serialized);
+ serialized = nmsChatSerializer.getConstructor(String.class).newInstance(
+ subtitleColor + ChatColor.translateAlternateColorCodes('&', subtitle));
+ packet = packetTitle.getConstructor(packetActions, chatBaseComponent)
+ .newInstance(actions[1], serialized);
sendPacket.invoke(connection, packet);
}
// Send title
- serialized = nmsChatSerializer.getConstructor(
- String.class).newInstance(titleColor +
- ChatColor.translateAlternateColorCodes('&', title));
- packet = packetTitle.getConstructor(packetActions,
- chatBaseComponent).newInstance(actions[0], serialized);
+ serialized = nmsChatSerializer.getConstructor(String.class)
+ .newInstance(titleColor + ChatColor.translateAlternateColorCodes('&', title));
+ packet = packetTitle.getConstructor(packetActions, chatBaseComponent)
+ .newInstance(actions[0], serialized);
sendPacket.invoke(connection, packet);
} catch (Exception e) {
e.printStackTrace();
@@ -278,19 +236,12 @@ public class TitleManager_1_11 {
Object connection = playerConnection.get(handle);
Object[] actions = TitleManager_1_11.packetActions.getEnumConstants();
Object packet = TitleManager_1_11.packetTitle.getConstructor(
- new Class[]{TitleManager_1_11.packetActions, chatBaseComponent,
- Integer.TYPE, Integer.TYPE, Integer.TYPE})
- .newInstance(
- actions[3],
- null,
- this.fadeInTime
- * (this.ticks ? 1 : 20),
- this.stayTime
- * (this.ticks ? 1 : 20),
- this.fadeOutTime
- * (this.ticks ? 1 : 20));
- if ((this.fadeInTime != -1) && (this.fadeOutTime != -1)
- && (this.stayTime != -1)) {
+ new Class[] {TitleManager_1_11.packetActions, chatBaseComponent, Integer.TYPE,
+ Integer.TYPE, Integer.TYPE})
+ .newInstance(actions[3], null, this.fadeInTime * (this.ticks ? 1 : 20),
+ this.stayTime * (this.ticks ? 1 : 20),
+ this.fadeOutTime * (this.ticks ? 1 : 20));
+ if ((this.fadeInTime != -1) && (this.fadeOutTime != -1) && (this.stayTime != -1)) {
sendPacket.invoke(connection, packet);
}
} catch (Exception e) {
@@ -303,21 +254,14 @@ public class TitleManager_1_11 {
if (TitleManager_1_11.packetTitle != null) {
try {
Object handle = getHandle(player);
- Object connection = getField(handle.getClass(),
- "playerConnection").get(handle);
+ Object connection = getField(handle.getClass(), "playerConnection").get(handle);
Object[] actions = TitleManager_1_11.packetActions.getEnumConstants();
- Method sendPacket = getMethod(connection.getClass(),
- "sendPacket");
- Object serialized = nmsChatSerializer.getConstructor(
- String.class)
- .newInstance(titleColor +
- ChatColor.translateAlternateColorCodes('&',
- this.title));
- Object packet = TitleManager_1_11.packetTitle
- .getConstructor(
- new Class[]{TitleManager_1_11.packetActions,
- chatBaseComponent}).newInstance(
- actions[0], serialized);
+ Method sendPacket = getMethod(connection.getClass(), "sendPacket");
+ Object serialized = nmsChatSerializer.getConstructor(String.class).newInstance(
+ titleColor + ChatColor.translateAlternateColorCodes('&', this.title));
+ Object packet = TitleManager_1_11.packetTitle.getConstructor(
+ new Class[] {TitleManager_1_11.packetActions, chatBaseComponent})
+ .newInstance(actions[0], serialized);
sendPacket.invoke(connection, packet);
} catch (Exception e) {
e.printStackTrace();
@@ -331,16 +275,11 @@ public class TitleManager_1_11 {
Object handle = getHandle(player);
Object connection = playerConnection.get(handle);
Object[] actions = TitleManager_1_11.packetActions.getEnumConstants();
- Object serialized = nmsChatSerializer.getConstructor(
- String.class)
- .newInstance(subtitleColor +
- ChatColor.translateAlternateColorCodes('&',
- this.subtitle));
- Object packet = TitleManager_1_11.packetTitle
- .getConstructor(
- new Class[]{TitleManager_1_11.packetActions,
- chatBaseComponent}).newInstance(
- actions[1], serialized);
+ Object serialized = nmsChatSerializer.getConstructor(String.class).newInstance(
+ subtitleColor + ChatColor.translateAlternateColorCodes('&', this.subtitle));
+ Object packet = TitleManager_1_11.packetTitle.getConstructor(
+ new Class[] {TitleManager_1_11.packetActions, chatBaseComponent})
+ .newInstance(actions[1], serialized);
sendPacket.invoke(connection, packet);
} catch (Exception e) {
e.printStackTrace();
@@ -368,8 +307,8 @@ public class TitleManager_1_11 {
Object handle = getHandle(player);
Object connection = playerConnection.get(handle);
Object[] actions = packetActions.getEnumConstants();
- Object packet = packetTitle.getConstructor(packetActions,
- chatBaseComponent).newInstance(actions[4], null);
+ Object packet = packetTitle.getConstructor(packetActions, chatBaseComponent)
+ .newInstance(actions[4], null);
sendPacket.invoke(connection, packet);
} catch (Exception e) {
e.printStackTrace();
@@ -387,8 +326,8 @@ public class TitleManager_1_11 {
Object handle = getHandle(player);
Object connection = playerConnection.get(handle);
Object[] actions = packetActions.getEnumConstants();
- Object packet = packetTitle.getConstructor(packetActions,
- chatBaseComponent).newInstance(actions[5], null);
+ Object packet = packetTitle.getConstructor(packetActions, chatBaseComponent)
+ .newInstance(actions[5], null);
sendPacket.invoke(connection, packet);
} catch (Exception e) {
e.printStackTrace();
@@ -396,8 +335,7 @@ public class TitleManager_1_11 {
}
private Class> getPrimitiveType(Class> clazz) {
- return CORRESPONDING_TYPES.containsKey(clazz) ? CORRESPONDING_TYPES
- .get(clazz) : clazz;
+ return CORRESPONDING_TYPES.containsKey(clazz) ? CORRESPONDING_TYPES.get(clazz) : clazz;
}
private Class>[] toPrimitiveTypeArray(Class>[] classes) {
@@ -408,15 +346,6 @@ public class TitleManager_1_11 {
return types;
}
- private static boolean equalsTypeArray(Class>[] a, Class>[] o) {
- if (a.length != o.length)
- return false;
- for (int i = 0; i < a.length; i++)
- if (!a[i].equals(o[i]) && !a[i].isAssignableFrom(o[i]))
- return false;
- return true;
- }
-
private Object getHandle(Player player) {
try {
return methodPlayerGetHandle.invoke(player);
@@ -426,8 +355,7 @@ public class TitleManager_1_11 {
}
}
- private Method getMethod(String name, Class> clazz,
- Class>... paramTypes) {
+ private Method getMethod(String name, Class> clazz, Class>... paramTypes) {
Class>[] t = toPrimitiveTypeArray(paramTypes);
for (Method m : clazz.getMethods()) {
Class>[] types = toPrimitiveTypeArray(m.getParameterTypes());
@@ -465,7 +393,6 @@ public class TitleManager_1_11 {
return clazz;
}
-
private Field getField(Class> clazz, String name) {
try {
Field field = clazz.getDeclaredField(name);
@@ -479,9 +406,8 @@ public class TitleManager_1_11 {
private Method getMethod(Class> clazz, String name, Class>... args) {
for (Method m : clazz.getMethods())
- if (m.getName().equals(name)
- && (args.length == 0 || ClassListEqual(args,
- m.getParameterTypes()))) {
+ if (m.getName().equals(name) && (args.length == 0 || ClassListEqual(args,
+ m.getParameterTypes()))) {
m.setAccessible(true);
return m;
}
@@ -504,23 +430,68 @@ public class TitleManager_1_11 {
return titleColor;
}
+ /**
+ * Set the title color
+ *
+ * @param color Chat color
+ */
+ public void setTitleColor(ChatColor color) {
+ this.titleColor = color;
+ }
+
public ChatColor getSubtitleColor() {
return subtitleColor;
}
+ /**
+ * Set the subtitle color
+ *
+ * @param color Chat color
+ */
+ public void setSubtitleColor(ChatColor color) {
+ this.subtitleColor = color;
+ }
+
public int getFadeInTime() {
return fadeInTime;
}
+ /**
+ * Set title fade in time
+ *
+ * @param time Time
+ */
+ public void setFadeInTime(int time) {
+ this.fadeInTime = time;
+ }
+
public int getFadeOutTime() {
return fadeOutTime;
}
+ /**
+ * Set title fade out time
+ *
+ * @param time Time
+ */
+ public void setFadeOutTime(int time) {
+ this.fadeOutTime = time;
+ }
+
public int getStayTime() {
return stayTime;
}
+ /**
+ * Set title stay time
+ *
+ * @param time Time
+ */
+ public void setStayTime(int time) {
+ this.stayTime = time;
+ }
+
public boolean isTicks() {
return ticks;
}
-}
\ No newline at end of file
+}
diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitBlockRegistry.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitBlockRegistry.java
new file mode 100644
index 000000000..b5ac5f1fb
--- /dev/null
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitBlockRegistry.java
@@ -0,0 +1,18 @@
+package com.github.intellectualsites.plotsquared.bukkit.util;
+
+import com.github.intellectualsites.plotsquared.plot.object.BlockRegistry;
+import com.github.intellectualsites.plotsquared.plot.object.PlotBlock;
+import lombok.NonNull;
+import org.bukkit.Material;
+
+public class BukkitBlockRegistry extends BlockRegistry {
+
+ public BukkitBlockRegistry(final Material... preInitializedItems) {
+ super(Material.class, preInitializedItems);
+ }
+
+ @Override public PlotBlock getPlotBlock(@NonNull final Material item) {
+ return PlotBlock.get(item.name());
+ }
+
+}
diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitChatManager.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitChatManager.java
new file mode 100644
index 000000000..a133d9630
--- /dev/null
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitChatManager.java
@@ -0,0 +1,54 @@
+package com.github.intellectualsites.plotsquared.bukkit.util;
+
+import com.github.intellectualsites.plotsquared.bukkit.chat.FancyMessage;
+import com.github.intellectualsites.plotsquared.bukkit.object.BukkitPlayer;
+import com.github.intellectualsites.plotsquared.plot.config.C;
+import com.github.intellectualsites.plotsquared.plot.config.Settings;
+import com.github.intellectualsites.plotsquared.plot.object.ConsolePlayer;
+import com.github.intellectualsites.plotsquared.plot.object.PlotMessage;
+import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer;
+import com.github.intellectualsites.plotsquared.plot.util.ChatManager;
+import org.bukkit.ChatColor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class BukkitChatManager extends ChatManager {
+
+ @Override public FancyMessage builder() {
+ return new FancyMessage("");
+ }
+
+ @Override public void color(PlotMessage message, String color) {
+ message.$(this).color(ChatColor.getByChar(C.color(color).substring(1)));
+ }
+
+ @Override public void tooltip(PlotMessage message, PlotMessage... tooltips) {
+ List lines = new ArrayList<>();
+ for (PlotMessage tooltip : tooltips) {
+ lines.add(tooltip.$(this));
+ }
+ message.$(this).formattedTooltip(lines);
+ }
+
+ @Override public void command(PlotMessage message, String command) {
+ message.$(this).command(command);
+ }
+
+ @Override public void text(PlotMessage message, String text) {
+ message.$(this).then(ChatColor.stripColor(text));
+ }
+
+ @Override public void send(PlotMessage plotMessage, PlotPlayer player) {
+ if (player instanceof ConsolePlayer || !Settings.Chat.INTERACTIVE) {
+ player.sendMessage(plotMessage.$(this).toOldMessageFormat());
+ } else {
+ plotMessage.$(this).send(((BukkitPlayer) player).player);
+ }
+ }
+
+ @Override public void suggest(PlotMessage plotMessage, String command) {
+ plotMessage.$(this).suggest(command);
+ }
+
+}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitChunkManager.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitChunkManager.java
similarity index 65%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitChunkManager.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitChunkManager.java
index e39ab5f4e..32d067e70 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitChunkManager.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitChunkManager.java
@@ -1,62 +1,25 @@
-package com.plotsquared.bukkit.util;
+package com.github.intellectualsites.plotsquared.bukkit.util;
-import com.intellectualcrafters.plot.PS;
-import com.intellectualcrafters.plot.generator.AugmentedUtils;
-import com.intellectualcrafters.plot.object.BlockLoc;
-import com.intellectualcrafters.plot.object.ChunkLoc;
-import com.intellectualcrafters.plot.object.Location;
-import com.intellectualcrafters.plot.object.Plot;
-import com.intellectualcrafters.plot.object.PlotArea;
-import com.intellectualcrafters.plot.object.PlotBlock;
-import com.intellectualcrafters.plot.object.PlotLoc;
-import com.intellectualcrafters.plot.object.RegionWrapper;
-import com.intellectualcrafters.plot.object.RunnableVal;
-import com.intellectualcrafters.plot.util.ChunkManager;
-import com.intellectualcrafters.plot.util.TaskManager;
-import com.intellectualcrafters.plot.util.block.GlobalBlockQueue;
-import com.intellectualcrafters.plot.util.block.LocalBlockQueue;
-import com.intellectualcrafters.plot.util.block.ScopedLocalBlockQueue;
-import com.plotsquared.bukkit.object.entity.EntityWrapper;
-import org.bukkit.Bukkit;
-import org.bukkit.Chunk;
-import org.bukkit.DyeColor;
-import org.bukkit.Material;
-import org.bukkit.Note;
-import org.bukkit.SkullType;
-import org.bukkit.World;
-import org.bukkit.block.Banner;
-import org.bukkit.block.Beacon;
-import org.bukkit.block.Block;
-import org.bukkit.block.BlockFace;
-import org.bukkit.block.BlockState;
-import org.bukkit.block.BrewingStand;
-import org.bukkit.block.CommandBlock;
-import org.bukkit.block.CreatureSpawner;
-import org.bukkit.block.Dispenser;
-import org.bukkit.block.Dropper;
-import org.bukkit.block.Furnace;
-import org.bukkit.block.Hopper;
-import org.bukkit.block.Jukebox;
-import org.bukkit.block.NoteBlock;
-import org.bukkit.block.Sign;
-import org.bukkit.block.Skull;
+import com.github.intellectualsites.plotsquared.bukkit.object.entity.EntityWrapper;
+import com.github.intellectualsites.plotsquared.bukkit.object.entity.ReplicatingEntityWrapper;
+import com.github.intellectualsites.plotsquared.plot.PlotSquared;
+import com.github.intellectualsites.plotsquared.plot.generator.AugmentedUtils;
+import com.github.intellectualsites.plotsquared.plot.object.*;
+import com.github.intellectualsites.plotsquared.plot.util.ChunkManager;
+import com.github.intellectualsites.plotsquared.plot.util.TaskManager;
+import com.github.intellectualsites.plotsquared.plot.util.block.GlobalBlockQueue;
+import com.github.intellectualsites.plotsquared.plot.util.block.LocalBlockQueue;
+import com.github.intellectualsites.plotsquared.plot.util.block.ScopedLocalBlockQueue;
+import org.bukkit.*;
+import org.bukkit.block.*;
import org.bukkit.block.banner.Pattern;
-import org.bukkit.entity.Animals;
-import org.bukkit.entity.Creature;
-import org.bukkit.entity.Entity;
-import org.bukkit.entity.EntityType;
-import org.bukkit.entity.Player;
+import org.bukkit.block.data.BlockData;
+import org.bukkit.entity.*;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack;
-import java.util.ArrayDeque;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.Map.Entry;
-import java.util.Set;
public class BukkitChunkManager extends ChunkManager {
@@ -73,7 +36,8 @@ public class BukkitChunkManager extends ChunkManager {
return 0;
}
- public static ContentMap swapChunk(World world1, World world2, Chunk pos1, Chunk pos2, RegionWrapper r1, RegionWrapper r2) {
+ public static ContentMap swapChunk(World world1, World world2, Chunk pos1, Chunk pos2,
+ RegionWrapper r1, RegionWrapper r2) {
ContentMap map = new ContentMap();
int relX = r2.minX - r1.minX;
int relZ = r2.minZ - r1.minZ;
@@ -95,29 +59,35 @@ public class BukkitChunkManager extends ChunkManager {
map.saveBlocks(world1, 256, sx, sz, relX, relZ, false);
for (int y = 0; y < 256; y++) {
Block block1 = world1.getBlockAt(x, y, z);
- int id1 = block1.getTypeId();
- byte data1 = block1.getData();
+ // int id1 = block1.getTypeId();
+ Material id1 = block1.getType();
+ BlockData data1 = block1.getBlockData();
+ // byte data1 = block1.getData();
int xx = x + relX;
int zz = z + relZ;
Block block2 = world2.getBlockAt(xx, y, zz);
- int id2 = block2.getTypeId();
- byte data2 = block2.getData();
- if (id1 == 0) {
- if (id2 != 0) {
- queue1.setBlock(x, y, z, (short) id2, data2);
+ // int id2 = block2.getTypeId();
+ Material id2 = block2.getType();
+ BlockData data2 = block2.getBlockData();
+ // byte data2 = block2.getData();
+ if (id1 == Material.AIR) {
+ if (id2 != Material.AIR) {
+ queue1.setBlock(x, y, z, id2.name());
queue2.setBlock(xx, y, zz, (short) 0, (byte) 0);
}
- } else if (id2 == 0) {
+ } else if (id2 == Material.AIR) {
queue1.setBlock(x, y, z, (short) 0, (byte) 0);
- queue2.setBlock(xx, y, zz, (short) id1, data1);
+ queue2.setBlock(xx, y, zz, id1.name());
} else if (id1 == id2) {
if (data1 != data2) {
- block1.setData(data2);
- block2.setData(data1);
+ block1.setBlockData(data2);
+ block2.setBlockData(data1);
}
} else {
- queue1.setBlock(x, y, z, (short) id2, data2);
- queue2.setBlock(xx, y, zz, (short) id1, data1);
+ queue1.setBlock(x, y, z, id2.name());
+ queue2.setBlock(xx, y, zz, id1.name());
+ // queue1.setBlock(x, y, z, (short) id2, data2);
+ // queue2.setBlock(xx, y, zz, (short) id1, data1);
}
}
}
@@ -127,8 +97,7 @@ public class BukkitChunkManager extends ChunkManager {
return map;
}
- @Override
- public Set getChunkChunks(String world) {
+ @Override public Set getChunkChunks(String world) {
Set chunks = super.getChunkChunks(world);
for (Chunk chunk : Bukkit.getWorld(world).getLoadedChunks()) {
ChunkLoc loc = new ChunkLoc(chunk.getX() >> 5, chunk.getZ() >> 5);
@@ -140,12 +109,18 @@ public class BukkitChunkManager extends ChunkManager {
}
@Override
- public boolean copyRegion(Location pos1, Location pos2, Location newPos, final Runnable whenDone) {
+ public boolean copyRegion(com.github.intellectualsites.plotsquared.plot.object.Location pos1,
+ com.github.intellectualsites.plotsquared.plot.object.Location pos2,
+ com.github.intellectualsites.plotsquared.plot.object.Location newPos,
+ final Runnable whenDone) {
final int relX = newPos.getX() - pos1.getX();
final int relZ = newPos.getZ() - pos1.getZ();
- Location pos4 = new Location(newPos.getWorld(), newPos.getX() + relX, 256, newPos.getZ() + relZ);
+ com.github.intellectualsites.plotsquared.plot.object.Location pos4 =
+ new com.github.intellectualsites.plotsquared.plot.object.Location(newPos.getWorld(),
+ newPos.getX() + relX, 256, newPos.getZ() + relZ);
- final RegionWrapper region = new RegionWrapper(pos1.getX(), pos2.getX(), pos1.getZ(), pos2.getZ());
+ final RegionWrapper region =
+ new RegionWrapper(pos1.getX(), pos2.getX(), pos1.getZ(), pos2.getZ());
final World oldWorld = Bukkit.getWorld(pos1.getWorld());
final World newWorld = Bukkit.getWorld(newPos.getWorld());
final String newWorldName = newWorld.getName();
@@ -153,8 +128,7 @@ public class BukkitChunkManager extends ChunkManager {
final ContentMap map = new ContentMap();
final LocalBlockQueue queue = GlobalBlockQueue.IMP.getNewQueue(newWorldName, false);
ChunkManager.chunkTask(pos1, pos2, new RunnableVal() {
- @Override
- public void run(int[] value) {
+ @Override public void run(int[] value) {
int bx = value[2];
int bz = value[3];
int tx = value[4];
@@ -171,8 +145,7 @@ public class BukkitChunkManager extends ChunkManager {
}
}
}, new Runnable() {
- @Override
- public void run() {
+ @Override public void run() {
for (Entry entry : map.allBlocks.entrySet()) {
PlotLoc loc = entry.getKey();
PlotBlock[] blocks = entry.getValue();
@@ -185,8 +158,7 @@ public class BukkitChunkManager extends ChunkManager {
}
queue.enqueue();
GlobalBlockQueue.IMP.addTask(new Runnable() {
- @Override
- public void run() {
+ @Override public void run() {
map.restoreBlocks(newWorld, 0, 0);
map.restoreEntities(newWorld, relX, relZ);
TaskManager.runTask(whenDone);
@@ -197,8 +169,10 @@ public class BukkitChunkManager extends ChunkManager {
return true;
}
- @Override
- public boolean regenerateRegion(final Location pos1, final Location pos2, final boolean ignoreAugment, final Runnable whenDone) {
+ @Override public boolean regenerateRegion(
+ final com.github.intellectualsites.plotsquared.plot.object.Location pos1,
+ final com.github.intellectualsites.plotsquared.plot.object.Location pos2,
+ final boolean ignoreAugment, final Runnable whenDone) {
final String world = pos1.getWorld();
final int p1x = pos1.getX();
@@ -219,8 +193,7 @@ public class BukkitChunkManager extends ChunkManager {
}
final World worldObj = Bukkit.getWorld(world);
TaskManager.runTask(new Runnable() {
- @Override
- public void run() {
+ @Override public void run() {
long start = System.currentTimeMillis();
while (!chunks.isEmpty() && System.currentTimeMillis() - start < 5) {
final ChunkLoc chunk = chunks.remove(0);
@@ -235,11 +208,11 @@ public class BukkitChunkManager extends ChunkManager {
continue;
}
final LocalBlockQueue queue = GlobalBlockQueue.IMP.getNewQueue(world, false);
- RegionWrapper currentPlotClear = new RegionWrapper(pos1.getX(), pos2.getX(), pos1.getZ(), pos2.getZ());
+ RegionWrapper currentPlotClear =
+ new RegionWrapper(pos1.getX(), pos2.getX(), pos1.getZ(), pos2.getZ());
if (xxb >= p1x && xxt <= p2x && zzb >= p1z && zzt <= p2z) {
AugmentedUtils.bypass(ignoreAugment, new Runnable() {
- @Override
- public void run() {
+ @Override public void run() {
queue.regenChunkSafe(chunk.x, chunk.z);
}
});
@@ -306,12 +279,11 @@ public class BukkitChunkManager extends ChunkManager {
}
map.saveEntitiesOut(chunkObj, currentPlotClear);
AugmentedUtils.bypass(ignoreAugment, new Runnable() {
- @Override
- public void run() {
+ @Override public void run() {
setChunkInPlotArea(null, new RunnableVal() {
- @Override
- public void run(ScopedLocalBlockQueue value) {
- Location min = value.getMin();
+ @Override public void run(ScopedLocalBlockQueue value) {
+ com.github.intellectualsites.plotsquared.plot.object.Location
+ min = value.getMin();
int bx = min.getX();
int bz = min.getZ();
for (int x = 0; x < 16; x++) {
@@ -319,7 +291,8 @@ public class BukkitChunkManager extends ChunkManager {
PlotLoc loc = new PlotLoc(bx + x, bz + z);
PlotBlock[] ids = map.allBlocks.get(loc);
if (ids != null) {
- for (int y = 0; y < Math.min(128, ids.length); y++) {
+ for (int y = 0;
+ y < Math.min(128, ids.length); y++) {
PlotBlock id = ids[y];
if (id != null) {
value.setBlock(x, y, z, id);
@@ -327,7 +300,8 @@ public class BukkitChunkManager extends ChunkManager {
value.setBlock(x, y, z, 0, (byte) 0);
}
}
- for (int y = Math.min(128, ids.length); y < ids.length; y++) {
+ for (int y = Math.min(128, ids.length);
+ y < ids.length; y++) {
PlotBlock id = ids[y];
if (id != null) {
value.setBlock(x, y, z, id);
@@ -354,7 +328,8 @@ public class BukkitChunkManager extends ChunkManager {
}
@Override
- public void clearAllEntities(Location pos1, Location pos2) {
+ public void clearAllEntities(com.github.intellectualsites.plotsquared.plot.object.Location pos1,
+ com.github.intellectualsites.plotsquared.plot.object.Location pos2) {
String world = pos1.getWorld();
List entities = BukkitUtil.getEntities(world);
int bx = pos1.getX();
@@ -364,26 +339,27 @@ public class BukkitChunkManager extends ChunkManager {
for (Entity entity : entities) {
if (!(entity instanceof Player)) {
org.bukkit.Location location = entity.getLocation();
- if (location.getX() >= bx && location.getX() <= tx && location.getZ() >= bz && location.getZ() <= tz) {
+ if (location.getX() >= bx && location.getX() <= tx && location.getZ() >= bz
+ && location.getZ() <= tz) {
+ if (entity.hasMetadata("ps-tmp-teleport")) {
+ continue;
+ }
entity.remove();
}
}
}
}
- @Override
- public boolean loadChunk(String world, ChunkLoc loc, boolean force) {
+ @Override public boolean loadChunk(String world, ChunkLoc loc, boolean force) {
return BukkitUtil.getWorld(world).getChunkAt(loc.x, loc.z).load(force);
}
- @SuppressWarnings("deprecation")
- @Override
- public void unloadChunk(final String world, final ChunkLoc loc, final boolean save, final boolean safe) {
- if (!PS.get().isMainThread(Thread.currentThread())) {
+ @SuppressWarnings("deprecation") @Override
+ public void unloadChunk(final String world, final ChunkLoc loc, final boolean save,
+ final boolean safe) {
+ if (!PlotSquared.get().isMainThread(Thread.currentThread())) {
TaskManager.runTask(new Runnable() {
- @SuppressWarnings("deprecation")
- @Override
- public void run() {
+ @SuppressWarnings("deprecation") @Override public void run() {
BukkitUtil.getWorld(world).unloadChunk(loc.x, loc.z, save, safe);
}
});
@@ -392,10 +368,15 @@ public class BukkitChunkManager extends ChunkManager {
}
}
- @Override
- public void swap(Location bot1, Location top1, Location bot2, Location top2, final Runnable whenDone) {
- RegionWrapper region1 = new RegionWrapper(bot1.getX(), top1.getX(), bot1.getZ(), top1.getZ());
- RegionWrapper region2 = new RegionWrapper(bot2.getX(), top2.getX(), bot2.getZ(), top2.getZ());
+ @Override public void swap(com.github.intellectualsites.plotsquared.plot.object.Location bot1,
+ com.github.intellectualsites.plotsquared.plot.object.Location top1,
+ com.github.intellectualsites.plotsquared.plot.object.Location bot2,
+ com.github.intellectualsites.plotsquared.plot.object.Location top2,
+ final Runnable whenDone) {
+ RegionWrapper region1 =
+ new RegionWrapper(bot1.getX(), top1.getX(), bot1.getZ(), top1.getZ());
+ RegionWrapper region2 =
+ new RegionWrapper(bot2.getX(), top2.getX(), bot2.getZ(), top2.getZ());
final World world1 = Bukkit.getWorld(bot1.getWorld());
World world2 = Bukkit.getWorld(bot2.getWorld());
@@ -412,8 +393,7 @@ public class BukkitChunkManager extends ChunkManager {
}
}
GlobalBlockQueue.IMP.addTask(new Runnable() {
- @Override
- public void run() {
+ @Override public void run() {
for (ContentMap map : maps) {
map.restoreBlocks(world1, 0, 0);
map.restoreEntities(world1, 0, 0);
@@ -423,17 +403,17 @@ public class BukkitChunkManager extends ChunkManager {
});
}
- @Override
- public int[] countEntities(Plot plot) {
+ @Override public int[] countEntities(Plot plot) {
int[] existing = (int[]) plot.getMeta("EntityCount");
- if (existing != null && (System.currentTimeMillis() - (long) plot.getMeta("EntityCountTime") < 1000)) {
+ if (existing != null && (System.currentTimeMillis() - (long) plot.getMeta("EntityCountTime")
+ < 1000)) {
return existing;
}
PlotArea area = plot.getArea();
World world = BukkitUtil.getWorld(area.worldname);
- Location bot = plot.getBottomAbs();
- Location top = plot.getTopAbs();
+ com.github.intellectualsites.plotsquared.plot.object.Location bot = plot.getBottomAbs();
+ com.github.intellectualsites.plotsquared.plot.object.Location top = plot.getTopAbs();
int bx = bot.getX() >> 4;
int bz = bot.getZ() >> 4;
@@ -542,7 +522,7 @@ public class BukkitChunkManager extends ChunkManager {
case ARMOR_STAND:
count[5]++;
break;
- // misc
+ // misc
case MINECART:
case MINECART_CHEST:
case MINECART_COMMAND:
@@ -691,7 +671,8 @@ public class BukkitChunkManager extends ChunkManager {
public void saveEntitiesOut(Chunk chunk, RegionWrapper region) {
for (Entity entity : chunk.getEntities()) {
- Location loc = BukkitUtil.getLocation(entity);
+ com.github.intellectualsites.plotsquared.plot.object.Location loc =
+ BukkitUtil.getLocation(entity);
int x = loc.getX();
int z = loc.getZ();
if (isIn(region, x, z)) {
@@ -700,14 +681,17 @@ public class BukkitChunkManager extends ChunkManager {
if (entity.getVehicle() != null) {
continue;
}
- EntityWrapper wrap = new EntityWrapper(entity, (short) 2);
+ EntityWrapper wrap = new ReplicatingEntityWrapper(entity, (short) 2);
+ wrap.saveEntity();
this.entities.add(wrap);
}
}
- public void saveEntitiesIn(Chunk chunk, RegionWrapper region, int offsetX, int offsetZ, boolean delete) {
+ public void saveEntitiesIn(Chunk chunk, RegionWrapper region, int offsetX, int offsetZ,
+ boolean delete) {
for (Entity entity : chunk.getEntities()) {
- Location loc = BukkitUtil.getLocation(entity);
+ com.github.intellectualsites.plotsquared.plot.object.Location loc =
+ BukkitUtil.getLocation(entity);
int x = loc.getX();
int z = loc.getZ();
if (!isIn(region, x, z)) {
@@ -716,9 +700,10 @@ public class BukkitChunkManager extends ChunkManager {
if (entity.getVehicle() != null) {
continue;
}
- EntityWrapper wrap = new EntityWrapper(entity, (short) 2);
+ EntityWrapper wrap = new ReplicatingEntityWrapper(entity, (short) 2);
wrap.x += offsetX;
wrap.z += offsetZ;
+ wrap.saveEntity();
this.entities.add(wrap);
if (delete) {
if (!(entity instanceof Player)) {
@@ -733,7 +718,7 @@ public class BukkitChunkManager extends ChunkManager {
try {
entity.spawn(world, xOffset, zOffset);
} catch (Exception e) {
- PS.debug("Failed to restore entity (e): " + e.toString());
+ PlotSquared.debug("Failed to restore entity (e): " + e.toString());
e.printStackTrace();
}
}
@@ -743,26 +728,30 @@ public class BukkitChunkManager extends ChunkManager {
public void restoreBlocks(World world, int xOffset, int zOffset) {
for (Entry blockLocEntry : this.chestContents.entrySet()) {
try {
- Block block =
- world.getBlockAt(blockLocEntry.getKey().x + xOffset, blockLocEntry.getKey().y, blockLocEntry.getKey().z + zOffset);
+ Block block = world
+ .getBlockAt(blockLocEntry.getKey().x + xOffset, blockLocEntry.getKey().y,
+ blockLocEntry.getKey().z + zOffset);
BlockState state = block.getState();
if (state instanceof InventoryHolder) {
InventoryHolder chest = (InventoryHolder) state;
chest.getInventory().setContents(blockLocEntry.getValue());
state.update(true);
} else {
- PS.debug("&c[WARN] Plot clear failed to regenerate chest: " + (blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry
- .getKey().y + ',' + (blockLocEntry.getKey().z + zOffset));
+ PlotSquared.debug("&c[WARN] Plot clear failed to regenerate chest: " + (
+ blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry.getKey().y
+ + ',' + (blockLocEntry.getKey().z + zOffset));
}
} catch (IllegalArgumentException ignored) {
- PS.debug("&c[WARN] Plot clear failed to regenerate chest (e): " + (blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry
- .getKey().y + ',' + (blockLocEntry.getKey().z + zOffset));
+ PlotSquared.debug("&c[WARN] Plot clear failed to regenerate chest (e): " + (
+ blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry.getKey().y + ','
+ + (blockLocEntry.getKey().z + zOffset));
}
}
for (Entry blockLocEntry : this.signContents.entrySet()) {
try {
- Block block =
- world.getBlockAt(blockLocEntry.getKey().x + xOffset, blockLocEntry.getKey().y, blockLocEntry.getKey().z + zOffset);
+ Block block = world
+ .getBlockAt(blockLocEntry.getKey().x + xOffset, blockLocEntry.getKey().y,
+ blockLocEntry.getKey().z + zOffset);
BlockState state = block.getState();
if (state instanceof Sign) {
Sign sign = (Sign) state;
@@ -773,95 +762,105 @@ public class BukkitChunkManager extends ChunkManager {
}
state.update(true);
} else {
- PS.debug(
- "&c[WARN] Plot clear failed to regenerate sign: " + (blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry
- .getKey().y
- + ',' + (
- blockLocEntry.getKey().z + zOffset));
+ PlotSquared.debug("&c[WARN] Plot clear failed to regenerate sign: " + (
+ blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry.getKey().y
+ + ',' + (blockLocEntry.getKey().z + zOffset));
}
} catch (IndexOutOfBoundsException ignored) {
- PS.debug("&c[WARN] Plot clear failed to regenerate sign: " + (blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry.getKey().y
- + ',' + (
- blockLocEntry.getKey().z + zOffset));
+ PlotSquared.debug("&c[WARN] Plot clear failed to regenerate sign: " + (
+ blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry.getKey().y + ','
+ + (blockLocEntry.getKey().z + zOffset));
}
}
for (Entry blockLocEntry : this.dispenserContents.entrySet()) {
try {
- Block block =
- world.getBlockAt(blockLocEntry.getKey().x + xOffset, blockLocEntry.getKey().y, blockLocEntry.getKey().z + zOffset);
+ Block block = world
+ .getBlockAt(blockLocEntry.getKey().x + xOffset, blockLocEntry.getKey().y,
+ blockLocEntry.getKey().z + zOffset);
BlockState state = block.getState();
if (state instanceof Dispenser) {
- ((InventoryHolder) state).getInventory().setContents(blockLocEntry.getValue());
+ ((InventoryHolder) state).getInventory()
+ .setContents(blockLocEntry.getValue());
state.update(true);
} else {
- PS.debug("&c[WARN] Plot clear failed to regenerate dispenser: " + (blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry
- .getKey().y + ',' + (blockLocEntry.getKey().z + zOffset));
+ PlotSquared.debug("&c[WARN] Plot clear failed to regenerate dispenser: " + (
+ blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry.getKey().y
+ + ',' + (blockLocEntry.getKey().z + zOffset));
}
} catch (IllegalArgumentException ignored) {
- PS.debug("&c[WARN] Plot clear failed to regenerate dispenser (e): " + (blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry
- .getKey().y + ',' + (blockLocEntry.getKey().z + zOffset));
+ PlotSquared.debug("&c[WARN] Plot clear failed to regenerate dispenser (e): " + (
+ blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry.getKey().y + ','
+ + (blockLocEntry.getKey().z + zOffset));
}
}
for (Entry blockLocEntry : this.dropperContents.entrySet()) {
try {
- Block block =
- world.getBlockAt(blockLocEntry.getKey().x + xOffset, blockLocEntry.getKey().y, blockLocEntry.getKey().z + zOffset);
+ Block block = world
+ .getBlockAt(blockLocEntry.getKey().x + xOffset, blockLocEntry.getKey().y,
+ blockLocEntry.getKey().z + zOffset);
BlockState state = block.getState();
if (state instanceof Dropper) {
- ((InventoryHolder) state).getInventory().setContents(blockLocEntry.getValue());
+ ((InventoryHolder) state).getInventory()
+ .setContents(blockLocEntry.getValue());
state.update(true);
} else {
- PS.debug("&c[WARN] Plot clear failed to regenerate dispenser: " + (blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry
- .getKey().y + ',' + (blockLocEntry.getKey().z + zOffset));
+ PlotSquared.debug("&c[WARN] Plot clear failed to regenerate dispenser: " + (
+ blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry.getKey().y
+ + ',' + (blockLocEntry.getKey().z + zOffset));
}
} catch (IllegalArgumentException ignored) {
- PS.debug("&c[WARN] Plot clear failed to regenerate dispenser (e): " + (blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry
- .getKey().y + ',' + (blockLocEntry.getKey().z + zOffset));
+ PlotSquared.debug("&c[WARN] Plot clear failed to regenerate dispenser (e): " + (
+ blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry.getKey().y + ','
+ + (blockLocEntry.getKey().z + zOffset));
}
}
for (Entry blockLocEntry : this.beaconContents.entrySet()) {
try {
- Block block =
- world.getBlockAt(blockLocEntry.getKey().x + xOffset, blockLocEntry.getKey().y, blockLocEntry.getKey().z + zOffset);
+ Block block = world
+ .getBlockAt(blockLocEntry.getKey().x + xOffset, blockLocEntry.getKey().y,
+ blockLocEntry.getKey().z + zOffset);
BlockState state = block.getState();
if (state instanceof Beacon) {
- ((InventoryHolder) state).getInventory().setContents(blockLocEntry.getValue());
+ ((InventoryHolder) state).getInventory()
+ .setContents(blockLocEntry.getValue());
state.update(true);
} else {
- PS.debug("&c[WARN] Plot clear failed to regenerate beacon: " + (blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry
- .getKey().y + ',' + (blockLocEntry.getKey().z + zOffset));
+ PlotSquared.debug("&c[WARN] Plot clear failed to regenerate beacon: " + (
+ blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry.getKey().y
+ + ',' + (blockLocEntry.getKey().z + zOffset));
}
} catch (IllegalArgumentException ignored) {
- PS.debug("&c[WARN] Plot clear failed to regenerate beacon (e): " + (blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry
- .getKey().y + ',' + (blockLocEntry.getKey().z + zOffset));
+ PlotSquared.debug("&c[WARN] Plot clear failed to regenerate beacon (e): " + (
+ blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry.getKey().y + ','
+ + (blockLocEntry.getKey().z + zOffset));
}
}
for (Entry blockLocMaterialEntry : this.jukeboxDisc.entrySet()) {
try {
- Block block =
- world.getBlockAt(blockLocMaterialEntry.getKey().x + xOffset, blockLocMaterialEntry.getKey().y, blockLocMaterialEntry
- .getKey().z + zOffset);
+ Block block = world.getBlockAt(blockLocMaterialEntry.getKey().x + xOffset,
+ blockLocMaterialEntry.getKey().y,
+ blockLocMaterialEntry.getKey().z + zOffset);
BlockState state = block.getState();
if (state instanceof Jukebox) {
((Jukebox) state).setPlaying(blockLocMaterialEntry.getValue());
state.update(true);
} else {
- PS.debug("&c[WARN] Plot clear failed to restore jukebox: " + (blockLocMaterialEntry.getKey().x + xOffset) + ','
- + blockLocMaterialEntry
- .getKey().y + ',' + (
- blockLocMaterialEntry.getKey().z + zOffset));
+ PlotSquared.debug("&c[WARN] Plot clear failed to restore jukebox: " + (
+ blockLocMaterialEntry.getKey().x + xOffset) + ','
+ + blockLocMaterialEntry.getKey().y + ',' + (
+ blockLocMaterialEntry.getKey().z + zOffset));
}
} catch (Exception ignored) {
- PS.debug("&c[WARN] Plot clear failed to regenerate jukebox (e): " + (blockLocMaterialEntry.getKey().x + xOffset) + ','
- + blockLocMaterialEntry
- .getKey().y + ',' + (
- blockLocMaterialEntry.getKey().z + zOffset));
+ PlotSquared.debug("&c[WARN] Plot clear failed to regenerate jukebox (e): " + (
+ blockLocMaterialEntry.getKey().x + xOffset) + ',' + blockLocMaterialEntry
+ .getKey().y + ',' + (blockLocMaterialEntry.getKey().z + zOffset));
}
}
for (Entry blockLocEntry : this.skullData.entrySet()) {
try {
- Block block =
- world.getBlockAt(blockLocEntry.getKey().x + xOffset, blockLocEntry.getKey().y, blockLocEntry.getKey().z + zOffset);
+ Block block = world
+ .getBlockAt(blockLocEntry.getKey().x + xOffset, blockLocEntry.getKey().y,
+ blockLocEntry.getKey().z + zOffset);
BlockState state = block.getState();
if (state instanceof Skull) {
Object[] data = blockLocEntry.getValue();
@@ -872,193 +871,221 @@ public class BukkitChunkManager extends ChunkManager {
((Skull) state).setSkullType((SkullType) data[3]);
state.update(true);
} else {
- PS.debug("&c[WARN] Plot clear failed to restore skull: " + (blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry
- .getKey().y + ',' + (blockLocEntry.getKey().z + zOffset));
+ PlotSquared.debug("&c[WARN] Plot clear failed to restore skull: " + (
+ blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry.getKey().y
+ + ',' + (blockLocEntry.getKey().z + zOffset));
}
} catch (Exception e) {
- PS.debug("&c[WARN] Plot clear failed to regenerate skull (e): " + (blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry
- .getKey().y + ',' + (blockLocEntry.getKey().z + zOffset));
+ PlotSquared.debug("&c[WARN] Plot clear failed to regenerate skull (e): " + (
+ blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry.getKey().y + ','
+ + (blockLocEntry.getKey().z + zOffset));
e.printStackTrace();
}
}
for (Entry blockLocEntry : this.hopperContents.entrySet()) {
try {
- Block block =
- world.getBlockAt(blockLocEntry.getKey().x + xOffset, blockLocEntry.getKey().y, blockLocEntry.getKey().z + zOffset);
+ Block block = world
+ .getBlockAt(blockLocEntry.getKey().x + xOffset, blockLocEntry.getKey().y,
+ blockLocEntry.getKey().z + zOffset);
BlockState state = block.getState();
if (state instanceof Hopper) {
- ((InventoryHolder) state).getInventory().setContents(blockLocEntry.getValue());
+ ((InventoryHolder) state).getInventory()
+ .setContents(blockLocEntry.getValue());
state.update(true);
} else {
- PS.debug("&c[WARN] Plot clear failed to regenerate hopper: " + (blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry
- .getKey().y + ',' + (blockLocEntry.getKey().z + zOffset));
+ PlotSquared.debug("&c[WARN] Plot clear failed to regenerate hopper: " + (
+ blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry.getKey().y
+ + ',' + (blockLocEntry.getKey().z + zOffset));
}
} catch (IllegalArgumentException ignored) {
- PS.debug("&c[WARN] Plot clear failed to regenerate hopper (e): " + (blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry
- .getKey().y + ',' + (blockLocEntry.getKey().z + zOffset));
+ PlotSquared.debug("&c[WARN] Plot clear failed to regenerate hopper (e): " + (
+ blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry.getKey().y + ','
+ + (blockLocEntry.getKey().z + zOffset));
}
}
for (Entry blockLocNoteEntry : this.noteBlockContents.entrySet()) {
try {
- Block block = world.getBlockAt(
- blockLocNoteEntry.getKey().x + xOffset, blockLocNoteEntry.getKey().y, blockLocNoteEntry.getKey().z + zOffset);
+ Block block = world.getBlockAt(blockLocNoteEntry.getKey().x + xOffset,
+ blockLocNoteEntry.getKey().y, blockLocNoteEntry.getKey().z + zOffset);
BlockState state = block.getState();
if (state instanceof NoteBlock) {
((NoteBlock) state).setNote(blockLocNoteEntry.getValue());
state.update(true);
} else {
- PS.debug("&c[WARN] Plot clear failed to regenerate note block: " + (blockLocNoteEntry.getKey().x + xOffset) + ','
- + blockLocNoteEntry
- .getKey().y + ',' + (
- blockLocNoteEntry.getKey().z + zOffset));
+ PlotSquared.debug(
+ "&c[WARN] Plot clear failed to regenerate note block: " + (
+ blockLocNoteEntry.getKey().x + xOffset) + ',' + blockLocNoteEntry
+ .getKey().y + ',' + (blockLocNoteEntry.getKey().z + zOffset));
}
} catch (Exception ignored) {
- PS.debug("&c[WARN] Plot clear failed to regenerate note block (e): " + (blockLocNoteEntry.getKey().x + xOffset) + ','
- + blockLocNoteEntry
- .getKey().y + ',' + (
- blockLocNoteEntry.getKey().z + zOffset));
+ PlotSquared.debug(
+ "&c[WARN] Plot clear failed to regenerate note block (e): " + (
+ blockLocNoteEntry.getKey().x + xOffset) + ',' + blockLocNoteEntry
+ .getKey().y + ',' + (blockLocNoteEntry.getKey().z + zOffset));
}
}
for (Entry blockLocShortEntry : this.brewTime.entrySet()) {
try {
- Block block = world.getBlockAt(
- blockLocShortEntry.getKey().x + xOffset, blockLocShortEntry.getKey().y, blockLocShortEntry.getKey().z + zOffset);
+ Block block = world.getBlockAt(blockLocShortEntry.getKey().x + xOffset,
+ blockLocShortEntry.getKey().y, blockLocShortEntry.getKey().z + zOffset);
BlockState state = block.getState();
if (state instanceof BrewingStand) {
((BrewingStand) state).setBrewingTime(blockLocShortEntry.getValue());
} else {
- PS.debug("&c[WARN] Plot clear failed to restore brewing stand cooking: " + (blockLocShortEntry.getKey().x + xOffset) + ','
- + blockLocShortEntry
- .getKey().y + ',' + (
- blockLocShortEntry.getKey().z + zOffset));
+ PlotSquared.debug(
+ "&c[WARN] Plot clear failed to restore brewing stand cooking: " + (
+ blockLocShortEntry.getKey().x + xOffset) + ',' + blockLocShortEntry
+ .getKey().y + ',' + (blockLocShortEntry.getKey().z + zOffset));
}
} catch (Exception ignored) {
- PS.debug("&c[WARN] Plot clear failed to restore brewing stand cooking (e): " + (blockLocShortEntry.getKey().x + xOffset) + ','
- + blockLocShortEntry.getKey().y + ',' + (blockLocShortEntry.getKey().z + zOffset));
+ PlotSquared.debug(
+ "&c[WARN] Plot clear failed to restore brewing stand cooking (e): " + (
+ blockLocShortEntry.getKey().x + xOffset) + ',' + blockLocShortEntry
+ .getKey().y + ',' + (blockLocShortEntry.getKey().z + zOffset));
}
}
- for (Entry blockLocEntityTypeEntry : this.spawnerData.entrySet()) {
+ for (Entry blockLocEntityTypeEntry : this.spawnerData
+ .entrySet()) {
try {
- Block block =
- world.getBlockAt(blockLocEntityTypeEntry.getKey().x + xOffset, blockLocEntityTypeEntry.getKey().y, blockLocEntityTypeEntry
- .getKey().z + zOffset);
+ Block block = world.getBlockAt(blockLocEntityTypeEntry.getKey().x + xOffset,
+ blockLocEntityTypeEntry.getKey().y,
+ blockLocEntityTypeEntry.getKey().z + zOffset);
BlockState state = block.getState();
if (state instanceof CreatureSpawner) {
- ((CreatureSpawner) state).setSpawnedType(blockLocEntityTypeEntry.getValue());
+ ((CreatureSpawner) state)
+ .setSpawnedType(blockLocEntityTypeEntry.getValue());
state.update(true);
} else {
- PS.debug("&c[WARN] Plot clear failed to restore spawner type: " + (blockLocEntityTypeEntry.getKey().x + xOffset) + ','
- + blockLocEntityTypeEntry
- .getKey().y + ',' + (
- blockLocEntityTypeEntry.getKey().z + zOffset));
+ PlotSquared.debug("&c[WARN] Plot clear failed to restore spawner type: " + (
+ blockLocEntityTypeEntry.getKey().x + xOffset) + ','
+ + blockLocEntityTypeEntry.getKey().y + ',' + (
+ blockLocEntityTypeEntry.getKey().z + zOffset));
}
} catch (Exception ignored) {
- PS.debug("&c[WARN] Plot clear failed to restore spawner type (e): " + (blockLocEntityTypeEntry.getKey().x + xOffset) + ','
- + blockLocEntityTypeEntry.getKey().y + ',' + (blockLocEntityTypeEntry.getKey().z + zOffset));
+ PlotSquared.debug("&c[WARN] Plot clear failed to restore spawner type (e): " + (
+ blockLocEntityTypeEntry.getKey().x + xOffset) + ','
+ + blockLocEntityTypeEntry.getKey().y + ',' + (
+ blockLocEntityTypeEntry.getKey().z + zOffset));
}
}
for (Entry blockLocStringEntry : this.cmdData.entrySet()) {
try {
- Block block = world.getBlockAt(
- blockLocStringEntry.getKey().x + xOffset, blockLocStringEntry.getKey().y, blockLocStringEntry.getKey().z + zOffset);
+ Block block = world.getBlockAt(blockLocStringEntry.getKey().x + xOffset,
+ blockLocStringEntry.getKey().y, blockLocStringEntry.getKey().z + zOffset);
BlockState state = block.getState();
if (state instanceof CommandBlock) {
((CommandBlock) state).setCommand(blockLocStringEntry.getValue());
state.update(true);
} else {
- PS.debug("&c[WARN] Plot clear failed to restore command block: " + (blockLocStringEntry.getKey().x + xOffset) + ','
- + blockLocStringEntry
- .getKey().y + ',' + (
+ PlotSquared.debug(
+ "&c[WARN] Plot clear failed to restore command block: " + (
+ blockLocStringEntry.getKey().x + xOffset) + ','
+ + blockLocStringEntry.getKey().y + ',' + (
blockLocStringEntry.getKey().z + zOffset));
}
} catch (Exception ignored) {
- PS.debug("&c[WARN] Plot clear failed to restore command block (e): " + (blockLocStringEntry.getKey().x + xOffset) + ','
- + blockLocStringEntry
- .getKey().y + ',' + (
- blockLocStringEntry.getKey().z + zOffset));
+ PlotSquared.debug(
+ "&c[WARN] Plot clear failed to restore command block (e): " + (
+ blockLocStringEntry.getKey().x + xOffset) + ',' + blockLocStringEntry
+ .getKey().y + ',' + (blockLocStringEntry.getKey().z + zOffset));
}
}
- for (Entry blockLocEntry : this.brewingStandContents.entrySet()) {
+ for (Entry blockLocEntry : this.brewingStandContents
+ .entrySet()) {
try {
- Block block =
- world.getBlockAt(blockLocEntry.getKey().x + xOffset, blockLocEntry.getKey().y, blockLocEntry.getKey().z + zOffset);
+ Block block = world
+ .getBlockAt(blockLocEntry.getKey().x + xOffset, blockLocEntry.getKey().y,
+ blockLocEntry.getKey().z + zOffset);
BlockState state = block.getState();
if (state instanceof BrewingStand) {
- ((InventoryHolder) state).getInventory().setContents(blockLocEntry.getValue());
+ ((InventoryHolder) state).getInventory()
+ .setContents(blockLocEntry.getValue());
state.update(true);
} else {
- PS.debug("&c[WARN] Plot clear failed to regenerate brewing stand: " + (blockLocEntry.getKey().x + xOffset) + ','
- + blockLocEntry
- .getKey().y + ',' + (
- blockLocEntry.getKey().z
- + zOffset));
+ PlotSquared.debug(
+ "&c[WARN] Plot clear failed to regenerate brewing stand: " + (
+ blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry.getKey().y
+ + ',' + (blockLocEntry.getKey().z + zOffset));
}
} catch (IllegalArgumentException ignored) {
- PS.debug("&c[WARN] Plot clear failed to regenerate brewing stand (e): " + (blockLocEntry.getKey().x + xOffset) + ','
- + blockLocEntry.getKey().y + ',' + (blockLocEntry.getKey().z + zOffset));
+ PlotSquared.debug(
+ "&c[WARN] Plot clear failed to regenerate brewing stand (e): " + (
+ blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry.getKey().y
+ + ',' + (blockLocEntry.getKey().z + zOffset));
}
}
for (Entry blockLocEntry : this.furnaceTime.entrySet()) {
try {
- Block block =
- world.getBlockAt(blockLocEntry.getKey().x + xOffset, blockLocEntry.getKey().y, blockLocEntry.getKey().z + zOffset);
+ Block block = world
+ .getBlockAt(blockLocEntry.getKey().x + xOffset, blockLocEntry.getKey().y,
+ blockLocEntry.getKey().z + zOffset);
BlockState state = block.getState();
if (state instanceof Furnace) {
Short[] time = blockLocEntry.getValue();
((Furnace) state).setBurnTime(time[0]);
((Furnace) state).setCookTime(time[1]);
} else {
- PS.debug(
- "&c[WARN] Plot clear failed to restore furnace cooking: " + (blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry
- .getKey().y + ',' + (blockLocEntry.getKey().z + zOffset));
+ PlotSquared.debug(
+ "&c[WARN] Plot clear failed to restore furnace cooking: " + (
+ blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry.getKey().y
+ + ',' + (blockLocEntry.getKey().z + zOffset));
}
} catch (Exception ignored) {
- PS.debug(
- "&c[WARN] Plot clear failed to restore furnace cooking (e): " + (blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry
- .getKey().y + ',' + (blockLocEntry.getKey().z + zOffset));
+ PlotSquared.debug(
+ "&c[WARN] Plot clear failed to restore furnace cooking (e): " + (
+ blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry.getKey().y
+ + ',' + (blockLocEntry.getKey().z + zOffset));
}
}
for (Entry blockLocEntry : this.furnaceContents.entrySet()) {
try {
- Block block =
- world.getBlockAt(blockLocEntry.getKey().x + xOffset, blockLocEntry.getKey().y, blockLocEntry.getKey().z + zOffset);
+ Block block = world
+ .getBlockAt(blockLocEntry.getKey().x + xOffset, blockLocEntry.getKey().y,
+ blockLocEntry.getKey().z + zOffset);
BlockState state = block.getState();
if (state instanceof Furnace) {
- ((InventoryHolder) state).getInventory().setContents(blockLocEntry.getValue());
+ ((InventoryHolder) state).getInventory()
+ .setContents(blockLocEntry.getValue());
state.update(true);
} else {
- PS.debug("&c[WARN] Plot clear failed to regenerate furnace: " + (blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry
- .getKey().y + ',' + (blockLocEntry.getKey().z + zOffset));
+ PlotSquared.debug("&c[WARN] Plot clear failed to regenerate furnace: " + (
+ blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry.getKey().y
+ + ',' + (blockLocEntry.getKey().z + zOffset));
}
} catch (IllegalArgumentException ignored) {
- PS.debug("&c[WARN] Plot clear failed to regenerate furnace (e): " + (blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry
- .getKey().y + ',' + (blockLocEntry.getKey().z + zOffset));
+ PlotSquared.debug("&c[WARN] Plot clear failed to regenerate furnace (e): " + (
+ blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry.getKey().y + ','
+ + (blockLocEntry.getKey().z + zOffset));
}
}
for (Entry blockLocByteEntry : this.bannerBase.entrySet()) {
try {
- Block block = world.getBlockAt(
- blockLocByteEntry.getKey().x + xOffset, blockLocByteEntry.getKey().y, blockLocByteEntry.getKey().z + zOffset);
+ Block block = world.getBlockAt(blockLocByteEntry.getKey().x + xOffset,
+ blockLocByteEntry.getKey().y, blockLocByteEntry.getKey().z + zOffset);
BlockState state = block.getState();
if (state instanceof Banner) {
Banner banner = (Banner) state;
DyeColor base = blockLocByteEntry.getValue();
- List patterns = this.bannerPatterns.get(blockLocByteEntry.getKey());
+ List patterns =
+ this.bannerPatterns.get(blockLocByteEntry.getKey());
banner.setBaseColor(base);
banner.setPatterns(patterns);
state.update(true);
} else {
- PS.debug("&c[WARN] Plot clear failed to regenerate banner: " + (blockLocByteEntry.getKey().x + xOffset) + ','
- + blockLocByteEntry.getKey().y + ',' + (blockLocByteEntry.getKey().z + zOffset));
+ PlotSquared.debug("&c[WARN] Plot clear failed to regenerate banner: " + (
+ blockLocByteEntry.getKey().x + xOffset) + ',' + blockLocByteEntry
+ .getKey().y + ',' + (blockLocByteEntry.getKey().z + zOffset));
}
} catch (Exception ignored) {
- PS.debug("&c[WARN] Plot clear failed to regenerate banner (e): " + (blockLocByteEntry.getKey().x + xOffset) + ','
- + blockLocByteEntry.getKey().y + ',' + (blockLocByteEntry.getKey().z + zOffset));
+ PlotSquared.debug("&c[WARN] Plot clear failed to regenerate banner (e): " + (
+ blockLocByteEntry.getKey().x + xOffset) + ',' + blockLocByteEntry.getKey().y
+ + ',' + (blockLocByteEntry.getKey().z + zOffset));
}
}
}
- public void saveBlocks(World world, int maxY, int x, int z, int offsetX, int offsetZ, boolean storeNormal) {
+ public void saveBlocks(World world, int maxY, int x, int z, int offsetX, int offsetZ,
+ boolean storeNormal) {
maxY = Math.min(255, maxY);
PlotBlock[] ids;
if (storeNormal) {
@@ -1072,7 +1099,7 @@ public class BukkitChunkManager extends ChunkManager {
if (storeNormal) {
int typeId = id.getId();
if (typeId == 0) {
- ids[y] = PlotBlock.EVERYTHING;
+ ids[y] = StringPlotBlock.EVERYTHING;
} else {
ids[y] = PlotBlock.get((short) typeId, block.getData());
}
@@ -1082,7 +1109,8 @@ public class BukkitChunkManager extends ChunkManager {
BlockLoc bl = new BlockLoc(x + offsetX, y, z + offsetZ);
if (block.getState() instanceof InventoryHolder) {
InventoryHolder inventoryHolder = (InventoryHolder) block.getState();
- ItemStack[] inventory = inventoryHolder.getInventory().getContents().clone();
+ ItemStack[] inventory =
+ inventoryHolder.getInventory().getContents().clone();
switch (id) {
case CHEST:
this.chestContents.put(bl, inventory);
@@ -1105,18 +1133,20 @@ public class BukkitChunkManager extends ChunkManager {
if (time > 0) {
this.brewTime.put(bl, time);
}
- ItemStack[] invBre = brewingStand.getInventory().getContents().clone();
+ ItemStack[] invBre =
+ brewingStand.getInventory().getContents().clone();
this.brewingStandContents.put(bl, invBre);
break;
case FURNACE:
- case BURNING_FURNACE:
+ case LEGACY_BURNING_FURNACE:
Furnace furnace = (Furnace) inventoryHolder;
short burn = furnace.getBurnTime();
short cook = furnace.getCookTime();
- ItemStack[] invFur = furnace.getInventory().getContents().clone();
+ ItemStack[] invFur =
+ furnace.getInventory().getContents().clone();
this.furnaceContents.put(bl, invFur);
if (cook != 0) {
- this.furnaceTime.put(bl, new Short[]{burn, cook});
+ this.furnaceTime.put(bl, new Short[] {burn, cook});
}
break;
}
@@ -1144,7 +1174,8 @@ public class BukkitChunkManager extends ChunkManager {
}
} else if (block.getState() instanceof Skull) {
Skull skull = (Skull) block.getState();
- this.skullData.put(bl, new Object[]{skull.hasOwner(), skull.getOwner(), skull.getRotation(), skull.getSkullType()});
+ this.skullData.put(bl, new Object[] {skull.hasOwner(), skull.getOwner(),
+ skull.getRotation(), skull.getSkullType()});
} else if (block.getState() instanceof Banner) {
Banner banner = (Banner) block.getState();
DyeColor base = banner.getBaseColor();
@@ -1153,9 +1184,9 @@ public class BukkitChunkManager extends ChunkManager {
}
} catch (Exception e) {
- PS.debug("------------ FAILED TO DO SOMETHING --------");
+ PlotSquared.debug("------------ FAILED TO DO SOMETHING --------");
e.printStackTrace();
- PS.debug("------------ but we caught it ^ --------");
+ PlotSquared.debug("------------ but we caught it ^ --------");
}
}
}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitCommand.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitCommand.java
similarity index 60%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitCommand.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitCommand.java
index d97271f4b..27edabf78 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitCommand.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitCommand.java
@@ -1,16 +1,10 @@
-package com.plotsquared.bukkit.util;
+package com.github.intellectualsites.plotsquared.bukkit.util;
-import com.intellectualcrafters.plot.commands.MainCommand;
-import com.intellectualcrafters.plot.object.ConsolePlayer;
-import com.intellectualcrafters.plot.object.PlotPlayer;
-import com.plotsquared.bukkit.commands.DebugUUID;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.command.ConsoleCommandSender;
-import org.bukkit.command.ProxiedCommandSender;
-import org.bukkit.command.RemoteConsoleCommandSender;
-import org.bukkit.command.TabCompleter;
+import com.github.intellectualsites.plotsquared.bukkit.commands.DebugUUID;
+import com.github.intellectualsites.plotsquared.plot.commands.MainCommand;
+import com.github.intellectualsites.plotsquared.plot.object.ConsolePlayer;
+import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer;
+import org.bukkit.command.*;
import org.bukkit.entity.Player;
import java.util.ArrayList;
@@ -25,19 +19,22 @@ public class BukkitCommand implements CommandExecutor, TabCompleter {
}
@Override
- public boolean onCommand(CommandSender commandSender, Command command, String commandLabel, String[] args) {
+ public boolean onCommand(CommandSender commandSender, Command command, String commandLabel,
+ String[] args) {
if (commandSender instanceof Player) {
return MainCommand.onCommand(BukkitUtil.getPlayer((Player) commandSender), args);
}
- if (commandSender instanceof ConsoleCommandSender || commandSender instanceof ProxiedCommandSender
- || commandSender instanceof RemoteConsoleCommandSender) {
+ if (commandSender instanceof ConsoleCommandSender
+ || commandSender instanceof ProxiedCommandSender
+ || commandSender instanceof RemoteConsoleCommandSender) {
return MainCommand.onCommand(ConsolePlayer.getConsole(), args);
}
return false;
}
@Override
- public List onTabComplete(CommandSender commandSender, Command command, String s, String[] args) {
+ public List onTabComplete(CommandSender commandSender, Command command, String s,
+ String[] args) {
if (!(commandSender instanceof Player)) {
return null;
}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitEconHandler.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitEconHandler.java
similarity index 63%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitEconHandler.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitEconHandler.java
index 830afe93c..a9978b76c 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitEconHandler.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitEconHandler.java
@@ -1,10 +1,10 @@
-package com.plotsquared.bukkit.util;
+package com.github.intellectualsites.plotsquared.bukkit.util;
-import com.intellectualcrafters.plot.object.OfflinePlotPlayer;
-import com.intellectualcrafters.plot.object.PlotPlayer;
-import com.intellectualcrafters.plot.util.EconHandler;
-import com.plotsquared.bukkit.object.BukkitOfflinePlayer;
-import com.plotsquared.bukkit.object.BukkitPlayer;
+import com.github.intellectualsites.plotsquared.bukkit.object.BukkitOfflinePlayer;
+import com.github.intellectualsites.plotsquared.bukkit.object.BukkitPlayer;
+import com.github.intellectualsites.plotsquared.plot.object.OfflinePlotPlayer;
+import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer;
+import com.github.intellectualsites.plotsquared.plot.util.EconHandler;
import net.milkbowl.vault.economy.Economy;
import net.milkbowl.vault.permission.Permission;
import org.bukkit.Bukkit;
@@ -24,7 +24,8 @@ public class BukkitEconHandler extends EconHandler {
}
private boolean setupPermissions() {
- RegisteredServiceProvider permissionProvider = Bukkit.getServer().getServicesManager().getRegistration(Permission.class);
+ RegisteredServiceProvider permissionProvider =
+ Bukkit.getServer().getServicesManager().getRegistration(Permission.class);
if (permissionProvider != null) {
this.perms = permissionProvider.getProvider();
}
@@ -35,15 +36,15 @@ public class BukkitEconHandler extends EconHandler {
if (Bukkit.getServer().getPluginManager().getPlugin("Vault") == null) {
return false;
}
- RegisteredServiceProvider economyProvider = Bukkit.getServer().getServicesManager().getRegistration(Economy.class);
+ RegisteredServiceProvider economyProvider =
+ Bukkit.getServer().getServicesManager().getRegistration(Economy.class);
if (economyProvider != null) {
this.econ = economyProvider.getProvider();
}
return this.econ != null;
}
- @Override
- public double getMoney(PlotPlayer player) {
+ @Override public double getMoney(PlotPlayer player) {
double bal = super.getMoney(player);
if (Double.isNaN(bal)) {
return this.econ.getBalance(((BukkitPlayer) player).player);
@@ -51,28 +52,23 @@ public class BukkitEconHandler extends EconHandler {
return bal;
}
- @Override
- public void withdrawMoney(PlotPlayer player, double amount) {
+ @Override public void withdrawMoney(PlotPlayer player, double amount) {
this.econ.withdrawPlayer(((BukkitPlayer) player).player, amount);
}
- @Override
- public void depositMoney(PlotPlayer player, double amount) {
+ @Override public void depositMoney(PlotPlayer player, double amount) {
this.econ.depositPlayer(((BukkitPlayer) player).player, amount);
}
- @Override
- public void depositMoney(OfflinePlotPlayer player, double amount) {
+ @Override public void depositMoney(OfflinePlotPlayer player, double amount) {
this.econ.depositPlayer(((BukkitOfflinePlayer) player).player, amount);
}
- @Override
- public boolean hasPermission(String world, String player, String perm) {
+ @Override public boolean hasPermission(String world, String player, String perm) {
return this.perms.playerHas(world, Bukkit.getOfflinePlayer(player), perm);
}
- @Override
- public double getBalance(PlotPlayer player) {
+ @Override public double getBalance(PlotPlayer player) {
return this.econ.getBalance(player.getName());
}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitEventUtil.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitEventUtil.java
similarity index 51%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitEventUtil.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitEventUtil.java
index 6564c6dc7..4b7df7471 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitEventUtil.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitEventUtil.java
@@ -1,16 +1,10 @@
-package com.plotsquared.bukkit.util;
+package com.github.intellectualsites.plotsquared.bukkit.util;
-import com.intellectualcrafters.plot.flag.Flag;
-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.object.Rating;
-import com.intellectualcrafters.plot.util.EventUtil;
-import com.plotsquared.bukkit.events.*;
-import com.plotsquared.bukkit.object.BukkitPlayer;
+import com.github.intellectualsites.plotsquared.bukkit.events.*;
+import com.github.intellectualsites.plotsquared.bukkit.object.BukkitPlayer;
+import com.github.intellectualsites.plotsquared.plot.flag.Flag;
+import com.github.intellectualsites.plotsquared.plot.object.*;
+import com.github.intellectualsites.plotsquared.plot.util.EventUtil;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
@@ -34,89 +28,74 @@ public class BukkitEventUtil extends EventUtil {
return !(event instanceof Cancellable) || !((Cancellable) event).isCancelled();
}
- @Override
- public boolean callClaim(PlotPlayer player, Plot plot, boolean auto) {
+ @Override public boolean callClaim(PlotPlayer player, Plot plot, boolean auto) {
return callEvent(new PlayerClaimPlotEvent(getPlayer(player), plot, auto));
}
- @Override
- public boolean callTeleport(PlotPlayer player, Location from, Plot plot) {
+ @Override public boolean callTeleport(PlotPlayer player, Location from, Plot plot) {
return callEvent(new PlayerTeleportToPlotEvent(getPlayer(player), from, plot));
}
- @Override
- public boolean callComponentSet(Plot plot, String component) {
+ @Override public boolean callComponentSet(Plot plot, String component) {
return callEvent(new PlotComponentSetEvent(plot, component));
}
- @Override
- public boolean callClear(Plot plot) {
+ @Override public boolean callClear(Plot plot) {
return callEvent(new PlotClearEvent(plot));
}
- @Override
- public void callDelete(Plot plot) {
+ @Override public void callDelete(Plot plot) {
callEvent(new PlotDeleteEvent(plot));
}
- @Override
- public boolean callFlagAdd(Flag flag, Plot plot) {
+ @Override public boolean callFlagAdd(Flag flag, Plot plot) {
return callEvent(new PlotFlagAddEvent(flag, plot));
}
- @Override
- public boolean callFlagRemove(Flag> flag, Plot plot, Object value) {
+ @Override public boolean callFlagRemove(Flag> flag, Plot plot, Object value) {
return callEvent(new PlotFlagRemoveEvent(flag, plot));
}
- @Override
- public boolean callMerge(Plot plot, ArrayList plots) {
+ @Override public boolean callMerge(Plot plot, ArrayList plots) {
return callEvent(new PlotMergeEvent(BukkitUtil.getWorld(plot.getWorldName()), plot, plots));
}
- @Override
- public boolean callUnlink(PlotArea area, ArrayList plots) {
+ @Override public boolean callUnlink(PlotArea area, ArrayList plots) {
return callEvent(new PlotUnlinkEvent(BukkitUtil.getWorld(area.worldname), area, plots));
}
- @Override
- public void callEntry(PlotPlayer player, Plot plot) {
+ @Override public void callEntry(PlotPlayer player, Plot plot) {
callEvent(new PlayerEnterPlotEvent(getPlayer(player), plot));
}
- @Override
- public void callLeave(PlotPlayer player, Plot plot) {
+ @Override public void callLeave(PlotPlayer player, Plot plot) {
callEvent(new PlayerLeavePlotEvent(getPlayer(player), plot));
}
- @Override
- public void callDenied(PlotPlayer initiator, Plot plot, UUID player, boolean added) {
+ @Override public void callDenied(PlotPlayer initiator, Plot plot, UUID player, boolean added) {
callEvent(new PlayerPlotDeniedEvent(getPlayer(initiator), plot, player, added));
}
- @Override
- public void callTrusted(PlotPlayer initiator, Plot plot, UUID player, boolean added) {
+ @Override public void callTrusted(PlotPlayer initiator, Plot plot, UUID player, boolean added) {
callEvent(new PlayerPlotTrustedEvent(getPlayer(initiator), plot, player, added));
}
- @Override
- public void callMember(PlotPlayer initiator, Plot plot, UUID player, boolean added) {
+ @Override public void callMember(PlotPlayer initiator, Plot plot, UUID player, boolean added) {
callEvent(new PlayerPlotHelperEvent(getPlayer(initiator), plot, player, added));
}
@Override
- public boolean callOwnerChange(PlotPlayer initiator, Plot plot, UUID oldOwner, UUID newOwner, boolean hasOldOwner) {
- return callEvent(new PlotChangeOwnerEvent(getPlayer(initiator), plot, oldOwner, newOwner, hasOldOwner));
+ public boolean callOwnerChange(PlotPlayer initiator, Plot plot, UUID oldOwner, UUID newOwner,
+ boolean hasOldOwner) {
+ return callEvent(
+ new PlotChangeOwnerEvent(getPlayer(initiator), plot, oldOwner, newOwner, hasOldOwner));
}
- @Override
- public boolean callFlagRemove(Flag flag, Object object, PlotCluster cluster) {
+ @Override public boolean callFlagRemove(Flag flag, Object object, PlotCluster cluster) {
return callEvent(new ClusterFlagRemoveEvent(flag, cluster));
}
- @Override
- @Nullable
- public Rating callRating(PlotPlayer player, Plot plot, Rating rating) {
+ @Override @Nullable public Rating callRating(PlotPlayer player, Plot plot, Rating rating) {
PlotRateEvent event = new PlotRateEvent(player, rating, plot);
Bukkit.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) {
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitHybridUtils.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitHybridUtils.java
similarity index 82%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitHybridUtils.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitHybridUtils.java
index 225998ab2..0410ef7a9 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitHybridUtils.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitHybridUtils.java
@@ -1,17 +1,17 @@
-package com.plotsquared.bukkit.util;
+package com.github.intellectualsites.plotsquared.bukkit.util;
-import com.intellectualcrafters.plot.generator.HybridUtils;
-import com.intellectualcrafters.plot.object.Location;
-import com.intellectualcrafters.plot.object.PlotBlock;
-import com.intellectualcrafters.plot.object.RegionWrapper;
-import com.intellectualcrafters.plot.object.RunnableVal;
-import com.intellectualcrafters.plot.util.ChunkManager;
-import com.intellectualcrafters.plot.util.MainUtil;
-import com.intellectualcrafters.plot.util.MathMan;
-import com.intellectualcrafters.plot.util.TaskManager;
-import com.intellectualcrafters.plot.util.block.GlobalBlockQueue;
-import com.intellectualcrafters.plot.util.block.LocalBlockQueue;
-import com.intellectualcrafters.plot.util.expiry.PlotAnalysis;
+import com.github.intellectualsites.plotsquared.plot.generator.HybridUtils;
+import com.github.intellectualsites.plotsquared.plot.object.Location;
+import com.github.intellectualsites.plotsquared.plot.object.PlotBlock;
+import com.github.intellectualsites.plotsquared.plot.object.RegionWrapper;
+import com.github.intellectualsites.plotsquared.plot.object.RunnableVal;
+import com.github.intellectualsites.plotsquared.plot.util.ChunkManager;
+import com.github.intellectualsites.plotsquared.plot.util.MainUtil;
+import com.github.intellectualsites.plotsquared.plot.util.MathMan;
+import com.github.intellectualsites.plotsquared.plot.util.TaskManager;
+import com.github.intellectualsites.plotsquared.plot.util.block.GlobalBlockQueue;
+import com.github.intellectualsites.plotsquared.plot.util.block.LocalBlockQueue;
+import com.github.intellectualsites.plotsquared.plot.util.expiry.PlotAnalysis;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.World;
@@ -26,8 +26,8 @@ import java.util.Random;
public class BukkitHybridUtils extends HybridUtils {
- @Override
- public void analyzeRegion(final String world, final RegionWrapper region, final RunnableVal whenDone) {
+ @Override public void analyzeRegion(final String world, final RegionWrapper region,
+ final RunnableVal whenDone) {
// int diff, int variety, int vertices, int rotation, int height_sd
/*
* diff: compare to base by looping through all blocks
@@ -41,8 +41,7 @@ public class BukkitHybridUtils extends HybridUtils {
*
*/
TaskManager.runTaskAsync(new Runnable() {
- @Override
- public void run() {
+ @Override public void run() {
final LocalBlockQueue queue = GlobalBlockQueue.IMP.getNewQueue(world, false);
final World worldObj = Bukkit.getWorld(world);
final ChunkGenerator gen = worldObj.getGenerator();
@@ -50,12 +49,10 @@ public class BukkitHybridUtils extends HybridUtils {
return;
}
final BiomeGrid nullBiomeGrid = new BiomeGrid() {
- @Override
- public void setBiome(int a, int b, Biome c) {
+ @Override public void setBiome(int a, int b, Biome c) {
}
- @Override
- public Biome getBiome(int a, int b) {
+ @Override public Biome getBiome(int a, int b) {
return null;
}
};
@@ -82,15 +79,14 @@ public class BukkitHybridUtils extends HybridUtils {
final short[][][] newBlocks = new short[256][width][length];
final Runnable run = new Runnable() {
- @Override
- public void run() {
+ @Override public void run() {
ChunkManager.chunkTask(bot, top, new RunnableVal() {
- @Override
- public void run(int[] value) {
+ @Override public void run(int[] value) {
// [chunkx, chunkz, pos1x, pos1z, pos2x, pos2z, isedge]
int X = value[0];
int Z = value[1];
- short[][] result = gen.generateExtBlockSections(worldObj, r, X, Z, nullBiomeGrid);
+ short[][] result =
+ gen.generateExtBlockSections(worldObj, r, X, Z, nullBiomeGrid);
int xb = (X << 4) - bx;
int zb = (Z << 4) - bz;
for (int i = 0; i < result.length; i++) {
@@ -125,11 +121,9 @@ public class BukkitHybridUtils extends HybridUtils {
}
}, new Runnable() {
- @Override
- public void run() {
+ @Override public void run() {
TaskManager.runTaskAsync(new Runnable() {
- @Override
- public void run() {
+ @Override public void run() {
int size = width * length;
int[] changes = new int[size];
int[] faces = new int[size];
@@ -151,7 +145,8 @@ public class BukkitHybridUtils extends HybridUtils {
} else {
// check vertices
// modifications_adjacent
- if (x > 0 && z > 0 && y > 0 && x < width - 1 && z < length - 1 && y < 255) {
+ if (x > 0 && z > 0 && y > 0 && x < width - 1
+ && z < length - 1 && y < 255) {
if (newBlocks[y - 1][x][z] == 0) {
faces[i]++;
}
@@ -172,12 +167,15 @@ public class BukkitHybridUtils extends HybridUtils {
}
}
- Material material = Material.getMaterial(now);
+ Material material =
+ Material.getMaterial(now);
if (material != null) {
- Class extends MaterialData> md = material.getData();
+ Class extends MaterialData> md =
+ material.getData();
if (md.equals(Directional.class)) {
data[i] += 8;
- } else if (!md.equals(MaterialData.class)) {
+ } else if (!md
+ .equals(MaterialData.class)) {
data[i]++;
}
}
@@ -199,11 +197,14 @@ public class BukkitHybridUtils extends HybridUtils {
analysis.air = (int) (MathMan.getMean(air) * 100);
analysis.variety = (int) (MathMan.getMean(variety) * 100);
- analysis.changes_sd = (int) MathMan.getSD(changes, analysis.changes);
- analysis.faces_sd = (int) MathMan.getSD(faces, analysis.faces);
+ analysis.changes_sd =
+ (int) MathMan.getSD(changes, analysis.changes);
+ analysis.faces_sd =
+ (int) MathMan.getSD(faces, analysis.faces);
analysis.data_sd = (int) MathMan.getSD(data, analysis.data);
analysis.air_sd = (int) MathMan.getSD(air, analysis.air);
- analysis.variety_sd = (int) MathMan.getSD(variety, analysis.variety);
+ analysis.variety_sd =
+ (int) MathMan.getSD(variety, analysis.variety);
System.gc();
System.gc();
whenDone.value = analysis;
@@ -219,8 +220,7 @@ public class BukkitHybridUtils extends HybridUtils {
MainUtil.initCache();
ChunkManager.chunkTask(bot, top, new RunnableVal() {
- @Override
- public void run(int[] value) {
+ @Override public void run(int[] value) {
int X = value[0];
int Z = value[1];
worldObj.loadChunk(X, Z);
@@ -269,8 +269,7 @@ public class BukkitHybridUtils extends HybridUtils {
worldObj.unloadChunkRequest(X, Z, true);
}
}, new Runnable() {
- @Override
- public void run() {
+ @Override public void run() {
TaskManager.runTaskAsync(run);
}
}, 5);
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitInventoryUtil.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitInventoryUtil.java
similarity index 75%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitInventoryUtil.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitInventoryUtil.java
index cd2c12d51..6beebcd95 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitInventoryUtil.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitInventoryUtil.java
@@ -1,12 +1,13 @@
-package com.plotsquared.bukkit.util;
+package com.github.intellectualsites.plotsquared.bukkit.util;
-import com.intellectualcrafters.plot.object.PlotInventory;
-import com.intellectualcrafters.plot.object.PlotItemStack;
-import com.intellectualcrafters.plot.object.PlotPlayer;
-import com.intellectualcrafters.plot.util.InventoryUtil;
-import com.plotsquared.bukkit.object.BukkitPlayer;
+import com.github.intellectualsites.plotsquared.bukkit.object.BukkitPlayer;
+import com.github.intellectualsites.plotsquared.plot.object.PlotInventory;
+import com.github.intellectualsites.plotsquared.plot.object.PlotItemStack;
+import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer;
+import com.github.intellectualsites.plotsquared.plot.util.InventoryUtil;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
+import org.bukkit.Material;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryView;
@@ -23,7 +24,7 @@ public class BukkitInventoryUtil extends InventoryUtil {
if (item == null) {
return null;
}
- ItemStack stack = new ItemStack(item.id, item.amount, item.data);
+ ItemStack stack = new ItemStack(BukkitUtil.getMaterial(item.getPlotBlock()), item.amount);
ItemMeta meta = null;
if (item.name != null) {
meta = stack.getItemMeta();
@@ -45,8 +46,7 @@ public class BukkitInventoryUtil extends InventoryUtil {
return stack;
}
- @Override
- public void open(PlotInventory inv) {
+ @Override public void open(PlotInventory inv) {
BukkitPlayer bp = (BukkitPlayer) inv.player;
Inventory inventory = Bukkit.createInventory(null, inv.size * 9, inv.getTitle());
PlotItemStack[] items = inv.getItems();
@@ -60,8 +60,7 @@ public class BukkitInventoryUtil extends InventoryUtil {
bp.player.openInventory(inventory);
}
- @Override
- public void close(PlotInventory inv) {
+ @Override public void close(PlotInventory inv) {
if (!inv.isOpen()) {
return;
}
@@ -70,8 +69,7 @@ public class BukkitInventoryUtil extends InventoryUtil {
bp.player.closeInventory();
}
- @Override
- public void setItem(PlotInventory inv, int index, PlotItemStack item) {
+ @Override public void setItem(PlotInventory inv, int index, PlotItemStack item) {
BukkitPlayer bp = (BukkitPlayer) inv.player;
InventoryView opened = bp.player.getOpenInventory();
if (!inv.isOpen()) {
@@ -85,7 +83,8 @@ public class BukkitInventoryUtil extends InventoryUtil {
if (item == null) {
return null;
}
- int id = item.getTypeId();
+ // int id = item.getTypeId();
+ Material id = item.getType();
short data = item.getDurability();
int amount = item.getAmount();
String name = null;
@@ -100,11 +99,10 @@ public class BukkitInventoryUtil extends InventoryUtil {
lore = itemLore.toArray(new String[itemLore.size()]);
}
}
- return new PlotItemStack(id, data, amount, name, lore);
+ return new PlotItemStack(id.name(), amount, name, lore);
}
- @Override
- public PlotItemStack[] getItems(PlotPlayer player) {
+ @Override public PlotItemStack[] getItems(PlotPlayer player) {
BukkitPlayer bp = (BukkitPlayer) player;
PlayerInventory inv = bp.player.getInventory();
PlotItemStack[] items = new PlotItemStack[36];
@@ -114,13 +112,13 @@ public class BukkitInventoryUtil extends InventoryUtil {
return items;
}
- @Override
- public boolean isOpen(PlotInventory inv) {
+ @Override public boolean isOpen(PlotInventory inv) {
if (!inv.isOpen()) {
return false;
}
BukkitPlayer bp = (BukkitPlayer) inv.player;
InventoryView opened = bp.player.getOpenInventory();
- return inv.isOpen() && opened.getType() == InventoryType.CRAFTING && opened.getTitle() == null;
+ return inv.isOpen() && opened.getType() == InventoryType.CRAFTING
+ && opened.getTitle() == null;
}
}
diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitLegacyMappings.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitLegacyMappings.java
new file mode 100644
index 000000000..b92b6edfe
--- /dev/null
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitLegacyMappings.java
@@ -0,0 +1,814 @@
+package com.github.intellectualsites.plotsquared.bukkit.util;
+
+import com.github.intellectualsites.plotsquared.plot.object.LegacyPlotBlock;
+import com.github.intellectualsites.plotsquared.plot.object.PlotBlock;
+import com.github.intellectualsites.plotsquared.plot.object.StringPlotBlock;
+import com.github.intellectualsites.plotsquared.plot.util.LegacyMappings;
+import com.github.intellectualsites.plotsquared.plot.util.StringComparison;
+import lombok.*;
+import org.bukkit.Material;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * Borrowed from https://github.com/Phoenix616/IDConverter/blob/master/mappings/src/main/java/de/themoep/idconverter/IdMappings.java
+ * Original License:
+ *
+ * Minecraft ID mappings
+ * Copyright (C) 2017 Max Lee (https://github.com/Phoenix616)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+public class BukkitLegacyMappings extends LegacyMappings {
+
+ private static final LegacyBlock[] BLOCKS =
+ new LegacyBlock[] {new LegacyBlock(0, "air"), new LegacyBlock(1, "stone"),
+ new LegacyBlock(1, 1, "stone", "granite"),
+ new LegacyBlock(1, 2, "stone", "polished_granite"),
+ new LegacyBlock(1, 3, "stone", "diorite"),
+ new LegacyBlock(1, 4, "stone", "polished_diorite"),
+ new LegacyBlock(1, 5, "stone", "andesite"),
+ new LegacyBlock(1, 6, "stone", "polished_andesite"),
+ new LegacyBlock(2, "grass", "grass_block"), new LegacyBlock(3, "dirt"),
+ new LegacyBlock(3, 1, "dirt", "coarse_dirt"), new LegacyBlock(3, 2, "dirt", "podzol"),
+ new LegacyBlock(4, "cobblestone"), new LegacyBlock(5, "wood", "oak_planks"),
+ new LegacyBlock(5, 1, "wood", "spruce_planks"),
+ new LegacyBlock(5, 2, "wood", "birch_planks"),
+ new LegacyBlock(5, 3, "wood", "jungle_planks"),
+ new LegacyBlock(5, 4, "wood", "acacia_planks"),
+ new LegacyBlock(5, 5, "wood", "dark_oak_planks"),
+ new LegacyBlock(6, "sapling", "oak_sapling"),
+ new LegacyBlock(6, 1, "sapling", "spruce_sapling"),
+ new LegacyBlock(6, 2, "sapling", "birch_sapling"),
+ new LegacyBlock(6, 3, "sapling", "jungle_sapling"),
+ new LegacyBlock(6, 4, "sapling", "acacia_sapling"),
+ new LegacyBlock(6, 5, "sapling", "dark_oak_sapling"), new LegacyBlock(7, "bedrock"),
+ new LegacyBlock(8, "water", "flowing_water"),
+ new LegacyBlock(9, "stationary_water", "water"),
+ new LegacyBlock(10, "lava", "flowing_lava"),
+ new LegacyBlock(11, "stationary_lava", "lava"), new LegacyBlock(12, "sand"),
+ new LegacyBlock(12, 1, "sand", "red_sand"), new LegacyBlock(13, "gravel"),
+ new LegacyBlock(14, "gold_ore"), new LegacyBlock(15, "iron_ore"),
+ new LegacyBlock(16, "coal_ore"), new LegacyBlock(17, "log", "oak_log"),
+ new LegacyBlock(17, 1, "log", "oak_log"), new LegacyBlock(17, 2, "log", "spruce_log"),
+ new LegacyBlock(17, 3, "log", "birch_log"), new LegacyBlock(17, 4, "log", "jungle_log"),
+ new LegacyBlock(17, 5, "log", "oak_bark"), new LegacyBlock(17, 6, "log", "spruce_bark"),
+ new LegacyBlock(17, 7, "log", "birch_bark"),
+ new LegacyBlock(17, 8, "log", "jungle_bark"),
+ new LegacyBlock(18, "leaves", "oak_leaves"),
+ new LegacyBlock(18, 1, "leaves", "spruce_leaves"),
+ new LegacyBlock(18, 2, "leaves", "birch_leaves"),
+ new LegacyBlock(18, 3, "leaves", "jungle_leaves"), new LegacyBlock(19, "sponge"),
+ new LegacyBlock(19, 1, "sponge", "wet_sponge"), new LegacyBlock(20, "glass"),
+ new LegacyBlock(21, "lapis_ore"), new LegacyBlock(22, "lapis_block"),
+ new LegacyBlock(23, "dispenser"), new LegacyBlock(24, "sandstone"),
+ new LegacyBlock(24, 1, "sandstone", "chisled_sandstone"),
+ new LegacyBlock(24, 2, "sandstone", "cut_sandstone"), new LegacyBlock(25, "note_block"),
+ new LegacyBlock(26, "bed_block"), new LegacyBlock(27, "powered_rail"),
+ new LegacyBlock(28, "detector_rail"),
+ new LegacyBlock(29, "piston_sticky_base", "sticky_piston"),
+ new LegacyBlock(30, "web", "cobweb"), new LegacyBlock(31, "long_grass", "dead_bush"),
+ new LegacyBlock(31, 1, "long_grass", "grass"),
+ new LegacyBlock(31, 2, "long_grass", "fern"), new LegacyBlock(32, "dead_bush"),
+ new LegacyBlock(33, "piston_base", "piston"),
+ new LegacyBlock(34, "piston_extension", "piston_head"),
+ new LegacyBlock(35, "wool", "white_wool"),
+ new LegacyBlock(35, 1, "wool", "orange_wool"),
+ new LegacyBlock(35, 2, "wool", "magenta_wool"),
+ new LegacyBlock(35, 3, "wool", "light_blue_wool"),
+ new LegacyBlock(35, 4, "wool", "yellow_wool"),
+ new LegacyBlock(35, 5, "wool", "lime_wool"),
+ new LegacyBlock(35, 6, "wool", "pink_wool"),
+ new LegacyBlock(35, 7, "wool", "gray_wool"),
+ new LegacyBlock(35, 8, "wool", "light_gray_wool"),
+ new LegacyBlock(35, 9, "wool", "cyan_wool"),
+ new LegacyBlock(35, 10, "wool", "purple_wool"),
+ new LegacyBlock(35, 11, "wool", "blue_wool"),
+ new LegacyBlock(35, 12, "wool", "brown_wool"),
+ new LegacyBlock(35, 13, "wool", "green_wool"),
+ new LegacyBlock(35, 14, "wool", "red_wool"),
+ new LegacyBlock(35, 15, "wool", "black_wool"),
+ new LegacyBlock(36, "piston_moving_piece", "moving_piston"),
+ new LegacyBlock(37, "yellow_flower", "dandelion"),
+ new LegacyBlock(38, "red_rose", "poppy"),
+ new LegacyBlock(38, 1, "red_rose", "blue_orchid"),
+ new LegacyBlock(38, 2, "red_rose", "allium"),
+ new LegacyBlock(38, 3, "red_rose", "azure_bluet"),
+ new LegacyBlock(38, 4, "red_rose", "red_tulip"),
+ new LegacyBlock(38, 5, "red_rose", "orange_tulip"),
+ new LegacyBlock(38, 6, "red_rose", "white_tulip"),
+ new LegacyBlock(38, 7, "red_rose", "pink_tulip"),
+ new LegacyBlock(38, 8, "red_rose", "oxeye_daisy"),
+ new LegacyBlock(39, "brown_mushroom"), new LegacyBlock(40, "red_mushroom"),
+ new LegacyBlock(41, "gold_block"), new LegacyBlock(42, "iron_block"),
+ new LegacyBlock(43, "double_step"),
+ new LegacyBlock(43, 6, "double_step", "smooth_quartz"),
+ new LegacyBlock(43, 8, "double_step", "smooth_stone"),
+ new LegacyBlock(43, 9, "double_step", "smooth_sandstone"),
+ new LegacyBlock(44, "step", "stone_slab"),
+ new LegacyBlock(44, 1, "step", "sandstone_slab"),
+ new LegacyBlock(44, 2, "step", "petrified_oak_slab"),
+ new LegacyBlock(44, 3, "step", "cobblestone_slab"),
+ new LegacyBlock(44, 4, "step", "brick_slab"),
+ new LegacyBlock(44, 5, "step", "stone_brick_slab"),
+ new LegacyBlock(44, 6, "step", "nether_brick_slab"),
+ new LegacyBlock(44, 7, "step", "quartz_slab"), new LegacyBlock(45, "brick", "bricks"),
+ new LegacyBlock(46, "tnt"), new LegacyBlock(47, "bookshelf"),
+ new LegacyBlock(48, "mossy_cobblestone"), new LegacyBlock(49, "obsidian"),
+ new LegacyBlock(50, "torch"), new LegacyBlock(50, 1, "torch", "wall_torch"),
+ new LegacyBlock(50, 2, "torch", "wall_torch"),
+ new LegacyBlock(50, 3, "torch", "wall_torch"),
+ new LegacyBlock(50, 4, "torch", "wall_torch"), new LegacyBlock(50, 5, "torch"),
+ new LegacyBlock(51, "fire"), new LegacyBlock(52, "mob_spawner"),
+ new LegacyBlock(53, "wood_stairs", "oak_stairs"), new LegacyBlock(54, "chest", "chest"),
+ new LegacyBlock(55, "redstone_wire"), new LegacyBlock(56, "diamond_ore"),
+ new LegacyBlock(57, "diamond_block"),
+ new LegacyBlock(58, "workbench", "crafting_table"),
+ new LegacyBlock(59, "crops", "wheat"), new LegacyBlock(60, "soil", "farmland"),
+ new LegacyBlock(61, "furnace"), new LegacyBlock(62, "burning_furnace"),
+ new LegacyBlock(63, "sign_post", "sign"),
+ new LegacyBlock(64, "wooden_door", "oak_door"), new LegacyBlock(65, "ladder"),
+ new LegacyBlock(66, "rails", "rail"), new LegacyBlock(67, "cobblestone_stairs"),
+ new LegacyBlock(68, "wall_sign"), new LegacyBlock(69, "lever"),
+ new LegacyBlock(70, "stone_plate", "stone_pressure_plate"),
+ new LegacyBlock(71, "iron_door_block", "iron_door"),
+ new LegacyBlock(72, "wood_plate", "oak_pressure_plate"),
+ new LegacyBlock(73, "redstone_ore"), new LegacyBlock(74, "glowing_redstone_ore"),
+ new LegacyBlock(75, "redstone_torch_off"),
+ new LegacyBlock(76, "redstone_torch_on", "redstone_torch"),
+ new LegacyBlock(76, 1, "redstone_torch_on", "redstone_wall_torch"),
+ new LegacyBlock(76, 2, "redstone_torch_on", "redstone_wall_torch"),
+ new LegacyBlock(76, 3, "redstone_torch_on", "redstone_wall_torch"),
+ new LegacyBlock(76, 4, "redstone_torch_on", "redstone_wall_torch"),
+ new LegacyBlock(76, 5, "redstone_torch_on", "redstone_torch"),
+ new LegacyBlock(77, "stone_button"), new LegacyBlock(78, "snow"),
+ new LegacyBlock(79, "ice"), new LegacyBlock(80, "snow_block"),
+ new LegacyBlock(81, "cactus"), new LegacyBlock(82, "clay"),
+ new LegacyBlock(83, "sugar_cane_block", "sugar_cane"), new LegacyBlock(84, "jukebox"),
+ new LegacyBlock(85, "fence", "oak_fence"),
+ new LegacyBlock(86, "pumpkin", "carved_pumpkin"), new LegacyBlock(87, "netherrack"),
+ new LegacyBlock(88, "soul_sand"), new LegacyBlock(89, "glowstone"),
+ new LegacyBlock(90, "portal"), new LegacyBlock(91, "jack_o_lantern"),
+ new LegacyBlock(92, "cake_block", "cake"), new LegacyBlock(93, "diode_block_off"),
+ new LegacyBlock(94, "diode_block_on", "repeater"),
+ new LegacyBlock(95, "stained_glass", "white_stained_glass"),
+ new LegacyBlock(95, 1, "stained_glass", "orange_stained_glass"),
+ new LegacyBlock(95, 2, "stained_glass", "magenta_stained_glass"),
+ new LegacyBlock(95, 3, "stained_glass", "light_blue_stained_glass"),
+ new LegacyBlock(95, 4, "stained_glass", "yellow_stained_glass"),
+ new LegacyBlock(95, 5, "stained_glass", "lime_stained_glass"),
+ new LegacyBlock(95, 6, "stained_glass", "pink_stained_glass"),
+ new LegacyBlock(95, 7, "stained_glass", "gray_stained_glass"),
+ new LegacyBlock(95, 8, "stained_glass", "light_gray_stained_glass"),
+ new LegacyBlock(95, 9, "stained_glass", "cyan_stained_glass"),
+ new LegacyBlock(95, 10, "stained_glass", "purple_stained_glass"),
+ new LegacyBlock(95, 11, "stained_glass", "blue_stained_glass"),
+ new LegacyBlock(95, 12, "stained_glass", "brown_stained_glass"),
+ new LegacyBlock(95, 13, "stained_glass", "green_stained_glass"),
+ new LegacyBlock(95, 14, "stained_glass", "red_stained_glass"),
+ new LegacyBlock(95, 15, "stained_glass", "black_stained_glass"),
+ new LegacyBlock(96, "trap_door", "oak_trapdoor"),
+ new LegacyBlock(97, "monster_eggs", "infested_stone"),
+ new LegacyBlock(97, 1, "monster_eggs", "infested_coblestone"),
+ new LegacyBlock(97, 2, "monster_eggs", "infested_stone_bricks"),
+ new LegacyBlock(97, 3, "monster_eggs", "infested_mossy_stone_bricks"),
+ new LegacyBlock(97, 4, "monster_eggs", "infested_crcked_stone_bricks"),
+ new LegacyBlock(97, 5, "monster_eggs", "infested_chiseled_stone_bricks"),
+ new LegacyBlock(98, "smooth_brick", "stone_bricks"),
+ new LegacyBlock(98, 1, "smooth_brick", "mossy_stone_bricks"),
+ new LegacyBlock(98, 2, "smooth_brick", "cracked_stone_bricks"),
+ new LegacyBlock(98, 3, "smooth_brick", "chiseled_bricks"),
+ new LegacyBlock(99, "huge_mushroom_1", "brown_mushroom_block"),
+ new LegacyBlock(99, 1, "huge_mushroom_1"), new LegacyBlock(99, 2, "huge_mushroom_1"),
+ new LegacyBlock(99, 3, "huge_mushroom_1"), new LegacyBlock(99, 4, "huge_mushroom_1"),
+ new LegacyBlock(99, 5, "huge_mushroom_1"), new LegacyBlock(99, 6, "huge_mushroom_1"),
+ new LegacyBlock(99, 7, "huge_mushroom_1"), new LegacyBlock(99, 8, "huge_mushroom_1"),
+ new LegacyBlock(99, 9, "huge_mushroom_1"),
+ new LegacyBlock(99, 10, "huge_mushroom_1", "mushroom_stem"),
+ new LegacyBlock(99, 14, "huge_mushroom_1"), new LegacyBlock(99, 15, "huge_mushroom_1"),
+ new LegacyBlock(100, "huge_mushroom_2", "red_mushroom_block"),
+ new LegacyBlock(100, 1, "huge_mushroom_2"), new LegacyBlock(100, 2, "huge_mushroom_2"),
+ new LegacyBlock(100, 3, "huge_mushroom_2"), new LegacyBlock(100, 4, "huge_mushroom_2"),
+ new LegacyBlock(100, 5, "huge_mushroom_2"), new LegacyBlock(100, 6, "huge_mushroom_2"),
+ new LegacyBlock(100, 7, "huge_mushroom_2"), new LegacyBlock(100, 8, "huge_mushroom_2"),
+ new LegacyBlock(100, 9, "huge_mushroom_2"),
+ new LegacyBlock(100, 10, "huge_mushroom_2", "mushroom_stem"),
+ new LegacyBlock(100, 14, "huge_mushroom_2"),
+ new LegacyBlock(100, 15, "huge_mushroom_2"),
+ new LegacyBlock(101, "iron_fence", "ironbars"),
+ new LegacyBlock(102, "thin_glass", "glass_pane"), new LegacyBlock(103, "melon_block"),
+ new LegacyBlock(104, "pumpkin_stem"), new LegacyBlock(105, "melon_stem"),
+ new LegacyBlock(106, "vine"), new LegacyBlock(107, "fence_gate", "oak_fence_gate"),
+ new LegacyBlock(108, "brick_stairs"),
+ new LegacyBlock(109, "smooth_stairs", "stone_brick_stairs"),
+ new LegacyBlock(110, "mycel", "mycelium"),
+ new LegacyBlock(111, "water_lily", "lily_pad"),
+ new LegacyBlock(112, "nether_brick", "nether_bricks"),
+ new LegacyBlock(113, "nether_fence", "nether_brick_fence"),
+ new LegacyBlock(114, "nether_brick_stairs"),
+ new LegacyBlock(115, "nether_warts", "nether_wart"),
+ new LegacyBlock(116, "enchantment_table", "enchanting_table"),
+ new LegacyBlock(117, "brewing_stand"), new LegacyBlock(118, "cauldron"),
+ new LegacyBlock(119, "ender_portal", "end_portal"),
+ new LegacyBlock(120, "ender_portal_frame", "end_portal_frame"),
+ new LegacyBlock(121, "ender_stone", "end_stone"), new LegacyBlock(122, "dragon_egg"),
+ new LegacyBlock(123, "redstone_lamp_off"),
+ new LegacyBlock(124, "redstone_lamp_on", "redstone_lamp"),
+ new LegacyBlock(125, "wood_double_step"), new LegacyBlock(125, 1, "wood_double_step"),
+ new LegacyBlock(125, 2, "wood_double_step"),
+ new LegacyBlock(125, 3, "wood_double_step"),
+ new LegacyBlock(125, 4, "wood_double_step"),
+ new LegacyBlock(125, 5, "wood_double_step"),
+ new LegacyBlock(126, "wood_step", "oak_slab"),
+ new LegacyBlock(126, 1, "wood_step", "spruce_slab"),
+ new LegacyBlock(126, 2, "wood_step", "birch_slab"),
+ new LegacyBlock(126, 3, "wood_step", "jungle_slab"),
+ new LegacyBlock(126, 4, "wood_step", "acacia_slab"),
+ new LegacyBlock(126, 5, "wood_step", "dark_oak_slab"), new LegacyBlock(127, "cocoa"),
+ new LegacyBlock(128, "sandstone_stairs"), new LegacyBlock(129, "emerald_ore"),
+ new LegacyBlock(130, "ender_chest"), new LegacyBlock(131, "tripwire_hook"),
+ new LegacyBlock(132, "tripwire"), new LegacyBlock(133, "emerald_block"),
+ new LegacyBlock(134, "spruce_wood_stairs", "spruce_stairs"),
+ new LegacyBlock(135, "birch_wood_stairs", "birch_stairs"),
+ new LegacyBlock(136, "jungle_wood_stairs", "jungle_stairs"),
+ new LegacyBlock(137, "command", "command_block"), new LegacyBlock(138, "beacon"),
+ new LegacyBlock(139, "cobble_wall", "cobblestone_wall"),
+ new LegacyBlock(139, 1, "cobble_wall", "mossy_cobblestone_wall"),
+ new LegacyBlock(140, "flower_pot"), new LegacyBlock(141, "carrot", "carrots"),
+ new LegacyBlock(142, "potato", "potatoes"),
+ new LegacyBlock(143, "wood_button", "oak_button"),
+ new LegacyBlock(144, "skull", "skeleton_skull"),
+ new LegacyBlock(144, 1, "skull", "skeleton_wall_skull"),
+ new LegacyBlock(144, 2, "skull", "skeleton_wall_skull"),
+ new LegacyBlock(144, 3, "skull", "skeleton_wall_skull"),
+ new LegacyBlock(144, 4, "skull", "skeleton_wall_skull"),
+ new LegacyBlock(144, 5, "skull", "skeleton_wall_skull"), new LegacyBlock(145, "anvil"),
+ new LegacyBlock(145, 1, "anvil", "chipped_anvil"),
+ new LegacyBlock(145, 2, "anvil", "damaged_anvil"),
+ new LegacyBlock(146, "trapped_chest"),
+ new LegacyBlock(147, "gold_plate", "light_weighted_pressure_plate"),
+ new LegacyBlock(148, "iron_plate", "heavy_weighted_pressure_plate"),
+ new LegacyBlock(149, "redstone_comparator_off"),
+ new LegacyBlock(150, "redstone_comparator_on", "comparator"),
+ new LegacyBlock(151, "daylight_detector"), new LegacyBlock(152, "redstone_block"),
+ new LegacyBlock(153, "quartz_ore", "nether_quartz_ore"), new LegacyBlock(154, "hopper"),
+ new LegacyBlock(155, "quartz_block"), new LegacyBlock(156, "quartz_stairs"),
+ new LegacyBlock(157, "activator_rail"), new LegacyBlock(158, "dropper"),
+ new LegacyBlock(159, "stained_clay", "white_terracotta"),
+ new LegacyBlock(159, 1, "stained_clay", "orange_terracotta"),
+ new LegacyBlock(159, 2, "stained_clay", "magenta_terracotta"),
+ new LegacyBlock(159, 3, "stained_clay", "light_blue_terracotta"),
+ new LegacyBlock(159, 4, "stained_clay", "yellow_terracotta"),
+ new LegacyBlock(159, 5, "stained_clay", "lime_terracotta"),
+ new LegacyBlock(159, 6, "stained_clay", "pink_terracotta"),
+ new LegacyBlock(159, 7, "stained_clay", "gray_terracotta"),
+ new LegacyBlock(159, 8, "stained_clay", "light_gray_terracotta"),
+ new LegacyBlock(159, 9, "stained_clay", "cyan_terracotta"),
+ new LegacyBlock(159, 10, "stained_clay", "purple_terracotta"),
+ new LegacyBlock(159, 11, "stained_clay", "blue_terracotta"),
+ new LegacyBlock(159, 12, "stained_clay", "brown_terracotta"),
+ new LegacyBlock(159, 13, "stained_clay", "green_terracotta"),
+ new LegacyBlock(159, 14, "stained_clay", "red_terracotta"),
+ new LegacyBlock(159, 15, "stained_clay", "black_terracotta"),
+ new LegacyBlock(160, "stained_glass_pane", "white_stained_glass_pane"),
+ new LegacyBlock(160, 1, "stained_glass_pane", "orange_stained_glass_pane"),
+ new LegacyBlock(160, 2, "stained_glass_pane", "magenta_stained_glass_pane"),
+ new LegacyBlock(160, 3, "stained_glass_pane", "light_blue_stained_glass_pane"),
+ new LegacyBlock(160, 4, "stained_glass_pane", "yellow_stained_glass_pane"),
+ new LegacyBlock(160, 5, "stained_glass_pane", "lime_stained_glass_pane"),
+ new LegacyBlock(160, 6, "stained_glass_pane", "pink_stained_glass_pane"),
+ new LegacyBlock(160, 7, "stained_glass_pane", "gray_stained_glass_pane"),
+ new LegacyBlock(160, 8, "stained_glass_pane", "light_gray_stained_glass_pane"),
+ new LegacyBlock(160, 9, "stained_glass_pane", "cyan_stained_glass_pane"),
+ new LegacyBlock(160, 10, "stained_glass_pane", "purple_stained_glass_pane"),
+ new LegacyBlock(160, 11, "stained_glass_pane", "blue_stained_glass_pane"),
+ new LegacyBlock(160, 12, "stained_glass_pane", "brown_stained_glass_pane"),
+ new LegacyBlock(160, 13, "stained_glass_pane", "green_stained_glass_pane"),
+ new LegacyBlock(160, 14, "stained_glass_pane", "red_stained_glass_pane"),
+ new LegacyBlock(160, 15, "stained_glass_pane", "black_stained_glass_pane"),
+ new LegacyBlock(161, "leaves_2", "acacia_leaves"),
+ new LegacyBlock(161, 1, "leaves_2", "dark_oak_leaves"),
+ new LegacyBlock(162, "log_2", "acacia_log"),
+ new LegacyBlock(162, 1, "log_2", "spruce_log"),
+ new LegacyBlock(162, 2, "log_2", "birch_log"),
+ new LegacyBlock(162, 3, "log_2", "jungle_log"),
+ new LegacyBlock(163, "acacia_stairs", "acacia_stairs"),
+ new LegacyBlock(164, "dark_oak_stairs", "dark_oak_stairs"),
+ new LegacyBlock(165, "slime_block", "slime_block"),
+ new LegacyBlock(166, "barrier", "barrier"),
+ new LegacyBlock(167, "iron_trapdoor", "iron_trapdoor"),
+ new LegacyBlock(168, "prismarine"),
+ new LegacyBlock(168, 1, "prismarine", "prismarine_bricks"),
+ new LegacyBlock(168, 2, "prismarine", "dark_prismarine"),
+ new LegacyBlock(169, "sea_lantern"), new LegacyBlock(170, "hay_block"),
+ new LegacyBlock(171, "carpet", "white_carpet"),
+ new LegacyBlock(171, 1, "carpet", "orange_carpet"),
+ new LegacyBlock(171, 2, "carpet", "magenta_carpet"),
+ new LegacyBlock(171, 3, "carpet", "light_blue_carpet"),
+ new LegacyBlock(171, 4, "carpet", "yellow_carpet"),
+ new LegacyBlock(171, 5, "carpet", "lime_carpet"),
+ new LegacyBlock(171, 6, "carpet", "pink_carpet"),
+ new LegacyBlock(171, 7, "carpet", "gray_carpet"),
+ new LegacyBlock(171, 8, "carpet", "light_gray_carpet"),
+ new LegacyBlock(171, 9, "carpet", "cyan_carpet"),
+ new LegacyBlock(171, 10, "carpet", "purple_carpet"),
+ new LegacyBlock(171, 11, "carpet", "blue_carpet"),
+ new LegacyBlock(171, 12, "carpet", "brown_carpet"),
+ new LegacyBlock(171, 13, "carpet", "green_carpet"),
+ new LegacyBlock(171, 14, "carpet", "red_carpet"),
+ new LegacyBlock(171, 15, "carpet", "black_carpet"),
+ new LegacyBlock(172, "hard_clay", "terracotta"), new LegacyBlock(173, "coal_block"),
+ new LegacyBlock(174, "packed_ice"), new LegacyBlock(175, "double_plant", "sunflower"),
+ new LegacyBlock(175, 1, "double_plant", "lilac"),
+ new LegacyBlock(175, 2, "double_plant", "tall_grass"),
+ new LegacyBlock(175, 3, "double_plant", "large_fern"),
+ new LegacyBlock(175, 4, "double_plant", "rose_bush"),
+ new LegacyBlock(175, 5, "double_plant", "peony"),
+ new LegacyBlock(176, "standing_banner"), new LegacyBlock(177, "wall_banner"),
+ new LegacyBlock(178, "daylight_detector_inverted"),
+ new LegacyBlock(179, "red_sandstone", "red_sandstone"),
+ new LegacyBlock(179, 1, "red_sandstone", "chiseled_red_sandstone"),
+ new LegacyBlock(179, 2, "red_sandstone", "cut_red_sandstone"),
+ new LegacyBlock(180, "red_sandstone_stairs"),
+ new LegacyBlock(181, "double_stone_slab2"),
+ new LegacyBlock(181, 8, "double_stone_slab2", "smooth_red_sandstone"),
+ new LegacyBlock(182, "stone_slab2", "red_sandstone_slab"),
+ new LegacyBlock(183, "spruce_fence_gate"), new LegacyBlock(184, "birch_fence_gate"),
+ new LegacyBlock(185, "jungle_fence_gate"), new LegacyBlock(186, "dark_oak_fence_gate"),
+ new LegacyBlock(187, "acacia_fence_gate"), new LegacyBlock(188, "spruce_fence"),
+ new LegacyBlock(189, "birch_fence"), new LegacyBlock(190, "jungle_fence"),
+ new LegacyBlock(191, "dark_oak_fence"), new LegacyBlock(192, "acacia_fence"),
+ new LegacyBlock(193, "spruce_door"), new LegacyBlock(194, "birch_door"),
+ new LegacyBlock(195, "jungle_door"), new LegacyBlock(196, "acacia_door"),
+ new LegacyBlock(197, "dark_oak_door"), new LegacyBlock(198, "end_rod"),
+ new LegacyBlock(199, "chorus_plant"), new LegacyBlock(200, "chorus_flower"),
+ new LegacyBlock(201, "purpur_block"), new LegacyBlock(202, "purpur_pillar"),
+ new LegacyBlock(203, "purpur_stairs"), new LegacyBlock(204, "purpur_double_slab"),
+ new LegacyBlock(205, "purpur_slab"),
+ new LegacyBlock(206, "end_bricks", "end_stone_bricks"),
+ new LegacyBlock(207, "beetroot_block", "beetroots"), new LegacyBlock(208, "grass_path"),
+ new LegacyBlock(209, "end_gateway"),
+ new LegacyBlock(210, "command_repeating", "repeating_command_block"),
+ new LegacyBlock(211, "command_chain", "chain_command_block"),
+ new LegacyBlock(212, "frosted_ice"), new LegacyBlock(213, "magma", "magma_block"),
+ new LegacyBlock(214, "nether_wart_block"),
+ new LegacyBlock(215, "red_nether_brick", "red_nether_bricks"),
+ new LegacyBlock(216, "bone_block"), new LegacyBlock(217, "structure_void"),
+ new LegacyBlock(218, "observer"), new LegacyBlock(219, "white_shulker_box"),
+ new LegacyBlock(220, "orange_shulker_box"), new LegacyBlock(221, "magenta_shulker_box"),
+ new LegacyBlock(222, "light_blue_shulker_box"),
+ new LegacyBlock(223, "yellow_shulker_box"), new LegacyBlock(224, "lime_shulker_box"),
+ new LegacyBlock(225, "pink_shulker_box"), new LegacyBlock(226, "gray_shulker_box"),
+ new LegacyBlock(227, "silver_shulker_box", "light_gray_shulker_box"),
+ new LegacyBlock(228, "cyan_shulker_box"), new LegacyBlock(229, "purple_shulker_box"),
+ new LegacyBlock(230, "blue_shulker_box"), new LegacyBlock(231, "brown_shulker_box"),
+ new LegacyBlock(232, "green_shulker_box"), new LegacyBlock(233, "red_shulker_box"),
+ new LegacyBlock(234, "black_shulker_box"),
+ new LegacyBlock(235, "white_glazed_terracotta"),
+ new LegacyBlock(236, "orange_glazed_terracotta"),
+ new LegacyBlock(237, "magenta_glazed_terracotta"),
+ new LegacyBlock(238, "light_blue_glazed_terracotta"),
+ new LegacyBlock(239, "yellow_glazed_terracotta"),
+ new LegacyBlock(240, "lime_glazed_terracotta"),
+ new LegacyBlock(241, "pink_glazed_terracotta"),
+ new LegacyBlock(242, "gray_glazed_terracotta"),
+ new LegacyBlock(243, "silver_glazed_terracotta", "light_gray_glazed_terracotta"),
+ new LegacyBlock(244, "cyan_glazed_terracotta"),
+ new LegacyBlock(245, "purple_glazed_terracotta"),
+ new LegacyBlock(246, "blue_glazed_terracotta"),
+ new LegacyBlock(247, "brown_glazed_terracotta"),
+ new LegacyBlock(248, "green_glazed_terracotta"),
+ new LegacyBlock(249, "red_glazed_terracotta"),
+ new LegacyBlock(250, "black_glazed_terracotta"),
+ new LegacyBlock(251, "concrete", "white_concrete"),
+ new LegacyBlock(251, 1, "concrete", "orange_concrete"),
+ new LegacyBlock(251, 2, "concrete", "magenta_concrete"),
+ new LegacyBlock(251, 3, "concrete", "light_blue_concrete"),
+ new LegacyBlock(251, 4, "concrete", "yellow_concrete"),
+ new LegacyBlock(251, 5, "concrete", "lime_concrete"),
+ new LegacyBlock(251, 6, "concrete", "pink_concrete"),
+ new LegacyBlock(251, 7, "concrete", "gray_concrete"),
+ new LegacyBlock(251, 8, "concrete", "light_gray_concrete"),
+ new LegacyBlock(251, 9, "concrete", "cyan_concrete"),
+ new LegacyBlock(251, 10, "concrete", "purple_concrete"),
+ new LegacyBlock(251, 11, "concrete", "blue_concrete"),
+ new LegacyBlock(251, 12, "concrete", "brown_concrete"),
+ new LegacyBlock(251, 13, "concrete", "green_concrete"),
+ new LegacyBlock(251, 14, "concrete", "red_concrete"),
+ new LegacyBlock(251, 15, "concrete", "black_concrete"),
+ new LegacyBlock(252, "concrete_powder", "white_concrete_powder"),
+ new LegacyBlock(252, 1, "concrete_powder", "orange_concrete_powder"),
+ new LegacyBlock(252, 2, "concrete_powder", "magenta_concrete_powder"),
+ new LegacyBlock(252, 3, "concrete_powder", "light_blue_concrete_powder"),
+ new LegacyBlock(252, 4, "concrete_powder", "yellow_concrete_powder"),
+ new LegacyBlock(252, 5, "concrete_powder", "lime_concrete_powder"),
+ new LegacyBlock(252, 6, "concrete_powder", "pink_concrete_powder"),
+ new LegacyBlock(252, 7, "concrete_powder", "gray_concrete_powder"),
+ new LegacyBlock(252, 8, "concrete_powder", "light_gray_concrete_powder"),
+ new LegacyBlock(252, 9, "concrete_powder", "cyan_concrete_powder"),
+ new LegacyBlock(252, 10, "concrete_powder", "purple_concrete_powder"),
+ new LegacyBlock(252, 11, "concrete_powder", "blue_concrete_powder"),
+ new LegacyBlock(252, 12, "concrete_powder", "brown_concrete_powder"),
+ new LegacyBlock(252, 13, "concrete_powder", "green_concrete_powder"),
+ new LegacyBlock(252, 14, "concrete_powder", "red_concrete_powder"),
+ new LegacyBlock(252, 15, "concrete_powder", "black_concrete_powder"),
+ new LegacyBlock(255, "structure_block"),
+ new LegacyBlock(256, "iron_spade", "iron_shovel"), new LegacyBlock(257, "iron_pickaxe"),
+ new LegacyBlock(258, "iron_axe"), new LegacyBlock(259, "flint_and_steel"),
+ new LegacyBlock(260, "apple"), new LegacyBlock(261, "bow"),
+ new LegacyBlock(262, "arrow"), new LegacyBlock(263, "coal"),
+ new LegacyBlock(263, 1, "coal", "charcoal"), new LegacyBlock(264, "diamond"),
+ new LegacyBlock(265, "iron_ingot"), new LegacyBlock(266, "gold_ingot"),
+ new LegacyBlock(267, "iron_sword"), new LegacyBlock(268, "wood_sword", "wooden_sword"),
+ new LegacyBlock(269, "wood_spade", "wooden_shovel"),
+ new LegacyBlock(270, "wood_pickaxe", "wooden_pickaxe"),
+ new LegacyBlock(271, "wood_axe", "wooden_axe"), new LegacyBlock(272, "stone_sword"),
+ new LegacyBlock(273, "stone_spade", "stone_shovel"),
+ new LegacyBlock(274, "stone_pickaxe"), new LegacyBlock(275, "stone_axe"),
+ new LegacyBlock(276, "diamond_sword"),
+ new LegacyBlock(277, "diamond_spade", "diamond_shovel"),
+ new LegacyBlock(278, "diamond_pickaxe"), new LegacyBlock(279, "diamond_axe"),
+ new LegacyBlock(280, "stick"), new LegacyBlock(281, "bowl"),
+ new LegacyBlock(282, "mushroom_soup", "mushroom_stew"),
+ new LegacyBlock(283, "gold_sword", "golden_sword"),
+ new LegacyBlock(284, "gold_spade", "golden_shovel"),
+ new LegacyBlock(285, "gold_pickaxe", "golden_pickaxe"),
+ new LegacyBlock(286, "gold_axe", "golden_axe"), new LegacyBlock(287, "string"),
+ new LegacyBlock(288, "feather"), new LegacyBlock(289, "sulphur", "gunpowder"),
+ new LegacyBlock(290, "wood_hoe", "wooden_hoe"), new LegacyBlock(291, "stone_hoe"),
+ new LegacyBlock(292, "iron_hoe"), new LegacyBlock(293, "diamond_hoe"),
+ new LegacyBlock(294, "gold_hoe", "golden_hoe"),
+ new LegacyBlock(295, "seeds", "wheat_seeds"), new LegacyBlock(296, "wheat"),
+ new LegacyBlock(297, "bread"), new LegacyBlock(298, "leather_helmet"),
+ new LegacyBlock(299, "leather_chestplate"), new LegacyBlock(300, "leather_leggings"),
+ new LegacyBlock(301, "leather_boots"), new LegacyBlock(302, "chainmail_helmet"),
+ new LegacyBlock(303, "chainmail_chestplate"),
+ new LegacyBlock(304, "chainmail_leggings"), new LegacyBlock(305, "chainmail_boots"),
+ new LegacyBlock(306, "iron_helmet"), new LegacyBlock(307, "iron_chestplate"),
+ new LegacyBlock(308, "iron_leggings"), new LegacyBlock(309, "iron_boots"),
+ new LegacyBlock(310, "diamond_helmet"), new LegacyBlock(311, "diamond_chestplate"),
+ new LegacyBlock(312, "diamond_leggings"), new LegacyBlock(313, "diamond_boots"),
+ new LegacyBlock(314, "gold_helmet", "golden_helmet"),
+ new LegacyBlock(315, "gold_chestplate", "golden_chestplate"),
+ new LegacyBlock(316, "gold_leggings", "golden_leggings"),
+ new LegacyBlock(317, "gold_boots", "golden_boots"), new LegacyBlock(318, "flint"),
+ new LegacyBlock(319, "pork", "porkchop"),
+ new LegacyBlock(320, "grilled_pork", "cooked_porkchop"),
+ new LegacyBlock(321, "painting"), new LegacyBlock(322, "golden_apple", "golden_apple"),
+ new LegacyBlock(322, 1, "golden_apple", "enchanted_golden_apple"),
+ new LegacyBlock(323, "sign"), new LegacyBlock(324, "wood_door", "oak_door"),
+ new LegacyBlock(325, "bucket"), new LegacyBlock(326, "water_bucket"),
+ new LegacyBlock(327, "lava_bucket"), new LegacyBlock(328, "minecart"),
+ new LegacyBlock(329, "saddle"), new LegacyBlock(330, "iron_door"),
+ new LegacyBlock(331, "redstone"), new LegacyBlock(332, "snow_ball", "snowball"),
+ new LegacyBlock(333, "boat", "oak_boat"), new LegacyBlock(334, "leather"),
+ new LegacyBlock(335, "milk_bucket"), new LegacyBlock(336, "clay_brick", "brick"),
+ new LegacyBlock(337, "clay_ball"), new LegacyBlock(338, "sugar_cane"),
+ new LegacyBlock(339, "paper"), new LegacyBlock(340, "book"),
+ new LegacyBlock(341, "slime_ball"),
+ new LegacyBlock(342, "storage_minecart", "chest_minecart"),
+ new LegacyBlock(343, "powered_minecart", "furnace_minecart"),
+ new LegacyBlock(344, "egg"), new LegacyBlock(345, "compass"),
+ new LegacyBlock(346, "fishing_rod"), new LegacyBlock(347, "watch", "clock"),
+ new LegacyBlock(348, "glowstone_dust"), new LegacyBlock(349, "raw_fish", "cod"),
+ new LegacyBlock(349, 1, "raw_fish", "salmon"),
+ new LegacyBlock(349, 2, "raw_fish", "tropical_fish"),
+ new LegacyBlock(349, 3, "raw_fish", "pufferfish"),
+ new LegacyBlock(350, "cooked_fish", "cooked_cod"),
+ new LegacyBlock(350, 1, "cooked_fish", "cooked_salmon"),
+ new LegacyBlock(351, "ink_sack", "ink_sac"),
+ new LegacyBlock(351, 1, "ink_sack", "rose_red"),
+ new LegacyBlock(351, 2, "ink_sack", "cactus_green"),
+ new LegacyBlock(351, 3, "ink_sack", "cocoa_beans"),
+ new LegacyBlock(351, 4, "ink_sack", "lapis_lazuli"),
+ new LegacyBlock(351, 5, "ink_sack", "purple_dye"),
+ new LegacyBlock(351, 6, "ink_sack", "cyan_dye"),
+ new LegacyBlock(351, 7, "ink_sack", "light_gray_dye"),
+ new LegacyBlock(351, 8, "ink_sack", "gray_dye"),
+ new LegacyBlock(351, 9, "ink_sack", "pink_dye"),
+ new LegacyBlock(351, 10, "ink_sack", "lime_dye"),
+ new LegacyBlock(351, 11, "ink_sack", "dandelion_yellow"),
+ new LegacyBlock(351, 12, "ink_sack", "light_blue_dye"),
+ new LegacyBlock(351, 13, "ink_sack", "magenta_dye"),
+ new LegacyBlock(351, 14, "ink_sack", "orange_dye"),
+ new LegacyBlock(351, 15, "ink_sack", "bone_meal"), new LegacyBlock(352, "bone"),
+ new LegacyBlock(353, "sugar", "sugar"), new LegacyBlock(354, "cake", "cake"),
+ new LegacyBlock(355, "bed", "white_bed"), new LegacyBlock(355, 1, "bed", "orange_bed"),
+ new LegacyBlock(355, 2, "bed", "magenta_bed"),
+ new LegacyBlock(355, 3, "bed", "light_blue_bed"),
+ new LegacyBlock(355, 4, "bed", "yellow_bed"),
+ new LegacyBlock(355, 5, "bed", "lime_bed"), new LegacyBlock(355, 6, "bed", "pink_bed"),
+ new LegacyBlock(355, 7, "bed", "gray_bed"),
+ new LegacyBlock(355, 8, "bed", "light_gray_bed"),
+ new LegacyBlock(355, 9, "bed", "cyan_bed"),
+ new LegacyBlock(355, 10, "bed", "purple_bed"),
+ new LegacyBlock(355, 11, "bed", "blue_bed"),
+ new LegacyBlock(355, 12, "bed", "brown_bed"),
+ new LegacyBlock(355, 13, "bed", "green_bed"),
+ new LegacyBlock(355, 14, "bed", "red_bed"),
+ new LegacyBlock(355, 15, "bed", "black_bed"), new LegacyBlock(356, "diode", "repeater"),
+ new LegacyBlock(357, "cookie", "cookie"), new LegacyBlock(358, "map"),
+ new LegacyBlock(359, "shears"), new LegacyBlock(360, "melon", "melon"),
+ new LegacyBlock(361, "pumpkin_seeds", "pumpkin_seeds"),
+ new LegacyBlock(362, "melon_seeds", "melon_seeds"),
+ new LegacyBlock(363, "raw_beef", "beef"), new LegacyBlock(364, "cooked_beef"),
+ new LegacyBlock(365, "raw_chicken", "chicken"), new LegacyBlock(366, "cooked_chicken"),
+ new LegacyBlock(367, "rotten_flesh"), new LegacyBlock(368, "ender_pearl"),
+ new LegacyBlock(369, "blaze_rod"), new LegacyBlock(370, "ghast_tear"),
+ new LegacyBlock(371, "gold_nugget"),
+ new LegacyBlock(372, "nether_stalk", "nether_wart"),
+ new LegacyBlock(373, "potion", "potion"), new LegacyBlock(374, "glass_bottle"),
+ new LegacyBlock(375, "spider_eye"), new LegacyBlock(376, "fermented_spider_eye"),
+ new LegacyBlock(377, "blaze_powder"), new LegacyBlock(378, "magma_cream"),
+ new LegacyBlock(379, "brewing_stand_item", "brewing_stand"),
+ new LegacyBlock(380, "cauldron_item", "cauldron"),
+ new LegacyBlock(381, "eye_of_ender", "ender_eye"),
+ new LegacyBlock(382, "speckled_melon"), new LegacyBlock(383, "monster_egg"),
+ new LegacyBlock(383, 4, "monster_egg", "elder_guardian_spawn_egg"),
+ new LegacyBlock(383, 5, "monster_egg", "wither_skeleton_spawn_egg"),
+ new LegacyBlock(383, 6, "monster_egg", "stray_spawn_egg"),
+ new LegacyBlock(383, 23, "monster_egg", "husk_spawn_egg"),
+ new LegacyBlock(383, 27, "monster_egg", "zombe_villager_spawn_egg"),
+ new LegacyBlock(383, 28, "monster_egg", "skeleton_horse_spawn_egg"),
+ new LegacyBlock(383, 29, "monster_egg", "zombie_horse_spawn_egg"),
+ new LegacyBlock(383, 31, "monster_egg", "donkey_spawn_egg"),
+ new LegacyBlock(383, 32, "monster_egg", "mule_spawn_egg"),
+ new LegacyBlock(383, 34, "monster_egg", "evocation_illager_spawn_egg"),
+ new LegacyBlock(383, 35, "monster_egg", "vex_spawn_egg"),
+ new LegacyBlock(383, 36, "monster_egg", "vindication_illager_spawn_egg"),
+ new LegacyBlock(383, 50, "monster_egg", "creeper_spawn_egg"),
+ new LegacyBlock(383, 51, "monster_egg", "skeleton_spawn_egg"),
+ new LegacyBlock(383, 52, "monster_egg", "spider_spawn_egg"),
+ new LegacyBlock(383, 54, "monster_egg", "zombie_spawn_egg"),
+ new LegacyBlock(383, 55, "monster_egg", "slime_spawn_egg"),
+ new LegacyBlock(383, 56, "monster_egg", "ghast_spawn_egg"),
+ new LegacyBlock(383, 57, "monster_egg", "zombie_pigman_spawn_egg"),
+ new LegacyBlock(383, 58, "monster_egg", "enderman_spawn_egg"),
+ new LegacyBlock(383, 59, "monster_egg", "cave_spider_spawn_egg"),
+ new LegacyBlock(383, 60, "monster_egg", "silverfish_spawn_egg"),
+ new LegacyBlock(383, 61, "monster_egg", "blaze_spawn_egg"),
+ new LegacyBlock(383, 62, "monster_egg", "magma_cube_spawn_egg"),
+ new LegacyBlock(383, 65, "monster_egg", "bat_spawn_egg"),
+ new LegacyBlock(383, 66, "monster_egg", "witch_spawn_egg"),
+ new LegacyBlock(383, 67, "monster_egg", "endermite_spawn_egg"),
+ new LegacyBlock(383, 68, "monster_egg", "guardian_spawn_egg"),
+ new LegacyBlock(383, 69, "monster_egg", "shulker_spawn_egg"),
+ new LegacyBlock(383, 90, "monster_egg", "pig_spawn_egg"),
+ new LegacyBlock(383, 91, "monster_egg", "sheep_spawn_egg"),
+ new LegacyBlock(383, 92, "monster_egg", "cow_spawn_egg"),
+ new LegacyBlock(383, 93, "monster_egg", "chicken_spawn_egg"),
+ new LegacyBlock(383, 94, "monster_egg", "squid_spawn_egg"),
+ new LegacyBlock(383, 95, "monster_egg", "wolf_spawn_egg"),
+ new LegacyBlock(383, 96, "monster_egg", "mooshroom_spawn_egg"),
+ new LegacyBlock(383, 98, "monster_egg", "ocelot_spawn_egg"),
+ new LegacyBlock(383, 100, "monster_egg", "horse_spawn_egg"),
+ new LegacyBlock(383, 101, "monster_egg", "rabbit_spawn_egg"),
+ new LegacyBlock(383, 102, "monster_egg", "polar_bear_spawn_egg"),
+ new LegacyBlock(383, 103, "monster_egg", "llama_spawn_egg"),
+ new LegacyBlock(383, 120, "monster_egg", "villager_spawn_egg"),
+ new LegacyBlock(384, "exp_bottle", "experience_bottle"),
+ new LegacyBlock(385, "fireball", "fire_charge"),
+ new LegacyBlock(386, "book_and_quill", "writable_book"),
+ new LegacyBlock(387, "written_book"), new LegacyBlock(388, "emerald"),
+ new LegacyBlock(389, "item_frame"),
+ new LegacyBlock(390, "flower_pot_item", "flower_pot"),
+ new LegacyBlock(391, "carrot_item", "carrot"),
+ new LegacyBlock(392, "potato_item", "potato"), new LegacyBlock(393, "baked_potato"),
+ new LegacyBlock(394, "poisonous_potato"), new LegacyBlock(395, "empty_map", "map"),
+ new LegacyBlock(396, "golden_carrot"),
+ new LegacyBlock(397, "skull_item", "skeleton_skull"),
+ new LegacyBlock(397, 1, "skull_item", "wither_skeleton_skull"),
+ new LegacyBlock(397, 2, "skull_item", "zombie_head"),
+ new LegacyBlock(397, 3, "skull_item", "player_head"),
+ new LegacyBlock(397, 4, "skull_item", "creeper_head"),
+ new LegacyBlock(397, 5, "skull_item", "dragon_head"),
+ new LegacyBlock(398, "carrot_stick"), new LegacyBlock(399, "nether_star"),
+ new LegacyBlock(400, "pumpkin_pie"),
+ new LegacyBlock(401, "firework", "firework_rocket"),
+ new LegacyBlock(402, "firework_charge", "firework_star"),
+ new LegacyBlock(403, "enchanted_book"),
+ new LegacyBlock(404, "redstone_comparator", "comparator"),
+ new LegacyBlock(405, "nether_brick_item", "nether_brick"),
+ new LegacyBlock(406, "quartz"),
+ new LegacyBlock(407, "explosive_minecart", "tnt_minecart"),
+ new LegacyBlock(408, "hopper_minecart"), new LegacyBlock(409, "prismarine_shard"),
+ new LegacyBlock(410, "prismarine_crystals"), new LegacyBlock(411, "rabbit"),
+ new LegacyBlock(412, "cooked_rabbit"), new LegacyBlock(413, "rabbit_stew"),
+ new LegacyBlock(414, "rabbit_foot"), new LegacyBlock(415, "rabbit_hide"),
+ new LegacyBlock(416, "armor_stand"),
+ new LegacyBlock(417, "iron_barding", "iron_horse_armor"),
+ new LegacyBlock(418, "gold_barding", "gold_horse_armor"),
+ new LegacyBlock(419, "diamond_barding", "diamond_horse_armor"),
+ new LegacyBlock(420, "leash", "lead"), new LegacyBlock(421, "name_tag"),
+ new LegacyBlock(422, "command_minecart", "command_block_minecart"),
+ new LegacyBlock(423, "mutton"), new LegacyBlock(424, "cooked_mutton"),
+ new LegacyBlock(425, "banner", "white_banner"),
+ new LegacyBlock(425, 1, "banner", "orange_banner"),
+ new LegacyBlock(425, 2, "banner", "magenta_banner"),
+ new LegacyBlock(425, 3, "banner", "light_blue_banner"),
+ new LegacyBlock(425, 4, "banner", "yellow_banner"),
+ new LegacyBlock(425, 5, "banner", "lime_banner"),
+ new LegacyBlock(425, 6, "banner", "pink_banner"),
+ new LegacyBlock(425, 7, "banner", "gray_banner"),
+ new LegacyBlock(425, 8, "banner", "light_gray_banner"),
+ new LegacyBlock(425, 9, "banner", "cyan_banner"),
+ new LegacyBlock(425, 10, "banner", "purple_banner"),
+ new LegacyBlock(425, 11, "banner", "blue_banner"),
+ new LegacyBlock(425, 12, "banner", "brown_banner"),
+ new LegacyBlock(425, 13, "banner", "green_banner"),
+ new LegacyBlock(425, 14, "banner", "red_banner"),
+ new LegacyBlock(425, 15, "banner", "black_banner"), new LegacyBlock(426, "end_crystal"),
+ new LegacyBlock(427, "spruce_door_item", "spruce_door"),
+ new LegacyBlock(428, "birch_door_item", "birch_door"),
+ new LegacyBlock(429, "jungle_door_item", "jungle_door"),
+ new LegacyBlock(430, "acacia_door_item", "acacia_door"),
+ new LegacyBlock(431, "dark_oak_door_item", "dark_oak_door"),
+ new LegacyBlock(432, "chorus_fruit"), new LegacyBlock(433, "chorus_fruit_popped"),
+ new LegacyBlock(434, "beetroot"), new LegacyBlock(435, "beetroot_seeds"),
+ new LegacyBlock(436, "beetroot_soup"),
+ new LegacyBlock(437, "dragons_breath", "dragon_breath"),
+ new LegacyBlock(438, "splash_potion"), new LegacyBlock(439, "spectral_arrow"),
+ new LegacyBlock(440, "tipped_arrow"), new LegacyBlock(441, "lingering_potion"),
+ new LegacyBlock(442, "shield"), new LegacyBlock(443, "elytra"),
+ new LegacyBlock(444, "boat_spruce", "spruce_boat"),
+ new LegacyBlock(445, "boat_birch", "birch_boat"),
+ new LegacyBlock(446, "boat_jungle", "jungle_boat"),
+ new LegacyBlock(447, "boat_acacia", "acacia_boat"),
+ new LegacyBlock(448, "boat_dark_oak", "dark_oak_boat"),
+ new LegacyBlock(449, "totem", "totem_of_undying"),
+ new LegacyBlock(450, "shulker_shell"), new LegacyBlock(452, "iron_nugget"),
+ new LegacyBlock(453, "knowledge_book"),
+ new LegacyBlock(2256, "gold_record", "music_disc_13"),
+ new LegacyBlock(2257, "green_record", "music_disc_cat"),
+ new LegacyBlock(2258, "record_3", "music_disc_blocks"),
+ new LegacyBlock(2259, "record_4", "music_disc_chirp"),
+ new LegacyBlock(2260, "record_5", "music_disc_far"),
+ new LegacyBlock(2261, "record_6", "music_disc_mall"),
+ new LegacyBlock(2262, "record_7", "music_disc_mellohi"),
+ new LegacyBlock(2263, "record_8", "music_disc_stal"),
+ new LegacyBlock(2264, "record_9", "music_disc_strad"),
+ new LegacyBlock(2265, "record_10", "music_disc_ward"),
+ new LegacyBlock(2266, "record_11", "music_disc_11"),
+ new LegacyBlock(2267, "record_12", "music_disc_wait")};
+
+ private static final Map LEGACY_ID_TO_STRING_PLOT_BLOCK = new HashMap<>();
+ private static final Map LEGACY_ID_AND_DATA_TO_STRING_PLOT_BLOCK =
+ new HashMap<>();
+ private static final Map NEW_STRING_TO_LEGACY_PLOT_BLOCK = new HashMap<>();
+ private static final Map OLD_STRING_TO_STRING_PLOT_BLOCK = new HashMap<>();
+
+ public BukkitLegacyMappings() {
+ for (final LegacyBlock legacyBlock : BLOCKS) {
+ LEGACY_ID_TO_STRING_PLOT_BLOCK
+ .put(legacyBlock.getNumericalId(), legacyBlock.toStringPlotBlock());
+ if (legacyBlock.getDataValue() != 0) {
+ LEGACY_ID_AND_DATA_TO_STRING_PLOT_BLOCK
+ .put(new IdDataPair(legacyBlock.getNumericalId(), legacyBlock.getDataValue()),
+ legacyBlock.toStringPlotBlock());
+ }
+ NEW_STRING_TO_LEGACY_PLOT_BLOCK
+ .put(legacyBlock.getLegacyName(), legacyBlock.toStringPlotBlock());
+ OLD_STRING_TO_STRING_PLOT_BLOCK
+ .put(legacyBlock.getNewName(), legacyBlock.toLegacyPlotBlock());
+ Material material;
+ try {
+ material = Material.valueOf(legacyBlock.getNewName());
+ } catch (final Exception e) {
+ material = Material.getMaterial(legacyBlock.getLegacyName(), true);
+ }
+ legacyBlock.material = material;
+ }
+ }
+
+ public Collection getPlotBlocks() {
+ return Arrays.stream(BLOCKS).map(block -> PlotBlock.get(block.getNewName()))
+ .collect(Collectors.toList());
+ }
+
+ public StringComparison.ComparisonResult getClosestsMatch(
+ @NonNull final String string) {
+ final StringComparison comparison =
+ new StringComparison<>(string, getPlotBlocks());
+ return comparison.getBestMatchAdvanced();
+ }
+
+ /**
+ * Try to find a legacy plot block by any means possible.
+ * Strategy:
+ * - Check if the name contains a namespace, if so, strip it
+ * - Check if there's a (new) material matching the name
+ * - Check if there's a legacy material matching the name
+ * - Check if there's a numerical ID matching the name
+ * - Return null if everything else fails
+ *
+ * @param string String ID
+ * @return LegacyBlock if found, else null
+ */
+ public PlotBlock fromAny(@NonNull final String string) {
+ String workingString = string;
+ String[] parts = null;
+ if (string.contains(":")) {
+ parts = string.split(":");
+ if (parts.length > 1) {
+ if (parts[0].equalsIgnoreCase("minecraft")) {
+ workingString = parts[1];
+ } else {
+ workingString = parts[0];
+ }
+ }
+ }
+ PlotBlock plotBlock = fromStringToLegacy(workingString);
+ if (plotBlock != null) {
+ return plotBlock;
+ } else if ((plotBlock = fromLegacyToString(workingString)) != null) {
+ return plotBlock;
+ } else {
+ try {
+ if (parts != null && parts.length > 1) {
+ final int id = Integer.parseInt(parts[0]);
+ final int data = Integer.parseInt(parts[1]);
+ return fromLegacyToString(id, data);
+ } else {
+ return fromLegacyToString(Integer.parseInt(workingString));
+ }
+ } catch (final Throwable exception) {
+ return null;
+ }
+ }
+ }
+
+ public PlotBlock fromLegacyToString(final int id) {
+ return LEGACY_ID_TO_STRING_PLOT_BLOCK.get(id);
+ }
+
+ public PlotBlock fromLegacyToString(final int id, final int data) {
+ if (data == 0) {
+ return fromLegacyToString(id);
+ }
+ return LEGACY_ID_AND_DATA_TO_STRING_PLOT_BLOCK.get(new IdDataPair(id, data));
+ }
+
+ public PlotBlock fromLegacyToString(final String id) {
+ return NEW_STRING_TO_LEGACY_PLOT_BLOCK.get(id);
+ }
+
+ public PlotBlock fromStringToLegacy(final String id) {
+ return OLD_STRING_TO_STRING_PLOT_BLOCK.get(id.toLowerCase(Locale.ENGLISH));
+ }
+
+ @Getter @EqualsAndHashCode @ToString @RequiredArgsConstructor
+ private static final class IdDataPair {
+ private final int id;
+ private final int data;
+ }
+
+
+ @Getter @RequiredArgsConstructor(access = AccessLevel.PRIVATE)
+ public static final class LegacyBlock {
+
+ private final int numericalId;
+ private final int dataValue;
+ private final String legacyName;
+ private final String newName;
+
+ private Material material;
+
+ LegacyBlock(final int numericalId, final int dataValue, @NonNull final String legacyName) {
+ this(numericalId, dataValue, legacyName, legacyName);
+ }
+
+ LegacyBlock(final int numericalId, @NonNull final String legacyName,
+ @NonNull final String newName) {
+ this(numericalId, 0, legacyName, newName);
+ }
+
+ LegacyBlock(final int numericalId, @NonNull final String legacyName) {
+ this(numericalId, legacyName, legacyName);
+ }
+
+ PlotBlock toStringPlotBlock() {
+ return StringPlotBlock.get(newName);
+ }
+
+ PlotBlock toLegacyPlotBlock() {
+ return LegacyPlotBlock.get(numericalId, dataValue);
+ }
+
+ @Override public String toString() {
+ return this.newName;
+ }
+ }
+
+}
diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitSchematicHandler.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitSchematicHandler.java
new file mode 100644
index 000000000..ea115b14a
--- /dev/null
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitSchematicHandler.java
@@ -0,0 +1,220 @@
+package com.github.intellectualsites.plotsquared.bukkit.util;
+
+import com.github.intellectualsites.plotsquared.bukkit.object.schematic.StateWrapper;
+import com.github.intellectualsites.plotsquared.plot.object.ChunkLoc;
+import com.github.intellectualsites.plotsquared.plot.object.Location;
+import com.github.intellectualsites.plotsquared.plot.object.RegionWrapper;
+import com.github.intellectualsites.plotsquared.plot.object.RunnableVal;
+import com.github.intellectualsites.plotsquared.plot.util.MainUtil;
+import com.github.intellectualsites.plotsquared.plot.util.SchematicHandler;
+import com.github.intellectualsites.plotsquared.plot.util.TaskManager;
+import com.github.intellectualsites.plotsquared.plot.util.block.LocalBlockQueue;
+import com.sk89q.jnbt.*;
+import com.sk89q.worldedit.math.BlockVector3;
+import com.sk89q.worldedit.regions.CuboidRegion;
+import com.sk89q.worldedit.world.block.BaseBlock;
+import org.bukkit.Bukkit;
+import org.bukkit.Chunk;
+import org.bukkit.World;
+
+import java.io.ByteArrayOutputStream;
+import java.util.*;
+
+/**
+ * Schematic Handler.
+ */
+public class BukkitSchematicHandler extends SchematicHandler {
+
+ @Override public void getCompoundTag(final String world, final Set regions,
+ final RunnableVal whenDone) {
+ // async
+ TaskManager.runTaskAsync(new Runnable() {
+ @Override public void run() {
+ // Main positions
+ Location[] corners = MainUtil.getCorners(world, regions);
+ final Location bot = corners[0];
+ Location top = corners[1];
+
+ CuboidRegion cuboidRegion =
+ new CuboidRegion(BukkitUtil.IMP.getWeWorld(world), bot.getBlockVector3(),
+ top.getBlockVector3());
+
+ final int width = top.getX() - bot.getX() + 1;
+ int height = top.getY() - bot.getY() + 1;
+ final int length = top.getZ() - bot.getZ() + 1;
+ Map schematic = new HashMap<>();
+ schematic.put("Version", new IntTag(1));
+
+ Map metadata = new HashMap<>();
+ metadata.put("WEOffsetX", new IntTag(0));
+ metadata.put("WEOffsetY", new IntTag(0));
+ metadata.put("WEOffsetZ", new IntTag(0));
+
+ schematic.put("Metadata", new CompoundTag(metadata));
+
+ schematic.put("Width", new ShortTag((short) width));
+ schematic.put("Height", new ShortTag((short) height));
+ schematic.put("Length", new ShortTag((short) length));
+
+ // The Sponge format Offset refers to the 'min' points location in the world. That's our 'Origin'
+ schematic.put("Offset", new IntArrayTag(new int[] {0, 0, 0,}));
+
+ final int[] paletteMax = {0};
+ Map palette = new HashMap<>();
+
+ List tileEntities = new ArrayList<>();
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream(width * height * length);
+ // Queue
+ final ArrayDeque queue = new ArrayDeque<>(regions);
+ TaskManager.runTask(new Runnable() {
+ @Override public void run() {
+ if (queue.isEmpty()) {
+ TaskManager.runTaskAsync(new Runnable() {
+ @Override public void run() {
+ schematic.put("PaletteMax", new IntTag(paletteMax[0]));
+
+ Map paletteTag = new HashMap<>();
+ palette.forEach(
+ (key, value) -> paletteTag.put(key, new IntTag(value)));
+
+ schematic.put("Palette", new CompoundTag(paletteTag));
+ schematic
+ .put("BlockData", new ByteArrayTag(buffer.toByteArray()));
+ schematic.put("TileEntities",
+ new ListTag(CompoundTag.class, tileEntities));
+ whenDone.value = new CompoundTag(schematic);
+ TaskManager.runTask(whenDone);
+ System.gc();
+ System.gc();
+ }
+ });
+ return;
+ }
+ final Runnable regionTask = this;
+ RegionWrapper region = queue.poll();
+ Location pos1 = new Location(world, region.minX, region.minY, region.minZ);
+ Location pos2 = new Location(world, region.maxX, region.maxY, region.maxZ);
+ final int bx = bot.getX();
+ final int bz = bot.getZ();
+ final int p1x = pos1.getX();
+ final int p1z = pos1.getZ();
+ final int p2x = pos2.getX();
+ final int p2z = pos2.getZ();
+ final int bcx = p1x >> 4;
+ final int bcz = p1z >> 4;
+ final int tcx = p2x >> 4;
+ final int tcz = p2z >> 4;
+ final int sy = pos1.getY();
+ final int ey = pos2.getY();
+ // Generate list of chunks
+ final ArrayList chunks = new ArrayList<>();
+ for (int x = bcx; x <= tcx; x++) {
+ for (int z = bcz; z <= tcz; z++) {
+ chunks.add(new ChunkLoc(x, z));
+ }
+ }
+ final World worldObj = Bukkit.getWorld(world);
+ // Main thread
+ TaskManager.runTask(new Runnable() {
+ @Override public void run() {
+ long start = System.currentTimeMillis();
+ while (!chunks.isEmpty()
+ && System.currentTimeMillis() - start < 20) {
+ // save schematics
+ ChunkLoc chunk = chunks.remove(0);
+ Chunk bc = worldObj.getChunkAt(chunk.x, chunk.z);
+ if (!bc.load(false)) {
+ continue;
+ }
+ int X = chunk.x;
+ int Z = chunk.z;
+ int xxb = X << 4;
+ int zzb = Z << 4;
+ int xxt = xxb + 15;
+ int zzt = zzb + 15;
+
+ if (X == bcx) {
+ xxb = p1x;
+ }
+ if (X == tcx) {
+ xxt = p2x;
+ }
+ if (Z == bcz) {
+ zzb = p1z;
+ }
+ if (Z == tcz) {
+ zzt = p2z;
+ }
+ for (int y = sy; y <= Math.min(255, ey); y++) {
+ int ry = y - sy;
+ int i1 = ry * width * length;
+ for (int z = zzb; z <= zzt; z++) {
+ int rz = z - bz;
+ int i2 = i1 + rz * width;
+ for (int x = xxb; x <= xxt; x++) {
+ int rx = x - bx;
+ int index = i2 + rx;
+ BlockVector3 point = BlockVector3.at(x, y, z);
+ BaseBlock block =
+ cuboidRegion.getWorld().getFullBlock(point);
+ if (block.getNbtData() != null) {
+ Map values = new HashMap<>();
+ for (Map.Entry entry : block
+ .getNbtData().getValue().entrySet()) {
+ values
+ .put(entry.getKey(), entry.getValue());
+ }
+
+ values.remove(
+ "id"); // Remove 'id' if it exists. We want 'Id'
+
+ // Positions are kept in NBT, we don't want that.
+ values.remove("x");
+ values.remove("y");
+ values.remove("z");
+
+ values
+ .put("Id", new StringTag(block.getNbtId()));
+ values.put("Pos",
+ new IntArrayTag(new int[] {x, y, z}));
+
+ tileEntities.add(new CompoundTag(values));
+ }
+ String blockKey =
+ block.toImmutableState().getAsString();
+ int blockId;
+ if (palette.containsKey(blockKey)) {
+ blockId = palette.get(blockKey);
+ } else {
+ blockId = paletteMax[0];
+ palette.put(blockKey, blockId);
+ paletteMax[0]++;
+ }
+
+ while ((blockId & -128) != 0) {
+ buffer.write(blockId & 127 | 128);
+ blockId >>>= 7;
+ }
+ buffer.write(blockId);
+ }
+ }
+ }
+ }
+ if (!chunks.isEmpty()) {
+ TaskManager.runTaskLater(this, 1);
+ } else {
+ regionTask.run();
+ }
+ }
+ });
+ }
+ });
+ }
+ });
+ }
+
+ @Override
+ public boolean restoreTile(LocalBlockQueue queue, CompoundTag ct, int x, int y, int z) {
+ return new StateWrapper(ct).restoreTag(queue.getWorld(), x, y, z);
+ }
+}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitSetupUtils.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitSetupUtils.java
similarity index 67%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitSetupUtils.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitSetupUtils.java
index 04d1b2d07..efdb034cd 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitSetupUtils.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitSetupUtils.java
@@ -1,33 +1,29 @@
-package com.plotsquared.bukkit.util;
+package com.github.intellectualsites.plotsquared.bukkit.util;
+
+import com.github.intellectualsites.plotsquared.bukkit.generator.BukkitPlotGenerator;
+import com.github.intellectualsites.plotsquared.configuration.ConfigurationSection;
+import com.github.intellectualsites.plotsquared.configuration.file.YamlConfiguration;
+import com.github.intellectualsites.plotsquared.plot.PlotSquared;
+import com.github.intellectualsites.plotsquared.plot.config.ConfigurationNode;
+import com.github.intellectualsites.plotsquared.plot.generator.GeneratorWrapper;
+import com.github.intellectualsites.plotsquared.plot.object.PlotArea;
+import com.github.intellectualsites.plotsquared.plot.object.SetupObject;
+import com.github.intellectualsites.plotsquared.plot.util.SetupUtils;
+import org.bukkit.*;
+import org.bukkit.World.Environment;
+import org.bukkit.entity.Player;
+import org.bukkit.generator.ChunkGenerator;
+import org.bukkit.plugin.Plugin;
-import com.intellectualcrafters.configuration.ConfigurationSection;
-import com.intellectualcrafters.configuration.file.YamlConfiguration;
-import com.intellectualcrafters.plot.PS;
-import com.intellectualcrafters.plot.config.ConfigurationNode;
-import com.intellectualcrafters.plot.generator.GeneratorWrapper;
-import com.intellectualcrafters.plot.object.PlotArea;
-import com.intellectualcrafters.plot.object.SetupObject;
-import com.intellectualcrafters.plot.util.SetupUtils;
-import com.plotsquared.bukkit.generator.BukkitPlotGenerator;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Objects;
-import org.bukkit.Bukkit;
-import org.bukkit.Chunk;
-import org.bukkit.World;
-import org.bukkit.World.Environment;
-import org.bukkit.WorldCreator;
-import org.bukkit.WorldType;
-import org.bukkit.entity.Player;
-import org.bukkit.generator.ChunkGenerator;
-import org.bukkit.plugin.Plugin;
public class BukkitSetupUtils extends SetupUtils {
- @Override
- public void updateGenerators() {
+ @Override public void updateGenerators() {
if (!SetupUtils.generators.isEmpty()) {
return;
}
@@ -37,7 +33,7 @@ public class BukkitSetupUtils extends SetupUtils {
if (plugin.isEnabled()) {
ChunkGenerator generator = plugin.getDefaultWorldGenerator(testWorld, "");
if (generator != null) {
- PS.get().removePlotAreas(testWorld);
+ PlotSquared.get().removePlotAreas(testWorld);
String name = plugin.getDescription().getName();
GeneratorWrapper> wrapped;
if (generator instanceof GeneratorWrapper>) {
@@ -54,8 +50,7 @@ public class BukkitSetupUtils extends SetupUtils {
}
}
- @Override
- public void unload(String worldName, boolean save) {
+ @Override public void unload(String worldName, boolean save) {
World world = Bukkit.getWorld(worldName);
if (world == null) {
return;
@@ -76,8 +71,7 @@ public class BukkitSetupUtils extends SetupUtils {
Bukkit.unloadWorld(world, false);
}
- @Override
- public String setupWorld(SetupObject object) {
+ @Override public String setupWorld(SetupObject object) {
SetupUtils.manager.updateGenerators();
ConfigurationNode[] steps = object.step == null ? new ConfigurationNode[0] : object.step;
String world = object.world;
@@ -86,16 +80,18 @@ public class BukkitSetupUtils extends SetupUtils {
switch (type) {
case 2: {
if (object.id != null) {
- if (!PS.get().worlds.contains(worldPath)) {
- PS.get().worlds.createSection(worldPath);
+ if (!PlotSquared.get().worlds.contains(worldPath)) {
+ PlotSquared.get().worlds.createSection(worldPath);
}
- ConfigurationSection worldSection = PS.get().worlds.getConfigurationSection(worldPath);
+ ConfigurationSection worldSection =
+ PlotSquared.get().worlds.getConfigurationSection(worldPath);
String areaName = object.id + "-" + object.min + "-" + object.max;
String areaPath = "areas." + areaName;
if (!worldSection.contains(areaPath)) {
worldSection.createSection(areaPath);
}
- ConfigurationSection areaSection = worldSection.getConfigurationSection(areaPath);
+ ConfigurationSection areaSection =
+ worldSection.getConfigurationSection(areaPath);
HashMap options = new HashMap<>();
for (ConfigurationNode step : steps) {
options.put(step.getConstant(), step.getValue());
@@ -103,7 +99,8 @@ public class BukkitSetupUtils extends SetupUtils {
options.put("generator.type", object.type);
options.put("generator.terrain", object.terrain);
options.put("generator.plugin", object.plotManager);
- if (object.setupGenerator != null && !object.setupGenerator.equals(object.plotManager)) {
+ if (object.setupGenerator != null && !object.setupGenerator
+ .equals(object.plotManager)) {
options.put("generator.init", object.setupGenerator);
}
for (Entry entry : options.entrySet()) {
@@ -126,18 +123,23 @@ public class BukkitSetupUtils extends SetupUtils {
break;
}
case 1: {
- if (!PS.get().worlds.contains(worldPath)) {
- PS.get().worlds.createSection(worldPath);
+ if (!PlotSquared.get().worlds.contains(worldPath)) {
+ PlotSquared.get().worlds.createSection(worldPath);
}
- ConfigurationSection worldSection = PS.get().worlds.getConfigurationSection(worldPath);
+ ConfigurationSection worldSection =
+ PlotSquared.get().worlds.getConfigurationSection(worldPath);
for (ConfigurationNode step : steps) {
worldSection.set(step.getConstant(), step.getValue());
}
- PS.get().worlds.set("worlds." + world + ".generator.type", object.type);
- PS.get().worlds.set("worlds." + world + ".generator.terrain", object.terrain);
- PS.get().worlds.set("worlds." + world + ".generator.plugin", object.plotManager);
- if (object.setupGenerator != null && !object.setupGenerator.equals(object.plotManager)) {
- PS.get().worlds.set("worlds." + world + ".generator.init", object.setupGenerator);
+ PlotSquared.get().worlds.set("worlds." + world + ".generator.type", object.type);
+ PlotSquared.get().worlds
+ .set("worlds." + world + ".generator.terrain", object.terrain);
+ PlotSquared.get().worlds
+ .set("worlds." + world + ".generator.plugin", object.plotManager);
+ if (object.setupGenerator != null && !object.setupGenerator
+ .equals(object.plotManager)) {
+ PlotSquared.get().worlds
+ .set("worlds." + world + ".generator.init", object.setupGenerator);
}
GeneratorWrapper> gen = SetupUtils.generators.get(object.setupGenerator);
if (gen != null && gen.isFull()) {
@@ -147,10 +149,11 @@ public class BukkitSetupUtils extends SetupUtils {
}
case 0: {
if (steps.length != 0) {
- if (!PS.get().worlds.contains(worldPath)) {
- PS.get().worlds.createSection(worldPath);
+ if (!PlotSquared.get().worlds.contains(worldPath)) {
+ PlotSquared.get().worlds.createSection(worldPath);
}
- ConfigurationSection worldSection = PS.get().worlds.getConfigurationSection(worldPath);
+ ConfigurationSection worldSection =
+ PlotSquared.get().worlds.getConfigurationSection(worldPath);
for (ConfigurationNode step : steps) {
worldSection.set(step.getConstant(), step.getValue());
}
@@ -159,22 +162,24 @@ public class BukkitSetupUtils extends SetupUtils {
}
}
try {
- PS.get().worlds.save(PS.get().worldsFile);
+ PlotSquared.get().worlds.save(PlotSquared.get().worldsFile);
} catch (IOException e) {
e.printStackTrace();
}
if (object.setupGenerator != null) {
- if (Bukkit.getPluginManager().getPlugin("Multiverse-Core") != null && Bukkit.getPluginManager().getPlugin("Multiverse-Core")
- .isEnabled()) {
- Bukkit.getServer()
- .dispatchCommand(Bukkit.getServer().getConsoleSender(), "mv create " + world + " normal -g " + object.setupGenerator);
+ if (Bukkit.getPluginManager().getPlugin("Multiverse-Core") != null && Bukkit
+ .getPluginManager().getPlugin("Multiverse-Core").isEnabled()) {
+ Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(),
+ "mv create " + world + " normal -g " + object.setupGenerator);
setGenerator(world, object.setupGenerator);
if (Bukkit.getWorld(world) != null) {
return world;
}
}
- if (Bukkit.getPluginManager().getPlugin("MultiWorld") != null && Bukkit.getPluginManager().getPlugin("MultiWorld").isEnabled()) {
- Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mw create " + world + " plugin:" + object.setupGenerator);
+ if (Bukkit.getPluginManager().getPlugin("MultiWorld") != null && Bukkit
+ .getPluginManager().getPlugin("MultiWorld").isEnabled()) {
+ Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(),
+ "mw create " + world + " plugin:" + object.setupGenerator);
setGenerator(world, object.setupGenerator);
if (Bukkit.getWorld(world) != null) {
return world;
@@ -187,20 +192,24 @@ public class BukkitSetupUtils extends SetupUtils {
Bukkit.createWorld(wc);
setGenerator(world, object.setupGenerator);
} else {
- if (Bukkit.getPluginManager().getPlugin("Multiverse-Core") != null && Bukkit.getPluginManager().getPlugin("Multiverse-Core")
- .isEnabled()) {
- Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mv create " + world + " normal");
+ if (Bukkit.getPluginManager().getPlugin("Multiverse-Core") != null && Bukkit
+ .getPluginManager().getPlugin("Multiverse-Core").isEnabled()) {
+ Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(),
+ "mv create " + world + " normal");
if (Bukkit.getWorld(world) != null) {
return world;
}
}
- if (Bukkit.getPluginManager().getPlugin("MultiWorld") != null && Bukkit.getPluginManager().getPlugin("MultiWorld").isEnabled()) {
- Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mw create " + world);
+ if (Bukkit.getPluginManager().getPlugin("MultiWorld") != null && Bukkit
+ .getPluginManager().getPlugin("MultiWorld").isEnabled()) {
+ Bukkit.getServer()
+ .dispatchCommand(Bukkit.getServer().getConsoleSender(), "mw create " + world);
if (Bukkit.getWorld(world) != null) {
return world;
}
}
- World bw = Bukkit.createWorld(new WorldCreator(object.world).environment(Environment.NORMAL));
+ World bw =
+ Bukkit.createWorld(new WorldCreator(object.world).environment(Environment.NORMAL));
}
return object.world;
}
@@ -219,8 +228,7 @@ public class BukkitSetupUtils extends SetupUtils {
}
}
- @Override
- public String getGenerator(PlotArea plotArea) {
+ @Override public String getGenerator(PlotArea plotArea) {
if (SetupUtils.generators.isEmpty()) {
updateGenerators();
}
diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitTaskManager.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitTaskManager.java
new file mode 100644
index 000000000..56448ff34
--- /dev/null
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitTaskManager.java
@@ -0,0 +1,50 @@
+package com.github.intellectualsites.plotsquared.bukkit.util;
+
+import com.github.intellectualsites.plotsquared.bukkit.BukkitMain;
+import com.github.intellectualsites.plotsquared.plot.util.TaskManager;
+import org.bukkit.Bukkit;
+
+public class BukkitTaskManager extends TaskManager {
+
+ private final BukkitMain bukkitMain;
+
+ public BukkitTaskManager(BukkitMain bukkitMain) {
+ this.bukkitMain = bukkitMain;
+ }
+
+ @Override public int taskRepeat(Runnable runnable, int interval) {
+ return this.bukkitMain.getServer().getScheduler()
+ .scheduleSyncRepeatingTask(this.bukkitMain, runnable, interval, interval);
+ }
+
+ @SuppressWarnings("deprecation") @Override
+ public int taskRepeatAsync(Runnable runnable, int interval) {
+ return this.bukkitMain.getServer().getScheduler()
+ .scheduleAsyncRepeatingTask(this.bukkitMain, runnable, interval, interval);
+ }
+
+ @Override public void taskAsync(Runnable runnable) {
+ this.bukkitMain.getServer().getScheduler().runTaskAsynchronously(this.bukkitMain, runnable)
+ .getTaskId();
+ }
+
+ @Override public void task(Runnable runnable) {
+ this.bukkitMain.getServer().getScheduler().runTask(this.bukkitMain, runnable).getTaskId();
+ }
+
+ @Override public void taskLater(Runnable runnable, int delay) {
+ this.bukkitMain.getServer().getScheduler().runTaskLater(this.bukkitMain, runnable, delay)
+ .getTaskId();
+ }
+
+ @Override public void taskLaterAsync(Runnable runnable, int delay) {
+ this.bukkitMain.getServer().getScheduler()
+ .runTaskLaterAsynchronously(this.bukkitMain, runnable, delay);
+ }
+
+ @Override public void cancelTask(int task) {
+ if (task != -1) {
+ Bukkit.getScheduler().cancelTask(task);
+ }
+ }
+}
diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitUtil.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitUtil.java
new file mode 100644
index 000000000..f3981c152
--- /dev/null
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitUtil.java
@@ -0,0 +1,471 @@
+package com.github.intellectualsites.plotsquared.bukkit.util;
+
+import com.github.intellectualsites.plotsquared.bukkit.object.BukkitPlayer;
+import com.github.intellectualsites.plotsquared.plot.PlotSquared;
+import com.github.intellectualsites.plotsquared.plot.config.C;
+import com.github.intellectualsites.plotsquared.plot.object.*;
+import com.github.intellectualsites.plotsquared.plot.object.schematic.PlotItem;
+import com.github.intellectualsites.plotsquared.plot.util.*;
+import com.sk89q.worldedit.bukkit.BukkitWorld;
+import lombok.NonNull;
+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.Block;
+import org.bukkit.block.BlockState;
+import org.bukkit.block.Sign;
+import org.bukkit.entity.Entity;
+import org.bukkit.entity.Player;
+import org.bukkit.inventory.Inventory;
+import org.bukkit.inventory.InventoryHolder;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.material.*;
+
+import javax.annotation.Nullable;
+import java.util.*;
+
+@SuppressWarnings({"unused", "WeakerAccess"}) public class BukkitUtil extends WorldUtil {
+
+ private static String lastString = null;
+ private static World lastWorld = null;
+
+ private static Player lastPlayer = null;
+ private static PlotPlayer lastPlotPlayer = null;
+
+ public static void removePlayer(String player) {
+ lastPlayer = null;
+ lastPlotPlayer = null;
+ }
+
+ public static PlotPlayer getPlayer(@NonNull final OfflinePlayer op) {
+ if (op.isOnline()) {
+ return getPlayer(op.getPlayer());
+ }
+ final Player player = OfflinePlayerUtil.loadPlayer(op);
+ player.loadData();
+ return new BukkitPlayer(player, true);
+ }
+
+ /**
+ * Get a plot based on the location.
+ *
+ * @param location the location to check
+ * @return plot if found, otherwise it creates a temporary plot
+ * @see Plot
+ */
+ public static Plot getPlot(org.bukkit.Location location) {
+ if (location == null) {
+ return null;
+ }
+ return getLocation(location).getPlot();
+ }
+
+ /**
+ * Get a plot based on the player location.
+ *
+ * @param player the player to check
+ * @return plot if found, otherwise it creates a temporary plot
+ * @see #getPlot(org.bukkit.Location)
+ * @see Plot
+ */
+ public static Plot getPlot(Player player) {
+ return getPlot(player.getLocation());
+ }
+
+ /**
+ * Get home location.
+ *
+ * @param plot Plot that you want to get the location for
+ * @return plot bottom location
+ * @see Plot
+ */
+ public static org.bukkit.Location getHomeLocation(Plot plot) {
+ return BukkitUtil.getLocation(plot.getHome());
+ }
+
+ /**
+ * Get the PlotPlayer for an offline player.
+ *
+ *
Note that this will work if the player is offline, however not all
+ * functionality will work.
+ *
+ * @param player the player to wrap
+ * @return a {@code PlotPlayer}
+ * @see PlotPlayer#wrap(Object)
+ */
+ public static PlotPlayer wrapPlayer(OfflinePlayer player) {
+ return PlotPlayer.wrap(player);
+ }
+
+ /**
+ * Gets the PlotPlayer for a player. The PlotPlayer is usually cached and
+ * will provide useful functions relating to players.
+ *
+ * @param player the player to wrap
+ * @return a {@code PlotPlayer}
+ * @see PlotPlayer#wrap(Object)
+ */
+ public static PlotPlayer wrapPlayer(Player player) {
+ return PlotPlayer.wrap(player);
+ }
+
+ /**
+ * Gets the number of plots, which the player is able to build in.
+ *
+ * @param player player, for whom we're getting the plots
+ * @return the number of allowed plots
+ */
+ public static int getAllowedPlots(Player player) {
+ PlotPlayer plotPlayer = PlotPlayer.wrap(player);
+ return plotPlayer.getAllowedPlots();
+ }
+
+ /**
+ * Check whether or not a player is in a plot.
+ *
+ * @param player who we're checking for
+ * @return true if the player is in a plot, false if not-
+ */
+ public static boolean isInPlot(Player player) {
+ return getPlot(player) != null;
+ }
+
+ /**
+ * Gets a collection containing the players plots.
+ *
+ * @param world Specify the world we want to select the plots from
+ * @param player Player, for whom we're getting the plots
+ * @return a set containing the players plots
+ * @see Plot
+ */
+ public static Set getPlayerPlots(String world, Player player) {
+ if (world == null) {
+ return new HashSet<>();
+ }
+ return PlotPlayer.wrap(player).getPlots(world);
+ }
+
+ /**
+ * Send a message to a player. The message supports color codes.
+ *
+ * @param player the recipient of the message
+ * @param string the message
+ * @see MainUtil#sendMessage(PlotPlayer, String)
+ */
+ public static void sendMessage(Player player, String string) {
+ MainUtil.sendMessage(BukkitUtil.getPlayer(player), string);
+ }
+
+ /**
+ * Gets the player plot count.
+ *
+ * @param world Specify the world we want to select the plots from
+ * @param player Player, for whom we're getting the plot count
+ * @return the number of plots the player has
+ */
+ public static int getPlayerPlotCount(String world, Player player) {
+ if (world == null) {
+ return 0;
+ }
+ return BukkitUtil.getPlayer(player).getPlotCount(world);
+ }
+
+ /**
+ * Send a message to a player.
+ *
+ * @param player the recipient of the message
+ * @param caption the message
+ * @see MainUtil#sendMessage(PlotPlayer, C, String...)
+ */
+ public static void sendMessage(Player player, C caption) {
+ MainUtil.sendMessage(BukkitUtil.getPlayer(player), caption);
+ }
+
+ public static PlotPlayer getPlayer(@NonNull final Player player) {
+ if (player == lastPlayer) {
+ return lastPlotPlayer;
+ }
+ final String name = player.getName();
+ final PlotPlayer plotPlayer = UUIDHandler.getPlayer(name);
+ if (plotPlayer != null) {
+ return plotPlayer;
+ }
+ lastPlotPlayer = new BukkitPlayer(player);
+ UUIDHandler.getPlayers().put(name, lastPlotPlayer);
+ lastPlayer = player;
+ return lastPlotPlayer;
+ }
+
+ public static Location getLocation(@NonNull final org.bukkit.Location location) {
+ return new Location(location.getWorld().getName(), MathMan.roundInt(location.getX()),
+ MathMan.roundInt(location.getY()), MathMan.roundInt(location.getZ()));
+ }
+
+ public static org.bukkit.Location getLocation(@NonNull final Location location) {
+ return new org.bukkit.Location(getWorld(location.getWorld()), location.getX(),
+ location.getY(), location.getZ());
+ }
+
+ public static World getWorld(@NonNull final String string) {
+ return Bukkit.getWorld(string);
+ }
+
+ public static String getWorld(@NonNull final Entity entity) {
+ return entity.getWorld().getName();
+ }
+
+ public static List getEntities(@NonNull final String worldName) {
+ World world = getWorld(worldName);
+ return world != null ? world.getEntities() : new ArrayList();
+ }
+
+ public static Location getLocation(@NonNull final Entity entity) {
+ final org.bukkit.Location location = entity.getLocation();
+ String world = location.getWorld().getName();
+ return new Location(world, location.getBlockX(), location.getBlockY(),
+ location.getBlockZ());
+ }
+
+ public static Location getLocationFull(@NonNull final Entity entity) {
+ final org.bukkit.Location location = entity.getLocation();
+ return new Location(location.getWorld().getName(), MathMan.roundInt(location.getX()),
+ MathMan.roundInt(location.getY()), MathMan.roundInt(location.getZ()), location.getYaw(),
+ location.getPitch());
+ }
+
+ public static BukkitLegacyMappings getBukkitLegacyMappings() {
+ return (BukkitLegacyMappings) PlotSquared.imp().getLegacyMappings();
+ }
+
+ public static Material getMaterial(@NonNull final PlotBlock plotBlock) {
+ if (plotBlock instanceof StringPlotBlock) {
+ return Material
+ .getMaterial(((StringPlotBlock) plotBlock).getItemId().toUpperCase(Locale.ENGLISH));
+ } else {
+ final LegacyPlotBlock legacyPlotBlock = (LegacyPlotBlock) plotBlock;
+ return getBukkitLegacyMappings()
+ .fromLegacyToString(legacyPlotBlock.getId(), legacyPlotBlock.getData())
+ .to(Material.class);
+ }
+ }
+
+ @Override public boolean isBlockSame(PlotBlock block1, PlotBlock block2) {
+ if (block1.equals(block2)) {
+ return true;
+ }
+ Material mat1 = getMaterial(block1), mat2 = getMaterial(block2);
+ return mat1 == mat2;
+ }
+
+ @Override public boolean isWorld(@NonNull final String worldName) {
+ return getWorld(worldName) != null;
+ }
+
+ @Override public String getBiome(String world, int x, int z) {
+ return getWorld(world).getBiome(x, z).name();
+ }
+
+ @Override @SuppressWarnings("deprecation")
+ public void setSign(@NonNull final String worldName, final int x, final int y, final int z,
+ @NonNull final String[] lines) {
+ final World world = getWorld(worldName);
+ final Block block = world.getBlockAt(x, y, z);
+ // block.setType(Material.AIR);
+ final Material type = block.getType();
+ if (type != Material.SIGN && type != Material.WALL_SIGN) {
+ int data = 2;
+ if (world.getBlockAt(x, y, z + 1).getType().isSolid())
+ data = 2;
+ else if (world.getBlockAt(x + 1, y, z).getType().isSolid())
+ data = 4;
+ else if (world.getBlockAt(x, y, z - 1).getType().isSolid())
+ data = 3;
+ else if (world.getBlockAt(x - 1, y, z).getType().isSolid())
+ data = 5;
+ block.setType(Material.WALL_SIGN, false);
+ final Sign sign = (Sign) block.getBlockData();
+ sign.setRawData((byte) data);
+ }
+ final BlockState blockstate = block.getState();
+ if (blockstate instanceof Sign) {
+ final Sign sign = (Sign) blockstate;
+ for (int i = 0; i < lines.length; i++) {
+ sign.setLine(i, lines[i]);
+ }
+ sign.update(true);
+ }
+ }
+
+ @Override @Nullable public String[] getSign(@NonNull final Location location) {
+ Block block = getWorld(location.getWorld())
+ .getBlockAt(location.getX(), location.getY(), location.getZ());
+ if (block != null) {
+ if (block.getState() instanceof Sign) {
+ Sign sign = (Sign) block.getState();
+ return sign.getLines();
+ }
+ }
+ return null;
+ }
+
+ @Override public Location getSpawn(@NonNull final PlotPlayer player) {
+ return getLocation(((BukkitPlayer) player).player.getBedSpawnLocation());
+ }
+
+ @Override public Location getSpawn(@NonNull final String world) {
+ final org.bukkit.Location temp = getWorld(world).getSpawnLocation();
+ return new Location(world, temp.getBlockX(), temp.getBlockY(), temp.getBlockZ(),
+ temp.getYaw(), temp.getPitch());
+ }
+
+ @Override public void setSpawn(@NonNull final Location location) {
+ final World world = getWorld(location.getWorld());
+ if (world != null) {
+ world.setSpawnLocation(location.getX(), location.getY(), location.getZ());
+ }
+ }
+
+ @Override public void saveWorld(@NonNull final String worldName) {
+ final World world = getWorld(worldName);
+ if (world != null) {
+ world.save();
+ }
+ }
+
+ @Override public int getHighestBlock(@NonNull final String world, final int x, final int z) {
+ final World bukkitWorld = getWorld(world);
+ // Skip top and bottom block
+ int air = 1;
+ for (int y = bukkitWorld.getMaxHeight() - 1; y >= 0; y--) {
+ Block block = bukkitWorld.getBlockAt(x, y, z);
+ if (block != null) {
+ Material type = block.getType();
+ if (type.isSolid()) {
+ if (air > 1)
+ return y;
+ air = 0;
+ } else {
+ switch (type) {
+ case WATER:
+ case LAVA:
+ return y;
+ }
+ air++;
+ }
+ }
+ }
+ return bukkitWorld.getMaxHeight() - 1;
+ }
+
+ @Override public int getBiomeFromString(@NonNull final String biomeString) {
+ try {
+ final Biome biome = Biome.valueOf(biomeString.toUpperCase());
+ return Arrays.asList(Biome.values()).indexOf(biome);
+ } catch (IllegalArgumentException ignored) {
+ return -1;
+ }
+ }
+
+ @Override public String[] getBiomeList() {
+ final Biome[] biomes = Biome.values();
+ final String[] list = new String[biomes.length];
+ for (int i = 0; i < biomes.length; i++) {
+ list[i] = biomes[i].name();
+ }
+ return list;
+ }
+
+ @Override
+ public boolean addItems(@NonNull final String worldName, @NonNull final PlotItem items) {
+ final World world = getWorld(worldName);
+ final Block block = world.getBlockAt(items.x, items.y, items.z);
+ if (block == null) {
+ return false;
+ }
+ final BlockState state = block.getState();
+ if (state instanceof InventoryHolder) {
+ InventoryHolder holder = (InventoryHolder) state;
+ Inventory inv = holder.getInventory();
+ for (int i = 0; i < items.types.length; i++) {
+ // ItemStack item = new ItemStack(LegacyMappings.fromLegacyId(items.id[i]).getMaterial(), items.amount[i], items.data[i]);
+ ItemStack item = new ItemStack(items.types[i].to(Material.class), items.amount[i]);
+ inv.addItem(item);
+ }
+ state.update(true);
+ return true;
+ }
+ return false;
+ }
+
+ @Override public boolean isBlockSolid(@NonNull final PlotBlock block) {
+ try {
+ final Material material = getMaterial(block);
+ if (material.isBlock() && material.isSolid() && !material.hasGravity()) {
+ Class extends MaterialData> data = material.getData();
+ if (data.equals(MaterialData.class) && !material.isTransparent() && material
+ .isOccluding() || data.equals(Tree.class) || data.equals(Sandstone.class)
+ || data.equals(Wool.class) || data.equals(Step.class) || data
+ .equals(WoodenStep.class)) {
+ switch (material) {
+ case NOTE_BLOCK:
+ case SPAWNER:
+ return false;
+ default:
+ return true;
+ }
+ }
+ }
+ return false;
+ } catch (Exception ignored) {
+ return false;
+ }
+ }
+
+ @Override public String getClosestMatchingName(@NonNull final PlotBlock block) {
+ try {
+ return getMaterial(block).name();
+ } catch (Exception ignored) {
+ return null;
+ }
+ }
+
+ @Override @Nullable
+ public StringComparison.ComparisonResult getClosestBlock(String name) {
+ final PlotBlock plotBlock = BukkitUtil.getBukkitLegacyMappings().fromAny(name);
+ if (plotBlock != null) {
+ return new StringComparison().new ComparisonResult(1, plotBlock);
+ }
+ return BukkitUtil.getBukkitLegacyMappings().getClosestsMatch(name);
+ }
+
+ @Override
+ public void setBiomes(@NonNull final String worldName, @NonNull final RegionWrapper region,
+ @NonNull final String biomeString) {
+ final World world = getWorld(worldName);
+ final Biome biome = Biome.valueOf(biomeString.toUpperCase());
+ for (int x = region.minX; x <= region.maxX; x++) {
+ for (int z = region.minZ; z <= region.maxZ; z++) {
+ world.setBiome(x, z, biome);
+ }
+ }
+ }
+
+ public com.sk89q.worldedit.world.World getWeWorld(String world) {
+ return new BukkitWorld(Bukkit.getWorld(world));
+ }
+
+ @Override public PlotBlock getBlock(@NonNull final Location location) {
+ final World world = getWorld(location.getWorld());
+ final Block block = world.getBlockAt(location.getX(), location.getY(), location.getZ());
+ if (block == null) {
+ return StringPlotBlock.EVERYTHING;
+ }
+ return PlotBlock.get(block.getType().name());
+ }
+
+ @Override public String getMainWorld() {
+ return Bukkit.getWorlds().get(0).getName();
+ }
+}
diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitVersion.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitVersion.java
new file mode 100644
index 000000000..8bfa3da59
--- /dev/null
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitVersion.java
@@ -0,0 +1,7 @@
+package com.github.intellectualsites.plotsquared.bukkit.util;
+
+public class BukkitVersion {
+ public static int[] v1_13_2 = {1, 13, 2};
+ public static int[] v1_13_1 = {1, 13, 1};
+ public static int[] v1_13_0 = {1, 13, 0};
+}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/Metrics.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/Metrics.java
similarity index 82%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/util/Metrics.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/Metrics.java
index d1b30c50c..1dea71d41 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/Metrics.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/Metrics.java
@@ -1,4 +1,4 @@
-package com.plotsquared.bukkit.util;
+package com.github.intellectualsites.plotsquared.bukkit.util;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
@@ -6,12 +6,7 @@ import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.scheduler.BukkitTask;
-import java.io.BufferedReader;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
+import java.io.*;
import java.lang.reflect.InvocationTargetException;
import java.net.URL;
import java.net.URLConnection;
@@ -22,19 +17,33 @@ import java.util.zip.GZIPOutputStream;
public class Metrics {
- /** The current revision number. */
+ /**
+ * The current revision number.
+ */
private static final int REVISION = 7;
- /** The base url of the metrics domain.*/
+ /**
+ * The base url of the metrics domain.
+ */
private static final String BASE_URL = "http://report.mcstats.org";
- /** The url used to report a server's status. */
+ /**
+ * The url used to report a server's status.
+ */
private static final String REPORT_URL = "/plugin/%s";
- /** Interval of time to ping (in minutes). */
+ /**
+ * Interval of time to ping (in minutes).
+ */
private static final int PING_INTERVAL = 15;
- /** The plugin this metrics submits for. */
+ /**
+ * The plugin this metrics submits for.
+ */
private final Plugin plugin;
- /** Unique server id. */
+ /**
+ * Unique server id.
+ */
private final String guid;
- /** The scheduled task. */
+ /**
+ * The scheduled task.
+ */
private volatile BukkitTask task = null;
public Metrics(Plugin plugin) {
@@ -46,7 +55,6 @@ public class Metrics {
* GZip compress a string of bytes.
*
* @param input
- *
* @return byte[] the file as a byte array
*/
public static byte[] gzip(String input) {
@@ -61,7 +69,8 @@ public class Metrics {
if (gzos != null) {
try {
gzos.close();
- } catch (IOException ignore) {}
+ } catch (IOException ignore) {
+ }
}
}
return baos.toByteArray();
@@ -73,7 +82,6 @@ public class Metrics {
* @param json
* @param key
* @param value
- *
*/
private static void appendJSONPair(StringBuilder json, String key, String value) {
boolean isValueNumeric = false;
@@ -101,7 +109,6 @@ public class Metrics {
* Escape a string to create a valid JSON string
*
* @param text
- *
* @return String
*/
private static String escapeJSON(String text) {
@@ -145,7 +152,6 @@ public class Metrics {
* Encode text as UTF-8
*
* @param text the text to encode
- *
* @return the encoded text, as UTF-8
*/
private static String urlEncode(String text) throws UnsupportedEncodingException {
@@ -165,22 +171,22 @@ public class Metrics {
return true;
}
// Begin hitting the server with glorious data
- this.task = this.plugin.getServer().getScheduler().runTaskTimerAsynchronously(this.plugin, new Runnable() {
- private boolean firstPost = true;
+ this.task = this.plugin.getServer().getScheduler()
+ .runTaskTimerAsynchronously(this.plugin, new Runnable() {
+ private boolean firstPost = true;
- @Override
- public void run() {
- try {
- postPlugin(!this.firstPost);
- // After the first post we set firstPost to
- // false
- // Each post thereafter will be a ping
- this.firstPost = false;
- } catch (IOException e) {
- e.printStackTrace();
+ @Override public void run() {
+ try {
+ postPlugin(!this.firstPost);
+ // After the first post we set firstPost to
+ // false
+ // Each post thereafter will be a ping
+ this.firstPost = false;
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
}
- }
- }, 0, PING_INTERVAL * 1200);
+ }, 0, PING_INTERVAL * 1200);
return true;
}
@@ -196,10 +202,15 @@ public class Metrics {
String serverVersion = Bukkit.getVersion();
int playersOnline = 0;
try {
- if (Bukkit.class.getMethod("getOnlinePlayers", new Class>[0]).getReturnType() == Collection.class) {
- playersOnline = ((Collection>) Bukkit.class.getMethod("getOnlinePlayers", new Class>[0]).invoke(null)).size();
+ if (Bukkit.class.getMethod("getOnlinePlayers", new Class>[0]).getReturnType()
+ == Collection.class) {
+ playersOnline =
+ ((Collection>) Bukkit.class.getMethod("getOnlinePlayers", new Class>[0])
+ .invoke(null)).size();
} else {
- playersOnline = ((Player[]) Bukkit.class.getMethod("getOnlinePlayers", new Class>[0]).invoke(null)).length;
+ playersOnline =
+ ((Player[]) Bukkit.class.getMethod("getOnlinePlayers", new Class>[0])
+ .invoke(null)).length;
}
} catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException ex) {
ex.printStackTrace();
@@ -256,7 +267,8 @@ public class Metrics {
os.flush();
}
String response;
- try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
+ try (BufferedReader reader = new BufferedReader(
+ new InputStreamReader(connection.getInputStream()))) {
response = reader.readLine();
}
if (response == null || response.startsWith("ERR") || response.startsWith("7")) {
@@ -267,6 +279,7 @@ public class Metrics {
}
throw new IOException(response);
}
- } catch (IOException ignored) {}
+ } catch (IOException ignored) {
+ }
}
-}
\ No newline at end of file
+}
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/NbtFactory.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/NbtFactory.java
similarity index 83%
rename from Bukkit/src/main/java/com/plotsquared/bukkit/util/NbtFactory.java
rename to Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/NbtFactory.java
index 69690cc8c..ffc69edfc 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/NbtFactory.java
+++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/NbtFactory.java
@@ -1,4 +1,4 @@
-package com.plotsquared.bukkit.util;
+package com.github.intellectualsites.plotsquared.bukkit.util;
import com.google.common.base.Splitter;
import com.google.common.collect.BiMap;
@@ -8,36 +8,18 @@ import com.google.common.collect.MapMaker;
import com.google.common.io.ByteSink;
import com.google.common.io.Closeables;
import com.google.common.primitives.Primitives;
-import java.io.BufferedInputStream;
-import java.io.DataInput;
-import java.io.DataInputStream;
-import java.io.DataOutput;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.AbstractList;
-import java.util.AbstractMap;
-import java.util.AbstractSet;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentMap;
-import java.util.zip.GZIPInputStream;
-import java.util.zip.GZIPOutputStream;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Server;
import org.bukkit.inventory.ItemStack;
+import java.io.*;
+import java.lang.reflect.*;
+import java.util.*;
+import java.util.concurrent.ConcurrentMap;
+import java.util.zip.GZIPInputStream;
+import java.util.zip.GZIPOutputStream;
+
public class NbtFactory {
// Convert between NBT type and the equivalent class in java
@@ -73,14 +55,16 @@ public class NbtFactory {
ClassLoader loader = NbtFactory.class.getClassLoader();
String packageName = getPackageName();
- String craftpackageName = getCraftPackageName();
+ String craftpackageName = getCraftPackageName();
Class> offlinePlayer = loader.loadClass(packageName + ".CraftOfflinePlayer");
// Prepare NBT
- this.COMPOUND_CLASS = getMethod(0, Modifier.STATIC, offlinePlayer, "getData").getReturnType();
+ this.COMPOUND_CLASS =
+ getMethod(0, Modifier.STATIC, offlinePlayer, "getData").getReturnType();
this.BASE_CLASS = loader.loadClass(craftpackageName + ".NBTBase");
this.NBT_GET_TYPE = getMethod(0, Modifier.STATIC, this.BASE_CLASS, "getTypeId");
- this.NBT_CREATE_TAG = getMethod(Modifier.STATIC, 0, this.BASE_CLASS, "createTag", byte.class);
+ this.NBT_CREATE_TAG =
+ getMethod(Modifier.STATIC, 0, this.BASE_CLASS, "createTag", byte.class);
// Prepare CraftItemStack
this.CRAFT_STACK = loader.loadClass(packageName + ".inventory.CraftItemStack");
@@ -92,11 +76,14 @@ public class NbtFactory {
initializeNMS(loader, nmsPackage);
if (this.READ_LIMITER_CLASS != null) {
- this.LOAD_COMPOUND = new LoadMethodSkinUpdate(this.STREAM_TOOLS, this.READ_LIMITER_CLASS);
+ this.LOAD_COMPOUND =
+ new LoadMethodSkinUpdate(this.STREAM_TOOLS, this.READ_LIMITER_CLASS);
} else {
this.LOAD_COMPOUND = new LoadMethodWorldUpdate(this.STREAM_TOOLS);
}
- this.SAVE_COMPOUND = getMethod(Modifier.STATIC, 0, this.STREAM_TOOLS, null, this.BASE_CLASS, DataOutput.class);
+ this.SAVE_COMPOUND =
+ getMethod(Modifier.STATIC, 0, this.STREAM_TOOLS, null, this.BASE_CLASS,
+ DataOutput.class);
} catch (ClassNotFoundException e) {
throw new IllegalStateException("Unable to find offline player.", e);
@@ -106,6 +93,7 @@ public class NbtFactory {
/**
* Retrieve or construct a shared NBT factory.
+ *
* @return The factory.
*/
private static NbtFactory get() {
@@ -117,6 +105,7 @@ public class NbtFactory {
/**
* Construct a new NBT list of an unspecified type.
+ *
* @return The NBT list.
*/
public static NbtList createList(Object... content) {
@@ -125,6 +114,7 @@ public class NbtFactory {
/**
* Construct a new NBT list of an unspecified type.
+ *
* @return The NBT list.
*/
public static NbtList createList(Iterable extends Object> iterable) {
@@ -148,6 +138,7 @@ public class NbtFactory {
/**
* Construct a new NBT wrapper from a list.
+ *
* @param nmsList - the NBT list.
* @return The wrapper.
*/
@@ -158,12 +149,13 @@ public class NbtFactory {
/**
* Load the content of a file from a stream.
*
- * @param input - the stream.
+ * @param input - the stream.
* @param option - whether or not to decompress the input stream.
* @return The decoded NBT compound.
* @throws IOException If anything went wrong.
*/
- public static NbtCompound fromStream(InputStream input, StreamOptions option) throws IOException {
+ public static NbtCompound fromStream(InputStream input, StreamOptions option)
+ throws IOException {
DataInputStream data = null;
boolean suppress = true;
@@ -195,14 +187,16 @@ public class NbtFactory {
* @param option - whether or not to compress the output.
* @throws IOException If anything went wrong.
*/
- public static void saveStream(NbtCompound source, ByteSink stream, StreamOptions option) throws IOException {
+ public static void saveStream(NbtCompound source, ByteSink stream, StreamOptions option)
+ throws IOException {
OutputStream output = null;
DataOutputStream data = null;
boolean suppress = true;
try {
output = stream.openStream();
- data = new DataOutputStream(option == StreamOptions.GZIP_COMPRESSION ? new GZIPOutputStream(output) : output);
+ data = new DataOutputStream(
+ option == StreamOptions.GZIP_COMPRESSION ? new GZIPOutputStream(output) : output);
invokeMethod(get().SAVE_COMPOUND, null, source.getHandle(), data);
suppress = false;
@@ -218,6 +212,7 @@ public class NbtFactory {
/**
* Construct a new NBT wrapper from a compound.
+ *
* @param nmsCompound - the NBT compound.
* @return The wrapper.
*/
@@ -228,7 +223,8 @@ public class NbtFactory {
/**
* Set the NBT compound tag of a given item stack.
*
- * @param stack - the item stack, cannot be air.
+ *
+ * @param stack - the item stack, cannot be air.
* @param compound - the new NBT compound, or NULL to remove it.
* @throws IllegalArgumentException If the stack is not a CraftItemStack, or it represents air.
*/
@@ -246,6 +242,7 @@ public class NbtFactory {
* material, damage value or count.
*
* The item stack must be a wrapper for a CraftItemStack.
+ *
* @param stack - the item stack.
* @return A wrapper for its NBT tag.
*/
@@ -265,6 +262,7 @@ public class NbtFactory {
/**
* Retrieve a CraftItemStack version of the stack.
+ *
* @param stack - the stack to convert.
* @return The CraftItemStack version.
*/
@@ -279,12 +277,14 @@ public class NbtFactory {
caller.setAccessible(true);
return (ItemStack) caller.newInstance(stack);
} catch (Exception ignored) {
- throw new IllegalStateException("Unable to convert " + stack + " + to a CraftItemStack.");
+ throw new IllegalStateException(
+ "Unable to convert " + stack + " + to a CraftItemStack.");
}
}
/**
* Ensure that the given stack can store arbitrary NBT information.
+ *
* @param stack - the stack to check.
*/
private static void checkItemStack(ItemStack stack) {
@@ -295,12 +295,14 @@ public class NbtFactory {
throw new IllegalArgumentException("Stack must be a CraftItemStack.");
}
if (stack.getType() == Material.AIR) {
- throw new IllegalArgumentException("ItemStacks representing air cannot store NMS information.");
+ throw new IllegalArgumentException(
+ "ItemStacks representing air cannot store NMS information.");
}
}
/**
* Invoke a method on the given target instance using the provided parameters.
+ *
* @param method - the method to invoke.
* @param target - the target.
* @param params - the parameters to supply.
@@ -332,22 +334,23 @@ public class NbtFactory {
/**
* Search for the first publicly and privately defined method of the given name and parameter count.
+ *
* @param requireMod - modifiers that are required.
- * @param bannedMod - modifiers that are banned.
- * @param clazz - a class to start with.
+ * @param bannedMod - modifiers that are banned.
+ * @param clazz - a class to start with.
* @param methodName - the method name, or NULL to skip.
- * @param params - the expected parameters.
+ * @param params - the expected parameters.
* @return The first method by this name.
* @throws IllegalStateException If we cannot find this method.
*/
- private static Method getMethod(int requireMod, int bannedMod, Class> clazz, String methodName,
- Class>... params) {
+ private static Method getMethod(int requireMod, int bannedMod, Class> clazz,
+ String methodName, Class>... params) {
for (Method method : clazz.getDeclaredMethods()) {
// Limitation: Doesn't handle overloads
- if (((method.getModifiers() & requireMod) == requireMod)
- && ((method.getModifiers() & bannedMod) == 0)
- && ((methodName == null) || method.getName().equals(methodName))
- && Arrays.equals(method.getParameterTypes(), params)) {
+ if (((method.getModifiers() & requireMod) == requireMod) && (
+ (method.getModifiers() & bannedMod) == 0) && ((methodName == null) || method
+ .getName().equals(methodName)) && Arrays
+ .equals(method.getParameterTypes(), params)) {
method.setAccessible(true);
return method;
@@ -357,13 +360,15 @@ public class NbtFactory {
if (clazz.getSuperclass() != null) {
return getMethod(requireMod, bannedMod, clazz.getSuperclass(), methodName, params);
}
- throw new IllegalStateException(String.format("Unable to find method %s (%s).", methodName, Arrays.asList(params)));
+ throw new IllegalStateException(
+ String.format("Unable to find method %s (%s).", methodName, Arrays.asList(params)));
}
/**
* Search for the first publicly and privately defined field of the given name.
- * @param instance - an instance of the class with the field.
- * @param clazz - an optional class to start with, or NULL to deduce it from instance.
+ *
+ * @param instance - an instance of the class with the field.
+ * @param clazz - an optional class to start with, or NULL to deduce it from instance.
* @param fieldName - the field name.
* @return The first field by this name.
* @throws IllegalStateException If we cannot find this field.
@@ -390,7 +395,8 @@ public class NbtFactory {
try {
this.STREAM_TOOLS = loader.loadClass(nmsPackage + ".NBTCompressedStreamTools");
this.READ_LIMITER_CLASS = loader.loadClass(nmsPackage + ".NBTReadLimiter");
- } catch (ClassNotFoundException ignored) {}
+ } catch (ClassNotFoundException ignored) {
+ }
}
private String getPackageName() {
@@ -404,24 +410,25 @@ public class NbtFactory {
return "org.bukkit.craftbukkit.v1_13_R1";
}
}
-
- private String getCraftPackageName() {
- String version = Bukkit.getServer().getClass().getPackage().getName().replace(".", ",").split(",")[3];
- return "net.minecraft.server." + version;
+
+ private String getCraftPackageName() {
+ String version =
+ Bukkit.getServer().getClass().getPackage().getName().replace(".", ",").split(",")[3];
+ return "net.minecraft.server." + version;
}
- @SuppressWarnings("unchecked")
- private Map getDataMap(Object handle) {
- return (Map) getFieldValue(getDataField(NbtType.TAG_COMPOUND, handle), handle);
+ @SuppressWarnings("unchecked") private Map getDataMap(Object handle) {
+ return (Map) getFieldValue(getDataField(NbtType.TAG_COMPOUND, handle),
+ handle);
}
- @SuppressWarnings("unchecked")
- private List