.神
本帖最后由 迷之芒果 于 2018-9-24 15:48 编辑
FAQ NMS Tutorial





2021.12 数据,可能有更多内容FAQ NMS Tutorial



真正的无限附魔

代码:

  1. @EventHandler
  2.     public void on(PlayerItemHeldEvent e) {
  3.   Player p = e.getPlayer();
  4.   ItemStack item = p.getInventory().getItem(e.getNewSlot());
  5.   CraftPlayer craftPlayer = (CraftPlayer) p;
  6.   EntityPlayer entityPlayer = craftPlayer.getHandle();
  7.   if (item.getType() == Material.BOW && item.getItemMeta().hasEnchant(Enchantment.ARROW_INFINITE)) {
  8.    entityPlayer.abilities.canInstantlyBuild = true;
  9.    return;
  10.   }
  11.   entityPlayer.abilities.canInstantlyBuild = false;
  12.     }

其实也就一行代码: entityPlayer.abilities.canInstantlyBuild = true;(开启无限弓模式)这是我翻实现翻的, 也实验和大佬反馈了有很多副作用,建议不使用!
使用NMS发包


这里就用标题包吧233, PacketPlayOutTitle, 然后我们反编译一下~

可以看到构造参数, 这里我们使用最后一个 最长构建参数的, 如果看不懂参数可以使用mcp帮助~
首先我们new一个标题包

代码:

  1. PacketPlayOutTitle titlePacket = new PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction.TITLE, new ChatComponentText("标题"), 0, 20, 0);
  2. PacketPlayOutTitle subtitlePacket = new PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction.SUBTITLE, new ChatComponentText("副标题"), 0, 20, 0);
然后发送~

代码:

  1. Player p = e.getPlayer();
  2. EntityPlayer nmsPlayer = ((CraftPlayer) p).getHandle();
  3. nmsPlayer.playerConnection.sendPacket(titlePacket);
  4. nmsPlayer.playerConnection.sendPacket(subtitlePacket);
完全代码

代码:

  1. Player p = e.getPlayer();
  2. EntityPlayer nmsPlayer = ((CraftPlayer) p).getHandle();
  3. PacketPlayOutTitle titlePacket = new PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction.TITLE, new ChatComponentText("标题"), 0, 20, 0);
  4. PacketPlayOutTitle subtitlePacket = new PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction.SUBTITLE, new ChatComponentText("副标题"), 0, 20, 0);
  5. nmsPlayer.playerConnection.sendPacket(titlePacket);
  6. nmsPlayer.playerConnection.sendPacket(subtitlePacket);
每个包都是这样发的, 只要知道了参数对应的东西, 就可以随意玩耍啦~

弱鸡绿毛怪
芒果大佬支持一下
(话说还没更新完吗,顺便催更

Ir.Nep
· 没有防好item的NPE
· canInstantlyBuild与太多东西挂钩了,打个比方,我手拿无限弓,右键铁砧去附魔东西或者修复,将不需要消耗我的经验值
· 如果我打开GUI切换某物品栏的东西是不会触发PlayerItemHeldEvent的,也就意味着如果我拿无限弓打开GUI再把某种创造模式下右键不会消耗的物品放到手中是可以无限使用的
还有就是NMS真棒,加油

粘兽
NMSL    Forever!!!

.神
qzz740827 发表于 2018-9-17 20:37
· 没有防好item的NPE
· canInstantlyBuild与太多东西挂钩了,打个比方,我手拿无限弓,右键铁砧去附魔东 ...

不测试就发代码是为了懒和懒和让使用者能不直接抄233  如果说这玩意挂钩了这么多东西的话, 那还是不用为好

东药君
我就想让一个NPC在玩家头上转来转去233

642_
请问该怎么加进整合包,是命令块?还是versions?还是啥

Tcaks_NB
感谢授课qwq