diff --git a/belowname_display_1.16.5-skript-packet.sk b/belowname_display_1.16.5-skript-packet.sk index 683f46f..f3b0c8e 100644 --- a/belowname_display_1.16.5-skript-packet.sk +++ b/belowname_display_1.16.5-skript-packet.sk @@ -1,102 +1,111 @@ -#made by Govindas @ limework.net - -import: - net.minecraft.server.v1_16_R3.IScoreboardCriteria$EnumScoreboardHealthDisplay - net.minecraft.server.v1_16_R3.ScoreboardServer$Action -on script load: - #remove scoreboard objective packet - - set {-scoreboard_objective_remove_packet} to new play_server_scoreboard_objective packet - - set field 3 of {-scoreboard_objective_remove_packet} to 1 #1 means remove - - #create scoreboard objective packet - - set {-scoreboard_objective_create_packet} to new play_server_scoreboard_objective packet - - set field 3 of {-scoreboard_objective_create_packet} to 0 #0 means create - set field 2 of {-scoreboard_objective_create_packet} to EnumScoreboardHealthDisplay.HEARTS - - #update scoreboard objective packet - - set {-scoreboard_objective_update_packet} to new play_server_scoreboard_objective packet - set field 3 of {-scoreboard_objective_update_packet} to 2 #2 means update - - #set objective display slot - #2 = below name - #0 = sidebar - - set {-belowname_display_packet} to new play_server_scoreboard_display_objective packet - set field 0 of {-belowname_display_packet} to 2 - - #set the number displayed - - set {-scoreboard_score_packet} to new play_server_scoreboard_score packet - -effect set below[ ]name of %player/string% for %player% to %number% named %string%: - trigger: - #register scoreboard objective - if {-hpbelowpacket::%expression 2%} is not set: - set {_packet} to {-scoreboard_objective_create_packet} - - #random scoreboard name to support bungeecord - - - set {_uuid} to first 16 characters of random uuid - - set field 0 of {_packet} to {_uuid} - - set field 1 of {_packet} to nms textcomponent from text (expression 4) - - send packet {_packet} to expression 2 - set {-hpbelowpacket::%expression 2%} to expression 4 - - set {-hpbelowpacketid::%expression 2%} to {_uuid} - - - #below name display packet, MUST be sent only once - set {_packet} to {-belowname_display_packet} - set field 1 of {_packet} to {-hpbelowpacketid::%expression 2%} - send packet {_packet} to expression 2 - - #update the name if objective already present - - else if {-hpbelowpacket::%expression 2%} is not expression 4: - - set {_packet} to {-scoreboard_objective_update_packet} - set field 0 of {_packet} to {-hpbelowpacketid::%expression 2%} - #1.16 - set field 1 of {_packet} to nms textcomponent from text (expression 4) - - send packet {_packet} to expression 2 - set {-hpbelowpacket::%expression 2%} to expression 4 - - #set the number displayed - - set {_packet} to {-scoreboard_score_packet} - set field 2 of {_packet} to expression 3 #number - set field 0 of {_packet} to "%expression 1%" #player name - set field 1 of {_packet} to {-hpbelowpacketid::%expression 2%} - send packet {_packet} to expression 2 - -effect (remove|reset|delete|clear) below[ ]name (for|of) %player%: - trigger: - #removed this condition... as it was sometimes preventing legitimate reset, maybe sometimes it just needs to do it twice?) - #{-hpbelowpacketid::%expression 1%} is set: - #needed to re-create the display, to reset it easier - #somehow without re-setting it before removing, it bugs out and doesn't let to remove it anymore without relog sometimes - set {_id} to "%{-hpbelowpacketid::%expression 1%}%" - wait 2 ticks - {_id} is "%{-hpbelowpacketid::%expression 1%}%" - set belowname of expression 1 for expression 1 to 0 named "reset" - set {_packet} to {-scoreboard_objective_remove_packet} - set field 0 of {_packet} to {-hpbelowpacketid::%expression 1%} - send packet {_packet} to expression 1 - - delete {-hpbelowpacketid::%expression 1%} and {-hpbelowpacket::%expression 1%} - -on quit: - remove belowname for player -on player world change: - {-hpbelowpacketid::%player%} is set: - remove belowname for player \ No newline at end of file +#made by Govindas @ limework.net + +import: + net.minecraft.server.v1_16_R3.IScoreboardCriteria$EnumScoreboardHealthDisplay +on script load: + #create scoreboard objective packet + + set {-scoreboard_objective_create_packet} to new play_server_scoreboard_objective packet + #1.16 + set field 3 of {-scoreboard_objective_create_packet} to 0 #0 means create + set field 2 of {-scoreboard_objective_create_packet} to EnumScoreboardHealthDisplay.HEARTS + #1.12 + #set int field 0 of {-scoreboard_objective_create_packet} to 0 #0 means create + #set {-scoreboard_objective_create_packet}.getHandle().c to EnumScoreboardHealthDisplay.INTEGER + + #update scoreboard objective packet + + set {-scoreboard_objective_update_packet} to new play_server_scoreboard_objective packet + set field 3 of {-scoreboard_objective_update_packet} to 2 #2 means update + + #set objective display slot + #2 = below name + #0 = sidebar + + set {-belowname_display_packet} to new play_server_scoreboard_display_objective packet + set field 0 of {-belowname_display_packet} to 2 + +effect set below[ ]name [display] of %player/string% for %player% to %number% named %string%: + trigger: + #register scoreboard objective + if {-hpbelowpacket::%expression 2%} is not set: + set {_packet} to {-scoreboard_objective_create_packet} + + #random scoreboard name to support bungeecord + + + set {_uuid} to first 16 characters of random uuid + + set field 0 of {_packet} to {_uuid} + #1.16 + #set field 1 of {_packet} to nms textcomponent from text (expression 4) + set field 1 of {_packet} to expression 4 + #1.12 + #set string field 1 of {_packet} to expression 4 #text that is displayed below name + + send packet {_packet} to expression 2 + set {-hpbelowpacket::%expression 2%} to expression 4 + + set {-hpbelowpacketid::%expression 2%} to {_uuid} + + + #below name display packet, MUST be sent only once + set {_packet} to {-belowname_display_packet} + set field 1 of {_packet} to {-hpbelowpacketid::%expression 2%} + send packet {_packet} to expression 2 + + #update the name if objective already present + + else if {-hpbelowpacket::%expression 2%} is not expression 4: + + set {_packet} to new play_server_scoreboard_objective packet + set field 3 of {_packet} to 2 + set field 0 of {_packet} to {-hpbelowpacketid::%expression 2%} + set field 2 of {_packet} to EnumScoreboardHealthDisplay.HEARTS + #1.16 + #set field 1 of {_packet} to nms textcomponent from text (expression 4) + set field 1 of {_packet} to expression 4 + #1.12 + #set string field 1 of {_packet} to expression 4 #new text displayed below name + + send packet {_packet} to expression 2 + set {-hpbelowpacket::%expression 2%} to expression 4 + + #set the number displayed + + set {_packet} to new play_server_scoreboard_score packet + set field 2 of {_packet} to expression 3 #number + set field 0 of {_packet} to "%expression 1%" #player name + set field 1 of {_packet} to {-hpbelowpacketid::%expression 2%} + set field 3 of {_packet} to "CHANGE" + #TODO FIX THIS KICKING PLAYERS + send packet {_packet} to expression 2 + +effect (wipe|remove|reset|delete|clear) below[ ]name [display] (for|of) %player%: + trigger: + #removed this condition... as it was sometimes preventing legitimate reset, maybe sometimes it just needs to do it twice?) + #{-hpbelowpacketid::%expression 1%} is set: + #needed to re-create the display, to reset it easier + #somehow without re-setting it before removing, it bugs out and doesn't let to remove it anymore without relog sometimes + set {_id} to "%{-hpbelowpacketid::%expression 1%}%" + wait 2 ticks + {_id} is "%{-hpbelowpacketid::%expression 1%}%" + set {_packet} to new play_server_scoreboard_objective packet + set field 3 of {_packet} to 1 #1 means remove + #set field 2 of {_packet} to EnumScoreboardHealthDisplay.HEARTS + set field 0 of {_packet} to {-hpbelowpacketid::%expression 1%} + #TODO FIX THIS KICKING PLAYERS + send packet {_packet} to expression 1 + + delete {-hpbelowpacketid::%expression 1%} and {-hpbelowpacket::%expression 1%} +#on packet event play_server_scoreboard_objective: +# player is "Govindas" +# send "play_server_scoreboard_objective" to ops +# loop integers from 0 to 5: +# field loop-number of event-packet is set +# send "field %loop-number%: %field loop-number of event-packet%" to ops +on quit: + remove belowname for player +on player world change: + {-hpbelowpacketid::%player%} is set: + remove belowname for player