mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-22 05:06:44 +01:00
More on /p setup {world}
Fixed schematic support for claim
This commit is contained in:
parent
2eb82fe703
commit
7a6d0ef531
@ -22,7 +22,7 @@ public enum C {
|
|||||||
* Setup Stuff
|
* Setup Stuff
|
||||||
*/
|
*/
|
||||||
SETUP_INIT("&6PlotSquared Setup -> Setup a new plotworld"),
|
SETUP_INIT("&6PlotSquared Setup -> Setup a new plotworld"),
|
||||||
SETUP_STEP("&cStep &6%s&c: %s"),
|
SETUP_STEP("&cStep &6%s&c: %s &c<Expecting: &6%s&c, Default: &6%s&c>"),
|
||||||
SETUP_INVALID_ARG("&c%s is not a valid argument for step %s"),
|
SETUP_INVALID_ARG("&c%s is not a valid argument for step %s"),
|
||||||
SETUP_VALID_ARG("&cValue &6%s &cset for step %s"),
|
SETUP_VALID_ARG("&cValue &6%s &cset for step %s"),
|
||||||
SETUP_FINISHED("&cFinished setup for world &c%s"),
|
SETUP_FINISHED("&cFinished setup for world &c%s"),
|
||||||
@ -63,6 +63,7 @@ public enum C {
|
|||||||
/*
|
/*
|
||||||
* Permission
|
* Permission
|
||||||
*/
|
*/
|
||||||
|
NO_SCHEMATIC_PERMISSION("&cYou don't have the permission required to use schematic &6%s"),
|
||||||
NO_PERMISSION("&cYou don't have the permissions required to use this command."), NO_PLOT_PERMS("&cYou don't have the permissions to do that in this plot"), CANT_CLAIM_MORE_PLOTS("&cYou can't claim more plots."), YOU_BE_DENIED("&cYou are not allowed to enter this plot"),
|
NO_PERMISSION("&cYou don't have the permissions required to use this command."), NO_PLOT_PERMS("&cYou don't have the permissions to do that in this plot"), CANT_CLAIM_MORE_PLOTS("&cYou can't claim more plots."), YOU_BE_DENIED("&cYou are not allowed to enter this plot"),
|
||||||
NO_PERM_MERGE("&cYou are not the owner of the plot: &6%plot%"), UNLINK_REQUIRED("&cAn unlink is required to do this."), UNLINK_IMPOSSIBLE("&cYou can only unlink a mega-plot"),
|
NO_PERM_MERGE("&cYou are not the owner of the plot: &6%plot%"), UNLINK_REQUIRED("&cAn unlink is required to do this."), UNLINK_IMPOSSIBLE("&cYou can only unlink a mega-plot"),
|
||||||
NO_MERGE_TO_MEGA("&cMega plots cannot be merged into. Please merge from the desired mega plot."),
|
NO_MERGE_TO_MEGA("&cMega plots cannot be merged into. Please merge from the desired mega plot."),
|
||||||
|
@ -34,6 +34,10 @@ public class Claim extends SubCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean execute(Player plr, String... args) {
|
public boolean execute(Player plr, String... args) {
|
||||||
|
String schematic = "";
|
||||||
|
if(args.length >= 1) {
|
||||||
|
schematic = args[0];
|
||||||
|
}
|
||||||
if (!PlayerFunctions.isInPlot(plr)) {
|
if (!PlayerFunctions.isInPlot(plr)) {
|
||||||
PlayerFunctions.sendMessage(plr, C.NOT_IN_PLOT);
|
PlayerFunctions.sendMessage(plr, C.NOT_IN_PLOT);
|
||||||
return true;
|
return true;
|
||||||
@ -47,7 +51,17 @@ public class Claim extends SubCommand {
|
|||||||
PlayerFunctions.sendMessage(plr, C.PLOT_IS_CLAIMED);
|
PlayerFunctions.sendMessage(plr, C.PLOT_IS_CLAIMED);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
boolean result = claimPlot(plr, plot, false);
|
if(!schematic.equals("")) {
|
||||||
|
if(!plr.hasPermission("plots.claim." + schematic) && !plr.hasPermission("plots.admin")) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.NO_SCHEMATIC_PERMISSION, schematic);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if(new SchematicHandler().getSchematic(schematic) == null) {
|
||||||
|
sendMessage(plr, C.SCHEMATIC_INVALID, "non-existent");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
boolean result = claimPlot(plr, plot, false, schematic);
|
||||||
if (result) {
|
if (result) {
|
||||||
PlayerFunctions.sendMessage(plr, C.PLOT_NOT_CLAIMED);
|
PlayerFunctions.sendMessage(plr, C.PLOT_NOT_CLAIMED);
|
||||||
return false;
|
return false;
|
||||||
@ -57,7 +71,10 @@ public class Claim extends SubCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean claimPlot(Player player, Plot plot, boolean teleport) {
|
public static boolean claimPlot(Player player, Plot plot, boolean teleport) {
|
||||||
plot.clear(player);
|
return claimPlot(player, plot, teleport, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean claimPlot(Player player, Plot plot, boolean teleport, String schematic) {
|
||||||
PlayerClaimPlotEvent event = new PlayerClaimPlotEvent(player, plot);
|
PlayerClaimPlotEvent event = new PlayerClaimPlotEvent(player, plot);
|
||||||
Bukkit.getPluginManager().callEvent(event);
|
Bukkit.getPluginManager().callEvent(event);
|
||||||
if (!event.isCancelled()) {
|
if (!event.isCancelled()) {
|
||||||
@ -70,8 +87,16 @@ public class Claim extends SubCommand {
|
|||||||
PlotWorld world = PlotMain.getWorldSettings(plot.getWorld());
|
PlotWorld world = PlotMain.getWorldSettings(plot.getWorld());
|
||||||
if (world.SCHEMATIC_ON_CLAIM) {
|
if (world.SCHEMATIC_ON_CLAIM) {
|
||||||
SchematicHandler handler = new SchematicHandler();
|
SchematicHandler handler = new SchematicHandler();
|
||||||
SchematicHandler.Schematic schematic = handler.getSchematic(world.SCHEMATIC_FILE);
|
SchematicHandler.Schematic sch;
|
||||||
handler.paste(player.getLocation(), schematic, plot);
|
if(schematic.equals("")) {
|
||||||
|
sch = handler.getSchematic(world.SCHEMATIC_FILE);
|
||||||
|
} else {
|
||||||
|
sch = handler.getSchematic(schematic);
|
||||||
|
if(sch == null) {
|
||||||
|
sch = handler.getSchematic(world.SCHEMATIC_FILE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
handler.paste(player.getLocation(), sch, plot);
|
||||||
}
|
}
|
||||||
plot.settings.setFlags(PlotMain.getWorldSettings(player.getWorld()).DEFAULT_FLAGS);
|
plot.settings.setFlags(PlotMain.getWorldSettings(player.getWorld()).DEFAULT_FLAGS);
|
||||||
}
|
}
|
||||||
|
@ -5,10 +5,7 @@ import com.intellectualcrafters.plot.PlotMain;
|
|||||||
import com.intellectualcrafters.plot.PlotWorld;
|
import com.intellectualcrafters.plot.PlotWorld;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.EventPriority;
|
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -45,15 +42,24 @@ public class Setup extends SubCommand implements Listener {
|
|||||||
private Object default_value;
|
private Object default_value;
|
||||||
private String description;
|
private String description;
|
||||||
private Object value = 0;
|
private Object value = 0;
|
||||||
|
private String type;
|
||||||
public SetupStep(String constant, Object default_value, String description) {
|
public SetupStep(String constant, Object default_value, String description, String type) {
|
||||||
this.constant = constant;
|
this.constant = constant;
|
||||||
this.default_value = default_value;
|
this.default_value = default_value;
|
||||||
this.description = description;
|
this.description = description;
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getType() {
|
||||||
|
return this.type;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean setValue(Object o) {
|
public boolean setValue(Object o) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean validValue(String string) {
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object getValue() {
|
public Object getValue() {
|
||||||
@ -73,23 +79,38 @@ public class Setup extends SubCommand implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class SetupObject {
|
private class SetupObject {
|
||||||
private String world;
|
String world;
|
||||||
private int current = 0;
|
int current = 0;
|
||||||
|
PlotWorld p;
|
||||||
|
|
||||||
private SetupStep[] step = new SetupStep[] {
|
SetupStep[] step = new SetupStep[] {
|
||||||
new SetupStep("road_height", 64, "Height of road")
|
new SetupStep("road_height", 64, "Height of road", "integer") {
|
||||||
|
@Override
|
||||||
|
public boolean validValue(String string) {
|
||||||
|
try {
|
||||||
|
int t = Integer.parseInt(string);
|
||||||
|
} catch(Exception e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
public SetupObject(String world) {
|
public SetupObject(String world) {
|
||||||
this.world = world;
|
this.world = world;
|
||||||
PlotWorld p = new PlotWorld();
|
|
||||||
|
this.p = new PlotWorld();
|
||||||
}
|
}
|
||||||
|
|
||||||
public SetupStep getNextStep() {
|
public SetupStep getNextStep() {
|
||||||
return this.step[current++];
|
return this.step[current++];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getCurrent() {
|
||||||
|
return this.current;
|
||||||
|
}
|
||||||
|
|
||||||
public int getMax() {
|
public int getMax() {
|
||||||
return this.step.length;
|
return this.step.length;
|
||||||
@ -102,28 +123,40 @@ public class Setup extends SubCommand implements Listener {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean execute(Player plr, String... args) {
|
public boolean execute(Player plr, String... args) {
|
||||||
if(args.length < 1) {
|
if(setupMap.containsKey(plr.getName())) {
|
||||||
sendMessage(plr, C.SETUP_MISSING_WORLD);
|
SetupObject object = setupMap.get(plr.getName());
|
||||||
|
if(object.getCurrent() == object.getMax()) {
|
||||||
|
sendMessage(plr, C.SETUP_FINISHED, object.world);
|
||||||
|
setupMap.remove(plr.getName());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
SetupStep step = object.step[object.current];
|
||||||
|
if(args.length < 1) {
|
||||||
|
sendMessage(plr, C.SETUP_STEP, object.current + 1 + "", step.getDescription(), step.getType(), step.getDefaultValue() + "");
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
boolean valid = step.validValue(args[0]);
|
||||||
|
if(valid) {
|
||||||
|
sendMessage(plr, C.SETUP_VALID_ARG);
|
||||||
|
object.current++;
|
||||||
|
} else {
|
||||||
|
sendMessage(plr, C.SETUP_INVALID_ARG);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (args.length < 1) {
|
||||||
|
sendMessage(plr, C.SETUP_MISSING_WORLD);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
String world = args[0];
|
||||||
|
if (PlotMain.isPlotWorld(Bukkit.getWorld(world))) {
|
||||||
|
sendMessage(plr, C.SETUP_WORLD_TAKEN, world);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
setupMap.put(plr.getName(), new SetupObject(world));
|
||||||
|
sendMessage(plr, C.SETUP_INIT);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
String world = args[0];
|
|
||||||
if(PlotMain.isPlotWorld(Bukkit.getWorld(world))) {
|
|
||||||
sendMessage(plr, C.SETUP_WORLD_TAKEN, world);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
setupMap.put(plr.getName(), new SetupObject(world));
|
|
||||||
sendMessage(plr, C.SETUP_INIT);
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST)
|
|
||||||
public void onChat(AsyncPlayerChatEvent event) {
|
|
||||||
Player player = event.getPlayer();
|
|
||||||
if(!setupMap.containsKey(player.getName())) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
event.setCancelled(true);
|
|
||||||
SetupObject object = setupMap.get(player.getName());
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user