本帖最后由 sky295 于 2020-7-19 20:16 编辑
@EventHandler
public void onPlayerJoinItem(PlayerJoinEvent event){
Player player=event.getPlayer();
int page=getConfig().getStringList("Content").size();
PlayerInventory inventory=player.getInventory();
ItemStack item=new ItemStack(Material.WRITTEN_BOOK,1);
BookMeta meta=(BookMeta) item.getItemMeta();
meta.setTitle("新手教程");
meta.setAuthor("SKY");
for (int i =1;i<page;i++){
getLogger().info("§e"+i);
meta.addPage();
getLogger().info("§e222222222222222222222222");
meta.setPage(i,getConfig().getStringList("Content").get(i));
getLogger().info("§e33333333333333333333333333");
}
item.setItemMeta(meta);
if (!inventory.contains(item)){
inventory.addItem(item);
player.sendMessage("§6获得你一本新手教程");
}
}
public void onPlayerJoinItem(PlayerJoinEvent event){
Player player=event.getPlayer();
int page=getConfig().getStringList("Content").size();
PlayerInventory inventory=player.getInventory();
ItemStack item=new ItemStack(Material.WRITTEN_BOOK,1);
BookMeta meta=(BookMeta) item.getItemMeta();
meta.setTitle("新手教程");
meta.setAuthor("SKY");
for (int i =1;i<page;i++){
getLogger().info("§e"+i);
meta.addPage();
getLogger().info("§e222222222222222222222222");
meta.setPage(i,getConfig().getStringList("Content").get(i));
getLogger().info("§e33333333333333333333333333");
}
item.setItemMeta(meta);
if (!inventory.contains(item)){
inventory.addItem(item);
player.sendMessage("§6获得你一本新手教程");
}
}
@EventHandler
public void onPlayerJoinItem(PlayerJoinEvent event){
Player player=event.getPlayer();
int page=getConfig().getStringList("Content").size();
PlayerInventory inventory=player.getInventory();
ItemStack item=new ItemStack(Material.WRITTEN_BOOK,1);
BookMeta meta=(BookMeta) item.getItemMeta();
meta.setTitle("新手教程");
meta.setAuthor("SKY");
for (int i =1;i<page;i++){
getLogger().info("§e"+i);
meta.addPage();
getLogger().info("§e222222222222222222222222");
meta.setPage(i,getConfig().getStringList("Content").get(i));
getLogger().info("§e33333333333333333333333333");
}
item.setItemMeta(meta);
if (!inventory.contains(item)){
inventory.addItem(item);
player.sendMessage("§6获得你一本新手教程");
}
}
2021.12 数据,可能有更多内容
@EventHandlerpublic void onPlayerJoinItem(PlayerJoinEvent event){
Player player=event.getPlayer();
int page=getConfig().getStringList("Content").size();
PlayerInventory inventory=player.getInventory();
ItemStack item=new ItemStack(Material.WRITTEN_BOOK,1);
BookMeta meta=(BookMeta) item.getItemMeta();
meta.setTitle("新手教程");
meta.setAuthor("SKY");
for (int i =1;i<page;i++){
getLogger().info("§e"+i);
meta.addPage();
getLogger().info("§e222222222222222222222222");
meta.setPage(i,getConfig().getStringList("Content").get(i));
getLogger().info("§e33333333333333333333333333");
}
item.setItemMeta(meta);
if (!inventory.contains(item)){
inventory.addItem(item);
player.sendMessage("§6获得你一本新手教程");
}
}
检查你的plugin.yml文件里是否有
commands:
ji:
commands:
ji:
你是不是有两个插件用了同一个包名,整个主类路径完全一致?
Sssss... 发表于 2020-6-30 21:55
你是不是有两个插件用了同一个包名,整个主类路径完全一致?
我这是一个插件。。
雨 发表于 2020-6-30 21:53
检查你的plugin.yml文件里是否有
commands:
ji:
有的。。。。
reload command类 第九行
不要用论坛code插件
截图完整代码,全部,且带上行号
不要用论坛code插件
截图完整代码,全部,且带上行号
ReloadCommand发一下
本帖最后由 sky295 于 2020-6-30 22:02 编辑
package com.github.sky295.command;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class ReloadCommand extends JavaPlugin implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String s, String[] strings) {
Player player=(Player) sender;
if (player.hasPermission("ji.reload")){
if (command.equals("ji reload")){
reloadConfig();
player.sendMessage("§e插件重载完成!");
return true;
}
}else{
player.sendMessage("§c你没有权限执行reload指令");
return true;
}
return false;
}
}
package com.github.sky295.command;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class ReloadCommand extends JavaPlugin implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String s, String[] strings) {
Player player=(Player) sender;
if (player.hasPermission("ji.reload")){
if (command.equals("ji reload")){
reloadConfig();
player.sendMessage("§e插件重载完成!");
return true;
}
}else{
player.sendMessage("§c你没有权限执行reload指令");
return true;
}
return false;
}
}
Sssss... 发表于 2020-6-30 21:58
ReloadCommand发一下
- package com.github.sky295.command;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandExecutor;
- import org.bukkit.command.CommandSender;
- import org.bukkit.entity.Player;
- import org.bukkit.plugin.java.JavaPlugin;
- public class ReloadCommand extends JavaPlugin implements CommandExecutor {
- @Override
- public boolean onCommand(CommandSender sender, Command command, String s, String[] strings) {
- Player player=(Player) sender;
- if (player.hasPermission("ji.reload")){
- if (command.equals("ji reload")){
- reloadConfig();
- player.sendMessage("§e插件重载完成!");
- return true;
- }
- }else{
- player.sendMessage("§c你没有权限执行reload指令");
- return true;
- }
- return false;
- }
- }
不能有两个类继承javaplugin
William_Shi 发表于 2020-6-30 22:02
不能有两个类继承javaplugin
那不继承的话,我reloadConfig这个方法就不能用了呀,这个方法还是JavaPlugin类下的
sky295 发表于 2020-6-30 22:03
那不继承的话,我reloadConfig这个方法就不能用了呀,这个方法还是JavaPlugin类下的 ...
获取主类实例再调用就好了
主类实现了单例化,可以直接static存储实例
听不懂就去学Java基础
William_Shi 发表于 2020-6-30 22:02
不能有两个类继承javaplugin
我输入指令没反应,请问是哪里出了问题
William_Shi 发表于 2020-6-30 22:05
获取主类实例再调用就好了
主类实现了单例化,可以直接static存储实例
听不懂就去学Java基础 ...
明白了。。。。
William_Shi 发表于 2020-6-30 22:05
获取主类实例再调用就好了
主类实现了单例化,可以直接static存储实例
听不懂就去学Java基础 ...
我输入了指令没有反应是什么原因
for(int i = 1???)
for (int i =1;i<page;i++){
这书是空的啊
这书是空的啊
看不懂吗?这么明白的报错都看不懂?
i从1开始?你见过哪个java里面的序列是从1开始的(常量池除外)?
i从1开始?你见过哪个java里面的序列是从1开始的(常量池除外)?
Sssss... 发表于 2020-7-1 08:50
看不懂吗?这么明白的报错都看不懂?
i从1开始?你见过哪个java里面的序列是从1开始的(常量池除外)? ...
setPage就是从1开始的
sky295 发表于 2020-7-1 09:08
setPage就是从1开始的
你为什么不试试看0
本帖最后由 AdvancedMical 于 2020-7-1 09:37 编辑
首先批评一下你的包名
github用户应该用io.github.你的名字
而且,你不写插件名
如果你写的两个插件的主类的位置都是io.github.sky295.Main的话两个插件都无法启动
所以改为io.github.name.pluginname.mainname比较好
你说的问题:
主类做一个返回
private static 主类 instance;
public static 主类 getInstance() {
return instance;
}
@Override
public void onEnable() {
instance = this;
}
CommandHandler类的
onCommand方法:
JavaPlugin plugin = 主类.getInstance();
然后就可以用plugin.reloadConfig();了
还有,for (int i = 1; i<page; i++) 这书是空的,为何不试试int i = 0呢
“输入指令没反应”:
你在主类注册了吗
onEnable方法
getServer().getPluginCommand("指令").setExecutor(new 命令类());
我觉得我已经说得很详细了,cv都不懂的话那就别写了
sky295 发表于 2020-6-30 22:11
我输入了指令没有反应是什么原因
首先批评一下你的包名
github用户应该用io.github.你的名字
而且,你不写插件名
如果你写的两个插件的主类的位置都是io.github.sky295.Main的话两个插件都无法启动
所以改为io.github.name.pluginname.mainname比较好
你说的问题:
主类做一个返回
private static 主类 instance;
public static 主类 getInstance() {
return instance;
}
@Override
public void onEnable() {
instance = this;
}
CommandHandler类的
onCommand方法:
JavaPlugin plugin = 主类.getInstance();
然后就可以用plugin.reloadConfig();了
还有,for (int i = 1; i<page; i++) 这书是空的,为何不试试int i = 0呢
“输入指令没反应”:
你在主类注册了吗
onEnable方法
getServer().getPluginCommand("指令").setExecutor(new 命令类());
我觉得我已经说得很详细了,cv都不懂的话那就别写了
Sssss... 发表于 2020-7-1 09:09
你为什么不试试看0
试过了,后台直接报错
AdvancedMical 发表于 2020-7-1 09:32
首先批评一下你的包名
github用户应该用io.github.你的名字
- private static Main plugin;
- public reloadCommand (Main plugin){
- this.plugin=plugin;
- }
我是这样写的,你看可以嘛
pages的确从一开始
但是
你书最开始addpage之后
只有一页
那么你就是这样的代码
for (int i=1 ;i小于1 ;i 加加
你觉得能行吗
我手机实在不方便打字,应该能看
但是
你书最开始addpage之后
只有一页
那么你就是这样的代码
for (int i=1 ;i小于1 ;i 加加
你觉得能行吗
我手机实在不方便打字,应该能看
AdvancedMical 发表于 2020-7-1 09:39
你写的啥东西..
我不是跟你很详细地讲过怎么写了吗
我这样写也能调用到reloadConfig方法呀
本帖最后由 AdvancedMical 于 2020-7-1 09:45 编辑
可能你能调用
不过我真的看不懂你这是什么操作
我好像看懂你啥意思了,,
不过你这个方法很令人费解而且很麻烦
你直接在主类搞个getInstance,任何类想用都能用
sky295 发表于 2020-7-1 09:41
我这样写也能调用到reloadConfig方法呀
可能你能调用
不过我真的看不懂你这是什么操作
我好像看懂你啥意思了,,
不过你这个方法很令人费解而且很麻烦
你直接在主类搞个getInstance,任何类想用都能用
William_Shi 发表于 2020-7-1 09:41
pages的确从一开始
但是
你书最开始addpage之后
for (int i =1;i<=page;i++){
meta.addPage("页面"+i);
meta.setPage(i,getConfig().getStringList("Content").get((i-1)));
}
我是这样写的
本帖最后由 南柯郡守 于 2020-7-1 10:09 编辑
addPage的时候 括号里可以直接把要添加的内容写上去 就不用再setPage了
addPage的时候 括号里可以直接把要添加的内容写上去 就不用再setPage了