Auto block miner

  • Welcome to skUnity!

    Welcome to skUnity! This is a forum where members of the Skript community can communicate and interact. Skript Resource Creators can post their Resources for all to see and use.

    If you haven't done so already, feel free to join our official Discord server to expand your level of interaction with the community!

    Now, what are you waiting for? Join the community now!

  • LOOKING FOR A VERSION OF SKRIPT?

    You can always check out skUnity Downloads for downloads and any other information about Skript!

LeeifMR

Member
Oct 2, 2024
27
1
3
I am trying to make a skript that you can place a player head (block miner) and it breaks blocks around it, has a menu, ect. But I keep getting errors, is there something I am doing wrong? (I am too lazy to write all the errors, I can share if you need though)
Code:
variables:
    {oakminer::count::%player%} = 0
    {oakminer::location::*} = {}  # Stores all miner locations
    {oakminer::owner::%location%} = {}  # Stores the owner of each miner by specific location

on place of player head:
    if name of player's tool is "&8B5A2B&lO&926436&la&986E41&lk &9F774B&lM&A68156&li&AD8B61&ln&B3956C&le&BA9F77&lr &C1A982&l[&C8B28C&lT&CEBC97&l1&D5C6A2&l]":
        set {_loc} to location of event-block
        add 1 to y-coordinate of {_loc}
        set event-block to air
        set block at {_loc} to player's tool
        add {_loc} to {oakminer::location::*}
        set {oakminer::owner::%{_loc}%} to player
        add 1 to {oakminer::count::%player%}
        send "&aOak Miner [T1] has been placed." to player

every 0.5 seconds:
    loop {oakminer::location::*}:
        set {_miner} to loop-value
        set {_block} to a random block within radius 5 around {_miner} where block type is oak log
        if {_block} is not air:
            set {_drop} to {_block}
            set {_block} to air
            drop 1 of {_drop} at location of {_block}

on right click on player head:
    set {_loc} to location of target block
    if {oakminer::owner::%{_loc}%} is not player:
        send "&cThis is not your block miner." to player
    else:
        open chest with 1 row named "&8Oak Miner Menu" to player
        format slot 0 of player's current inventory with barrier named "&cDelete Miner" to close then run:
            delete {oakminer::owner::%{_loc}%}
            remove {_loc} from {oakminer::location::*}
            remove 1 from {oakminer::count::%player%}
            send "&aMiner deleted successfully." to player
        format slot 1 of player's current inventory with player head named "&eRemove Miner" to close then run:
            if player's inventory is full:
                send "&cYour inventory is full!" to player
            else:
                give player 1 of player's tool
                delete {oakminer::owner::%{_loc}%}
                remove {_loc} from {oakminer::location::*}
                remove 1 from {oakminer::count::%player%}
                send "&aMiner removed and returned to inventory." to player
        format slot 2 of player's current inventory with compass named "&6Move Miner" to close then run:
            send "&eRight-click to set new location or left-click to cancel." to player
            set {oakminer::move::%player%} to {_loc}

on right click:
    if {oakminer::move::%player%} is set:
        set {_newloc} to location of event-block
        add 1 to y-coordinate of {_newloc}
        set block at {oakminer::move::%player%} to air
        set block at {_newloc} to player's tool
        delete {oakminer::owner::%{oakminer::move::%player%}}
        remove {oakminer::move::%player%} from {oakminer::location::*}
        add {_newloc} to {oakminer::location::*}
        set {oakminer::owner::%{_newloc}%} to player
        send "&aMiner moved successfully to new location." to player
        delete {oakminer::move::%player%}

on left click:
    if {oakminer::move::%player%} is set:
        send "&cMove aborted." to player
        delete {oakminer::move::%player%}
 
i got it to not have any errors, i did not test it tho
Code:
on load:
    if {automineisnowloadedya} is not true:
        set {oakminer::count::%player%} to 0

on place of player head:
    if name of player's tool is "&8B5A2B&lO&926436&la&986E41&lk &9F774B&lM&A68156&li&AD8B61&ln&B3956C&le&BA9F77&lr &C1A982&l[&C8B28C&lT&CEBC97&l1&D5C6A2&l]":
        set {_loc} to location of event-block
        add 1 to y-coordinate of {_loc}
        set event-block to air
        set block at {_loc} to player's tool
        add {_loc} to {oakminer::location::*}
        set {oakminer::owner::%{_loc}%} to player
        add 1 to {oakminer::count::%player%}
        send "&aOak Miner [T1] has been placed." to player

every 0.5 seconds:
    loop {oakminer::location::*}:
        set {_miner} to loop-value
        set {_radiusblocks::*} to blocks within radius 5 around {_miner} where [block input is oak log]
        set {_block} to random element of {_radiusblocks::*}
        if {_block} is not air:
            set {_drop} to {_block}
            set {_block} to air
            drop 1 of {_drop} at location of {_block}

on right click on player head:
    set {_loc} to location of target block
    if {oakminer::owner::%{_loc}%} is not player:
        send "&cThis is not your block miner." to player
    else:
        set {_gui} to chest inventory with 1 row named "&8Oak Miner Menu"
        set slot 0 of {_gui} to barrier named "&cDelete Miner"
        set slot 1 of {_gui} to player head named "&eRemove Miner"
        set slot 2 of {_gui} to compass named "&6Move Miner"

on inventory click: # Oak Miner Menu Event Trigger
    if name of event-inventory is "&8Oak Miner Menu": # Making Sure Its The Correct Inventory
        set {_loc} to location of targeted block
        close player's inventory
        if index of event-slot is 0: # Check If Its The Correct Slot
            delete {oakminer::owner::%{_loc}%}
            remove {_loc} from {oakminer::location::*}
            remove 1 from {oakminer::count::%player%}
            send "&aMiner deleted successfully." to player
        if index of event-slot is 1:
            if player has enough space for 1 of player's tool:
                give player 1 of player's tool
                delete {oakminer::owner::%{_loc}%}
                remove {_loc} from {oakminer::location::*}
                remove 1 from {oakminer::count::%player%}
                send "&aMiner removed and returned to inventory." to player
            else:
                send "&cYour inventory is full!" to player
        if index of event-slot is 2:
            send "&eRight-click to set new location or left-click to cancel." to player
            set {oakminer::move::%player%} to {_loc}

on right click:
    if {oakminer::move::%player%} is set:
        set {_newloc} to location of event-block
        add 1 to y-coordinate of {_newloc}
        set block at {oakminer::move::%player%} to air
        set block at {_newloc} to player's tool
        delete {oakminer::owner::%{oakminer::move::%player%}%}
        remove {oakminer::move::%player%} from {oakminer::location::*}
        add {_newloc} to {oakminer::location::*}
        set {oakminer::owner::%{_newloc}%} to player
        send "&aMiner moved successfully to new location." to player
        delete {oakminer::move::%player%}

on left click:
    if {oakminer::move::%player%} is set:
        send "&cMove aborted." to player
        delete {oakminer::move::%player%}