Взаимодействие с другим игроком - команда /ec

Baraban4ik

Разработчик
Пользователь
Сообщения
270
Решения
1
Я создал команду на открытия эндер сундука
Теперь я хочу чтоб можно было открыть эндер сундук другого игрока
Версия: 1.12.2
Возможно я буду тупить так как я новичок в создании плагинов

Java:
package com.specter.stem.commands;

import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public class EnderChestCommand extends AbstractCommand {

    public EnderChestCommand() {
        super("enderchest");
    }

    @Override
    public void execute(CommandSender sender, String label, String[] args) {
        Player player = (Player) sender;

        if (!(sender instanceof Player)) {
            sender.sendMessage("This command is available only to players.");
            return;
        }

        if (!sender.hasPermission("stem.enderchest")) {
            sender.sendMessage(ChatColor.RED + "You don't have permission");
            return;
        }
        else {
            player.closeInventory();
            player.openInventory(player.getEnderChest());
        }
    }
}
 
Последнее редактирование:
Решение
Проверяешь, сколько аргументов в команде (args.length), если больше 0, то из нулевого пытаешься поймать игрока (Bukkit.getPlayer(args[0]). Если результат даст null, значит такого игрока нет (или он офлайн). Если же не null, то получаешь его EC.
Проверяешь, сколько аргументов в команде (args.length), если больше 0, то из нулевого пытаешься поймать игрока (Bukkit.getPlayer(args[0]). Если результат даст null, значит такого игрока нет (или он офлайн). Если же не null, то получаешь его EC.
 
Типа того

Java:
package com.specter.stem.commands;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public class EnderChestCommand extends AbstractCommand {

    public EnderChestCommand() {
        super("enderchest");
    }

    @Override
    public void execute(CommandSender sender, String label, String[] args) {
        Player player = (Player) sender;

        if (args.length > 0 && !sender.hasPermission("stem.enderchest.others")) {
            sender.sendMessage(ChatColor.RED + "You don't have permission");
        }
        else {
            Player other = Bukkit.getPlayer(args[0]);

            if (other == null) {
                sender.sendMessage(ChatColor.RED + "Player not found, he may be offline!");
                return;
            }
            else {
                player.closeInventory();
                player.openInventory(other.getEnderChest());
            }
        }
        if (sender instanceof Player) {
            sender.sendMessage("This command is available only to players.");
            return;
        }

        if (!sender.hasPermission("stem.enderchest")) {
            sender.sendMessage(ChatColor.RED + "You don't have permission");
        }
        else {
            player.closeInventory();
            player.openInventory(player.getEnderChest());
        }
    }
}
Авто объединение сообщений:

ведать нет она перестала работать
Авто объединение сообщений:

поход я с ифами намудрил
так как если вести после команды игрока то она работает
Авто объединение сообщений:

сделал так но все равно не работает
Java:
package com.specter.stem.commands;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public class EnderChestCommand extends AbstractCommand {

    public EnderChestCommand() {
        super("enderchest");
    }

    @Override
    public void execute(CommandSender sender, String label, String[] args) {
        Player player = (Player) sender;

        if (sender == null) {
            sender.sendMessage("This command is available only to players.");
            return;
        }

        if (args.length > 0) {
            if (!sender.hasPermission("stem.enderchest.others")) {
                sender.sendMessage(ChatColor.RED + "You don't have permission");
                return;
            }
            Player other = Bukkit.getPlayer(args[0]);

            if (other == null) {
                sender.sendMessage(ChatColor.RED + "Player not found, he may be offline!");
                return;
            }
            player.closeInventory();
            player.openInventory(other.getEnderChest());
        }
        if (!sender.hasPermission("stem.enderchest")) {
            sender.sendMessage(ChatColor.RED + "You don't have permission");
            return;
        }
        player.closeInventory();
        player.openInventory(player.getEnderChest());
    }
}

Вот ошибка:
Код:
[00:45:23 WARN]: Unexpected exception while parsing console command "ec"
org.bukkit.command.CommandException: Unhandled exception executing command 'ec' in plugin Stem v1.0-SNAPSHOT
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[patched_1.12.2.jar:git-Paper-1618]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:152) ~[patched_1.12.2.jar:git-Paper-1618]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:685) ~[patched_1.12.2.jar:git-Paper-1618]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchServerCommand(CraftServer.java:648) ~[patched_1.12.2.jar:git-Paper-1618]
        at net.minecraft.server.v1_12_R1.DedicatedServer.aP(DedicatedServer.java:463) ~[patched_1.12.2.jar:git-Paper-1618]
        at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:424) ~[patched_1.12.2.jar:git-Paper-1618]
        at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:774) ~[patched_1.12.2.jar:git-Paper-1618]
        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:666) ~[patched_1.12.2.jar:git-Paper-1618]
        at java.lang.Thread.run(Thread.java:834) [?:?]
Caused by: java.lang.ClassCastException: class com.destroystokyo.paper.console.TerminalConsoleCommandSender cannot be cast to class org.bukkit.entity.Player (com.destroystokyo.paper.console.TerminalConsoleCommandSender and org.bukkit.entity.Player are in unnamed module of loader 'app')
        at com.specter.stem.commands.EnderChestCommand.execute(EnderChestCommand.java:16) ~[?:?]
        at com.specter.stem.commands.AbstractCommand.onCommand(AbstractCommand.java:30) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[patched_1.12.2.jar:git-Paper-1618]
        ... 8 more
Авто объединение сообщений:

всё я починил
 
Последнее редактирование:
Проверяешь, сколько аргументов в команде (args.length), если больше 0, то из нулевого пытаешься поймать игрока (Bukkit.getPlayer(args[0]). Если результат даст null, значит такого игрока нет (или он офлайн). Если же не null, то получаешь его EC.
offtop Лучше использовать .
 
Назад
Сверху Снизу