mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-25 06:36:44 +01:00
Fixes
Notify core of all world loading regardless of generator Optimize plot area fetching Fix plot delete not deleting the plot until restart Fix plot unclaim not removing the owner on any cached plots Change gradle output directory Fix plotme conversion sometimes not copying over the floor/main blocks
This commit is contained in:
parent
7d8893b5d7
commit
01710e3ddb
@ -25,6 +25,7 @@ shadowJar {
|
|||||||
include(dependency(':Core'))
|
include(dependency(':Core'))
|
||||||
}
|
}
|
||||||
archiveName = "${parent.name}-${project.name}-${parent.version}.jar"
|
archiveName = "${parent.name}-${project.name}-${parent.version}.jar"
|
||||||
|
destinationDir = file '../target'
|
||||||
}
|
}
|
||||||
shadowJar.doLast {
|
shadowJar.doLast {
|
||||||
task ->
|
task ->
|
||||||
|
@ -20,6 +20,22 @@
|
|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
package com.plotsquared.bukkit.database.plotme;
|
package com.plotsquared.bukkit.database.plotme;
|
||||||
|
|
||||||
|
import com.intellectualcrafters.configuration.MemorySection;
|
||||||
|
import com.intellectualcrafters.configuration.file.FileConfiguration;
|
||||||
|
import com.intellectualcrafters.configuration.file.YamlConfiguration;
|
||||||
|
import com.intellectualcrafters.plot.PS;
|
||||||
|
import com.intellectualcrafters.plot.config.Settings;
|
||||||
|
import com.intellectualcrafters.plot.database.DBFunc;
|
||||||
|
import com.intellectualcrafters.plot.generator.HybridGen;
|
||||||
|
import com.intellectualcrafters.plot.object.Plot;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotArea;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotId;
|
||||||
|
import com.intellectualcrafters.plot.util.TaskManager;
|
||||||
|
import com.plotsquared.bukkit.generator.BukkitPlotGenerator;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.WorldCreator;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
@ -35,22 +51,6 @@ import java.util.Map.Entry;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.World;
|
|
||||||
import org.bukkit.WorldCreator;
|
|
||||||
|
|
||||||
import com.intellectualcrafters.configuration.file.FileConfiguration;
|
|
||||||
import com.intellectualcrafters.configuration.file.YamlConfiguration;
|
|
||||||
import com.intellectualcrafters.plot.PS;
|
|
||||||
import com.intellectualcrafters.plot.config.Settings;
|
|
||||||
import com.intellectualcrafters.plot.database.DBFunc;
|
|
||||||
import com.intellectualcrafters.plot.generator.HybridGen;
|
|
||||||
import com.intellectualcrafters.plot.object.Plot;
|
|
||||||
import com.intellectualcrafters.plot.object.PlotArea;
|
|
||||||
import com.intellectualcrafters.plot.object.PlotId;
|
|
||||||
import com.intellectualcrafters.plot.util.TaskManager;
|
|
||||||
import com.plotsquared.bukkit.generator.BukkitPlotGenerator;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created 2014-08-17 for PlotSquared
|
* Created 2014-08-17 for PlotSquared
|
||||||
*
|
*
|
||||||
@ -109,10 +109,12 @@ public class LikePlotMeConverter {
|
|||||||
YamlConfiguration yml = YamlConfiguration.loadConfiguration(genConfig);
|
YamlConfiguration yml = YamlConfiguration.loadConfiguration(genConfig);
|
||||||
for (String key : yml.getKeys(true)) {
|
for (String key : yml.getKeys(true)) {
|
||||||
if (!plotConfig.contains(key)) {
|
if (!plotConfig.contains(key)) {
|
||||||
plotConfig.set(key, yml.get(key));
|
Object value = yml.get(key);
|
||||||
|
if (!(value instanceof MemorySection)) {
|
||||||
|
plotConfig.set(key, value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
genConfig.delete();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
|
@ -21,9 +21,7 @@ public class WorldEvents implements Listener {
|
|||||||
if (gen instanceof GeneratorWrapper) {
|
if (gen instanceof GeneratorWrapper) {
|
||||||
PS.get().loadWorld(name, (GeneratorWrapper<?>) gen);
|
PS.get().loadWorld(name, (GeneratorWrapper<?>) gen);
|
||||||
} else {
|
} else {
|
||||||
if (PS.get().config.contains("worlds." + name)) {
|
PS.get().loadWorld(name, new BukkitPlotGenerator(name, gen));
|
||||||
PS.get().loadWorld(name, new BukkitPlotGenerator(name, gen));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,3 +2,4 @@ dependencies {
|
|||||||
compile 'org.yaml:snakeyaml:1.16'
|
compile 'org.yaml:snakeyaml:1.16'
|
||||||
}
|
}
|
||||||
jar.archiveName="PlotSquared-API-${parent.version}.jar"
|
jar.archiveName="PlotSquared-API-${parent.version}.jar"
|
||||||
|
jar.destinationDir = file '../target'
|
@ -47,6 +47,12 @@ public class PS {
|
|||||||
|
|
||||||
// protected static:
|
// protected static:
|
||||||
private static PS instance;
|
private static PS instance;
|
||||||
|
private HashSet<Integer> plotareaHashCheck = new HashSet<Integer>();
|
||||||
|
private boolean plotareaHasCollision = false;
|
||||||
|
/**
|
||||||
|
* All plot areas (quick global access)
|
||||||
|
*/
|
||||||
|
private PlotArea[] plotareas = new PlotArea[0];
|
||||||
/**
|
/**
|
||||||
* All plot areas mapped by world (quick world access)
|
* All plot areas mapped by world (quick world access)
|
||||||
*/
|
*/
|
||||||
@ -68,10 +74,6 @@ public class PS {
|
|||||||
public TaskManager TASK;
|
public TaskManager TASK;
|
||||||
public WorldEdit worldedit;
|
public WorldEdit worldedit;
|
||||||
public URL update;
|
public URL update;
|
||||||
/**
|
|
||||||
* All plot areas (quick global access)
|
|
||||||
*/
|
|
||||||
private PlotArea[] plotareas = new PlotArea[0];
|
|
||||||
// private:
|
// private:
|
||||||
private File storageFile;
|
private File storageFile;
|
||||||
private File FILE = null; // This file
|
private File FILE = null; // This file
|
||||||
@ -384,7 +386,7 @@ public class PS {
|
|||||||
int hash = world.hashCode();
|
int hash = world.hashCode();
|
||||||
for (PlotArea area : plotareas) {
|
for (PlotArea area : plotareas) {
|
||||||
if (hash == area.worldhash) {
|
if (hash == area.worldhash) {
|
||||||
if (area.contains(loc.getX(), loc.getZ()) && world.equals(area.worldname)) {
|
if (area.contains(loc.getX(), loc.getZ()) && (!plotareaHasCollision || world.equals(area.worldname))) {
|
||||||
return area;
|
return area;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -511,7 +513,7 @@ public class PS {
|
|||||||
int hash = world.hashCode();
|
int hash = world.hashCode();
|
||||||
for (PlotArea area : plotareas) {
|
for (PlotArea area : plotareas) {
|
||||||
if (hash == area.worldhash) {
|
if (hash == area.worldhash) {
|
||||||
if (area.contains(loc.getX(), loc.getZ()) && world.equals(area.worldname)) {
|
if (area.contains(loc.getX(), loc.getZ()) && (!plotareaHasCollision || world.equals(area.worldname))) {
|
||||||
return area;
|
return area;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1230,7 +1232,7 @@ public class PS {
|
|||||||
return false;
|
return false;
|
||||||
case 1:
|
case 1:
|
||||||
PlotArea a = plotareas[0];
|
PlotArea a = plotareas[0];
|
||||||
return world.hashCode() == a.worldhash && a.worldname.equals(world);
|
return world.hashCode() == a.worldhash && (!plotareaHasCollision || a.worldname.equals(world));
|
||||||
case 2:
|
case 2:
|
||||||
case 3:
|
case 3:
|
||||||
case 4:
|
case 4:
|
||||||
@ -1240,7 +1242,7 @@ public class PS {
|
|||||||
case 8:
|
case 8:
|
||||||
int hash = world.hashCode();
|
int hash = world.hashCode();
|
||||||
for (PlotArea area : plotareas) {
|
for (PlotArea area : plotareas) {
|
||||||
if (area.worldhash == hash && area.worldname.equals(world)) {
|
if (area.worldhash == hash && (!plotareaHasCollision || area.worldname.equals(world))) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1355,6 +1357,9 @@ public class PS {
|
|||||||
if (world.equals("CheckingPlotSquaredGenerator")) {
|
if (world.equals("CheckingPlotSquaredGenerator")) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (!plotareaHasCollision && !plotareaHashCheck.add(world.hashCode())) {
|
||||||
|
plotareaHasCollision = true;
|
||||||
|
}
|
||||||
final Set<String> worlds = (config.contains("worlds") ? config.getConfigurationSection("worlds").getKeys(false) : new HashSet<String>());
|
final Set<String> worlds = (config.contains("worlds") ? config.getConfigurationSection("worlds").getKeys(false) : new HashSet<String>());
|
||||||
final String path = "worlds." + world;
|
final String path = "worlds." + world;
|
||||||
ConfigurationSection worldSection = config.getConfigurationSection(path);
|
ConfigurationSection worldSection = config.getConfigurationSection(path);
|
||||||
|
@ -20,8 +20,6 @@
|
|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
package com.intellectualcrafters.plot.commands;
|
package com.intellectualcrafters.plot.commands;
|
||||||
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import com.intellectualcrafters.plot.PS;
|
import com.intellectualcrafters.plot.PS;
|
||||||
import com.intellectualcrafters.plot.config.C;
|
import com.intellectualcrafters.plot.config.C;
|
||||||
import com.intellectualcrafters.plot.flag.Flag;
|
import com.intellectualcrafters.plot.flag.Flag;
|
||||||
@ -34,6 +32,8 @@ import com.intellectualcrafters.plot.util.MainUtil;
|
|||||||
import com.intellectualcrafters.plot.util.UUIDHandler;
|
import com.intellectualcrafters.plot.util.UUIDHandler;
|
||||||
import com.plotsquared.general.commands.CommandDeclaration;
|
import com.plotsquared.general.commands.CommandDeclaration;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
@CommandDeclaration(
|
@CommandDeclaration(
|
||||||
command = "buy",
|
command = "buy",
|
||||||
aliases = { "b" },
|
aliases = { "b" },
|
||||||
|
@ -22,17 +22,8 @@ package com.intellectualcrafters.plot.commands;
|
|||||||
|
|
||||||
import com.intellectualcrafters.plot.config.C;
|
import com.intellectualcrafters.plot.config.C;
|
||||||
import com.intellectualcrafters.plot.config.Settings;
|
import com.intellectualcrafters.plot.config.Settings;
|
||||||
import com.intellectualcrafters.plot.object.Location;
|
import com.intellectualcrafters.plot.object.*;
|
||||||
import com.intellectualcrafters.plot.object.Plot;
|
import com.intellectualcrafters.plot.util.*;
|
||||||
import com.intellectualcrafters.plot.object.PlotArea;
|
|
||||||
import com.intellectualcrafters.plot.object.PlotPlayer;
|
|
||||||
import com.intellectualcrafters.plot.object.RunnableVal;
|
|
||||||
import com.intellectualcrafters.plot.util.ByteArrayUtilities;
|
|
||||||
import com.intellectualcrafters.plot.util.EconHandler;
|
|
||||||
import com.intellectualcrafters.plot.util.EventUtil;
|
|
||||||
import com.intellectualcrafters.plot.util.MainUtil;
|
|
||||||
import com.intellectualcrafters.plot.util.Permissions;
|
|
||||||
import com.intellectualcrafters.plot.util.SchematicHandler;
|
|
||||||
import com.intellectualcrafters.plot.util.SchematicHandler.Schematic;
|
import com.intellectualcrafters.plot.util.SchematicHandler.Schematic;
|
||||||
import com.plotsquared.general.commands.CommandDeclaration;
|
import com.plotsquared.general.commands.CommandDeclaration;
|
||||||
|
|
||||||
|
@ -24,16 +24,8 @@ import com.google.common.collect.BiMap;
|
|||||||
import com.intellectualcrafters.plot.PS;
|
import com.intellectualcrafters.plot.PS;
|
||||||
import com.intellectualcrafters.plot.config.C;
|
import com.intellectualcrafters.plot.config.C;
|
||||||
import com.intellectualcrafters.plot.database.DBFunc;
|
import com.intellectualcrafters.plot.database.DBFunc;
|
||||||
import com.intellectualcrafters.plot.object.ChunkLoc;
|
import com.intellectualcrafters.plot.object.*;
|
||||||
import com.intellectualcrafters.plot.object.Location;
|
|
||||||
import com.intellectualcrafters.plot.object.Plot;
|
|
||||||
import com.intellectualcrafters.plot.object.PlotArea;
|
|
||||||
import com.intellectualcrafters.plot.object.PlotId;
|
|
||||||
import com.intellectualcrafters.plot.object.PlotManager;
|
|
||||||
import com.intellectualcrafters.plot.object.PlotPlayer;
|
|
||||||
import com.intellectualcrafters.plot.object.StringWrapper;
|
|
||||||
import com.intellectualcrafters.plot.util.ChunkManager;
|
import com.intellectualcrafters.plot.util.ChunkManager;
|
||||||
import com.intellectualcrafters.plot.util.EventUtil;
|
|
||||||
import com.intellectualcrafters.plot.util.MainUtil;
|
import com.intellectualcrafters.plot.util.MainUtil;
|
||||||
import com.intellectualcrafters.plot.util.UUIDHandler;
|
import com.intellectualcrafters.plot.util.UUIDHandler;
|
||||||
import com.intellectualcrafters.plot.util.WorldUtil;
|
import com.intellectualcrafters.plot.util.WorldUtil;
|
||||||
@ -51,23 +43,6 @@ requiredType = RequiredType.CONSOLE,
|
|||||||
permission = "plots.debugclaimtest")
|
permission = "plots.debugclaimtest")
|
||||||
public class DebugClaimTest extends SubCommand {
|
public class DebugClaimTest extends SubCommand {
|
||||||
|
|
||||||
public static boolean claimPlot(final PlotPlayer player, final Plot plot, final boolean teleport) {
|
|
||||||
return claimPlot(player, plot, teleport, "");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean claimPlot(final PlotPlayer player, final Plot plot, final boolean teleport, final String schematic) {
|
|
||||||
final boolean result = EventUtil.manager.callClaim(player, plot, false);
|
|
||||||
if (result) {
|
|
||||||
plot.create(player.getUUID(), true);
|
|
||||||
plot.setSign(player.getName());
|
|
||||||
MainUtil.sendMessage(player, C.CLAIMED);
|
|
||||||
if (teleport) {
|
|
||||||
plot.teleportPlayer(player);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return !result;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(final PlotPlayer plr, final String[] args) {
|
public boolean onCommand(final PlotPlayer plr, final String[] args) {
|
||||||
if (args.length < 3) {
|
if (args.length < 3) {
|
||||||
|
@ -785,9 +785,9 @@ public class Plot {
|
|||||||
} else {
|
} else {
|
||||||
for (final Plot current : plots) {
|
for (final Plot current : plots) {
|
||||||
manager.claimPlot(Plot.this.area, current);
|
manager.claimPlot(Plot.this.area, current);
|
||||||
SetQueue.IMP.addTask(run);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
SetQueue.IMP.addTask(run);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final Plot current = queue.poll();
|
final Plot current = queue.poll();
|
||||||
@ -1041,6 +1041,7 @@ public class Plot {
|
|||||||
for (Plot current : getConnectedPlots()) {
|
for (Plot current : getConnectedPlots()) {
|
||||||
getArea().removePlot(getId());
|
getArea().removePlot(getId());
|
||||||
DBFunc.delete(current);
|
DBFunc.delete(current);
|
||||||
|
current.owner = null;
|
||||||
current.settings = null;
|
current.settings = null;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -172,6 +172,9 @@ public class SetQueue {
|
|||||||
if (obj == null) {
|
if (obj == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (this.hashCode() != obj.hashCode()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
if (getClass() != obj.getClass()) {
|
if (getClass() != obj.getClass()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -46,13 +46,12 @@ processResources {
|
|||||||
'mcVersion': project.minecraft.version
|
'mcVersion': project.minecraft.version
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// We only want the shadow jar produced
|
|
||||||
jar.enabled = false
|
|
||||||
shadowJar {
|
shadowJar {
|
||||||
dependencies {
|
dependencies {
|
||||||
include(dependency(':Core'))
|
include(dependency(':Core'))
|
||||||
}
|
}
|
||||||
archiveName = "${parent.name}-${project.name}-${parent.version}.jar"
|
archiveName = "${parent.name}-${project.name}-${parent.version}.jar"
|
||||||
|
destinationDir = file '../target'
|
||||||
}
|
}
|
||||||
shadowJar.doLast {
|
shadowJar.doLast {
|
||||||
task ->
|
task ->
|
||||||
|
@ -21,7 +21,7 @@ public class WorldEvents {
|
|||||||
SpongeTerrainGen stg = (SpongeTerrainGen) terrain;
|
SpongeTerrainGen stg = (SpongeTerrainGen) terrain;
|
||||||
PS.get().loadWorld(name, stg.parent);
|
PS.get().loadWorld(name, stg.parent);
|
||||||
}
|
}
|
||||||
else if (PS.get().config.contains("worlds." + name)) {
|
else {
|
||||||
PS.get().loadWorld(name, null);
|
PS.get().loadWorld(name, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
org.gradle.daemon=true
|
org.gradle.daemon=true
|
||||||
|
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
|
||||||
org.gradle.configureondemand=true
|
org.gradle.configureondemand=true
|
||||||
org.gradle.parallel=true
|
org.gradle.parallel=true
|
Loading…
Reference in New Issue
Block a user