name: FirstMinecraftPlugin
version: 1.0
author: Devonnuri
description: My First Minecraft Plugin
main: main.Main
}}}||
||name||'''플러그인의 이름 (필수, 공백 없이)'''||
||version||'''플러그인의 버전 (필수)'''||
||main||'''플러그인의 메인 클래스 (필수)'''||
||author||플러그인의 저자||
||description||플러그인의 설명||
[br]
== 명령어 입력 받기 ==
{{{#!syntax java
public class 클래스명 implements CommandExecutor
{
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
코드입력
}
}
}}}
JavaPlugin을 상속받은 곳에서
{{{#!syntax java
getCommand("명령어이름").setExecutor(클래스);
}}}
~~프로젝트에 쓰고있는거 복붙~~
주의할 점은 반드시 plugin.yml에서 getCommand에 사용할 명령어를 정의해주어야 한다.
정의해주지 않을 시에는 NullPointerException 에러가 발생한다.
== 제목 표시하기 ==
[[파일:플러그인 개발 - Title 테스트.png|width=75%]]
이런 걸 표시해봅시다.
{{{#!syntax java
public class 클래스명
{
public void sendTitle(Player player, String title, int FadeInTime, int ShowTime, int FadeOutTime){
CraftPlayer p = (CraftPlayer)player;
PlayerConnection c = p.getHandle().playerConnection;
IChatBaseComponent TitleText = ChatSerializer.a(title);
Packet> Length = new PacketPlayOutTitle(EnumTitleAction.TIMES, TitleText, FadeInTime*20, ShowTime*20, FadeOutTime*20);
Packet> TitlePacket = new PacketPlayOutTitle(EnumTitleAction.TITLE, TitleText, FadeInTime*20, ShowTime*20, FadeOutTime*20);
c.sendPacket(TitlePacket);
c.sendPacket(Length);
}
}
}}}
{{{#red 주의}}}: 패킷을 사용하면 nms 패키지를 참조하게 되고, 버전이 바뀔 때마다 패킷 구조가 바뀌므로 권장하지 않습니다. 아래는 spigot api에서 제공하는 타이틀 메소드입니다.
{{{#!syntax java
player.sendTitle ("제목 메시지", "부제목 메시지", 나타나는 시간, 화면에 머무는 시간, 사라지는 시간);
/*제목 메시지나 부제목 메시지를 없에려면 null을, 시간을 기본값으로 설정하려면 -1을 대입하면 됩니다. 시간 기본값은 왼쪽부터 10틱, 70틱, 20틱 입니다.*/
}}}
== 팁 ==
* [[https://hub.spigotmc.org/javadocs/bukkit/]]에서 레퍼런스를 보실 수 있습니다. 레퍼런스를 볼 능력이 요구됩니다.
* [[Java]]나 [[객체 지향 프로그래밍]]을 잘 모르셔도 간단한 플러그인의 경우 그렇게 문제가 되지는 않습니다. 그러나, 미리 Java의 기본을 익히고 오는 것이 '''매우 강력히 권장됩니다.'''
* 이 문서에서 다루는 버킷 외에 Spigot에 대해 관심이 있다면 [[https://hub.spigotmc.org/javadocs/spigot|이 곳]]을 확인하세요.
* 이클립스는 단축키가 지원됩니다. 대표적으로 많이 쓰이는 단축키들입니다.
||Ctrl+Shift+F || 자동 정렬 ||
||Ctrl+Space || 자동 완성 ||
||Ctrl+Shift+O || 자동 import문 추가 ||
== Bukkit API 레퍼런스 ==
## 이 레퍼런스는 코드에 링크되어 있을 수 있으니 anchor로 이어져 있어야 합니다.
이 문단은 버킷의 패키지, 패키지 안에 있는 클래스와 인터페이스, 열거형 등을 통틀어 Bukkit API에 대하여 다룬다.
=== org.bukkit.plugin.java.JavaPlugin ===
##정리 부탁드립니다.
'''모든 Bukkit 플러그인은 JavaPlugin을 상속해야 합니다.'''
아래의 메소드는 JavaPlugin에 있는 메소드입니다. (@Override가 있는 경우 오버라이드 가능)
==== 콜백 함수 ====
===== public void onLoad() =====
## onLoad 콜백함수
플러그인 로딩시 onEnable보다 먼저 실행된다.
{{{#!syntax java
@Override
public void onLoad() {
// 플러그인을 로드 하였을 때(활성화 이전) 발생하는 콜백 함수
// 버킷을 실행하거나 /reload 명령어로 재시작하였을 때 발생합니다.
}
}}}
===== public void onEnable() =====
## onEnable 콜백함수
플러그인 활성화시 onLoad 이후에 실행된다.
[anchor(onEnable)]
{{{#!syntax java
@Override
public void onEnable() {
// 플러그인을 활성화 하였을 때(로드 이후) 발생하는 콜백 함수
// 버킷을 실행하거나 /reload 명령어로 재시작하였을 때 발생합니다.
}
}}}
===== public void onDisable() =====
## onDisable 콜백함수
플러그인 비활성화시 실행된다.[* 서버가 강제 종료되는 등의 예외적인 상황의 경우 onDisable이 호출되지 않고 꺼질 수 있다.]
[anchor(onDisable)]
{{{#!syntax java
@Override
public void onDisable() {
// 플러그인을 비활성화 하였을 때 발생하는 콜백 함수
// 버킷을 종료하거나 /reload 명령어로 재시작하였을 때 발생합니다.
}
}}}
==== protected File getFile() ====
{{{#!syntax java
@Override
protected File getFile()
{
return super.getFile();
}
}}}
==== public ChunkGenerator getDefaultWorldGenerator(String worldName, String id) ====
{{{#!syntax java
@Override
public ChunkGenerator getDefaultWorldGenerator(String worldName, String id)
{
return super.getDefaultWorldGenerator(worldName, id);
}
}}}
==== public EbeanServer getDatabase() ====
{{{#!syntax java
@Override
public EbeanServer getDatabase()
{
return super.getDatabase();
}
}}}
==== public FileConfiguration getConfig() ====
{{{#!syntax java
@Override
public FileConfiguration getConfig()
{
return super.getConfig();
}
}}}
==== public InputStream getResource(String filename) ====
{{{#!syntax java
@Override
public InputStream getResource(String filename)
{
return super.getResource(filename);
}
}}}
==== protected void installDDL() ====
{{{#!syntax java
@Override
protected void installDDL()
{
super.installDDL();
}
}}}
==== protected void removeDDL() ====
{{{#!syntax java
@Override
protected void removeDDL()
{
super.removeDDL();
}
}}}
==== public PluginCommand getCommand(String name) ====
{{{#!syntax java
@Override
public PluginCommand getCommand(String name)
{
return super.getCommand(name);
}
}}}
==== public List