diff --git a/src/main/java/network/warzone/scaffold/Scaffold.java b/src/main/java/network/warzone/scaffold/Scaffold.java index 303b7b7..755dd32 100644 --- a/src/main/java/network/warzone/scaffold/Scaffold.java +++ b/src/main/java/network/warzone/scaffold/Scaffold.java @@ -30,7 +30,7 @@ public void onEnable() { instance = this; //TODO Disabled large number warning for now but add back later with some changes - //getServer().getPluginManager().registerEvents(new ScaffoldListener(), this); + getServer().getPluginManager().registerEvents(new ScaffoldListener(), this); this.commands = new CommandsManager() { @Override @@ -39,6 +39,8 @@ public boolean hasPermission(CommandSender sender, String perm) { } }; + this.saveDefaultConfig(); // Generate configuration file. + CommandsManagerRegistration cmds = new CommandsManagerRegistration(this, this.commands); cmds.register(ScaffoldCommands.class); diff --git a/src/main/java/network/warzone/scaffold/ScaffoldListener.java b/src/main/java/network/warzone/scaffold/ScaffoldListener.java index 7dcdcce..ad65a8f 100644 --- a/src/main/java/network/warzone/scaffold/ScaffoldListener.java +++ b/src/main/java/network/warzone/scaffold/ScaffoldListener.java @@ -2,9 +2,14 @@ import com.google.common.base.Splitter; import com.sk89q.minecraft.util.commands.ChatColor; +import org.bukkit.Location; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerCommandPreprocessEvent; +import org.bukkit.event.player.PlayerMoveEvent; +import org.bukkit.util.Vector; import java.text.NumberFormat; import java.util.*; @@ -14,46 +19,58 @@ */ public class ScaffoldListener implements Listener { + FileConfiguration config = Scaffold.get().getConfig(); private static final int NUMBER_WARNING = 950; - private final Map todo = new HashMap<>(); - @EventHandler - public void onPlayerCommand(PlayerCommandPreprocessEvent event) { - List outdated = new ArrayList<>(); - Date oneMinAgo = new Date(System.currentTimeMillis() - 1000 * 60); - for (Date date : this.todo.keySet()) { - if (date.before(oneMinAgo)) - outdated.add(date); - } +// @EventHandler +// public void onPlayerCommand(PlayerCommandPreprocessEvent event) { +// List outdated = new ArrayList<>(); +// Date oneMinAgo = new Date(System.currentTimeMillis() - 1000 * 60); +// for (Date date : this.todo.keySet()) { +// if (date.before(oneMinAgo)) +// outdated.add(date); +// } +// +// for (Date date : outdated) +// this.todo.remove(date); +// +// // Already entered, remove +// if (this.todo.containsValue(event.getMessage())) { +// Date remove = null; +// for (Date date : this.todo.keySet()) +// if (this.todo.get(date).equals(event.getMessage())) +// remove = date; +// this.todo.remove(remove); +// return; +// } +// +// List parts = Splitter.on(' ').splitToList(event.getMessage()); +// for (String part : parts) { +// try { +// Number number = NumberFormat.getInstance().parse(part); +// if (number.doubleValue() > NUMBER_WARNING) { +// this.todo.put(new Date(), event.getMessage()); +// event.getPlayer().sendMessage(ChatColor.RED + "Large number detected! Please try smaller operations or type the command again to ignore this warning."); +// event.getPlayer().sendMessage(ChatColor.RED + event.getMessage()); +// event.setCancelled(true); +// break; +// } +// } catch (Exception e) { +// // Ignore, not a number +// } +// } +// } - for (Date date : outdated) - this.todo.remove(date); - - // Already entered, remove - if (this.todo.containsValue(event.getMessage())) { - Date remove = null; - for (Date date : this.todo.keySet()) - if (this.todo.get(date).equals(event.getMessage())) - remove = date; - this.todo.remove(remove); - return; - } + // Detect if a player is below 0 to stop players from falling into the void. + @EventHandler + public void onVoidDepth(PlayerMoveEvent event) { + Player player = event.getPlayer(); + Location playerlocation = player.getLocation(); - List parts = Splitter.on(' ').splitToList(event.getMessage()); - for (String part : parts) { - try { - Number number = NumberFormat.getInstance().parse(part); - if (number.doubleValue() > NUMBER_WARNING) { - this.todo.put(new Date(), event.getMessage()); - event.getPlayer().sendMessage(ChatColor.RED + "Large number detected! Please try smaller operations or type the command again to ignore this warning."); - event.getPlayer().sendMessage(ChatColor.RED + event.getMessage()); - event.setCancelled(true); - break; - } - } catch (Exception e) { - // Ignore, not a number - } + if (config.getBoolean("voidbounce") == true && playerlocation.getY() < -64) { + player.setVelocity(new Vector(0,2,0)); } } + } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml new file mode 100644 index 0000000..e831495 --- /dev/null +++ b/src/main/resources/config.yml @@ -0,0 +1 @@ +voidbounce: true \ No newline at end of file