File_Handler:
type: world
events:
on server start:
- if <server.has_file[/towns/members_loaded.yml]> {
- yaml "load:/towns/members_loaded.yml" id:members_loaded
- }
+ }
else {
- yaml create id:members_loaded
}
on player login:
- if <server.has_file[/towns/player-data/<player.uuid>.yml]> {
- yaml "load:/towns/player-data/<player.uuid>.yml" id:<player.uuid>
}
else {
- yaml create id:<player.uuid>
}
on player quit:
- yaml "savefile:/towns/player-data/<player.uuid>.yml" id:<player.uuid>
- yaml unload id:<player.uuid>
on server shutdown:
- foreach <server.list_online_players> {
- yaml "savefile:/towns/player-data/<def[value].uuid>.yml" id:<def[value].uuid>
}
- - yaml "savefile:/towns/members_loaded.yaml id:members_loaded
+ - yaml "savefile:/towns/members_loaded.yml" id:members_loaded
+ on system time minutely:
+ - repeat 30 {
+ - wait 2s
+ - yaml "savefile:/towns/members_loaded.yml" id:members_loaded
+ - foreach <server.list_online_players> {
+ - yaml "savefile:/towns/player-data/<def[value].uuid>.yml" id:<def[value].uuid>
+ }
+ }
+
+Town_Command_Handler:
+ type: command
+ name: town
+ aliases:
+ - t
+ - towny
+ description: Main settle command.
+ usage: /town
+ config:
+ cost: 100
+ permission: town.create
+ script:
+ - define args li@create|delete|claim|unclaim|deposit|withdraw|invite|kick|join|leave|info
+ - if <def[args].contains[<context.args.get[1]>]> {
+ - inject locally path:<context.args.get[1]>
+ }
+ else {
+ - inject locally path:help
+ }
+ help:
+ - narrate "<&6>------------- <&e><&l>dTowns Help <&6>-------------"
+ - narrate ""
+ - narrate "<&6>/town help » <&e>Display this page."
+ - narrate "<&6>/town create » <&e>Create a town."
+ - narrate "<&6>/town delete » <&e>Delete a town."
+ - narrate "<&6>/town join » <&e>Join a town."
+ - narrate "<&6>/town leave » <&e>Leave a town."
+ - narrate "<&6>/town claim » <&e>Claim a chunk."
+ - narrate "<&6>/town unclaim » <&e>Unclaim a chunk."
+ - narrate "<&6>/town deposit » <&e>Deposit in the town bank."
+ - narrate "<&6>/town withdraw » <&e>Withdraw from the town bank."
+ - narrate "<&6>/town info » <&e>Preview a town info."
+ - narrate ""
+ - narrate "<&6>----------------------------------------"
+ create:
+ - if !<player.has_permission[<script.yaml_key[permission]>]> {
+ - narrate "<&6>You don't have permission!"
+ - queue clear
+ }
+ - if <player.flag[coins]> < <script.yaml_key[cost]> {
+ - narrate "<&6>You don't have enough money, you need <&e><script.yaml_key[cost].sub[<player.flag[coins]>]><&6>."
+ - queue clear
+ }
+ - if <yaml[members_loaded].read[players-in-town].contains[<player.uuid>]> {
+ - narrate "<&6>You are already in a town!
+ - queue clear
+ }
+ - if <context.args.get[2]> == null {
+ - narrate "<&6>Please specify a town name."
+ - queue clear
+ }
+ //Check for claimed chunks
+ - flag player coins:-:<script.yaml_key[cost]>
+ - define id <util.random.uuid>
+ - yaml create id:<def[id]>
+ - yaml id:<def[id]> set mayor:<player.uuid>
+ - yaml id:<def[id]> set members:->:<player.uuid>
+ - yaml id:<def[id]> set balance:0
+ - yaml id:<def[id]> set chunks:->:<player.location.chunk>
+ - yaml id:<def[id]> set name:<context.args.get[2]>
+ - yaml id:<player.uuid> set town:<def[id]>
+ - yaml "savefile:/towns/<def[id]>.yml" id:<def[id]>
+ - announce "<&e><player.name> <&6>created a town (<&6><&e><context.args.get[2]><&6>)."
+ delete:
+ - if <yaml[<player.uuid
+