Помогите с вопросом

Можно ли сделать лимит на установку шалкеров, допустим х3?
PMM3, спасибо большое за ваши ответы :heart:

  1. Взять ивент при установке блоков
  2. Проверить блок (является оно шалкером?
  3. Получить игрока и записать в бд
  4. Делать подсчет пои вызове ивента (если количество равен 3 то отменить ивент)
public function onPlace(BlockPlaceEvent $event){
    if($event->getBlock()->getId() != "айди шалкера") return;
    $player = $event->getPlayer();
    $name = strtolower($player->getName());
    if(//Делаешь проверку
        $event->setCancelled(true);
        $player->sendMessage("Лимит на шалкера");
        return;
    //Записываешь игрока
}

ладно ejje

1 лайк

И заработает? :face_with_raised_eyebrow:

нет

<?php

namespace твой;

use pocketmine\{event\Listener, plugin\PluginBase, Server};
use pocketmine\event\block\BlockPlaceEvent;
use pocketmine\item\Item;

class твой extends PluginBase implements Listener {
    private $shulkerBoxCount = 0;
    private $shulkerBoxLimit = 10; // Максимальное количество шалкеров, которое можно разместить
    
    public function onEnable(){
        $this->getServer()->getPluginManager()->registerEvents($this, $this);
    }

    public function onBlockPlace(BlockPlaceEvent $event) {
        $item = $event->getItem();
        if($item->getId() === Item::SHULKER_BOX) {
            if($this->shulkerBoxCount >= $this->shulkerBoxLimit) { // проверка
                $event->getPlayer()->sendMessage("Вы достигли лимита поставки шалкеров.");
                $event->setCancelled();
            } else {
                $this->shulkerBoxCount++; // добавляем +1
            }
        }
    }
}

и что ты написал

вот

Это только отрывок кода, полный плагин надо написать

Я скинул рабочий код, который протестил

@dennyqweet ставь мне галочку :upside_down_face:

1 лайк

BlockBreakEvent покинул чат

Прочем сдесь он?

А если игрок сломает шалкер?

-_-

В посте не указано это, и ты тоже не написал в своем коде

<?php

namespace dir\dir;

use pocketmine\event\block\BlockPlaceEvent;
use pocketmine\block\ShulkerBox;
use pocketmine\event\Listener;
use pocketmine\plugin\PluginBase;

class Main extends PluginBase implements Listener{
	
	private const PLACE_LIMIT = 3;
	
	public function onEnable() : void{
		$this->getServer()->getPluginManager()->registerEvents($this, $this);
	}
	
	public function handleBlockPlace(BlockPlaceEvent $event) : void{
		if($event->getBlock() instanceof ShulkerBox){
			$player = $event->getPlayer();
			$username = $player->getLowerCaseName();
			if(!isset($this->limitFilter[$username]){
				$this->limitFilter[$username] = 0;
			}
			++$this->limitFilter[$username];
			if($this->limitFilter[$username] >= self::PLACE_LIMIT){
				$event->setCancelled();
				$player->sendMessage('лимит исчерпан');
			}
		}
	}
}

Логика таже

у меня код адекватнее и выполнено все по тз

Я не знаю кому галочку ставить :joy:

У меня код меньше, и логика таже