我正试图为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无关的不重要。
答案 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,并且不能提供任何其他想法来解释为什么会抛出该错误。