Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion src/main/java/network/warzone/scaffold/Scaffold.java
Original file line number Diff line number Diff line change
Expand Up @@ -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<CommandSender>() {
@Override
Expand All @@ -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);

Expand Down
87 changes: 52 additions & 35 deletions src/main/java/network/warzone/scaffold/ScaffoldListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -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.*;
Expand All @@ -14,46 +19,58 @@
*/
public class ScaffoldListener implements Listener {

FileConfiguration config = Scaffold.get().getConfig();
private static final int NUMBER_WARNING = 950;

private final Map<Date, String> todo = new HashMap<>();

@EventHandler
public void onPlayerCommand(PlayerCommandPreprocessEvent event) {
List<Date> 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<Date> 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<String> 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<String> 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));
}
}

}
1 change: 1 addition & 0 deletions src/main/resources/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
voidbounce: true