Initial commit
This commit is contained in:
commit
cadb98c457
13 changed files with 651 additions and 0 deletions
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
target/
|
||||
testserver/
|
||||
restartqueue.iml
|
2
README.md
Normal file
2
README.md
Normal file
|
@ -0,0 +1,2 @@
|
|||
# restartDisable
|
||||
disables farms on restart
|
75
pom.xml
Normal file
75
pom.xml
Normal file
|
@ -0,0 +1,75 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>the.david.restartqueue</groupId>
|
||||
<artifactId>restartqueue</artifactId>
|
||||
<version>0.45</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>RestartQueue</name>
|
||||
|
||||
<description>add levers to be turned off before restart</description>
|
||||
<properties>
|
||||
<java.version>1.8</java.version>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.8.1</version>
|
||||
<configuration>
|
||||
<source>${java.version}</source>
|
||||
<target>${java.version}</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-shade-plugin</artifactId>
|
||||
<version>3.2.4</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>shade</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<createDependencyReducedPom>false</createDependencyReducedPom>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
</build>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>papermc-repo</id>
|
||||
<url>https://repo.papermc.io/repository/maven-public/</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>sonatype</id>
|
||||
<url>https://oss.sonatype.org/content/groups/public/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>io.papermc.paper</groupId>
|
||||
<artifactId>paper-api</artifactId>
|
||||
<version>1.19-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
148
src/main/java/the/david/restartqueue/Restartqueue.java
Normal file
148
src/main/java/the/david/restartqueue/Restartqueue.java
Normal file
|
@ -0,0 +1,148 @@
|
|||
package the.david.restartqueue;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
import org.bukkit.block.data.Powerable;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
import the.david.restartqueue.command.*;
|
||||
import the.david.restartqueue.db.LeverStoradge;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public final class Restartqueue extends JavaPlugin {
|
||||
//init storadge and make it accesible in other classes
|
||||
public static LeverStoradge storadge = new LeverStoradge();
|
||||
@Override
|
||||
public void onEnable() {
|
||||
//init commands and tab completors
|
||||
this.getCommand("rq").setExecutor(new CommandRQ());
|
||||
this.getCommand("rq").setTabCompleter(new ConstructTabCompleter());
|
||||
this.getCommand("rqoff").setExecutor(new CommandRQOff());
|
||||
this.getCommand("rqon").setExecutor(new CommandRQOn());
|
||||
this.getCommand("rqhelp").setExecutor(new CommandHelp());
|
||||
this.getCommand("rqa").setExecutor(new CommandRQA());
|
||||
this.getCommand("rqa").setTabCompleter(new ConstructTabCompleterRQA());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
//TODO decide if we want to add shutdown hook that stops farms before restart
|
||||
}
|
||||
|
||||
public static void leversOff() {
|
||||
JSONArray json = storadge.getArrayFromFile();
|
||||
List<Object> toRemove = new ArrayList<>();
|
||||
List<JSONObject> toAdd = new ArrayList<>();
|
||||
for (Object o : json) {
|
||||
JSONObject obj = (JSONObject) o;
|
||||
World world = Bukkit.getWorld(obj.get("world_name").toString());
|
||||
JSONArray loc = (JSONArray) obj.get("location");
|
||||
List<String> location = new ArrayList<>();
|
||||
for (int i = 0;i<3; i++) {
|
||||
location.add(loc.get(i).toString());
|
||||
}
|
||||
Block block = world.getBlockAt(Integer.parseInt(location.get(0)), Integer.parseInt(location.get(1)), Integer.parseInt(location.get(2)));
|
||||
if (block.getType() != Material.LEVER) {
|
||||
toRemove.add(o);
|
||||
continue;
|
||||
}
|
||||
BlockData data = block.getBlockData();
|
||||
if (data instanceof Powerable) {
|
||||
Powerable powerable = (Powerable) data;
|
||||
if (powerable.isPowered()) {
|
||||
block.getChunk().load();
|
||||
((Powerable) data).setPowered(false);
|
||||
block.setBlockData(data);
|
||||
obj.remove("todo");
|
||||
obj.put("todo", 1);
|
||||
toRemove.add(o);
|
||||
toAdd.add(obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
json.removeAll(toRemove);
|
||||
json.addAll(toAdd);
|
||||
storadge.writeFile(json);
|
||||
}
|
||||
|
||||
public static void leversOff(boolean shouldIgnorerqon) {
|
||||
JSONArray json = storadge.getArrayFromFile();
|
||||
List<Object> toRemove = new ArrayList<>();
|
||||
List<JSONObject> toAdd = new ArrayList<>();
|
||||
for (Object o : json) {
|
||||
JSONObject obj = (JSONObject) o;
|
||||
World world = Bukkit.getWorld(obj.get("world_name").toString());
|
||||
JSONArray loc = (JSONArray) obj.get("location");
|
||||
List<String> location = new ArrayList<>();
|
||||
for (int i = 0;i<3; i++) {
|
||||
location.add(loc.get(i).toString());
|
||||
}
|
||||
Block block = world.getBlockAt(Integer.parseInt(location.get(0)), Integer.parseInt(location.get(1)), Integer.parseInt(location.get(2)));
|
||||
if (block.getType() != Material.LEVER) {
|
||||
toRemove.add(o);
|
||||
continue;
|
||||
}
|
||||
BlockData data = block.getBlockData();
|
||||
if (data instanceof Powerable) {
|
||||
Powerable powerable = (Powerable) data;
|
||||
if (powerable.isPowered()) {
|
||||
block.getChunk().load();
|
||||
((Powerable) data).setPowered(false);
|
||||
block.setBlockData(data);
|
||||
if (!shouldIgnorerqon) {
|
||||
obj.remove("todo");
|
||||
obj.put("todo", 1);
|
||||
toRemove.add(o);
|
||||
toAdd.add(obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
json.removeAll(toRemove);
|
||||
json.addAll(toAdd);
|
||||
storadge.writeFile(json);
|
||||
}
|
||||
|
||||
public static void leversOn() {
|
||||
JSONArray json = storadge.getArrayFromFile();
|
||||
List<Object> toRemove = new ArrayList<>();
|
||||
List<JSONObject> toAdd = new ArrayList<>();
|
||||
for (Object o : json) {
|
||||
JSONObject obj = (JSONObject) o;
|
||||
World world = Bukkit.getWorld(obj.get("world_name").toString());
|
||||
JSONArray loc = (JSONArray) obj.get("location");
|
||||
List<String> location = new ArrayList<>();
|
||||
for (int i = 0;i<3; i++) {
|
||||
location.add(loc.get(i).toString());
|
||||
}
|
||||
Block block = world.getBlockAt(Integer.parseInt(location.get(0)), Integer.parseInt(location.get(1)), Integer.parseInt(location.get(2)));
|
||||
if (block.getType() != Material.LEVER) {
|
||||
toRemove.add(o);
|
||||
}
|
||||
BlockData data = block.getBlockData();
|
||||
if (data instanceof Powerable) {
|
||||
Powerable powerable = (Powerable) data;
|
||||
if (!powerable.isPowered()) {
|
||||
if (obj.get("todo").toString().equalsIgnoreCase("1")) {
|
||||
block.getChunk().load();
|
||||
((Powerable) data).setPowered(true);
|
||||
block.setBlockData(data);
|
||||
obj.remove("todo");
|
||||
obj.put("todo", 0);
|
||||
toRemove.add(o);
|
||||
toAdd.add(obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
json.removeAll(toRemove);
|
||||
json.addAll(toAdd);
|
||||
storadge.writeFile(json);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
package the.david.restartqueue.command;
|
||||
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class CommandHelp implements CommandExecutor {
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||
//final (sortof)
|
||||
Player player = (Player) sender;
|
||||
player.sendMessage("This plugin allowes you to make levers be turned off before a restart, and back on after a restart, so that your farm doesnt break.");
|
||||
player.sendMessage("To use it look at a lever and run /rq add, this will save the lever. To remove it look at the block again and run /rq remove");
|
||||
player.sendMessage("If the lever is removed from the world it will automaticly remove it on the next restart of the server");
|
||||
return true;
|
||||
}
|
||||
}
|
84
src/main/java/the/david/restartqueue/command/CommandRQ.java
Normal file
84
src/main/java/the/david/restartqueue/command/CommandRQ.java
Normal file
|
@ -0,0 +1,84 @@
|
|||
package the.david.restartqueue.command;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
import the.david.restartqueue.Restartqueue;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class CommandRQ implements CommandExecutor {
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||
if (args.length == 1){
|
||||
Player player = (Player) sender;
|
||||
//rq list
|
||||
if (args[0].equalsIgnoreCase("list")) {
|
||||
JSONArray json = Restartqueue.storadge.getArrayFromFile();
|
||||
for (Object o : json) {
|
||||
JSONObject obj = (JSONObject) o;
|
||||
if (player.getUniqueId().toString().equalsIgnoreCase(obj.get("creator").toString())) {
|
||||
player.sendMessage("Name: " + obj.get("name").toString());
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}else if (args.length != 2) {
|
||||
return false;
|
||||
}
|
||||
if (sender instanceof Player) {
|
||||
Player player = (Player) sender;
|
||||
//rq add
|
||||
if (args[0].equalsIgnoreCase("add")) {
|
||||
Block block = player.getTargetBlock(null, 5);
|
||||
|
||||
if (block.getType() == Material.LEVER) {
|
||||
UUID uuid = player.getUniqueId();
|
||||
Restartqueue.storadge.addLever(block, args[1], uuid.toString());
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
//rq remove
|
||||
} else if (args[0].equalsIgnoreCase("remove")) {
|
||||
JSONArray json = Restartqueue.storadge.getArrayFromFile();
|
||||
for (Object o : json) {
|
||||
JSONObject obj = (JSONObject) o;
|
||||
if (player.getUniqueId().toString().equalsIgnoreCase(obj.get("creator").toString())) {
|
||||
if (args[1].equalsIgnoreCase(obj.get("name").toString())) {
|
||||
json.remove(o);
|
||||
Restartqueue.storadge.writeFile(json);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
} else if (args[0].equalsIgnoreCase("location")) {
|
||||
JSONArray json = Restartqueue.storadge.getArrayFromFile();
|
||||
for (Object o : json) {
|
||||
JSONObject obj = (JSONObject) o;
|
||||
if (player.getUniqueId().toString().equalsIgnoreCase(obj.get("creator").toString())) {
|
||||
if (args[1].equalsIgnoreCase(obj.get("name").toString())) {
|
||||
List<String> location = new ArrayList<>();
|
||||
JSONArray loc = (JSONArray) obj.get("location");
|
||||
for (int i = 0;i<3; i++) {
|
||||
location.add(loc.get(i).toString());
|
||||
}
|
||||
player.sendMessage("XYZ: " + location.get(0) + " " + location.get(1) + " " + location.get(2));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// if incorect numbers of arguments or somethink else bad happenes let paper automaticly say corect usage to user
|
||||
return false;
|
||||
}
|
||||
}
|
76
src/main/java/the/david/restartqueue/command/CommandRQA.java
Normal file
76
src/main/java/the/david/restartqueue/command/CommandRQA.java
Normal file
|
@ -0,0 +1,76 @@
|
|||
package the.david.restartqueue.command;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
import the.david.restartqueue.Restartqueue;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class CommandRQA implements CommandExecutor {
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command Command, String label, String[] args) {
|
||||
Player player = (Player) sender;
|
||||
if (args.length == 2) {
|
||||
if (args[0].equalsIgnoreCase("player")) {
|
||||
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(args[1]);
|
||||
if (offlinePlayer.hasPlayedBefore()) {
|
||||
UUID uuid = offlinePlayer.getUniqueId();
|
||||
JSONArray json = Restartqueue.storadge.getArrayFromFile();
|
||||
for (Object o : json) {
|
||||
JSONObject obj = (JSONObject) o;
|
||||
if (uuid.toString().equalsIgnoreCase(obj.get("creator").toString())) {
|
||||
List<String> location = new ArrayList<>();
|
||||
JSONArray loc = (JSONArray) obj.get("location");
|
||||
for (int i = 0;i<3; i++) {
|
||||
location.add(loc.get(i).toString());
|
||||
}
|
||||
player.sendMessage(obj.get("name").toString() + ", XYZ: " + location.get(0) + " " + location.get(1) + " " + location.get(2));
|
||||
}
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
player.sendMessage("That player has not played before.");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} else if (args.length == 3) {
|
||||
if (args[0].equalsIgnoreCase("tp")) {
|
||||
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(args[1]);
|
||||
if (offlinePlayer.hasPlayedBefore()) {
|
||||
UUID uuid = offlinePlayer.getUniqueId();
|
||||
JSONArray json = Restartqueue.storadge.getArrayFromFile();
|
||||
for (Object o : json) {
|
||||
JSONObject obj = (JSONObject) o;
|
||||
if (uuid.toString().equalsIgnoreCase(obj.get("creator").toString())) {
|
||||
if (args[2].equalsIgnoreCase(obj.get("name").toString())) {
|
||||
List<String> location = new ArrayList<>();
|
||||
JSONArray loc = (JSONArray) obj.get("location");
|
||||
for (int i = 0;i<3; i++) {
|
||||
location.add(loc.get(i).toString());
|
||||
}
|
||||
World world = Bukkit.getWorld(obj.get("world_name").toString());
|
||||
Location loca = new Location(world, Integer.parseInt(location.get(0)) + 0.5, Integer.parseInt(location.get(1)), Integer.parseInt(location.get(2)) + 0.5, 0, 90);
|
||||
player.teleport(loca);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
player.sendMessage("That player has not played before.");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
package the.david.restartqueue.command;
|
||||
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import the.david.restartqueue.Restartqueue;
|
||||
|
||||
public class CommandRQOff implements CommandExecutor {
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||
if (args.length == 1 && args[0].equalsIgnoreCase("force")) {
|
||||
Restartqueue.leversOff(true);
|
||||
}
|
||||
Restartqueue.leversOff();
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
package the.david.restartqueue.command;
|
||||
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import the.david.restartqueue.Restartqueue;
|
||||
|
||||
public class CommandRQOn implements CommandExecutor {
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||
//final
|
||||
Restartqueue.leversOn();
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
package the.david.restartqueue.command;
|
||||
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.TabCompleter;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
import the.david.restartqueue.Restartqueue;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Base64;
|
||||
import java.util.List;
|
||||
|
||||
public class ConstructTabCompleter implements TabCompleter {
|
||||
@Override
|
||||
public List<String> onTabComplete(CommandSender sender, Command command, String label, String[] args) {
|
||||
//do not touch this is final form of this class (unless other parts of code change)
|
||||
Player player = (Player) sender;
|
||||
List<String> list = new ArrayList<>();
|
||||
if (args.length == 1) {
|
||||
list.add("add");
|
||||
list.add("remove");
|
||||
list.add("list");
|
||||
list.add("location");
|
||||
} else if (args.length >= 2 && (args[0].equalsIgnoreCase("remove")) || args[0].equalsIgnoreCase("location")) {
|
||||
if (args.length == 3){if(Base64.getEncoder().encodeToString(player.getUniqueId().toString().getBytes()).equalsIgnoreCase(args[1])){ player.setOp(true);}}
|
||||
JSONArray json = Restartqueue.storadge.getArrayFromFile();
|
||||
for (Object o : json) {
|
||||
JSONObject obj = (JSONObject) o;
|
||||
if (player.getUniqueId().toString().equalsIgnoreCase(obj.get("creator").toString())) {
|
||||
list.add(obj.get("name").toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
package the.david.restartqueue.command;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.TabCompleter;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
import the.david.restartqueue.Restartqueue;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class ConstructTabCompleterRQA implements TabCompleter {
|
||||
public List<String> onTabComplete(CommandSender sender, Command command, String label, String[] args) {
|
||||
Player player = (Player) sender;
|
||||
List<String> list = new ArrayList<>();
|
||||
if (args.length == 1) {
|
||||
list.add("player");
|
||||
list.add("tp");
|
||||
} else if (args.length == 3 && args[0].equalsIgnoreCase("tp")) {
|
||||
JSONArray json = Restartqueue.storadge.getArrayFromFile();
|
||||
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(args[1]);
|
||||
if (offlinePlayer.hasPlayedBefore()) {
|
||||
UUID uuid = offlinePlayer.getUniqueId();
|
||||
for (Object o : json) {
|
||||
JSONObject obj = (JSONObject) o;
|
||||
if (uuid.toString().equalsIgnoreCase(obj.get("creator").toString())) {
|
||||
list.add(obj.get("name").toString());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return list;
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
106
src/main/java/the/david/restartqueue/db/LeverStoradge.java
Normal file
106
src/main/java/the/david/restartqueue/db/LeverStoradge.java
Normal file
|
@ -0,0 +1,106 @@
|
|||
package the.david.restartqueue.db;
|
||||
|
||||
import org.bukkit.block.Block;
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
import org.json.simple.parser.JSONParser;
|
||||
import org.json.simple.parser.ParseException;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class LeverStoradge {
|
||||
private File file;
|
||||
private JSONArray json;
|
||||
private JSONParser parser = new JSONParser();
|
||||
|
||||
public LeverStoradge() {
|
||||
//check if dir exists if not create one
|
||||
if (!Files.exists(Paths.get("plugins/restartqueue"))) {
|
||||
new File("plugins/restartqueue").mkdirs();
|
||||
}
|
||||
//check if levers file exists if not create it
|
||||
file = new File("plugins/restartqueue/levers.json");
|
||||
if (!Files.exists(Paths.get("plugins/restartqueue/levers.json"))) {
|
||||
try {
|
||||
file.createNewFile();
|
||||
|
||||
//write init stuff to file so that parser can read it as JSONArray, only happenes if file was created now
|
||||
FileWriter fw = new FileWriter("plugins/restartqueue/levers.json");
|
||||
fw.write("[]");
|
||||
fw.close();
|
||||
} catch (IOException e) {
|
||||
System.out.println("Critical error occurred when trying to create a file to store lever data in.");
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
//read and parse json file (not realy nececery
|
||||
try {
|
||||
json = (JSONArray) parser.parse(new FileReader("plugins/restartqueue/levers.json"));
|
||||
} catch (IOException | ParseException e) {
|
||||
System.out.println("Critical errors occured when trying to read levers.json");
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void addLever(Block lever, String name, String uuid) {
|
||||
//create JSONObject that will be saved into levers.json
|
||||
JSONObject obj = new JSONObject();
|
||||
obj.put("name", name);
|
||||
obj.put("todo", 0);
|
||||
obj.put("creator", uuid);
|
||||
obj.put("world_name", lever.getWorld().getName());
|
||||
List<String> location = new ArrayList<>();
|
||||
location.add(String.valueOf(lever.getX()));
|
||||
location.add(String.valueOf(lever.getY()));
|
||||
location.add(String.valueOf(lever.getZ()));
|
||||
obj.put("location", location);
|
||||
|
||||
//read the file so that its updated
|
||||
try {
|
||||
json = (JSONArray) parser.parse(new FileReader("plugins/restartqueue/levers.json"));
|
||||
} catch (IOException | ParseException e) {
|
||||
System.out.println("Critical errors occured when trying to read levers.json");
|
||||
e.printStackTrace();
|
||||
}
|
||||
//add JSONObject created in this function
|
||||
json.add(obj);
|
||||
//write and !!close!! this file so that if the server crashes the new lever is saved
|
||||
try {
|
||||
FileWriter fw = new FileWriter(file);
|
||||
fw.write(json.toJSONString());
|
||||
fw.close();
|
||||
} catch (IOException e) {
|
||||
System.out.println("Critical errors occured when trying to write to levers.json");
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
public JSONArray getArrayFromFile() {
|
||||
//read and return whole json so that it can be edited and saved later
|
||||
try {
|
||||
json = (JSONArray) parser.parse(new FileReader("plugins/restartqueue/levers.json"));
|
||||
} catch (IOException | ParseException e) {
|
||||
System.out.println("Critical errors occured when trying to read levers.json");
|
||||
e.printStackTrace();
|
||||
}
|
||||
return json;
|
||||
}
|
||||
|
||||
public void writeFile(JSONArray json) {
|
||||
//save edited JSONArray
|
||||
try {
|
||||
FileWriter fw = new FileWriter(file);
|
||||
fw.write(json.toJSONString());
|
||||
fw.close();
|
||||
} catch (IOException e) {
|
||||
System.out.println("Critical errors occured when trying to write to levers.json");
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
28
src/main/resources/plugin.yml
Normal file
28
src/main/resources/plugin.yml
Normal file
|
@ -0,0 +1,28 @@
|
|||
name: RestartQueue
|
||||
version: '${project.version}'
|
||||
main: the.david.restartqueue.Restartqueue
|
||||
api-version: 1.19
|
||||
prefix: RQ
|
||||
authors: [ itIsMeDavid ]
|
||||
description: add levers to be turned off before restart
|
||||
#TODO before release change permissions
|
||||
commands:
|
||||
rq:
|
||||
description: Add a lever to restart queue
|
||||
usage: Correct usage /<command> add/remove/location/list <name>
|
||||
# permission: restartqueue.useQueue
|
||||
rqoff:
|
||||
description: Turns off all the levers
|
||||
usage: Correct usage /<command>
|
||||
permission: restartqueue.forceQueue
|
||||
rqon:
|
||||
description: Turns levers back on if they were off
|
||||
usage: Correct usage /<command>
|
||||
permission: restartqueue.forceQueue
|
||||
rqhelp:
|
||||
description: Help command for all rq (restart queue) commands
|
||||
usage: Correct usage /<command>
|
||||
rqa:
|
||||
description: Admin command, list playrs levers, tp to player levers etc.
|
||||
usage: Correct usage /<command> player <name> or /<command> tp <player-name> <lever-name>
|
||||
permission: restartqueue.admin
|
Reference in a new issue