Paste #72568: Untitled Paste

Date: 2020/07/19 23:08:30 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


#======================================================#
# Script by Chano
# Zen Gens
# The Ultimate Solution for Item Generators
# July 19, 2020
#======================================================#

# Give Command
give_iron_gen:
    type: command
    name: irongen
    usage: /irongen [player] [amount]
    description: gives the player an iron generator.
    permission: zenith.admin
    script:
    - if <context.args.size> < 2:
        - narrate "<red>/irongen [player] [amount]"
        - stop
    - define target <server.match_player[<context.args.get[1]>]||null>
    - if <[target]> == null:
        - narrate "<red>Unknown player '<yellow><context.args.get[1]><red>'."
        - stop
    - define amount <context.args.get[2]>
    - if !<[amount].is_decimal>:
        - narrate "<red>Invalid amount input (not a number)."
        - stop
    - if <[amount]> <= 0:
        - narrate "<red>Amount must be more than zero."
        - stop
    - give iron_gen player:<[target]> quantity:<[amount]>
# Generator Item
iron_gen:
    type: item
    material: player_head
    display name: <&b><&l>Iron Generator
    lore:
    - <&a>Place down to begin generating Iron
    mechanisms:
        skull_skin: 332316cf-8bbc-4e80-8014-a2321a75eb1f|eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjc4NGI3MTVjMGQyYjE1MGI1NTZmMTZhMjQ2NDBkYWZmMjk3YTRlYzFiZmQ4Nzc1MTk5MDY2MmFjMzZlYjIifX19

# When a Player places down the Generator

iron_gen_place:
    type: world
    events:
        after player places iron_gen:
        - narrate "<&a><&l>You have Placed an Iron Generator!"
        - flag server iron_gens:->:<context.location>
        - spawn "armor_stand[visible=false;custom_name_visible=true;marker=true;gravity=false;custom_name=<&b>Iron Generator]" <context.location.center.above[1]> save:irongenholo1
        - spawn "armor_stand[visible=false;custom_name_visible=true;marker=true;gravity=false;custom_name=<&b>Time: <&e><server.flag[iron_gen_countdown]>]" <context.location.center.above[0.7]> save:irongenholo2
        - flag server iron_gens_holos.<context.location>:|:<entry[irongenholo1].spawned_entity>|<entry[irongenholo2].spawned_entity>

# When a Player Breaks their Generator

iron_gen_break:
    type: world
    events:
        after player breaks player_head:
        - if <server.flag[iron_gens].contains[<context.location>]>:
          - narrate "<&a><&l>You have Broken an Iron Generator!"
          - flag server iron_gens:<-:<context.location>
          - remove <server.flag[iron_gens_holos.<context.location>]>
          - flag server iron_gens_holos.<context.location>:!

# Every x Seconds the Gen Does....

iron_gen_interval:
    type: world
    events:
        on system time secondly every:60:
        - foreach <server.flag[iron_gens]> as:irongenlocation:
          - if <[irongenlocation].chunk.is_loaded>:
            - drop iron_ingot <[irongenlocation]> quantity:1
            - rename "<&b>Time: <&e><server.flag[iron_gen_countdown]>" iron_gens_holos.<[irongenlocation]>
        on system time secondly:
        - if <server.flag[iron_gen_countdown]> <= 0:
          - flag server iron_gen_countdown:60
        - flag server iron_gen_countdown:--