๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ/ํ”Œ๋Ÿฌ๊ทธ์ธ๋งŒ๋“ค๊ธฐ

[๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ ํ”Œ๋Ÿฌ๊ทธ์ธ๋งŒ๋“ค๊ธฐ] ์ปค๋งจ๋“œ 3. ํ”Œ๋ ˆ์ด์–ด ์ „๋‹ฌ๋ฐ›๊ธฐ

PPYOM๐ŸŒŸ 2024. 6. 27. 14:24

 

 

์•ˆ๋…•ํ•˜์„ธ์š” ๋ฟ€์ž…๋‹ˆ๋‹ค!!!

 

์ด๋ฒˆ์—๋„ ์ €๋ฒˆ ๊ธ€์— ์ด์–ด์„œ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค!!

์ €๋ฒˆ ๊ธ€์—์„œ๋Š” ๋ฌธ์ž์—ด์„ ๋ฐ›์•„์„œ ์ถœ๋ ฅํ–ˆ๋‹ค๋ฉด ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ํ”Œ๋ ˆ์ด์–ด๋ฅผ ๋ฐ›์•„์„œ ์ถœ๋ ฅํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!!!

 

๊ทธ๋Ÿผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค!!!!

 

 


 

๋ชฉํ‘œ

ํ”Œ๋ ˆ์ด์–ด๋ฅผ ๋ฐ›์•„์„œ ํ”Œ๋ ˆ์ด์–ด ์ •๋ณด(๋ ˆ๋ฒจ) ์ถœ๋ ฅํ•˜๊ธฐ

 

 

์„ค๋ช…

command๊ฐ€ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ธ์ž์—๋Š” ๋ฌธ์ž์—ด๋งŒ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด, ์ˆซ์ž, ์ขŒํ‘œ, ํ”Œ๋ ˆ์ด์–ด ๋“ฑ ๋‹ค์–‘ํ•œ ์ธ์ˆ˜๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €๋ฒˆ ๊ธ€์— ์ด์–ด gamemode๋ฅผ ์˜ˆ๋กœ ๋“ค๋ฉด gamemode creative ppyom ์ด๋ผ๊ณ  ์ž…๋ ฅํ•˜๋ฉด gamemode๋ผ๋Š” ๋ช…๋ น์–ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณณ์— creative, ppyom ์ด๋ผ๋Š” ๋ฌธ์ž์—ด ๋‘ ๊ฐœ๊ฐ€ ์ธ์ž๋กœ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ๋Œ€์ƒ ํ”Œ๋ ˆ์ด์–ด์ธ ppyom์€ ํ”Œ๋ ˆ์ด์–ด ์˜ค๋ธŒ์ ํŠธ๋กœ ๋ณ€๊ฒฝํ•ด์„œ ํ•ด๋‹น ํ”Œ๋ ˆ์ด์–ด์˜ ๊ฒŒ์ž„ ๋ชจ๋“œ๋ฅผ creative๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์ •๋ฆฌํ•˜์ž๋ฉด gamemode creative ppyom์„ ํ•ด์„ํ•˜๋ฉด "ppyom์˜ ํ”Œ๋ ˆ์ด์–ด ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๊ฐ€์ ธ์™€์„œ ํ•ด๋‹น ํ”Œ๋ ˆ์ด์–ด์˜ gamemode๋ฅผ creative๋กœ ๋ณ€๊ฒฝํ•ด๋ผ!" ์ž…๋‹ˆ๋‹ค.

ํ”Œ๋ ˆ์ด์–ด์˜ ์ด๋ฆ„๋งŒ ์ž…๋ ฅ๋ฐ›์•„์„œ ์˜ค๋ธŒ์ ํŠธ๋กœ ๊ฐ€์ ธ์˜ฌ ๋•Œ์—๋Š” Bukkit.getPlayer ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋Š” ์šฐ๋ฆฌ ์„œ๋ฒ„์— ํ•ด๋‹น ํ”Œ๋ ˆ์ด์–ด ์ด๋ฆ„์„ ๊ฐ€์ง„ ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ๊ทธ ํ”Œ๋ ˆ์ด์–ด์˜ Player ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ์•„์ฃผ ์œ ์šฉํ•œ ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ ์ด์ œ... ๋งŒ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!!

 

 

