Advertisement
acidnine

setbiome.py

Feb 25th, 2013
383
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.48 KB | None | 0 0
  1. # SethBling's SetBiome Filter
  2. # Directions: Just select a region and use this filter, it will apply the
  3. # biome to all columns within the selected region. It can be used on regions
  4. # of any size, they need not correspond to chunks.
  5. #
  6. # If you modify and redistribute this code, please credit SethBling
  7.  
  8. from pymclevel import MCSchematic
  9. from pymclevel import TAG_Compound
  10. from pymclevel import TAG_Short
  11. from pymclevel import TAG_Byte
  12. from pymclevel import TAG_Byte_Array
  13. from pymclevel import TAG_String
  14. from numpy import zeros
  15.  
  16. inputs = (
  17.     ("Biome", ("Desert",
  18.                "Mushroom Island",
  19.                "Ocean",
  20.                "Plains",
  21.                "Mountains",
  22.                "Forest",
  23.                "Taiga",
  24.                "Swamp",
  25.                "River",
  26.                "Nether",
  27.                "Sky",
  28.                "Frozen Ocean",
  29.                "Frozen River",
  30.                "Ice Plains",
  31.                "Ice Mountains",
  32.                "Mushroom Shore",
  33.                "Beach",
  34.                "Desert Hills",
  35.                "Forest Hills",
  36.                "Taiga Hills",
  37.                "Mountains Edge",
  38.                "Jungle",
  39.                "Jungle Hills",
  40.                )),
  41. )
  42.  
  43. biomes = {
  44.     "Ocean":0,
  45.     "Plains":1,
  46.     "Desert":2,
  47.     "Mountains":3,
  48.     "Forest":4,
  49.     "Taiga":5,
  50.     "Swamp":6,
  51.     "River":7,
  52.     "Nether":8,
  53.     "Sky":9,
  54.     "Frozen Ocean":10,
  55.     "Frozen River":11,
  56.     "Ice Plains":12,
  57.     "Ice Mountains":13,
  58.     "Mushroom Island":14,
  59.     "Mushroom Shore":15,
  60.     "Beach":16,
  61.     "Desert Hills":17,
  62.     "Forest Hills":18,
  63.     "Taiga Hills":19,
  64.     "Mountains Edge":20,
  65.     "Jungle":21,
  66.     "Jungle Hills":22,
  67.     }
  68.  
  69. def perform(level, box, options):
  70.     biome = biomes[options["Biome"]]
  71.  
  72.     minx = int(box.minx/16)*16
  73.     minz = int(box.minz/16)*16
  74.  
  75.     for x in xrange(minx, box.maxx, 16):
  76.         for z in xrange(minz, box.maxz, 16):
  77.             chunk = level.getChunk(x / 16, z / 16)
  78.             #chunk.decompress()
  79.             chunk.dirty = True
  80.             array = chunk.root_tag["Level"]["Biomes"].value
  81.  
  82.             chunkx = int(x/16)*16
  83.             chunkz = int(z/16)*16
  84.  
  85.             for bx in xrange(max(box.minx, chunkx), min(box.maxx, chunkx+16)):
  86.                 for bz in xrange(max(box.minz, chunkz), min(box.maxz, chunkz+16)):
  87.                     idx = 16*(bz-chunkz)+(bx-chunkx)
  88.                     array[idx] = biome
  89.  
  90.             chunk.root_tag["Level"]["Biomes"].value = array
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement