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