Minecraft(我的世界)中文论坛

标题: Day's 水桶插件开发教程 第七章 箱子GUI界面

作者: whatafcukday    时间: 2015-6-28 08:43
标题: Day's 水桶插件开发教程 第七章 箱子GUI界面
本帖最后由 whatafcukday 于 2016-1-30 18:34 编辑
10年没更了{:10_492:}看到终于有人看我的教程了, 就来更新一下 (也就是说你们看教程记得要回帖子!或者评分!)
永不停更个屁,还会有后续章节哦。



Day's 水桶插件开发教程 第七章 箱子GUI界面

1.了解背包


2.自定义一个箱子背包


3.监听背包点击事件

金币呢? 人气呢?


作者: 可可可可可乐    时间: 2015-6-29 09:58
支持楼主的教程,话说楼主有没有总帖
作者: lxroo96    时间: 2015-6-29 17:20
围观大神...
作者: 请填写    时间: 2015-6-29 17:59
啊实打实大
作者: whatafcukday    时间: 2015-6-30 20:20
可可可可可乐 发表于 2015-6-29 09:58
支持楼主的教程,话说楼主有没有总帖

有的 全站搜索Day's就找到了
作者: whatafcukday    时间: 2015-6-30 20:20
可可可可可乐 发表于 2015-6-29 09:58
支持楼主的教程,话说楼主有没有总帖

有的 全站搜索Day's就找到了
作者: xingxxx    时间: 2015-7-4 09:07
可可可可可乐 发表于 2015-6-29 09:58
支持楼主的教程,话说楼主有没有总帖

支持!!!
作者: whatafcukday    时间: 2015-7-4 13:03
sunaotong2 发表于 2015-7-4 08:59
我觉得,讲触发事件的时候不详细,希望可以补上一个实例

好的 近期会补上一个实例
作者: xingyu    时间: 2015-9-2 06:01
支持!{:10_512:}
作者: LIUIF    时间: 2015-9-2 21:27
然而只能凑凑热闹
作者: 马上登陆    时间: 2015-9-7 17:05
看不懂啊!!!!!!!!
作者: 4one_R    时间: 2015-9-7 23:34
0.0撞了哈哈
作者: seesaw_233    时间: 2015-10-13 12:03
本帖最后由 seesaw_233 于 2016-5-1 09:16 编辑
箱子GUI也要补充补充
应该叫做 物品容器GUI .....
getRawSlot() 的用法是
  1. public void onInventoryClick(InventoryClickEvent event)
  2. if(event.getRawSlot() == 0 )
复制代码
Inventory inv = Bukkit.createInventory(所有者, 大小, 标题);
所有者一般为 null (空值) ,大小可以是数字(int)和类型(InventoryType)
  1. Inventory inve = Bukkit.createInventory(null, 54 , " §2 !DC! ");
复制代码
  1.     Inventory inv = Bukkit.createInventory(null,InventoryType.CHEST , " §2 !seesaw! ");
复制代码

