Minecraft Türkiye Minecraft Türkiye Minecraft Türkiye Minecraft Türkiye Minecraft Türkiye Minecraft Türkiye Minecraft Türkiye Minecraft Türkiye

PacketBookFixer 1.03

İndirme izniniz bulunmamaktadır.

  • BILGI
İstemci sunucunuza zararlı kitap paketleri göndererek oyuncuların bağlantısını düşürür ve kısa süre sonra oyuncular sunucudan atılır.
  • UYUMLULUK
  • PacketBookFixer ProtocolLib kullanır.
  • Spigot 1.8.8 ile uyumludur.
  • Sunucuda Java 8 veya üst sürümleri ile çalıştırmanız gerekir.

Java:
package me.packetbookfixer;

import java.io.IOException;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;

import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.ProtocolLibrary;
import com.comphenix.protocol.events.ListenerPriority;
import com.comphenix.protocol.events.PacketAdapter;
import com.comphenix.protocol.events.PacketEvent;
import com.comphenix.protocol.wrappers.nbt.NbtCompound;
import com.comphenix.protocol.wrappers.nbt.NbtFactory;
import com.comphenix.protocol.wrappers.nbt.NbtList;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;

import me.packetbookfixer.utils.Util;


public class PacketBookFixer extends JavaPlugin {

    public static PacketBookFixer instance;
    private Cache<String, Integer> ignore = CacheBuilder.newBuilder().concurrencyLevel(2).initialCapacity(20).expireAfterWrite(550, TimeUnit.MILLISECONDS).build();
    @Override
    public void onEnable() {
        if (Bukkit.getPluginManager().getPlugin("ProtocolLib") == null)
        {
            Bukkit.getLogger().info("§4 ProtocolLib §cbulunamadı.");
          return;
        }
        ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(this, ListenerPriority.LOWEST, PacketType.Play.Client.BLOCK_PLACE) {
            public void onPacketReceiving(final PacketEvent event) {
                if (event.getPlayer() == null) {
                    event.setCancelled(true);
                    return;
                }
                Integer attemps = ignore.getIfPresent(event.getPlayer().getName().toLowerCase());
                if (attemps != null && attemps >= 2) {
                    if (attemps >= 100) {
                        plugin.getLogger().log(Level.INFO, "§6Crash §cistemcisi tespit edildi.", event.getPlayer().getName());
                        Util.forceKick(event.getPlayer());
                    } else {
                        Util.kickPlayer(event.getPlayer(), null);
                    }
                    event.setCancelled(true);
                    return;
                }
             
                ItemStack stack = event.getPacket().getItemModifier().readSafely(0);
                if (stack == null || stack.getType() != Material.WRITTEN_BOOK) {
                    return;
                }

                ItemStack inHand = event.getPlayer().getItemInHand();
                if (inHand == null || inHand.getType() != Material.WRITTEN_BOOK) {
                    event.setCancelled(true);
                    Util.forceKick(event.getPlayer());
                    plugin.getLogger().log(Level.INFO, "§6Crash §cistemcisi tespit edildi.", event.getPlayer().getName());
                    return;
                }
                try {
                    checkNbtTags(stack);
                } catch (IOException e) {
                    event.setCancelled(true);
                    Util.forceKick(event.getPlayer());
                    plugin.getLogger().log(Level.INFO, "§6Crash §cistemcisi tespit edildi.", event.getPlayer().getName());
                    return;
                }
                ignore.put(event.getPlayer().getName().toLowerCase(), attemps == null ? 0 : attemps + 1);
            }
         
        });
        Bukkit.getLogger().info("PacketBookFixer Aktif !");
        Bukkit.getLogger().info("§4Discord : §cBlondeCow#5145 - #Turkiye1760");
    }

     private void checkNbtTags(ItemStack itemStack) throws IOException {
        NbtCompound root = (NbtCompound) NbtFactory.fromItemTag(itemStack);
        if (root == null) {
            throw new IOException("NBT etiketi yok");
        } else if (!root.containsKey("pages")) {
            throw new IOException("NBT bileşik bulunamadı");
        } else {
            NbtList<String> pages = root.getList("pages");
            if (pages.size() > 50) {
                throw new IOException("Çok fazla sayfa");
            }
            for (String page : pages) {
                if (page.length() > 320) {
                    throw new IOException("Çok uzun bir sayfa");
                }
            }
        }
    }
    public static PacketBookFixer getPlugin() {
        return PacketBookFixer.instance;
    }
        @Override
        public void onDisable() {
            Bukkit.getLogger().info("PacketBookFixer devredışı !");
            ProtocolLibrary.getProtocolManager().removePacketListeners(this);
            ignore.invalidateAll();
            ignore = null;
        }
    }
Yazar
BlondeCowQQ
İndirme sayısı
5
İlk sürüm
Son güncelleme
Oy
0,00 yıldız 0 oylama