本帖最后由 tiger999 于 2016-8-15 12:35 编辑
没想到我居然刚写完,第二篇就继续写了。。。大家不必感到奇怪,我是一个小学生(请大家不要误解,也不要吐槽,我是一个纯洁的小学生)
上节课我布置了作业^_^,那么无论看了答案的童鞋是发现自己对了还是错了,都给自己鼓掌,当然,除了那些连作业都没有做的人-_-
答案是
OK,我们开始讲监听器,监听器这鬼东西,真是不好说
说监听之前,得先说说什么是事件
什么事件呢?
事件的意思大家可能都是发生了什么新闻之类的啊
插件里面的事件也是新闻,当然,不是大事,而是微不足道的小事,小到玩家移动,水流动,玩家捡起东西......
那么,监听器就是去监听,并会把这个事件返回给插件,插件就根据这些信息进行各种各样的事情
我们首先先做一个监听器,不监听,怎么可以呢?
我们首先先创建一个空的插件(详细)
这次和以前有一点不同,我们首先把命令执行器删掉
然后呢,我们把
public class xxxxx extends JavaPlugin
这里后面加上一个implements Listener
OK,现在添加了一个监听器,但是还不够,我们添加了是添加了,但是还得注册一下,我们上节课讲了onEnable(),所以呢,我们就在onEnable里面来注册
我们在里面加上
Bukkit.getPluginManager().registerEvents(this, this);
YEAH,一个可以用的监听器就制作好了,可是问题是我们还没有给他任务,他都不知道是干什么,怎么用(观众:小编!)
呵呵,这里我们在里面加一个
@EventHandler
@EventHandler表明下面{}里面的东西是监听的东西
我们写了以后,在@EventHandler下面写
public void xxx(监听器种类 evt){
}
比如说
public void PlayerJoin(PlayerJoinEvent evt){
}
OK,这个就是当玩家登陆时触发的监听器
当然,他监听到了,会返回信息给你,准确来说,是他有许多的method
比如说,我上面写的那个,他就有一个getPlayer()
那么我要获取那个玩家就是
Player player=evt.getPlayer()
这样子,evt.是什么意思呢?evt.大家可以理解为,监听器创建了一个盒子,就是evt盒子,里面有许多的信息,他就在evt这个盒子里面找东西
监听器也有许多不同的种类,比如说
public void PlayerMove(PlayerMoveEvent evt){
}
这个就是当一个玩家移动时候触发的,他的PlayerMoveEvent是这样的
PlayerMoveEvent(Player player, Location from, Location to)
那么,他就会给你返回Player(玩家) from(从哪里) to(到哪里)
他的Method就有
getPlayer()
getTo()
getFrom()
OK,我们做到了这些,我们就可以用这些来做一个东西
比如说,当一个玩家登陆的时候他就显示欢迎(玩家名)
@EventHandler
public void onPlayerJoin(PlayerJoinEvent evt){
Player p=evt.getPlayer();
Bukkit.broadcastMessage("欢迎玩家"+p.getName());
}
OK,这里有一个Bukkit.broadcastMessage()就是给全服发信息
就这么的简单!
我们还可以再加一个
p.sendMessage("欢迎你!");
这样子,这个sendMessage()就是给某个玩家发东西,这里我就是给p发东西,p就是登陆的玩家!
大家可能还有许多疑问,有哪些其他种类的呢?大家可以去看API
API
这个东西里面是整个插件核心里面的东西里面的所有东西几乎都有!
大家可以找到event,在里面找你要的东西
作业:
结合上次作业和API,做一个玩家加入游戏的时候,读取config并显示出去
回到索引贴
上节课我布置了作业^_^,那么无论看了答案的童鞋是发现自己对了还是错了,都给自己鼓掌,当然,除了那些连作业都没有做的人-_-
答案是
//首先说一下,我的答案是实现的一种,大家的答案假如和我的方式不一样的话,可以在下楼回复哦!
//还有一个就是,我读取的message路径里的东西
package com.github.tiger;
import java.io.File;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;
public class MyFirstPlugin extends JavaPlugin{
public void onEnable() {
if(!getDataFolder().exists()) {
getDataFolder().mkdir();
}
File file=new File(getDataFolder(),"config.yml");
if (!(file.exists())) {saveDefaultConfig();}
reloadConfig();
getLogger().info("启用完毕!");
}
public void onDisable(){
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){if (cmd.getName().equalsIgnoreCase("tiger")){
if (args[0].equalsIgnoreCase("msg")){
String msg=getConfig().getString("message");
sender.sendMessage(msg);
}
return true;
}
return false;
}
}
Config文件里面的话就是
message:
你对了吗?
OK,我们开始讲监听器,监听器这鬼东西,真是不好说
说监听之前,得先说说什么是事件
什么事件呢?
事件的意思大家可能都是发生了什么新闻之类的啊
插件里面的事件也是新闻,当然,不是大事,而是微不足道的小事,小到玩家移动,水流动,玩家捡起东西......
那么,监听器就是去监听,并会把这个事件返回给插件,插件就根据这些信息进行各种各样的事情
我们首先先做一个监听器,不监听,怎么可以呢?
我们首先先创建一个空的插件(详细)
这次和以前有一点不同,我们首先把命令执行器删掉
然后呢,我们把
public class xxxxx extends JavaPlugin
这里后面加上一个implements Listener
OK,现在添加了一个监听器,但是还不够,我们添加了是添加了,但是还得注册一下,我们上节课讲了onEnable(),所以呢,我们就在onEnable里面来注册
我们在里面加上
Bukkit.getPluginManager().registerEvents(this, this);
YEAH,一个可以用的监听器就制作好了,可是问题是我们还没有给他任务,他都不知道是干什么,怎么用(观众:小编!)
呵呵,这里我们在里面加一个
@EventHandler
@EventHandler表明下面{}里面的东西是监听的东西
我们写了以后,在@EventHandler下面写
public void xxx(监听器种类 evt){
}
比如说
public void PlayerJoin(PlayerJoinEvent evt){
}
OK,这个就是当玩家登陆时触发的监听器
当然,他监听到了,会返回信息给你,准确来说,是他有许多的method
比如说,我上面写的那个,他就有一个getPlayer()
那么我要获取那个玩家就是
Player player=evt.getPlayer()
这样子,evt.是什么意思呢?evt.大家可以理解为,监听器创建了一个盒子,就是evt盒子,里面有许多的信息,他就在evt这个盒子里面找东西
监听器也有许多不同的种类,比如说
public void PlayerMove(PlayerMoveEvent evt){
}
这个就是当一个玩家移动时候触发的,他的PlayerMoveEvent是这样的
PlayerMoveEvent(Player player, Location from, Location to)
那么,他就会给你返回Player(玩家) from(从哪里) to(到哪里)
他的Method就有
getPlayer()
getTo()
getFrom()
OK,我们做到了这些,我们就可以用这些来做一个东西
比如说,当一个玩家登陆的时候他就显示欢迎(玩家名)
@EventHandler
public void onPlayerJoin(PlayerJoinEvent evt){
Player p=evt.getPlayer();
Bukkit.broadcastMessage("欢迎玩家"+p.getName());
}
OK,这里有一个Bukkit.broadcastMessage()就是给全服发信息
就这么的简单!
我们还可以再加一个
p.sendMessage("欢迎你!");
这样子,这个sendMessage()就是给某个玩家发东西,这里我就是给p发东西,p就是登陆的玩家!
大家可能还有许多疑问,有哪些其他种类的呢?大家可以去看API
API
这个东西里面是整个插件核心里面的东西里面的所有东西几乎都有!
大家可以找到event,在里面找你要的东西
作业:
结合上次作业和API,做一个玩家加入游戏的时候,读取config并显示出去
回到索引贴
没想到我居然刚写完,第二篇就继续写了。。。大家不必感到奇怪,我是一个小学生(请大家不要误解,也不要吐槽,我是一个纯洁的小学生)
上节课我布置了作业^_^,那么无论看了答案的童鞋是发现自己对了还是错了,都给自己鼓掌,当然,除了那些连作业都没有做的人-_-
答案是
OK,我们开始讲监听器,监听器这鬼东西,真是不好说
说监听之前,得先说说什么是事件
什么事件呢?
事件的意思大家可能都是发生了什么新闻之类的啊
插件里面的事件也是新闻,当然,不是大事,而是微不足道的小事,小到玩家移动,水流动,玩家捡起东西......
那么,监听器就是去监听,并会把这个事件返回给插件,插件就根据这些信息进行各种各样的事情
我们首先先做一个监听器,不监听,怎么可以呢?
我们首先先创建一个空的插件(详细)
这次和以前有一点不同,我们首先把命令执行器删掉
然后呢,我们把
public class xxxxx extends JavaPlugin
这里后面加上一个implements Listener
OK,现在添加了一个监听器,但是还不够,我们添加了是添加了,但是还得注册一下,我们上节课讲了onEnable(),所以呢,我们就在onEnable里面来注册
我们在里面加上
Bukkit.getPluginManager().registerEvents(this, this);
YEAH,一个可以用的监听器就制作好了,可是问题是我们还没有给他任务,他都不知道是干什么,怎么用(观众:小编!)
呵呵,这里我们在里面加一个
@EventHandler
@EventHandler表明下面{}里面的东西是监听的东西
我们写了以后,在@EventHandler下面写
public void xxx(监听器种类 evt){
}
比如说
public void PlayerJoin(PlayerJoinEvent evt){
}
OK,这个就是当玩家登陆时触发的监听器
当然,他监听到了,会返回信息给你,准确来说,是他有许多的method
比如说,我上面写的那个,他就有一个getPlayer()
那么我要获取那个玩家就是
Player player=evt.getPlayer()
这样子,evt.是什么意思呢?evt.大家可以理解为,监听器创建了一个盒子,就是evt盒子,里面有许多的信息,他就在evt这个盒子里面找东西
监听器也有许多不同的种类,比如说
public void PlayerMove(PlayerMoveEvent evt){
}
这个就是当一个玩家移动时候触发的,他的PlayerMoveEvent是这样的
PlayerMoveEvent(Player player, Location from, Location to)
那么,他就会给你返回Player(玩家) from(从哪里) to(到哪里)
他的Method就有
getPlayer()
getTo()
getFrom()
OK,我们做到了这些,我们就可以用这些来做一个东西
比如说,当一个玩家登陆的时候他就显示欢迎(玩家名)
@EventHandler
public void onPlayerJoin(PlayerJoinEvent evt){
Player p=evt.getPlayer();
Bukkit.broadcastMessage("欢迎玩家"+p.getName());
}
OK,这里有一个Bukkit.broadcastMessage()就是给全服发信息
就这么的简单!
我们还可以再加一个
p.sendMessage("欢迎你!");
这样子,这个sendMessage()就是给某个玩家发东西,这里我就是给p发东西,p就是登陆的玩家!
大家可能还有许多疑问,有哪些其他种类的呢?大家可以去看API
API
这个东西里面是整个插件核心里面的东西里面的所有东西几乎都有!
大家可以找到event,在里面找你要的东西
作业:
结合上次作业和API,做一个玩家加入游戏的时候,读取config并显示出去
回到索引贴
2021.12 数据,可能有更多内容
没想到我居然刚写完,第二篇就继续写了。。。大家不必感到奇怪,我是一个小学生(请大家不要误解,也不要吐槽,我是一个纯洁的小学生)上节课我布置了作业^_^,那么无论看了答案的童鞋是发现自己对了还是错了,都给自己鼓掌,当然,除了那些连作业都没有做的人-_-
答案是
//首先说一下,我的答案是实现的一种,大家的答案假如和我的方式不一样的话,可以在下楼回复哦!
//还有一个就是,我读取的message路径里的东西
package com.github.tiger;
import java.io.File;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;
public class MyFirstPlugin extends JavaPlugin{
public void onEnable() {
if(!getDataFolder().exists()) {
getDataFolder().mkdir();
}
File file=new File(getDataFolder(),"config.yml");
if (!(file.exists())) {saveDefaultConfig();}
reloadConfig();
getLogger().info("启用完毕!");
}
public void onDisable(){
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){if (cmd.getName().equalsIgnoreCase("tiger")){
if (args[0].equalsIgnoreCase("msg")){
String msg=getConfig().getString("message");
sender.sendMessage(msg);
}
return true;
}
return false;
}
}
Config文件里面的话就是
message:
你对了吗?
OK,我们开始讲监听器,监听器这鬼东西,真是不好说
说监听之前,得先说说什么是事件
什么事件呢?
事件的意思大家可能都是发生了什么新闻之类的啊
插件里面的事件也是新闻,当然,不是大事,而是微不足道的小事,小到玩家移动,水流动,玩家捡起东西......
那么,监听器就是去监听,并会把这个事件返回给插件,插件就根据这些信息进行各种各样的事情
我们首先先做一个监听器,不监听,怎么可以呢?
我们首先先创建一个空的插件(详细)
这次和以前有一点不同,我们首先把命令执行器删掉
然后呢,我们把
public class xxxxx extends JavaPlugin
这里后面加上一个implements Listener
OK,现在添加了一个监听器,但是还不够,我们添加了是添加了,但是还得注册一下,我们上节课讲了onEnable(),所以呢,我们就在onEnable里面来注册
我们在里面加上
Bukkit.getPluginManager().registerEvents(this, this);
YEAH,一个可以用的监听器就制作好了,可是问题是我们还没有给他任务,他都不知道是干什么,怎么用(观众:小编!)
呵呵,这里我们在里面加一个
@EventHandler
@EventHandler表明下面{}里面的东西是监听的东西
我们写了以后,在@EventHandler下面写
public void xxx(监听器种类 evt){
}
比如说
public void PlayerJoin(PlayerJoinEvent evt){
}
OK,这个就是当玩家登陆时触发的监听器
当然,他监听到了,会返回信息给你,准确来说,是他有许多的method
比如说,我上面写的那个,他就有一个getPlayer()
那么我要获取那个玩家就是
Player player=evt.getPlayer()
这样子,evt.是什么意思呢?evt.大家可以理解为,监听器创建了一个盒子,就是evt盒子,里面有许多的信息,他就在evt这个盒子里面找东西
监听器也有许多不同的种类,比如说
public void PlayerMove(PlayerMoveEvent evt){
}
这个就是当一个玩家移动时候触发的,他的PlayerMoveEvent是这样的
PlayerMoveEvent(Player player, Location from, Location to)
那么,他就会给你返回Player(玩家) from(从哪里) to(到哪里)
他的Method就有
getPlayer()
getTo()
getFrom()
OK,我们做到了这些,我们就可以用这些来做一个东西
比如说,当一个玩家登陆的时候他就显示欢迎(玩家名)
@EventHandler
public void onPlayerJoin(PlayerJoinEvent evt){
Player p=evt.getPlayer();
Bukkit.broadcastMessage("欢迎玩家"+p.getName());
}
OK,这里有一个Bukkit.broadcastMessage()就是给全服发信息
就这么的简单!
我们还可以再加一个
p.sendMessage("欢迎你!");
这样子,这个sendMessage()就是给某个玩家发东西,这里我就是给p发东西,p就是登陆的玩家!
大家可能还有许多疑问,有哪些其他种类的呢?大家可以去看API
API
这个东西里面是整个插件核心里面的东西里面的所有东西几乎都有!
大家可以找到event,在里面找你要的东西
作业:
结合上次作业和API,做一个玩家加入游戏的时候,读取config并显示出去
回到索引贴
本帖最后由 RecursiveG 于 2015-12-23 23:18 编辑
教程贴要求正确使用[code]标记包围代码。请楼主修改
教程贴要求正确使用[code]标记包围代码。请楼主修改
tiger999 发表于 2015-12-24 22:01
不是我不想用,是每次一用code
他就会出现成堆成堆的乱码
tiger999大大,您可以尝试使用World文档,然后截图。
使用图床上传,这样效果会比较好。【图床是有免费的】
顶楼主,长知识了,原来还有这个玩意
抑制不住的 发表于 2016-1-3 13:16
顶楼主,长知识了,原来还有这个玩意
谢谢你的支持!
tiger999 发表于 2016-1-3 20:25
谢谢你的支持!
不用谢~!应该的
API怎么查看o(╯□╰)o
包淞中 发表于 2016-1-5 23:30
API怎么查看o(╯□╰)o
我会专门写一篇的!
tiger999 发表于 2016-1-6 20:08
我会专门写一篇的!
谢谢啦,因为不会查看API很多方法都不会用o(╯□╰)o