网易我的世界论坛

标题: 萌新求助[UI制作] [打印本页]

作者: 虚羽爱mc    时间: 2021-1-13 21:42
标题: 萌新求助[UI制作]
经过我一段时间的奋斗,终于把UI显示出来惹!但是,如何在玩家手持指定物品时再调用UI啊,就像技能似的
大佬们教教我,方便的话发个demo就最好惹

作者: 神捕晖    时间: 2021-1-14 10:06
可以参考官方的射击玩法mod(AwesomeMod),点击瞄准按钮时,显示瞄准的UI,应该和你这个类似~
第二个包时官方的UImod,里面有各种UI的示例用法
作者: 神捕晖    时间: 2021-1-14 10:07
这是官方文档链接:http://mc.163.com/mcstudio/mc-dev/MCDocs/4-DEMO%E7%A4%BA%E4%BE%8B/%E7%A4%BA%E4%BE%8B%E7%AE%80%E4%BB%8B.html
作者: Ran_n    时间: 2021-1-14 17:15
本帖最后由 Ran_n 于 2021-1-14 17:39 编辑

监听这两个事件
OnCarriedNewItemChangedServerEvent
触发时机:玩家切换主手物品时触发该事件
=======
OnOffhandItemChangedServerEvent
触发时机:玩家切换副手物品时触发该事件

  1. class UIDemoServerSystem(ServerSystem):
  2.     def __init__(self, namespace, systemName):
  3.         ServerSystem.__init__(self, namespace, systemName)

  4.         self.DefineEvent('CarriedAimItemEvent')
  5.         self.ListenForEvent(serverApi.GetEngineNamespace(), serverApi.GetEngineSystemName(),
  6.                             ServerEvent.OnCarriedNewItemChangedServerEvent, self, self.OnCarriedNewItemChangedServer)
  7.         pass

  8.     def OnCarriedNewItemChangedServer(self, args):

  9.         self.NotifyToClient(args['playerId'], 'CarriedAimItemEvent', args)
  10.         pass
  11. #########
  12. class UIDemoClientSystem(ClientSystem):

  13.     def __init__(self, namespace, systemName):
  14.         ClientSystem.__init__(self, namespace, systemName)

  15.         self.ListenForEvent(modConfig.ModName, modConfig.ServerSystemName,
  16.                             'CarriedAimItemEvent', self, self.OnCarriedAimItem)
  17.         pass

  18.     def OnCarriedAimItem(self, args):
  19.         if args['newItemName'] != 'minecraft:stick':
  20.             print '显示UI'
  21.         else:
  22.             print '关闭UI'

  23.         pass
复制代码


作者: 虚羽爱mc    时间: 2021-1-14 20:06
Ran_n 发表于 2021-1-14 17:15
监听这两个事件
OnCarriedNewItemChangedServerEvent
触发时机:玩家切换主手物品时触发该事件

蟹蟹大佬




欢迎光临 网易我的世界论坛 (http://mc.netease.com/) Powered by Discuz! X3.3