minecraftpe吧 关注:638,739贴子:15,084,409

[Modpe精品算法分享]FZ牌矿物生成

只看楼主收藏回复

FZ想必大家都知道吧
今天就分享一下 FZ的矿物生成~
(不包括地表随机生成部分)
由zheka smirnov编写~
#xxx#代表需要填入的部分
(记得把#删掉)
[稀有度请不要调太高 不然卡卡卡卡卡]
注意:这是最初级的用法
这样生成的是单个矿物
如果要生成矿物簇
还请自行领会
=====代码部分=====
var loaded=false;
var ores=[
{id:#矿物ID#,minY:#Y轴范围最小值#,maxY:#Y轴范围最大值#,rarity:#稀有程度#},
];
function leaveGame(){
loaded=false;
}
function modTick(){
var cx=Math.round(Player.getX()/16);
var cz=Math.round(Player.getZ()/16);
if(!loaded && Level.getTile(parseInt(Player.getX()),parseInt(Player.getY())-2,parseInt(Player.getZ()))!=0)
loaded=true;
if(loaded){
for(var i=0;i<ores.length;i++){
for(var x=-1;x<1;x++){
for(var z=-1;z<1;z++){
if(Level.getTile((cx+x)*16,1,(cz+z)*16)!=4)
Generate(cx+x,cz+z,ores[i].id,ores[i].minY,ores[i].maxY,ores[i].rarity);
}
}
}
for(var x=-1;x<1;x++){
for(var z=-1;z<1;z++){
if(Level.getTile((cx+x)*16,1,(cz+z)*16)!=4)
Level.setTile((cx+x)*16,1,(cz+z)*16,4);
}
}
}
}
function Generate(cx,cz,id,minY,maxY,rarity){
for(var x=cx*16;x<(cx+1)*16-1;x++){
for(var z=cz*16;z<(cz+1)*16-1;z++){
for(var y=minY;y<maxY;y++){
if(Math.floor(Math.random()*rarity*10)==9 && Level.getTile(x,y,z)==1)
Level.setTile(x,y,z,id);
if(Math.floor(Math.random()*rarity*10)==9 && Level.getTile(x+1,y,z)==1)
Level.setTile(x+1,y,z,id);
if(Math.floor(Math.random()*rarity*10)==9 && Level.getTile(x,y+1,z)==1)
Level.setTile(x,y+1,z,id);
if(Math.floor(Math.random()*rarity*10)==9 && Level.getTile(x,y,z+1)==1)
Level.setTile(x,y,z+1,id);
}
}
}
}
=====例子=====



var loaded=false;
var ores=[
{id:5,minY:7,maxY:15,rarity:10},
];
function leaveGame(){
loaded=false;
}
function modTick(){
var cx=Math.round(Player.getX()/16);
var cz=Math.round(Player.getZ()/16);
if(!loaded && Level.getTile(parseInt(Player.getX()),parseInt(Player.getY())-2,parseInt(Player.getZ()))!=0)
loaded=true;
if(loaded){
for(var i=0;i<ores.length;i++){
for(var x=-1;x<1;x++){
for(var z=-1;z<1;z++){
if(Level.getTile((cx+x)*16,1,(cz+z)*16)!=4)
Generate(cx+x,cz+z,ores[i].id,ores[i].minY,ores[i].maxY,ores[i].rarity);
}
}
}
for(var x=-1;x<1;x++){
for(var z=-1;z<1;z++){
if(Level.getTile((cx+x)*16,1,(cz+z)*16)!=4)
Level.setTile((cx+x)*16,1,(cz+z)*16,4);
}
}
}
}
function Generate(cx,cz,id,minY,maxY,rarity){
for(var x=cx*16;x<(cx+1)*16-1;x++){
for(var z=cz*16;z<(cz+1)*16-1;z++){
for(var y=minY;y<maxY;y++){
if(Math.floor(Math.random()*rarity*10)==9 && Level.getTile(x,y,z)==1)
Level.setTile(x,y,z,id);
if(Math.floor(Math.random()*rarity*10)==9 && Level.getTile(x+1,y,z)==1)
Level.setTile(x+1,y,z,id);
if(Math.floor(Math.random()*rarity*10)==9 && Level.getTile(x,y+1,z)==1)
Level.setTile(x,y+1,z,id);
if(Math.floor(Math.random()*rarity*10)==9 && Level.getTile(x,y,z+1)==1)
Level.setTile(x,y,z+1,id);
}
}
}
}


IP属地:云南来自WindowsPhone客户端1楼2016-06-11 14:46回复
    一楼


    IP属地:山东来自Android客户端2楼2016-06-11 14:47
    回复


      来自Android客户端3楼2016-06-11 14:47
      回复
        围观


        IP属地:广东来自Android客户端5楼2016-06-11 14:48
        回复
          多个矿物怎么办


          IP属地:江苏来自Android客户端6楼2016-06-11 14:49
          收起回复
            使用时请注明
            by zheka smirnov


            IP属地:云南来自WindowsPhone客户端8楼2016-06-11 14:55
            回复
              前排


              来自Android客户端9楼2016-06-11 14:58
              回复
                害怕


                来自Android客户端10楼2016-06-11 14:59
                回复
                  多个矿物只能复制 粘贴 再修改,并不能使用&&否则只会读取最后一个ID哟


                  IP属地:云南来自WindowsPhone客户端11楼2016-06-11 14:59
                  回复
                    吓到
                    我还以为方块启动器上面早有了关于随机生成的函数呢

                    欢迎加入"我的世界联机平台吧"让我们一起愉快的联机!


                    来自Android客户端12楼2016-06-11 15:01
                    收起回复
                      因式分解,现在支持0.15吗?


                      IP属地:广东来自Android客户端13楼2016-06-11 15:14
                      收起回复
                        楼主有兴趣可以来参观参观
                        http://tieba.baidu.com/p/3957206619


                        IP属地:陕西来自iPhone客户端14楼2016-06-11 17:07
                        回复
                          吆西,看起来很有趣


                          IP属地:重庆来自Android客户端15楼2016-06-11 20:22
                          收起回复
                            对于这个算法我想说
                            太完美了
                            太做做了


                            IP属地:重庆来自Android客户端18楼2016-06-11 21:15
                            收起回复
                              这么好的算法没人要
                                 --给文明以岁月,而不是给岁月以文明。


                              IP属地:云南来自WindowsPhone客户端19楼2016-06-11 21:28
                              收起回复