Skip to content

Commit

Permalink
Associate a preset with the home location /tardis home set [preset]
Browse files Browse the repository at this point in the history
  • Loading branch information
eccentricdevotion committed Jan 21, 2020
1 parent 3c0749c commit 23ec37b
Show file tree
Hide file tree
Showing 11 changed files with 158 additions and 74 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,14 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String
bd.setSubmarine(rsh.isSubmarine());
bd.setTardisID(id);
bd.setBiome(biome);
if (!rsh.getPreset().isEmpty()) {
// set the chameleon preset
HashMap<String, Object> wherep = new HashMap<>();
wherep.put("tardis_id", id);
HashMap<String, Object> setp = new HashMap<>();
setp.put("chameleon_preset", rsh.getPreset());
plugin.getQueryFactory().doSyncUpdate("tardis", setp, wherep);
}
plugin.getPresetBuilder().buildPreset(bd);
return true;
}
Expand Down Expand Up @@ -241,6 +249,14 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String
set.put("direction", rsh.getDirection().toString());
set.put("submarine", (rsh.isSubmarine()) ? 1 : 0);
which = "Home";
if (!rsh.getPreset().isEmpty()) {
// set the chameleon preset
HashMap<String, Object> wherep = new HashMap<>();
wherep.put("tardis_id", id);
HashMap<String, Object> setp = new HashMap<>();
setp.put("chameleon_preset", rsh.getPreset());
plugin.getQueryFactory().doSyncUpdate("tardis", setp, wherep);
}
} else if (args[0].equalsIgnoreCase("back")) {
// get fast return location
HashMap<String, Object> wherebl = new HashMap<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,10 @@
import me.eccentric_nz.TARDIS.commands.TARDISCommandHelper;
import me.eccentric_nz.TARDIS.commands.tardis.TARDISHideCommand;
import me.eccentric_nz.TARDIS.commands.tardis.TARDISRebuildCommand;
import me.eccentric_nz.TARDIS.database.*;
import me.eccentric_nz.TARDIS.database.ResultSetAreas;
import me.eccentric_nz.TARDIS.database.ResultSetCurrentLocation;
import me.eccentric_nz.TARDIS.database.ResultSetHomeLocation;
import me.eccentric_nz.TARDIS.database.ResultSetTardis;
import me.eccentric_nz.TARDIS.database.data.Tardis;
import me.eccentric_nz.TARDIS.enumeration.DIFFICULTY;
import me.eccentric_nz.TARDIS.enumeration.FLAG;
Expand Down Expand Up @@ -189,6 +192,14 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String
set.put("z", rsh.getZ());
set.put("direction", rsh.getDirection().toString());
set.put("submarine", (rsh.isSubmarine()) ? 1 : 0);
if (!rsh.getPreset().isEmpty()) {
// set the chameleon preset
HashMap<String, Object> wherep = new HashMap<>();
wherep.put("tardis_id", id);
HashMap<String, Object> setp = new HashMap<>();
setp.put("chameleon_preset", rsh.getPreset());
plugin.getQueryFactory().doSyncUpdate("tardis", setp, wherep);
}
break;
case "area":
// check area name
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import me.eccentric_nz.TARDIS.enumeration.COMPASS;
import me.eccentric_nz.TARDIS.enumeration.DIFFICULTY;
import me.eccentric_nz.TARDIS.enumeration.FLAG;
import me.eccentric_nz.TARDIS.enumeration.PRESET;
import me.eccentric_nz.TARDIS.utility.TARDISMessage;
import me.eccentric_nz.TARDIS.utility.TARDISStaticUtils;
import org.bukkit.ChatColor;
Expand All @@ -33,6 +34,7 @@
import org.bukkit.entity.Player;

import java.util.HashMap;
import java.util.Locale;

/**
* @author eccentric_nz
Expand All @@ -53,70 +55,90 @@ boolean setHome(Player player, String[] args) {
return false;
}
int id = rs.getTardis_id();
Location eyeLocation = player.getTargetBlock(plugin.getGeneralKeeper().getTransparent(), 50).getLocation();
COMPASS player_d = COMPASS.valueOf(TARDISStaticUtils.getPlayersDirection(player, false));
if (!plugin.getConfig().getBoolean("travel.include_default_world") && plugin.getConfig().getBoolean("creation.default_world") && eyeLocation.getWorld().getName().equals(plugin.getConfig().getString("creation.default_world_name"))) {
TARDISMessage.send(player, "NO_WORLD_TRAVEL");
return true;
if (args.length == 3 && args[1].equalsIgnoreCase("set")) {
// set the PRESET for the home location
String which;
try {
which = args[2].toUpperCase(Locale.ENGLISH);
PRESET.valueOf(which);
} catch (IllegalArgumentException e) {
// abort
TARDISMessage.send(player, "ARG_PRESET");
return true;
}
// update home record
HashMap<String, Object> whereh = new HashMap<>();
whereh.put("tardis_id", id);
HashMap<String, Object> seth = new HashMap<>();
seth.put("preset", which);
plugin.getQueryFactory().doUpdate("homes", seth, whereh);
TARDISMessage.send(player, "CHAM_SET", which);
} else {
Location eyeLocation = player.getTargetBlock(plugin.getGeneralKeeper().getTransparent(), 50).getLocation();
COMPASS player_d = COMPASS.valueOf(TARDISStaticUtils.getPlayersDirection(player, false));
if (!plugin.getConfig().getBoolean("travel.include_default_world") && plugin.getConfig().getBoolean("creation.default_world") && eyeLocation.getWorld().getName().equals(plugin.getConfig().getString("creation.default_world_name"))) {
TARDISMessage.send(player, "NO_WORLD_TRAVEL");
return true;
}
if (!plugin.getTardisArea().areaCheckInExisting(eyeLocation)) {
TARDISMessage.send(player, "AREA_NO_HOME", ChatColor.AQUA + "/tardistravel area [area name]");
return true;
}
if (!plugin.getPluginRespect().getRespect(eyeLocation, new Parameters(player, FLAG.getDefaultFlags()))) {
return true;
}
Material m = player.getTargetBlock(plugin.getGeneralKeeper().getTransparent(), 50).getType();
if (m != Material.SNOW) {
int yplusone = eyeLocation.getBlockY();
eyeLocation.setY(yplusone + 1);
}
// check the world is not excluded
String world = eyeLocation.getWorld().getName();
if (!plugin.getPlanetsConfig().getBoolean("planets." + world + ".time_travel")) {
TARDISMessage.send(player, "NO_WORLD_TRAVEL");
return true;
}
TARDISCircuitChecker tcc = null;
if (!plugin.getDifficulty().equals(DIFFICULTY.EASY) && !plugin.getUtils().inGracePeriod(player, false)) {
tcc = new TARDISCircuitChecker(plugin, id);
tcc.getCircuits();
}
if (tcc != null && !tcc.hasMemory()) {
TARDISMessage.send(player, "NO_MEM_CIRCUIT");
return true;
}
// check they are not in the tardis
HashMap<String, Object> wherettrav = new HashMap<>();
wherettrav.put("uuid", player.getUniqueId().toString());
wherettrav.put("tardis_id", id);
ResultSetTravellers rst = new ResultSetTravellers(plugin, wherettrav, false);
if (rst.resultSet()) {
TARDISMessage.send(player, "TARDIS_NO_INSIDE");
return true;
}
// check it is not another Time Lords home location
HashMap<String, Object> where = new HashMap<>();
where.put("world", eyeLocation.getWorld().getName());
where.put("x", eyeLocation.getBlockX());
where.put("y", eyeLocation.getBlockY());
where.put("z", eyeLocation.getBlockZ());
ResultSetHomeLocation rsh = new ResultSetHomeLocation(plugin, where);
if (rsh.resultSet()) {
TARDISMessage.send(player, "TARDIS_NO_HOME");
return true;
}
HashMap<String, Object> tid = new HashMap<>();
HashMap<String, Object> set = new HashMap<>();
tid.put("tardis_id", id);
set.put("world", eyeLocation.getWorld().getName());
set.put("x", eyeLocation.getBlockX());
set.put("y", eyeLocation.getBlockY());
set.put("z", eyeLocation.getBlockZ());
set.put("direction", player_d.toString());
set.put("submarine", isSub(eyeLocation) ? 1 : 0);
plugin.getQueryFactory().doUpdate("homes", set, tid);
TARDISMessage.send(player, "HOME_SET");
}
if (!plugin.getTardisArea().areaCheckInExisting(eyeLocation)) {
TARDISMessage.send(player, "AREA_NO_HOME", ChatColor.AQUA + "/tardistravel area [area name]");
return true;
}
if (!plugin.getPluginRespect().getRespect(eyeLocation, new Parameters(player, FLAG.getDefaultFlags()))) {
return true;
}
Material m = player.getTargetBlock(plugin.getGeneralKeeper().getTransparent(), 50).getType();
if (m != Material.SNOW) {
int yplusone = eyeLocation.getBlockY();
eyeLocation.setY(yplusone + 1);
}
// check the world is not excluded
String world = eyeLocation.getWorld().getName();
if (!plugin.getPlanetsConfig().getBoolean("planets." + world + ".time_travel")) {
TARDISMessage.send(player, "NO_WORLD_TRAVEL");
return true;
}
TARDISCircuitChecker tcc = null;
if (!plugin.getDifficulty().equals(DIFFICULTY.EASY) && !plugin.getUtils().inGracePeriod(player, false)) {
tcc = new TARDISCircuitChecker(plugin, id);
tcc.getCircuits();
}
if (tcc != null && !tcc.hasMemory()) {
TARDISMessage.send(player, "NO_MEM_CIRCUIT");
return true;
}
// check they are not in the tardis
HashMap<String, Object> wherettrav = new HashMap<>();
wherettrav.put("uuid", player.getUniqueId().toString());
wherettrav.put("tardis_id", id);
ResultSetTravellers rst = new ResultSetTravellers(plugin, wherettrav, false);
if (rst.resultSet()) {
TARDISMessage.send(player, "TARDIS_NO_INSIDE");
return true;
}
// check it is not another Time Lords home location
HashMap<String, Object> where = new HashMap<>();
where.put("world", eyeLocation.getWorld().getName());
where.put("x", eyeLocation.getBlockX());
where.put("y", eyeLocation.getBlockY());
where.put("z", eyeLocation.getBlockZ());
ResultSetHomeLocation rsh = new ResultSetHomeLocation(plugin, where);
if (rsh.resultSet()) {
TARDISMessage.send(player, "TARDIS_NO_HOME");
return true;
}
HashMap<String, Object> tid = new HashMap<>();
HashMap<String, Object> set = new HashMap<>();
tid.put("tardis_id", id);
set.put("world", eyeLocation.getWorld().getName());
set.put("x", eyeLocation.getBlockX());
set.put("y", eyeLocation.getBlockY());
set.put("z", eyeLocation.getBlockZ());
set.put("direction", player_d.toString());
set.put("submarine", isSub(eyeLocation) ? 1 : 0);
plugin.getQueryFactory().doUpdate("homes", set, tid);
TARDISMessage.send(player, "HOME_SET");
return true;
} else {
TARDISMessage.send(player, "NO_PERMS");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,14 @@
import com.google.common.collect.ImmutableList;
import me.eccentric_nz.TARDIS.TARDIS;
import me.eccentric_nz.TARDIS.commands.TARDISCompleter;
import me.eccentric_nz.TARDIS.enumeration.PRESET;
import me.eccentric_nz.TARDIS.enumeration.TARDIS_COMMAND;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
Expand All @@ -42,6 +44,7 @@ public class TARDISTabComplete extends TARDISCompleter implements TabCompleter {
private final List<String> SEC_SUBS = ImmutableList.of("button", "world-repeater", "x-repeater", "z-repeater", "y-repeater", "artron", "handbrake", "door", "back");
private final List<String> UPD_SUBS = ImmutableList.of("advanced", "ars", "artron", "back", "backdoor", "beacon", "button", "chameleon", "condenser", "control", "creeper", "direction", "door", "eps", "farm", "frame", "generator", "handbrake", "igloo", "info", "keyboard", "light", "rail", "save-sign", "scanner", "siege", "stable", "stall", "storage", "telepathic", "temporal", "terminal", "toggle_wool", "vault", "village", "world-repeater", "x-repeater", "y-repeater", "z-repeater", "zero");
private final List<String> RECHARGER_SUBS;
private final List<String> PRESET_SUBS;

public TARDISTabComplete(TARDIS plugin) {
this.plugin = plugin;
Expand All @@ -51,6 +54,10 @@ public TARDISTabComplete(TARDIS plugin) {
}
ROOT_SUBS = ImmutableList.copyOf(tcs);
RECHARGER_SUBS = getPublicRechargers();
PRESET_SUBS = new ArrayList<>();
for (PRESET preset : PRESET.values()) {
PRESET_SUBS.add(preset.toString());
}
}

@Override
Expand All @@ -61,7 +68,7 @@ public List<String> onTabComplete(CommandSender sender, Command command, String
if (args.length <= 1) {
return partial(args[0], ROOT_SUBS);
} else if (args.length == 2) {
String sub = args[0];
String sub = args[0].toLowerCase();
switch (sub) {
case "add":
case "remove":
Expand All @@ -72,6 +79,8 @@ public List<String> onTabComplete(CommandSender sender, Command command, String
return partial(lastArg, CHAM_SUBS);
case "direction":
return partial(lastArg, DIR_SUBS);
case "home":
return partial(lastArg, Collections.singletonList("set"));
case "list":
return partial(lastArg, LIST_SUBS);
case "rescue":
Expand All @@ -88,15 +97,18 @@ public List<String> onTabComplete(CommandSender sender, Command command, String
break;
}
} else if (args.length == 3) {
String sub = args[1];
String sub = args[1].toLowerCase();
if (sub.equals("rechargers")) {
return partial(lastArg, RECHARGER_SUBS);
}
if (sub.equals("scan")) {
return partial(lastArg, CONSOLE_SIZE_SUBS);
}
if (sub.equals("set")) {
return partial(lastArg, PRESET_SUBS);
}
} else if (args.length == 4) {
String sub = args[1];
String sub = args[1].toLowerCase();
if (sub.equals("add") || sub.equals("update")) {
return partial(lastArg, CONSOLE_SIZE_SUBS);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ public class ResultSetHomeLocation {
private int z;
private COMPASS direction;
private boolean submarine;
private String preset;
private final String prefix;

/**
Expand Down Expand Up @@ -103,6 +104,7 @@ public boolean resultSet() {
z = rs.getInt("z");
direction = COMPASS.valueOf(rs.getString("direction"));
submarine = rs.getBoolean("submarine");
preset = rs.getString("preset");
}
} else {
return false;
Expand Down Expand Up @@ -156,4 +158,8 @@ public COMPASS getDirection() {
public boolean isSubmarine() {
return submarine;
}

public String getPreset() {
return preset;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,14 @@ void updateTables() {
String bio_alter = "ALTER TABLE " + prefix + "current ADD biome varchar(64) DEFAULT ''";
statement.executeUpdate(bio_alter);
}
// add preset to homes
String preset_query = "SHOW COLUMNS FROM " + prefix + "homes LIKE 'biome'";
ResultSet rspreset = statement.executeQuery(preset_query);
if (!rspreset.next()) {
i++;
String preset_alter = "ALTER TABLE " + prefix + "homes ADD preset varchar(64) DEFAULT ''";
statement.executeUpdate(preset_alter);
}
// add tardis_id to dispersed
String dispersed_query = "SHOW COLUMNS FROM " + prefix + "dispersed LIKE 'tardis_id'";
ResultSet rsdispersed = statement.executeQuery(dispersed_query);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ public void createTables() {
statement.executeUpdate(queryGravity);

// Table structure for table 'homes'
String queryHomes = "CREATE TABLE IF NOT EXISTS " + prefix + "homes (home_id INTEGER PRIMARY KEY NOT NULL, tardis_id INTEGER, world TEXT COLLATE NOCASE DEFAULT '', x INTEGER, y INTEGER, z INTEGER, direction TEXT DEFAULT '', submarine INTEGER DEFAULT 0)";
String queryHomes = "CREATE TABLE IF NOT EXISTS " + prefix + "homes (home_id INTEGER PRIMARY KEY NOT NULL, tardis_id INTEGER, world TEXT COLLATE NOCASE DEFAULT '', x INTEGER, y INTEGER, z INTEGER, direction TEXT DEFAULT '', submarine INTEGER DEFAULT 0, preset TEXT DEFAULT '')";
statement.executeUpdate(queryHomes);

// Table structure for inventories
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,14 @@ void updateTables() {
String bio_alter = "ALTER TABLE " + prefix + "current ADD biome TEXT DEFAULT ''";
statement.executeUpdate(bio_alter);
}
// add preset to homes
String preset_query = "SELECT sql FROM sqlite_master WHERE tbl_name = '" + prefix + "homes' AND sql LIKE '%preset%'";
ResultSet rspreset = statement.executeQuery(preset_query);
if (!rspreset.next()) {
i++;
String preset_alter = "ALTER TABLE " + prefix + "homes ADD preset TEXT DEFAULT ''";
statement.executeUpdate(preset_alter);
}
// add repair to t_count
String rep_query = "SELECT sql FROM sqlite_master WHERE tbl_name = '" + prefix + "t_count' AND sql LIKE '%repair%'";
ResultSet rsrep = statement.executeQuery(rep_query);
Expand Down
Loading

0 comments on commit 23ec37b

Please sign in to comment.