Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- command /coi:
- trigger:
- if metadata value "coi" of player is true:
- delete metadata value "coi" of player
- send "disabled."
- stop
- set metadata value "coi" of player to true
- send "enabled"
- on break:
- if metadata value "coi" of player is true:
- cancel event
- if {log::%event-location%::time::*} is not set:
- send "No logs"
- stop
- set {_index::*} to getLogIndex(event-location)
- loop {_index::*}:
- set {_log} to translateLog(loop-value, event-location)
- send {_log}
- wait 1 tick
- stop
- set {_id} to getLogId()
- add {_id} to {log::index::*}
- add event-location to {log::location::%{_id}%::*}
- set {log::%event-location%::time::%{_id}%} to now
- set {log::%event-location%::block::%{_id}%} to type of event-block
- set {log::%event-location%::player::%{_id}%} to name of player
- set {log::%event-location%::type::%{_id}%} to "deleted"
- on place:
- if metadata value "coi" of player is true:
- cancel event
- if {log::%event-location%::time::*} is not set:
- send "No logs"
- stop
- set {_index::*} to getLogIndex(event-location)
- loop {_index::*}:
- set {_log} to translateLog(loop-value, event-location)
- send {_log}
- wait 1 tick
- stop
- set {_id} to getLogId()
- add {_id} to {log::index::*}
- add event-location to {log::location::%{_id}%::*}
- set {log::%event-location%::time::%{_id}%} to now
- set {log::%event-location%::block::%{_id}%} to type of event-block
- set {log::%event-location%::player::%{_id}%} to name of player
- set {log::%event-location%::type::%{_id}%} to "placed"
- set {_index::*} to getLogIndex(event-location)
- loop {_index::*}:
- set {_beforeblock} to getBeforeBlock(loop-value, event-location)
- exit loop
- set {log::%event-location%::before::%{_id}%} to {_beforeblock}
- on explode:
- loop blocks in radius 7 around event-entity:
- loop-block is not air
- set {_before::location::%location at loop-block%} to location at loop-block
- set {_before::block::%location at loop-block%} to type of loop-block
- wait 1 tick
- loop {_before::location::*}:
- type of block at loop-value is not {_before::block::%loop-value%}
- set {_id} to getLogId()
- add {_id} to {log::index::*}
- add loop-value to {log::location::%{_id}%::*}
- set {log::%loop-value%::time::%{_id}%} to now
- set {log::%loop-value%::block::%{_id}%} to {_before::block::%loop-value%}
- set {log::%loop-value%::player::%{_id}%} to "tnt"
- function getLogId() :: string:
- add 1 to {nowLogIdNumber}
- set {_id} to "%now%=%{nowLogIdNumber}%"
- return {_id}
- function getLogIndex(loc: location) :: strings:
- loop {log::index::*}:
- loop {log::location::%loop-value%::*}:
- loop-value-2 is {_loc}
- add "%loop-value-1%" to {_return::*}
- return {_return::*}
- function translateLog(index: string, loc: location) :: string:
- set {_player} to {log::%{_loc}%::player::%{_index}%}
- set {_type} to {log::%{_loc}%::type::%{_index}%}
- set {_block} to {log::%{_loc}%::block::%{_index}%}
- set {_time} to difference between now and {log::%{_loc}%::time::%{_index}%}
- set {_return} to "&3Log &c%{_player}% &7%{_type}% &c%{_block}% &7%{_time}% &8ago"
- return {_return}
- function getBeforeBlock(index: string, loc: location) :: block:
- {log::%{_loc}%::type::%{_index}%} is "deleted"
- set {_block} to {log::%{_loc}%::block::%{_id}%}
- return {_block}
- command /rollback [<string>] [<string>] [<timespan>]:
- trigger:
- if arg-2 is set:
- arg-2 is not "deleted" or "placed" or "both"
- send "deleted or placed or both"
- stop
- if arg-3 is not set:
- send "timespan"
- stop
- set {_num} to 0
- loop {log::index::*}:
- loop {log::location::%loop-value%::*}:
- difference between now and {log::%loop-value-2%::time::%loop-value-1%} <= arg-3
- if arg-1 is "@tnt":
- "@%{log::%loop-value-2%::player::%loop-value-1%}%" is arg-1
- set block at loop-value-2 to {log::%loop-value-2%::block::%loop-value-1%}
- else:
- if arg-1 is not "@everyone":
- "%{log::%loop-value-2%::player::%loop-value-1%}%" is not arg-1
- continue
- if {log::%loop-value-2%::type::%loop-value-1%} is "placed":
- arg-2 is "placed" or "both"
- if {log::%loop-value-2%::before::%loop-value-1%} is set:
- set block at loop-value-2 to {log::%loop-value-2%::before::%loop-value-1%}
- else:
- set block at loop-value-2 to air
- else:
- arg-2 is "deleted" or "both"
- set block at loop-value-2 to {log::%loop-value-2%::block::%loop-value-1%}
- add 1 to {_num}
- if mod({_num}, 200) = 0:
- wait 1 tick
- send "&3Rollback finish &8--- &7Loaded &c%{_num}% &7block"
- command /purge [<timespan>]:
- trigger:
- if arg-1 is not set:
- send "timespan"
- stop
- set {_data} to 0
- loop {log::index::*}:
- loop {log::location::%loop-value%::*}:
- difference between now and {log::%loop-value-2%::time::%loop-value-1%} > arg-1
- remove loop-value-1 from {log::index::*}
- delete {log::%loop-value-2%::time::%loop-value-1%}
- delete {log::%loop-value-2%::block::%loop-value-1%}
- delete {log::%loop-value-2%::player::%loop-value-1%}
- delete {log::%loop-value-2%::type::%loop-value-1%}
- delete {log::%loop-value-2%::before::%loop-value-1%}
- delete {log::location::%loop-value-1%::*}
- add 7 to {_data}
- set {nowLogIdNumber} to 0
- send "&3Purge finish &8--- &7Deleted &c%{_data}% &7logs"
Add Comment
Please, Sign In to add comment