์ฝ”๋“œ

์ €๋ฒˆ ๊ธ€์—์„œ ๋งŒ๋“  ํ”„๋กœ์ ํŠธ์— ์ด์–ด์„œ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค!

 

plugin.yml

name: CommandPlugin
version: '${version}'
main: com.ppyom.CommandPlugin
api-version: '1.20'
commands:
  ...
  player:
    description: ํ”Œ๋ ˆ์ด์–ด ์ •๋ณด
    usage: /player [<player>]

 

PlayerCommand.java

์ปค๋งจ๋“œ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.

package com.ppyom.command;

import net.kyori.adventure.text.Component;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;

public class PlayerCommand implements CommandExecutor {
	@Override
	public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
		if(args.length > 1) {
			sender.sendMessage("์ธ์ˆ˜๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์Šต๋‹ˆ๋‹ค.");
			return false;
		}
		if(args.length != 1 && !(sender instanceof Player)) {
			sender.sendMessage("์ด ๋ช…๋ น์–ด๋Š” ํ”Œ๋ ˆ์ด์–ด๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.");
			return false;
		}

		Player target = args.length == 0 ? (Player) sender : Bukkit.getPlayer(args[0]);

		if(target == null) {
			sender.sendMessage("ํ•ด๋‹น ํ”Œ๋ ˆ์ด์–ด๋Š” ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.");
			return true;
		}

		Component message = Component.text(String.format("[%s ํ”Œ๋ ˆ์ด์–ด ์ •๋ณด]", target.getName()))
									.append(Component.text(String.format("\n๋ ˆ๋ฒจ: %d", target.getLevel())))
									.append(Component.text(String.format("\n๊ฒฝํ—˜์น˜: %.2f%%", target.getExp() * 100)))
				;
		sender.sendMessage(message);

		return true;
	}
}

 

CommandPlugin.java

๋ฉ”์ธ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.

์œ„์—์„œ ์ž‘์„ฑํ•œ ์ปค๋งจ๋“œ ํด๋ž˜์Šค๋ฅผ ๋“ฑ๋กํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

package com.ppyom;

import com.ppyom.command.NoticeCommand;
import com.ppyom.command.PlayerCommand;
import com.ppyom.command.TestCommand;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.PluginCommand;
import org.bukkit.plugin.java.JavaPlugin;

public final class CommandPlugin extends JavaPlugin {

    @Override
    public void onEnable() {
        getLogger().info("CommandPlugin Enable");
        registerCommand("test", new TestCommand());
        registerCommand("notice", new NoticeCommand());
        registerCommand("player", new PlayerCommand());
    }

    @Override
    public void onDisable() {
        getLogger().info("CommandPlugin Disable");
    }

    private void registerCommand(String name, CommandExecutor commandExecutor) {
        PluginCommand pluginCommand = getServer().getPluginCommand(name);
        if(pluginCommand != null) {
            pluginCommand.setExecutor(commandExecutor);
        } else {
            getLogger().warning(String.format("Command %s is not found!", name));
        }
    }
}

 

 

๊ฒฐ๊ณผ

 

 

 

 


 

 

 

์ž˜ ์ฝ์–ด๋ณด์…จ๋‚˜์š”?!

 

์ œ๊ฐ€ ์‚ฌ์‹ค ์•„์ด๋””์–ด๊ฐ€ ๋‹ค ๋–จ์–ด์ ธ์„œ...

์–ด๋–ค ๊ธ€์„ ์จ์•ผํ• ์ง€ ์ด์ œ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค....!!

 

ํ˜น์‹œ ์ด์–ด์„œ ๋ณด๊ณ ์‹ถ๊ฑฐ๋‚˜ ๋งŒ๋“ค์–ด๋ณด๊ณ ์‹ถ์€ ์•„์ด๋””์–ด๋งŒ ์žˆ์œผ์‹ ..! ๊ทธ๋Ÿฐ๊ฑฐ ์žˆ์œผ๋ฉด ๋Œ“๊ธ€ ๋‚จ๊ฒจ์ฃผ์‹œ๋ฉด ์—ด์‹ฌํžˆ ๋งŒ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค..!!

 

๋ฟ€์ด์˜€์Šต๋‹ˆ๋‹ค ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!!

728x90