Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.chickenstyle.fullInventory;
- import java.lang.reflect.Constructor;
- import java.util.HashMap;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.Sound;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.player.PlayerPickupItemEvent;
- import org.bukkit.inventory.Inventory;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.plugin.java.JavaPlugin;
- import org.bukkit.scheduler.BukkitRunnable;
- public class Main extends JavaPlugin implements Listener{
- HashMap<Player,String> noticed = new HashMap<Player,String>();
- @Override
- public void onEnable() {
- getServer().getConsoleSender().sendMessage(ChatColor.GREEN + "Inventory Checker Is Enabled");
- Bukkit.getPluginManager().registerEvents(this, this);
- getCommand("inventory").setExecutor(new InventoryCommand());
- this.getConfig().options().copyDefaults();
- saveDefaultConfig();
- }
- public boolean hasAvaliableSlot(Player player,ItemStack itemdrop){
- Inventory inv = (Inventory) player.getInventory();
- inv.addItem(itemdrop);
- for (ItemStack item: inv.getContents()) {
- if(item == null) {
- inv.removeItem(itemdrop);
- return true;
- }
- }
- inv.removeItem(itemdrop);
- return false;
- }
- @EventHandler
- public void pickUpItem(PlayerPickupItemEvent e) {
- Player player = e.getPlayer();
- String text = getConfig().getString("message");
- String sound = getConfig().getString("sound").toUpperCase();
- int duration = getConfig().getInt("messageDuration") * 20;
- int delay = getConfig().getInt("delaytime") * 20;
- // Checks if inventory is full
- boolean isEmpty = hasAvaliableSlot(player, e.getItem().getItemStack());
- if (!isEmpty) {
- if (!noticed.containsKey(player)) {
- switch (getConfig().getString("typeofmessage").toLowerCase()) {
- case "text":
- player.sendMessage(ChatColor.translateAlternateColorCodes('&', text));
- noticed.put(player, "1");
- player.playSound(player.getLocation(), Sound.valueOf(sound), 1f, 1f);
- break;
- case "title":
- try {
- Object enumTitle = getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0].getField("TITLE").get(null);
- Object chat = getNMSClass("IChatBaseComponent").getDeclaredClasses()[0].getMethod("a", String.class).invoke(null, "{\"text\": \"" + text + "\",color:" + ChatColor.RED.name().toLowerCase() + "}");
- Constructor<?> titleConstuctor = getNMSClass("PacketPlayOutTitle").getConstructor(getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0], getNMSClass("IChatBaseComponent"), int.class, int.class, int.class);
- Object packet = titleConstuctor.newInstance(enumTitle,chat, 10, duration, 10);
- sendPacket(player,packet);
- } catch (Exception e1) {
- e1.printStackTrace();
- }
- noticed.put(player, "1");
- player.playSound(player.getLocation(), Sound.valueOf(sound), 1f, 1f);
- break;
- default:
- getServer().getConsoleSender().sendMessage(ChatColor.RED + "Invalid Type Of Message.");
- break;
- }
- new BukkitRunnable() {
- private int i = 0;
- @Override
- public void run() {
- if(i == 1) {
- cancel();
- }
- ++i;
- noticed.remove(player, "1");
- }
- }.runTaskTimer(this, delay, 20L);
- }
- }
- }
- public void sendPacket(Player player, Object packet) {
- try {
- Object handle = player.getClass().getMethod("getHandle").invoke(player);
- Object playerConnection = handle.getClass().getField("playerConnection").get(handle);
- playerConnection.getClass().getMethod("sendPacket",getNMSClass("Packet")).invoke(playerConnection, packet);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public Class<?> getNMSClass(String name) {
- String version = Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3];
- try {
- return Class.forName("net.minecraft.server." + version + "." + name);
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- return null;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment