Сборки серверов

СливПлатные

Сейчас онлайн

  • 147maxik
  • korpys666
  • Masterggg
  • LigaloSoso
  • maksai69
  • talismanfr
  • Lunacy
  • fasdfasdfdsafsafsa
  • Yan33k
  • Grecha123
  • KillsYouKid
  • fl1cker281
  • rezzvy
  • 4532vsew
  • pelmeshek
  • Sasha 20189
  • Contala
  • Darkmage366
  • dscss2
  • virtue
  • dpotykan
  • flickyshka
  • wapo2500
  • DANILATY
  • Sabbik
  • skymonix
  • gfsgfddfgfdgfdfdg
  • Aezzakmi
  • ffjjfu848999
  • Fhugu63
  • zxcTrupik
  • peppe6601
  • Fonisha
  • ziomex997
  • KRfatr
  • amarbarwary10
  • djoblica
  • MiddleClient110
  • specSia
  • Kit_YT5
  • plum
  • khorww
  • kryp
  • IM_AnPOlice
  • ShavelkaA
  • sav1251266
  • TheInVise
  • pawpawpaw
  • txlz_
  • Karol67
  • docer
  • oxysensor
  • Uijin23
  • Minejent
  • Gribnogrib
  • 9ngen
  • igor1488
  • stasbombit
  • Affi1337
  • MilaPchela
  • ekzamen
  • ckrt1
  • xde57
  • VVVVCVCSDVJL
  • pososal123
  • Shoowggauus

Помощь Как запретить игрокам переименовывать кастомные предметы в наковальне?

Статус
Вы не можете ничего здесь написать, потому что тема была закрыта.
sova1n
Версия ядра сервера
1.21+
Я сейчас разрабатываю около-ванильный сервер на ядре Paper для версии 1.21.10 и использую плагин Nexo для добавления своих предметов, и мне нужно как-то сделать чтобы у игроков никак не получалось переименовать мой предмет в наковальне. Артефакты как никак, а если переименовывать - форматы текста слетают :D

ВАЖНО: заблокировать возможность использовать наковальню полностью - это не тот подход, который мне нужен)
 
Решение
sova1n
Сделал при помощи плагина Skript, и аддона к нему SkBee. Вот скрип, для тех кому понадобится.


JSON:
on inventory click:
    if event-inventory is anvil inventory:
        if name of event-item contains "<название>":
            cancel event
            close player's inventory
GPT-4o
Чтобы запретить игрокам переименовывать предметы в наковальне, но при этом оставить возможность использовать наковальню для других предметов, можно воспользоваться событиями в вашем плагине. Вот пример кода, который можно использовать для обработки события PrepareAnvilEvent и блокировки переименования конкретного предмета:

Java:
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.PrepareAnvilEvent;
import org.bukkit.inventory.ItemStack;

public class AnvilListener implements Listener {

    @EventHandler
    public void onAnvilUse(PrepareAnvilEvent event) {
        ItemStack result = event.getResult();
        
        // Проверяем, что результат не null и является вашим предметом
        if (result != null && result.getType() == YOUR_CUSTOM_ITEM_TYPE) {
            // Блокируем переименование, устанавливая результат в null
            event.setResult(null);
            // Можно также отправить сообщение игроку, если нужно
            event.getPlayer().sendMessage("Вы не можете переименовать этот предмет!");
        }
    }
}

Не забудьте зарегистрировать ваш слушатель в основном классе плагина:

Java:
import org.bukkit.plugin.java.JavaPlugin;

public class YourPlugin extends JavaPlugin {
    @Override
    public void onEnable() {
        getServer().getPluginManager().registerEvents(new AnvilListener(), this);
    }
}

Замените YOUR_CUSTOM_ITEM_TYPE на тип вашего предмета. Это позволит блокировать переименование только для ваших артефактов, оставляя наковальню доступной для других действий.
 
sova1n
Сделал при помощи плагина Skript, и аддона к нему SkBee. Вот скрип, для тех кому понадобится.


JSON:
on inventory click:
    if event-inventory is anvil inventory:
        if name of event-item contains "<название>":
            cancel event
            close player's inventory
 
Решение
Статус
Вы не можете ничего здесь написать, потому что тема была закрыта.
ВерхНиз