Помогите Как сделать что-бы игроки с одним правом не могли поднимать предметы

steepMOJANG

Активный участник
Пользователь
Баллы
61
Имя в Minecraft
steepMOJANG
Как сделать что-бы игроки с одним правом не могли поднимать предметы
 
player pickup event (или как-то так, гугл в помощь). Проверяешь, есть ли у игрока право. Если нет, отменяешь ивент
 
Эх, ладно попробую одну штуку
 
лол, юзай vault и будет тебе счастье
Мой уровень владения Java ограничивается пока что копипастой со спигота ответов на вопросы новичков вроде "how to check player world" и другие (и да, модер это цитата, я читал правила)
 
Так как версию никто не уточнил, пример будет для 1.14.4:
PHP:
@EventHandler(ignoreCancelled = true)
void onEntityPickup(EntityPickupItemEvent event) {
    if (event.getEntityType() == EntityType.PLAYER) {
        ItemStack itemStack = event.getItem().getItemStack();
        if (/*твоя проверка что нужно проверять права конкретно на этот предмет*/ &&
        event.getEntity().hasPermission("plugin.nopickup")){
            event.setCancelled(true);
            event.getEntity().sendMessage(ChatColor.RED + "Вам запрещено поднимать данный предмет.");
        }
    }
}
 
Так как версию никто не уточнил, пример будет для 1.14.4:
PHP:
@EventHandler(ignoreCancelled = true)
void onEntityPickup(EntityPickupItemEvent event) {
    if (event.getEntityType() == EntityType.PLAYER) {
        ItemStack itemStack = event.getItem().getItemStack();
        if (/*твоя проверка что нужно проверять права конкретно на этот предмет*/ &&
        event.getEntity().hasPermission("plugin.nopickup")){
            event.setCancelled(true);
            event.getEntity().sendMessage(ChatColor.RED + "Вам запрещено поднимать данный предмет.");
        }
    }
}
Не работает
 
Всё там работает, показывай код и свои проверки.
Код:
package Block.main;


import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.UUID;

import org.bukkit.ChatColor;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.entity.EntityPickupItemEvent;
import org.*********ventory.ItemStack;
import org.bukkit.permissions.PermissionAttachment;
import org.bukkit.plugin.java.JavaPlugin;

import Block.main.commands.RCommands; 
import Block.main.commands.XCommands;

import java.util.logging.Logger;

public class Main extends JavaPlugin implements Listener{
    File dataFile = new File(getDataFolder() + File.separator + ("config.yml"));
    FileConfiguration config = getConfig();
    Logger log = Logger.getLogger("Minecraft");
   
    public static Main plugin;
    public HashMap<UUID, PermissionAttachment> playerPermissions = new HashMap<>();
   
   

   
   
    @Override
    public void onEnable() {
       
        File dataFile = new File(getDataFolder() + File.separator + ("config.yml"));
       
        saveDefaultConfig();
       
        if (!dataFile.exists()) {
            try {
                dataFile.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
           
            }
    }

   
        new XCommands(this);
        new RCommands(this);
        getLogger().info("Enable! :)");
         

        this.getServer().getPluginManager().registerEvents(this, this);
    }
    public void onDisabled() {
        getLogger().info(ChatColor.RED + "Disabled!");
   
    }

    @EventHandler
    public void breakBlock(BlockBreakEvent event) {
        Player p = event.getPlayer();
        if (!p.hasPermission("NoBlock.Nobreak")) {
            event.setCancelled(true);
            p.sendMessage(config.getString("message"));
        }
       
        }
        @EventHandler
        public void placeBlock(BlockPlaceEvent event) {
            Player p = event.getPlayer();   
            if (!p.hasPermission("NoBlock.Noplace")) {
                event.setCancelled(true);
                p.sendMessage(config.getString("message"));
             }

       }
        @EventHandler(ignoreCancelled = true)
        void onEntityPickup(EntityPickupItemEvent event) {
            if (event.getEntityType() == EntityType.PLAYER) {
                ItemStack itemStack = event.getItem().getItemStack();
                if (event.getEntity().hasPermission("NoBlock.Noplace")){
                    event.setCancelled(true);
                    event.getEntity().sendMessage(ChatColor.RED + "Вам запрещено поднимать данный предмет.");
                }
            }
        }
}
 
Согласно твоему коду любой игрок, который имеет пермишен "NoBlock.Noplace" не сможет поднять никакой предмет. Что не работает?
 
Так как версию никто не уточнил, пример будет для 1.14.4:
PHP:
@EventHandler(ignoreCancelled = true)
void onEntityPickup(EntityPickupItemEvent event) {
    if (event.getEntityType() == EntityType.PLAYER) {
        ItemStack itemStack = event.getItem().getItemStack();
        if (/*твоя проверка что нужно проверять права конкретно на этот предмет*/ &&
        event.getEntity().hasPermission("plugin.nopickup")){
            event.setCancelled(true);
            event.getEntity().sendMessage(ChatColor.RED + "Вам запрещено поднимать данный предмет.");
        }
    }
}
Этот кусок кода будет работать на любой версии)
 
Назад
Верх