-1

Im trying to make a minecraft anti cheat with bukkit. my server version is 1.18.

but i seem to get this error;

java: cannot find symbol symbol: method getTitle() location: variable inventory of type org.bukkit.inventory.Inventory

here is the segment of code that error is referring about;

if (inventory.getTitle().equals("Flagged Players")) { 

full segment of code (Not entire file of code):

package anticheat.anticheat;

import java.util.HashMap;
import java.util.Map;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.command.Command;
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.InventoryType;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.SkullMeta;
import org.bukkit.event.player.PlayerMoveEvent;

public class Anticheat implements Listener {

    private Map<Player, Boolean> flaggedPlayers = new HashMap<>();
    private Map<Player, Inventory> flaggedPlayersInventory = new HashMap<>();

    @EventHandler
    public void onPlayerMove(PlayerMoveEvent event) {
        Player player = event.getPlayer();
        if (isUsingFlyHack(player)) {
            // Flag the player and kick them from the server
            flagPlayer(player);
            player.kickPlayer("Using fly hacks is not allowed on this server");
        }
    }

    @EventHandler
    public void onInventoryClick(InventoryClickEvent event) {
        Player player = (Player) event.getWhoClicked();
        Inventory inventory = event.getInventory();
        if (inventory.getType() == InventoryType.CHEST) {
            if (inventory.getTitle().equals("Flagged Players")) {
                ItemStack item = event.getCurrentItem();
                SkullMeta meta = (SkullMeta) item.getItemMeta();
                Player flaggedPlayer = Bukkit.getPlayer(meta.getOwningPlayer().getName());
                // Check if the clicked item is a player head
                if (item.getType() == Material.PLAYER_HEAD && flaggedPlayers.get(flaggedPlayer) != null) {
                   
                }
                event.setCancelled(true);
            }
        }
    }

I have tried to replace .getTitle with .getName using the code bellow

if (inventory.getTitle().equals("Flagged Players")) {

But that didn't fix it and gave me the same error.

**I have also tried **

if (inventory.getType() == InventoryType.CHEST && inventory.getTitle().equals("Flagged Players")) {

But also gave me the same output.

RipTide 12
  • 11
  • 2
  • @khelwood Inventory used to support a getTitle(), but was deprecated and apparently also removed. The getTitle() method was moved to InventoryView. – phatfingers Feb 13 '23 at 22:19

1 Answers1

1

The method getTitle was removed from Inventory.

You can access that value in your code using:

event.getView().getTitle()
phatfingers
  • 9,770
  • 3
  • 30
  • 44