use of io.github.wysohn.triggerreactor.core.manager.location.Area in project TriggerReactor by wysohn.
the class AbstractAreaTriggerManager method createArea.
/**
* This method does not check if world of smallest and largest are same.
* Also <b>check confliction with {@link #getConflictingAreas(SimpleLocation, SimpleLocation)} before</b> using this method.
* @param name
* @param smallest
* @param largest
* @return true on success; false if name already exist.
*/
public boolean createArea(String name, SimpleLocation smallest, SimpleLocation largest) {
Entry<Area, AreaTrigger> entry = getAreaForLocation(smallest);
if (entry != null)
return false;
Area area = new Area(smallest, largest);
File areaFolder = new File(folder, name);
AreaTrigger trigger = new AreaTrigger(area, areaFolder, name);
nameMapper.put(name, trigger);
setupArea(trigger);
return true;
}
use of io.github.wysohn.triggerreactor.core.manager.location.Area in project TriggerReactor by wysohn.
the class AbstractAreaTriggerManager method reload.
@Override
public void reload() {
FileFilter filter = new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(".yml");
}
};
areaTriggers.clear();
for (File ymlfile : folder.listFiles(filter)) {
String triggerName = extractName(ymlfile);
SimpleLocation smallest = null;
SimpleLocation largest = null;
boolean isSync = false;
try {
smallest = SimpleLocation.valueOf(getData(ymlfile, SMALLEST));
largest = SimpleLocation.valueOf(getData(ymlfile, LARGEST));
isSync = getData(ymlfile, SYNC, false);
} catch (IOException e) {
e.printStackTrace();
plugin.getLogger().warning("Could not load Area Trigger " + ymlfile);
continue;
}
if (smallest == null || largest == null) {
plugin.getLogger().warning("Could not load Area Trigger" + ymlfile);
plugin.getLogger().warning("Could not find Smallest: or Largest:");
continue;
}
File scriptFolder = new File(folder, triggerName);
if (!scriptFolder.exists()) {
scriptFolder.mkdirs();
}
String enterScript = null;
File enterFile = null;
try {
enterFile = getTriggerFile(scriptFolder, "Enter.trg");
enterScript = FileUtil.readFromFile(enterFile);
} catch (IOException e1) {
e1.printStackTrace();
continue;
}
String exitScript = null;
File exitFile = null;
try {
exitFile = getTriggerFile(scriptFolder, "Exit.trg");
exitScript = FileUtil.readFromFile(exitFile);
} catch (IOException e1) {
e1.printStackTrace();
continue;
}
Area area = new Area(smallest, largest);
AreaTrigger trigger = new AreaTrigger(area, scriptFolder, triggerName);
trigger.setSync(isSync);
nameMapper.put(triggerName, trigger);
this.setupArea(trigger);
try {
if (enterScript != null) {
trigger.setEnterTrigger(enterScript);
}
} catch (TriggerInitFailedException e) {
e.printStackTrace();
continue;
}
try {
if (exitScript != null) {
trigger.setExitTrigger(exitScript);
}
} catch (TriggerInitFailedException e) {
e.printStackTrace();
continue;
}
}
}
use of io.github.wysohn.triggerreactor.core.manager.location.Area in project TriggerReactor by wysohn.
the class AbstractAreaTriggerManager method setupArea.
/**
* reset the area cache. Should be called for reloading.
* @param trigger
*/
protected void setupArea(AreaTrigger trigger) {
Area area = trigger.area;
Set<SimpleChunkLocation> sclocs = Area.getAllChunkLocations(area);
for (SimpleChunkLocation scloc : sclocs) {
Map<Area, AreaTrigger> map = areaTriggers.get(scloc);
if (map == null) {
map = new ConcurrentHashMap<>();
areaTriggers.put(scloc, map);
}
map.put(area, trigger);
}
}
use of io.github.wysohn.triggerreactor.core.manager.location.Area in project TriggerReactor by wysohn.
the class TriggerReactor method onCommand.
public boolean onCommand(ICommandSender sender, String command, String[] args) {
if (command.equalsIgnoreCase("triggerreactor")) {
if (!sender.hasPermission("triggerreactor.admin"))
return true;
if (args.length > 0) {
if (args[0].equalsIgnoreCase("debug")) {
debugging = !debugging;
getLogger().info("Debugging is set to " + debugging);
return true;
} else if (args[0].equalsIgnoreCase("click") || args[0].equalsIgnoreCase("c")) {
if (args.length == 1) {
getScriptEditManager().startEdit(sender, "Click Trigger", "", new SaveHandler() {
@Override
public void onSave(String script) {
if (getClickManager().startLocationSet((IPlayer) sender, script)) {
sender.sendMessage("&7Now click the block to set click trigger.");
} else {
sender.sendMessage("&7Already on progress.");
}
}
});
} else {
StringBuilder builder = new StringBuilder();
for (int i = 1; i < args.length; i++) builder.append(args[i] + " ");
if (getClickManager().startLocationSet((IPlayer) sender, builder.toString())) {
sender.sendMessage("&7Now click the block to set click trigger.");
} else {
sender.sendMessage("&7Already on progress.");
}
}
return true;
} else if (args[0].equalsIgnoreCase("walk") || args[0].equalsIgnoreCase("w")) {
if (args.length == 1) {
getScriptEditManager().startEdit(sender, "Walk Trigger", "", new SaveHandler() {
@Override
public void onSave(String script) {
if (getWalkManager().startLocationSet((IPlayer) sender, script)) {
sender.sendMessage("&7Now click the block to set walk trigger.");
} else {
sender.sendMessage("&7Already on progress.");
}
}
});
} else {
StringBuilder builder = new StringBuilder();
for (int i = 1; i < args.length; i++) builder.append(args[i] + " ");
if (getWalkManager().startLocationSet((IPlayer) sender, builder.toString())) {
sender.sendMessage("&7Now click the block to set walk trigger.");
} else {
sender.sendMessage("&7Already on progress.");
}
}
return true;
} else if (args.length > 1 && (args[0].equalsIgnoreCase("command") || args[0].equalsIgnoreCase("cmd"))) {
if (getCmdManager().hasCommandTrigger(args[1])) {
Trigger trigger = getCmdManager().getCommandTrigger(args[1]);
getScriptEditManager().startEdit(sender, trigger.getTriggerName(), trigger.getScript(), new SaveHandler() {
@Override
public void onSave(String script) {
try {
trigger.setScript(script);
} catch (Exception e) {
handleException(sender, e);
}
sender.sendMessage("&aScript is updated!");
saveAsynchronously(getCmdManager());
}
});
} else {
if (args.length == 2) {
getScriptEditManager().startEdit(sender, "Command Trigger", "", new SaveHandler() {
@Override
public void onSave(String script) {
getCmdManager().addCommandTrigger(sender, args[1], script);
sender.sendMessage("&aCommand trigger is binded!");
saveAsynchronously(getCmdManager());
}
});
} else {
StringBuilder builder = new StringBuilder();
for (int i = 2; i < args.length; i++) builder.append(args[i] + " ");
getCmdManager().addCommandTrigger(sender, args[1], builder.toString());
sender.sendMessage("&aCommand trigger is binded!");
saveAsynchronously(getCmdManager());
}
}
return true;
} else if ((args[0].equalsIgnoreCase("variables") || args[0].equalsIgnoreCase("vars"))) {
if (args.length == 3) {
if (args[1].equalsIgnoreCase("Item")) {
String name = args[2];
if (!getVariableManager().isValidName(name)) {
sender.sendMessage("&c" + name + " is not a valid key!");
return true;
}
IItemStack IS = ((IPlayer) sender).getItemInMainHand();
if (IS == null) {
sender.sendMessage("&c" + "You are holding nothing on your main hand!");
return true;
}
try {
getVariableManager().put(name, IS.get());
} catch (Exception e) {
this.handleException(sender, e);
}
sender.sendMessage("&aItem saved!");
} else if (args[1].equalsIgnoreCase("Location")) {
String name = args[2];
if (!getVariableManager().isValidName(name)) {
sender.sendMessage("&c" + name + " is not a valid key!");
return true;
}
ILocation loc = ((IPlayer) sender).getLocation();
try {
getVariableManager().put(name, loc.get());
} catch (Exception e) {
this.handleException(sender, e);
}
sender.sendMessage("&aLocation saved!");
} else {
String name = args[1];
String value = args[2];
if (!getVariableManager().isValidName(name)) {
sender.sendMessage("&c" + name + " is not a valid key!");
return true;
}
if (value.matches(INTEGER_REGEX)) {
try {
getVariableManager().put(name, Integer.parseInt(value));
} catch (Exception e) {
this.handleException(sender, e);
}
} else if (value.matches(DOUBLE_REGEX)) {
try {
getVariableManager().put(name, Double.parseDouble(value));
} catch (Exception e) {
this.handleException(sender, e);
}
} else if (value.equals("true") || value.equals("false")) {
try {
getVariableManager().put(name, Boolean.parseBoolean(value));
} catch (Exception e) {
this.handleException(sender, e);
}
} else {
try {
getVariableManager().put(name, value);
} catch (Exception e) {
this.handleException(sender, e);
}
}
sender.sendMessage("&aVariable saved!");
}
return true;
} else if (args.length == 2) {
String name = args[1];
sender.sendMessage("&7Value of " + name + ": " + getVariableManager().get(name));
return true;
}
} else if (args.length > 1 && args[0].equalsIgnoreCase("run")) {
String script = mergeArguments(args, 1, args.length - 1);
try {
Trigger trigger = getCmdManager().createTempCommandTrigger(script);
trigger.activate(createEmptyPlayerEvent(sender), new HashMap<>());
} catch (Exception e) {
handleException(sender, e);
}
return true;
} else if (args[0].equalsIgnoreCase("inventory") || args[0].equalsIgnoreCase("i")) {
if (args.length > 3 && args[2].equalsIgnoreCase("create")) {
String name = args[1];
int size = -1;
try {
size = Integer.parseInt(args[3]);
} catch (NumberFormatException e) {
sender.sendMessage("&c" + "" + size + " is not a valid number");
return true;
}
if (args.length == 4) {
final int sizeCopy = size;
getScriptEditManager().startEdit(sender, "Inventory Trigger", "", new SaveHandler() {
@Override
public void onSave(String script) {
try {
if (getInvManager().createTrigger(sizeCopy, name, script)) {
sender.sendMessage("&aInventory Trigger created!");
saveAsynchronously(getInvManager());
} else {
sender.sendMessage("&7Another Inventory Trigger with that name already exists");
}
} catch (Exception e) {
handleException(sender, e);
}
}
});
} else {
String script = mergeArguments(args, 4, args.length - 1);
try {
if (getInvManager().createTrigger(size, name, script)) {
sender.sendMessage("&aInventory Trigger created!");
saveAsynchronously(getInvManager());
} else {
sender.sendMessage("&7Another Inventory Trigger with that name already exists");
}
} catch (Exception e) {
handleException(sender, e);
}
}
} else if (args.length == 3 && args[2].equalsIgnoreCase("delete")) {
String name = args[1];
if (getInvManager().deleteTrigger(name)) {
sender.sendMessage("&aDeleted!");
saveAsynchronously(getInvManager());
} else {
sender.sendMessage("&7No such inventory trigger found.");
}
} else if (args.length == 4 && args[2].equals("item")) {
IItemStack IS = ((IPlayer) sender).getItemInMainHand();
IS = IS == null ? null : IS.clone();
String name = args[1];
int index = -1;
try {
index = Integer.parseInt(args[3]);
} catch (NumberFormatException e) {
sender.sendMessage("&c" + "" + index + " is not a valid number.");
return true;
}
InventoryTrigger trigger = getInvManager().getTriggerForName(name);
if (trigger == null) {
sender.sendMessage("&7No such Inventory Trigger named " + name);
return true;
}
if (index > trigger.getItems().length - 1) {
sender.sendMessage("&c" + "" + index + " is out of bound. (Size: " + trigger.getItems().length + ")");
return true;
}
trigger.getItems()[index] = IS;
saveAsynchronously(getInvManager());
} else if (args.length > 2 && args[2].equalsIgnoreCase("open")) {
String name = args[1];
IPlayer forWhom = null;
if (args.length == 3) {
forWhom = (IPlayer) sender;
} else {
IPlayer p = getPlayer(args[3]);
if (p != null)
forWhom = p;
}
if (forWhom == null) {
sender.sendMessage("&7Can't find that player.");
return true;
}
IInventory opened = getInvManager().openGUI(forWhom, name);
if (opened == null) {
sender.sendMessage("&7No such Inventory Trigger named " + name);
return true;
}
} else if (args.length == 3 && args[2].equalsIgnoreCase("edit")) {
String name = args[1];
InventoryTrigger trigger = getInvManager().getTriggerForName(name);
if (trigger == null) {
sender.sendMessage("&7No such Inventory Trigger named " + name);
return true;
}
getScriptEditManager().startEdit(sender, trigger.getTriggerName(), trigger.getScript(), new SaveHandler() {
@Override
public void onSave(String script) {
try {
trigger.setScript(script);
} catch (Exception e) {
handleException(sender, e);
}
sender.sendMessage("&aScript is updated!");
saveAsynchronously(getInvManager());
}
});
} else {
sendCommandDesc(sender, "/triggerreactor[trg] inventory[i] <inventory name> create <size> [...]", "create a new inventory. <size> must be multiple of 9." + " The <size> cannot be larger than 54");
sendDetails(sender, "/trg i MyInventory create 54");
sendCommandDesc(sender, "/triggerreactor[trg] inventory[i] <inventory name> delete", "delete this inventory");
sendDetails(sender, "/trg i MyInventory delete");
sendCommandDesc(sender, "/triggerreactor[trg] inventory[i] <inventory name> item <index>", "set item of inventory to the held item. " + "Clears the slot if you are holding nothing.");
sendDetails(sender, "/trg i MyInventory item 0");
sendCommandDesc(sender, "/triggerreactor[trg] inventory[i] <inventory name> open", "Simply open GUI");
sendCommandDesc(sender, "/triggerreactor[trg] inventory[i] <inventory name> open <player name>", "Simply open GUI for <player name>");
sendCommandDesc(sender, "/triggerreactor[trg] inventory[i] <inventory name> edit", "Edit the inventory trigger.");
}
return true;
} else if (args[0].equalsIgnoreCase("item")) {
if (args.length > 2 && args[1].equalsIgnoreCase("title")) {
IItemStack IS = ((IPlayer) sender).getItemInMainHand();
if (IS == null) {
sender.sendMessage("&c" + "You are holding nothing.");
return true;
}
String title = mergeArguments(args, 2, args.length - 1);
setItemTitle(IS, title);
((IPlayer) sender).setItemInMainHand(IS);
return true;
} else if (args.length > 3 && args[1].equalsIgnoreCase("lore") && args[2].equalsIgnoreCase("add")) {
IItemStack IS = ((IPlayer) sender).getItemInMainHand();
if (IS == null) {
sender.sendMessage("&c" + "You are holding nothing.");
return true;
}
String lore = mergeArguments(args, 3, args.length - 1);
addItemLore(IS, lore);
((IPlayer) sender).setItemInMainHand(IS);
return true;
} else if (args.length > 4 && args[1].equalsIgnoreCase("lore") && args[2].equalsIgnoreCase("set")) {
IItemStack IS = ((IPlayer) sender).getItemInMainHand();
if (IS == null) {
sender.sendMessage("&c" + "You are holding nothing.");
return true;
}
int index = -1;
try {
index = Integer.parseInt(args[3]);
} catch (NumberFormatException e) {
sender.sendMessage("&c" + "" + index + " is not a valid number");
return true;
}
String lore = mergeArguments(args, 4, args.length - 1);
if (!setLore(IS, index, lore)) {
sender.sendMessage("&c" + "" + index + " is out of bound.");
return true;
}
((IPlayer) sender).setItemInMainHand(IS);
return true;
} else if (args.length == 4 && args[1].equalsIgnoreCase("lore") && args[2].equalsIgnoreCase("remove")) {
IItemStack IS = ((IPlayer) sender).getItemInMainHand();
if (IS == null) {
sender.sendMessage("&c" + "You are holding nothing.");
return true;
}
int index = -1;
try {
index = Integer.parseInt(args[3]);
} catch (NumberFormatException e) {
sender.sendMessage("&c" + "" + index + " is not a valid number");
return true;
}
if (!removeLore(IS, index)) {
sender.sendMessage("&7No lore at index " + index);
return true;
}
((IPlayer) sender).setItemInMainHand(IS);
return true;
} else {
sendCommandDesc(sender, "/triggerreactor[trg] item title <item title>", "Change the title of holding item");
sendCommandDesc(sender, "/triggerreactor[trg] item lore add <line>", "Append lore to the holding item");
sendCommandDesc(sender, "/triggerreactor[trg] item lore set <index> <line>", "Replace lore at the specified index." + "(Index start from 0)");
sendCommandDesc(sender, "/triggerreactor[trg] item lore remove <index>", "Delete lore at the specified index.");
}
return true;
} else if (args.length > 0 && (args[0].equalsIgnoreCase("area") || args[0].equalsIgnoreCase("a"))) {
if (args.length == 2 && args[1].equalsIgnoreCase("toggle")) {
boolean result = getSelectionManager().toggleSelection(((IPlayer) sender).getUniqueId());
sender.sendMessage("&7Area selection mode enabled: &6" + result);
} else if (args.length == 3 && args[2].equals("create")) {
String name = args[1];
AreaTrigger trigger = getAreaManager().getArea(name);
if (trigger != null) {
sender.sendMessage("&c" + "Area Trigger " + name + " is already exists!");
return true;
}
Area selected = getSelectionManager().getSelection(((IPlayer) sender).getUniqueId());
if (selected == null) {
sender.sendMessage("&7Invalid or incomplete area selection.");
return true;
}
Set<Area> conflicts = getAreaManager().getConflictingAreas(selected);
if (!conflicts.isEmpty()) {
sender.sendMessage("&7Found [" + conflicts.size() + "] conflicting areas:");
for (Area conflict : conflicts) {
sender.sendMessage("&d " + conflict);
}
return true;
}
if (getAreaManager().createArea(name, selected.getSmallest(), selected.getLargest())) {
sender.sendMessage("&aArea Trigger has created!");
saveAsynchronously(getAreaManager());
getSelectionManager().resetSelections(((IPlayer) sender).getUniqueId());
} else {
sender.sendMessage("&7Area Trigger " + name + " already exists.");
}
} else if (args.length == 3 && args[2].equals("delete")) {
String name = args[1];
if (getAreaManager().deleteArea(name)) {
sender.sendMessage("&aArea Trigger deleted");
saveAsynchronously(getAreaManager());
getSelectionManager().resetSelections(((IPlayer) sender).getUniqueId());
} else {
sender.sendMessage("&7Area Trigger " + name + " does not exists.");
}
} else if (args.length > 2 && args[2].equals("enter")) {
String name = args[1];
AreaTrigger trigger = getAreaManager().getArea(name);
if (trigger == null) {
sender.sendMessage("&7No Area Trigger found with that name.");
return true;
}
if (trigger.getEnterTrigger() != null) {
getScriptEditManager().startEdit(sender, trigger.getTriggerName(), trigger.getEnterTrigger().getScript(), new SaveHandler() {
@Override
public void onSave(String script) {
try {
trigger.setEnterTrigger(script);
saveAsynchronously(getAreaManager());
sender.sendMessage("&aScript is updated!");
} catch (Exception e) {
handleException(sender, e);
}
}
});
} else {
if (args.length == 3) {
getScriptEditManager().startEdit(sender, "Area Trigger [Enter]", "", new SaveHandler() {
@Override
public void onSave(String script) {
try {
trigger.setEnterTrigger(script);
saveAsynchronously(getAreaManager());
} catch (Exception e) {
handleException(sender, e);
}
}
});
} else {
try {
trigger.setEnterTrigger(mergeArguments(args, 3, args.length - 1));
saveAsynchronously(getAreaManager());
} catch (Exception e) {
handleException(sender, e);
}
}
}
} else if (args.length > 2 && args[2].equals("exit")) {
String name = args[1];
AreaTrigger trigger = getAreaManager().getArea(name);
if (trigger == null) {
sender.sendMessage("&7No Area Trigger found with that name.");
return true;
}
if (trigger.getExitTrigger() != null) {
getScriptEditManager().startEdit(sender, trigger.getTriggerName(), trigger.getExitTrigger().getScript(), new SaveHandler() {
@Override
public void onSave(String script) {
try {
trigger.setExitTrigger(script);
saveAsynchronously(getAreaManager());
sender.sendMessage("&aScript is updated!");
} catch (Exception e) {
handleException(sender, e);
}
}
});
} else {
if (args.length == 3) {
getScriptEditManager().startEdit(sender, "Area Trigger [Exit]", "", new SaveHandler() {
@Override
public void onSave(String script) {
try {
trigger.setExitTrigger(script);
saveAsynchronously(getAreaManager());
} catch (Exception e) {
handleException(sender, e);
}
}
});
} else {
try {
trigger.setExitTrigger(mergeArguments(args, 3, args.length - 1));
saveAsynchronously(getAreaManager());
} catch (Exception e) {
handleException(sender, e);
}
}
}
} else if (args.length == 3 && args[2].equals("sync")) {
String name = args[1];
AreaTrigger trigger = getAreaManager().getArea(name);
if (trigger == null) {
sender.sendMessage("&7No Area Trigger found with that name.");
return true;
}
trigger.setSync(!trigger.isSync());
saveAsynchronously(getAreaManager());
sender.sendMessage("&7Sync mode: " + (trigger.isSync() ? "&a" : "&c") + trigger.isSync());
} else {
sendCommandDesc(sender, "/triggerreactor[trg] area[a] toggle", "Enable/Disable area selection mode.");
sendCommandDesc(sender, "/triggerreactor[trg] area[a] <name> create", "Create area trigger out of selected region.");
sendCommandDesc(sender, "/triggerreactor[trg] area[a] <name> delete", "Delete area trigger. BE CAREFUL!");
sendCommandDesc(sender, "/triggerreactor[trg] area[a] <name> enter [...]", "Enable/Disable area selection mode.");
sendDetails(sender, "/trg a TestingArea enter #MESSAGE \"Welcome\"");
sendCommandDesc(sender, "/triggerreactor[trg] area[a] <name> exit [...]", "Enable/Disable area selection mode.");
sendDetails(sender, "/trg a TestingArea exit #MESSAGE \"Bye\"");
sendCommandDesc(sender, "/triggerreactor[trg] area[a] <name> sync", "Enable/Disable sync mode.");
sendDetails(sender, "Setting it to true when you want to cancel event (with #CANCELEVENT)." + " However, setting sync mode will make the trigger run on server thread; keep in mind that" + " it can lag the server if you have too much things going on within the code." + " Set it to false always if you are not sure.");
}
return true;
} else if (args.length > 2 && args[0].equalsIgnoreCase("custom")) {
String eventName = args[1];
String name = args[2];
CustomTrigger trigger = getCustomManager().getTriggerForName(name);
if (trigger != null) {
getScriptEditManager().startEdit(sender, trigger.getTriggerName(), trigger.getScript(), new SaveHandler() {
@Override
public void onSave(String script) {
try {
trigger.setScript(script);
} catch (Exception e) {
handleException(sender, e);
}
sender.sendMessage("&aScript is updated!");
saveAsynchronously(getCustomManager());
}
});
} else {
if (args.length == 3) {
getScriptEditManager().startEdit(sender, "Custom Trigger[" + eventName.substring(Math.max(0, eventName.length() - 10)) + "]", "", new SaveHandler() {
@Override
public void onSave(String script) {
try {
getCustomManager().createCustomTrigger(eventName, name, script);
saveAsynchronously(getCustomManager());
sender.sendMessage("&aCustom Trigger created!");
} catch (Exception e) {
e.printStackTrace();
sender.sendMessage("&c" + "Could not save! " + e.getMessage());
sender.sendMessage("&c" + "See console for detailed messages.");
}
}
});
} else {
String script = mergeArguments(args, 3, args.length - 1);
try {
getCustomManager().createCustomTrigger(eventName, name, script);
saveAsynchronously(getCustomManager());
sender.sendMessage("&aCustom Trigger created!");
} catch (ClassNotFoundException e2) {
sender.sendMessage("&c" + "Could not save! " + e2.getMessage());
sender.sendMessage("&c" + "Provided event name is not valid.");
} catch (Exception e) {
handleException(sender, e);
}
}
}
return true;
} else if (args.length > 0 && (args[0].equalsIgnoreCase("repeat") || args[0].equalsIgnoreCase("r"))) {
if (args.length == 2) {
String name = args[1];
Trigger trigger = getRepeatManager().getTrigger(name);
if (trigger != null) {
getScriptEditManager().startEdit(sender, trigger.getTriggerName(), trigger.getScript(), new SaveHandler() {
@Override
public void onSave(String script) {
try {
trigger.setScript(script);
} catch (Exception e) {
handleException(sender, e);
}
sender.sendMessage("&aScript is updated!");
saveAsynchronously(getRepeatManager());
}
});
} else {
this.getScriptEditManager().startEdit(sender, "Repeating Trigger", "", new SaveHandler() {
@Override
public void onSave(String script) {
try {
getRepeatManager().createTrigger(name, script);
} catch (Exception e) {
handleException(sender, e);
}
saveAsynchronously(getRepeatManager());
}
});
}
} else if (args.length == 4 && args[2].equalsIgnoreCase("interval")) {
String name = args[1];
RepeatingTrigger trigger = getRepeatManager().getTrigger(name);
if (trigger == null) {
sender.sendMessage("&7No Repeating Trigger with name " + name);
return true;
}
String intervalValue = args[3];
long interval = TimeUtil.parseTime(intervalValue);
trigger.setInterval(interval);
saveAsynchronously(getRepeatManager());
sender.sendMessage("&aNow " + "&6[" + name + "]" + "&a will run every " + "&6[" + TimeUtil.milliSecondsToString(interval) + "]");
} else if (args.length == 3 && args[2].equalsIgnoreCase("autostart")) {
String name = args[1];
RepeatingTrigger trigger = getRepeatManager().getTrigger(name);
if (trigger == null) {
sender.sendMessage("&7No Repeating Trigger with name " + name);
return true;
}
trigger.setAutoStart(!trigger.isAutoStart());
saveAsynchronously(getRepeatManager());
sender.sendMessage("Auto start: " + (trigger.isAutoStart() ? "&a" : "&c") + trigger.isAutoStart());
} else if (args.length == 3 && args[2].equalsIgnoreCase("toggle")) {
String name = args[1];
RepeatingTrigger trigger = getRepeatManager().getTrigger(name);
if (trigger == null) {
sender.sendMessage("&7No Repeating Trigger with name " + name);
return true;
}
if (getRepeatManager().isRunning(name)) {
getRepeatManager().stopTrigger(name);
sender.sendMessage("&aScheduled stop. It may take some time depends on CPU usage.");
} else {
getRepeatManager().startTrigger(name);
sender.sendMessage("&aScheduled start up. It may take some time depends on CPU usage.");
}
} else if (args.length == 3 && args[2].equalsIgnoreCase("pause")) {
String name = args[1];
RepeatingTrigger trigger = getRepeatManager().getTrigger(name);
if (trigger == null) {
sender.sendMessage("&7No Repeating Trigger with name " + name);
return true;
}
trigger.setPaused(!trigger.isPaused());
sender.sendMessage("Paused: " + (trigger.isPaused() ? "&a" : "&c") + trigger.isPaused());
} else if (args.length == 3 && args[2].equalsIgnoreCase("status")) {
String name = args[1];
RepeatingTrigger trigger = getRepeatManager().getTrigger(name);
if (trigger == null) {
sender.sendMessage("&7No Repeating Trigger with name " + name);
return true;
}
getRepeatManager().showTriggerInfo(sender, trigger);
} else if (args.length == 3 && args[2].equalsIgnoreCase("delete")) {
String name = args[1];
RepeatingTrigger trigger = getRepeatManager().getTrigger(name);
if (trigger == null) {
sender.sendMessage("&7No Repeating Trigger with name " + name);
return true;
}
getRepeatManager().deleteTrigger(name);
} else {
sendCommandDesc(sender, "/triggerreactor[trg] repeat[r] <name>", "Create Repeating Trigger.");
sendDetails(sender, "&4Quick create is not supported.");
sendDetails(sender, "This creates a Repeating Trigger with default settings. You probably will want to change default values" + " using other commands below. Also, creating Repeating Trigger doesn't start it automatically.");
sendCommandDesc(sender, "/triggerreactor[trg] repeat[r] <name> interval <time format>", "Change the interval of this trigger.");
sendDetails(sender, "Notice the <time format> is not just a number but has specific format for it. For example, you first" + " type what number you want to set and also define the unit of it. If you want it to repeat it every 1 hour, 20 minutes," + " and 50seconds, then it will be &6" + "/trg r BlahBlah interval 1h20m50s." + "&7 Currently only h, m," + " and s are supported for this format. Also notice that if you have two numbers with same format, they will add up as well. For example," + "&6 /trg r BlahBlah interval 30s40s" + "&7 will be added up to 70seconds total. All units other than" + " h, m, or s will be ignored.");
sendCommandDesc(sender, "/triggerreactor[trg] repeat[r] <name> autostart", "Enable/Disable automatic start for this trigger.");
sendDetails(sender, "By setting this to " + "&atrue" + "&7, this trigger will start on plugin enables itself. " + "Otherwise, you have to start it yourself every time.");
sendCommandDesc(sender, "/triggerreactor[trg] repeat[r] <name> toggle", "Start or stop the Repeating Trigger.");
sendCommandDesc(sender, "/triggerreactor[trg] repeat[r] <name> pause", "Pause or unpause the Repeating Trigger.");
sendCommandDesc(sender, "/triggerreactor[trg] repeat[r] <name> status", "See brief information about this trigger.");
sendCommandDesc(sender, "/triggerreactor[trg] repeat[r] <name> delete", "Delete repeating trigger.");
}
return true;
} else if (args.length == 2 && (args[0].equalsIgnoreCase("synccustom") || args[0].equalsIgnoreCase("sync"))) {
String name = args[1];
CustomTrigger trigger = getCustomManager().getTriggerForName(name);
if (trigger == null) {
sender.sendMessage("&7No Custom Trigger found with that name.");
return true;
}
trigger.setSync(!trigger.isSync());
saveAsynchronously(getCustomManager());
sender.sendMessage("&7Sync mode: " + (trigger.isSync() ? "&a" : "&c") + trigger.isSync());
return true;
} else if (args.length == 3 && (args[0].equalsIgnoreCase("delete") || args[0].equalsIgnoreCase("del"))) {
String key = args[2];
switch(args[1]) {
case "vars":
case "variables":
getVariableManager().remove(key);
sender.sendMessage("&aRemoved the variable &6" + key);
break;
case "cmd":
case "command":
if (getCmdManager().removeCommandTrigger(key)) {
sender.sendMessage("&aRemoved the command trigger &6" + key);
saveAsynchronously(getCmdManager());
} else {
sender.sendMessage("&7Command trigger &6" + key + "&7 does not exist");
}
break;
case "custom":
if (getCustomManager().removeTriggerForName(key)) {
sender.sendMessage("&aRemoved the custom trigger &6" + key);
saveAsynchronously(getCustomManager());
} else {
sender.sendMessage("&7Custom Trigger &6" + key + "&7 does not exist");
}
break;
default:
sender.sendMessage("Ex) /trg del vars player.count");
sender.sendMessage("List: variables[vars], command[cmd], custom");
break;
}
return true;
} else if (args[0].equalsIgnoreCase("search")) {
SimpleChunkLocation scloc = ((IPlayer) sender).getChunk();
showGlowStones(sender, getClickManager().getTriggersInChunk(scloc));
showGlowStones(sender, getWalkManager().getTriggersInChunk(scloc));
sender.sendMessage("&7Now trigger blocks will be shown as &6" + "glowstone");
return true;
} else if (args[0].equalsIgnoreCase("saveall")) {
for (Manager manager : Manager.getManagers()) manager.saveAll();
sender.sendMessage("Save complete!");
return true;
} else if (args[0].equalsIgnoreCase("reload")) {
for (Manager manager : Manager.getManagers()) manager.reload();
getExecutorManager().reload();
sender.sendMessage("Reload Complete!");
return true;
}
}
showHelp(sender);
}
return true;
}
use of io.github.wysohn.triggerreactor.core.manager.location.Area in project TriggerReactor by wysohn.
the class AbstractAreaSelectionManager method getSelection.
/**
* @param player
* @return null if invalid selection; Area if done
*/
public Area getSelection(UUID uuid) {
SimpleLocation left = leftPosition.get(uuid);
SimpleLocation right = rightPosition.get(uuid);
if (left != null && right != null) {
if (!left.getWorld().equals(right.getWorld())) {
return null;
}
SimpleLocation smallest = getSmallest(left, right);
SimpleLocation largest = getLargest(left, right);
return new Area(smallest, largest);
} else {
return null;
}
}
Aggregations