刷怪笼详细
热度:2674
评论:4

刷怪箱可能会在以下地点出现,以以下几率随机出现一种:

自然生成的刷怪箱不会生成被动性生物,以及爬行者、末影人。当然,如果使用地图编辑器或Mod修改刷怪箱,它就会生成几乎全部生物(除了巨人之外)。

在生存模式中没有任何手段能够把刷怪箱放在你的物品栏中,除非使用Mod或物品栏修改器,或使用“/give”指令。刷怪箱不会在创造模式中的物品选择栏中出现,但可以通过“选择方块”功能获得。如果刷怪箱通过这种方式放置,或者一个刷怪箱丢失了方块实体值,它就会生成猪。在之前可以使用 /give [用户名] 52:<实体数字ID> [数量] 0 指令给予生成特定生物的刷怪箱,之后请使用/give [用户名] 52 [数量] 0 {BlockEntityTag:{EntityId:"<实体字母ID>"}}

生成规律

刷怪箱会在其周围生成生物,但也要符合生物本身生成的要求。不同生物的要求不同。例如,主世界中的攻击性生物只能在黑暗中(亮度为7或以下),而家畜则必须在草上生成,亮度要求9或以上。不过,刷怪箱可以将生物生成在空中,这样会忽略掉生物对于地面的生成要求。

玩家距离刷怪箱16个方块内时,刷怪箱才会工作。当刷怪箱工作时,会以刷怪箱方块八个端点中x和z坐标最小的一点为中心的 8 × 3 × 8 (8方格长宽,3方格高,8方格深)的有效区域生成生物。生物可以在此区域符合生物生成要求的任意一处生成,即使刷怪箱周围不符合要求。若此区域全部符合生物生成的要求,则生物生成点不呈线性,且越靠近刷怪箱处生成几率越大。

刷怪箱会尝试在有效区域内生成共4个生物,每生成一次后会等待200-799刻(10-39.95秒,随机)再进行下一次生成。在等待时,刷怪箱笼子里的生物会越转越快。除了对地面的生成要求,生物的其它生成要求也必须要满足(如不能生成在固体方块中、正确的亮度范围),因此一个刷怪箱常常不能生成出4个生物。如果刷怪箱在有效区域内找不到任何符合要求的位置生成生物,则每一刻都会尝试一次。当刷怪箱成功生成至少一个生物后才会进入下一个生成周期。如果在生成阶段,刷怪箱周围17 × 9 × 17的空间存在至少6个生物,则刷怪箱内火焰会升腾(表示已经“生成”了新的生物),但实际上生成过程被跳过,进入下一个周期。不过,如果这个空间外的生物数量比这个空间内(就算超过了6个)更多,则刷怪箱也会继续无限地生成生物。

需要注意的是,生物生成点x、y、z坐标都是整数,不一定会与刷怪箱对齐。生物生成时,脚的高度会与刷怪箱在同一层,或者比刷怪箱高一层或低一层。但水平上可以在8 × 8平面中的任意一处。由于生物本身占有高度,因此在刷怪箱有效区域比8 × 3 × 8还要大一些。

刷怪箱的方块实体值可以修改为其它实体如矿车或船,做成装饰方块。但这样的刷怪箱在Minecraft 1.2.5以及之前的版本尝试生成时,游戏会崩溃。1.3.1已经无此问题。

在和平难度下,刷怪箱也会出现,但生物在生成后会立即消失(僵尸猪人、岩浆怪和恶魂根本不会生成)。这样在修筑刷怪塔的时候不会被它们烦扰。但生物存在的那一瞬间也足以推开玩家,或发出声音;对于骷髅,甚至会射出箭。

下面的表将会展示其本身一些更复杂的特性:

经过推测一个普通刷怪笼的最大生成数量

生物形态

需求空间

在8×8×4的空间内的生成比率(8×8×3才是刷怪箱生成实体的正确空间)

垂直
对齐


猪    8.9 × 8.9 × 2.9    2.531252%    


洞穴蜘蛛    8.7 × 8.7 × 2.5    1.531252%    


蠹虫    8.3 × 8.3 × 2.7    0.28125%    


僵尸

骷髅

烈焰人    8.6 x 8.6 x 3.8    1.125%    


蜘蛛    9.4 × 9.4 × 2.9    6.125%    

详细的生成算法

这份伪代码基于 Minecraft 1.4.2 反编译出的源文件:

<pre>
every spawn cycle (every randInt(200,799) ticks when a player is within
   17 blocks of the spawner),
loop 4 times {
       if there are 6 or more of the mob type in the 17x9x17 area around the spawner,
          skip this spawn cycle
       calculate spawnerX = X coordinate of center of spawner - 0.5
       calculate spawnerY = Y coordinate of center of spawner - 0.5
       calculate spawnerZ = Z coordinate of center of spawner - 0.5
       calculate x coordinate of mob = spawnerX + (randDouble() - randDouble()) * 4,
           randDouble being a random number between 0 and 1
       calculate y coordinate of mob = spawnerY + a random integer between -1 and 1
       calculate z coordinate of mob = spawnerZ + (randDouble() - randDouble()) * 4,
           randDouble being a random number between 0 and 1
       if all of the conditions specific to the mob type are met, spawn the mob {
         chicken, cow, horse, mooshroom, pig, sheep, villager, wolf:
               block below spawning block is grass
               spawning block has a light level of 9 or higher

         ocelot:
               pass a 2/3 random test
               block below spawning block is grass or leaves
               on layer 63 or higher

         creeper, enderman, skeleton, spider, cave spider, zombie:
               light level 7 or less

         blaze:
               light level 11 or less

         silverfish:
               light level 11 or less, or on Stone blocks
               no players within 5 blocks

         slime:
               difficulty is not set to peaceful or slime size is small
               either:
                       spawn block y coordinate is less than 40
                       the chunk containing the spawn block is a slime chunk (1 in 10 chance)
                       pass a 1 in 10 random test
               or:
                       swamp biome, layer 51 through 69, light level 7 or less
         
         ghast:
               pass a 1 in 20 random test
         
         squid:
               must not collide with any other entities
               must be in layer 46-62
         
         giant:
               light level 7 or less
               light level 8 or more
               (since these conditions can't be true simultaneously, giant spawners don't work)
         
         all except squid and slimes:
               must not collide with any blocks or other entities
               must not collide with water or lava
       }
}
if all 4 mobs failed to spawn, repeat on the next tick

这份伪代码基于 Minecraft 1.7.10 反编译出的源文件:

if (there is a player within the range of activatingRangeFromPlayer)
{
   if (spawner delay == -1)
   {
       reset spawner delay
   }

   if (spawner delay > 0)
   {
       decrement spawner delay by 1
       cancel this spawn
   }

   loop for the number of entities we should spawn
   {
       if (the number of entityTypeName in a 2*spawnRange+1 centered cube > maxNearbyEntities) {
           reset spawner delay
           exit loop
       }

       X = Spawner.x + random(spawnRange*2)-spawnRange;
       Y = Spawner.y + random(3)-1;
       Z = Spawner.z + random(spawnRange*2)-spawnRange;

       if (entity can spawn at (X,Y,Z))
       {
           Spawn entityTypeName at (X,Y,Z)
           Play Sound Effect
           Spawn Particles
       }
   }

   if (at least one entity was spawned)
   {
       reset spawner delay
   }
}

Default values:
   activatingRangeFromPlayer = 16
   spawner delay = 20
   maxNearbyEntities = 6
   spawn range = 4
   entityTypeName = Pig

Outcomes (default):
   A player must be within a 16 block centered sphere
   There must not be more than 6 pigs within a 9x9x9 centered cube
   The pig must be able to spawn at the chosen location (must not be inside a block, meet lighting conditions etc.)
   If all mobs fail to spawn, it will try again on the very next tick.

你知道吗

刷怪箱内的缩小化生物


01-08 08:39
未知_genghe
未知_genghe
楼主

评论

热门攻略
最新攻略
猜你喜欢
我的世界水星迫降EP.17自动砍树机【皮卡丘的游戏解说】
我的世界水星迫降EP.17自动砍树机【皮卡丘的游戏解说】
皮卡解说皮卡解说
02-16
2423
【冥冥】我的世界神奇宝贝Ep8
【冥冥】我的世界神奇宝贝Ep8
DE_我是冥冥DE_我是冥冥
04-01
1727
1.7.2生存
1.7.2生存
龙猫龙猫
04-26
1282
我是个失败的人,
我是个失败的人,
世界新手世界新手
09-04
1118