PacketsBookFix
The plugin fixes DOS packages of the book. It was private plugin, but I laid it out for evil to those who started selling it, now you can use it whatever you want.
Dependencies: ProtocolLib.
Permissions:
PacketFix.reload - Reload config. (Can be changed in the Config)
Commands:
/packetbookfix reload - Reloads config.
Config:
BanMessage: '&cBook edited too quickly!' //Message at the kick.
BanPlayer: false // Ban or not.
KickPlayer: true // Kick the player or not.
PacketInMillis: 1000 //Packet in millisecond
ReloadPermissions: PacketFix.reload //Permissions to reload the config.
ReloadedMessage: '&aPlugin successfully reloaded.' //Message when the config is reloaded.
Source
package com.demkom58.packet;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import com.comphenix.protocol.events.PacketListener;
import com.comphenix.protocol.events.PacketContainer;
import com.comphenix.protocol.events.PacketEvent;
import org.bukkit.plugin.Plugin;
import com.comphenix.protocol.events.PacketAdapter;
import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.events.ListenerPriority;
import com.comphenix.protocol.ProtocolLibrary;
import org.bukkit.entity.Player;
import java.util.WeakHashMap;
import org.bukkit.plugin.java.JavaPlugin;
public class fix extends JavaPlugin
{
private int PacketInMillis;
private boolean kick;
private boolean ban;
private String reason;
private String ReloadPermissions;
private String ReloadedMessage;
private WeakHashMap<Player, Long> hmap;
public fix() {
hmap = new WeakHashMap<Player, Long>();
}
public void onEnable() {
getConfig().options().copyDefaults(true);
saveConfig();
PacketInMillis = getConfig().getInt("PacketInMillis");
kick = getConfig().getBoolean("KickPlayer");
ban = getConfig().getBoolean("BanPlayer");
reason = getConfig().getString("BanMessage").replaceAll("&", "§");
ReloadPermissions = getConfig().getString("ReloadPermissions");
ReloadedMessage = getConfig().getString("ReloadedMessage").replaceAll("&", "§");
ProtocolLibrary.getProtocolManager().addPacketListener((PacketListener)new PacketAdapter(this, ListenerPriority.HIGHEST, new PacketType[] { PacketType.Play.Client.CUSTOM_PAYLOAD }) {
public void onPacketReceiving(final PacketEvent event) {
final PacketContainer packet = event.getPacket();
final String channelName = (String)packet.getStrings().read(0);
final Player p = event.getPlayer();
if (channelName.contains("MC|BEdit") || channelName.contains("MC|BSign")) {
safePacket(p, plugin, event);
}
}
});
}
private void safePacket(final Player p, final Plugin pl, final PacketEvent event) {
if (hmap.containsKey(event.getPlayer()) && hmap.get(event.getPlayer()) < System.currentTimeMillis()) {
hmap.put(p, System.currentTimeMillis()+PacketInMillis);
} else {
hmap.put(p, System.currentTimeMillis()+PacketInMillis);
}
if (hmap.containsKey(event.getPlayer())) {
if (hmap.get(p) > System.currentTimeMillis()) {
event.setCancelled(true);
if (ban) {
getServer().banIP(p.getAddress().getHostString());
getServer().getBannedPlayers().add(p);
}
if (kick) {
getServer().getScheduler().runTask((Plugin) this, () -> p.kickPlayer(this.reason));
}
}
if (p.isOnline()) {
hmap.put(p, System.currentTimeMillis());
} else {
hmap.remove(p);
}
}
}
public void onDisable() {
getServer().getLogger().info("Plugin has been disabled");
}
public boolean onCommand(final CommandSender sender, final Command cmd, final String label, final String[] args) {
if (cmd.getName().equalsIgnoreCase("PacketBookFix")) {
if (args.length == 1) {
if (sender.hasPermission(ReloadPermissions) && args[0].equalsIgnoreCase("reload")) {
reloadConfig();
PacketInMillis = getConfig().getInt("PacketInMillis");
kick = getConfig().getBoolean("KickPlayer");
ban = getConfig().getBoolean("BanPlayer");
reason = getConfig().getString("BanMessage").replaceAll("&", "§");
ReloadPermissions = getConfig().getString("ReloadPermissions");
sender.sendMessage(ReloadedMessage = getConfig().getString("ReloadedMessage").replaceAll("&", "§"));
return true;
}
return false;
}
else {
sender.sendMessage("&cPacketBookFix created by demkom58.".replaceAll("&", "§"));
}
}
return false;
}
}Similar projects
Plugin →Let Me Despawn
Improves performance by tweaking mob despawn rules. Say bye to pesky unintentional persistent mobs.
26.2MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
Emotecraft
Create your own emotes in Minecraft.
7.9MSueta
Simple Tpa
A simple tpa plugin which sends requests
5.4MSueta
Common Network
Forge and Fabric Unified Networking Solution
4.7MSueta
Set Home
A lightweight plugin for players to set their homes.
3.8MSueta