Cleanup and Optimizations

Abstracted TitleManagers
Removed a lot of Statics.
ETC.
This commit is contained in:
MattBDev 2016-04-05 12:37:11 -04:00
commit 9c81dfa5c3
50 changed files with 1100 additions and 1470 deletions

View File

@ -47,14 +47,6 @@ import java.util.UUID;
*/
public class PlotAPI {
/**
* Permission that allows for admin access, this permission node will allow
* the player to use any part of the plugin, without limitations.
* @deprecated Use C.PERMISSION_ADMIN instead
*/
@Deprecated
public static final String ADMIN_PERMISSION = C.PERMISSION_ADMIN.s();
/**
* Deprecated, does nothing.
* @param plugin not needed
@ -64,24 +56,6 @@ public class PlotAPI {
public PlotAPI(JavaPlugin plugin) {
}
/**
* Default Constructor that does nothing.
*
* @deprecated Use this class if you just want to do a few simple things
* <ul>
* <li>It will remain stable for future versions
* of the plugin</li>
* <li>The PlotPlayer and Plot class should be considered
* relatively safe</li>
* <li>For more advanced/intensive tasks you should consider
* using other classes</li>
* </ul>
*
*/
@Deprecated
public PlotAPI() {
}
/**
* Get all plots.
*

View File

@ -75,6 +75,7 @@ import com.plotsquared.bukkit.uuid.SQLUUIDHandler;
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Chunk;
import org.bukkit.Location;
import org.bukkit.OfflinePlayer;
import org.bukkit.World;
@ -96,7 +97,6 @@ import java.util.UUID;
public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
public static BukkitMain THIS;
public static WorldEditPlugin worldEdit;
private int[] version;
@ -124,7 +124,6 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
@Override
public void onEnable() {
BukkitMain.THIS = this;
new PS(this, "Bukkit");
}
@ -132,12 +131,10 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
public void onDisable() {
PS.get().disable();
Bukkit.getScheduler().cancelTasks(this);
BukkitMain.THIS = null;
}
@Override
public void log(String message) {
if (BukkitMain.THIS != null) {
try {
message = C.color(message);
if (!Settings.CONSOLE_COLOR) {
@ -148,24 +145,21 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
} catch (Throwable ignored) {
//ignored
}
}
System.out.println(ConsoleColors.fromString(message));
}
@Override
public void disable() {
if (BukkitMain.THIS != null) {
onDisable();
}
}
@Override
public int[] getPluginVersion() {
String version = getDescription().getVersion();
if (version.contains("-SNAPSHOT")) {
version = version.split("-SNAPSHOT")[0];
String ver = getDescription().getVersion();
if (ver.contains("-SNAPSHOT")) {
ver = ver.split("-SNAPSHOT")[0];
}
String[] split = version.split("\\.");
String[] split = ver.split("\\.");
return new int[]{Integer.parseInt(split[0]), Integer.parseInt(split[1]), Integer.parseInt(split[2])};
}
@ -190,7 +184,7 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
@Override
public TaskManager getTaskManager() {
return new BukkitTaskManager();
return new BukkitTaskManager(this);
}
@Override
@ -403,7 +397,7 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
}
@Override
public PlotQueue initPlotQueue() {
public PlotQueue<Chunk> initPlotQueue() {
try {
new SendChunk();
MainUtil.canSendChunk = true;

View File

@ -4,6 +4,7 @@ import com.intellectualcrafters.plot.PS;
import com.intellectualcrafters.plot.generator.GeneratorWrapper;
import com.intellectualcrafters.plot.generator.HybridGen;
import com.intellectualcrafters.plot.generator.IndependentPlotGenerator;
import com.intellectualcrafters.plot.object.ChunkLoc;
import com.intellectualcrafters.plot.object.PlotArea;
import com.intellectualcrafters.plot.object.PlotId;
import com.intellectualcrafters.plot.object.PlotManager;
@ -22,6 +23,7 @@ import org.bukkit.generator.BlockPopulator;
import org.bukkit.generator.ChunkGenerator;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Random;
import java.util.Set;
@ -34,6 +36,7 @@ public class BukkitPlotGenerator extends ChunkGenerator implements GeneratorWrap
private final List<BlockPopulator> populators = new ArrayList<>();
private final ChunkGenerator platformGenerator;
private final boolean full;
private final HashMap<ChunkLoc, byte[][]> dataMap = new HashMap<>();
private boolean loaded = false;
public BukkitPlotGenerator(IndependentPlotGenerator generator) {
@ -42,10 +45,26 @@ public class BukkitPlotGenerator extends ChunkGenerator implements GeneratorWrap
this.populators.add(new BlockPopulator() {
@Override
public void populate(World world, Random r, Chunk c) {
ChunkLoc loc = new ChunkLoc(c.getX(), c.getZ());
byte[][] resultData;
if (!BukkitPlotGenerator.this.dataMap.containsKey(loc)) {
GenChunk result = (GenChunk) BukkitPlotGenerator.this.chunkSetter;
if (result.result_data != null) {
for (int i = 0; i < result.result_data.length; i++) {
byte[] section = result.result_data[i];
// Set the chunk location
result.setChunkWrapper(SetQueue.IMP.new ChunkWrapper(world.getName(), loc.x, loc.z));
// Set the result data
result.result = new short[16][];
result.result_data = new byte[16][];
result.grid = null;
result.cd = null;
// Catch any exceptions (as exceptions usually thrown)
generate(world, loc.x, loc.z, result);
resultData = result.result_data;
} else {
resultData = BukkitPlotGenerator.this.dataMap.remove(loc);
}
if (resultData != null) {
for (int i = 0; i < resultData.length; i++) {
byte[] section = resultData[i];
if (section == null) {
continue;
}
@ -248,7 +267,7 @@ public class BukkitPlotGenerator extends ChunkGenerator implements GeneratorWrap
return result.cd;
}
public void generate(World world, int cx, int cz, GenChunk result) {
public void generate(World world, int cx, int cz, PlotChunk<?> result) {
// Load if improperly loaded
if (!this.loaded) {
String name = world.getName();
@ -283,6 +302,8 @@ public class BukkitPlotGenerator extends ChunkGenerator implements GeneratorWrap
return this.platformGenerator.generateExtBlockSections(world, r, cx, cz, grid);
} else {
generate(world, cx, cz, result);
this.dataMap.put(new ChunkLoc(cx, cz), result.result_data);
}
} catch (Throwable e) {
e.printStackTrace();
@ -306,7 +327,7 @@ public class BukkitPlotGenerator extends ChunkGenerator implements GeneratorWrap
@Override
public String toString() {
if (this.platformGenerator == this) {
return "" + this.plotGenerator;
return this.plotGenerator.getName();
}
if (this.platformGenerator == null) {
return "null";

View File

@ -110,16 +110,6 @@ import org.bukkit.plugin.Plugin;
import org.bukkit.projectiles.BlockProjectileSource;
import org.bukkit.projectiles.ProjectileSource;
import org.bukkit.util.Vector;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map.Entry;
import java.util.Objects;
import java.util.Set;
import java.util.UUID;
import java.util.regex.Pattern;
import java.util.ArrayList;
import java.util.Arrays;
@ -476,8 +466,8 @@ public class PlayerEvents extends PlotListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void playerRespawn(PlayerRespawnEvent event) {
final Player player = event.getPlayer();
final PlotPlayer pp = BukkitUtil.getPlayer(player);
Player player = event.getPlayer();
PlotPlayer pp = BukkitUtil.getPlayer(player);
EventUtil.manager.doDeathTask(pp);
}
@ -784,20 +774,16 @@ public class PlayerEvents extends PlotListener implements Listener {
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBS(BlockSpreadEvent e) {
Block b = e.getBlock();
Location loc = BukkitUtil.getLocation(b.getLocation());
if (loc.isPlotRoad()) {
e.setCancelled(true);
}
public void onBlockSpread(BlockSpreadEvent event) {
onBlockForm(event); //send to super class.
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBF(BlockFormEvent e) {
Block b = e.getBlock();
Location loc = BukkitUtil.getLocation(b.getLocation());
public void onBlockForm(BlockFormEvent event) {
Block block = event.getBlock();
Location loc = BukkitUtil.getLocation(block.getLocation());
if (loc.isPlotRoad()) {
e.setCancelled(true);
event.setCancelled(true);
}
}

View File

@ -1,83 +1,14 @@
package com.plotsquared.bukkit.titles;
import com.plotsquared.bukkit.chat.Reflection;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
/**
* [ PlotSquared DefaultTitleManager by Maxim Van de Wynckel ]
*
* @author Maxim Van de Wynckel
*
*/
public class DefaultTitleManager {
private static final Map<Class<?>, Class<?>> CORRESPONDING_TYPES = new HashMap<>();
/* Title packet */
private Class<?> packetTitle;
/* Title packet actions ENUM */
private Class<?> packetActions;
/* Chat serializer */
private Class<?> nmsChatSerializer;
private Class<?> chatBaseComponent;
/* Title text and color */
private String title = "";
private ChatColor titleColor = ChatColor.WHITE;
/* Subtitle text and color */
private String subtitle = "";
private ChatColor subtitleColor = ChatColor.WHITE;
/* Title timings */
private int fadeInTime = -1;
private int stayTime = -1;
private int fadeOutTime = -1;
private boolean ticks = false;
/**
* Create a new 1.8 title.
*
* @param title Title
*/
public DefaultTitleManager(String title) {
this.title = title;
loadClasses();
}
/**
* Create a new 1.8 title.
*
* @param title Title text
* @param subtitle Subtitle text
*/
public DefaultTitleManager(String title, String subtitle) {
this.title = title;
this.subtitle = subtitle;
loadClasses();
}
/**
* Copy 1.8 title.
*
* @param title Title
*/
public DefaultTitleManager(DefaultTitleManager title) {
// Copy title
this.title = title.title;
this.subtitle = title.subtitle;
this.titleColor = title.titleColor;
this.subtitleColor = title.subtitleColor;
this.fadeInTime = title.fadeInTime;
this.fadeOutTime = title.fadeOutTime;
this.stayTime = title.stayTime;
this.ticks = title.ticks;
loadClasses();
}
public class DefaultTitleManager extends TitleManager {
/**
* Create a new 1.8 title.
@ -89,12 +20,7 @@ public class DefaultTitleManager {
* @param fadeOutTime Fade out time
*/
public DefaultTitleManager(String title, String subtitle, int fadeInTime, int stayTime, int fadeOutTime) {
this.title = title;
this.subtitle = subtitle;
this.fadeInTime = fadeInTime;
this.stayTime = stayTime;
this.fadeOutTime = fadeOutTime;
loadClasses();
super(title, subtitle, fadeInTime, stayTime, fadeOutTime);
}
private static boolean equalsTypeArray(Class<?>[] a, Class<?>[] o) {
@ -112,115 +38,20 @@ public class DefaultTitleManager {
/**
* Load spigot and NMS classes.
*/
private void loadClasses() {
@Override void loadClasses() {
this.packetTitle = Reflection.getNMSClass("PacketPlayOutTitle");
this.packetActions = Reflection.getNMSClass("EnumTitleAction");
this.chatBaseComponent = Reflection.getNMSClass("IChatBaseComponent");
this.nmsChatSerializer = Reflection.getNMSClass("ChatSerializer");
}
/**
* Get title text.
*
* @return Title text
*/
public String getTitle() {
return this.title;
}
/**
* Set title text.
*
* @param title Title
*/
public void setTitle(String title) {
this.title = title;
}
/**
* Get subtitle text.
*
* @return Subtitle text
*/
public String getSubtitle() {
return this.subtitle;
}
/**
* Set subtitle text.
*
* @param subtitle Subtitle text
*/
public void setSubtitle(String subtitle) {
this.subtitle = subtitle;
}
/**
* Set the title color.
*
* @param color Chat color
*/
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;
}
/**
* Set timings to ticks.
*/
public void setTimingsToTicks() {
this.ticks = true;
}
/**
* Set timings to seconds.
*/
public void setTimingsToSeconds() {
this.ticks = false;
}
/**
* Send the title to a player.
*
* @param player Player
* @throws Exception
*/
public void send(Player player) throws Exception {
@Override public void send(Player player) throws Exception {
if (this.packetTitle != null) {
// First reset previous settings
resetTitle(player);
@ -238,13 +69,14 @@ public class DefaultTitleManager {
}
// Send title
Object serialized = getMethod(this.nmsChatSerializer, "a", String.class).invoke(null,
"{text:\"" + ChatColor.translateAlternateColorCodes('&', this.title) + "\",color:" + this.titleColor.name().toLowerCase() + "}");
"{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.subtitle.isEmpty()) {
if (!this.getSubtitle().isEmpty()) {
// Send subtitle if present
serialized = getMethod(this.nmsChatSerializer, "a", String.class).invoke(null,
"{text:\"" + ChatColor.translateAlternateColorCodes('&', this.subtitle) + "\",color:" + this.subtitleColor.name()
"{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);
@ -252,24 +84,13 @@ public class DefaultTitleManager {
}
}
/**
* Broadcast the title to all players.
*
* @throws Exception
*/
public void broadcast() throws Exception {
for (Player p : Bukkit.getOnlinePlayers()) {
send(p);
}
}
/**
* Clear the title.
*
* @param player Player
* @throws Exception
*/
public void clearTitle(Player player) throws Exception {
@Override public void clearTitle(Player player) throws Exception {
// Send timings first
Object handle = getHandle(player);
Object connection = getField(handle.getClass(), "playerConnection").get(handle);
@ -285,7 +106,7 @@ public class DefaultTitleManager {
* @param player Player
* @throws Exception
*/
public void resetTitle(Player player) throws Exception {
@Override public void resetTitle(Player player) throws Exception {
// Send timings first
Object handle = getHandle(player);
Object connection = getField(handle.getClass(), "playerConnection").get(handle);
@ -295,29 +116,10 @@ public class DefaultTitleManager {
sendPacket.invoke(connection, packet);
}
private Class<?> getPrimitiveType(Class<?> clazz) {
return CORRESPONDING_TYPES.containsKey(clazz) ? CORRESPONDING_TYPES.get(clazz) : clazz;
}
private Class<?>[] toPrimitiveTypeArray(Class<?>[] classes) {
int a = classes != null ? classes.length : 0;
Class<?>[] types = new Class<?>[a];
for (int i = 0; i < a; i++) {
types[i] = getPrimitiveType(classes[i]);
}
return types;
}
private Object getHandle(Object obj) {
try {
return getMethod("getHandle", obj.getClass()).invoke(obj);
} catch (IllegalAccessException e) {
e.printStackTrace();
return null;
} catch (IllegalArgumentException e) {
e.printStackTrace();
return null;
} catch (InvocationTargetException e) {
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
e.printStackTrace();
return null;
}
@ -339,10 +141,7 @@ public class DefaultTitleManager {
Field field = clazz.getDeclaredField(name);
field.setAccessible(true);
return field;
} catch (NoSuchFieldException e) {
e.printStackTrace();
return null;
} catch (SecurityException e) {
} catch (NoSuchFieldException | SecurityException e) {
e.printStackTrace();
return null;
}

View File

@ -1,83 +1,13 @@
package com.plotsquared.bukkit.titles;
import com.plotsquared.bukkit.chat.Reflection;
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;
/**
* [ PlotSquared DefaultTitleManager by Maxim Van de Wynckel ]
*
* @version 1.1.0
* @author Maxim Van de Wynckel
*
*/
public class DefaultTitleManager_183 {
private static final Map<Class<?>, Class<?>> CORRESPONDING_TYPES = new HashMap<>();
/* Title packet */
private Class<?> packetTitle;
/* Title packet actions ENUM */
private Class<?> packetActions;
/* Chat serializer */
private Class<?> nmsChatSerializer;
private Class<?> chatBaseComponent;
/* Title text and color */
private String title = "";
private ChatColor titleColor = ChatColor.WHITE;
/* Subtitle text and color */
private String subtitle = "";
private ChatColor subtitleColor = ChatColor.WHITE;
/* Title timings */
private int fadeInTime = -1;
private int stayTime = -1;
private int fadeOutTime = -1;
private boolean ticks = false;
/**
* Create a new 1.8 title
*
* @param title Title
*/
public DefaultTitleManager_183(String title) {
this.title = title;
loadClasses();
}
/**
* Create a new 1.8 title.
*
* @param title Title text
* @param subtitle Subtitle text
*/
public DefaultTitleManager_183(String title, String subtitle) {
this.title = title;
this.subtitle = subtitle;
loadClasses();
}
/**
* Copy 1.8 title.
*
* @param title Title
*/
public DefaultTitleManager_183(DefaultTitleManager_183 title) {
// Copy title
this.title = title.title;
this.subtitle = title.subtitle;
this.titleColor = title.titleColor;
this.subtitleColor = title.subtitleColor;
this.fadeInTime = title.fadeInTime;
this.fadeOutTime = title.fadeOutTime;
this.stayTime = title.stayTime;
this.ticks = title.ticks;
loadClasses();
}
public class DefaultTitleManager_183 extends TitleManager {
/**
* Create a new 1.8 title.
@ -89,12 +19,7 @@ public class DefaultTitleManager_183 {
* @param fadeOutTime Fade out time
*/
public DefaultTitleManager_183(String title, String subtitle, int fadeInTime, int stayTime, int fadeOutTime) {
this.title = title;
this.subtitle = subtitle;
this.fadeInTime = fadeInTime;
this.stayTime = stayTime;
this.fadeOutTime = fadeOutTime;
loadClasses();
super(title, subtitle, fadeInTime, stayTime, fadeOutTime);
}
private static boolean equalsTypeArray(Class<?>[] a, Class<?>[] o) {
@ -112,7 +37,8 @@ public class DefaultTitleManager_183 {
/**
* Load spigot and NMS classes.
*/
private void loadClasses() {
@Override
void loadClasses() {
this.packetTitle = Reflection.getNMSClass("PacketPlayOutTitle");
this.chatBaseComponent = Reflection.getNMSClass("IChatBaseComponent");
this.packetActions = Reflection.getNMSClass("PacketPlayOutTitle$EnumTitleAction");
@ -120,108 +46,7 @@ public class DefaultTitleManager_183 {
}
/**
* Get title text.
*
* @return Title text
*/
public String getTitle() {
return this.title;
}
/**
* Set title text.
*
* @param title Title
*/
public void setTitle(String title) {
this.title = title;
}
/**
* Get subtitle text.
*
* @return Subtitle text
*/
public String getSubtitle() {
return this.subtitle;
}
/**
* Set subtitle text.
*
* @param subtitle Subtitle text
*/
public void setSubtitle(String subtitle) {
this.subtitle = subtitle;
}
/**
* Set the title color.
*
* @param color Chat color
*/
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;
}
/**
* Set timings to ticks.
*/
public void setTimingsToTicks() {
this.ticks = true;
}
/**
* Set timings to seconds.
*/
public void setTimingsToSeconds() {
this.ticks = false;
}
/**
* Send the title to a player.
*
* @param player Player
* @throws Exception
*/
@Override
public void send(Player player) throws Exception {
if (this.packetTitle != null) {
// First reset previous settings
@ -242,13 +67,14 @@ public class DefaultTitleManager_183 {
}
// Send title
Object serialized = getMethod(this.nmsChatSerializer, "a", String.class).invoke(null,
"{text:\"" + ChatColor.translateAlternateColorCodes('&', this.title) + "\",color:" + this.titleColor.name().toLowerCase() + "}");
"{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.subtitle.isEmpty()) {
if (!this.getSubtitle().isEmpty()) {
// Send subtitle if present
serialized = getMethod(this.nmsChatSerializer, "a", String.class).invoke(null,
"{text:\"" + ChatColor.translateAlternateColorCodes('&', this.subtitle) + "\",color:" + this.subtitleColor.name()
"{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);
@ -256,22 +82,13 @@ public class DefaultTitleManager_183 {
}
}
/**
* Broadcast the title to all players.
* @throws Exception
*/
public void broadcast() throws Exception {
for (Player p : Bukkit.getOnlinePlayers()) {
send(p);
}
}
/**
* Clear the title.
*
* @param player Player
* @throws Exception
*/
@Override
public void clearTitle(Player player) throws Exception {
// Send timings first
Object handle = getHandle(player);
@ -288,6 +105,7 @@ public class DefaultTitleManager_183 {
* @param player Player
* @throws Exception
*/
@Override
public void resetTitle(Player player) throws Exception {
// Send timings first
Object handle = getHandle(player);
@ -298,19 +116,6 @@ public class DefaultTitleManager_183 {
sendPacket.invoke(connection, packet);
}
private Class<?> getPrimitiveType(Class<?> clazz) {
return CORRESPONDING_TYPES.containsKey(clazz) ? CORRESPONDING_TYPES.get(clazz) : clazz;
}
private Class<?>[] toPrimitiveTypeArray(Class<?>[] classes) {
int a = classes != null ? classes.length : 0;
Class<?>[] types = new Class<?>[a];
for (int i = 0; i < a; i++) {
types[i] = getPrimitiveType(classes[i]);
}
return types;
}
private Object getHandle(Object obj) {
try {
return getMethod("getHandle", obj.getClass()).invoke(obj);

View File

@ -11,7 +11,7 @@ public class DefaultTitle_183 extends AbstractTitle {
try {
DefaultTitleManager_183 title = new DefaultTitleManager_183(head, sub, in, delay, out);
title.send(((BukkitPlayer) player).player);
} catch (Throwable e) {
} catch (Exception e) {
AbstractTitle.TITLE_CLASS = new HackTitle();
AbstractTitle.TITLE_CLASS.sendTitle(player, head, sub, in, delay, out);
}

View File

@ -13,7 +13,7 @@ public class HackTitle extends AbstractTitle {
try {
HackTitleManager title = new HackTitleManager(head, sub, in, delay, out);
title.send(((BukkitPlayer) player).player);
} catch (Throwable e) {
} catch (Exception e) {
PS.debug("&cYour server version does not support titles!");
Settings.TITLES = false;
AbstractTitle.TITLE_CLASS = null;

View File

@ -8,75 +8,8 @@ import org.bukkit.entity.Player;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
/**
* Minecraft 1.8 Title.
*
* @version 1.0.4
* @author Maxim Van de Wynckel
*/
public class HackTitleManager {
private static final Map<Class<?>, Class<?>> CORRESPONDING_TYPES = new HashMap<>();
/* Title packet */
private Class<?> packetTitle;
/* Title packet actions ENUM */
private Class<?> packetActions;
/* Chat serializer */
private Class<?> nmsChatSerializer;
/* Title text and color */
private String title = "";
private ChatColor titleColor = ChatColor.WHITE;
/* Subtitle text and color */
private String subtitle = "";
private ChatColor subtitleColor = ChatColor.WHITE;
/* Title timings. */
private int fadeInTime = -1;
private int stayTime = -1;
private int fadeOutTime = -1;
private boolean ticks = false;
/**
* Create a new 1.8 title.
*
* @param title Title
*/
public HackTitleManager(String title) {
this.title = title;
loadClasses();
}
/**
* Create a new 1.8 title.
*
* @param title Title text
* @param subtitle Subtitle text
*/
public HackTitleManager(String title, String subtitle) {
this.title = title;
this.subtitle = subtitle;
loadClasses();
}
/**
* Copy 1.8 title.
*
* @param title Title
*/
public HackTitleManager(HackTitleManager title) {
// Copy title
this.title = title.title;
this.subtitle = title.subtitle;
this.titleColor = title.titleColor;
this.subtitleColor = title.subtitleColor;
this.fadeInTime = title.fadeInTime;
this.fadeOutTime = title.fadeOutTime;
this.stayTime = title.stayTime;
this.ticks = title.ticks;
loadClasses();
}
public class HackTitleManager extends TitleManager {
/**
* Create a new 1.8 title.
@ -88,12 +21,7 @@ public class HackTitleManager {
* @param fadeOutTime Fade out time
*/
public HackTitleManager(String title, String subtitle, int fadeInTime, int stayTime, int fadeOutTime) {
this.title = title;
this.subtitle = subtitle;
this.fadeInTime = fadeInTime;
this.stayTime = stayTime;
this.fadeOutTime = fadeOutTime;
loadClasses();
super(title, subtitle, fadeInTime, stayTime, fadeOutTime);
}
private static boolean equalsTypeArray(Class<?>[] a, Class<?>[] o) {
@ -111,114 +39,20 @@ public class HackTitleManager {
/**
* Load spigot and NMS classes.
*/
private 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");
}
/**
* Get title text.
*
* @return Title text
*/
public String getTitle() {
return this.title;
}
/**
* Set title text.
*
* @param title Title
*/
public void setTitle(String title) {
this.title = title;
}
/**
* Get subtitle text.
*
* @return Subtitle text
*/
public String getSubtitle() {
return this.subtitle;
}
/**
* Set subtitle text.
*
* @param subtitle Subtitle text
*/
public void setSubtitle(String subtitle) {
this.subtitle = subtitle;
}
/**
* Set the title color.
*
* @param color Chat color
*/
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;
}
/**
* Set timings to ticks.
*/
public void setTimingsToTicks() {
this.ticks = true;
}
/**
* Set timings to seconds.
*/
public void setTimingsToSeconds() {
this.ticks = false;
}
/**
* Send the title to a player.
*
* @param player Player
* @throws Exception on NMS error
*/
public void send(Player player) throws Exception {
@Override public void send(Player player) throws Exception {
if ((getProtocolVersion(player) >= 47) && isSpigot() && (this.packetTitle != null)) {
// First reset previous settings
resetTitle(player);
@ -237,14 +71,15 @@ public class HackTitleManager {
}
// Send title
Object serialized = getMethod(this.nmsChatSerializer, "a", String.class).invoke(null,
"{text:\"" + ChatColor.translateAlternateColorCodes('&', this.title) + "\",color:" + this.titleColor.name().toLowerCase() + "}");
"{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.subtitle.isEmpty()) {
if (!this.getSubtitle().isEmpty()) {
// Send subtitle if present
serialized = getMethod(this.nmsChatSerializer, "a", String.class).invoke(null,
"{text:\"" + ChatColor.translateAlternateColorCodes('&', this.subtitle) + "\",color:" + this.subtitleColor.name()
"{text:\"" + ChatColor.translateAlternateColorCodes('&', this.getSubtitle()) + "\",color:" + this.subtitleColor.name()
.toLowerCase() + "}");
packet = this.packetTitle.getConstructor(this.packetActions, Reflection.getNMSClass("IChatBaseComponent"))
.newInstance(actions[1], serialized);
@ -253,23 +88,13 @@ public class HackTitleManager {
}
}
/**
* Broadcast the title to all players.
* @throws Exception on NMS Error
*/
public void broadcast() throws Exception {
for (Player p : Bukkit.getOnlinePlayers()) {
send(p);
}
}
/**
* Clear the title.
*
* @param player Player
* @throws Exception on NMS Error
*/
public void clearTitle(Player player) throws Exception {
@Override public void clearTitle(Player player) throws Exception {
if ((getProtocolVersion(player) >= 47) && isSpigot()) {
// Send timings first
Object handle = getHandle(player);
@ -287,7 +112,7 @@ public class HackTitleManager {
* @param player Player
* @throws Exception on NMS error.
*/
public void resetTitle(Player player) throws Exception {
@Override public void resetTitle(Player player) throws Exception {
if ((getProtocolVersion(player) >= 47) && isSpigot()) {
// Send timings first
Object handle = getHandle(player);
@ -346,19 +171,6 @@ public class HackTitleManager {
return f.get(obj);
}
private Class<?> getPrimitiveType(Class<?> clazz) {
return CORRESPONDING_TYPES.containsKey(clazz) ? CORRESPONDING_TYPES.get(clazz) : clazz;
}
private Class<?>[] toPrimitiveTypeArray(Class<?>[] classes) {
int a = classes != null ? classes.length : 0;
Class<?>[] types = new Class<?>[a];
for (int i = 0; i < a; i++) {
types[i] = getPrimitiveType(classes[i]);
}
return types;
}
private Object getHandle(Object obj) {
try {
return getMethod("getHandle", obj.getClass()).invoke(obj);

View File

@ -0,0 +1,204 @@
package com.plotsquared.bukkit.titles;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.util.HashMap;
import java.util.Map;
public abstract class TitleManager {
private static final Map<Class<?>, Class<?>> CORRESPONDING_TYPES = new HashMap<>();
/* 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;
int stayTime = -1;
int fadeOutTime = -1;
boolean ticks = false;
/* Title text and color */
private String title = "";
/* Subtitle text and color */
private String subtitle = "";
/**
* 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 fadeOutTime Fade out time
*/
TitleManager(String title, String subtitle, int fadeInTime, int stayTime, int fadeOutTime) {
this.title = title;
this.subtitle = subtitle;
this.fadeInTime = fadeInTime;
this.stayTime = stayTime;
this.fadeOutTime = fadeOutTime;
loadClasses();
}
abstract void loadClasses();
/**
* Get title text.
*
* @return Title text
*/
public final String getTitle() {
return this.title;
}
/**
* Set title text.
*
* @param title Title
*/
public final void setTitle(String title) {
this.title = title;
}
/**
* Get subtitle text.
*
* @return Subtitle text
*/
public final String getSubtitle() {
return this.subtitle;
}
/**
* Set subtitle text.
*
* @param subtitle Subtitle text
*/
public final void setSubtitle(String subtitle) {
this.subtitle = subtitle;
}
/**
* Set the title color.
*
* @param color Chat color
*/
public final void setTitleColor(ChatColor color) {
this.titleColor = color;
}
/**
* Set the subtitle color.
*
* @param color Chat color
*/
public final void setSubtitleColor(ChatColor color) {
this.subtitleColor = color;
}
/**
* Set title fade in time.
*
* @param time Time
*/
public final void setFadeInTime(int time) {
this.fadeInTime = time;
}
/**
* Set title fade out time.
*
* @param time Time
*/
public final void setFadeOutTime(int time) {
this.fadeOutTime = time;
}
/**
* Set title stay time.
*
* @param time Time
*/
public final void setStayTime(int time) {
this.stayTime = time;
}
/**
* Set timings to ticks.
*/
public final void setTimingsToTicks() {
this.ticks = true;
}
/**
* Set timings to seconds.
*/
public final void setTimingsToSeconds() {
this.ticks = false;
}
/**
* Send the title to a player.
*
* @param player Player
* @throws Exception
*/
public abstract void send(Player player) throws Exception;
/**
* Broadcast the title to all players.
*
* @throws Exception
*/
public final void broadcast() throws Exception {
for (Player p : Bukkit.getOnlinePlayers()) {
send(p);
}
}
/**
* Clear the title.
*
* @param player Player
* @throws Exception
*/
public abstract void clearTitle(Player player) throws Exception;
/**
* Reset the title settings.
*
* @param player Player
* @throws Exception
*/
public abstract void resetTitle(Player player) throws Exception;
private Class<?> getPrimitiveType(Class<?> clazz) {
if (CORRESPONDING_TYPES.containsKey(clazz)) {
return CORRESPONDING_TYPES.get(clazz);
} else {
return clazz;
}
}
final Class<?>[] toPrimitiveTypeArray(Class<?>[] classes) {
int a;
if (classes != null) {
a = classes.length;
} else {
a = 0;
}
Class<?>[] types = new Class<?>[a];
for (int i = 0; i < a; i++) {
types[i] = getPrimitiveType(classes[i]);
}
return types;
}
}

View File

@ -15,16 +15,6 @@ public class BukkitEconHandler extends EconHandler {
private Economy econ;
private Permission perms;
public Economy getEconomy() {
init();
return this.econ;
}
public Permission getPermissions() {
init();
return this.perms;
}
public boolean init() {
if (this.econ == null || this.perms == null) {
setupPermissions();

View File

@ -6,35 +6,41 @@ 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 BukkitMain.THIS.getServer().getScheduler().scheduleSyncRepeatingTask(BukkitMain.THIS, runnable, interval, interval);
return this.bukkitMain.getServer().getScheduler().scheduleSyncRepeatingTask(this.bukkitMain, runnable, interval, interval);
}
@SuppressWarnings("deprecation")
@Override
public int taskRepeatAsync(Runnable runnable, int interval) {
return BukkitMain.THIS.getServer().getScheduler().scheduleAsyncRepeatingTask(BukkitMain.THIS, runnable, interval, interval);
return this.bukkitMain.getServer().getScheduler().scheduleAsyncRepeatingTask(this.bukkitMain, runnable, interval, interval);
}
@Override
public void taskAsync(Runnable runnable) {
BukkitMain.THIS.getServer().getScheduler().runTaskAsynchronously(BukkitMain.THIS, runnable).getTaskId();
this.bukkitMain.getServer().getScheduler().runTaskAsynchronously(this.bukkitMain, runnable).getTaskId();
}
@Override
public void task(Runnable runnable) {
BukkitMain.THIS.getServer().getScheduler().runTask(BukkitMain.THIS, runnable).getTaskId();
this.bukkitMain.getServer().getScheduler().runTask(this.bukkitMain, runnable).getTaskId();
}
@Override
public void taskLater(Runnable runnable, int delay) {
BukkitMain.THIS.getServer().getScheduler().runTaskLater(BukkitMain.THIS, runnable, delay).getTaskId();
this.bukkitMain.getServer().getScheduler().runTaskLater(this.bukkitMain, runnable, delay).getTaskId();
}
@Override
public void taskLaterAsync(Runnable runnable, int delay) {
BukkitMain.THIS.getServer().getScheduler().runTaskLaterAsynchronously(BukkitMain.THIS, runnable, delay);
this.bukkitMain.getServer().getScheduler().runTaskLaterAsynchronously(this.bukkitMain, runnable, delay);
}
@Override

View File

@ -12,7 +12,6 @@ import com.intellectualcrafters.plot.util.ReflectionUtils.RefMethod;
import com.intellectualcrafters.plot.util.SetQueue;
import com.intellectualcrafters.plot.util.SetQueue.ChunkWrapper;
import com.intellectualcrafters.plot.util.TaskManager;
import com.plotsquared.bukkit.util.BukkitUtil;
import com.plotsquared.bukkit.util.SendChunk;
import org.bukkit.Chunk;
import org.bukkit.World;
@ -370,7 +369,6 @@ public class FastQueue_1_8 extends SlowQueue {
*/
@Override
public void sendChunk(String world, Collection<ChunkLoc> locations) {
World worldObj = BukkitUtil.getWorld(world);
for (ChunkLoc loc : locations) {
ChunkWrapper wrapper = SetQueue.IMP.new ChunkWrapper(world, loc.x, loc.z);
this.toUpdate.remove(wrapper);

View File

@ -1,5 +1,7 @@
package com.plotsquared.bukkit.util.block;
import static com.intellectualcrafters.plot.util.ReflectionUtils.getRefClass;
import com.intellectualcrafters.plot.object.ChunkLoc;
import com.intellectualcrafters.plot.object.PseudoRandom;
import com.intellectualcrafters.plot.util.ChunkManager;
@ -15,6 +17,12 @@ import com.intellectualcrafters.plot.util.SetQueue.ChunkWrapper;
import com.intellectualcrafters.plot.util.TaskManager;
import com.plotsquared.bukkit.util.BukkitUtil;
import com.plotsquared.bukkit.util.SendChunk;
import org.bukkit.Chunk;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.World.Environment;
import org.bukkit.block.Biome;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@ -24,14 +32,6 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;
import org.bukkit.Chunk;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.World.Environment;
import org.bukkit.block.Biome;
import static com.intellectualcrafters.plot.util.ReflectionUtils.getRefClass;
public class FastQueue_1_8_3 extends SlowQueue {
@ -266,7 +266,7 @@ public class FastQueue_1_8_3 extends SlowQueue {
World world = BukkitUtil.getWorld(worldname);
Chunk chunk = world.getChunkAt(loc.x, loc.z);
if (chunk.getTileEntities().length > 0) {
Object w = methodGetHandleWorld.of(world).call();
Object w = this.methodGetHandleWorld.of(world).call();
((Collection) this.tileEntityListTick.of(w).get()).clear();
}
super.regenerateChunk(worldname, loc);

View File

@ -1,5 +1,7 @@
package com.plotsquared.bukkit.util.block;
import static com.intellectualcrafters.plot.util.ReflectionUtils.getRefClass;
import com.intellectualcrafters.plot.object.ChunkLoc;
import com.intellectualcrafters.plot.object.PseudoRandom;
import com.intellectualcrafters.plot.util.ChunkManager;
@ -13,6 +15,12 @@ import com.intellectualcrafters.plot.util.ReflectionUtils.RefMethod.RefExecutor;
import com.intellectualcrafters.plot.util.SetQueue.ChunkWrapper;
import com.intellectualcrafters.plot.util.TaskManager;
import com.plotsquared.bukkit.util.BukkitUtil;
import org.bukkit.Chunk;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.World.Environment;
import org.bukkit.block.Biome;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@ -22,14 +30,6 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;
import org.bukkit.Chunk;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.World.Environment;
import org.bukkit.block.Biome;
import static com.intellectualcrafters.plot.util.ReflectionUtils.getRefClass;
public class FastQueue_1_9 extends SlowQueue {
@ -85,8 +85,8 @@ public class FastQueue_1_9 extends SlowQueue {
World world = BukkitUtil.getWorld(worldname);
Chunk chunk = world.getChunkAt(loc.x, loc.z);
if (chunk.getTileEntities().length > 0) {
Object c = methodGetHandleChunk.of(chunk).call();
Object w = methodGetWorld.of(c).call();
Object c = this.methodGetHandleChunk.of(chunk).call();
Object w = this.methodGetWorld.of(c).call();
((Collection) this.tileEntityListTick.of(w).get()).clear();
}
super.regenerateChunk(worldname, loc);
@ -97,7 +97,7 @@ public class FastQueue_1_9 extends SlowQueue {
* @param plotChunk
*/
@Override
public void execute(final PlotChunk<Chunk> plotChunk) {
public void execute(PlotChunk<Chunk> plotChunk) {
final FastChunk_1_9 fs = (FastChunk_1_9) plotChunk;
Chunk chunk = plotChunk.getChunk();
World world = chunk.getWorld();
@ -425,7 +425,7 @@ public class FastQueue_1_9 extends SlowQueue {
* @param locations
*/
@Override
public void sendChunk(final String world, final Collection<ChunkLoc> locations) {
public void sendChunk(String world, Collection<ChunkLoc> locations) {
World worldObj = BukkitUtil.getWorld(world);
for (ChunkLoc loc : locations) {
worldObj.refreshChunk(loc.x, loc.z);

View File

@ -41,8 +41,10 @@ public class GenChunk extends PlotChunk<Chunk> {
@Override
public void setBiome(int x, int z, int biome) {
if (this.grid != null) {
this.grid.setBiome(x, z, this.biomes[biome]);
}
}
public void setBiome(int x, int z, Biome biome) {
if (this.grid != null) {

View File

@ -9,13 +9,14 @@ import com.intellectualcrafters.plot.util.PlotQueue;
import com.intellectualcrafters.plot.util.SetQueue;
import com.intellectualcrafters.plot.util.SetQueue.ChunkWrapper;
import com.plotsquared.bukkit.util.BukkitUtil;
import org.bukkit.Chunk;
import org.bukkit.block.Biome;
import org.bukkit.block.Block;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;
import org.bukkit.Chunk;
import org.bukkit.block.Biome;
import org.bukkit.block.Block;
public class SlowQueue implements PlotQueue<Chunk> {

View File

@ -53,6 +53,7 @@ import com.intellectualcrafters.plot.util.WorldUtil;
import com.intellectualcrafters.plot.util.area.QuadMap;
import com.plotsquared.listener.WESubscriber;
import com.sk89q.worldedit.WorldEdit;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
@ -89,6 +90,7 @@ import java.util.zip.ZipInputStream;
public class PS {
private static PS instance;
public final IPlotMain IMP;
private final HashSet<Integer> plotAreaHashCheck = new HashSet<>();
/**
* All plot areas mapped by world (quick world access).
@ -98,6 +100,9 @@ public class PS {
* All plot areas mapped by location (quick location based access).
*/
private final HashMap<String, QuadMap<PlotArea>> plotAreaGrid = new HashMap<>();
private final int[] version;
private final String platform;
private final Thread thread;
public HashMap<String, Set<PlotCluster>> clusters_tmp;
public HashMap<String, HashMap<PlotId, Plot>> plots_tmp;
public File styleFile;
@ -108,7 +113,6 @@ public class PS {
public YamlConfiguration config;
public YamlConfiguration storage;
public YamlConfiguration commands;
public IPlotMain IMP = null;
public TaskManager TASK;
public WorldEdit worldedit;
public URL update;
@ -117,25 +121,23 @@ public class PS {
* All plot areas (quick global access).
*/
private PlotArea[] plotAreas = new PlotArea[0];
private File storageFile;
private File file = null; // This file
private int[] version;
private int[] lastVersion;
private String platform = null;
private Database database;
private Thread thread;
/**
* Initialize PlotSquared with the desired Implementation class.
* @param imp_class
* @param iPlotMain Implementation of {@link IPlotMain} used
* @param platform The platform being used
*/
public PS(IPlotMain imp_class, String platform) {
try {
public PS(IPlotMain iPlotMain, String platform) {
PS.instance = this;
this.thread = Thread.currentThread();
SetupUtils.generators = new HashMap<>();
this.IMP = imp_class;
this.IMP = iPlotMain;
this.platform = platform;
this.version = this.IMP.getPluginVersion();
try {
new ReflectionUtils(this.IMP.getNMSPackage());
try {
URL url = PS.class.getProtectionDomain().getCodeSource().getLocation();
@ -147,8 +149,6 @@ public class PS {
this.file = new File(this.IMP.getDirectory().getParentFile(), "PlotSquared-" + platform + ".jar");
}
}
this.version = this.IMP.getPluginVersion();
this.platform = platform;
if (getJavaVersion() < 1.7) {
PS.log(C.CONSOLE_JAVA_OUTDATED_1_7);
this.IMP.disable();
@ -194,50 +194,7 @@ public class PS {
}
// create UUIDWrapper
UUIDHandler.implementation = this.IMP.initUUIDHandler();
TaskManager.runTaskLater(new Runnable() {
@Override
public void run() {
debug("Starting UUID caching");
UUIDHandler.startCaching(new Runnable() {
@Override
public void run() {
for (Plot plot : getPlots()) {
if (plot.hasOwner() && plot.temp != -1) {
if (UUIDHandler.getName(plot.owner) == null) {
UUIDHandler.implementation.unknown.add(plot.owner);
}
}
}
// Auto clearing
if (Settings.AUTO_CLEAR) {
ExpireManager.IMP = new ExpireManager();
if (Settings.AUTO_CLEAR_CONFIRMATION) {
ExpireManager.IMP.runConfirmedTask();
} else {
ExpireManager.IMP.runAutomatedTask();
}
}
// PlotMe
if (Settings.CONVERT_PLOTME || Settings.CACHE_PLOTME) {
TaskManager.runTaskLater(new Runnable() {
@Override
public void run() {
if (PS.this.IMP.initPlotMeConverter()) {
PS.log("&c=== IMPORTANT ===");
PS.log("&cTHIS MESSAGE MAY BE EXTREMELY HELPFUL IF YOU HAVE TROUBLE CONVERTING PLOTME!");
PS.log("&c - Make sure 'UUID.read-from-disk' is disabled (false)!");
PS.log("&c - Sometimes the database can be locked, deleting PlotMe.jar beforehand will fix the issue!");
PS.log("&c - After the conversion is finished, please set 'plotme-convert.enabled' to false in the "
+ "'settings.yml'");
}
}
}, 20);
}
}
});
}
}, 20);
startUuidCatching();
// create event util class
EventUtil.manager = this.IMP.initEventUtil();
// create Hybrid utility class
@ -348,10 +305,6 @@ public class PS {
PS.get().IMP.log(StringMan.getString(message));
}
public static void stacktrace() {
System.err.println(StringMan.join(new Exception().getStackTrace(), "\n\tat "));
}
/**
* Log a message to the IPlotMain logger.
*
@ -364,6 +317,53 @@ public class PS {
}
}
private void startUuidCatching() {
TaskManager.runTaskLater(new Runnable() {
@Override
public void run() {
debug("Starting UUID caching");
UUIDHandler.startCaching(new Runnable() {
@Override
public void run() {
for (Plot plot : getPlots()) {
if (plot.hasOwner() && plot.temp != -1) {
if (UUIDHandler.getName(plot.owner) == null) {
UUIDHandler.implementation.unknown.add(plot.owner);
}
}
}
// Auto clearing
if (Settings.AUTO_CLEAR) {
ExpireManager.IMP = new ExpireManager();
if (Settings.AUTO_CLEAR_CONFIRMATION) {
ExpireManager.IMP.runConfirmedTask();
} else {
ExpireManager.IMP.runAutomatedTask();
}
}
// PlotMe
if (Settings.CONVERT_PLOTME || Settings.CACHE_PLOTME) {
TaskManager.runTaskLater(new Runnable() {
@Override
public void run() {
if (PS.this.IMP.initPlotMeConverter()) {
PS.log("&c=== IMPORTANT ===");
PS.log("&cTHIS MESSAGE MAY BE EXTREMELY HELPFUL IF YOU HAVE TROUBLE CONVERTING PLOTME!");
PS.log("&c - Make sure 'UUID.read-from-disk' is disabled (false)!");
PS.log("&c - Sometimes the database can be locked, deleting PlotMe.jar beforehand will fix the issue!");
PS.log("&c - After the conversion is finished, please set 'plotme-convert.enabled' to false in the "
+ "'settings.yml'");
}
}
}, 20);
}
}
});
}
}, 20);
}
public boolean isMainThread(Thread thread) {
return this.thread == thread;
}
@ -2398,10 +2398,6 @@ public class PS {
return count;
}
public int getPlotAreaCount(String world) {
return this.plotAreaMap.size();
}
public Set<PlotArea> getPlotAreas() {
HashSet<PlotArea> set = new HashSet<>(this.plotAreas.length);
Collections.addAll(set, this.plotAreas);

View File

@ -357,8 +357,7 @@ public class DebugExec extends SubCommand {
@Override
public void run(Integer i, File file, PlotMessage message) {
String name;
name = file.getName();
String name = file.getName();
message.text("[").color("$3")
.text(i + "").color("$1")

View File

@ -19,7 +19,7 @@ import com.plotsquared.general.commands.CommandDeclaration;
description = "Mark a plot as done",
permission = "plots.done",
category = CommandCategory.SETTINGS,
requiredType = RequiredType.NONE)
requiredType = RequiredType.PLAYER)
public class Done extends SubCommand {
@Override

View File

@ -22,7 +22,7 @@ import java.net.URL;
command = "download",
aliases = {"dl"},
category = CommandCategory.SCHEMATIC,
requiredType = RequiredType.NONE,
requiredType = RequiredType.PLAYER,
description = "Download your plot",
permission = "plots.download")
public class Download extends SubCommand {

View File

@ -13,6 +13,7 @@ import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualcrafters.plot.util.Permissions;
import com.intellectualcrafters.plot.util.StringMan;
import com.plotsquared.general.commands.CommandDeclaration;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@ -24,7 +25,7 @@ import java.util.Map;
usage = "/plot flag <set|remove|add|list|info> <flag> <value>",
description = "Set plot flags",
category = CommandCategory.SETTINGS,
requiredType = RequiredType.NONE,
requiredType = RequiredType.PLAYER,
permission = "plots.flag")
public class FlagCmd extends SubCommand {
@ -75,18 +76,18 @@ public class FlagCmd extends SubCommand {
MainUtil.sendMessage(player, C.COMMAND_SYNTAX, "/plot flag info <flag>");
return false;
}
AbstractFlag af = FlagManager.getFlag(args[1]);
if (af == null) {
AbstractFlag flag = FlagManager.getFlag(args[1]);
if (flag == null) {
MainUtil.sendMessage(player, C.NOT_VALID_FLAG);
MainUtil.sendMessage(player, C.COMMAND_SYNTAX, "/plot flag info <flag>");
return false;
}
// flag key
MainUtil.sendMessage(player, C.FLAG_KEY, af.getKey());
MainUtil.sendMessage(player, C.FLAG_KEY, flag.getKey());
// flag type
MainUtil.sendMessage(player, C.FLAG_TYPE, af.value.getClass().getSimpleName());
MainUtil.sendMessage(player, C.FLAG_TYPE, flag.value.getClass().getSimpleName());
// Flag type description
MainUtil.sendMessage(player, C.FLAG_DESC, af.getValueDesc());
MainUtil.sendMessage(player, C.FLAG_DESC, flag.getValueDesc());
return true;
}
case "set": {
@ -167,7 +168,7 @@ public class FlagCmd extends SubCommand {
MainUtil.sendMessage(player, C.FLAG_REMOVED);
return true;
}
case "add": {
case "add":
if (!Permissions.hasPermission(player, "plots.flag.add")) {
MainUtil.sendMessage(player, C.NO_PERMISSION, "plots.flag.add");
return false;
@ -206,7 +207,6 @@ public class FlagCmd extends SubCommand {
}
MainUtil.sendMessage(player, C.FLAG_ADDED);
return true;
}
case "list":
if (!Permissions.hasPermission(player, "plots.flag.list")) {
MainUtil.sendMessage(player, C.NO_PERMISSION, "plots.flag.list");
@ -217,12 +217,12 @@ public class FlagCmd extends SubCommand {
return false;
}
HashMap<String, ArrayList<String>> flags = new HashMap<>();
for (AbstractFlag af : FlagManager.getFlags()) {
String type = af.value.getClass().getSimpleName().replaceAll("Value", "");
for (AbstractFlag flag1 : FlagManager.getFlags()) {
String type = flag1.value.getClass().getSimpleName().replaceAll("Value", "");
if (!flags.containsKey(type)) {
flags.put(type, new ArrayList<String>());
}
flags.get(type).add(af.getKey());
flags.get(type).add(flag1.getKey());
}
String message = "";
String prefix = "";

View File

@ -22,7 +22,7 @@ import java.util.UUID;
description = "Merge the plot you are standing on, with another plot",
permission = "plots.merge", usage = "/plot merge <all|n|e|s|w> [removeroads]",
category = CommandCategory.SETTINGS,
requiredType = RequiredType.NONE,
requiredType = RequiredType.PLAYER,
confirmation = true)
public class Merge extends SubCommand {

View File

@ -15,7 +15,7 @@ import com.plotsquared.general.commands.CommandDeclaration;
usage = "/plot target <<plot>|nearest>",
description = "Target a plot with your compass",
permission = "plots.target",
requiredType = RequiredType.NONE,
requiredType = RequiredType.PLAYER,
category = CommandCategory.INFO)
public class Target extends SubCommand {

View File

@ -5,6 +5,7 @@ import com.intellectualcrafters.configuration.file.YamlConfiguration;
import com.intellectualcrafters.plot.PS;
import com.intellectualcrafters.plot.util.StringMan;
import com.plotsquared.general.commands.CommandCaller;
import java.io.File;
import java.util.EnumSet;
import java.util.HashMap;

View File

@ -19,7 +19,7 @@ public class ConfigurationNode {
private final SettingValue type;
private Object value;
public ConfigurationNode(String constant, Object defaultValue, String description, SettingValue type, boolean required) {
public ConfigurationNode(String constant, Object defaultValue, String description, SettingValue type) {
this.constant = constant;
this.defaultValue = defaultValue;
this.description = description;

View File

@ -6,16 +6,11 @@ import java.util.List;
/**
* Updater and DB settings
*
*/
public class Settings {
public static boolean USE_SQLUUIDHANDLER = false;
public static boolean AUTO_PURGE = false;
/**
*
*/
public static boolean UPDATE_NOTIFICATIONS = true;
public static boolean FAST_CLEAR = false;
@ -163,8 +158,6 @@ public class Settings {
/**
* Database settings
*
*/
public static class DB {
/**

View File

@ -139,7 +139,6 @@ public interface AbstractDB {
/**
* Set plot flags.
*
* @param plot Plot Object
* @param flags flags to set (flag[])
*/

View File

@ -26,6 +26,10 @@ import java.util.Set;
*/
public class FlagManager {
//TODO Default Flags
public static final IntegerFlag MUSIC = new IntegerFlag("music");
private static final HashSet<String> reserved = new HashSet<>();
private static final HashSet<AbstractFlag> flags = new HashSet<>();

View File

@ -0,0 +1,8 @@
package com.intellectualcrafters.plot.flag;
public class IntegerFlag extends Flag<Integer> {
public IntegerFlag(String name) {
super(name);
}
}

View File

@ -34,18 +34,18 @@ public abstract class ClassicPlotWorld extends SquarePlotWorld {
@Override
public ConfigurationNode[] getSettingNodes() {
return new ConfigurationNode[] {
new ConfigurationNode("plot.height", this.PLOT_HEIGHT, "Plot height", Configuration.INTEGER, true),
new ConfigurationNode("plot.size", this.PLOT_WIDTH, "Plot width", Configuration.INTEGER, true),
new ConfigurationNode("plot.filling", this.MAIN_BLOCK, "Plot block", Configuration.BLOCKLIST, true),
new ConfigurationNode("plot.floor", this.TOP_BLOCK, "Plot floor block", Configuration.BLOCKLIST, true),
new ConfigurationNode("wall.block", this.WALL_BLOCK, "Top wall block", Configuration.BLOCK, true),
new ConfigurationNode("wall.block_claimed", this.CLAIMED_WALL_BLOCK, "Wall block (claimed)", Configuration.BLOCK, true),
new ConfigurationNode("road.width", this.ROAD_WIDTH, "Road width", Configuration.INTEGER, true),
new ConfigurationNode("road.height", this.ROAD_HEIGHT, "Road height", Configuration.INTEGER, true),
new ConfigurationNode("road.block", this.ROAD_BLOCK, "Road block", Configuration.BLOCK, true),
new ConfigurationNode("wall.filling", this.WALL_FILLING, "Wall filling block", Configuration.BLOCK, true),
new ConfigurationNode("wall.height", this.WALL_HEIGHT, "Wall height", Configuration.INTEGER, true),
new ConfigurationNode("plot.bedrock", this.PLOT_BEDROCK, "Plot bedrock generation", Configuration.BOOLEAN, true)};
new ConfigurationNode("plot.height", this.PLOT_HEIGHT, "Plot height", Configuration.INTEGER),
new ConfigurationNode("plot.size", this.PLOT_WIDTH, "Plot width", Configuration.INTEGER),
new ConfigurationNode("plot.filling", this.MAIN_BLOCK, "Plot block", Configuration.BLOCKLIST),
new ConfigurationNode("plot.floor", this.TOP_BLOCK, "Plot floor block", Configuration.BLOCKLIST),
new ConfigurationNode("wall.block", this.WALL_BLOCK, "Top wall block", Configuration.BLOCK),
new ConfigurationNode("wall.block_claimed", this.CLAIMED_WALL_BLOCK, "Wall block (claimed)", Configuration.BLOCK),
new ConfigurationNode("road.width", this.ROAD_WIDTH, "Road width", Configuration.INTEGER),
new ConfigurationNode("road.height", this.ROAD_HEIGHT, "Road height", Configuration.INTEGER),
new ConfigurationNode("road.block", this.ROAD_BLOCK, "Road block", Configuration.BLOCK),
new ConfigurationNode("wall.filling", this.WALL_FILLING, "Wall filling block", Configuration.BLOCK),
new ConfigurationNode("wall.height", this.WALL_HEIGHT, "Wall height", Configuration.INTEGER),
new ConfigurationNode("plot.bedrock", this.PLOT_BEDROCK, "Plot bedrock generation", Configuration.BOOLEAN)};
}
/**

View File

@ -9,8 +9,8 @@ import com.intellectualcrafters.plot.object.SetupObject;
import com.intellectualcrafters.plot.util.PlotChunk;
/**
* This class allows for implementation independent world generation<br>
* - Sponge/Bukkit API<br><br>
* This class allows for implementation independent world generation.
* - Sponge/Bukkit API
* Use the specify method to get the generator for that platform.
*/
public abstract class IndependentPlotGenerator {

View File

@ -7,7 +7,7 @@ import com.intellectualcrafters.plot.object.SetupObject;
public abstract class PlotGenerator<T> {
public T generator;
public final T generator;
public PlotGenerator(T generator) {
this.generator = generator;

View File

@ -1302,7 +1302,7 @@ public class Plot {
PlotArea plotworld = getArea();
if (plotworld.SCHEMATIC_ON_CLAIM) {
SchematicHandler.Schematic sch;
if (schematic.isEmpty()) {
if (schematic == null || schematic.isEmpty()) {
sch = SchematicHandler.manager.getSchematic(plotworld.SCHEMATIC_FILE);
} else {
sch = SchematicHandler.manager.getSchematic(schematic);

View File

@ -91,7 +91,7 @@ public abstract class PlotArea {
}
/**
* Create a new PlotArea object with no functionality/information<br>
* Create a new PlotArea object with no functionality/information.
* - Mainly used during startup before worlds are created as a temporary object
* @param world
* @return
@ -106,8 +106,9 @@ public abstract class PlotArea {
}
/**
* Returns the region for this PlotArea or a RegionWrapper encompassing the whole world if none exists
* @NotNull
* Returns the region for this PlotArea or a RegionWrapper encompassing
* the whole world if none exists.
*
* @return RegionWrapper
*/
public RegionWrapper getRegion() {
@ -119,7 +120,7 @@ public abstract class PlotArea {
}
/**
* Returns the region for this PlotArea
* Returns the region for this PlotArea.
*
* @return RegionWrapper or null if no applicable region
*/
@ -135,7 +136,7 @@ public abstract class PlotArea {
}
/**
* Returns the min PlotId
* Returns the min PlotId.
* @return
*/
public PlotId getMin() {
@ -143,7 +144,7 @@ public abstract class PlotArea {
}
/**
* Returns the max PlotId
* Returns the max PlotId.
* @return
*/
public PlotId getMax() {
@ -151,7 +152,7 @@ public abstract class PlotArea {
}
/**
* Get the implementation independent generator for this area
* Get the implementation independent generator for this area.
*
* @return
*/
@ -179,7 +180,7 @@ public abstract class PlotArea {
}
/**
* Check if a PlotArea is compatible (move/copy etc)
* Check if a PlotArea is compatible (move/copy etc).
* @param plotArea
* @return
*/
@ -198,7 +199,7 @@ public abstract class PlotArea {
}
/**
* When a world is created, the following method will be called for each
* When a world is created, the following method will be called for each.
*
* @param config Configuration Section
*/

View File

@ -8,15 +8,15 @@ public abstract class ChatManager<T> {
public abstract T builder();
public abstract void color(final PlotMessage message, final String color);
public abstract void color(PlotMessage message, String color);
public abstract void tooltip(final PlotMessage message, final PlotMessage... tooltip);
public abstract void tooltip(PlotMessage message, PlotMessage... tooltip);
public abstract void command(final PlotMessage message, final String command);
public abstract void command(PlotMessage message, String command);
public abstract void text(final PlotMessage message, final String text);
public abstract void text(PlotMessage message, String text);
public abstract void send(final PlotMessage plotMessage, final PlotPlayer player);
public abstract void send(PlotMessage plotMessage, PlotPlayer player);
public abstract void suggest(final PlotMessage plotMessage, final String command);
public abstract void suggest(PlotMessage plotMessage, String command);
}

View File

@ -15,6 +15,7 @@ import com.intellectualcrafters.plot.object.PlotId;
import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualcrafters.plot.object.Rating;
import com.plotsquared.listener.PlayerBlockEventType;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.UUID;

View File

@ -24,6 +24,7 @@ import com.intellectualcrafters.plot.object.PlotArea;
import com.intellectualcrafters.plot.object.PlotBlock;
import com.intellectualcrafters.plot.object.RegionWrapper;
import com.intellectualcrafters.plot.object.RunnableVal;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
@ -705,7 +706,7 @@ public abstract class SchematicHandler {
* @return Map of block location to tag
*/
public HashMap<BlockLoc, CompoundTag> getTiles() {
return this.tiles;
return this.tiles == null ? new HashMap<BlockLoc, CompoundTag>() : this.tiles;
}
/**

View File

@ -2,6 +2,7 @@ package com.intellectualcrafters.plot.util;
import com.intellectualcrafters.plot.object.ChunkLoc;
import com.intellectualcrafters.plot.object.PlotBlock;
import java.util.ArrayDeque;
import java.util.concurrent.atomic.AtomicInteger;
@ -150,7 +151,7 @@ public class SetQueue {
}
public void regenerateChunk(String world, ChunkLoc loc) {
queue.regenerateChunk(world, loc);
this.queue.regenerateChunk(world, loc);
}
public class ChunkWrapper {

View File

@ -11,10 +11,9 @@ import java.util.concurrent.atomic.AtomicInteger;
public abstract class TaskManager {
public static HashSet<String> TELEPORT_QUEUE = new HashSet<>();
public static final HashSet<String> TELEPORT_QUEUE = new HashSet<>();
public static final HashMap<Integer, Integer> tasks = new HashMap<>();
public static AtomicInteger index = new AtomicInteger(0);
public static HashMap<Integer, Integer> tasks = new HashMap<>();
public static int runTaskRepeat(Runnable runnable, int interval) {
if (runnable != null) {

View File

@ -477,7 +477,7 @@ public abstract class Command {
return getCommandString() + " " + args + "]";
}
public Collection tab(PlotPlayer player, String[] args, boolean space) {
public Collection<Command> tab(PlotPlayer player, String[] args, boolean space) {
switch (args.length) {
case 0:
return this.allCommands;

View File

@ -64,6 +64,7 @@ import org.spongepowered.api.event.game.state.GamePreInitializationEvent;
import org.spongepowered.api.plugin.Plugin;
import org.spongepowered.api.plugin.PluginContainer;
import org.spongepowered.api.profile.GameProfileManager;
import org.spongepowered.api.world.Chunk;
import org.spongepowered.api.world.World;
import org.spongepowered.api.world.gen.GenerationPopulator;
import org.spongepowered.api.world.gen.WorldGenerator;
@ -217,7 +218,7 @@ public class SpongeMain implements IPlotMain {
@Override
public TaskManager getTaskManager() {
return new SpongeTaskManager();
return new SpongeTaskManager(this);
}
@Override
@ -370,7 +371,7 @@ public class SpongeMain implements IPlotMain {
}
@Override
public PlotQueue initPlotQueue() {
public PlotQueue<Chunk> initPlotQueue() {
if (PS.get().checkVersion(getServerVersion(), 1, 8, 0)) {
try {
MainUtil.canSendChunk = true;

View File

@ -5,9 +5,6 @@ import com.intellectualcrafters.plot.object.Location;
import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.util.ChunkManager;
import com.intellectualcrafters.plot.util.TaskManager;
import java.util.Optional;
import java.util.Set;
import java.util.function.Predicate;
import org.spongepowered.api.entity.Entity;
import org.spongepowered.api.entity.living.Living;
import org.spongepowered.api.entity.living.animal.Animal;
@ -15,6 +12,10 @@ import org.spongepowered.api.entity.living.monster.Monster;
import org.spongepowered.api.world.Chunk;
import org.spongepowered.api.world.World;
import java.util.Optional;
import java.util.Set;
import java.util.function.Predicate;
public class SpongeChunkManager extends ChunkManager {
@Override

View File

@ -36,25 +36,25 @@ public class SpongeEventUtil extends EventUtil {
public EventManager events;
public SpongeEventUtil() {
events = SpongeMain.THIS.getGame().getEventManager();
this.events = SpongeMain.THIS.getGame().getEventManager();
}
public boolean callEvent(final Event event) {
return !events.post(event);
public boolean callEvent(Event event) {
return !this.events.post(event);
}
@Override
public boolean callClaim(final PlotPlayer player, final Plot plot, final boolean auto) {
public boolean callClaim(PlotPlayer player, Plot plot, boolean auto) {
return callEvent(new PlayerClaimPlotEvent(SpongeUtil.getPlayer(player), plot, auto));
}
@Override
public boolean callTeleport(final PlotPlayer player, final Location from, final Plot plot) {
public boolean callTeleport(PlotPlayer player, Location from, Plot plot) {
return callEvent(new PlayerTeleportToPlotEvent(SpongeUtil.getPlayer(player), from, plot));
}
@Override
public boolean callClear(final Plot plot) {
public boolean callClear(Plot plot) {
return callEvent(new PlotClearEvent(plot));
}
@ -64,59 +64,59 @@ public class SpongeEventUtil extends EventUtil {
}
@Override
public boolean callFlagAdd(final Flag flag, final Plot plot) {
public boolean callFlagAdd(Flag flag, Plot plot) {
return callEvent(new PlotFlagAddEvent(flag, plot));
}
@Override
public boolean callFlagRemove(final Flag flag, final Plot plot) {
public boolean callFlagRemove(Flag flag, Plot plot) {
return callEvent(new PlotFlagRemoveEvent(flag, plot));
}
@Override
public boolean callMerge(final Plot plot, final ArrayList<PlotId> plots) {
public boolean callMerge(Plot plot, ArrayList<PlotId> plots) {
return callEvent(new PlotMergeEvent(SpongeUtil.getWorld(plot.getArea().worldname), plot, plots));
}
@Override
public boolean callUnlink(final PlotArea area, final ArrayList<PlotId> plots) {
public boolean callUnlink(PlotArea area, ArrayList<PlotId> plots) {
return callEvent(new PlotUnlinkEvent(SpongeUtil.getWorld(area.worldname), plots));
}
@Override
public void callEntry(final PlotPlayer player, final Plot plot) {
public void callEntry(PlotPlayer player, Plot plot) {
callEvent(new PlayerEnterPlotEvent(SpongeUtil.getPlayer(player), plot));
}
@Override
public void callLeave(final PlotPlayer player, final Plot plot) {
public void callLeave(PlotPlayer player, Plot plot) {
callEvent(new PlayerLeavePlotEvent(SpongeUtil.getPlayer(player), plot));
}
@Override
public void callDenied(final PlotPlayer initiator, final Plot plot, final UUID player, final boolean added) {
public void callDenied(PlotPlayer initiator, Plot plot, UUID player, boolean added) {
callEvent(new PlayerPlotDeniedEvent(SpongeUtil.getPlayer(initiator), plot, player, added));
}
@Override
public void callTrusted(final PlotPlayer initiator, final Plot plot, final UUID player, final boolean added) {
public void callTrusted(PlotPlayer initiator, Plot plot, UUID player, boolean added) {
callEvent(new PlayerPlotHelperEvent(SpongeUtil.getPlayer(initiator), plot, player, added));
}
@Override
public void callMember(final PlotPlayer initiator, final Plot plot, final UUID player, final boolean added) {
public void callMember(PlotPlayer initiator, Plot plot, UUID player, boolean added) {
callEvent(new PlayerPlotTrustedEvent(SpongeUtil.getPlayer(initiator), plot, player, added));
}
@Override
public boolean callFlagRemove(final Flag flag, final PlotCluster cluster) {
public boolean callFlagRemove(Flag flag, PlotCluster cluster) {
return callEvent(new ClusterFlagRemoveEvent(flag, cluster));
}
@Override
public Rating callRating(final PlotPlayer player, final Plot plot, final Rating rating) {
final PlotRateEvent event = new PlotRateEvent(player, rating, plot);
events.post(event);
public Rating callRating(PlotPlayer player, Plot plot, Rating rating) {
PlotRateEvent event = new PlotRateEvent(player, rating, plot);
this.events.post(event);
return event.getRating();
}

View File

@ -12,13 +12,18 @@ public class SpongeTaskManager extends TaskManager {
private final AtomicInteger i = new AtomicInteger();
private final HashMap<Integer, Task> tasks = new HashMap<>();
private final SpongeMain spongeMain;
public SpongeTaskManager(SpongeMain spongeMain) {
this.spongeMain = spongeMain;
}
@Override
public int taskRepeat(Runnable runnable, int interval) {
int val = this.i.incrementAndGet();
Task.Builder builder = SpongeMain.THIS.getGame().getScheduler().createTaskBuilder();
Task.Builder builder = this.spongeMain.getGame().getScheduler().createTaskBuilder();
Task.Builder built = builder.delayTicks(interval).intervalTicks(interval).execute(runnable);
Task task = built.submit(SpongeMain.THIS.getPlugin());
Task task = built.submit(this.spongeMain.getPlugin());
this.tasks.put(val, task);
return val;
}
@ -26,35 +31,35 @@ public class SpongeTaskManager extends TaskManager {
@Override
public int taskRepeatAsync(Runnable runnable, int interval) {
int val = this.i.incrementAndGet();
Task.Builder builder = SpongeMain.THIS.getGame().getScheduler().createTaskBuilder();
Task.Builder builder = this.spongeMain.getGame().getScheduler().createTaskBuilder();
Task.Builder built = builder.delayTicks(interval).async().intervalTicks(interval).execute(runnable);
Task task = built.submit(SpongeMain.THIS.getPlugin());
Task task = built.submit(this.spongeMain.getPlugin());
this.tasks.put(val, task);
return val;
}
@Override
public void taskAsync(Runnable runnable) {
Task.Builder builder = SpongeMain.THIS.getGame().getScheduler().createTaskBuilder();
builder.async().execute(runnable).submit(SpongeMain.THIS.getPlugin());
Task.Builder builder = this.spongeMain.getGame().getScheduler().createTaskBuilder();
builder.async().execute(runnable).submit(this.spongeMain.getPlugin());
}
@Override
public void task(Runnable runnable) {
Task.Builder builder = SpongeMain.THIS.getGame().getScheduler().createTaskBuilder();
builder.execute(runnable).submit(SpongeMain.THIS.getPlugin());
Task.Builder builder = this.spongeMain.getGame().getScheduler().createTaskBuilder();
builder.execute(runnable).submit(this.spongeMain.getPlugin());
}
@Override
public void taskLater(Runnable runnable, int delay) {
Task.Builder builder = SpongeMain.THIS.getGame().getScheduler().createTaskBuilder();
builder.delayTicks(delay).execute(runnable).submit(SpongeMain.THIS.getPlugin());
Task.Builder builder = this.spongeMain.getGame().getScheduler().createTaskBuilder();
builder.delayTicks(delay).execute(runnable).submit(this.spongeMain.getPlugin());
}
@Override
public void taskLaterAsync(Runnable runnable, int delay) {
Task.Builder builder = SpongeMain.THIS.getGame().getScheduler().createTaskBuilder();
builder.async().delayTicks(delay).execute(runnable).submit(SpongeMain.THIS.getPlugin());
Task.Builder builder = this.spongeMain.getGame().getScheduler().createTaskBuilder();
builder.async().delayTicks(delay).execute(runnable).submit(this.spongeMain.getPlugin());
}
@Override

View File

@ -17,13 +17,6 @@ import com.intellectualcrafters.plot.util.UUIDHandler;
import com.intellectualcrafters.plot.util.WorldUtil;
import com.plotsquared.sponge.SpongeMain;
import com.plotsquared.sponge.object.SpongePlayer;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Optional;
import net.minecraft.block.Block;
import net.minecraft.world.biome.BiomeGenBase;
import org.apache.commons.lang3.NotImplementedException;
@ -49,6 +42,14 @@ import org.spongepowered.api.world.biome.BiomeType;
import org.spongepowered.api.world.biome.BiomeTypes;
import org.spongepowered.api.world.extent.Extent;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Optional;
public class SpongeUtil extends WorldUtil {
public static Cause CAUSE = Cause.of(NamedCause.source("PlotSquared"));

View File

@ -10,17 +10,17 @@ import com.intellectualcrafters.plot.util.PlotQueue;
import com.intellectualcrafters.plot.util.SetQueue;
import com.intellectualcrafters.plot.util.SetQueue.ChunkWrapper;
import com.plotsquared.sponge.util.SpongeUtil;
import java.util.Optional;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraft.world.gen.ChunkProviderServer;
import org.spongepowered.api.block.BlockState;
import org.spongepowered.api.world.Chunk;
import org.spongepowered.api.world.World;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
import org.spongepowered.api.world.World;
public class SlowQueue implements PlotQueue<Chunk> {

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.intellectualcrafters</groupId>
<properties>