//粘贴至 脚本方块 中
var canRe=true;//是否可以重复使用
var reCd=5000;//可重复使用时冷却时间,1000毫秒=1秒
var reParticle=true;//冷却时是否开启烟雾提示
var hide=false;//是否隐藏地雷
var hurtLiving=true;//是否强制对生物造成伤害
var hurtPlayer=false;//是否强制对玩家造成伤害
var hurt=20;//强制造成的伤害
var canRedPower=true;//是否允许使用红石触发
var icon="minecraft:potato";//土豆地雷模型
var inRange=2;//触发范围
var playerOnly=false;//是否仅玩家进入范围触发
var gamemode={0:true,2:true};//玩家在什么模式下才触发
var range=3;//爆炸范围
var breakBlock=false;//是否破坏方块
var fire=false;//是否着火
var breakScriptBlock=false;//脚本方块是否会被炸毁
var update=1;//刷新频率
function exploded(e){
if(!breakScriptBlock){
e.setCanceled(true);
}
}
function init(e){
var block=e.block;
var store=block.getStoreddata();
if(!store.has("boom")){
store.put("boom","true");
}
if(!store.has("cd")){
store.put("cd",0);
}
var icon_t=hide?"minecraft:barrier":icon;
block.setModel(icon_t);
block.setScale(0.5,0.5,0.5);
block.setIsPassible(true);
block.setRotation(90,90,90);
block.timers.forceStart(884,update,true);
}
function timer(e){
if(e.id==884){
var block=e.block;
var store=block.getStoreddata();
var boom=eval(store.get("boom"));
if(!boom && reParticle){
block.world.spawnParticle("largesmoke",block.x+0.5,block.y,block.z+0.5,0,0,0,1,0.1);
}
var type=playerOnly?1:5;
var NE=block.world.getNearbyEntities(block.getPos(),inRange,type);
if(playerOnly){
var NE_t=[];
for(var count=0;count<NE.length;count++){
if(!gamemode[NE[count].getGamemode()]){
return;
}
NE_t.push(NE[count]);
}
NE=NE_t;
}
show(block,NE,false);
}
}
function redstone(e){
if(canRedPower){
var block=e.block;
var type=playerOnly?1:5;
var NE=block.world.getNearbyEntities(block.getPos(),inRange,type);
show(block,NE,true);
}
}
function show(block,NE,type){
var IPlayer=Java.type("noppes.npcs.api.entity.IPlayer");
var DamageSource=Java.type("net.minecraft.util.DamageSource");
var EnumDifficulty=Java.type("net.minecraft.world.EnumDifficulty");
var date=new Date().getTime();
var store=block.getStoreddata();
var boom=eval(store.get("boom"));
var cd=store.get("cd");
if(boom){
if(NE.length>0){
for(var count=0;count<NE.length;count++){
if(NE[count] instanceof IPlayer){
if(gamemode[NE[count].getGamemode()]){
type=true;
if(hurtPlayer){
NE[count].getMCEntity().func_70097_a(DamageSource.field_76376_m,hurt);
}
}
continue;
}
if(hurtLiving){
NE[count].getMCEntity().func_70097_a(DamageSource.field_76376_m,hurt);
}
type=true;
}
}
if(type){
store.put("boom","false");
store.put("cd",date+reCd);
block.world.explode(block.x,block.y,block.z,range,fire,breakBlock);
block.world.spawnParticle("lava",block.x+0.5,block.y,block.z+0.5,0,0,0,1,100);
}
}else if(date>cd && canRe){
store.put("boom","true");
}
}