MagicalRunes - Руны для Minecraft BE PMMP4

Ядро: PMMP4

Описание: Добавляет на ваш сервер 5 рун с различными эффектами. Нужно зажать для использования. Имеется звук.

Выдача:

  1. Оператором через команду /giverune <игрок> <первая буква эффекта>
  2. Кодом -

RuneAPI::getRuneAPI()->giveRune(Player, RuneTypes);

RuneTypes можно найти в константах

Настройки: Не требуются
MagicalRunes.zip (6.8 КБ)

2 лайка

Оригинально

Что-то новое

На самом деле херовая реализация…

Чем именно она плоха?

Тем, что ты проверяешь имя предмета и делаешь действия

Я тоже так сделал в одном случае…

if ($player->getInventory()->getItemInHand()->getCustomName() == "Дебаг палка 4") {
// Действия
}

да, все дебажишь, пишешь

а гиде

А ниту

А в чём смысл проверять что - то еще если другого айтема с таким же кастом неймом не будет так как там юзается \n для 2 строки, то в наковальне, например, игрок не сможет нужно назвать руну.

if($player->getInventory()->getItemInHand() instanceof DebugPalka){
    //действия

Нельзя просто взять и создать свой айтем

Тем более если свой айтем, зачем создавать листинер и проверку на айтем если можно в нем сделать действие

public function onClickAir(){}
if($player->getInventory()->getItemInHand()->getCustomName() == "Руна" && $player->getInventory()->getItemInHand()->getId() == [айди]){

Так куда надёжнее

Ну создай кастом фабрику, создай класс кастом вещи, создай класс нужной кастом вещи, унаследуй класс кастом вещи… В классе нужной кастом вещи создай метод, который будет обрабатывать интеракт. И в PlayerInteractEvent делай проверку item instanceof CustomItem item->handleInteract

И как ты будешь его вызывать…

Зачем блять?

class DebugStick extends Stick{

public function onInteractBlock(Player $player, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, array &$returnedItems) : ItemUseResult{
        $player->sendMessage("Ты кликнул палкой по блоку");
		return ItemUseResult::NONE();
	}

	public function onClickAir(Player $player, Vector3 $directionVector, array &$returnedItems) : ItemUseResult{
        $player->sendMessage("Ты кликнул палкой по воздуху");
		return ItemUseResult::NONE();
	}

}