Помогите Event'ы для клика по блоку

  • Автор темы Автор темы 2Redman
  • Дата начала Дата начала

2Redman

Активный участник
Пользователь
Баллы
61
Имя в Minecraft
2Redman
Люди, делаю плуг на донат-кейсы, и мне нужно что-бы при нажатии на блок портала в энд исполнялась рандомная команда от имени консоли, пжлст скажите как это можно сделать
 
Нужно слушать PlayerInteractEvent. Ловим, проверяем Action(право, лево), берём блок по которому клик, проверяем на эндер портал, и делаем рандом команду по списку. Через Math.random вроде можно сделать рандом команду.
 
Солидарен. Давно рандом не трогал. Подзабыл :nerd:
Можно поточнее пожалуйста.
Вот код который я начал делать на счёт открытия, что туда дописать?
Код:
package ru.fantst.fcrates;

import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEvent;

public class CaseOpen implements Listener {
   
    @EventHandler
    public void onPlayerInteract(PlayerInteractEvent e) {
        Player p = e.getPlayer();
           
    }

}

Солидарен. Давно рандом не трогал. Подзабыл :nerd:
Просто плагинов подобного рода я ещё не делал
 
Очередной чувачек который низуя не смыслит не в джаве не в программировании вообще, и пытаюшийся писать плагины детектед....
@Exception_Prototype а ты еще и предлагал писать туториал на русском блин... Чтоб таких как ТС было еще больше.. Мда
 
я тут немного полазил , попробовал сделать эвент клика по блоку, вот что получилось, но выдаёт ошибку.

Код:
    @EventHandler
    public void onPlayerInteract(PlayerInteractEvent e) {
        Player p = e.getPlayer();

        if (e.getClickedBlock() != Material.ENDER_PORTAL_FRAME) return;
        MessageManager.getManager().msg(p, MessageType.INFO, "Ты открыл кейс");
ошибка в строчке if (e.getClickedBlock() != Material.ENDER_PORTAL_FRAME) return;
подскажите что и куда дописать пжлст
 
PlayerInteractEvent охватывает все клики мышкой. Вам нужен клик по блоку. проверяйте e.getAction()
 
Block block = e.getClickedBlock();
if (block == null || block.getType() != Material.ENDER_PORTAL_FRAME) {return}
 
Ладно, за это спасибо, теперь спрашиваю 2 тему про которую я спрашивал в самом начале : как сделать что бы при нажатии на тот же ender_portal_frame выполнялась 1 из 5 вписанных мной команд?
И при этом, выполнятся этот эвент должен только предметом который был получен командой созданной в самом плагине, т.е. что бы нельзя было тупо на наковальне переименовать крючёк в "Ключ от кейса" и спокойно его открыть
 
создаешь лист с командами. и через рандом получаешь команду
 
И при этом, выполнятся этот эвент должен только предметом который был получен командой созданной в самом плагине, т.е. что бы нельзя было тупо на наковальне переименовать крючёк в "Ключ от кейса" и спокойно его открыть
 
Смотря как создать предмет. Можно NBT в него записать. Типа Lore в itemMeta и её считывать
 
Смотря как создать предмет. Можно NBT в него записать. Типа Lore в itemMeta и её считывать
Ну например я хочу командой /getkey %player% выдавать игроку который будет системой автоматически указыватья в %player% , Крючёк с названием "Ключ от кейса", и что бы только им можно было кликнуть по порталу и тем самым активировать эвенты написанные в плагине
 
С кейсами не все так просто, ибо в креативе их на изи дропят. Нужно создавать кейсы с уникальным уидом, писать уиды в некую базу (sqlite or mysql). Потом после юза выставлять уиду статус проюзали, чтоб кейс с таким номером больше не робил.
 
С кейсами не все так просто, ибо в креативе их на изи дропят. Нужно создавать кейсы с уникальным уидом, писать уиды в некую базу (sqlite or mysql). Потом после юза выставлять уиду статус проюзали, чтоб кейс с таким номером больше не робил.
Это уже проблема тех говноедов админов которые продают креатив.
 
Назад
Верх