gpt4 book ai didi

javascript - 将 Minecraft Pocket Edition mod 导入 Blocklauncher 时出错

转载 作者:行者123 更新时间:2023-12-02 17:29:52 25 4
gpt4 key购买 nike

我正在尝试为 Minecraft 袖珍版制作我的第一个 modscript。非常简单,而且已经做过很多次了。但无论如何我只是想尝试制作一个来练习制作模组。

这是模组:

var tb = 0;
function useItem(x,y,z,itemId,blockId,side)
{
if(itemId==280&&tb==0)
{
ModPE.setItem(332, 6, 7, "Ender Pearl");
Player.addItemInventory(332, 32);
tb=1;
}else if(itemId==280) {
Player.addItemInventory(332,5);
}
function entityRemovedHook(entity)
{
if(Entity.getEntityTypeId(entity)==82)
{
setPosition(getPlayerEnt(), Entity.getX(entity), Entity.getY(entity)+4, Entity.getZ(entity));
}
}

但每当我尝试将其导入 Blocklauncher 时,我都会收到错误:

}
org.mozilla.javascript.EvaluatorException: missing } after function body (Enderpearl.js#17)

还有更多的东西,但我发现那些不重要的东西与模组无关。

最佳答案

所有括号必须匹配,这是我在不使用 IDE(集成开发环境)编写脚本时通常遵循的规则。

例如,这是您当前的代码。我将在该代码的注释中突出显示您的奇异错误

function useItem(x,y,z,itemId,blockId,side)
{
if(itemId==280&&tb==0)
{
ModPE.setItem(332, 6, 7, "Ender Pearl");
Player.addItemInventory(332, 32);
tb=1;
}else if(itemId==280) { // Here, the 'else if' is opened..
Player.addItemInventory(332,5);
} // but its never closed. The interpreter interprets this as the end of
// the else if, but then, the function is never closed
function entityRemovedHook(entity) // So now, you have a function within a function
{
if(Entity.getEntityTypeId(entity)==82)
{
setPosition(getPlayerEnt(), Entity.getX(entity), Entity.getY(entity)+4, Entity.getZ(entity));
}
} // 1

当然,这是假设错误上方的单数括号不是与上面的代码“分开”的。或者换句话说,标记为 1 的括号是最后一个括号,或者是在它之后还有另一个。如果后面还有另一个,那么继续这个答案..

var tb = 0;
function useItem(x,y,z,itemId,blockId,side)
<b>{</b>
if(itemId==280&&tb==0)
<b>{</b>
ModPE.setItem(332, 6, 7, "Ender Pearl");
Player.addItemInventory(332, 32);
tb=1;
<b>}</b>else if<b>(</b>itemId==280<b>)</b> <b>{</b>
Player.addItemInventory(332,5);
<b>}</b> //this bracket should exist here to properly close the else block
<b>}</b>
function entityRemovedHook(entity)
<b>{</b>
if(Entity.getEntityTypeId(entity)==82)
<b>{</b>
setPosition(getPlayerEnt(), Entity.getX(entity), Entity.getY(entity)+4, Entity.getZ(entity));
<b>}</b> // I indented this bracket for easier reading
<b>}</b>

请注意额外的括号,放置在 else if 的方法 use 之后(JS 是一种面向对象的语言;在本例中,这引用了术语“方法”,它是一个函数对象,在本例中为“玩家”)。在上面的代码中,我将每个括号加粗

如果不是最后一个括号,代码看起来很好,除了在函数内定义函数之外,在这种情况下,外部无法访问内部函数;它只能从函数内部访问。如果是这种情况,我不熟悉您用来解释此代码的任何 API,并且无法提供任何其他想法来解释为什么它会抛出该错误。

关于javascript - 将 Minecraft Pocket Edition mod 导入 Blocklauncher 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23165192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com