Bonjour je développe actuellement mon premier plugin minecraft, mais je rencontre un probleme. Je développe sur IntelliJ et sous maven.
Voici la structure de mon projet
Dans mon pom.xml voici ce qu'il y a:
Dans mon main.jave:
Dans mon InventoryManager:
Dans mon commandadmin.java:
Dans mon EventListener:
Et le message d'erreur est cannot access org.bukkit.entity.Player.
Et je n'arrive pas a régler cette erreur.
Merci de votre aide.
Voici la structure de mon projet
Code:
AdminPlugin/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── me/
│ │ │ └── jonathan/
│ │ │ └── adminplugin/
│ │ │ ├── Main.java (Point d'entrée principal)
│ │ │ ├──InventoryManager.java (Classe principale du plugin)
│ │ │ ├── CommandAdmin.java (Commande /admin)
│ │ │ └── EventListener.java (Écouteur d'événements)
│ │ └── resources/
│ │ └── plugin.yml (Fichier de configuration du plugin)
└── pom.xml (Fichier de configuration Maven)
Dans mon pom.xml voici ce qu'il y a:
Code:
package me.jonathan.adminplugin;
import org.bukkit.command.PluginCommand;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin {
@Override
public void onEnable() {
PluginCommand adminCommand = getCommand("admin");
if (adminCommand != null) {
adminCommand.setExecutor(new CommandAdmin()); // Passer une référence de Main
} else {
getLogger().severe("Command 'admin' not found in plugin.yml");
}
getServer().getPluginManager().registerEvents(new EventListener(this), this); // Passer une référence de Main
}
@Override
public void onDisable() {
// Logique pour gérer la désactivation du plugin si nécessaire
}
}
Dans mon main.jave:
Code:
package me.jonathan.adminplugin;
import org.bukkit.command.PluginCommand;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin {
@Override
public void onEnable() {
PluginCommand adminCommand = getCommand("admin");
if (adminCommand != null) {
adminCommand.setExecutor(new CommandAdmin()); // Passer une référence de Main
} else {
getLogger().severe("Command 'admin' not found in plugin.yml");
}
getServer().getPluginManager().registerEvents(new EventListener(this), this); // Passer une référence de Main
}
@Override
public void onDisable() {
// Logique pour gérer la désactivation du plugin si nécessaire
}
}
Dans mon InventoryManager:
Code:
package me.jonathan.adminplugin;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.Material;
import org.bukkit.GameMode;
import java.util.HashMap;
import java.util.UUID;
public class InventoryManager {
private static final HashMap<UUID, ItemStack[]> inventories = new HashMap<>();
private static final HashMap<UUID, GameMode> gameModes = new HashMap<>();
public static void saveInventory(Player player) {
inventories.put(player.getUniqueId(), player.getInventory().getContents());
gameModes.put(player.getUniqueId(), player.getGameMode());
player.getInventory().clear();
}
public static void restoreInventory(Player player) {
if (inventories.containsKey(player.getUniqueId())) {
player.getInventory().setContents(inventories.get(player.getUniqueId()));
inventories.remove(player.getUniqueId());
}
if (gameModes.containsKey(player.getUniqueId())) {
player.setGameMode(gameModes.get(player.getUniqueId()));
gameModes.remove(player.getUniqueId());
}
}
public static void giveAdminCompass(Player player) {
ItemStack compass = new ItemStack(Material.COMPASS);
player.getInventory().setItem(4, compass);
}
}
Dans mon commandadmin.java:
Code:
package me.jonathan.adminplugin;
import org.bukkit.GameMode;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
public class CommandAdmin implements CommandExecutor {
public CommandAdmin() {
}
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
if (sender instanceof Player) {
Player player = (Player) sender;
if (args.length == 1) {
if (args[0].equalsIgnoreCase("on")) {
InventoryManager.saveInventory(player);
player.setGameMode(GameMode.SPECTATOR);
InventoryManager.giveAdminCompass(player);
player.sendMessage("Admin mode enabled.");
return true;
} else if (args[0].equalsIgnoreCase("off")) {
InventoryManager.restoreInventory(player);
player.sendMessage("Admin mode disabled.");
return true;
}
}
}
return false;
}
}
Dans mon EventListener:
Code:
package me.jonathan.adminplugin;
import org.bukkit.Material;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
public class EventListener implements Listener {
private final Main plugin;
public EventListener(Main plugin) {
this.plugin = plugin;
}
@EventHandler
public void onPlayerInteract(PlayerInteractEvent event) {
// Votre logique de gestion des interactions de joueur ici
if (event.hasItem()) {
ItemStack item = event.getItem();
if (item != null && item.getType().equals(Material.COMPASS)) {
Inventory adminMenu = plugin.getServer().createInventory(null, 27, "Admin Menu");
event.getPlayer().openInventory(adminMenu);
}
}
}
}
Et le message d'erreur est cannot access org.bukkit.entity.Player.
Et je n'arrive pas a régler cette erreur.
Merci de votre aide.