上一节 下一节
第一章 第七节 案例课:玩家进入案例演示
参与编写者: MagicLu550
建议学习时间: 30分钟
学习要点: 对于之前知识的巩固和加深认识
这个项目的需求很简单.实现一个玩家加入自定义提示信息,可以手动取消信息的功能
我们列举下步骤
-
创建项目
-
导入nukkit包
-
创建初始化配置文件set-info.yml
-
创建plugin.yml
-
创建主类
-
创建监听器
-
创建命令
-判断
-
注册监听器和命令
-
完成
1.第一到二步请自己完成
2.set-inf的内容
1
| message: 欢迎${player}加入了服务器
|
3.我的plugin.yml的内容
1 2 3 4 5 6 7 8 9 10 11 12 13
| name: MyJoin main: net.noyark.www.MyJoin version: "0.0.1" author: magiclu550 api: ["1.0.9"] description: My first plugin
commands: set: permission: myjoin.set permissions: myjoin.set: default: op
|
4.创建主类 MyJoin
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| package net.noyark.www;
import cn.nukkit.plugin.PluginBase;
public class MyJoin extends PluginBase { private Map<String,Boolean> cancel;
private static MyJoin instance;
@Override public void onLoad() { this.getLogger().info("插件开始加载"); }
@Override public void onEnable() { instance = this; this.saveDefaultConfig(); this.getLogger().info("插件初始化完毕");
}
@Override public void onDisable() { this.getLogger().info("插件已经关闭"); }
public static MyJoin getInstance() { return instance; } public void setCancel(String name,boolean isCancel) { cancel.put(name,isCancel); } public Map<String, Boolean> getCancel() { return cancel; } }
|
5.创建监听器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| package net.noyark.www;
import cn.nukkit.event.EventHandler; import cn.nukkit.event.Listener; import cn.nukkit.event.player.PlayerJoinEvent;
public class MyJoinListener implements Listener {
@EventHandler public void onJoin(PlayerJoinEvent e){ Boolean isCancel = MyJoin.getInstance().getCancel().get(e.getPlayer().getName()); if(isCancel!=null&&!isCancel) { String message = MyJoin.getInstance().getConfig().getString("message"); e.setJoinMessage(message.replace("${player}", e.getPlayer().getName())); }else{ MyJoin.getInstance().getCancel().put(e.getPlayer().getName(),true); } }
}
|
6.创建命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| package net.noyark.www;
import cn.nukkit.command.Command; import cn.nukkit.command.CommandSender;
public class MyCommand extends Command {
public MyCommand() { super("set","设置是否改变加入信息","/set"); }
@Override public boolean execute(CommandSender sender, String commandLabel, String[] args) { if(args.length!=0) MyJoin.getInstance().getCancel().put(sender.getName(),Boolean.valueOf(args[0])); else MyJoin.getInstance().getCancel().put(sender.getName(), MyJoin.getInstance().getCancel().get( sender.getName() )==null?false:!MyJoin.getInstance() .getCancel() .get(sender.getName() ) ); return true; } }
|
- 注册
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| package net.noyark.www;
import cn.nukkit.plugin.PluginBase;
import java.util.Map;
public class MyJoin extends PluginBase {
private Map<String,Boolean> cancel; private static MyJoin instance;
@Override public void onLoad() { this.getLogger().info("插件开始加载"); }
@Override public void onEnable() { instance = this; this.saveDefaultConfig(); this.getServer().getCommandMap().register("",new MyCommand()); this.getServer().getPluginManager().registerEvents(new MyJoinListener(),this); this.getLogger().info("插件初始化完毕");
}
@Override public void onDisable() { this.getLogger().info("插件已经关闭"); }
public static MyJoin getInstance() { return instance; }
public void setCancel(String name,boolean isCancel) { cancel.put(name,isCancel); }
public Map<String, Boolean> getCancel() { return cancel; } }
|
这大概是这个项目的流程,很简单,但是大家可以练一练,扎实基本功,我们马上开始推入下一节
感谢你们的支持
上一节 下一节