#---------------------------------------------+
-#Created: 05.01.17 |
-#Last change: 07.01.17 |
-#dGraveyards by BloodEko |
-# |
+#Created: 05.01.17 |
+#Last rewrite: 02.12.18 |
+#Last change: 02.12.18 |
+# |
+#dGraveyards by BloodEko |
+# |
# Let your players spawn on the nearest |
-# of your predefined locations |
-# |
-# spawning: no permission required |
-# defining graveyards: op / dgrave.admin |
-# |
-#---------------------------------------------+
-# Usage: /dgrave |
-#---------------------------------------------+
-# When a player dies in of the defined worlds |
+# of your predefined locations |
+# |
+# spawning: no permission required |
+# editing graveyards: op / dGrave.admin |
+# |
+#---------------------------------------------+
+# Usage: /dGrave |
+#---------------------------------------------+
+# When a player dies in of the defined worlds |
# and one/multiple graveyards exist in this |
-# world, he will respawn on the nearest one |
-# to him and get affected by the defined |
-# settings(loose items/xp, message) , else |
+# world, he will respawn on the nearest one |
+# to him and get affected by the defined |
+# settings(loose items/xp, message) , else |
# he would just respawn normally and don't |
# get affected by dGraveyards. |
#---------------------------------------------+
-#
-# Only edit settings in the config documented
-# with a [] arround.
+
+
+# This is a version script to use certain functions of the repo.
-#
-#
dGraveyards_config:
type: version
- version: 0.5
+ version: 1.1
id: 124
link: http://one.denizenscript.com/denizen/repo/entry/124
- #
- #[When a player dies in these worlds, he will get teleported.]
- #
- affected_worlds:
- - world
- - world_nether
- - world_end
- #
- #[Whether he respawns with his items on a graveyard, or drops them normally.]
- #
- loose_items_on_death: true
- #
- #[Whether he respawns with his XP on a graveyard, or drops them normally.]
- #
- loose_xp_on_death: true
- #
- #[When a player respawns he will get this message]
- #
- respawn_message: "You respawned on a safe place."
-#
-#
-#
-#
-#
+
+
+
+dGraveyards_eventHandler:
+ type: world
+
+ #Teleport the player, when he dies in these worlds.
+ worlds:
+ - w@Spielplatz
+ - w@world
+ - w@world_nether
+ - w@world_end
+
+ # KEEP_NOTHING = Loose XP and Items
+ # KEEP_INV = Loose XP
+ # KEEP_LEVEL = LOOSE ITEMS
+ # KEEP_ALL = LOOSE NOTHING
+ deathType: KEEP_ALL
+
+ #Message showed to player after respawn.
+ message: "You respawned on a safe place."
+
+
+
############################
#BELOW INTERNAL PLUGIN CODE#
-#EDITS ARE NOT RECOMMED #
+#EDITS ARE NOT RECOMMED #
############################
-dGraveyards_handler:
+
- type: world
events:
- #
- #
- #RESPAWN EVENT
- #
on player respawns:
- - define player_location "<player.flag[dgrave.location].as_location>"
- - define location_list <server.flag[dgrave.worlds.<def[player_location].world.name>].as_list||x>
- - define respawn_location "<def[location_list].sort_by_number[distance_squared[<def[player_location]>]].get[1]||x>"
- - if <def[respawn_location]> == x {
- - queue clear
- }
- - choose "<player.flag[dgrave.getback]||nothing>":
- - case "items":
- - inventory set d:<player.inventory> o:<player.flag[dgrave.inv].as_list||li@>
- - adjust <player> "equipment:<player.flag[dgrave.armor].as_list||li@i@air|i@air|i@air|i@air>"
+ - if !<player.has_flag[dGrave.respawn]> queue clear
+
+ - define loc <server.flag[dGrave.locs.<pl.world>].sort_by_number[distance_squared[<pl.location>]].get[1]||x>
+ - if <def[loc]> == x queue clear
+
+ - narrate <script.yaml_key[message]>
+ - determine <def[loc]>
+
+
+
- - case "xp":
- - experience give <player.flag[dgrave.xp]||0> player:<player>
- - case "all":
- - experience give <player.flag[dgrave.xp]||0> player:<player>
- - inventory set d:<player.inventory> o:<player.flag[dgrave.inv].as_list||li@>
- - adjust <player> "equipment:<player.flag[dgrave.armor].as_list||li@i@air|i@air|i@air|i@air>"
- - narrate "<s@dGraveyards_config.yaml_key[respawn_message]>"
- - determine <def[respawn_location]>
- #
- #
- #DIE EVENT
- #
on player dies:
- - define player_location "<player.flag[dgrave.location].as_location>"
- - if !<s@dGraveyards_config.yaml_key[affected_worlds].contains[<player.location.world.name>]> || <server.flag[dgrave.worlds.<def[player_location].world.name>].as_list||x> == x {
- - queue clear
- }
- - define loose_items <s@dGraveyards_config.yaml_key[loose_items_on_death]||true>
- - define loose_xp <s@dGraveyards_config.yaml_key[loose_xp_on_death]||true>
- - flag player "dgrave.location:<player.location>"
- # Verliert XP und Items
- - if <def[loose_items]> && <def[loose_xp]> {
- - flag player "dgrave.getback:nothing"
- }
- # Verliert nur XP
- else if !<def[loose_items]> && <def[loose_xp]> {
- - flag player "dgrave.getback:items"
- - determine passively NO_DROPS
- }
- # Verliert nur Items
- else if <def[loose_items]> && !<def[loose_xp]> {
- - flag player "dgrave.getback:xp"
- - determine passively NO_XP
- }
- # Verliert nichts
+ - if !<script.yaml_key[worlds].contains[<pl.world>]>
+ || !<server.has_flag[dGrave.locs.<pl.world>]> queue clear
+
+ - choose <script.yaml_key[deathType]||all>:
+ - case KEEP_INV:
+ - determine passively KEEP_INV
+ - case KEEP_LEVEL:
+ - determine passively KEEP_LEVEL
+ - case KEEP_ALL:
+ - determine passively KEEP_INV
+ - determine passively KEEP_LEVEL
+ - default:
+ - define 1 1
+
+ - flag player dGrave.respawn
+
+ #on system time hourly:
+ #- ~webget "http://morphanone.space/webizen.aspx/tracker?script=124&version=<s@dGraveyards_config.yaml_key[version]||0.1>&players=<server.list_online_players.size||0>"
+
+
+
+dGrave_CommandHandler:
- else {
- - flag player "dgrave.getback:all"
- - determine passively NO_DROPS_OR_XP
- }
- - flag player "dgrave.xp:<player.xp.total>"
- - flag player "dgrave.inv:!"
- - flag player "dgrave.inv:|:<player.inventory.list_contents||li@>"
- - flag player "dgrave.armor:!"
- - flag player "dgrave.armor:|:<player.equipment>"
- on system time hourly:
- - ~webget "http://morphanone.space/webizen.aspx/tracker?script=124&version=<s@dGraveyards_config.yaml_key[version]||0.1>&players=<server.list_online_players.size||0>"
-dgrave_command_handler:
type: command
- name: dgrave
- usage: /dgrave
+ name: dGrave
+ usage: /dGrave
description: Managing graveyard ingame
- permission: dgrave.admin
+ permission: dGrave.admin
permission message: You don't have the permission for using this command.
script:
- - if <context.server> { - debug error "Commands only useable ingame." - queue clear }
- - choose "<context.args.get[1]>":
- - case "set":
- - if <context.args.size> == 1 { - inject locally dgrave_false_syntax - queue clear }
- - if <server.has_flag[dgrave.names.<context.args.get[2]>]> {
- - narrate "<&4>ERROR Graveyard with the name <&6><context.args.get[2]> <&4>already exists."
+ - if <context.server> {
+ - debug error "/dGrave is only useable ingame."
+ - queue clear
+ }
+
+ - choose <context.args.get[1]||x>:
+ - case set:
+ - if <context.args.size> < 2 inject locally syntaxError
+ - define name <c.args.get[2]||x>
+ - if <server.has_flag[dGrave.name.<def[name]>]> {
+ - narrate "<&4>ERROR Graveyard with the name <&6><def[name]> <&4>already exists."
+ - queue clear
}
- else if <server.flag[dgrave.worlds.<player.location.world.name>].contains[<player.location>]> {
- - define name "<server.flag[dgrave.locations.<player.location.replace[.].with[_]>]>"
- - narrate "<&4>ERROR on your location is already a graveyard with the name <&6><def[name]>."
+
+ - narrate "<&2>Created <&2>graveyard<&6>[<def[name]>]"
+ - define loc <pl.location>
+ - flag server dGrave.locs.<pl.world>:->:<def[loc]>
+ - flag server dGrave.name.<def[name]>:<def[loc]>
+ - flag server dGrave.loc.<def[loc].escaped>:<def[name]>
+
+
+
+ - case delete:
+ - if <context.args.size> < 2 inject locally syntaxError
+ - define name <c.args.get[2]||x>
+ - if !<server.has_flag[dGrave.name.<def[name]>]> {
+ - narrate "<&4>ERROR Graveyard with the name <&6><def[name]> <&4>doesn't exists."
+ - queue clear
}
- else {
- - narrate "<&2>Successfully <&6>created <&2>graveyard with the name <&6><context.args.get[2]>"
- - flag server dgrave.worlds.<player.location.world.name>:->:<player.location>
- - flag server dgrave.names.<context.args.get[2]>:<player.location>
- - flag server dgrave.locations.<player.location.replace[.].with[_]>:<context.args.get[2]>
- }
- - case "delete":
- - if <context.args.size> == 1 { - inject locally dgrave_false_syntax - queue clear }
- - if !<server.has_flag[dgrave.names.<context.args.get[2]>]> {
- - narrate "<&4>ERROR Graveyard with the name <&6><context.args.get[2]> <&4>doesn't exist."
+
+ - narrate "<&2>Deleted <&2>graveyard<&6>[<def[name]>]"
+ - define loc <server.flag[dGrave.name.<def[name]>]>
+ - flag server dGrave.locs.<pl.world>:<-:<def[loc]>
+ - flag server dGrave.name.<def[name]>:!
+ - flag server dGrave.loc.<def[loc].escaped>:!
+
+
+
+ - case list:
+ - define list <server.list_flags[dGrave.name].remove[1]||li@>
+ - define size <def[list].size||0>
+ - if <def[size]> == 0 {
+ - narrate "No graveyards found."
+ - queue clear
}
- else {
- - narrate "<&2>Successfully <&6>deleted <&2>graveyard with the name <&6><context.args.get[2]>"
- - define location <server.flag[dgrave.names.<context.args.get[2]>]>
- - flag server dgrave.worlds.<def[location].as_location.world.name>:<-:<def[location]>
+
+ - define page <context.args.get[2].as_int||1>
+ - if <def[page]> !matches number {
+ - narrate "<&4>ERROR <&6><def[page]> <&4>is no valid number."
- - flag server dgrave.locations.<server.flag[dgrave.names.<context.args.get[2]>].get[1].replace[.].with[_]>:!
- - flag server dgrave.names.<context.args.get[2]>:!
- }
- - case "list":
- - define dgrave_amount "<server.list_flags.filter[starts_with[dgrave.names.]].size||0>"
- - if <def[dgrave_amount]> < 1 { - narrate "No graveyards found." - queue clear }
- - if <context.args.get[2]||1> !matches number {
- - narrate "<&4>ERROR <&6><context.args.get[2]> <&4>is no valid number."
- queue clear
}
- - define pages_amount "<def[dgrave_amount].div[10].round_up>"
- - define page "<context.args.get[2].as_int||1>"
- - if <def[pages_amount]> < <context.args.get[2]||1> {
- - narrate "<&6>There are only <&f><def[pages_amount]> <&6>pages. Showing page <&f>1 <&6>instead."
+
+ - define pages <def[size].div[10].round_up>
+ - if <def[pages]> < <context.args.get[2]||1> {
+ - narrate "<&6>There are only <&f><def[pages]> <&6>pages. Showing page <&f>1 <&6>instead."
- define page "1"
}
- #
- - if <def[dgrave_amount]> <= 10 {
- - narrate "-----[<&6>Graveyard page <&f>1/1 ]-----"
+
+ - if <def[size]> <= 10 {
+ - narrate "-----[<&6>Graveyard page <&f>1/1]-----"
}
else {
- - narrate "-----[<&6>Graveyard page <&f><def[page]>/<def[pages_amount]> ]-----"
+ - narrate "-----[<&6>Graveyard page <&f><def[page]>/<def[pages]>]-----"
}
- - define page_from "<el@val[1].add[<el@val[<def[page]>].sub[1].mul[10]>]>"
- - define page_to "<def[page].mul[10]>"
- - foreach <server.list_flags.filter[starts_with[dgrave.names.]].get[<def[page_from]>].to[<def[page_to]>]> {
- - narrate " <&a><def[value].after[dgrave.names.]>"
+ - define pageFrom <el@val[1].add[<def[page].sub[1].mul[10]>]>
+ - define pageTo <def[page].mul[10]>
+ - foreach <def[list].get[<def[pageFrom]>].to[<def[pageTo]>]> {
+ - narrate " <&a><def[value].after[dGrave.name.]>"
}
- - case "tp":
- - if <context.args.size> == 1 { - inject locally dgrave_false_syntax - queue clear }
- - if !<server.has_flag[dgrave.names.<context.args.get[2]>]> {
- - narrate "<&4>ERROR Graveyard with the name <&6><context.args.get[2]> <&4>doesn't exist."
+
+
+
+
+ - case tp:
+ - if <context.args.size> < 2 inject locally syntaxError
+ - define name <c.args.get[2]||x>
+ - if !<server.has_flag[dGrave.name.<def[name]>]> {
+ - narrate "<&4>ERROR Graveyard with the name <&6><def[name]> <&4>doesn't exists."
+ - queue clear
}
- else {
- - narrate "<&2>Successfully <&6>teleporting <&2>you to <&6><context.args.get[2]>"
- - define location <server.flag[dgrave.names.<context.args.get[2]>].as_location>
- - teleport <player> <def[location]>
+ - narrate "<&2>Teleporting <&2> to <&6>[<def[name]>]"
+ - teleport <server.flag[dGrave.name.<def[name]>]>
+
+
+
+ - case nearest:
+ - if !<server.has_flag[dGrave.locs.<pl.world>]> {
+ - narrate "No graveyards found."
+ - queue clear
}
- - case "distance":
- - define location_list <server.flag[dgrave.worlds.<player.location.world.name>].as_list||0>
- - if <def[location_list].size||0> < 1 { - narrate "No graveyards found." - queue clear }
- - define respawn_location "<def[location_list].sort_by_number[distance_squared[<player.location>]].get[1]>"
- - define distance "<def[respawn_location].distance[<player.location>]>"
- - narrate "<&2>Nearest graveyard is <&6><server.flag[dgrave.locations.<def[respawn_location].replace[.].with[_]>]> <&2>with a distance of <&6><def[distance]> <&2>blocks."
+ - define nearest <server.flag[dGrave.locs.<pl.world>].sort_by_number[distance_squared[<pl.location>]].get[1]||x>
+ - define distance <def[nearest].distance[<pl.location>].round_to[2]>
+
+ - narrate "<&2>Nearest graveyard is <&6><server.flag[dGrave.loc.<def[nearest].escaped>]> <&2>with a distance of <&6><def[distance]> <&2>blocks."
+ - showfake red_wool <def[nearest]> d:5s
+
- - showfake m@red_wool <def[respawn_location]> players:<player> d:d@5s
- default:
- - inject locally dgrave_false_syntax
- dgrave_false_syntax:
- - narrate "/dgrave | set <<>name<>> | delete <<>name<>> | list | tp <<>name<>> | distance"
+ - inject locally syntaxError
+
+
+ syntaxError:
+ - narrate "/dGrave | set (name) | delete (name) | list | tp (name) | nearest"
+ - queue clear
+
+
+