diff --git a/pom.xml b/pom.xml
index c300fd7..7c70711 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,6 +28,14 @@
plugin.yml
+
+ .
+ true
+ src/main/resources
+
+ config.yml
+
+
diff --git a/src/main/java/nl/SBDeveloper/V10Lift/API/V10LiftAPI.java b/src/main/java/nl/SBDeveloper/V10Lift/API/V10LiftAPI.java
index 893befd..e265c3f 100644
--- a/src/main/java/nl/SBDeveloper/V10Lift/API/V10LiftAPI.java
+++ b/src/main/java/nl/SBDeveloper/V10Lift/API/V10LiftAPI.java
@@ -576,4 +576,49 @@ public class V10LiftAPI {
return 0;
}
+ public void sendLiftInfo(Player p, String liftName) {
+ if (p == null || liftName == null || !DataManager.containsLift(liftName)) return;
+
+ Lift lift = DataManager.getLift(liftName);
+
+ if (!lift.getOwners().contains(p.getUniqueId()) && !p.hasPermission("v10lift.admin")) {
+ p.sendMessage(ChatColor.RED + "You don't have the permission to check this lift!");
+ } else {
+ p.sendMessage(ChatColor.GOLD + "Elevator: " + ChatColor.YELLOW + liftName);
+ p.sendMessage(ChatColor.GOLD + "Settings:");
+ p.sendMessage(ChatColor.GREEN + " Speed: " + ChatColor.YELLOW + lift.getSpeed());
+ p.sendMessage(ChatColor.GREEN + " Realistic Mode: " + ChatColor.YELLOW + lift.isRealistic());
+ p.sendMessage(ChatColor.GREEN + " Malfunction: " + ChatColor.YELLOW + lift.isDefective());
+ p.sendMessage(ChatColor.GOLD + "Floors:");
+ if (lift.getFloors().isEmpty()) {
+ p.sendMessage(ChatColor.RED + "None.");
+ } else {
+ for (Map.Entry entry : lift.getFloors().entrySet()) {
+ p.sendMessage(ChatColor.GREEN + " " + entry.getKey() + ":");
+ Floor f = entry.getValue();
+ p.sendMessage(ChatColor.YELLOW + " World: " + ChatColor.GREEN + f.getWorld());
+ p.sendMessage(ChatColor.YELLOW + " Height: " + ChatColor.GREEN + f.getY());
+ p.sendMessage(ChatColor.YELLOW + " Whitelist:");
+ if (f.getWhitelist().isEmpty()) {
+ p.sendMessage(ChatColor.GOLD + " None.");
+ } else {
+ ChatColor color = ChatColor.DARK_PURPLE;
+ Iterator iter = f.getWhitelist().iterator();
+ StringBuilder sb = new StringBuilder();
+ sb.append(" ").append(color).append(Bukkit.getOfflinePlayer(iter.next()).getName());
+ while (iter.hasNext()) {
+ if (color == ChatColor.DARK_PURPLE) {
+ color = ChatColor.LIGHT_PURPLE;
+ } else {
+ color = ChatColor.DARK_PURPLE;
+ }
+ sb.append(ChatColor.AQUA).append(", ").append(color).append(Bukkit.getOfflinePlayer(iter.next()).getName());
+ }
+ p.sendMessage(sb.toString());
+ }
+ }
+ }
+ }
+ }
+
}
diff --git a/src/main/java/nl/SBDeveloper/V10Lift/Commands/V10LiftCommand.java b/src/main/java/nl/SBDeveloper/V10Lift/Commands/V10LiftCommand.java
index b29f165..b802c44 100644
--- a/src/main/java/nl/SBDeveloper/V10Lift/Commands/V10LiftCommand.java
+++ b/src/main/java/nl/SBDeveloper/V10Lift/Commands/V10LiftCommand.java
@@ -7,9 +7,7 @@ import nl.SBDeveloper.V10Lift.API.Objects.LiftSign;
import nl.SBDeveloper.V10Lift.Managers.DataManager;
import nl.SBDeveloper.V10Lift.Utils.LocationSerializer;
import nl.SBDeveloper.V10Lift.V10LiftPlugin;
-import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
-import org.bukkit.Location;
+import org.bukkit.*;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.block.Sign;
@@ -17,12 +15,10 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
+import org.bukkit.inventory.ItemStack;
import javax.annotation.Nonnull;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
public class V10LiftCommand implements CommandExecutor {
@@ -38,6 +34,7 @@ public class V10LiftCommand implements CommandExecutor {
//v10lift create || v10lift create
if (!(sender instanceof Player)) {
sender.sendMessage(ChatColor.RED + "You have to be a player to do this.");
+ return true;
}
if (sender.hasPermission("v10lift.build") || sender.hasPermission("v10lift.admin")) {
return createCommand(sender, args);
@@ -48,6 +45,7 @@ public class V10LiftCommand implements CommandExecutor {
//v10lift delete
if (!(sender instanceof Player)) {
sender.sendMessage(ChatColor.RED + "You have to be a player to do this.");
+ return true;
}
if (sender.hasPermission("v10lift.build") || sender.hasPermission("v10lift.admin")) {
return deleteCommand(sender, args);
@@ -58,6 +56,7 @@ public class V10LiftCommand implements CommandExecutor {
//v10lift edit
if (!(sender instanceof Player)) {
sender.sendMessage(ChatColor.RED + "You have to be a player to do this.");
+ return true;
}
if (sender.hasPermission("v10lift.build") || sender.hasPermission("v10lift.admin")) {
return editCommand(sender, args);
@@ -68,6 +67,7 @@ public class V10LiftCommand implements CommandExecutor {
//v10lift floor add || v10lift floor del || v10lift floor rename
if (!(sender instanceof Player)) {
sender.sendMessage(ChatColor.RED + "You have to be a player to do this.");
+ return true;
}
if (sender.hasPermission("v10lift.build") || sender.hasPermission("v10lift.admin")) {
return floorCommand(sender, args);
@@ -78,6 +78,7 @@ public class V10LiftCommand implements CommandExecutor {
//v10lift input add || v10lift input del
if (!(sender instanceof Player)) {
sender.sendMessage(ChatColor.RED + "You have to be a player to do this.");
+ return true;
}
if (sender.hasPermission("v10lift.build") || sender.hasPermission("v10lift.admin")) {
return inputCommand(sender, args);
@@ -88,6 +89,7 @@ public class V10LiftCommand implements CommandExecutor {
//v10lift offline add || v10lift offline del
if (!(sender instanceof Player)) {
sender.sendMessage(ChatColor.RED + "You have to be a player to do this.");
+ return true;
}
if (sender.hasPermission("v10lift.build") || sender.hasPermission("v10lift.admin")) {
return offlineCommand(sender, args);
@@ -98,6 +100,7 @@ public class V10LiftCommand implements CommandExecutor {
//v10lift rename
if (!(sender instanceof Player)) {
sender.sendMessage(ChatColor.RED + "You have to be a player to do this.");
+ return true;
}
if (sender.hasPermission("v10lift.build") || sender.hasPermission("v10lift.admin")) {
return renameCommand(sender, args);
@@ -108,6 +111,7 @@ public class V10LiftCommand implements CommandExecutor {
//v10lift build
if (!(sender instanceof Player)) {
sender.sendMessage(ChatColor.RED + "You have to be a player to do this.");
+ return true;
}
if (sender.hasPermission("v10lift.build") || sender.hasPermission("v10lift.admin")) {
return buildCommand(sender);
@@ -118,6 +122,7 @@ public class V10LiftCommand implements CommandExecutor {
//v10lift rope add || v10lift rope del
if (!(sender instanceof Player)) {
sender.sendMessage(ChatColor.RED + "You have to be a player to do this.");
+ return true;
}
if (sender.hasPermission("v10lift.build") || sender.hasPermission("v10lift.admin")) {
return ropeCommand(sender, args);
@@ -128,14 +133,230 @@ public class V10LiftCommand implements CommandExecutor {
//v10lift door || v10lift door
if (!(sender instanceof Player)) {
sender.sendMessage(ChatColor.RED + "You have to be a player to do this.");
+ return true;
}
if (sender.hasPermission("v10lift.build") || sender.hasPermission("v10lift.admin")) {
return doorCommand(sender, args);
} else {
sender.sendMessage(ChatColor.RED + "You don't have the permission to do this!");
}
+ } else if (args[0].equalsIgnoreCase("whitelist") && (args.length == 3 || args.length == 4)) {
+ //v10lift whitelist add || v10lift whitelist del
+ if (!(sender instanceof Player)) {
+ sender.sendMessage(ChatColor.RED + "You have to be a player to do this.");
+ return true;
+ }
+ if (sender.hasPermission("v10lift.build") || sender.hasPermission("v10lift.admin")) {
+ return whitelistCommand(sender, args);
+ } else {
+ sender.sendMessage(ChatColor.RED + "You don't have the permission to do this!");
+ }
+ } else if (args[0].equalsIgnoreCase("whois") && (args.length == 1 || args.length == 2)) {
+ //v10lift whois || v10lift whois
+ if (!(sender instanceof Player)) {
+ sender.sendMessage(ChatColor.RED + "You have to be a player to do this.");
+ return true;
+ }
+ if (sender.hasPermission("v10lift.build") || sender.hasPermission("v10lift.admin")) {
+ return whoisCommand(sender, args);
+ } else {
+ sender.sendMessage(ChatColor.RED + "You don't have the permission to do this!");
+ }
+ } else if (args[0].equalsIgnoreCase("speed") && args.length == 2) {
+ //v10lift speed
+ if (!(sender instanceof Player)) {
+ sender.sendMessage(ChatColor.RED + "You have to be a player to do this.");
+ return true;
+ }
+ if (sender.hasPermission("v10lift.build") || sender.hasPermission("v10lift.admin")) {
+ return speedCommand(sender, args);
+ } else {
+ sender.sendMessage(ChatColor.RED + "You don't have the permission to do this!");
+ }
+ } else if (args[0].equalsIgnoreCase("sound") && args.length == 1) {
+ //v10lift sound
+ if (!(sender instanceof Player)) {
+ sender.sendMessage(ChatColor.RED + "You have to be a player to do this.");
+ return true;
+ }
+ if (sender.hasPermission("v10lift.build") || sender.hasPermission("v10lift.admin")) {
+ return soundCommand(sender);
+ } else {
+ sender.sendMessage(ChatColor.RED + "You don't have the permission to do this!");
+ }
+ } else if (args[0].equalsIgnoreCase("realistic") && args.length == 1) {
+ //v10lift realistic
+ if (!(sender instanceof Player)) {
+ sender.sendMessage(ChatColor.RED + "You have to be a player to do this.");
+ return true;
+ }
+ if (sender.hasPermission("v10lift.build") || sender.hasPermission("v10lift.admin")) {
+ return realisticCommand(sender);
+ } else {
+ sender.sendMessage(ChatColor.RED + "You don't have the permission to do this!");
+ }
+ } else if (args[0].equalsIgnoreCase("repair") && args.length == 2) {
+ //v10lift repair
+ if (!(sender instanceof Player)) {
+ sender.sendMessage(ChatColor.RED + "You have to be a player to do this.");
+ return true;
+ }
+ if (sender.hasPermission("v10lift.build") || sender.hasPermission("v10lift.admin")) {
+ return repairCommand(sender, args);
+ } else {
+ sender.sendMessage(ChatColor.RED + "You don't have the permission to do this!");
+ }
+ } else {
+ return helpCommand(sender);
}
- return false;
+ return true;
+ }
+
+ private boolean repairCommand(CommandSender sender, @Nonnull String[] args) {
+ Player p = (Player) sender;
+ String liftName = args[1];
+ if (!DataManager.containsLift(liftName)) {
+ sender.sendMessage(ChatColor.RED + "Lift " + args[1] + " doesn't exists!");
+ return true;
+ }
+
+ Lift lift = DataManager.getLift(liftName);
+
+ if (!lift.isDefective()) {
+ sender.sendMessage(ChatColor.RED + "This lift isn't defective!");
+ return true;
+ }
+
+ //TODO Add defaults to config!!!
+ int masterAmount = 2;
+ Material masterItem = Material.DIAMOND;
+ if (p.getGameMode() != GameMode.CREATIVE && masterAmount > 0) {
+ if (!p.getInventory().contains(masterItem)) {
+ sender.sendMessage(ChatColor.RED + "You need " + masterAmount + "x " + masterItem.toString().toLowerCase() + "!");
+ return true;
+ }
+ p.getInventory().remove(new ItemStack(masterItem, masterAmount));
+ }
+ V10LiftPlugin.getAPI().setDefective(liftName, false);
+ sender.sendMessage(ChatColor.GREEN + "Lift repaired!");
+ return true;
+ }
+
+ private boolean realisticCommand(CommandSender sender) {
+ Player p = (Player) sender;
+ if (!DataManager.containsEditPlayer(p.getUniqueId())) {
+ sender.sendMessage(ChatColor.RED + "First switch on the editor mode!");
+ return true;
+ }
+
+ Lift lift = DataManager.getLift(DataManager.getEditPlayer(p.getUniqueId()));
+ lift.setRealistic(!lift.isRealistic());
+ sender.sendMessage(ChatColor.GREEN + "Realistic mode turned " + (lift.isSound() ? "on" : "off") + "!");
+ return true;
+ }
+
+ private boolean soundCommand(CommandSender sender) {
+ Player p = (Player) sender;
+ if (!DataManager.containsEditPlayer(p.getUniqueId())) {
+ sender.sendMessage(ChatColor.RED + "First switch on the editor mode!");
+ return true;
+ }
+
+ Lift lift = DataManager.getLift(DataManager.getEditPlayer(p.getUniqueId()));
+ lift.setSound(!lift.isSound());
+ sender.sendMessage(ChatColor.GREEN + "Sound mode turned " + (lift.isSound() ? "on" : "off") + "!");
+ return true;
+ }
+
+ private boolean speedCommand(CommandSender sender, String[] args) {
+ Player p = (Player) sender;
+ if (!DataManager.containsEditPlayer(p.getUniqueId())) {
+ sender.sendMessage(ChatColor.RED + "First switch on the editor mode!");
+ return true;
+ }
+
+ Lift lift = DataManager.getLift(DataManager.getEditPlayer(p.getUniqueId()));
+ try {
+ int speed = Integer.parseInt(args[1]);
+ lift.setSpeed(speed);
+ if (lift.getSpeed() < 1) lift.setSpeed(1);
+ sender.sendMessage(ChatColor.GREEN + "Lift speed changed!");
+ } catch (NumberFormatException e) {
+ sender.sendMessage(ChatColor.RED + "Wrong speed: " + args[1]);
+ }
+ return true;
+ }
+
+ private boolean whoisCommand(CommandSender sender, @Nonnull String[] args) {
+ Player p = (Player) sender;
+ if (args.length < 2) {
+ //Without name
+ DataManager.addWhoisREQPlayer(p.getUniqueId());
+ sender.sendMessage(ChatColor.GREEN + "Now right-click on the block you want to check.");
+ } else {
+ String liftName = args[1];
+ if (!DataManager.containsLift(liftName)) {
+ sender.sendMessage(ChatColor.RED + "Lift " + liftName + " not found!");
+ } else {
+ V10LiftPlugin.getAPI().sendLiftInfo(p, liftName);
+ }
+ }
+ return true;
+ }
+
+ private boolean whitelistCommand(CommandSender sender, @Nonnull String[] args) {
+ Player p = (Player) sender;
+ if (!DataManager.containsEditPlayer(p.getUniqueId())) {
+ sender.sendMessage(ChatColor.RED + "First switch on the editor mode!");
+ return true;
+ }
+
+ Lift lift = DataManager.getLift(DataManager.getEditPlayer(p.getUniqueId()));
+ OfflinePlayer wp = Bukkit.getOfflinePlayer(args[2]);
+ UUID wpu = wp.getUniqueId();
+
+ String floor = null;
+ if (args.length < 4) {
+ Block b = p.getLocation().getBlock();
+ Floor f = new Floor(b.getY() - 1, Objects.requireNonNull(b.getWorld(), "World was null at doorCommand").getName());
+ if (!lift.getFloors().containsValue(f)) {
+ sender.sendMessage(ChatColor.RED + "Automatic floor detection failed!");
+ return true;
+ }
+ for (Map.Entry e : lift.getFloors().entrySet()) {
+ Floor fl = e.getValue();
+ if (fl.equals(f)) {
+ floor = e.getKey();
+ break;
+ }
+ }
+ } else {
+ floor = args[3];
+ if (!lift.getFloors().containsKey(floor)) {
+ sender.sendMessage(ChatColor.RED + "Floor " + args[3] + " not found!");
+ return true;
+ }
+ }
+
+ Floor f = lift.getFloors().get(floor);
+ if (args[1].equalsIgnoreCase("add")) {
+ if (f.getWhitelist().contains(wpu)) {
+ sender.sendMessage(ChatColor.RED + "Whitelist already contains this user!");
+ } else {
+ f.getWhitelist().add(wpu);
+ sender.sendMessage(ChatColor.GREEN + "User added to whitelist!");
+ }
+ } else if (args[1].equalsIgnoreCase("del")) {
+ if (!f.getWhitelist().contains(wpu)) {
+ sender.sendMessage(ChatColor.RED + "Whitelist doesn't contain this user!");
+ } else {
+ f.getWhitelist().remove(wpu);
+ sender.sendMessage(ChatColor.GREEN + "User removed from whitelist!");
+ }
+ } else {
+ return helpCommand(sender);
+ }
+ return true;
}
private boolean doorCommand(CommandSender sender, String[] args) {
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index e69de29..4ba0571 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -0,0 +1 @@
+test: "jup"
\ No newline at end of file