Skocz do zawartości
  • 0

problem z pluginem


szymek12

Pytanie

Witam, stworzylem wlasne inventory z rangami (pokazuje jaki prefix ma dana ranga, uprawnienia itp). Wie ktos co zrobic aby gracze nie mogli wyjmowac z tego gui zadnego itemu?

package test.events;

import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;

import net.md_5.bungee.api.ChatColor;
import test.gui.RanksGUI;

public class onInventory implements Listener {
    
    @EventHandler
    public void onInventory(InventoryClickEvent e) {
        if(!ChatColor.stripColor(e.getView().getTitle()).equalsIgnoreCase("rangi"))
            return;
        
        Player p = (Player) e.getWhoClicked();
        e.setCancelled(true);
        
        
        if(e.getCurrentItem() == null || e.getCurrentItem().getType() == Material.AIR || !e.getCurrentItem().hasItemMeta()) {
            p.closeInventory();
            return;
            
        }
        
        switch(e.getCurrentItem().getType()) {
        case STONE:
            RanksGUI.openGUI(p);
            break;
        case GOLD_INGOT:
            RanksGUI.openGUI(p);
            break;
        case DIAMOND:
            RanksGUI.openGUI(p);
        default:
            p.closeInventory();
            break;
        }
    }

}

 

Glicz

Wstawiam kod w code.

Notatka dodana przez Glicz

Odnośnik do komentarza
https://skript.pl/temat/49441-problem-z-pluginem/
Udostępnij na innych stronach

6 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
Gość Usunięty#25876
18 godzin temu, szymek12 napisał:
        case STONE:
            RanksGUI.openGUI(p);
            break;
        case GOLD_INGOT:
            RanksGUI.openGUI(p);
            break;
        case DIAMOND:
            RanksGUI.openGUI(p);

Swoją drogą to może być zamienione na:

case STONE:
case GOLD_INGOT:
case DIAMOND:
	RanksGUI.openGUI(p);
	break;

Break w default, czyli tak naprawdę w ostatnim 'case' jest niepotrzebny, bo nic w switchu po nim nie ma, więc też nie ma czego przerywać. Powinieneś również rozważyć zmianę nazwy klasy, bo je się raczej nazywa PascalCase, no i nie tak jak metodę - nie w tym przypadku na pewno. Jeżeli chodzi o sam problem dlaczego dalej da się wyjmować przedmioty z GUI, to powinieneś również anulować InventoryDragEvent, bo samo Click może być najwyżej do shift + click. 

Odnośnik do komentarza
https://skript.pl/temat/49441-problem-z-pluginem/#findComment-306799
Udostępnij na innych stronach

  • 0
55 minut temu, zrdzn napisał:

Swoją drogą to może być zamienione na:

case STONE:
case GOLD_INGOT:
case DIAMOND:
	RanksGUI.openGUI(p);
	break;

Break w default, czyli tak naprawdę w ostatnim 'case' jest niepotrzebny, bo nic w switchu po nim nie ma, więc też nie ma czego przerywać. Powinieneś również rozważyć zmianę nazwy klasy, bo je się raczej nazywa PascalCase, no i nie tak jak metodę - nie w tym przypadku na pewno. Jeżeli chodzi o sam problem dlaczego dalej da się wyjmować przedmioty z GUI, to powinieneś również anulować InventoryDragEvent, bo samo Click może być najwyżej do shift + click. 

Dzięki za radę, zmieniłem te case na takie jak ty napisałeś. Co do problemu, okazało się, że umknęła mi jedna literka, która była napisana z wielkiej litery. W equalsignorecase zmieniłem tytuł na prawidłowy i już wszystko działa.

Dzieki wszystkim za pomoc :)

Odnośnik do komentarza
https://skript.pl/temat/49441-problem-z-pluginem/#findComment-306800
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...