Skip to content

Instantly share code, notes, and snippets.

@Double0negative
Created April 22, 2012 06:22
Show Gist options
  • Save Double0negative/2461557 to your computer and use it in GitHub Desktop.
Save Double0negative/2461557 to your computer and use it in GitHub Desktop.
ChatLimiter
package org.curlybrace.double0negative.ChatLimiter;
import java.util.Date;
import java.util.HashMap;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerChatEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.java.JavaPlugin;
public class ChatLimiter extends JavaPlugin implements Listener{
private long time;
private int basePlayers;
private boolean blockNoMoved = false;
// private int add;
private HashMap<Player, PlayerDataHolder>data = new HashMap<Player, PlayerDataHolder>();
private boolean blockDupe = false;
public void onEnable(){
getConfig().options().copyDefaults(true);
this.saveDefaultConfig();
basePlayers = getConfig().getInt("min-players");
time = getConfig().getLong("delay");
//add = getconfig().getLong("")
blockDupe = getConfig().getBoolean("Block-Dupe-Messages");
blockNoMoved = getConfig().getBoolean("Block-Until-Moved");
for(Player p: this.getServer().getOnlinePlayers()){
data.put(p,new PlayerDataHolder());
}
this.getServer().getPluginManager().registerEvents(this, this);
}
@EventHandler(priority = EventPriority.HIGHEST)
public void JoinEvent(PlayerJoinEvent e){
data.put(e.getPlayer(), new PlayerDataHolder());
}
public void LeaveEvent(PlayerQuitEvent e){
data.remove(e.getPlayer());
}
@EventHandler(priority = EventPriority.HIGHEST)
public void ChatHandler(PlayerChatEvent e){
PlayerDataHolder pdata = data.get(e.getPlayer());
if(!e.getPlayer().hasPermission("chatlimiter.ignore") || !e.getPlayer().isOp()){
if(!data.get(e.getPlayer()).moved && blockNoMoved){
e.getPlayer().sendMessage(ChatColor.RED + "You must move before chatting!");
e.setCancelled(true);
return;
}
if(getServer().getOnlinePlayers().length > basePlayers){
Long current = new Date().getTime();
current = current / 1000;
boolean blocked = false;
if(current - pdata.lastMessageTime < time){
e.getPlayer().sendMessage(ChatColor.RED + "You must wait "+ time +" Seconds between messages! (" + (time - (current - pdata.lastMessageTime)) + " remaining)");
e.setCancelled(true);
blocked = true;
}
else{
pdata.lastMessageTime = current;
}
if(pdata.lastMessage.equals(e.getMessage()) && blockDupe){
e.getPlayer().sendMessage(ChatColor.RED + "Cannot send duplicate messages!");
e.setCancelled(true);
}
if(!blocked)
pdata.lastMessage = e.getMessage();
}
}
}
@EventHandler(priority = EventPriority.HIGHEST)
public void MoveHandler(PlayerMoveEvent e){
data.get(e.getPlayer()).moved = true;
}
class PlayerDataHolder{
boolean moved = false;
public long lastMessageTime = 0;
public String lastMessage = "";
}
}
@tmad40blue
Copy link

Hello, looks like ChatLimiter no longer functions in Spigot 1.9 - here's the stacktrace. Thanks!

[09:35:07] [Server thread/INFO]: [ChatLimiter] Enabling ChatLimiter v4                                                        
[09:35:07] [Server thread/ERROR]: Error occurred while enabling ChatLimiter v4 (Is it up to date?)                            
java.lang.NoSuchMethodError: org.bukkit.Server.getOnlinePlayers()[Lorg/bukkit/entity/Player;                                  
        at org.curlybrace.double0negative.ChatLimiter.ChatLimiter.onEnable(ChatLimiter.java:52) ~[?:?]                        
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:291) ~[spigot.jar:git-Spigot-604e046-69e196f]         
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:340) [spigot.jar:git-Spigot-604e046-69e\
196f]                                                                                                                         
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot.jar:git-Spigot-604e046-69\
e196f]                                                                                                                        
        at org.bukkit.craftbukkit.v1_9_R1.CraftServer.loadPlugin(CraftServer.java:361) [spigot.jar:git-Spigot-604e046-69e196f\
]                                                                                                                             
        at org.bukkit.craftbukkit.v1_9_R1.CraftServer.enablePlugins(CraftServer.java:321) [spigot.jar:git-Spigot-604e046-69e1\
96f]                                                                                                                          
        at net.minecraft.server.v1_9_R1.MinecraftServer.t(MinecraftServer.java:411) [spigot.jar:git-Spigot-604e046-69e196f]   
        at net.minecraft.server.v1_9_R1.MinecraftServer.l(MinecraftServer.java:376) [spigot.jar:git-Spigot-604e046-69e196f]   
        at net.minecraft.server.v1_9_R1.MinecraftServer.a(MinecraftServer.java:331) [spigot.jar:git-Spigot-604e046-69e196f]   
        at net.minecraft.server.v1_9_R1.DedicatedServer.init(DedicatedServer.java:269) [spigot.jar:git-Spigot-604e046-69e196f\
]                                                                                                                             
        at net.minecraft.server.v1_9_R1.MinecraftServer.run(MinecraftServer.java:522) [spigot.jar:git-Spigot-604e046-69e196f] 
        at java.lang.Thread.run(Thread.java:745) [?:1.8.0_66]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment