📅  最后修改于: 2023-12-03 14:48:48.945000             🧑  作者: Mango
以下是一份用于寻找下界矿生成的位置的代码片段。请注意,下界矿只能在地狱中生成,因此必须先到达地狱才能使用此代码。
World world = event.getWorld(); // 得到当前的世界
List<BlockPos> oreLocations = new ArrayList<>(); // 存储找到的下界矿位置
for (Chunk chunk : world.getChunkProvider().getLoadedChunks()) { // 遍历所有已加载的区块
for (final Map.Entry<BlockPos, IBlockState> entry : chunk.getBlockStateMap().entrySet()) { // 遍历每个方块
if (entry.getValue().getBlock() == Blocks.NETHER_QUARTZ_ORE) { // 判断方块是否为下界矿石
oreLocations.add(entry.getKey()); // 添加此位置到列表中
}
}
}
if (oreLocations.size() == 0) {
return; // 没有找到任何下界矿石
}
let oreLocations = []; // 存储找到的下界矿位置
for (let x = -30000000; x < 30000000; x += 16) { // 遍历每个区块
for (let z = -30000000; z < 30000000; z += 16) {
let chunk = server.getWorld("world_nether").getChunkAt(x, z); // 得到当前区块
for (let y = 0; y < 256; y++) { // 遍历每个方块
let block = chunk.getBlockAt(x, y, z);
if (block.getType() == Material.NETHER_QUARTZ_ORE) { // 判断方块是否为下界矿石
oreLocations.push(block.getLocation()); // 添加此位置到列表中
}
}
}
}
if (oreLocations.length == 0) {
return; // 没有找到任何下界矿石
}
oreLocations = [] # 存储找到的下界矿位置
for chunk in world.getLoadedChunks(): # 遍历所有已加载的区块
for x in range(0, 16): # 遍历每个方块
for y in range(0, 256):
for z in range(0, 16):
block = chunk.getBlock(x, y, z)
if block.getType() == Material.NETHER_QUARTZ_ORE: # 判断方块是否为下界矿石
oreLocations.append(block.getLocation()) # 添加此位置到列表中
if len(oreLocations) == 0:
return # 没有找到任何下界矿石
以上代码片段将返回一个 oreLocations
列表,其中包含下界矿的位置。请注意,如果你使用的是一个非常大的地图,可能会需要更多内存来处理大量的区块和方块。建议使用此代码在小规模地图上进行测试,以确保它适用于你的环境。