Guest User

Untitled

a guest
Nov 23rd, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.12 KB | None | 0 0
  1. on script load:
  2. import "com.sk89q.worldedit.regions.CuboidRegion"
  3. import "com.sk89q.worldedit.Vector" as {WorldEditVector}
  4. import "com.sk89q.worldedit.EditSession"
  5. import "com.boydti.fawe.FaweAPI"
  6. import "com.boydti.fawe.util.EditSessionBuilder"
  7. import "com.sk89q.worldedit.blocks.BaseBlock"
  8. import "com.sk89q.worldedit.patterns.BlockChance"
  9. import "java.util.Arrays"
  10. import "com.sk89q.worldedit.patterns.RandomFillPattern"
  11. import "java.util.stream.Collectors"
  12.  
  13. function getRegion(pos1: location, pos2: location) :: object:
  14. loop 1 and 2:
  15. set {_vec::%loop-num%} to new {WorldEditVector}(x-loc of {_pos%loop-num%}, y-loc of {_pos%loop-num%} and z-loc of {_pos%loop-num%})
  16. return new {CuboidRegion}({_vec::*})
  17.  
  18. function getBaseBlock(block: itemtype) :: object:
  19. return new {BaseBlock}({_block}.getRandom().getTypeId() and {_block}.getRandom().getData().getData())
  20.  
  21. function getBlockChance(block: itemtype, chance: number) :: object:
  22. return new {BlockChance}(getBaseBlock({_block}) and {_chance})
  23.  
  24. function getWorld(world: world) :: object:
  25. return {FaweAPI}.getWorld("%{_world}%")
  26.  
  27. function getEditSession(world: world) :: object:
  28. return new {EditSessionBuilder}(getWorld({_world})).fastmode(true).build()
  29.  
  30. function replaceBlocks(pos1: location, pos2: location, blocks: itemtypes, block: object) :: boolean:
  31. set {_session} to getEditSession(world of {_pos1})
  32. set {_args::*} to getRegion({_pos1}, {_pos2})
  33. loop {_blocks::*}:
  34. add getBaseBlock(loop-value) to {_baseBlocks::*}
  35. add {Arrays}.stream([{_baseBlocks::*} as {BaseBlock}]).collect({Collectors}.toSet()) to {_args::*}
  36. if {_block} is a text:
  37. loop split {_block} at ",":
  38. set {_it::*} to join (split loop-value at "%%") with " " parsed as "%integer% %item%"
  39. if {_it::*} is set:
  40. add getBlockChance({_it::2}, {_it::1}) to {_c::*}
  41. delete {_it::*}
  42. else:
  43. return false
  44. add new {RandomFillPattern}({Arrays}.stream([{_c::*} as {BlockChance}]).collect({Collectors}.toList())) to {_args::*}
  45. else:
  46. add getBaseBlock({_block}) to {_args::*}
  47. {_session}.replaceBlocks({_args::*});
  48. {_session}.flushQueue();
  49. return true
Add Comment
Please, Sign In to add comment