游戏玩法
《我的世界》下标与设置地标指令详解及崩溃报告分析教程
2025-09-25 14:29:35 游戏玩法
各位老铁们好,相信很多人对于《我的世界》中的下标和设置地标指令并不十分了解。为此,今天我将为大家详细解析这两个问题,希望能够解答大家的疑惑。
让我们来了解一下《我的世界》中的物品ID和角标的使用方法。在1.7.10以下的版本中,我们通常使用方块ID。使用/give指令时,格式为/give XXX【1】【2】【3】【1】,1】代表物品ID,【2】代表数量,【3】代表角标。如果使用/setblock指令,格式为/setblock【1】【2】【3】【4】【5】,1】【2】【3】代表坐标值,【4】代表物品ID,【5】代表角标。在服务器中,我们可以使用ID:角标的形式来使用物品。
我的世界》的报错诊断,本篇文章主要适用于Minecraft服务端/客户端的报错分析,不适用于其他游戏,如网易的《我的世界》版本。这里所说的报错,指的是《Minecraft》游戏中的报错,而非《我的世界》的报错。
在游玩《Minecraft》时,为了提高可玩度,我们通常会安装一些Forge模组。但在配置模组包时,有时会造成游戏崩溃,且大多数人看不懂崩溃报告,甚至不知道崩溃报告输出目录在哪里。本篇教程旨在帮助大家解决这些问题。
Minecraft这个游戏,BUG和解决方案如果写成一堆不重复的书,厚度可以比姚明还高。所以这个游戏不是一般的神奇,尤其是当你看到崩溃报告的时候,你会更深刻地体会到这一点。不加模组,MC也会崩溃,加了还是崩溃。大多数情况是你一股脑加了一堆模组,然后突然蹦了,就不知道怎么办了。幸运的是,这时候,你有60%的概率可以找到问题所在并解决这个问题。
要解决崩溃问题,首先我们需要找到崩溃日志。客户端的CrashReport文件夹目录为(.minecraft\crash-reports),如果启用了版本隔离,则位于(.minecraft\versions\xxxx\crash-reports)。服务端的CrashReport位于服务端根目录下。我们需要打开崩溃日志,并分析其中的报错信息。
在崩溃报告中,我们首先看到的是WARNING coremods are present:xxxxx,这通常是作者动了Minecraft底层代码导致的,Forge为了方便,给你整出来了。在99.9999999%的情况下,coremods在理论上不会造成崩溃,所以你可以忽略这些警告。
我们来分析一下崩溃报告中的几个重要概念。在报错信息中,你会看到一大堆的文字,如at net.xxxxx、at org.xxxxxxxx、at com.xxxxxx、at java.lang.xxxx等,这些被称为栈帧(stacktrace)。CPU寄存器的空间是极其有限的,因此方法的调用需要在栈上开辟空间,每调用一个方法就会生成一个栈帧,因此崩溃报告里的一堆at at at所代表的一系列栈帧,某种意义上是一条调用链,最后被调用的方法(也就是爆出异常的方法)会被崩溃报告放在最上面。
我们来看一下具体的报错信息。一个报错片段中,第一行是错误类型,我们可以看到这个报错的错误类型是java.lang.IndexOutOfBoundsException,这是在Minecraft中非常常见的异常。我们不用去管这个具体是什么,直接往下看。
在报错信息中,栈帧的排列方式是由它们抛出异常的顺序决定的。红色箭头指的栈帧是第一个抛出异常的栈帧,黄色箭头的栈帧是最后一个抛出异常的栈帧。最前面的栈帧就是最后一个抛出错误的位置,也就是说大多数情况我们是从这里下手,或者从第一个栈帧的后面几个栈帧下手。
我们遇到了一个指数组下标越界异常。一个ArrayList数组中没有元素,而你想获取第一个元素,运行时就会报此类型的错误。我们可以看到,最后栈帧抛出的异常,就是ArrayList在获取元素的时候没找到。
我们深入分析这个崩溃问题。我们知道,这个崩溃中有拔刀剑的信息,那么我们就进一步分析。我们知道,拔刀剑有几个栈帧抛出了异常,那么我们以最后一个抛出异常的栈帧进行分析。
通过分析,我们发现这个报错的产生和NBT标签有关系。NBT(二进制命名标签)是Minecraft中用于向文件中存储数据的一种存储格式。NBT格式以树形结构并配以许多标签的形式存储数据。既然如此,我们就可以知道这个报错的产生和NBT标签有关系,然后我们只需要看见tag这个词即可。
这就代表,这个异常的产生是因为在获取组合技的NBT数据时产生异常,在结合最后一个抛出的异常,也就是数组下标越界异常,我们就可以推导出这个异常的产生。
一个玩家在使用拔刀的组合技时,然后这个组合技因为某种原因无法使用,也就是ArrayList数组元素为空,导致抛出数组下标越界异常,引发Minecraft服务器保护机制然后自动关服,并产生这个报错。
我们继续分析崩溃报告中的其他信息。我们找到了产生这个崩溃的模组名字,这个模组叫做slashblade,也就是大家经常玩的拔刀剑。然后我们发现,这些栈帧的形式都是at xxx.xxxxxxx.xxxxxx.xxxxxxxx.xxxxxxx.xxxxxx(xxxx.java:xxxx)。
如果我们以压缩包形式打开拔刀剑模组JAR文件,你会发现一件事,那就是这些栈帧其实就是这个JAR压缩包的内部目录结构!!!就比如这条栈帧at mods.flammpfeil.slashblade.item.ItemSlashBlade$ComboSequence.get(ItemSlashBlade.java:310),我们可以把所有的"。"去掉,改成"/"或者"\\",这样就是一个文件目录了!!!
通过以上分析,我们已经找到了这个崩溃问题的原因。我们可以尝试修复这个报错。
我们需要创建一个新菜单,可以直接复制现有的默认菜单,重命名文件,再修改它即可。修改一个菜单时,打开你的插件文件夹,找到Chest Commands\menu文件夹,默认(第一次打开服务端生成)有3个yml文件。打开它们,它们都含有2个部分:setting(设置)和items(物品)。
菜单设置也就是setting下的各项(红色为必须有,而墨绿色则表示可有可无,你可以删除这一行,不会造成错误)。name:打开时所显示的名称。row:1/2/3/4/5/6(打开菜单的行数,介于1~6之间,如果过高了可能会显示不全,但是会以任何方式执行)。command:(这里所输入的命令无需带/号)。这是你输入后将会无需打开所配置的物品,输入/内的命令即可直接打开它,它会覆盖现有命令。open-with-item:(顾名思义,就是用物品打开,它所可以配置的项目如下)
item-id:(打开所用的物品ID,目前我仅测试了原版的,不清楚是否支持MOD物品,欢迎提议)left-click:true/false(打开或关闭鼠标左键/右键/左键和右键打开菜单)。物品设置items spawn-item(更新须知:不要使用大写字母和特异的符号,并且不能相同):(直接修改:号前的spawn-item,只能小写英文字母或数字(仅个人测试,如果有新发现请发消息@我。)不能同名,否则同名内某一个会被另一个同名的覆盖,应该只是一个代号之类的,和显示无关,只是在yml文件内显示)。
NAME:(显示名称支持颜色代码)COMMAND:(执行的指令,一样不要带/号)(当这行删除时则相当于点击后关闭菜单前提是KEEP-OPEN没打开)ICON-ITEM:(显示的物品的ID)(未测试是否兼容MOD ID)DESCRIPTION:(物品描述在''内输入任何想输入的内容描述,可以拥有若干行)KEEP-OPEN:(当按下按钮时是否保持开着菜单)PRICE:(执行该指令价格可以制作类似商店的东西)PERMISSON:(权限)POSITION-X:(在菜单内的位置 X为列数 Y为行数)。
通过以上步骤,我们可以创建和修改菜单。我们可以通过指令和权限来控制菜单的使用。
对于实体附加值,我们可以使用/give玩家名 88数量 5的命令来获得物品。在1.8之后版本中,这个方法无效,需要使用物品英文名。
关于本次《我的世界》下标和《我的世界》设置地标指令的问题分享到这里就结束了。如果解决了您的问题,我们非常高兴。