Paste #45600: really updated, i promise

Date: 2017/11/18 14:14:10 UTC-08:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


gpa_com_skularr_mythicmobs_builds:
  type: world
  debug: false
  structures:
    overworld_stonebrick:
      layer_size: '5x5'
      layers:
        1: 5:stone_brick;3:stone_brick+grass*3+stone_brick;5:stone_brick
        2: 1:stone_brick;1:cobblestone_stairs,1;1:air;1:cobblestone_stairs;1:stone_brick;1:cobblestone_stairs,3;3:air;1:cobblestone_stairs,3;1:air*2+allium+air*2;1:cobblestone_stairs,2;3:air;1:cobblestone_stairs,2;1:stone_brick;1:cobblestone_stairs,1;1:air;1:cobblestone_stairs;1:stone_brick
        3: 1:stone_brick;3:air;1:stone_brick;15:air;1:stone_brick;3:air;1:stone_brick
        4: 1:stone_brick;1:cobblestone_stairs,5;1:air;1:cobblestone_stairs,4;1:stone_brick;1:cobblestone_stairs,7;3:air;1:cobblestone_stairs,7;5:air;1:cobblestone_stairs,6;3:air;1:cobblestone_stairs,6;1:stone_brick;1:cobblestone_stairs,5;1:air;1:cobblestone_stairs,4;1:stone_brick
        5: 5:stone_brick;3:stone_brick+air*3+stone_brick;5:stone_brick
  interpreter:
  - define tile_choose '<s@gpa_com_skularr_mythicmobs_builds.yaml_key[structures.<def[structure]||overworld_stonebrick>.layers.<def[layer]||1>]>'
  - define tile_list 'li@'
  - foreach <def[tile_choose].split[;]> {
    - define tile_data '<def[value]>'
    - repeat <def[value].before[:]> {
      - foreach <def[tile_data].after[:].split[+]> {
        - define tile_internal '<def[value]>'
        - if <def[tile_internal].contains_text[*]> {
          - repeat <def[tile_internal].after[*]> {
            - define tile_list '<def[tile_list].include[<def[tile_internal].before[*]>]>'
          }
          - foreach next
        }
        - define tile_list '<def[tile_list].include[<def[value]>]>'
      }
    }
  }
  - define tile_list '<def[tile_list].parse[as_material]>'
  block_reader:
  - define newx '-1'
  - define newy '<def[layer].sub[1]>'
  - define newz '0'
  - define max_x '<s@gpa_com_skularr_mythicmobs_builds.yaml_key[structures.<def[structure]||overworld_stonebrick>.layer_size].before[x]>'
  - define max_z '<s@gpa_com_skularr_mythicmobs_builds.yaml_key[structures.<def[structure]||overworld_stonebrick>.layer_size].after[x]>'
  - define compare_list 'li@'
  - repeat <def[max_x].mul[<def[max_z]>]> {
    - define newx '<def[newx].add[1]>'
    - if <def[newx]> == <def[max_x]> && <def[newz]> != <def[max_z]> {
      - define newx '0'
      - define newz '<def[newz].add[1]>'
    }
    else if <def[newx]> == <def[max_x]> && <def[newz]> == <def[max_z]> {
      - define newx '0'
      - define newz '0'
      - define newy '<def[newy].add[1]>'
    }
    - define compare_list '<def[compare_list].include[l@<def[loc].x.add[<def[newx]>]>,<def[loc].y.add[<def[newy]>]>,<def[loc].z.add[<def[newz]>]>,<def[loc].world.name>]>'
  }
  events:
    on server start:
    - inject locally 'events.on script reload' instantly
    on script reload:
    - foreach <s@gpa_com_skularr_mythicmobs_builds.list_keys[structures]> {
      - define structure '<def[value]>'
      - repeat <s@gpa_com_skularr_mythicmobs_builds.list_keys[structures.<def[value]>.layers].size> {
        - define layer <def[value]>
        - inject locally interpreter
        - flag server 'gpa.com.skularr.mythicmobs.structures.<def[structure]>.<def[layer]>:<def[tile_list].parse[as_material].separated_by[$]>'
      }
    }
    on player places block:
    - define time '<server.current_time_millis>'
    - choose <context.material>:
      - case m@allium:
        - define structure 'overworld_stonebrick'
        - define loc '<context.location.sub[2,1,2]>'
        - repeat 5 {
          - define layer '<def[value]>'
          - define placed_tiles 'cu@<def[loc].add[0,<def[value].sub[1]>,0]>|<def[loc].add[4,<def[value].sub[1]>,4]>'
          - define placed_tiles '<def[placed_tiles].as_cuboid>'
          - inject locally 'block_reader' instantly
          - if <def[compare_list].parse[material]> != <server.flag[gpa.com.skularr.mythicmobs.structures.<def[structure]>.<def[layer]>].split[$]> {
            - queue clear
          }
        }
        - playeffect <context.location.center.sub[0,1,0]> 'effect:FIREWORKS_SPARK' 'data:0.2' 'quantity:30' 'offset:0.1,0,0.1'
        - narrate '<&c>This does nothing!'
        - narrate 'It took <server.current_time_millis.sub[<def[time]>]>ms to run this'