/*
* Copyright (C) 2016 eccentric_nz
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package me.eccentric_nz.TARDIS.commands.preferences;
import java.util.HashMap;
import java.util.UUID;
import me.eccentric_nz.TARDIS.TARDIS;
import me.eccentric_nz.TARDIS.database.QueryFactory;
import me.eccentric_nz.TARDIS.database.ResultSetJunk;
import me.eccentric_nz.TARDIS.database.ResultSetTardis;
import me.eccentric_nz.TARDIS.database.ResultSetTravellers;
import me.eccentric_nz.TARDIS.database.data.Tardis;
import me.eccentric_nz.TARDIS.utility.TARDISMessage;
import me.eccentric_nz.TARDIS.utility.TARDISStaticUtils;
import org.bukkit.entity.Player;
/**
*
* @author eccentric_nz
*/
public class TARDISJunkPreference {
private final TARDIS plugin;
public TARDISJunkPreference(TARDIS plugin) {
this.plugin = plugin;
}
public boolean toggle(Player player, String arg, QueryFactory qf) {
UUID uuid = player.getUniqueId();
String ustr = uuid.toString();
// get TARDIS
HashMap<String, Object> where = new HashMap<String, Object>();
where.put("uuid", ustr);
ResultSetTardis rs = new ResultSetTardis(plugin, where, "", false, 0);
if (rs.resultSet()) {
Tardis tardis = rs.getTardis();
int id = tardis.getTardis_id();
// get current preset
String current = tardis.getPreset().toString();
String chameleon = tardis.getChameleon();
// must be outside of the TARDIS
HashMap<String, Object> wheret = new HashMap<String, Object>();
wheret.put("uuid", ustr);
ResultSetTravellers rst = new ResultSetTravellers(plugin, wheret, false);
if (rst.resultSet()) {
TARDISMessage.send(player, "JUNK_PRESET_OUTSIDE");
return true;
}
if (plugin.getTrackerKeeper().getRebuildCooldown().containsKey(uuid)) {
long now = System.currentTimeMillis();
long cooldown = plugin.getConfig().getLong("police_box.rebuild_cooldown");
long then = plugin.getTrackerKeeper().getRebuildCooldown().get(uuid) + cooldown;
if (now < then) {
TARDISMessage.send(player.getPlayer(), "COOLDOWN", String.format("%d", cooldown / 1000));
return true;
}
}
// make sure is opposite
if (current.equals("JUNK_MODE") && arg.equalsIgnoreCase("on")) {
TARDISMessage.send(player, "JUNK_ALREADY_ON");
return true;
}
if (!current.equals("JUNK_MODE") && arg.equalsIgnoreCase("off")) {
TARDISMessage.send(player, "JUNK_ALREADY_OFF");
return true;
}
// check if they have a junk record
HashMap<String, Object> wherej = new HashMap<String, Object>();
wherej.put("uuid", ustr);
ResultSetJunk rsj = new ResultSetJunk(plugin, wherej);
boolean has = rsj.resultSet();
HashMap<String, Object> sett = new HashMap<String, Object>();
String cham_set = "";
if (arg.equalsIgnoreCase("on")) {
HashMap<String, Object> set = new HashMap<String, Object>();
if (has) {
// update record
HashMap<String, Object> whereu = new HashMap<String, Object>();
whereu.put("uuid", ustr);
set.put("preset", current);
qf.doSyncUpdate("junk", set, whereu);
} else {
// insert record
set.put("uuid", ustr);
set.put("tardis_id", id);
set.put("preset", current);
qf.doSyncInsert("junk", set);
}
// save JUNK_MODE preset
sett.put("chameleon_preset", "JUNK_MODE");
sett.put("chameleon_demat", current);
TARDISMessage.send(player, "JUNK_PRESET_ON");
cham_set = "JUNK_MODE";
}
if (arg.equalsIgnoreCase("off")) {
// restore saved preset
String preset = (has) ? rsj.getPreset().toString() : current;
sett.put("chameleon_preset", preset);
sett.put("chameleon_demat", "JUNK_MODE");
TARDISMessage.send(player, "JUNK_PRESET_OFF");
cham_set = preset;
}
// update tardis table
HashMap<String, Object> whereu = new HashMap<String, Object>();
whereu.put("uuid", ustr);
qf.doSyncUpdate("tardis", sett, whereu);
// set the Chameleon Circuit sign
TARDISStaticUtils.setSign(chameleon, 3, cham_set, player);
// rebuild
player.performCommand("tardis rebuild");
return true;
}
return true;
}
}