Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- on script load:
- import "com.sk89q.worldedit.regions.CuboidRegion"
- import "com.sk89q.worldedit.Vector" as {WorldEditVector}
- import "com.sk89q.worldedit.EditSession"
- import "com.boydti.fawe.FaweAPI"
- import "com.boydti.fawe.util.EditSessionBuilder"
- import "com.sk89q.worldedit.blocks.BaseBlock"
- import "com.sk89q.worldedit.patterns.BlockChance"
- import "java.util.Arrays"
- import "com.sk89q.worldedit.patterns.RandomFillPattern"
- import "java.util.stream.Collectors"
- function getRegion(pos1: location, pos2: location) :: object:
- loop 1 and 2:
- 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%})
- return new {CuboidRegion}({_vec::*})
- function getBaseBlock(block: itemtype) :: object:
- return new {BaseBlock}({_block}.getRandom().getTypeId() and {_block}.getRandom().getData().getData())
- function getBlockChance(block: itemtype, chance: number) :: object:
- return new {BlockChance}(getBaseBlock({_block}) and {_chance})
- function getWorld(world: world) :: object:
- return {FaweAPI}.getWorld("%{_world}%")
- function getEditSession(world: world) :: object:
- return new {EditSessionBuilder}(getWorld({_world})).fastmode(true).build()
- function replaceBlocks(pos1: location, pos2: location, blocks: itemtypes, block: object) :: boolean:
- set {_session} to getEditSession(world of {_pos1})
- set {_args::*} to getRegion({_pos1}, {_pos2})
- loop {_blocks::*}:
- add getBaseBlock(loop-value) to {_baseBlocks::*}
- add {Arrays}.stream([{_baseBlocks::*} as {BaseBlock}]).collect({Collectors}.toSet()) to {_args::*}
- if {_block} is a text:
- loop split {_block} at ",":
- set {_it::*} to join (split loop-value at "%%") with " " parsed as "%integer% %item%"
- if {_it::*} is set:
- add getBlockChance({_it::2}, {_it::1}) to {_c::*}
- delete {_it::*}
- else:
- return false
- add new {RandomFillPattern}({Arrays}.stream([{_c::*} as {BlockChance}]).collect({Collectors}.toList())) to {_args::*}
- else:
- add getBaseBlock({_block}) to {_args::*}
- {_session}.replaceBlocks({_args::*});
- {_session}.flushQueue();
- return true
Add Comment
Please, Sign In to add comment