jkaa13579
怎么对右键进行监听啊,或者说监听某个玩家使用某种物品?开发包没给出这这样的方法

q513902026
本帖最后由 q513902026 于 2016-4-29 16:08 编辑

使用Bukkit或者Forge提供的监听器
Bukkit: PlayerInteractEvent
Forge: ClickEvent  MouseEvent PlayerInteractEvent
Bukkit 实现Listener接口的类中 使用@EventHandler注解的方法的传入参数类型代表要监听的事件
Forge 对任意非final static 无返回值的方法标记@SubscribeEvent或者其他类型功能的注解
传入参数类型表示要监听的方法(注意FORGE有些事件是要使用@EventHandler)

Bukkit:

  1. Bukkit.getServer().getPluginManager().registerEvent(pl,new Listener(){
  2. @EventHandler
  3. public void onPlayerJoin(PlayerJoinEvent e)
  4. {
  5.    //TODO 通过传入参数做你想做的事
  6. }
  7. });
复制代码

Forge:

  1. ....
  2. //省略上文代码
  3. @SubscribeEvent
  4. public void onGuiButtonAction(GuiScreenEvent.ActionPerformedEvent event) {
  5. //TODO 做你想做的事
  6. }

  7. @EventHandler
  8. public void onModPreInit(FMLPreInitializationEvent event) {
  9. .....
  10. //省略上文代码
  11. MinecraftForge.EVENT_BUS.register(this);
  12. }
  13. ....
复制代码


如果觉得上面不太明白
可以自己去看官方的教程
Bukkit:http://wiki.bukkit.org/Event_API_Reference
Forge:http://www.hakugyokurou.net/wordpress/?p=225 <--非官方的 找不到官方的在哪了

jkaa13579
q513902026 发表于 2016-4-29 15:52
使用Bukkit或者Forge提供的监听器
Bukkit: PlayerInteractEvent
Forge: ClickEvent  MouseEvent PlayerInt ...

那我要对物品进行判断,我要怎么得到原来物品的ID

q513902026
jkaa13579 发表于 2016-4-29 16:57
那我要对物品进行判断,我要怎么得到原来物品的ID

Bukkit e.getItem().getTypeId(); 获得物品的id 不推荐使用(magic value
Forge GameRegister.findUniqueIdentifierFor(item).name 获得物品的内部名称

jkaa13579
q513902026 发表于 2016-4-29 17:38
Bukkit e.getItem().getTypeId(); 获得物品的id 不推荐使用(magic value
Forge GameRegister.findUnique ...

我如果要让他停止当前的活动(例如右击不打开物品),要用什么方法实现?

q513902026
jkaa13579 发表于 2016-4-29 18:37
我如果要让他停止当前的活动(例如右击不打开物品),要用什么方法实现? ...

e.setCancelled(true) 必须实现Cancelled接口或者被@Cancelled注解

jkaa13579
q513902026 发表于 2016-4-29 20:05
e.setCancelled(true) 必须实现Cancelled接口或者被@Cancelled注解

怎么获取玩家当前手中的物品的ID

q513902026
jkaa13579 发表于 2016-4-30 09:28
怎么获取玩家当前手中的物品的ID

Bukkit e.getPlayer().getItemInHand()
请多查查https://jd.bukkit.org/ 或者https://hub.spigotmc.org/javadocs/spigot/ 这些文档
很多问题是不应该问出来的

jkaa13579
q513902026 发表于 2016-4-30 13:11
Bukkit e.getPlayer().getItemInHand()
请多查查https://jd.bukkit.org/ 或者https://hub.spigotmc.org/j ...

那个GetTypeId不能得到:后面的参数啊,bukkit好像没提供这样的参数?

q513902026
jkaa13579 发表于 2016-4-30 22:41
那个GetTypeId不能得到:后面的参数啊,bukkit好像没提供这样的参数?

byte
    item.getDate().getData()