本文整理汇总了Python中bravo.chunk.Chunk.set_block方法的典型用法代码示例。如果您正苦于以下问题:Python Chunk.set_block方法的具体用法?Python Chunk.set_block怎么用?Python Chunk.set_block使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类bravo.chunk.Chunk
的用法示例。
在下文中一共展示了Chunk.set_block方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_single_block_damage_packet
# 需要导入模块: from bravo.chunk import Chunk [as 别名]
# 或者: from bravo.chunk.Chunk import set_block [as 别名]
def test_single_block_damage_packet(self):
chunk = Chunk(2, 1)
chunk.populated = True
chunk.set_block((2, 4, 8), 1)
chunk.set_metadata((2, 4, 8), 2)
packet = chunk.get_damage_packet()
self.assertEqual(packet, '\x35\x00\x00\x00\x22\x04\x00\x00\x00\x18\x01\x02')
示例2: test_ascend_one_up
# 需要导入模块: from bravo.chunk import Chunk [as 别名]
# 或者: from bravo.chunk.Chunk import set_block [as 别名]
def test_ascend_one_up(self):
"""
``ascend()`` moves players upwards.
"""
self.p.location.pos = self.p.location.pos._replace(y=16)
c = Chunk(0, 0)
c.set_block((0, 0, 0), 1)
c.set_block((0, 1, 0), 1)
self.p.chunks[0, 0] = c
self.p.ascend(1)
self.assertEqual(self.p.location.pos.y, 32)
示例3: test_ascend_zero
# 需要导入模块: from bravo.chunk import Chunk [as 别名]
# 或者: from bravo.chunk.Chunk import set_block [as 别名]
def test_ascend_zero(self):
"""
``ascend()`` can take a count of zero to ensure that the client is
standing on solid ground.
"""
self.p.location.pos = self.p.location.pos._replace(y=16)
c = Chunk(0, 0)
c.set_block((0, 0, 0), 1)
self.p.chunks[0, 0] = c
self.p.ascend(0)
self.assertEqual(self.p.location.pos.y, 16)
示例4: test_ascend_zero_up
# 需要导入模块: from bravo.chunk import Chunk [as 别名]
# 或者: from bravo.chunk.Chunk import set_block [as 别名]
def test_ascend_zero_up(self):
"""
Even with a zero count, ``ascend()`` will move the player to the
correct elevation.
"""
self.p.location.pos = self.p.location.pos._replace(y=16)
c = Chunk(0, 0)
c.set_block((0, 0, 0), 1)
c.set_block((0, 1, 0), 1)
self.p.chunks[0, 0] = c
self.p.ascend(0)
self.assertEqual(self.p.location.pos.y, 32)
示例5: test_get_damage_packet_single
# 需要导入模块: from bravo.chunk import Chunk [as 别名]
# 或者: from bravo.chunk.Chunk import set_block [as 别名]
def test_get_damage_packet_single(self):
# Create a chunk.
c = Chunk(0, 0)
# Damage the block.
c.populated = True
c.set_block((0, 0, 0), 1)
# Enable warning-to-error for DeprecationWarning, then see whether
# retrieving damage causes a warning-to-error to be raised. (It
# shouldn't.)
warnings.simplefilter("error", DeprecationWarning)
c.get_damage_packet()
# ...And reset the warning filters.
warnings.resetwarnings()
示例6: TestAlphaSandGravelDig
# 需要导入模块: from bravo.chunk import Chunk [as 别名]
# 或者: from bravo.chunk.Chunk import set_block [as 别名]
class TestAlphaSandGravelDig(unittest.TestCase):
def setUp(self):
self.f = FallablesMockFactory()
self.p = retrieve_plugins(IDigHook, parameters={"factory": self.f})
if "alpha_sand_gravel" not in self.p:
raise unittest.SkipTest("Plugin not present")
self.hook = self.p["alpha_sand_gravel"]
self.c = Chunk(0, 0)
def test_trivial(self):
pass
def test_floating_sand(self):
"""
Sand placed in midair should fall down to the ground.
"""
self.c.set_block((0, 1, 0), blocks["sand"].slot)
self.hook.dig_hook(self.c, 0, 0, 0, blocks["air"].slot)
self.assertEqual(self.c.get_block((0, 1, 0)), blocks["air"].slot)
self.assertEqual(self.c.get_block((0, 0, 0)), blocks["sand"].slot)
def test_sand_on_snow(self):
"""
Sand placed on snow should replace the snow.
Test for #298.
"""
self.c.set_block((0, 1, 0), blocks["sand"].slot)
self.c.set_block((0, 0, 0), blocks["snow"].slot)
self.hook.dig_hook(self.c, 0, 2, 0, blocks["snow"].slot)
self.assertEqual(self.c.get_block((0, 1, 0)), blocks["air"].slot)
self.assertEqual(self.c.get_block((0, 0, 0)), blocks["sand"].slot)
def test_sand_on_water(self):
"""
Sand placed on water should replace the water.
Test for #317.
"""
self.c.set_block((0, 1, 0), blocks["sand"].slot)
self.c.set_block((0, 0, 0), blocks["spring"].slot)
self.hook.dig_hook(self.c, 0, 2, 0, blocks["spring"].slot)
self.assertEqual(self.c.get_block((0, 1, 0)), blocks["air"].slot)
self.assertEqual(self.c.get_block((0, 0, 0)), blocks["sand"].slot)
示例7: TestGenerators
# 需要导入模块: from bravo.chunk import Chunk [as 别名]
# 或者: from bravo.chunk.Chunk import set_block [as 别名]
class TestGenerators(unittest.TestCase):
def setUp(self):
self.chunk = Chunk(0, 0)
self.p = bravo.plugin.retrieve_plugins(bravo.ibravo.ITerrainGenerator)
def test_trivial(self):
pass
def test_boring(self):
if "boring" not in self.p:
raise unittest.SkipTest("plugin not present")
plugin = self.p["boring"]
plugin.populate(self.chunk, 0)
for x, z, y in iterchunk():
if y < CHUNK_HEIGHT // 2:
self.assertEqual(self.chunk.get_block((x, y, z)),
bravo.blocks.blocks["stone"].slot)
else:
self.assertEqual(self.chunk.get_block((x, y, z)),
bravo.blocks.blocks["air"].slot)
def test_beaches_range(self):
if "beaches" not in self.p:
raise unittest.SkipTest("plugin not present")
plugin = self.p["beaches"]
# Prepare chunk.
for i in range(5):
self.chunk.set_block((i, 61 + i, i),
bravo.blocks.blocks["dirt"].slot)
plugin.populate(self.chunk, 0)
for i in range(5):
self.assertEqual(self.chunk.get_block((i, 61 + i, i)),
bravo.blocks.blocks["sand"].slot,
"%d, %d, %d is wrong" % (i, 61 + i, i))
def test_beaches_immersed(self):
"""
Test that beaches still generate properly around pre-existing water
tables.
This test is meant to ensure that the order of beaches and watertable
does not matter.
"""
if "beaches" not in self.p:
raise unittest.SkipTest("plugin not present")
plugin = self.p["beaches"]
# Prepare chunk.
for x, z, y in product(xrange(16), xrange(16), xrange(60, 64)):
self.chunk.set_block((x, y, z),
bravo.blocks.blocks["spring"].slot)
for i in range(5):
self.chunk.set_block((i, 61 + i, i),
bravo.blocks.blocks["dirt"].slot)
plugin.populate(self.chunk, 0)
for i in range(5):
self.assertEqual(self.chunk.get_block((i, 61 + i, i)),
bravo.blocks.blocks["sand"].slot,
"%d, %d, %d is wrong" % (i, 61 + i, i))
示例8: TestChunkBlocks
# 需要导入模块: from bravo.chunk import Chunk [as 别名]
# 或者: from bravo.chunk.Chunk import set_block [as 别名]
class TestChunkBlocks(unittest.TestCase):
def setUp(self):
self.c = Chunk(0, 0)
def test_trivial(self):
pass
def test_set_block(self):
self.assertEqual(self.c.blocks[0], 0)
self.c.set_block((0, 0, 0), 1)
self.assertEqual(self.c.blocks[0], 1)
def test_set_block_xyz_xzy(self):
"""
Test that set_block swizzles correctly.
"""
self.c.set_block((1, 0, 0), 1)
self.c.set_block((0, 1, 0), 2)
self.c.set_block((0, 0, 1), 3)
self.assertEqual(self.c.blocks[2048], 1)
self.assertEqual(self.c.blocks[1], 2)
self.assertEqual(self.c.blocks[128], 3)
def test_destroy(self):
"""
Test block destruction.
"""
self.c.set_block((0, 0, 0), 1)
self.c.set_metadata((0, 0, 0), 1)
self.c.destroy((0, 0, 0))
self.assertEqual(self.c.blocks[0], 0)
self.assertEqual(self.c.metadata[0], 0)
def test_sed(self):
"""
``sed()`` should work.
"""
self.c.set_block((1, 1, 1), 1)
self.c.set_block((2, 2, 2), 2)
self.c.set_block((3, 3, 3), 3)
self.c.sed(1, 3)
self.assertEqual(self.c.get_block((1, 1, 1)), 3)
self.assertEqual(self.c.get_block((2, 2, 2)), 2)
self.assertEqual(self.c.get_block((3, 3, 3)), 3)
def test_single_block_damage_packet(self):
chunk = Chunk(2, 1)
chunk.populated = True
chunk.set_block((2, 4, 8), 1)
chunk.set_metadata((2, 4, 8), 2)
packet = chunk.get_damage_packet()
self.assertEqual(packet, '\x35\x00\x00\x00\x22\x04\x00\x00\x00\x18\x01\x02')
def test_set_block_correct_heightmap(self):
"""
Test heightmap update for a single column.
"""
self.c.populated = True
self.assertEqual(self.c.heightmap[0], 0)
self.c.set_block((0, 20, 0), 1)
self.assertEqual(self.c.heightmap[0], 20)
self.c.set_block((0, 10, 0), 1)
self.assertEqual(self.c.heightmap[0], 20)
self.c.set_block((0, 30, 0), 1)
self.assertEqual(self.c.heightmap[0], 30)
self.c.destroy((0, 10, 0))
self.assertEqual(self.c.heightmap[0], 30)
self.c.destroy((0, 30, 0))
self.assertEqual(self.c.heightmap[0], 20)
示例9: TestLightmaps
# 需要导入模块: from bravo.chunk import Chunk [as 别名]
# 或者: from bravo.chunk.Chunk import set_block [as 别名]
class TestLightmaps(unittest.TestCase):
def setUp(self):
self.c = Chunk(0, 0)
def test_trivial(self):
pass
def test_boring_skylight_values(self):
# Fill it as if we were the boring generator.
for x, z in product(xrange(16), repeat=2):
self.c.set_block((x, 0, z), 1)
self.c.regenerate()
# Make sure that all of the blocks at the bottom of the ambient
# lightmap are set to 15 (fully illuminated).
# Note that skylight of a solid block is 0, the important value
# is the skylight of the transluscent (usually air) block above it.
for i in xrange(1, 32768, 128):
self.assertEqual(self.c.skylight[i], 0xf)
def test_skylight_spread(self):
# Fill it as if we were the boring generator.
for x, z in product(xrange(16), repeat=2):
self.c.set_block((x, 0, z), 1)
# Put a false floor up to block the light.
for x, z in product(xrange(1, 15), repeat=2):
self.c.set_block((x, 2, z), 1)
self.c.regenerate()
# Test that a gradient emerges.
for x, z in product(xrange(16), repeat=2):
flipx = x if x > 7 else 15 - x
flipz = z if z > 7 else 15 - z
target = max(flipx, flipz)
self.assertEqual(self.c.skylight[(x * 16 + z) * 128 + 1], target,
"%d, %d" % (x, z))
def test_skylight_arch(self):
"""
Indirect illumination should work.
"""
# Floor.
for x, z in product(xrange(16), repeat=2):
self.c.set_block((x, 0, z), 1)
# Arch of bedrock, with an empty spot in the middle, which will be our
# indirect spot.
for x, y, z in product(xrange(2), xrange(1, 3), xrange(3)):
self.c.set_block((x, y, z), 1)
self.c.set_block((1, 1, 1), 0)
# Illuminate and make sure that our indirect spot has just a little
# bit of illumination.
self.c.regenerate()
self.assertEqual(self.c.skylight[(1 * 16 + 1) * 128 + 1], 14)
def test_skylight_arch_leaves(self):
"""
Indirect illumination with dimming should work.
"""
# Floor.
for x, z in product(xrange(16), repeat=2):
self.c.set_block((x, 0, z), 1)
# Arch of bedrock, with an empty spot in the middle, which will be our
# indirect spot.
for x, y, z in product(xrange(2), xrange(1, 3), xrange(3)):
self.c.set_block((x, y, z), 1)
self.c.set_block((1, 1, 1), 0)
# Leaves in front of the spot should cause a dimming of 1.
self.c.set_block((2, 1, 1), 18)
# Illuminate and make sure that our indirect spot has just a little
# bit of illumination.
self.c.regenerate()
self.assertEqual(self.c.skylight[(1 * 16 + 1) * 128 + 1], 13)
def test_skylight_arch_leaves_occluded(self):
"""
Indirect illumination with dimming through occluded blocks only should
work.
"""
# Floor.
for x, z in product(xrange(16), repeat=2):
self.c.set_block((x, 0, z), 1)
# Arch of bedrock, with an empty spot in the middle, which will be our
# indirect spot.
for x, y, z in product(xrange(3), xrange(1, 3), xrange(3)):
self.c.set_block((x, y, z), 1)
self.c.set_block((1, 1, 1), 0)
# Leaves in front of the spot should cause a dimming of 1, but since
#.........这里部分代码省略.........
示例10: TestWinter
# 需要导入模块: from bravo.chunk import Chunk [as 别名]
# 或者: from bravo.chunk.Chunk import set_block [as 别名]
class TestWinter(unittest.TestCase):
def setUp(self):
self.hook = Winter()
self.c = Chunk(0, 0)
def test_trivial(self):
pass
def test_spring_to_ice(self):
self.c.set_block((0, 0, 0), blocks["spring"].slot)
self.hook.transform(self.c)
self.assertEqual(self.c.get_block((0, 0, 0)), blocks["ice"].slot)
def test_snow_on_stone(self):
self.c.set_block((0, 0, 0), blocks["stone"].slot)
self.hook.transform(self.c)
self.assertEqual(self.c.get_block((0, 1, 0)), blocks["snow"].slot)
def test_no_snow_on_snow(self):
"""
Test whether snow is spawned on top of other snow.
"""
self.c.set_block((0, 0, 0), blocks["snow"].slot)
self.hook.transform(self.c)
self.assertNotEqual(self.c.get_block((0, 1, 0)), blocks["snow"].slot)
def test_no_floating_snow(self):
"""
Test whether snow is spawned in the correct y-level over populated
chunks.
"""
self.c.set_block((0, 0, 0), blocks["grass"].slot)
self.c.populated = True
self.c.dirty = False
self.c.clear_damage()
self.hook.transform(self.c)
self.assertEqual(self.c.get_block((0, 1, 0)), blocks["snow"].slot)
self.assertNotEqual(self.c.get_block((0, 2, 0)), blocks["snow"].slot)
def test_bad_heightmap_floating_snow(self):
"""
Test whether snow is spawned in the correct y-level over populated
chunks, if the heightmap is incorrect.
"""
self.c.set_block((0, 0, 0), blocks["grass"].slot)
self.c.populated = True
self.c.dirty = False
self.c.clear_damage()
self.c.heightmap[0 * 16 + 0] = 2
self.hook.transform(self.c)
self.assertEqual(self.c.get_block((0, 1, 0)), blocks["snow"].slot)
self.assertNotEqual(self.c.get_block((0, 2, 0)), blocks["snow"].slot)
def test_top_of_world_snow(self):
"""
Blocks at the top of the world should not cause exceptions when snow
is placed on them.
"""
self.c.set_block((0, 127, 0), blocks["stone"].slot)
self.hook.transform(self.c)
示例11: TestChunkBlocks
# 需要导入模块: from bravo.chunk import Chunk [as 别名]
# 或者: from bravo.chunk.Chunk import set_block [as 别名]
class TestChunkBlocks(unittest.TestCase):
def setUp(self):
self.c = Chunk(0, 0)
def test_trivial(self):
pass
def test_destroy(self):
"""
Test block destruction.
"""
self.c.set_block((0, 0, 0), 1)
self.c.set_metadata((0, 0, 0), 1)
self.c.destroy((0, 0, 0))
self.assertEqual(self.c.get_block((0, 0, 0)), 0)
self.assertEqual(self.c.get_metadata((0, 0, 0)), 0)
def test_sed(self):
"""
``sed()`` should work.
"""
self.c.set_block((1, 1, 1), 1)
self.c.set_block((2, 2, 2), 2)
self.c.set_block((3, 3, 3), 3)
self.c.sed(1, 3)
self.assertEqual(self.c.get_block((1, 1, 1)), 3)
self.assertEqual(self.c.get_block((2, 2, 2)), 2)
self.assertEqual(self.c.get_block((3, 3, 3)), 3)
def test_set_block_heightmap(self):
"""
Heightmaps work.
"""
self.c.populated = True
self.c.set_block((0, 20, 0), 1)
self.assertEqual(self.c.heightmap[0], 20)
def test_set_block_heightmap_underneath(self):
"""
A block placed underneath the highest block will not alter the
heightmap.
"""
self.c.populated = True
self.c.set_block((0, 20, 0), 1)
self.assertEqual(self.c.heightmap[0], 20)
self.c.set_block((0, 10, 0), 1)
self.assertEqual(self.c.heightmap[0], 20)
def test_set_block_heightmap_destroyed(self):
"""
Upon destruction of the highest block, the heightmap will point at the
next-highest block.
"""
self.c.populated = True
self.c.set_block((0, 30, 0), 1)
self.c.set_block((0, 10, 0), 1)
self.c.destroy((0, 30, 0))
self.assertEqual(self.c.heightmap[0], 10)
示例12: TestLightmaps
# 需要导入模块: from bravo.chunk import Chunk [as 别名]
# 或者: from bravo.chunk.Chunk import set_block [as 别名]
#.........这里部分代码省略.........
bottom -= 1
glow -= 1
assert_array_equal(self.c.skylight[:, :, 1], reference)
def test_skylight_arch(self):
"""
Indirect illumination should work.
"""
# Floor.
self.c.blocks[:, :, 0].fill(1)
# Arch of bedrock, with an empty spot in the middle, which will be our
# indirect spot.
self.c.blocks[0:2, 0:3, 1:3].fill(1)
self.c.blocks[1, 1, 1] = 0
# Illuminate and make sure that our indirect spot has just a little
# bit of illumination.
self.c.regenerate()
self.assertEqual(self.c.skylight[1, 1, 1], 14)
def test_skylight_arch_leaves(self):
"""
Indirect illumination with dimming should work.
"""
# Floor.
self.c.blocks[:, :, 0].fill(1)
# Arch of bedrock, with an empty spot in the middle, which will be our
# indirect spot.
self.c.blocks[0:2, 0:3, 1:3].fill(1)
self.c.blocks[1, 1, 1] = 0
# Leaves in front of the spot should cause a dimming of 1.
self.c.blocks[2, 1, 1] = 18
# Illuminate and make sure that our indirect spot has just a little
# bit of illumination.
self.c.regenerate()
self.assertEqual(self.c.skylight[1, 1, 1], 13)
def test_skylight_arch_leaves_occluded(self):
"""
Indirect illumination with dimming through occluded blocks only should
work.
"""
# Floor.
self.c.blocks[:, :, 0].fill(1)
# Arch of bedrock, with an empty spot in the middle, which will be our
# indirect spot.
self.c.blocks[0:3, 0:3, 1:3].fill(1)
self.c.blocks[1, 1, 1] = 0
# Leaves in front of the spot should cause a dimming of 1, but since
# the leaves themselves are occluded, the total dimming should be 2.
self.c.blocks[2, 1, 1] = 18
# Illuminate and make sure that our indirect spot has just a little
# bit of illumination.
self.c.regenerate()
self.assertEqual(self.c.skylight[1, 1, 1], 12)
def test_incremental_solid(self):
"""
Regeneration isn't necessary to correctly light solid blocks.
"""
# Initialize tables and enable set_block().
self.c.regenerate()
self.c.populated = True
# Any solid block with no dimming works. I choose dirt.
self.c.set_block((0, 0, 0), blocks["dirt"].slot)
self.assertEqual(self.c.skylight[0, 0, 0], 0)
def test_incremental_air(self):
"""
Regeneration isn't necessary to correctly light dug blocks, which
leave behind air.
"""
# Any solid block with no dimming works. I choose dirt.
self.c.blocks[0, 0, 0] = blocks["dirt"].slot
# Initialize tables and enable set_block().
self.c.regenerate()
self.c.populated = True
self.c.set_block((0, 0, 0), blocks["air"].slot)
self.assertEqual(self.c.skylight[0, 0, 0], 15)