mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-22 05:06:44 +01:00
Code cleanup
This commit is contained in:
parent
874da8c5bc
commit
b1fa258688
@ -7,34 +7,34 @@ import org.bukkit.Bukkit;
|
||||
public class BukkitTaskManager extends TaskManager {
|
||||
|
||||
@Override
|
||||
public int taskRepeat(Runnable r, int interval) {
|
||||
return BukkitMain.THIS.getServer().getScheduler().scheduleSyncRepeatingTask(BukkitMain.THIS, r, interval, interval);
|
||||
public int taskRepeat(Runnable runnable, int interval) {
|
||||
return BukkitMain.THIS.getServer().getScheduler().scheduleSyncRepeatingTask(BukkitMain.THIS, runnable, interval, interval);
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
public int taskRepeatAsync(Runnable r, int interval) {
|
||||
return BukkitMain.THIS.getServer().getScheduler().scheduleAsyncRepeatingTask(BukkitMain.THIS, r, interval, interval);
|
||||
public int taskRepeatAsync(Runnable runnable, int interval) {
|
||||
return BukkitMain.THIS.getServer().getScheduler().scheduleAsyncRepeatingTask(BukkitMain.THIS, runnable, interval, interval);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void taskAsync(Runnable r) {
|
||||
BukkitMain.THIS.getServer().getScheduler().runTaskAsynchronously(BukkitMain.THIS, r).getTaskId();
|
||||
public void taskAsync(Runnable runnable) {
|
||||
BukkitMain.THIS.getServer().getScheduler().runTaskAsynchronously(BukkitMain.THIS, runnable).getTaskId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void task(Runnable r) {
|
||||
BukkitMain.THIS.getServer().getScheduler().runTask(BukkitMain.THIS, r).getTaskId();
|
||||
public void task(Runnable runnable) {
|
||||
BukkitMain.THIS.getServer().getScheduler().runTask(BukkitMain.THIS, runnable).getTaskId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void taskLater(Runnable r, int delay) {
|
||||
BukkitMain.THIS.getServer().getScheduler().runTaskLater(BukkitMain.THIS, r, delay).getTaskId();
|
||||
public void taskLater(Runnable runnable, int delay) {
|
||||
BukkitMain.THIS.getServer().getScheduler().runTaskLater(BukkitMain.THIS, runnable, delay).getTaskId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void taskLaterAsync(Runnable r, int delay) {
|
||||
BukkitMain.THIS.getServer().getScheduler().runTaskLaterAsynchronously(BukkitMain.THIS, r, delay);
|
||||
public void taskLaterAsync(Runnable runnable, int delay) {
|
||||
BukkitMain.THIS.getServer().getScheduler().runTaskLaterAsynchronously(BukkitMain.THIS, runnable, delay);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,37 +1,38 @@
|
||||
package com.intellectualcrafters.configuration.file;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.yaml.snakeyaml.nodes.Node;
|
||||
import org.yaml.snakeyaml.representer.Representer;
|
||||
|
||||
import com.intellectualcrafters.configuration.ConfigurationSection;
|
||||
import com.intellectualcrafters.configuration.serialization.ConfigurationSerializable;
|
||||
import com.intellectualcrafters.configuration.serialization.ConfigurationSerialization;
|
||||
import org.yaml.snakeyaml.nodes.Node;
|
||||
import org.yaml.snakeyaml.representer.Representer;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class YamlRepresenter extends Representer {
|
||||
|
||||
|
||||
public YamlRepresenter() {
|
||||
multiRepresenters.put(ConfigurationSection.class, new RepresentConfigurationSection());
|
||||
multiRepresenters.put(ConfigurationSerializable.class, new RepresentConfigurationSerializable());
|
||||
this.multiRepresenters.put(ConfigurationSection.class, new RepresentConfigurationSection());
|
||||
this.multiRepresenters.put(ConfigurationSerializable.class, new RepresentConfigurationSerializable());
|
||||
}
|
||||
|
||||
|
||||
private class RepresentConfigurationSection extends RepresentMap {
|
||||
|
||||
@Override
|
||||
public Node representData(final Object data) {
|
||||
public Node representData(Object data) {
|
||||
return super.representData(((ConfigurationSection) data).getValues(false));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private class RepresentConfigurationSerializable extends RepresentMap {
|
||||
|
||||
@Override
|
||||
public Node representData(final Object data) {
|
||||
final ConfigurationSerializable serializable = (ConfigurationSerializable) data;
|
||||
final Map<String, Object> values = new LinkedHashMap<>();
|
||||
public Node representData(Object data) {
|
||||
ConfigurationSerializable serializable = (ConfigurationSerializable) data;
|
||||
Map<String, Object> values = new LinkedHashMap<>();
|
||||
values.put(ConfigurationSerialization.SERIALIZED_TYPE_KEY, ConfigurationSerialization.getAlias(serializable.getClass()));
|
||||
values.putAll(serializable.serialize());
|
||||
|
||||
|
||||
return super.representData(values);
|
||||
}
|
||||
}
|
||||
|
@ -89,7 +89,6 @@ import java.util.zip.ZipInputStream;
|
||||
*/
|
||||
public class PS {
|
||||
|
||||
// protected static:
|
||||
private static PS instance;
|
||||
private final HashSet<Integer> plotareaHashCheck = new HashSet<>();
|
||||
/**
|
||||
@ -99,10 +98,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 HashMap<String, QuadMap<PlotArea>> plotAreaGrid = new HashMap<>();
|
||||
public HashMap<String, Set<PlotCluster>> clusters_tmp;
|
||||
public HashMap<String, HashMap<PlotId, Plot>> plots_tmp;
|
||||
// public:
|
||||
public File styleFile;
|
||||
public File configFile;
|
||||
public File commandsFile;
|
||||
@ -119,11 +117,11 @@ public class PS {
|
||||
/**
|
||||
* All plot areas (quick global access).
|
||||
*/
|
||||
private PlotArea[] plotareas = new PlotArea[0];
|
||||
// private:
|
||||
private PlotArea[] plotAreas = new PlotArea[0];
|
||||
|
||||
private File storageFile;
|
||||
private File file = null; // This file
|
||||
private int[] version = null;
|
||||
private int[] version;
|
||||
private int[] lastVersion;
|
||||
private String platform = null;
|
||||
private Database database;
|
||||
@ -429,11 +427,11 @@ public class PS {
|
||||
* @return
|
||||
*/
|
||||
public PlotArea getApplicablePlotArea(Location location) {
|
||||
switch (this.plotareas.length) {
|
||||
switch (this.plotAreas.length) {
|
||||
case 0:
|
||||
return null;
|
||||
case 1:
|
||||
return this.plotareas[0];
|
||||
return this.plotAreas[0];
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
@ -443,7 +441,7 @@ public class PS {
|
||||
case 8:
|
||||
String world = location.getWorld();
|
||||
int hash = world.hashCode();
|
||||
for (PlotArea area : this.plotareas) {
|
||||
for (PlotArea area : this.plotAreas) {
|
||||
if (hash == area.worldhash) {
|
||||
if (area.contains(location.getX(), location.getZ()) && (!this.plotareaHasCollision || world.equals(area.worldname))) {
|
||||
return area;
|
||||
@ -477,7 +475,7 @@ public class PS {
|
||||
}
|
||||
return null;
|
||||
default:
|
||||
QuadMap<PlotArea> search = this.plotareagrid.get(location.getWorld());
|
||||
QuadMap<PlotArea> search = this.plotAreaGrid.get(location.getWorld());
|
||||
return search.get(location.getX(), location.getZ());
|
||||
}
|
||||
}
|
||||
@ -519,7 +517,7 @@ public class PS {
|
||||
String[] split = search.split(";|,");
|
||||
PlotArea[] areas = this.plotareamap.get(split[0]);
|
||||
if (areas == null) {
|
||||
for (PlotArea area : this.plotareas) {
|
||||
for (PlotArea area : this.plotAreas) {
|
||||
if (area.worldname.equalsIgnoreCase(split[0])) {
|
||||
if (area.id == null || split.length == 2 && area.id.equalsIgnoreCase(split[1])) {
|
||||
return area;
|
||||
@ -543,7 +541,7 @@ public class PS {
|
||||
}
|
||||
|
||||
public Set<PlotArea> getPlotAreas(String world, RegionWrapper region) {
|
||||
QuadMap<PlotArea> areas = this.plotareagrid.get(world);
|
||||
QuadMap<PlotArea> areas = this.plotAreaGrid.get(world);
|
||||
return areas != null ? areas.get(region) : new HashSet<PlotArea>();
|
||||
}
|
||||
|
||||
@ -557,11 +555,11 @@ public class PS {
|
||||
* @return
|
||||
*/
|
||||
public PlotArea getPlotAreaAbs(Location location) {
|
||||
switch (this.plotareas.length) {
|
||||
switch (this.plotAreas.length) {
|
||||
case 0:
|
||||
return null;
|
||||
case 1:
|
||||
PlotArea pa = this.plotareas[0];
|
||||
PlotArea pa = this.plotAreas[0];
|
||||
return pa.contains(location) ? pa : null;
|
||||
case 2:
|
||||
case 3:
|
||||
@ -572,7 +570,7 @@ public class PS {
|
||||
case 8:
|
||||
String world = location.getWorld();
|
||||
int hash = world.hashCode();
|
||||
for (PlotArea area : this.plotareas) {
|
||||
for (PlotArea area : this.plotAreas) {
|
||||
if (hash == area.worldhash) {
|
||||
if (area.contains(location.getX(), location.getZ()) && (!this.plotareaHasCollision || world.equals(area.worldname))) {
|
||||
return area;
|
||||
@ -607,7 +605,7 @@ public class PS {
|
||||
}
|
||||
return null;
|
||||
default:
|
||||
QuadMap<PlotArea> search = this.plotareagrid.get(location.getWorld());
|
||||
QuadMap<PlotArea> search = this.plotAreaGrid.get(location.getWorld());
|
||||
return search.get(location.getX(), location.getZ());
|
||||
}
|
||||
}
|
||||
@ -625,21 +623,21 @@ public class PS {
|
||||
/**
|
||||
* Add a global reference to a plot world.
|
||||
*
|
||||
* @param plotarea The PlotArea
|
||||
* @param plotArea The PlotArea
|
||||
* @see #removePlotArea(PlotArea) To remove the reference
|
||||
*/
|
||||
public void addPlotArea(PlotArea plotarea) {
|
||||
HashMap<PlotId, Plot> plots = this.plots_tmp.remove(plotarea.toString());
|
||||
public void addPlotArea(PlotArea plotArea) {
|
||||
HashMap<PlotId, Plot> plots = this.plots_tmp.remove(plotArea.toString());
|
||||
if (plots == null) {
|
||||
if (plotarea.TYPE == 2) {
|
||||
plots = this.plots_tmp.get(plotarea.worldname);
|
||||
if (plotArea.TYPE == 2) {
|
||||
plots = this.plots_tmp.get(plotArea.worldname);
|
||||
if (plots != null) {
|
||||
Iterator<Entry<PlotId, Plot>> iter = plots.entrySet().iterator();
|
||||
while (iter.hasNext()) {
|
||||
Entry<PlotId, Plot> next = iter.next();
|
||||
PlotId id = next.getKey();
|
||||
if (plotarea.contains(id)) {
|
||||
next.getValue().setArea(plotarea);
|
||||
if (plotArea.contains(id)) {
|
||||
next.getValue().setArea(plotArea);
|
||||
iter.remove();
|
||||
}
|
||||
}
|
||||
@ -648,19 +646,19 @@ public class PS {
|
||||
} else {
|
||||
for (Entry<PlotId, Plot> entry : plots.entrySet()) {
|
||||
Plot plot = entry.getValue();
|
||||
plot.setArea(plotarea);
|
||||
plot.setArea(plotArea);
|
||||
}
|
||||
}
|
||||
Set<PlotCluster> clusters = this.clusters_tmp.remove(plotarea.toString());
|
||||
Set<PlotCluster> clusters = this.clusters_tmp.remove(plotArea.toString());
|
||||
if (clusters == null) {
|
||||
if (plotarea.TYPE == 2) {
|
||||
clusters = this.clusters_tmp.get(plotarea.worldname);
|
||||
if (plotArea.TYPE == 2) {
|
||||
clusters = this.clusters_tmp.get(plotArea.worldname);
|
||||
if (clusters != null) {
|
||||
Iterator<PlotCluster> iter = clusters.iterator();
|
||||
while (iter.hasNext()) {
|
||||
PlotCluster next = iter.next();
|
||||
if (next.intersects(plotarea.getMin(), plotarea.getMax())) {
|
||||
next.setArea(plotarea);
|
||||
if (next.intersects(plotArea.getMin(), plotArea.getMax())) {
|
||||
next.setArea(plotArea);
|
||||
iter.remove();
|
||||
}
|
||||
}
|
||||
@ -668,16 +666,16 @@ public class PS {
|
||||
}
|
||||
} else {
|
||||
for (PlotCluster cluster : clusters) {
|
||||
cluster.setArea(plotarea);
|
||||
cluster.setArea(plotArea);
|
||||
}
|
||||
}
|
||||
Set<PlotArea> localAreas = getPlotAreas(plotarea.worldname);
|
||||
Set<PlotArea> localAreas = getPlotAreas(plotArea.worldname);
|
||||
Set<PlotArea> globalAreas = getPlotAreas();
|
||||
localAreas.add(plotarea);
|
||||
globalAreas.add(plotarea);
|
||||
this.plotareas = globalAreas.toArray(new PlotArea[globalAreas.size()]);
|
||||
this.plotareamap.put(plotarea.worldname, localAreas.toArray(new PlotArea[localAreas.size()]));
|
||||
QuadMap<PlotArea> map = this.plotareagrid.get(plotarea.worldname);
|
||||
localAreas.add(plotArea);
|
||||
globalAreas.add(plotArea);
|
||||
this.plotAreas = globalAreas.toArray(new PlotArea[globalAreas.size()]);
|
||||
this.plotareamap.put(plotArea.worldname, localAreas.toArray(new PlotArea[localAreas.size()]));
|
||||
QuadMap<PlotArea> map = this.plotAreaGrid.get(plotArea.worldname);
|
||||
if (map == null) {
|
||||
map = new QuadMap<PlotArea>(Integer.MAX_VALUE, 0, 0) {
|
||||
@Override
|
||||
@ -685,9 +683,9 @@ public class PS {
|
||||
return value.getRegion();
|
||||
}
|
||||
};
|
||||
this.plotareagrid.put(plotarea.worldname, map);
|
||||
this.plotAreaGrid.put(plotArea.worldname, map);
|
||||
}
|
||||
map.add(plotarea);
|
||||
map.add(plotArea);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -699,13 +697,13 @@ public class PS {
|
||||
public void removePlotArea(PlotArea area) {
|
||||
Set<PlotArea> areas = getPlotAreas(area.worldname);
|
||||
areas.remove(area);
|
||||
this.plotareas = areas.toArray(new PlotArea[areas.size()]);
|
||||
this.plotAreas = areas.toArray(new PlotArea[areas.size()]);
|
||||
if (areas.isEmpty()) {
|
||||
this.plotareamap.remove(area.worldname);
|
||||
this.plotareagrid.remove(area.worldname);
|
||||
this.plotAreaGrid.remove(area.worldname);
|
||||
} else {
|
||||
this.plotareamap.put(area.worldname, areas.toArray(new PlotArea[areas.size()]));
|
||||
this.plotareagrid.get(area.worldname).remove(area);
|
||||
this.plotAreaGrid.get(area.worldname).remove(area);
|
||||
}
|
||||
setPlotsTmp(area);
|
||||
}
|
||||
@ -1040,11 +1038,11 @@ public class PS {
|
||||
HashMap<PlotArea, Collection<Plot>> map = new HashMap<>();
|
||||
int totalSize = getPlotCount();
|
||||
if (myplots.size() == totalSize) {
|
||||
for (PlotArea area : this.plotareas) {
|
||||
for (PlotArea area : this.plotAreas) {
|
||||
map.put(area, area.getPlots());
|
||||
}
|
||||
} else {
|
||||
for (PlotArea area : this.plotareas) {
|
||||
for (PlotArea area : this.plotAreas) {
|
||||
map.put(area, new ArrayList<Plot>(0));
|
||||
}
|
||||
Collection<Plot> lastList = null;
|
||||
@ -1059,7 +1057,7 @@ public class PS {
|
||||
}
|
||||
}
|
||||
}
|
||||
List<PlotArea> areas = Arrays.asList(this.plotareas);
|
||||
List<PlotArea> areas = Arrays.asList(this.plotAreas);
|
||||
Collections.sort(areas, new Comparator<PlotArea>() {
|
||||
@Override
|
||||
public int compare(PlotArea a, PlotArea b) {
|
||||
@ -1189,11 +1187,11 @@ public class PS {
|
||||
* @return if a plot world is registered
|
||||
*/
|
||||
public boolean hasPlotArea(String world) {
|
||||
switch (this.plotareas.length) {
|
||||
switch (this.plotAreas.length) {
|
||||
case 0:
|
||||
return false;
|
||||
case 1:
|
||||
PlotArea a = this.plotareas[0];
|
||||
PlotArea a = this.plotAreas[0];
|
||||
return world.hashCode() == a.worldhash && (!this.plotareaHasCollision || a.worldname.equals(world));
|
||||
case 2:
|
||||
case 3:
|
||||
@ -1203,7 +1201,7 @@ public class PS {
|
||||
case 7:
|
||||
case 8:
|
||||
int hash = world.hashCode();
|
||||
for (PlotArea area : this.plotareas) {
|
||||
for (PlotArea area : this.plotAreas) {
|
||||
if (area.worldhash == hash && (!this.plotareaHasCollision || area.worldname.equals(world))) {
|
||||
return true;
|
||||
}
|
||||
@ -1726,7 +1724,7 @@ public class PS {
|
||||
|
||||
private Map<String, Map<PlotId, Plot>> getPlotsRaw() {
|
||||
HashMap<String, Map<PlotId, Plot>> map = new HashMap<>();
|
||||
for (PlotArea area : this.plotareas) {
|
||||
for (PlotArea area : this.plotAreas) {
|
||||
Map<PlotId, Plot> map2 = map.get(area.toString());
|
||||
if (map2 == null) {
|
||||
map.put(area.toString(), area.getPlotsRaw());
|
||||
@ -2347,13 +2345,13 @@ public class PS {
|
||||
}
|
||||
|
||||
public void foreachPlotArea(RunnableVal<PlotArea> runnable) {
|
||||
for (PlotArea area : this.plotareas) {
|
||||
for (PlotArea area : this.plotAreas) {
|
||||
runnable.run(area);
|
||||
}
|
||||
}
|
||||
|
||||
public void foreachPlot(RunnableVal<Plot> runnable) {
|
||||
for (PlotArea area : this.plotareas) {
|
||||
for (PlotArea area : this.plotAreas) {
|
||||
for (Plot plot : area.getPlots()) {
|
||||
runnable.run(plot);
|
||||
}
|
||||
@ -2361,7 +2359,7 @@ public class PS {
|
||||
}
|
||||
|
||||
public void foreachPlotRaw(RunnableVal<Plot> runnable) {
|
||||
for (PlotArea area : this.plotareas) {
|
||||
for (PlotArea area : this.plotAreas) {
|
||||
for (Plot plot : area.getPlots()) {
|
||||
runnable.run(plot);
|
||||
}
|
||||
@ -2376,7 +2374,7 @@ public class PS {
|
||||
}
|
||||
|
||||
public void foreachBasePlot(RunnableVal<Plot> run) {
|
||||
for (PlotArea area : this.plotareas) {
|
||||
for (PlotArea area : this.plotAreas) {
|
||||
area.foreachBasePlot(run);
|
||||
}
|
||||
}
|
||||
@ -2392,16 +2390,16 @@ public class PS {
|
||||
}
|
||||
|
||||
public PlotArea getFirstPlotArea() {
|
||||
return this.plotareas.length > 0 ? this.plotareas[0] : null;
|
||||
return this.plotAreas.length > 0 ? this.plotAreas[0] : null;
|
||||
}
|
||||
|
||||
public int getPlotAreaCount() {
|
||||
return this.plotareas.length;
|
||||
return this.plotAreas.length;
|
||||
}
|
||||
|
||||
public int getPlotCount() {
|
||||
int count = 0;
|
||||
for (PlotArea area : this.plotareas) {
|
||||
for (PlotArea area : this.plotAreas) {
|
||||
count += area.getPlotCount();
|
||||
}
|
||||
return count;
|
||||
@ -2412,8 +2410,8 @@ public class PS {
|
||||
}
|
||||
|
||||
public Set<PlotArea> getPlotAreas() {
|
||||
HashSet<PlotArea> set = new HashSet<>(this.plotareas.length);
|
||||
Collections.addAll(set, this.plotareas);
|
||||
HashSet<PlotArea> set = new HashSet<>(this.plotAreas.length);
|
||||
Collections.addAll(set, this.plotAreas);
|
||||
return set;
|
||||
}
|
||||
|
||||
|
@ -59,7 +59,6 @@ public class Updater {
|
||||
} else {
|
||||
version = new int[]{Integer.parseInt(split[0]), Integer.parseInt(split[1]), 0};
|
||||
}
|
||||
URL url = new URL(asset.getString("browser_download_url"));
|
||||
// If current version >= update
|
||||
if (PS.get().checkVersion(PS.get().getVersion(), version)) {
|
||||
PS.debug("&7PlotSquared is already up to date!");
|
||||
@ -68,7 +67,7 @@ public class Updater {
|
||||
log("&6PlotSquared " + StringMan.join(split, ".") + " is available:");
|
||||
log("&8 - &3Use: &7/plot update");
|
||||
log("&8 - &3Or: &7" + downloadURL);
|
||||
return url;
|
||||
return new URL(asset.getString("browser_download_url"));
|
||||
} catch (MalformedURLException e) {
|
||||
e.printStackTrace();
|
||||
log("&dCould not check for updates (1)");
|
||||
|
@ -70,14 +70,16 @@ public class Inbox extends SubCommand {
|
||||
|
||||
// This might work xD
|
||||
for (int x = page * 12; x < max; x++) {
|
||||
PlotComment c = comments[x];
|
||||
PlotComment comment = comments[x];
|
||||
String color;
|
||||
if (player.getName().equals(c.senderName)) {
|
||||
if (player.getName().equals(comment.senderName)) {
|
||||
color = "&a";
|
||||
} else {
|
||||
color = "&7";
|
||||
}
|
||||
string.append("&8[&7#" + (x + 1) + "&8][&7" + c.world + ";" + c.id + "&8][&6" + c.senderName + "&8]" + color + c.comment + "\n");
|
||||
string.append(
|
||||
"&8[&7#" + (x + 1) + "&8][&7" + comment.world + ";" + comment.id + "&8][&6" + comment.senderName + "&8]" + color + comment.comment
|
||||
+ "\n");
|
||||
}
|
||||
MainUtil.sendMessage(player, string.toString());
|
||||
}
|
||||
|
@ -38,7 +38,7 @@ import com.plotsquared.general.commands.CommandDeclaration;
|
||||
description = "Player music in a plot",
|
||||
usage = "/plot music",
|
||||
category = CommandCategory.APPEARANCE,
|
||||
requiredType = RequiredType.NONE)
|
||||
requiredType = RequiredType.PLAYER)
|
||||
public class Music extends SubCommand {
|
||||
|
||||
@Override
|
||||
|
@ -21,6 +21,7 @@
|
||||
package com.intellectualcrafters.plot.commands;
|
||||
|
||||
import com.intellectualcrafters.configuration.ConfigurationSection;
|
||||
import com.intellectualcrafters.configuration.InvalidConfigurationException;
|
||||
import com.intellectualcrafters.configuration.file.YamlConfiguration;
|
||||
import com.intellectualcrafters.plot.PS;
|
||||
import com.intellectualcrafters.plot.config.C;
|
||||
@ -158,7 +159,7 @@ public class Template extends SubCommand {
|
||||
try {
|
||||
PS.get().config.save(PS.get().configFile);
|
||||
PS.get().config.load(PS.get().configFile);
|
||||
} catch (Exception e) {
|
||||
} catch (InvalidConfigurationException | IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
String manager = worldConfig.getString("generator.plugin", "PlotSquared");
|
||||
|
@ -113,8 +113,8 @@ public class Trim extends SubCommand {
|
||||
}
|
||||
|
||||
/**
|
||||
* Runs the result task with the parameters (viable, nonViable).<br>
|
||||
* @param world
|
||||
* Runs the result task with the parameters (viable, nonViable).
|
||||
* @param world The world
|
||||
* @param result (viable = .mcr to trim, nonViable = .mcr keep)
|
||||
* @return
|
||||
*/
|
||||
|
@ -38,7 +38,7 @@ import java.util.UUID;
|
||||
aliases = {"ud"},
|
||||
description = "Remove a denied user from a plot",
|
||||
usage = "/plot undeny <player>",
|
||||
requiredType = RequiredType.NONE,
|
||||
requiredType = RequiredType.PLAYER,
|
||||
category = CommandCategory.SETTINGS)
|
||||
public class Undeny extends SubCommand {
|
||||
|
||||
|
@ -37,7 +37,7 @@ import com.plotsquared.general.commands.CommandDeclaration;
|
||||
usage = "/plot unlink",
|
||||
requiredType = RequiredType.NONE,
|
||||
category = CommandCategory.SETTINGS,
|
||||
confirmation=true)
|
||||
confirmation = true)
|
||||
public class Unlink extends SubCommand {
|
||||
|
||||
@Override
|
||||
|
@ -41,7 +41,7 @@ import java.util.UUID;
|
||||
permission = "plots.untrust",
|
||||
description = "Remove a trusted user from a plot",
|
||||
usage = "/plot untrust <player>",
|
||||
requiredType = RequiredType.NONE,
|
||||
requiredType = RequiredType.PLAYER,
|
||||
category = CommandCategory.SETTINGS)
|
||||
public class Untrust extends SubCommand {
|
||||
|
||||
|
@ -44,7 +44,7 @@ import java.util.UUID;
|
||||
description = "Visit someones plot",
|
||||
usage = "/plot visit [player|alias|world|id] [#]",
|
||||
aliases = {"v", "tp", "teleport", "goto", "home", "h"},
|
||||
requiredType = RequiredType.NONE,
|
||||
requiredType = RequiredType.PLAYER,
|
||||
category = CommandCategory.TELEPORT)
|
||||
public class Visit extends SubCommand {
|
||||
|
||||
|
@ -218,7 +218,7 @@ public class Configuration {
|
||||
/**
|
||||
* Create your own SettingValue object to make the management of plotworld configuration easier
|
||||
*/
|
||||
public static abstract class SettingValue<T> {
|
||||
public abstract static class SettingValue<T> {
|
||||
|
||||
private final String type;
|
||||
|
||||
|
@ -20,81 +20,81 @@
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
package com.intellectualcrafters.plot.config;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import com.intellectualcrafters.plot.config.Configuration.SettingValue;
|
||||
import com.intellectualcrafters.plot.object.PlotBlock;
|
||||
import com.intellectualcrafters.plot.util.StringMan;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Configuration Node
|
||||
*
|
||||
* Configuration Node.
|
||||
*/
|
||||
public class ConfigurationNode {
|
||||
|
||||
private final String constant;
|
||||
private final Object default_value;
|
||||
private final Object defaultValue;
|
||||
private final String description;
|
||||
private final SettingValue type;
|
||||
private Object value;
|
||||
|
||||
public ConfigurationNode(final String constant, final Object default_value, final String description, final SettingValue type, final boolean required) {
|
||||
|
||||
public ConfigurationNode(String constant, Object defaultValue, String description, SettingValue type, boolean required) {
|
||||
this.constant = constant;
|
||||
this.default_value = default_value;
|
||||
this.defaultValue = defaultValue;
|
||||
this.description = description;
|
||||
value = default_value;
|
||||
this.value = defaultValue;
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
|
||||
public SettingValue getType() {
|
||||
return type;
|
||||
return this.type;
|
||||
}
|
||||
|
||||
public boolean isValid(final String string) {
|
||||
|
||||
public boolean isValid(String string) {
|
||||
try {
|
||||
final Object result = type.parseString(string);
|
||||
Object result = this.type.parseString(string);
|
||||
return result != null;
|
||||
} catch (final Exception e) {
|
||||
} catch (Exception e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean setValue(final String string) {
|
||||
if (!type.validateValue(string)) {
|
||||
|
||||
public boolean setValue(String string) {
|
||||
if (!this.type.validateValue(string)) {
|
||||
return false;
|
||||
}
|
||||
value = type.parseString(string);
|
||||
this.value = this.type.parseString(string);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
public Object getValue() {
|
||||
if (value instanceof String[]) {
|
||||
return Arrays.asList((String[]) value);
|
||||
} else if (value instanceof Object[]) {
|
||||
final List<String> values = new ArrayList<String>();
|
||||
for (final Object value : (Object[]) this.value) {
|
||||
if (this.value instanceof String[]) {
|
||||
return Arrays.asList((String[]) this.value);
|
||||
} else if (this.value instanceof Object[]) {
|
||||
List<String> values = new ArrayList<String>();
|
||||
for (Object value : (Object[]) this.value) {
|
||||
values.add(value.toString());
|
||||
}
|
||||
return values;
|
||||
} else if (value instanceof PlotBlock) {
|
||||
return value.toString();
|
||||
} else if (this.value instanceof PlotBlock) {
|
||||
return this.value.toString();
|
||||
}
|
||||
return value;
|
||||
return this.value;
|
||||
}
|
||||
|
||||
|
||||
public String getConstant() {
|
||||
return constant;
|
||||
return this.constant;
|
||||
}
|
||||
|
||||
|
||||
public Object getDefaultValue() {
|
||||
if (default_value instanceof Object[]) {
|
||||
return StringMan.join((Object[]) default_value, ",");
|
||||
if (this.defaultValue instanceof Object[]) {
|
||||
return StringMan.join((Object[]) this.defaultValue, ",");
|
||||
}
|
||||
return default_value;
|
||||
return this.defaultValue;
|
||||
}
|
||||
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
return this.description;
|
||||
}
|
||||
}
|
||||
|
@ -44,7 +44,7 @@ import java.util.UUID;
|
||||
*/
|
||||
public class DBFunc {
|
||||
/**
|
||||
* The "global" uuid
|
||||
* The "global" uuid.
|
||||
*/
|
||||
public static final UUID everyone = UUID.fromString("1-1-3-3-7");
|
||||
/**
|
||||
|
@ -267,35 +267,35 @@ public class ClassicPlotManager extends SquarePlotManager {
|
||||
}
|
||||
|
||||
/**
|
||||
* PLOT MERGING
|
||||
* PLOT MERGING.
|
||||
*/
|
||||
@Override
|
||||
public boolean createRoadEast(PlotArea plotworld, Plot plot) {
|
||||
ClassicPlotWorld dpw = (ClassicPlotWorld) plotworld;
|
||||
Location pos1 = getPlotBottomLocAbs(plotworld, plot.getId());
|
||||
Location pos2 = getPlotTopLocAbs(plotworld, plot.getId());
|
||||
public boolean createRoadEast(PlotArea plotArea, Plot plot) {
|
||||
ClassicPlotWorld dpw = (ClassicPlotWorld) plotArea;
|
||||
Location pos1 = getPlotBottomLocAbs(plotArea, plot.getId());
|
||||
Location pos2 = getPlotTopLocAbs(plotArea, plot.getId());
|
||||
int sx = pos2.getX() + 1;
|
||||
int ex = sx + dpw.ROAD_WIDTH - 1;
|
||||
int sz = pos1.getZ() - 2;
|
||||
int ez = pos2.getZ() + 2;
|
||||
MainUtil.setSimpleCuboidAsync(plotworld.worldname,
|
||||
new Location(plotworld.worldname, sx, Math.min(dpw.WALL_HEIGHT, dpw.ROAD_HEIGHT) + 1, sz + 1),
|
||||
new Location(plotworld.worldname, ex, 255, ez - 1), new PlotBlock((short) 0, (byte) 0));
|
||||
MainUtil.setSimpleCuboidAsync(plotworld.worldname, new Location(plotworld.worldname, sx, 0, sz + 1),
|
||||
new Location(plotworld.worldname, ex, 0, ez - 1), new PlotBlock((short) 7,
|
||||
MainUtil.setSimpleCuboidAsync(plotArea.worldname,
|
||||
new Location(plotArea.worldname, sx, Math.min(dpw.WALL_HEIGHT, dpw.ROAD_HEIGHT) + 1, sz + 1),
|
||||
new Location(plotArea.worldname, ex, 255, ez - 1), new PlotBlock((short) 0, (byte) 0));
|
||||
MainUtil.setSimpleCuboidAsync(plotArea.worldname, new Location(plotArea.worldname, sx, 0, sz + 1),
|
||||
new Location(plotArea.worldname, ex, 0, ez - 1), new PlotBlock((short) 7,
|
||||
(byte) 0));
|
||||
MainUtil.setSimpleCuboidAsync(plotworld.worldname, new Location(plotworld.worldname, sx, 1, sz + 1),
|
||||
new Location(plotworld.worldname, sx, dpw.WALL_HEIGHT, ez - 1), dpw.WALL_FILLING);
|
||||
MainUtil.setSimpleCuboidAsync(plotworld.worldname, new Location(plotworld.worldname, sx, dpw.WALL_HEIGHT + 1, sz + 1),
|
||||
new Location(plotworld.worldname, sx, dpw.WALL_HEIGHT + 1, ez - 1),
|
||||
MainUtil.setSimpleCuboidAsync(plotArea.worldname, new Location(plotArea.worldname, sx, 1, sz + 1),
|
||||
new Location(plotArea.worldname, sx, dpw.WALL_HEIGHT, ez - 1), dpw.WALL_FILLING);
|
||||
MainUtil.setSimpleCuboidAsync(plotArea.worldname, new Location(plotArea.worldname, sx, dpw.WALL_HEIGHT + 1, sz + 1),
|
||||
new Location(plotArea.worldname, sx, dpw.WALL_HEIGHT + 1, ez - 1),
|
||||
dpw.WALL_BLOCK);
|
||||
MainUtil.setSimpleCuboidAsync(plotworld.worldname, new Location(plotworld.worldname, ex, 1, sz + 1),
|
||||
new Location(plotworld.worldname, ex, dpw.WALL_HEIGHT, ez - 1), dpw.WALL_FILLING);
|
||||
MainUtil.setSimpleCuboidAsync(plotworld.worldname, new Location(plotworld.worldname, ex, dpw.WALL_HEIGHT + 1, sz + 1),
|
||||
new Location(plotworld.worldname, ex, dpw.WALL_HEIGHT + 1, ez - 1),
|
||||
MainUtil.setSimpleCuboidAsync(plotArea.worldname, new Location(plotArea.worldname, ex, 1, sz + 1),
|
||||
new Location(plotArea.worldname, ex, dpw.WALL_HEIGHT, ez - 1), dpw.WALL_FILLING);
|
||||
MainUtil.setSimpleCuboidAsync(plotArea.worldname, new Location(plotArea.worldname, ex, dpw.WALL_HEIGHT + 1, sz + 1),
|
||||
new Location(plotArea.worldname, ex, dpw.WALL_HEIGHT + 1, ez - 1),
|
||||
dpw.WALL_BLOCK);
|
||||
MainUtil.setSimpleCuboidAsync(plotworld.worldname, new Location(plotworld.worldname, sx + 1, 1, sz + 1),
|
||||
new Location(plotworld.worldname, ex - 1, dpw.ROAD_HEIGHT, ez - 1), dpw.ROAD_BLOCK);
|
||||
MainUtil.setSimpleCuboidAsync(plotArea.worldname, new Location(plotArea.worldname, sx + 1, 1, sz + 1),
|
||||
new Location(plotArea.worldname, ex - 1, dpw.ROAD_HEIGHT, ez - 1), dpw.ROAD_BLOCK);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -400,7 +400,7 @@ public class ClassicPlotManager extends SquarePlotManager {
|
||||
}
|
||||
|
||||
/**
|
||||
* Finishing off plot merging by adding in the walls surrounding the plot (OPTIONAL)(UNFINISHED)
|
||||
* Finishing off plot merging by adding in the walls surrounding the plot (OPTIONAL)(UNFINISHED).
|
||||
*/
|
||||
@Override
|
||||
public boolean finishPlotMerge(PlotArea plotworld, ArrayList<PlotId> plotIds) {
|
||||
|
@ -72,16 +72,16 @@ public class HybridPlotManager extends ClassicPlotManager {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean createRoadEast(PlotArea plotworld, Plot plot) {
|
||||
super.createRoadEast(plotworld, plot);
|
||||
HybridPlotWorld hpw = (HybridPlotWorld) plotworld;
|
||||
public boolean createRoadEast(PlotArea plotArea, Plot plot) {
|
||||
super.createRoadEast(plotArea, plot);
|
||||
HybridPlotWorld hpw = (HybridPlotWorld) plotArea;
|
||||
PlotId id = plot.getId();
|
||||
PlotId id2 = new PlotId(id.x + 1, id.y);
|
||||
Location bot = getPlotBottomLocAbs(hpw, id2);
|
||||
Location top = getPlotTopLocAbs(hpw, id);
|
||||
Location pos1 = new Location(plotworld.worldname, top.getX() + 1, 0, bot.getZ() - 1);
|
||||
Location pos2 = new Location(plotworld.worldname, bot.getX(), 255, top.getZ() + 1);
|
||||
MainUtil.resetBiome(plotworld, pos1, pos2);
|
||||
Location pos1 = new Location(plotArea.worldname, top.getX() + 1, 0, bot.getZ() - 1);
|
||||
Location pos2 = new Location(plotArea.worldname, bot.getX(), 255, top.getZ() + 1);
|
||||
MainUtil.resetBiome(plotArea, pos1, pos2);
|
||||
if (!hpw.ROAD_SCHEMATIC_ENABLED) {
|
||||
return true;
|
||||
}
|
||||
|
@ -47,8 +47,8 @@ public class HybridPlotWorld extends ClassicPlotWorld {
|
||||
public HashMap<Integer, HashMap<Integer, PlotBlock>> G_SCH;
|
||||
public HashMap<Integer, HashSet<PlotItem>> G_SCH_STATE;
|
||||
|
||||
public HybridPlotWorld(String worldname, String id, IndependentPlotGenerator generator, PlotId min, PlotId max) {
|
||||
super(worldname, id, generator, min, max);
|
||||
public HybridPlotWorld(String worldName, String id, IndependentPlotGenerator generator, PlotId min, PlotId max) {
|
||||
super(worldName, id, generator, min, max);
|
||||
}
|
||||
|
||||
public static byte wrap(byte data, int start) {
|
||||
|
@ -6,6 +6,7 @@ import com.intellectualcrafters.plot.object.PlotManager;
|
||||
import com.intellectualcrafters.plot.object.SetupObject;
|
||||
|
||||
public abstract class PlotGenerator<T> {
|
||||
|
||||
public T generator;
|
||||
|
||||
public PlotGenerator(T generator) {
|
||||
@ -13,7 +14,7 @@ public abstract class PlotGenerator<T> {
|
||||
}
|
||||
|
||||
public abstract void initialize(PlotArea plotworld);
|
||||
|
||||
|
||||
/**
|
||||
* TYPE = 2;
|
||||
* new AugmentedPopulator(world, generator, cluster, plotWorld.TERRAIN == 2, plotWorld.TERRAIN != 2);
|
||||
@ -24,11 +25,11 @@ public abstract class PlotGenerator<T> {
|
||||
public abstract void augment(PlotArea area);
|
||||
|
||||
public abstract PlotArea getNewPlotArea(String world, String id, PlotId min, PlotId max);
|
||||
|
||||
|
||||
public abstract PlotManager getPlotManager();
|
||||
|
||||
|
||||
public abstract boolean isFull();
|
||||
|
||||
|
||||
public abstract String getName();
|
||||
|
||||
public abstract void processSetup(SetupObject object);
|
||||
|
@ -183,15 +183,15 @@ public abstract class SquarePlotManager extends GridPlotManager {
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the bottom plot loc (some basic math)
|
||||
* Get the bottom plot loc (some basic math).
|
||||
*/
|
||||
@Override
|
||||
public Location getPlotBottomLocAbs(PlotArea plotworld, PlotId plotid) {
|
||||
SquarePlotWorld dpw = (SquarePlotWorld) plotworld;
|
||||
int px = plotid.x;
|
||||
int pz = plotid.y;
|
||||
public Location getPlotBottomLocAbs(PlotArea plotArea, PlotId plotId) {
|
||||
SquarePlotWorld dpw = (SquarePlotWorld) plotArea;
|
||||
int px = plotId.x;
|
||||
int pz = plotId.y;
|
||||
int x = (dpw.ROAD_OFFSET_X + (px * (dpw.ROAD_WIDTH + dpw.PLOT_WIDTH))) - dpw.PLOT_WIDTH - (int) Math.floor(dpw.ROAD_WIDTH / 2);
|
||||
int z = (dpw.ROAD_OFFSET_Z + (pz * (dpw.ROAD_WIDTH + dpw.PLOT_WIDTH))) - dpw.PLOT_WIDTH - (int) Math.floor(dpw.ROAD_WIDTH / 2);
|
||||
return new Location(plotworld.worldname, x, plotworld.MIN_BUILD_HEIGHT, z);
|
||||
return new Location(plotArea.worldname, x, plotArea.MIN_BUILD_HEIGHT, z);
|
||||
}
|
||||
}
|
||||
|
@ -158,12 +158,13 @@ public class PlotSettings {
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the "farewell" flag value
|
||||
* Get the "farewell" flag value.
|
||||
*
|
||||
* @param plotArea The PlotArea
|
||||
* @return Farewell flag
|
||||
*/
|
||||
public String getLeaveMessage(PlotArea area) {
|
||||
Flag farewell = FlagManager.getSettingFlag(area, this, "farewell");
|
||||
public String getLeaveMessage(PlotArea plotArea) {
|
||||
Flag farewell = FlagManager.getSettingFlag(plotArea, this, "farewell");
|
||||
if (farewell != null) {
|
||||
return farewell.getValueString();
|
||||
}
|
||||
|
@ -6,23 +6,23 @@ public class PseudoRandom {
|
||||
public long state = System.nanoTime();
|
||||
|
||||
public long nextLong() {
|
||||
final long a = state;
|
||||
state = xorShift64(a);
|
||||
long a = this.state;
|
||||
this.state = xorShift64(a);
|
||||
return a;
|
||||
}
|
||||
|
||||
public long xorShift64(long a) {
|
||||
a ^= (a << 21);
|
||||
a ^= (a >>> 35);
|
||||
a ^= (a << 4);
|
||||
a ^= a << 21;
|
||||
a ^= a >>> 35;
|
||||
a ^= a << 4;
|
||||
return a;
|
||||
}
|
||||
|
||||
public int random(final int n) {
|
||||
|
||||
public int random(int n) {
|
||||
if (n == 1) {
|
||||
return 0;
|
||||
}
|
||||
final long r = ((nextLong() >>> 32) * n) >> 32;
|
||||
long r = ((nextLong() >>> 32) * n) >> 32;
|
||||
return (int) r;
|
||||
}
|
||||
}
|
||||
|
@ -20,20 +20,23 @@
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
package com.intellectualcrafters.plot.object;
|
||||
|
||||
/**
|
||||
/**
|
||||
|
||||
*/
|
||||
public class StringWrapper {
|
||||
|
||||
public final String value;
|
||||
|
||||
private int hash;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param value to wrap
|
||||
*/
|
||||
public StringWrapper(final String value) {
|
||||
public StringWrapper(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check if a wrapped string equals another one
|
||||
*
|
||||
@ -42,7 +45,7 @@ public class StringWrapper {
|
||||
* @return true if obj equals the stored value
|
||||
*/
|
||||
@Override
|
||||
public boolean equals(final Object obj) {
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) {
|
||||
return true;
|
||||
}
|
||||
@ -55,38 +58,36 @@ public class StringWrapper {
|
||||
if (obj.hashCode() != hashCode()) {
|
||||
return false;
|
||||
}
|
||||
final StringWrapper other = (StringWrapper) obj;
|
||||
if ((other.value == null) || (value == null)) {
|
||||
StringWrapper other = (StringWrapper) obj;
|
||||
if ((other.value == null) || (this.value == null)) {
|
||||
return false;
|
||||
}
|
||||
return other.value.equalsIgnoreCase(value.toLowerCase());
|
||||
return other.value.equalsIgnoreCase(this.value.toLowerCase());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the string value
|
||||
* Get the string value.
|
||||
*
|
||||
* @return string value
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
return value;
|
||||
return this.value;
|
||||
}
|
||||
|
||||
private int hash;
|
||||
|
||||
|
||||
/**
|
||||
* Get the hash value
|
||||
* Get the hash value.
|
||||
*
|
||||
* @return has value
|
||||
*/
|
||||
@Override
|
||||
public int hashCode() {
|
||||
if (value == null) {
|
||||
if (this.value == null) {
|
||||
return 0;
|
||||
}
|
||||
if (hash == 0) {
|
||||
hash = value.toLowerCase().hashCode();
|
||||
if (this.hash == 0) {
|
||||
this.hash = this.value.toLowerCase().hashCode();
|
||||
}
|
||||
return hash;
|
||||
return this.hash;
|
||||
}
|
||||
}
|
||||
|
@ -1,21 +1,21 @@
|
||||
package com.intellectualcrafters.plot.object.comment;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.intellectualcrafters.plot.object.Plot;
|
||||
import com.intellectualcrafters.plot.object.PlotPlayer;
|
||||
import com.intellectualcrafters.plot.object.RunnableVal;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public abstract class CommentInbox {
|
||||
|
||||
@Override
|
||||
public abstract String toString();
|
||||
|
||||
public abstract boolean canRead(final Plot plot, final PlotPlayer player);
|
||||
|
||||
public abstract boolean canWrite(final Plot plot, final PlotPlayer player);
|
||||
|
||||
public abstract boolean canModify(final Plot plot, final PlotPlayer player);
|
||||
|
||||
public abstract boolean canRead(Plot plot, PlotPlayer player);
|
||||
|
||||
public abstract boolean canWrite(Plot plot, PlotPlayer player);
|
||||
|
||||
public abstract boolean canModify(Plot plot, PlotPlayer player);
|
||||
|
||||
/**
|
||||
* The plot may be null if the user is not standing in a plot. Return false if this is not a plot-less inbox.
|
||||
@ -27,11 +27,11 @@ public abstract class CommentInbox {
|
||||
* @param whenDone
|
||||
* @return
|
||||
*/
|
||||
public abstract boolean getComments(final Plot plot, final RunnableVal<List<PlotComment>> whenDone);
|
||||
|
||||
public abstract boolean addComment(final Plot plot, final PlotComment comment);
|
||||
|
||||
public abstract boolean removeComment(final Plot plot, final PlotComment comment);
|
||||
|
||||
public abstract boolean clearInbox(final Plot plot);
|
||||
public abstract boolean getComments(Plot plot, RunnableVal<List<PlotComment>> whenDone);
|
||||
|
||||
public abstract boolean addComment(Plot plot, PlotComment comment);
|
||||
|
||||
public abstract boolean removeComment(Plot plot, PlotComment comment);
|
||||
|
||||
public abstract boolean clearInbox(Plot plot);
|
||||
}
|
||||
|
@ -13,7 +13,7 @@ import java.util.List;
|
||||
public class InboxOwner extends CommentInbox {
|
||||
|
||||
@Override
|
||||
public boolean canRead(final Plot plot, final PlotPlayer player) {
|
||||
public boolean canRead(Plot plot, PlotPlayer player) {
|
||||
if (plot == null) {
|
||||
return Permissions.hasPermission(player, "plots.inbox.read." + toString());
|
||||
}
|
||||
@ -24,7 +24,7 @@ public class InboxOwner extends CommentInbox {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canWrite(final Plot plot, final PlotPlayer player) {
|
||||
public boolean canWrite(Plot plot, PlotPlayer player) {
|
||||
if (plot == null) {
|
||||
return Permissions.hasPermission(player, "plots.inbox.write." + toString());
|
||||
}
|
||||
@ -35,7 +35,7 @@ public class InboxOwner extends CommentInbox {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canModify(final Plot plot, final PlotPlayer player) {
|
||||
public boolean canModify(Plot plot, PlotPlayer player) {
|
||||
if (plot == null) {
|
||||
return Permissions.hasPermission(player, "plots.inbox.modify." + toString());
|
||||
}
|
||||
@ -50,7 +50,7 @@ public class InboxOwner extends CommentInbox {
|
||||
if ((plot == null) || (plot.owner == null)) {
|
||||
return false;
|
||||
}
|
||||
final ArrayList<PlotComment> comments = plot.getSettings().getComments(toString());
|
||||
ArrayList<PlotComment> comments = plot.getSettings().getComments(toString());
|
||||
if (comments != null) {
|
||||
whenDone.value = comments;
|
||||
TaskManager.runTask(whenDone);
|
||||
@ -61,7 +61,7 @@ public class InboxOwner extends CommentInbox {
|
||||
public void run(List<PlotComment> value) {
|
||||
whenDone.value = value;
|
||||
if (value != null) {
|
||||
for (final PlotComment comment : value) {
|
||||
for (PlotComment comment : value) {
|
||||
plot.getSettings().addComment(comment);
|
||||
}
|
||||
} else {
|
||||
@ -74,7 +74,7 @@ public class InboxOwner extends CommentInbox {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addComment(final Plot plot, final PlotComment comment) {
|
||||
public boolean addComment(Plot plot, PlotComment comment) {
|
||||
if ((plot == null) || (plot.owner == null)) {
|
||||
return false;
|
||||
}
|
||||
@ -89,7 +89,7 @@ public class InboxOwner extends CommentInbox {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean removeComment(final Plot plot, final PlotComment comment) {
|
||||
public boolean removeComment(Plot plot, PlotComment comment) {
|
||||
if ((plot == null) || (plot.owner == null)) {
|
||||
return false;
|
||||
}
|
||||
@ -98,11 +98,11 @@ public class InboxOwner extends CommentInbox {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean clearInbox(final Plot plot) {
|
||||
if ((plot == null) || (plot.owner == null)) {
|
||||
public boolean clearInbox(Plot plot) {
|
||||
if (plot == null || plot.owner == null) {
|
||||
return false;
|
||||
}
|
||||
DBFunc.clearInbox(plot, toString());
|
||||
DBFunc.clearInbox(plot, this.toString());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -13,7 +13,7 @@ import java.util.List;
|
||||
public class InboxPublic extends CommentInbox {
|
||||
|
||||
@Override
|
||||
public boolean canRead(final Plot plot, final PlotPlayer player) {
|
||||
public boolean canRead(Plot plot, PlotPlayer player) {
|
||||
if (plot == null) {
|
||||
return Permissions.hasPermission(player, "plots.inbox.read." + toString());
|
||||
}
|
||||
@ -24,25 +24,21 @@ public class InboxPublic extends CommentInbox {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canWrite(final Plot plot, final PlotPlayer player) {
|
||||
public boolean canWrite(Plot plot, PlotPlayer player) {
|
||||
if (plot == null) {
|
||||
return Permissions.hasPermission(player, "plots.inbox.write." + toString());
|
||||
}
|
||||
return Permissions.hasPermission(player, "plots.inbox.write." + toString()) && (plot.isOwner(player.getUUID()) || Permissions
|
||||
.hasPermission(player, "plots.inbox.write."
|
||||
+ toString()
|
||||
+ ".other"));
|
||||
.hasPermission(player, "plots.inbox.write." + toString() + ".other"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canModify(final Plot plot, final PlotPlayer player) {
|
||||
public boolean canModify(Plot plot, PlotPlayer player) {
|
||||
if (plot == null) {
|
||||
return Permissions.hasPermission(player, "plots.inbox.modify." + toString());
|
||||
}
|
||||
return Permissions.hasPermission(player, "plots.inbox.modify." + toString()) && (plot.isOwner(player.getUUID()) || Permissions
|
||||
.hasPermission(player, "plots.inbox.modify."
|
||||
+ toString()
|
||||
+ ".other"));
|
||||
.hasPermission(player, "plots.inbox.modify." + toString() + ".other"));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -50,7 +46,7 @@ public class InboxPublic extends CommentInbox {
|
||||
if ((plot == null) || (plot.owner == null)) {
|
||||
return false;
|
||||
}
|
||||
final ArrayList<PlotComment> comments = plot.getSettings().getComments(toString());
|
||||
ArrayList<PlotComment> comments = plot.getSettings().getComments(toString());
|
||||
if (comments != null) {
|
||||
whenDone.value = comments;
|
||||
TaskManager.runTask(whenDone);
|
||||
@ -61,7 +57,7 @@ public class InboxPublic extends CommentInbox {
|
||||
public void run(List<PlotComment> value) {
|
||||
whenDone.value = value;
|
||||
if (value != null) {
|
||||
for (final PlotComment comment : value) {
|
||||
for (PlotComment comment : value) {
|
||||
plot.getSettings().addComment(comment);
|
||||
}
|
||||
}
|
||||
@ -72,7 +68,7 @@ public class InboxPublic extends CommentInbox {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addComment(final Plot plot, final PlotComment comment) {
|
||||
public boolean addComment(Plot plot, PlotComment comment) {
|
||||
if ((plot == null) || (plot.owner == null)) {
|
||||
return false;
|
||||
}
|
||||
@ -87,7 +83,7 @@ public class InboxPublic extends CommentInbox {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean removeComment(final Plot plot, final PlotComment comment) {
|
||||
public boolean removeComment(Plot plot, PlotComment comment) {
|
||||
if ((plot == null) || (plot.owner == null)) {
|
||||
return false;
|
||||
}
|
||||
@ -96,11 +92,11 @@ public class InboxPublic extends CommentInbox {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean clearInbox(final Plot plot) {
|
||||
if ((plot == null) || (plot.owner == null)) {
|
||||
public boolean clearInbox(Plot plot) {
|
||||
if (plot == null || plot.owner == null) {
|
||||
return false;
|
||||
}
|
||||
DBFunc.clearInbox(plot, toString());
|
||||
DBFunc.clearInbox(plot, this.toString());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -75,10 +75,10 @@ public class InboxReport extends CommentInbox {
|
||||
|
||||
@Override
|
||||
public boolean clearInbox(Plot plot) {
|
||||
if ((plot == null) || (plot.owner == null)) {
|
||||
if (plot == null || plot.owner == null) {
|
||||
return false;
|
||||
}
|
||||
DBFunc.clearInbox(plot, toString());
|
||||
DBFunc.clearInbox(plot, this.toString());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -22,8 +22,6 @@ package com.intellectualcrafters.plot.object.comment;
|
||||
|
||||
import com.intellectualcrafters.plot.object.PlotId;
|
||||
|
||||
/**
|
||||
*/
|
||||
public class PlotComment {
|
||||
public final String comment;
|
||||
public final String inbox;
|
||||
@ -31,8 +29,8 @@ public class PlotComment {
|
||||
public final PlotId id;
|
||||
public final String world;
|
||||
public final long timestamp;
|
||||
|
||||
public PlotComment(final String world, final PlotId id, final String comment, final String senderName, final String inbox, final long timestamp) {
|
||||
|
||||
public PlotComment(String world, PlotId id, String comment, String senderName, String inbox, long timestamp) {
|
||||
this.world = world;
|
||||
this.id = id;
|
||||
this.comment = comment;
|
||||
|
@ -7,8 +7,8 @@ public class PlotItem {
|
||||
public short[] id;
|
||||
public byte[] data;
|
||||
public byte[] amount;
|
||||
|
||||
public PlotItem(final short x, final short y, final short z, final short[] id, final byte[] data, final byte[] amount) {
|
||||
|
||||
public PlotItem(short x, short y, short z, short[] id, byte[] data, byte[] amount) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.z = z;
|
||||
|
@ -21,10 +21,7 @@ public class CommentManager {
|
||||
public static HashMap<String, CommentInbox> inboxes = new HashMap<>();
|
||||
|
||||
public static void sendTitle(final PlotPlayer player, final Plot plot) {
|
||||
if (!Settings.COMMENT_NOTIFICATIONS) {
|
||||
return;
|
||||
}
|
||||
if (!plot.isOwner(player.getUUID())) {
|
||||
if (!Settings.COMMENT_NOTIFICATIONS || !plot.isOwner(player.getUUID())) {
|
||||
return;
|
||||
}
|
||||
TaskManager.runTaskLaterAsync(new Runnable() {
|
||||
|
@ -317,7 +317,7 @@ public class MainUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the name from a UUID<br>
|
||||
* Get the name from a UUID.
|
||||
* @param owner
|
||||
* @return The player's name, None, Everyone or Unknown
|
||||
*/
|
||||
@ -335,7 +335,7 @@ public class MainUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the corner locations for a list of regions<br>
|
||||
* Get the corner locations for a list of regions.
|
||||
* @see Plot#getCorners()
|
||||
* @param world
|
||||
* @param regions
|
||||
@ -514,7 +514,7 @@ public class MainUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* Resend the chunk at a location
|
||||
* Resend the chunk at a location.
|
||||
* @param world
|
||||
* @param loc
|
||||
*/
|
||||
@ -530,7 +530,7 @@ public class MainUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a cuboid asynchronously to a set of blocks
|
||||
* Set a cuboid asynchronously to a set of blocks.
|
||||
* @param world
|
||||
* @param pos1
|
||||
* @param pos2
|
||||
@ -599,19 +599,19 @@ public class MainUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a message to the player
|
||||
* Send a message to the player.
|
||||
*
|
||||
* @param plr Player to receive message
|
||||
* @param player Player to receive message
|
||||
* @param msg Message to send
|
||||
*
|
||||
* @return true Can be used in things such as commands (return PlayerFunctions.sendMessage(...))
|
||||
*/
|
||||
public static boolean sendMessage(PlotPlayer plr, String msg) {
|
||||
return sendMessage(plr, msg, true);
|
||||
public static boolean sendMessage(PlotPlayer player, String msg) {
|
||||
return sendMessage(player, msg, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a message to console
|
||||
* Send a message to console.
|
||||
* @param caption
|
||||
* @param args
|
||||
*/
|
||||
@ -621,17 +621,17 @@ public class MainUtil {
|
||||
|
||||
/**
|
||||
* Send a message to a player.
|
||||
* @param plr Can be null to represent console, or use ConsolePlayer.getConsole()
|
||||
* @param player Can be null to represent console, or use ConsolePlayer.getConsole()
|
||||
* @param msg
|
||||
* @param prefix If the message should be prefixed with the configured prefix
|
||||
* @return
|
||||
*/
|
||||
public static boolean sendMessage(PlotPlayer plr, String msg, boolean prefix) {
|
||||
public static boolean sendMessage(PlotPlayer player, String msg, boolean prefix) {
|
||||
if (!msg.isEmpty()) {
|
||||
if (plr == null) {
|
||||
if (player == null) {
|
||||
ConsolePlayer.getConsole().sendMessage((prefix ? C.PREFIX.s() : "") + msg);
|
||||
} else {
|
||||
plr.sendMessage((prefix ? C.PREFIX.s() : "") + C.color(msg));
|
||||
player.sendMessage((prefix ? C.PREFIX.s() : "") + C.color(msg));
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
@ -54,25 +54,25 @@ public abstract class SchematicHandler {
|
||||
public static SchematicHandler manager;
|
||||
|
||||
private boolean exportAll = false;
|
||||
|
||||
public boolean exportAll(final Collection<Plot> collection, final File outputDir, final String namingScheme, final Runnable ifSuccess) {
|
||||
if (exportAll) {
|
||||
|
||||
public boolean exportAll(Collection<Plot> collection, final File outputDir, final String namingScheme, final Runnable ifSuccess) {
|
||||
if (this.exportAll) {
|
||||
return false;
|
||||
}
|
||||
if (collection.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
exportAll = true;
|
||||
this.exportAll = true;
|
||||
final ArrayList<Plot> plots = new ArrayList<>(collection);
|
||||
TaskManager.runTask(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (plots.isEmpty()) {
|
||||
exportAll = false;
|
||||
SchematicHandler.this.exportAll = false;
|
||||
TaskManager.runTask(ifSuccess);
|
||||
return;
|
||||
}
|
||||
final Iterator<Plot> i = plots.iterator();
|
||||
Iterator<Plot> i = plots.iterator();
|
||||
final Plot plot = i.next();
|
||||
i.remove();
|
||||
String o = UUIDHandler.getName(plot.owner);
|
||||
@ -103,7 +103,7 @@ public abstract class SchematicHandler {
|
||||
@Override
|
||||
public void run() {
|
||||
MainUtil.sendMessage(null, "&6ID: " + plot.getId());
|
||||
final boolean result = SchematicHandler.manager.save(value, directory + File.separator + name + ".schematic");
|
||||
boolean result = SchematicHandler.manager.save(value, directory + File.separator + name + ".schematic");
|
||||
if (!result) {
|
||||
MainUtil.sendMessage(null, "&7 - Failed to save &c" + plot.getId());
|
||||
} else {
|
||||
@ -128,16 +128,17 @@ public abstract class SchematicHandler {
|
||||
|
||||
|
||||
/**
|
||||
* Paste a schematic
|
||||
* Paste a schematic.
|
||||
*
|
||||
* @param schematic the schematic object to paste
|
||||
* @param plot plot to paste in
|
||||
* @param x_offset offset x to paste it from plot origin
|
||||
* @param z_offset offset z to paste it from plot origin
|
||||
* @param xOffset offset x to paste it from plot origin
|
||||
* @param zOffset offset z to paste it from plot origin
|
||||
*
|
||||
* @return boolean true if succeeded
|
||||
*/
|
||||
public void paste(final Schematic schematic, final Plot plot, final int x_offset, final int y_offset, final int z_offset, final boolean autoHeight, final RunnableVal<Boolean> whenDone) {
|
||||
public void paste(final Schematic schematic, final Plot plot, final int xOffset, final int yOffset, final int zOffset, final boolean autoHeight,
|
||||
final RunnableVal<Boolean> whenDone) {
|
||||
TaskManager.runTask(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
@ -161,13 +162,13 @@ public abstract class SchematicHandler {
|
||||
}
|
||||
}
|
||||
|
||||
final Dimension demensions = schematic.getSchematicDimension();
|
||||
Dimension demensions = schematic.getSchematicDimension();
|
||||
final int WIDTH = demensions.getX();
|
||||
final int LENGTH = demensions.getZ();
|
||||
final int HEIGHT = demensions.getY();
|
||||
// Validate dimensions
|
||||
RegionWrapper region = plot.getLargestRegion();
|
||||
if (((region.maxX - region.minX + x_offset + 1) < WIDTH) || ((region.maxZ - region.minZ + z_offset + 1) < LENGTH) || (HEIGHT
|
||||
if (((region.maxX - region.minX + xOffset + 1) < WIDTH) || ((region.maxZ - region.minZ + zOffset + 1) < LENGTH) || (HEIGHT
|
||||
> 256)) {
|
||||
PS.debug("Schematic is too large");
|
||||
PS.debug("(" + WIDTH + "," + LENGTH + "," + HEIGHT + ") is bigger than (" + (region.maxX - region.minX) + "," + (region.maxZ - region.minZ) + ",256)");
|
||||
@ -181,21 +182,21 @@ public abstract class SchematicHandler {
|
||||
final int y_offset_actual;
|
||||
if (autoHeight) {
|
||||
if (HEIGHT >= 256) {
|
||||
y_offset_actual = y_offset;
|
||||
y_offset_actual = yOffset;
|
||||
} else {
|
||||
PlotArea pw = plot.getArea();
|
||||
if (pw instanceof ClassicPlotWorld) {
|
||||
y_offset_actual = y_offset + ((ClassicPlotWorld) pw).PLOT_HEIGHT;
|
||||
y_offset_actual = yOffset + ((ClassicPlotWorld) pw).PLOT_HEIGHT;
|
||||
} else {
|
||||
y_offset_actual = y_offset + MainUtil.getHeighestBlock(plot.getArea().worldname, region.minX + 1, region.minZ + 1);
|
||||
y_offset_actual = yOffset + MainUtil.getHeighestBlock(plot.getArea().worldname, region.minX + 1, region.minZ + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
y_offset_actual = y_offset;
|
||||
y_offset_actual = yOffset;
|
||||
}
|
||||
final Location pos1 = new Location(plot.getArea().worldname, region.minX + x_offset, y_offset_actual, region.minZ + z_offset);
|
||||
final Location pos2 = pos1.clone().add(WIDTH - 1, HEIGHT - 1, LENGTH - 1);
|
||||
Location pos1 = new Location(plot.getArea().worldname, region.minX + xOffset, y_offset_actual, region.minZ + zOffset);
|
||||
Location pos2 = pos1.clone().add(WIDTH - 1, HEIGHT - 1, LENGTH - 1);
|
||||
// TODO switch to ChunkManager.chunkTask(pos1, pos2, task, whenDone, allocate);
|
||||
final int p1x = pos1.getX();
|
||||
final int p1z = pos1.getZ();
|
||||
@ -217,9 +218,9 @@ public abstract class SchematicHandler {
|
||||
int count = 0;
|
||||
while (!chunks.isEmpty() && count < 256) {
|
||||
count++;
|
||||
final ChunkLoc chunk = chunks.remove(0);
|
||||
final int x = chunk.x;
|
||||
final int z = chunk.z;
|
||||
ChunkLoc chunk = chunks.remove(0);
|
||||
int x = chunk.x;
|
||||
int z = chunk.z;
|
||||
int xxb = x << 4;
|
||||
int zzb = z << 4;
|
||||
int xxt = xxb + 15;
|
||||
@ -239,18 +240,18 @@ public abstract class SchematicHandler {
|
||||
// Paste schematic here
|
||||
|
||||
for (int ry = 0; ry < Math.min(256, HEIGHT); ry++) {
|
||||
final int yy = y_offset_actual + ry;
|
||||
int yy = y_offset_actual + ry;
|
||||
if (yy > 255) {
|
||||
continue;
|
||||
}
|
||||
final int i1 = ry * WIDTH * LENGTH;
|
||||
int i1 = ry * WIDTH * LENGTH;
|
||||
for (int rz = zzb - p1z; rz <= (zzt - p1z); rz++) {
|
||||
final int i2 = (rz * WIDTH) + i1;
|
||||
int i2 = (rz * WIDTH) + i1;
|
||||
for (int rx = xxb - p1x; rx <= (xxt - p1x); rx++) {
|
||||
final int i = i2 + rx;
|
||||
|
||||
final int xx = p1x + rx;
|
||||
final int zz = p1z + rz;
|
||||
int i = i2 + rx;
|
||||
|
||||
int xx = p1x + rx;
|
||||
int zz = p1z + rz;
|
||||
|
||||
int id = ids[i];
|
||||
|
||||
@ -348,7 +349,7 @@ public abstract class SchematicHandler {
|
||||
SetQueue.IMP.addTask(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
pasteStates(schematic, plot, x_offset, z_offset);
|
||||
pasteStates(schematic, plot, xOffset, zOffset);
|
||||
if (whenDone != null) {
|
||||
whenDone.value = true;
|
||||
whenDone.run();
|
||||
@ -358,66 +359,65 @@ public abstract class SchematicHandler {
|
||||
}
|
||||
}
|
||||
});
|
||||
} catch (final Exception e) {
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
TaskManager.runTask(whenDone);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public boolean pasteStates(final Schematic schematic, final Plot plot, final int x_offset, final int z_offset) {
|
||||
|
||||
public boolean pasteStates(Schematic schematic, Plot plot, int xOffset, int zOffset) {
|
||||
if (schematic == null) {
|
||||
PS.debug("Schematic == null :|");
|
||||
return false;
|
||||
}
|
||||
final HashSet<PlotItem> items = schematic.getItems();
|
||||
HashSet<PlotItem> items = schematic.getItems();
|
||||
if (items == null) {
|
||||
return false;
|
||||
}
|
||||
RegionWrapper region = plot.getLargestRegion();
|
||||
Location l1 = new Location(plot.getArea().worldname, region.minX + x_offset, 1, region.minZ + z_offset);
|
||||
// Location l1 = MainUtil.getPlotBottomLoc(plot.world, plot.getId());
|
||||
final int sy = MainUtil.getHeighestBlock(plot.getArea().worldname, l1.getX() + 1, l1.getZ() + 1);
|
||||
final Dimension demensions = schematic.getSchematicDimension();
|
||||
final int HEIGHT = demensions.getY();
|
||||
if (HEIGHT < 255) {
|
||||
l1 = l1.add(0, sy - 1, 0);
|
||||
Location location = new Location(plot.getArea().worldname, region.minX + xOffset, 1, region.minZ + zOffset);
|
||||
int sy = MainUtil.getHeighestBlock(plot.getArea().worldname, location.getX() + 1, location.getZ() + 1);
|
||||
Dimension demensions = schematic.getSchematicDimension();
|
||||
int height = demensions.getY();
|
||||
if (height < 255) {
|
||||
location = location.add(0, sy - 1, 0);
|
||||
}
|
||||
final int X = l1.getX() + x_offset;
|
||||
final int Y = l1.getY();
|
||||
final int Z = l1.getZ() + z_offset;
|
||||
for (final PlotItem item : items) {
|
||||
item.x += X;
|
||||
item.y += Y;
|
||||
item.z += Z;
|
||||
int x = location.getX() + xOffset;
|
||||
int y = location.getY();
|
||||
int z = location.getZ() + zOffset;
|
||||
for (PlotItem item : items) {
|
||||
item.x += x;
|
||||
item.y += y;
|
||||
item.z += z;
|
||||
WorldUtil.IMP.addItems(plot.getArea().worldname, item);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public Schematic getSchematic(final CompoundTag tag) {
|
||||
final Map<String, Tag> tagMap = tag.getValue();
|
||||
|
||||
public Schematic getSchematic(CompoundTag tag) {
|
||||
Map<String, Tag> tagMap = tag.getValue();
|
||||
// Slow
|
||||
// byte[] addId = new byte[0];
|
||||
// if (tagMap.containsKey("AddBlocks")) {
|
||||
// addId = ByteArrayTag.class.cast(tagMap.get("AddBlocks")).getValue();
|
||||
// }
|
||||
// end slow
|
||||
|
||||
final short width = ShortTag.class.cast(tagMap.get("Width")).getValue();
|
||||
final short length = ShortTag.class.cast(tagMap.get("Length")).getValue();
|
||||
final short height = ShortTag.class.cast(tagMap.get("Height")).getValue();
|
||||
final byte[] block_sml = ByteArrayTag.class.cast(tagMap.get("Blocks")).getValue();
|
||||
final byte[] data = ByteArrayTag.class.cast(tagMap.get("Data")).getValue();
|
||||
final Map<String, Tag> flags;
|
||||
|
||||
short width = ShortTag.class.cast(tagMap.get("Width")).getValue();
|
||||
short length = ShortTag.class.cast(tagMap.get("Length")).getValue();
|
||||
short height = ShortTag.class.cast(tagMap.get("Height")).getValue();
|
||||
byte[] block_sml = ByteArrayTag.class.cast(tagMap.get("Blocks")).getValue();
|
||||
byte[] data = ByteArrayTag.class.cast(tagMap.get("Data")).getValue();
|
||||
Map<String, Tag> flags;
|
||||
if (tagMap.containsKey("Flags")) {
|
||||
flags = CompoundTag.class.cast(tagMap.get("Flags")).getValue();
|
||||
} else {
|
||||
flags = null;
|
||||
}
|
||||
|
||||
final short[] block = new short[block_sml.length];
|
||||
|
||||
short[] block = new short[block_sml.length];
|
||||
for (int i = 0; i < block.length; i++) {
|
||||
short id = block_sml[i];
|
||||
if (id < 0) {
|
||||
@ -444,26 +444,26 @@ public abstract class SchematicHandler {
|
||||
// collection[x] = new DataCollection(blocks[x], d[x]);
|
||||
// }
|
||||
// Schematic schem = new Schematic(collection, dimension, file);
|
||||
|
||||
final Dimension dimensions = new Dimension(width, height, length);
|
||||
final Schematic schem = new Schematic(block, data, dimensions, flags);
|
||||
|
||||
Dimension dimensions = new Dimension(width, height, length);
|
||||
Schematic schem = new Schematic(block, data, dimensions, flags);
|
||||
|
||||
// Slow
|
||||
try {
|
||||
final List<Tag> blockStates = ListTag.class.cast(tagMap.get("TileEntities")).getValue();
|
||||
for (final Tag stateTag : blockStates) {
|
||||
List<Tag> blockStates = ListTag.class.cast(tagMap.get("TileEntities")).getValue();
|
||||
for (Tag stateTag : blockStates) {
|
||||
try {
|
||||
final CompoundTag ct = (CompoundTag) stateTag;
|
||||
final Map<String, Tag> state = ct.getValue();
|
||||
final short x = IntTag.class.cast(state.get("x")).getValue().shortValue();
|
||||
final short y = IntTag.class.cast(state.get("y")).getValue().shortValue();
|
||||
final short z = IntTag.class.cast(state.get("z")).getValue().shortValue();
|
||||
CompoundTag ct = (CompoundTag) stateTag;
|
||||
Map<String, Tag> state = ct.getValue();
|
||||
short x = IntTag.class.cast(state.get("x")).getValue().shortValue();
|
||||
short y = IntTag.class.cast(state.get("y")).getValue().shortValue();
|
||||
short z = IntTag.class.cast(state.get("z")).getValue().shortValue();
|
||||
manager.restoreTag(ct, x, y, z, schem);
|
||||
} catch (final Exception e) {
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
} catch (final Exception e) {
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return schem;
|
||||
@ -478,14 +478,15 @@ public abstract class SchematicHandler {
|
||||
*
|
||||
* @return schematic if found, else null
|
||||
*/
|
||||
public Schematic getSchematic(final String name) {
|
||||
final File parent = MainUtil.getFile(PS.get().IMP.getDirectory(), Settings.SCHEMATIC_SAVE_PATH);
|
||||
public Schematic getSchematic(String name) {
|
||||
File parent = MainUtil.getFile(PS.get().IMP.getDirectory(), Settings.SCHEMATIC_SAVE_PATH);
|
||||
if (!parent.exists()) {
|
||||
if (!parent.mkdir()) {
|
||||
throw new RuntimeException("Could not create schematic parent directory");
|
||||
}
|
||||
}
|
||||
final File file = MainUtil.getFile(PS.get().IMP.getDirectory(), Settings.SCHEMATIC_SAVE_PATH + File.separator + name + (name.endsWith(".schematic") ? "" : ".schematic"));
|
||||
File file = MainUtil.getFile(PS.get().IMP.getDirectory(),
|
||||
Settings.SCHEMATIC_SAVE_PATH + File.separator + name + (name.endsWith(".schematic") ? "" : ".schematic"));
|
||||
return getSchematic(file);
|
||||
}
|
||||
|
||||
@ -496,7 +497,7 @@ public abstract class SchematicHandler {
|
||||
*
|
||||
* @return schematic if found, else null
|
||||
*/
|
||||
public Schematic getSchematic(final File file) {
|
||||
public Schematic getSchematic(File file) {
|
||||
if (!file.exists()) {
|
||||
return null;
|
||||
}
|
||||
@ -507,25 +508,25 @@ public abstract class SchematicHandler {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public Schematic getSchematic(final URL url) {
|
||||
|
||||
public Schematic getSchematic(URL url) {
|
||||
try {
|
||||
final ReadableByteChannel rbc = Channels.newChannel(url.openStream());
|
||||
final InputStream is = Channels.newInputStream(rbc);
|
||||
ReadableByteChannel rbc = Channels.newChannel(url.openStream());
|
||||
InputStream is = Channels.newInputStream(rbc);
|
||||
return getSchematic(is);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public Schematic getSchematic(final InputStream is) {
|
||||
|
||||
public Schematic getSchematic(InputStream is) {
|
||||
if (is == null) {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
final NBTInputStream stream = new NBTInputStream(new GZIPInputStream(is));
|
||||
final CompoundTag tag = (CompoundTag) stream.readTag(1073741824);
|
||||
NBTInputStream stream = new NBTInputStream(new GZIPInputStream(is));
|
||||
CompoundTag tag = (CompoundTag) stream.readTag(1073741824);
|
||||
is.close();
|
||||
stream.close();
|
||||
return getSchematic(tag);
|
||||
@ -535,24 +536,24 @@ public abstract class SchematicHandler {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<String> getSaves(final UUID uuid) {
|
||||
final StringBuilder rawJSON = new StringBuilder();
|
||||
|
||||
public List<String> getSaves(UUID uuid) {
|
||||
StringBuilder rawJSON = new StringBuilder();
|
||||
try {
|
||||
final String website = Settings.WEB_URL + "list.php?" + uuid.toString();
|
||||
final URL url = new URL(website);
|
||||
final URLConnection connection = new URL(url.toString()).openConnection();
|
||||
String website = Settings.WEB_URL + "list.php?" + uuid.toString();
|
||||
URL url = new URL(website);
|
||||
URLConnection connection = new URL(url.toString()).openConnection();
|
||||
connection.setRequestProperty("User-Agent", "Mozilla/5.0");
|
||||
final BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
|
||||
String line;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
rawJSON.append(line);
|
||||
}
|
||||
reader.close();
|
||||
final JSONArray array = new JSONArray(rawJSON.toString());
|
||||
final List<String> schematics = new ArrayList<>();
|
||||
JSONArray array = new JSONArray(rawJSON.toString());
|
||||
List<String> schematics = new ArrayList<>();
|
||||
for (int i = 0; i < array.length(); i++) {
|
||||
final String schematic = array.getString(i);
|
||||
String schematic = array.getString(i);
|
||||
schematics.add(schematic);
|
||||
}
|
||||
return Lists.reverse(schematics);
|
||||
@ -586,25 +587,25 @@ public abstract class SchematicHandler {
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves a schematic to a file path
|
||||
* Saves a schematic to a file path.
|
||||
*
|
||||
* @param tag to save
|
||||
* @param path to save in
|
||||
*
|
||||
* @return true if succeeded
|
||||
*/
|
||||
public boolean save(final CompoundTag tag, final String path) {
|
||||
public boolean save(CompoundTag tag, String path) {
|
||||
if (tag == null) {
|
||||
PS.debug("&cCannot save empty tag");
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
final File tmp = MainUtil.getFile(PS.get().IMP.getDirectory(), path);
|
||||
File tmp = MainUtil.getFile(PS.get().IMP.getDirectory(), path);
|
||||
tmp.getParentFile().mkdirs();
|
||||
try (OutputStream stream = new FileOutputStream(tmp); NBTOutputStream output = new NBTOutputStream(new GZIPOutputStream(stream))) {
|
||||
output.writeTag(tag);
|
||||
}
|
||||
} catch (final IOException e) {
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
@ -616,14 +617,14 @@ public abstract class SchematicHandler {
|
||||
* - Untested
|
||||
* @param blocks
|
||||
* @param blockdata
|
||||
* @param d
|
||||
* @param dimension
|
||||
* @return
|
||||
*/
|
||||
public CompoundTag createTag(final byte[] blocks, final byte[] blockdata, final Dimension d) {
|
||||
final HashMap<String, Tag> schematic = new HashMap<>();
|
||||
schematic.put("Width", new ShortTag("Width", (short) d.getX()));
|
||||
schematic.put("Length", new ShortTag("Length", (short) d.getZ()));
|
||||
schematic.put("Height", new ShortTag("Height", (short) d.getY()));
|
||||
public CompoundTag createTag(byte[] blocks, byte[] blockdata, Dimension dimension) {
|
||||
HashMap<String, Tag> schematic = new HashMap<>();
|
||||
schematic.put("Width", new ShortTag("Width", (short) dimension.getX()));
|
||||
schematic.put("Length", new ShortTag("Length", (short) dimension.getZ()));
|
||||
schematic.put("Height", new ShortTag("Height", (short) dimension.getY()));
|
||||
schematic.put("Materials", new StringTag("Materials", "Alpha"));
|
||||
schematic.put("WEOriginX", new IntTag("WEOriginX", 0));
|
||||
schematic.put("WEOriginY", new IntTag("WEOriginY", 0));
|
||||
@ -637,8 +638,8 @@ public abstract class SchematicHandler {
|
||||
schematic.put("TileEntities", new ListTag("TileEntities", CompoundTag.class, new ArrayList<Tag>()));
|
||||
return new CompoundTag("Schematic", schematic);
|
||||
}
|
||||
|
||||
public abstract void getCompoundTag(final String world, Set<RegionWrapper> regions, final RunnableVal<CompoundTag> whenDone);
|
||||
|
||||
public abstract void getCompoundTag(String world, Set<RegionWrapper> regions, RunnableVal<CompoundTag> whenDone);
|
||||
|
||||
public void getCompoundTag(final Plot plot, final RunnableVal<CompoundTag> whenDone) {
|
||||
getCompoundTag(plot.getArea().worldname, plot.getRegions(), new RunnableVal<CompoundTag>() {
|
||||
@ -661,9 +662,7 @@ public abstract class SchematicHandler {
|
||||
}
|
||||
|
||||
/**
|
||||
* Schematic Dimensions
|
||||
*
|
||||
|
||||
* Schematic Dimensions.
|
||||
*/
|
||||
public static class Dimension {
|
||||
|
||||
@ -671,22 +670,22 @@ public abstract class SchematicHandler {
|
||||
private final int y;
|
||||
private final int z;
|
||||
|
||||
public Dimension(final int x, final int y, final int z) {
|
||||
public Dimension(int x, int y, int z) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.z = z;
|
||||
}
|
||||
|
||||
public int getX() {
|
||||
return x;
|
||||
return this.x;
|
||||
}
|
||||
|
||||
public int getY() {
|
||||
return y;
|
||||
return this.y;
|
||||
}
|
||||
|
||||
public int getZ() {
|
||||
return z;
|
||||
return this.z;
|
||||
}
|
||||
}
|
||||
|
||||
@ -703,15 +702,15 @@ public abstract class SchematicHandler {
|
||||
private Map<String, Tag> flags;
|
||||
private HashSet<PlotItem> items;
|
||||
|
||||
public Schematic(final short[] i, final byte[] b, final Dimension d, Map<String, Tag> flags) {
|
||||
ids = i;
|
||||
datas = b;
|
||||
schematicDimension = d;
|
||||
public Schematic(short[] i, byte[] b, Dimension d, Map<String, Tag> flags) {
|
||||
this.ids = i;
|
||||
this.datas = b;
|
||||
this.schematicDimension = d;
|
||||
setFlags(flags);
|
||||
}
|
||||
|
||||
public Map<String, Tag> getFlags() {
|
||||
return flags;
|
||||
return this.flags;
|
||||
}
|
||||
|
||||
public void setFlags(Map<String, Tag> flags) {
|
||||
@ -722,43 +721,43 @@ public abstract class SchematicHandler {
|
||||
* Add an item to the schematic
|
||||
* @param item
|
||||
*/
|
||||
public void addItem(final PlotItem item) {
|
||||
if (items == null) {
|
||||
items = new HashSet<>();
|
||||
public void addItem(PlotItem item) {
|
||||
if (this.items == null) {
|
||||
this.items = new HashSet<>();
|
||||
}
|
||||
items.add(item);
|
||||
this.items.add(item);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get any items associated with this schematic
|
||||
* Get any items associated with this schematic.
|
||||
* @return
|
||||
*/
|
||||
public HashSet<PlotItem> getItems() {
|
||||
return items;
|
||||
return this.items;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the schematic dimensions
|
||||
* Get the schematic dimensions.
|
||||
* @return
|
||||
*/
|
||||
public Dimension getSchematicDimension() {
|
||||
return schematicDimension;
|
||||
return this.schematicDimension;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the block type array
|
||||
* Get the block type array.
|
||||
* @return
|
||||
*/
|
||||
public short[] getIds() {
|
||||
return ids;
|
||||
return this.ids;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the block data array
|
||||
* Get the block data array.
|
||||
* @return
|
||||
*/
|
||||
public byte[] getDatas() {
|
||||
return datas;
|
||||
return this.datas;
|
||||
}
|
||||
|
||||
public Schematic copySection(RegionWrapper region) {
|
||||
@ -779,9 +778,9 @@ public abstract class SchematicHandler {
|
||||
short[] ids2 = new short[width * length * height];
|
||||
byte[] datas2 = new byte[width * length * height];
|
||||
|
||||
int dx = schematicDimension.getX();
|
||||
int dy = schematicDimension.getY();
|
||||
int dz = schematicDimension.getZ();
|
||||
int dx = this.schematicDimension.getX();
|
||||
int dy = this.schematicDimension.getY();
|
||||
int dz = this.schematicDimension.getZ();
|
||||
|
||||
for (int y = y1; y <= y2; y++) {
|
||||
int yy = y >= 0 ? y < dy ? y : y - dy : y + dy;
|
||||
@ -795,20 +794,20 @@ public abstract class SchematicHandler {
|
||||
int xx = x >= 0 ? x < dx ? x : x - dx : x + dx;
|
||||
int i3 = i2 + xx;
|
||||
int j3 = j2 + (x - x1);
|
||||
ids2[j3] = ids[i3];
|
||||
datas2[j3] = datas[i3];
|
||||
ids2[j3] = this.ids[i3];
|
||||
datas2[j3] = this.datas[i3];
|
||||
}
|
||||
}
|
||||
}
|
||||
return new Schematic(ids2, datas2, new Dimension(width, height, length), null);
|
||||
}
|
||||
|
||||
public void save(final File file) {
|
||||
byte[] ids2 = new byte[ids.length];
|
||||
for (int i = 0; i < ids.length; i++) {
|
||||
ids2[i] = (byte) ids[i];
|
||||
public void save(File file) {
|
||||
byte[] ids2 = new byte[this.ids.length];
|
||||
for (int i = 0; i < this.ids.length; i++) {
|
||||
ids2[i] = (byte) this.ids[i];
|
||||
}
|
||||
CompoundTag tag = createTag(ids2, datas, schematicDimension);
|
||||
CompoundTag tag = createTag(ids2, this.datas, this.schematicDimension);
|
||||
SchematicHandler.this.save(tag, file.getAbsolutePath());
|
||||
}
|
||||
}
|
||||
|
@ -6,7 +6,7 @@ import java.util.ArrayDeque;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
public class SetQueue {
|
||||
|
||||
|
||||
public static final SetQueue IMP = new SetQueue();
|
||||
private final AtomicInteger time_waiting = new AtomicInteger(2);
|
||||
private final AtomicInteger time_current = new AtomicInteger(0);
|
||||
@ -19,42 +19,43 @@ public class SetQueue {
|
||||
TaskManager.runTaskRepeat(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
long free = 50 + Math.min(50 + last - (last = System.currentTimeMillis()), last2 - System.currentTimeMillis());
|
||||
time_current.incrementAndGet();
|
||||
long free = 50 + Math.min(50 + SetQueue.this.last - (SetQueue.this.last = System.currentTimeMillis()),
|
||||
SetQueue.this.last2 - System.currentTimeMillis());
|
||||
SetQueue.this.time_current.incrementAndGet();
|
||||
do {
|
||||
if (isWaiting()) {
|
||||
return;
|
||||
}
|
||||
final PlotChunk<?> current = queue.next();
|
||||
PlotChunk<?> current = SetQueue.this.queue.next();
|
||||
if (current == null) {
|
||||
time_waiting.set(Math.max(time_waiting.get(), time_current.get() - 2));
|
||||
SetQueue.this.time_waiting.set(Math.max(SetQueue.this.time_waiting.get(), SetQueue.this.time_current.get() - 2));
|
||||
tasks();
|
||||
return;
|
||||
}
|
||||
} while ((last2 = System.currentTimeMillis()) - last < free);
|
||||
time_waiting.set(time_current.get() - 1);
|
||||
} while ((SetQueue.this.last2 = System.currentTimeMillis()) - SetQueue.this.last < free);
|
||||
SetQueue.this.time_waiting.set(SetQueue.this.time_current.get() - 1);
|
||||
}
|
||||
}, 1);
|
||||
}
|
||||
|
||||
|
||||
public boolean forceChunkSet() {
|
||||
final PlotChunk<?> set = queue.next();
|
||||
PlotChunk<?> set = this.queue.next();
|
||||
return set != null;
|
||||
}
|
||||
|
||||
|
||||
public boolean isWaiting() {
|
||||
return time_waiting.get() >= time_current.get();
|
||||
return this.time_waiting.get() >= this.time_current.get();
|
||||
}
|
||||
|
||||
|
||||
public boolean isDone() {
|
||||
return (time_waiting.get() + 1) < time_current.get();
|
||||
return (this.time_waiting.get() + 1) < this.time_current.get();
|
||||
}
|
||||
|
||||
|
||||
public void setWaiting() {
|
||||
time_waiting.set(time_current.get() + 1);
|
||||
this.time_waiting.set(this.time_current.get() + 1);
|
||||
}
|
||||
|
||||
public boolean addTask(final Runnable whenDone) {
|
||||
|
||||
public boolean addTask(Runnable whenDone) {
|
||||
if (isDone()) {
|
||||
// Run
|
||||
tasks();
|
||||
@ -64,23 +65,23 @@ public class SetQueue {
|
||||
return true;
|
||||
}
|
||||
if (whenDone != null) {
|
||||
runnables.add(whenDone);
|
||||
this.runnables.add(whenDone);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
public boolean tasks() {
|
||||
if (runnables.isEmpty()) {
|
||||
if (this.runnables.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
final ArrayDeque<Runnable> tmp = runnables.clone();
|
||||
runnables.clear();
|
||||
for (final Runnable runnable : tmp) {
|
||||
ArrayDeque<Runnable> tmp = this.runnables.clone();
|
||||
this.runnables.clear();
|
||||
for (Runnable runnable : tmp) {
|
||||
runnable.run();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param world
|
||||
* @param x
|
||||
@ -90,16 +91,16 @@ public class SetQueue {
|
||||
* @param data
|
||||
* @return
|
||||
*/
|
||||
public boolean setBlock(final String world, final int x, final int y, final int z, final short id, final byte data) {
|
||||
public boolean setBlock(String world, int x, int y, int z, short id, byte data) {
|
||||
if ((y > 255) || (y < 0)) {
|
||||
return false;
|
||||
}
|
||||
SetQueue.IMP.setWaiting();
|
||||
return queue.setBlock(world, x, y, z, id, data);
|
||||
return this.queue.setBlock(world, x, y, z, id, data);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @param world
|
||||
* @param x
|
||||
* @param y
|
||||
@ -107,65 +108,66 @@ public class SetQueue {
|
||||
* @param block
|
||||
* @return
|
||||
*/
|
||||
public boolean setBlock(final String world, final int x, final int y, final int z, PlotBlock block) {
|
||||
public boolean setBlock(String world, int x, int y, int z, PlotBlock block) {
|
||||
if ((y > 255) || (y < 0)) {
|
||||
return false;
|
||||
}
|
||||
SetQueue.IMP.setWaiting();
|
||||
return queue.setBlock(world, x, y, z, block.id, block.data);
|
||||
return this.queue.setBlock(world, x, y, z, block.id, block.data);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param world
|
||||
* @param x
|
||||
* @param y
|
||||
* @param z
|
||||
* @param world The world
|
||||
* @param x The x coordinate
|
||||
* @param y The y coordinate
|
||||
* @param z The z coordinate
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
public boolean setBlock(final String world, final int x, final int y, final int z, final short id) {
|
||||
public boolean setBlock(String world, int x, int y, int z, short id) {
|
||||
if ((y > 255) || (y < 0)) {
|
||||
return false;
|
||||
}
|
||||
SetQueue.IMP.setWaiting();
|
||||
return queue.setBlock(world, x, y, z, id, (byte) 0);
|
||||
return this.queue.setBlock(world, x, y, z, id, (byte) 0);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @param world
|
||||
* @param x
|
||||
* @param y
|
||||
* @param z
|
||||
*
|
||||
* @param world The world
|
||||
* @param x The x coordinate
|
||||
* @param y The y coordinate
|
||||
* @param z The z coordinate
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
public boolean setBlock(final String world, final int x, final int y, final int z, final int id) {
|
||||
if ((y > 255) || (y < 0)) {
|
||||
public boolean setBlock(String world, int x, int y, int z, int id) {
|
||||
if (y > 255 || y < 0) {
|
||||
return false;
|
||||
}
|
||||
SetQueue.IMP.setWaiting();
|
||||
return queue.setBlock(world, x, y, z, (short) id, (byte) 0);
|
||||
return this.queue.setBlock(world, x, y, z, (short) id, (byte) 0);
|
||||
}
|
||||
|
||||
|
||||
public class ChunkWrapper {
|
||||
|
||||
public final int x;
|
||||
public final int z;
|
||||
public final String world;
|
||||
|
||||
public ChunkWrapper(final String world, final int x, final int z) {
|
||||
|
||||
public ChunkWrapper(String world, int x, int z) {
|
||||
this.world = world;
|
||||
this.x = x;
|
||||
this.z = z;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return (x << 16) | (z & 0xFFFF);
|
||||
return (this.x << 16) | (this.z & 0xFFFF);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean equals(final Object obj) {
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) {
|
||||
return true;
|
||||
}
|
||||
@ -178,13 +180,13 @@ public class SetQueue {
|
||||
if (getClass() != obj.getClass()) {
|
||||
return false;
|
||||
}
|
||||
final ChunkWrapper other = (ChunkWrapper) obj;
|
||||
return (x == other.x) && (z == other.z) && StringMan.isEqual(world, other.world);
|
||||
ChunkWrapper other = (ChunkWrapper) obj;
|
||||
return (this.x == other.x) && (this.z == other.z) && StringMan.isEqual(this.world, other.world);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return world + ":" + x + "," + z;
|
||||
return this.world + ":" + this.x + "," + this.z;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,101 +1,88 @@
|
||||
package com.intellectualcrafters.plot.util;
|
||||
|
||||
import com.intellectualcrafters.plot.PS;
|
||||
import com.intellectualcrafters.plot.object.RunnableVal;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
import com.intellectualcrafters.plot.PS;
|
||||
import com.intellectualcrafters.plot.object.RunnableVal;
|
||||
|
||||
public abstract class TaskManager {
|
||||
|
||||
public static HashSet<String> TELEPORT_QUEUE = new HashSet<>();
|
||||
|
||||
|
||||
public static AtomicInteger index = new AtomicInteger(0);
|
||||
public static HashMap<Integer, Integer> tasks = new HashMap<>();
|
||||
|
||||
public static int runTaskRepeat(final Runnable r, final int interval) {
|
||||
if (r != null) {
|
||||
|
||||
public static int runTaskRepeat(Runnable runnable, int interval) {
|
||||
if (runnable != null) {
|
||||
if (PS.get().TASK == null) {
|
||||
throw new IllegalArgumentException("disabled");
|
||||
}
|
||||
return PS.get().TASK.taskRepeat(r, interval);
|
||||
return PS.get().TASK.taskRepeat(runnable, interval);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
public static int runTaskRepeatAsync(final Runnable r, final int interval) {
|
||||
if (r != null) {
|
||||
|
||||
public static int runTaskRepeatAsync(Runnable runnable, int interval) {
|
||||
if (runnable != null) {
|
||||
if (PS.get().TASK == null) {
|
||||
throw new IllegalArgumentException("disabled");
|
||||
}
|
||||
return PS.get().TASK.taskRepeat(r, interval);
|
||||
return PS.get().TASK.taskRepeat(runnable, interval);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
public static void runTaskAsync(final Runnable r) {
|
||||
if (r != null) {
|
||||
|
||||
public static void runTaskAsync(Runnable runnable) {
|
||||
if (runnable != null) {
|
||||
if (PS.get().TASK == null) {
|
||||
r.run();
|
||||
runnable.run();
|
||||
return;
|
||||
}
|
||||
PS.get().TASK.taskAsync(r);
|
||||
PS.get().TASK.taskAsync(runnable);
|
||||
}
|
||||
}
|
||||
|
||||
public static void runTask(final Runnable r) {
|
||||
if (r != null) {
|
||||
|
||||
public static void runTask(Runnable runnable) {
|
||||
if (runnable != null) {
|
||||
if (PS.get().TASK == null) {
|
||||
r.run();
|
||||
runnable.run();
|
||||
return;
|
||||
}
|
||||
PS.get().TASK.task(r);
|
||||
PS.get().TASK.task(runnable);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Run task later (delay in ticks)
|
||||
* @param r
|
||||
* @param delay
|
||||
* Run task later.
|
||||
* @param runnable The task
|
||||
* @param delay The delay in ticks
|
||||
*/
|
||||
public static void runTaskLater(final Runnable r, final int delay) {
|
||||
if (r != null) {
|
||||
public static void runTaskLater(Runnable runnable, int delay) {
|
||||
if (runnable != null) {
|
||||
if (PS.get().TASK == null) {
|
||||
r.run();
|
||||
runnable.run();
|
||||
return;
|
||||
}
|
||||
PS.get().TASK.taskLater(r, delay);
|
||||
PS.get().TASK.taskLater(runnable, delay);
|
||||
}
|
||||
}
|
||||
|
||||
public static void runTaskLaterAsync(final Runnable r, final int delay) {
|
||||
if (r != null) {
|
||||
|
||||
public static void runTaskLaterAsync(Runnable runnable, int delay) {
|
||||
if (runnable != null) {
|
||||
if (PS.get().TASK == null) {
|
||||
r.run();
|
||||
runnable.run();
|
||||
return;
|
||||
}
|
||||
PS.get().TASK.taskLaterAsync(r, delay);
|
||||
PS.get().TASK.taskLaterAsync(runnable, delay);
|
||||
}
|
||||
}
|
||||
|
||||
public abstract int taskRepeat(final Runnable r, final int interval);
|
||||
|
||||
public abstract int taskRepeatAsync(final Runnable r, final int interval);
|
||||
|
||||
public abstract void taskAsync(final Runnable r);
|
||||
|
||||
public abstract void task(final Runnable r);
|
||||
|
||||
public abstract void taskLater(final Runnable r, final int delay);
|
||||
|
||||
public abstract void taskLaterAsync(final Runnable r, final int delay);
|
||||
|
||||
public abstract void cancelTask(final int task);
|
||||
|
||||
|
||||
/**
|
||||
* Break up a series of tasks so that they can run without lagging the server
|
||||
* Break up a series of tasks so that they can run without lagging the server.
|
||||
* @param objects
|
||||
* @param task
|
||||
* @param whenDone
|
||||
@ -119,4 +106,18 @@ public abstract class TaskManager {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public abstract int taskRepeat(Runnable runnable, int interval);
|
||||
|
||||
public abstract int taskRepeatAsync(Runnable runnable, int interval);
|
||||
|
||||
public abstract void taskAsync(Runnable runnable);
|
||||
|
||||
public abstract void task(Runnable runnable);
|
||||
|
||||
public abstract void taskLater(Runnable runnable, int delay);
|
||||
|
||||
public abstract void taskLaterAsync(Runnable runnable, int delay);
|
||||
|
||||
public abstract void cancelTask(int task);
|
||||
}
|
||||
|
@ -1,12 +1,11 @@
|
||||
package com.plotsquared.sponge.util;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
import org.spongepowered.api.scheduler.Task;
|
||||
|
||||
import com.intellectualcrafters.plot.util.TaskManager;
|
||||
import com.plotsquared.sponge.SpongeMain;
|
||||
import org.spongepowered.api.scheduler.Task;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
public class SpongeTaskManager extends TaskManager {
|
||||
|
||||
@ -15,52 +14,52 @@ public class SpongeTaskManager extends TaskManager {
|
||||
private final HashMap<Integer, Task> tasks = new HashMap<>();
|
||||
|
||||
@Override
|
||||
public int taskRepeat(final Runnable r, final int interval) {
|
||||
final int val = i.incrementAndGet();
|
||||
final Task.Builder builder = SpongeMain.THIS.getGame().getScheduler().createTaskBuilder();
|
||||
final Task.Builder built = builder.delayTicks(interval).intervalTicks(interval).execute(r);
|
||||
final Task task = built.submit(SpongeMain.THIS.getPlugin());
|
||||
tasks.put(val, task);
|
||||
public int taskRepeat(Runnable runnable, int interval) {
|
||||
int val = this.i.incrementAndGet();
|
||||
Task.Builder builder = SpongeMain.THIS.getGame().getScheduler().createTaskBuilder();
|
||||
Task.Builder built = builder.delayTicks(interval).intervalTicks(interval).execute(runnable);
|
||||
Task task = built.submit(SpongeMain.THIS.getPlugin());
|
||||
this.tasks.put(val, task);
|
||||
return val;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int taskRepeatAsync(final Runnable r, final int interval) {
|
||||
final int val = i.incrementAndGet();
|
||||
final Task.Builder builder = SpongeMain.THIS.getGame().getScheduler().createTaskBuilder();
|
||||
final Task.Builder built = builder.delayTicks(interval).async().intervalTicks(interval).execute(r);
|
||||
final Task task = built.submit(SpongeMain.THIS.getPlugin());
|
||||
tasks.put(val, task);
|
||||
public int taskRepeatAsync(Runnable runnable, int interval) {
|
||||
int val = this.i.incrementAndGet();
|
||||
Task.Builder builder = SpongeMain.THIS.getGame().getScheduler().createTaskBuilder();
|
||||
Task.Builder built = builder.delayTicks(interval).async().intervalTicks(interval).execute(runnable);
|
||||
Task task = built.submit(SpongeMain.THIS.getPlugin());
|
||||
this.tasks.put(val, task);
|
||||
return val;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void taskAsync(final Runnable r) {
|
||||
final Task.Builder builder = SpongeMain.THIS.getGame().getScheduler().createTaskBuilder();
|
||||
builder.async().execute(r).submit(SpongeMain.THIS.getPlugin());
|
||||
public void taskAsync(Runnable runnable) {
|
||||
Task.Builder builder = SpongeMain.THIS.getGame().getScheduler().createTaskBuilder();
|
||||
builder.async().execute(runnable).submit(SpongeMain.THIS.getPlugin());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void task(final Runnable r) {
|
||||
final Task.Builder builder = SpongeMain.THIS.getGame().getScheduler().createTaskBuilder();
|
||||
builder.execute(r).submit(SpongeMain.THIS.getPlugin());
|
||||
public void task(Runnable runnable) {
|
||||
Task.Builder builder = SpongeMain.THIS.getGame().getScheduler().createTaskBuilder();
|
||||
builder.execute(runnable).submit(SpongeMain.THIS.getPlugin());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void taskLater(final Runnable r, final int delay) {
|
||||
final Task.Builder builder = SpongeMain.THIS.getGame().getScheduler().createTaskBuilder();
|
||||
builder.delayTicks(delay).execute(r).submit(SpongeMain.THIS.getPlugin());
|
||||
public void taskLater(Runnable runnable, int delay) {
|
||||
Task.Builder builder = SpongeMain.THIS.getGame().getScheduler().createTaskBuilder();
|
||||
builder.delayTicks(delay).execute(runnable).submit(SpongeMain.THIS.getPlugin());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void taskLaterAsync(final Runnable r, final int delay) {
|
||||
final Task.Builder builder = SpongeMain.THIS.getGame().getScheduler().createTaskBuilder();
|
||||
builder.async().delayTicks(delay).execute(r).submit(SpongeMain.THIS.getPlugin());
|
||||
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());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancelTask(final int i) {
|
||||
final Task task = tasks.remove(i);
|
||||
public void cancelTask(int i) {
|
||||
Task task = this.tasks.remove(i);
|
||||
if (task != null) {
|
||||
task.cancel();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user