NT_ET
本帖最后由 NT_ET 于 2022-1-20 03:37 编辑

我刚刚接触插件开发,
在我构建了mohist开发环境后可以调用:
net.minecraft.nbt
下的类 并调用对应函数.
但将插件安装到服务端后执行时就会抛出异常:
java.lang.NoSuchMethodError

at java.lang.Thread.run(Thread.java:748) [?:1.8.0_252]
Caused by: java.lang.NoSuchMethodError: net.minecraft.nbt.NBTTagCompound.getTag(Ljava/lang/String;)Lnet/minecraft/nbt/NBTBase;.

我在官方的discord查找了类似问题并查找了很多帖子和网站,
但并没有解决这个问题.
请问我该如何在服务端上使用调用了net.minecraft.nbt包内内容
的插件呢?如果它还未实现或没有解决方案,在mohist服务端下是否有其他可以修改实体nbt标签的办法呢?
我并不是java程序员 如果信息提供的不够详细希望能帮我指出
谢谢了







MohistMC
请提供完整的后台日志,谢谢

ZZZ-魔洪
能否看一眼代码?

NT_ET
本帖最后由 NT_ET 于 2022-1-20 13:39 编辑

我不能确定我的代码有无逻辑和语法上的错误
因为我不能进行进一步的调试
主要问题在于我无法在服务器运行时调用net.minecraft包下的内容

环境是按照https://wiki.mohistmc.com/#/developer/setup搭建的
我执行了Setup、Build、Generate patches中所提到操作
并且使用它生成的服务端构建了服务器


下面为执行命令抛出的信息:
  1. [13:11:05 ERROR]: null
  2. org.bukkit.command.CommandException: Unhandled exception executing command 'test' in plugin VehicleManagera v0.1
  3.         at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[PluginCommand.class:?]
  4.         at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:154) ~[SimpleCommandMap.class:?]
  5.         at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:752) ~[CraftServer.class:?]
  6.         at net.minecraft.network.NetHandlerPlayServer.func_147361_d(NetHandlerPlayServer.java:1589) ~[pa.class:?]
  7.         at net.minecraft.network.NetHandlerPlayServer.func_147354_a(NetHandlerPlayServer.java:1428) ~[pa.class:?]
  8.         at net.minecraft.network.play.client.CPacketChatMessage.func_148833_a(CPacketChatMessage.java:46) ~[la.class:?]
  9.         at net.minecraft.network.play.client.CPacketChatMessage.func_148833_a(CPacketChatMessage.java:9) ~[la.class:?]
  10.         at net.minecraft.network.PacketThreadUtil.lambda$checkThreadAndEnqueue$0(PacketThreadUtil.java:16) ~[hv.class:?]
  11.         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_252]
  12.         at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_252]
  13.         at net.minecraft.util.Util.func_181617_a(SourceFile:46) [h.class:?]
  14.         at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:840) [MinecraftServer.class:?]
  15.         at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:461) [nz.class:?]
  16.         at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:778) [MinecraftServer.class:?]
  17.         at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:624) [MinecraftServer.class:?]
  18.         at java.lang.Thread.run(Thread.java:748) [?:1.8.0_252]
  19. Caused by: java.lang.NoSuchMethodError: net.minecraft.item.ItemStack.getTagCompound()Lnet/minecraft/nbt/NBTTagCompound;
  20.         at com.github.ntet.Commands.CommandsHandler.onCommand(CommandsHandler.java:21) ~[?:?]
  21.         at org.bukkit.command.PluginCommand.execute(PluginCommand.java:43) ~[PluginCommand.class:?]
  22.         ... 15 more
复制代码
latest.log (868.31 KB, 下载次数: 0)


NT_ET
以下为代码
  1. package com.github.ntet.Commands;

  2. import org.bukkit.command.Command;
  3. import org.bukkit.command.CommandExecutor;
  4. import org.bukkit.command.CommandSender;
  5. import org.bukkit.craftbukkit.v1_12_R1.inventory.CraftItemStack;

  6. import net.minecraft.nbt.NBTTagCompound;
  7. import net.minecraft.nbt.NBTTagString;

  8. public class CommandsHandler implements CommandExecutor {

  9.         @Override
  10.         public boolean onCommand(CommandSender sender, Command command, String s, String[] args)
  11.         {               
  12.                
  13.                 org.bukkit.inventory.ItemStack bukkitItemStack = new org.bukkit.inventory.ItemStack(org.bukkit.Material.BEDROCK);
  14.                
  15.                 net.minecraft.item.ItemStack nmsStack = CraftItemStack.asNMSCopy(bukkitItemStack);
  16.                
  17.                 NBTTagCompound nbtTagCompound = nmsStack.getTagCompound();
  18.                
  19.                 if(nbtTagCompound == null)
  20.                         nbtTagCompound = new NBTTagCompound();
  21.                
  22.                 nbtTagCompound.setTag("TheKey",new NBTTagString("TheValue"));
  23.                
  24.                 bukkitItemStack = CraftItemStack.asBukkitCopy(nmsStack);
  25.                
  26.                 return true;
  27.         }
  28. }
复制代码



俺是残阳
虽然看不懂但是觉得很牛逼

第一页 上一页 下一页 最后一页