将Minecraft Pocket Edition mod导入Blocklauncher时出错

时间:2014-04-19 02:42:34

标签: javascript minecraft

我正试图为Minecraft Pocket Edition制作我的第一个modscript。它非常简单,已经多次制作过。但我只想尝试制作一个制作mod的练习。

这是mod:

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)

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

1 个答案:

答案 0 :(得分:2)

所有括号必须匹配,这是我在不使用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)
{
    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);
    } //this bracket should exist here to properly close the else block
}
function entityRemovedHook(entity) 
{ 
    if(Entity.getEntityTypeId(entity)==82) 
    { 
        setPosition(getPlayerEnt(), Entity.getX(entity), Entity.getY(entity)+4, Entity.getZ(entity)); 
    } // I indented this bracket for easier reading
}

注意在else if方法使用后放置的额外括号(JS是一种面向对象的语言;在这种情况下,这引用了术语'方法'这是对象的一个​​功能,在这种情况下是“玩家”#)。在上面的代码中,我已经粗体编辑每个括号。

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