物品也是,ID可以是数字(int)和原版类型(Material
  1. ItemStack a = new ItemStack(Material.DIAMOND_PICKAXE ,1) ;
复制代码
更改ItemMeta这样用:
  1. ItemMeta ai = a.getItemMeta();
复制代码
然后.....

  1. ai.setDisplayName("§2 lol~ ") ;
复制代码
setItemMeta回来
  1. a.setItemMeta(ai);
复制代码
至于Lore没试过,不讲,不敢保证对不对....
我是这样写的
  1. // Lore set
  2. public void invSetup()
  3.     {
复制代码
  1. public void onEnable()
  2. {
  3.     invSetup();
  4.     getLogger().info("插件已启用");
  5. }
复制代码

完事...
{:10_492:} {:10_492:} {:10_492:} {:10_492:} {:10_492:}









作者: 181133567    时间: 2015-10-17 17:17
seesaw_233 发表于 2015-10-13 12:03
本帖最后由 seesaw_233 于 2015-10-13 12:07 编辑
箱子GUI也要补充补充
应该叫做 物品容器GUI .....

wow   这个补充的真到位
作者: 181133567    时间: 2015-10-17 17:29
你好~ 问个问题 【你也可以对ItemStack取meta然后做点处理,比如换displayname,添加Lore、附魔等等,请至API查看 (233333)】 这里的对itemstack取meta中的meta是什么含义,不太懂。。。
作者: seesaw_233    时间: 2015-10-20 12:22
181133567 发表于 2015-10-17 17:29
你好~ 问个问题 【你也可以对ItemStack取meta然后做点处理,比如换displayname,添加Lore、附魔等等,请至A ...

他说的很难懂,我是看老外的插件才懂的
取Meta是
  1. ItemMeta ai = a.getItemMeta();
复制代码

具体可以在我的补充里找到
作者: 181133567    时间: 2015-10-21 02:03
seesaw_233 发表于 2015-10-20 12:22
他说的很难懂,我是看老外的插件才懂的
取Meta是

好的~谢啦 能加个Q嘛 一起交流和学习 181133567
作者: seesaw_233    时间: 2015-10-21 13:42
181133567 发表于 2015-10-21 02:03
好的~谢啦 能加个Q嘛 一起交流和学习 181133567

不能,去Minecraft插件百科官网找群,我在那里。
http://mineplugin.org

作者: [email protected]    时间: 2015-11-2 16:20
支持一下,太好了
作者: [email protected]    时间: 2015-11-2 16:32
厉害啊,支持一下
作者: Bryan33    时间: 2015-11-6 17:50
标准的使某人或后台执行命令的姿势应该是
Bukkit.dispatchCommand(CommandSender sender,String commandLine);
所有的实体还有后台都是CommandSender的子接口
所以通用性不用质疑
作者: asjkdaskljda    时间: 2015-12-6 11:41
感觉图片过少,然后教程有点看不懂
作者: 周润发    时间: 2015-12-17 20:00
if (!evt.getInventory().getTitle().equalsIgnoreCase(guiname)) {return;}
里面的guiname写啥?是inv还是啥
evt.setCancelled(true);这个写在哪里
=========我是这样写的,但是不行=============
    @EventHandler
    public void Effect(InventoryClickEvent jc){
            if (jc.getWhoClicked() instanceof Player == false) {
                    return;}
            Player p = (Player)jc.getWhoClicked();
            if (!jc.getInventory().getTitle().equalsIgnoreCase("inv")) {
                    return;}
            jc.setCancelled(true);
           
    }
===========================================
求楼主大人解答,爱你么么哒
作者: 1606140786    时间: 2015-12-18 00:18
哇,好的,谢谢
作者: rebam    时间: 2015-12-22 22:08
楼主加油,不要放弃啊,我就看的懂你的教程
作者: 1377023219    时间: 2016-1-9 14:27
楼主,可以给一下水桶的事件吗?
最好中文的,因为我看不懂。谢谢!
作者: tyb123789    时间: 2016-2-12 13:41
尼玛骗子!!!货呢???拿钱就删好友啊?
作者: caizhong3    时间: 2016-3-31 09:52
楼主啊  图挂了

作者: whatafcukday    时间: 2016-4-24 09:13
a390807154 发表于 2015-11-6 17:50
标准的使某人或后台执行命令的姿势应该是
Bukkit.dispatchCommand(CommandSender sender,String commandLin ...

当然也可以那样写。。
4/24考古
作者: Bryan33    时间: 2016-4-24 12:50
whatafcukday 发表于 2016-4-24 09:13
当然也可以那样写。。
4/24考古

而且也完全不用
  1. evt.getWhoClicked() instanceof Player == false
复制代码

直接用
  1. !(evt.getWhoClicked() instanceof Player)
复制代码

作者: qq307198081    时间: 2016-4-24 14:24
图挂了大神~!
作者: seesaw_233    时间: 2016-5-1 09:15
hushubao 发表于 2015-12-17 20:00
if (!evt.getInventory().getTitle().equalsIgnoreCase(guiname)) {return;}
里面的guiname写啥?是inv还是 ...

  1. @EventHandler
  2.     public void Effect(InventoryClickEvent jc)
  3. {
  4.             if (jc.getWhoClicked() instanceof Player)
  5.                     return;
  6.             Player p = (Player)jc.getWhoClicked();
  7.             if (!jc.getInventory().getTitle().equalsIgnoreCase("inv"))
  8.                     return;
  9.             jc.setCancelled(true);
  10. }
复制代码

作者: whatafcukday    时间: 2016-5-7 15:49
a390807154 发表于 2016-4-24 12:50
而且也完全不用
直接用

小符号太多看的眼花..

作者: Laver    时间: 2016-5-27 13:58
图全挂了还要人气
作者: licrafter_    时间: 2016-5-27 20:26
不错的教程,加油
作者: Rain丶鋭    时间: 2016-7-21 20:30
图全挂了。。
作者: YoungMC    时间: 2016-7-24 00:18
支持一下,正在学此类#gui正好有帮助,
作者: DevilDrgon    时间: 2016-9-8 22:12
请问API怎么看?
作者: 情已死    时间: 2017-2-7 23:59
求更新。。。
作者: 神奈川归尘    时间: 2018-4-8 20:56
楼主图挂了 能补一下吗
作者: lusurui    时间: 2018-4-12 09:32
你好~ 问个问题
作者: Aj_破晓    时间: 2018-8-23 17:28
图全挂了看不到啊~
作者: 克鲁鲁殿下    时间: 2020-5-20 18:59
是不是考虑把这一行代码写进去
if(event.getRawSlot() == 0 )

监测点击位置


还有为什么不讲一讲gui内格子的坐标呢= =
作者: 结城希亚    时间: 2020-5-20 22:29
fantuan_233 发表于 2020-5-20 18:59
是不是考虑把这一行代码写进去
if(event.getRawSlot() == 0 )

这不是判断点击的格子是否为最左上角吗


坐标没什么好讲的
最左上角为0,最右下角为53
左到右,上到下
只不过和正常数的习惯有点差别,-1就行了