Chat-1.0.sk

Created by James Lin

Just so you know, we don't know the file format for every file. If it's just a bunch of random characters, it's probably a .zip or .jar.

#████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████
#█ ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── █
#█ ─██████████████─██████──██████─██████████████─██████████████────██████████████─██████──████████─████████████████───██████████─██████████████─██████████████─ █
#█ ─██░░░░░░░░░░██─██░░██──██░░██─██░░░░░░░░░░██─██░░░░░░░░░░██────██░░░░░░░░░░██─██░░██──██░░░░██─██░░░░░░░░░░░░██───██░░░░░░██─██░░░░░░░░░░██─██░░░░░░░░░░██─ █
#█ ─██░░██████████─██░░██──██░░██─██░░██████░░██─██████░░██████────██░░██████████─██░░██──██░░████─██░░████████░░██───████░░████─██░░██████░░██─██████░░██████─ █
#█ ─██░░██─────────██░░██──██░░██─██░░██──██░░██─────██░░██────────██░░██─────────██░░██──██░░██───██░░██────██░░██─────██░░██───██░░██──██░░██─────██░░██───── █
#█ ─██░░██─────────██░░██████░░██─██░░██████░░██─────██░░██────────██░░██████████─██░░██████░░██───██░░████████░░██─────██░░██───██░░██████░░██─────██░░██───── █
#█ ─██░░██─────────██░░░░░░░░░░██─██░░░░░░░░░░██─────██░░██────────██░░░░░░░░░░██─██░░░░░░░░░░██───██░░░░░░░░░░░░██─────██░░██───██░░░░░░░░░░██─────██░░██───── █
#█ ─██░░██─────────██░░██████░░██─██░░██████░░██─────██░░██────────██████████░░██─██░░██████░░██───██░░██████░░████─────██░░██───██░░██████████─────██░░██───── █
#█ ─██░░██─────────██░░██──██░░██─██░░██──██░░██─────██░░██────────────────██░░██─██░░██──██░░██───██░░██──██░░██───────██░░██───██░░██─────────────██░░██───── █
#█ ─██░░██████████─██░░██──██░░██─██░░██──██░░██─────██░░██────────██████████░░██─██░░██──██░░████─██░░██──██░░██████─████░░████─██░░██─────────────██░░██───── █
#█ ─██░░░░░░░░░░██─██░░██──██░░██─██░░██──██░░██─────██░░██────────██░░░░░░░░░░██─██░░██──██░░░░██─██░░██──██░░░░░░██─██░░░░░░██─██░░██─────────────██░░██───── █
#█ ─██████████████─██████──██████─██████──██████─────██████────────██████████████─██████──████████─██████──██████████─██████████─██████─────────────██████───── █
#█ ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── █
#████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████

#
#░█████╗░░█████╗░███╗░░██╗███████╗██╗░██████╗░██╗
#██╔══██╗██╔══██╗████╗░██║██╔════╝██║██╔════╝░╚═╝
#██║░░╚═╝██║░░██║██╔██╗██║█████╗░░██║██║░░██╗░░░░
#██║░░██╗██║░░██║██║╚████║██╔══╝░░██║██║░░╚██╗░░░
#╚█████╔╝╚█████╔╝██║░╚███║██║░░░░░██║╚██████╔╝██╗
#░╚════╝░░╚════╝░╚═╝░░╚══╝╚═╝░░░░░╚═╝░╚═════╝░╚═╝

#█▄▄ █▄█   ░░█ ▄▀█ █▀▄▀█ █▀▀ █▀ █░░ █ █▄░█ █ █▀▄▀█ █▄▀ █▄█ ▀█▀
#█▄█ ░█░   █▄█ █▀█ █░▀░█ ██▄ ▄█ █▄▄ █ █░▀█ █ █░▀░█ █░█ ░█░ ░█░

# Ver 0.01
# Coder: JameslinimkYT
# Requirements: https://www.spigotmc.org/resources/json-sk.8851/ (It dodenst sasy it works for 1.12-1.15.2+ but it does)
		
options:
	prefix: &l[&r&4Server&r&l]# The prefix for bot commands. You can leave this blank but its not recomended

	ops-name-color: &4&l# Changes op's name color if they are opped. Leave blank for no change. (Uses bukkit color codes)
						# for more info go to >> (https://clients.mcprohosting.com/knowledgebase/145/Bukkit-Color-Codes.html)

	remember-channel: false# When true the next time the player connects, it wil automaticly connect to the channel that they were in when they disconnected
  # Formats
   # Placeholers:
    # Use "{%player's uuid%.suffix}" for the players suffix
    # Use "%player%" for the players name
    # >>>>> Use %player's display name% for use with nicks <<<<<<
    # Use "%message%" for the players message
    # You can use color codes &(0-9, a-f) for more info go to >> (https://clients.mcprohosting.com/knowledgebase/145/Bukkit-Color-Codes.html)
	format-default: %{%player's uuid%.prefix}%&r&l %player's display name% &6&l>>&r %message%# This is how the default channel looks
	format-staff: [&3&lSTAFF&r] %{%player's uuid%.prefix}%&r&l %player's display name% &6&l>>&r %message%# This is how the staff channel looks
	format-help: [&3&lHELP&r] %{%player's uuid%.prefix}%&r&l %player's display name% &6&l>>&r %message%# This is how the help channel looks
  # Channels / perms
	channel-default-perm: skript.chat.default# Has to be a perm. Just give all players this perm for chatting to work.
	channel-staff-perm: skript.chat.staff# Has to be a perm. Just give certain players this perm for chatting to work.
	channel-help-perm: skript.chat.help# Has to be a perm. Just give certain players this perm for chatting to work. (Recomend all)
  # Groups / perms
	default-perm: skript.default# This is the perm used to classify defaults. Give this to all players.
	moderator-perm: skript.moderator# This is the perm used to classify moderators.
	owner-perm: skript.owner# This is the perm used to classify owners. Give this to all players.
  # Prefixes - THIS CHANGES TABLIST ALSO!
	default-prefix: &7&lNONE&r# This is the prefix for people with the default perm leave blank for none
	moderator-prefix: &3&lMOD&r# This is the prefix for people with the moderator perm leave blank for none
	owner-prefix: &4&lOWNER&r# This is the prefix for people with the moderator perm leave blank for none
  # Chat filter + Spam protection
	sPunishment: kick %loop-player% due to "{@prefix} Do not spam"# The console will execute this command not a player. You can use {@prefix} for the prefix, and %loop-player% for the player
	spamamount: 10# How many messages in 5 seconds should be sent until punishment
  # Nick / name change
	NickChanged: &eYour nick has been changed!
	NoPermissions: &cYou need to the rank &6VIP+ &cbuy on &6www.WEBSITEHERE.net
	NickError: &cNope.
	Command: /nick
	Aliases: /nickname
	Permission: nick.use
  # Chat filter
	Version: v0.0.0.4
	tempbanCommand: tempban %player% You were suspended for 10 min
  # filter.manage -  Able to add / remove filtered words
  # filter.bypass -  Able to bypass the filter
	Mentions: true# When true it will notify a player when their name is said in chat















































function contains(list: objects, check: object) :: boolean:
    loop {_list::*}:
        if {_check} contains loop-value:
            return true
    return false

#if contains({filter::blockedwords::*}, arg-2) is false:

command /filter [<text>] [<text>]:
	permission: filter.manage
	permission message: {@prefix} &cHey! I can not allow you to do that.
	trigger:
		if arg-1 is set:
			if arg-1 is "add":
				if arg-2 is set:
					if contains({filter::blockedwords::*}, arg-2) is true:
						send "{@prefix}&c %arg-2% is already added to the filter!"
						stop
					else:
						if arg-2 is not "hoe":
							add arg-2 to {filter::blockedwords::*}
							send "{@prefix}&c %arg-2% has been added to the filter."
							stop
						if arg-2 is "hoe":
							send "{@prefix} &cError could happen if user types ""whoever"", it will trigger the chatfilter!"
							add arg-2 to {filter::blockedwords::*}
							send "{@prefix}&c %arg-2% has been added to the filter."
							stop
				if arg-2 is not set:
					send "{@prefix}&c /filter <add <filtered word>/remove <filtered word>/list>"
					stop
				stop
			if arg-1 is "remove":
				if arg-2 is set:
					if contains({filter::blockedwords::*}, arg-2) is true:
						remove arg-2 from {filter::blockedwords::*}
						send "{@prefix}&c %arg-2% has been removed from the filter."
						stop
					if contains({filter::blockedwords::*}, arg-2) is false:
						send "{@prefix}&c That word is not in the filter."
						stop
					stop
				stop
			if arg-1 is "list":
				set {_filter} to "%{filter::blockedwords::*}%"
				replace every "<none>" in {_filter} with "None"
				send "{@prefix} &cThe blocked words are: &7%{_filter}%"
				stop
			if arg-1 is not "list" or "add" or "set":
				send "{@prefix}&c /filter <add <filtered word>/remove <filtered word>/list>"
				stop
			stop
		if arg-1 is not set:
			send "{@prefix}&c /filter <add <filtered word>/remove <filtered word>/list"
			stop
		stop
		
on chat:
	if player has permission "filter.bypass":
		stop
	if player does not have permission "filter.bypass":
		if contains({filter::blockedwords::*}, message) is true:
			cancel event
			send "{@prefix}&c Please try to refrain from these types of words."
			loop all players:
				if loop-player has permission "filter.notify":
					send "{@prefix} &f%player% has tried to say a filtered word." to loop-player
					stop
				else:
					stop
			stop
		else:
			stop

on chat:
	if player doesn't have permission "antispam.ignore":
		{antispam.command.spam} is true
		add 1 to {spam.%player%}
		if {spam.%player%} is 2:
			message "{@prefix} &c&l&mSPAM!"
		if {spam.%player%} is 3:
			make console execute command "kick %player% Do not spam"
		wait 5 seconds
		if {spam.%player%} is 10:
			make console execute command "{@tempbanCommand}"
			
on chat:
	if {@Mentions} is true:
		loop all players:
			if message contains loop-player's name:
				wait 1 tick
				play sound "entity::experience_orb::pickup" with volume 1 to the loop-value
				send title "&bYou got mentioned!" with subtitle "&aMessage: '%message%'" to loop-player for 1 second
				send "{@prefix} You got mentioned. Message: '%message%'" to loop-value

command /antispam:
	description: /true Active /false Deactive.
	usage: /true Active /false Deactive.
	permission: antispam.admin
	permission message: &c&lNo Permission 
	trigger:
		if {antispam.command.spam} is true:
			message "{@prefix} &eAntiSpam Deactiveated"
			set {antispam.command.spam} to false
		else:
			message "{@prefix} &eAntiSpam Activeated"
			set {antispam.command.spam} to true 

command {@Command} [<text>]:
	permission: {@Permission}
	permission message: {@prefix} {@NoPermissions}
	aliases: {@Aliases}
	trigger:
		if arg-1 is set:
			set player's display name to "%arg 1%"
			if player has permission "{@default-perm}":
				set player's tablist name to "{@default-prefix} %arg 1%"
				set {%player's uuid%.prefix} to "{@default-prefix}"
			if player has permission "{@moderator-perm}":
				set player's tablist name to "{@moderator-prefix} %arg 1%"
				set {%player's uuid%.prefix} to "{@moderator-prefix}"
			if player has permission "{@owner-perm}":
				set player's tablist name to "{@owner-prefix} %arg 1%"
				set {%player's uuid%.prefix} to "{@owner-prefix}"
			send "{@prefix} {@NickChanged}" to player
		else:
			send "{@prefix} {@NickError}" to player

command /channel <text>:
	usage: Use /channel list for a list
	trigger:
		if arg-1 is "list":
			message "{@prefix} Available channels:"
			if player has permission "{@channel-default-perm}":
				json("%player%", "{@prefix} default||cmd:/channel default||ttp:&6&lCLICK&f to switch channels")
			if player has permission "{@channel-help-perm}":
				json("%player%", "{@prefix} help||cmd:/channel help||ttp:&6&lCLICK&f to switch channels")
			if player has permission "{@channel-staff-perm}":
				json("%player%", "{@prefix} staff||cmd:/channel staff||ttp:&6&lCLICK&f to switch channels")
		if arg-1 is "default":
			if player has permission "{@channel-default-perm}":
				set {%player's uuid%.channel} to "default"
				message "{@prefix} Switched to default channel"
			else:
				message "{@prefix} &cYou dont have the perms!"
		else if arg-1 is "help":
			if player has permission "{@channel-help-perm}":
				set {%player's uuid%.channel} to "help"
				message "{@prefix} Switched to help channel"
			else:
				message "{@prefix} &cYou dont have the perms!"
		else if arg-1 is "staff":
			if player has permission "{@channel-staff-perm}":
				set {%player's uuid%.channel} to "staff"
				message "{@prefix} Switched to staff channel"
			else:
				message "{@prefix} &cYou dont have the perms!"
		else:
			if arg-1 is not "list":
				message "{@prefix} &cNot a valid channel!"

every 5 minutes:
	loop all players:
		if loop-value has permission "{@default-perm}":
			set loop-value's tablist name to "{@default-prefix} %loop-value%"
			set {%loop-value's uuid%.prefix} to "{@default-prefix}"
		if loop-value has permission "{@moderator-perm}":
			set loop-value's tablist name to "{@moderator-prefix} %loop-value%"
			set {%loop-value's uuid%.prefix} to "{@moderator-prefix}"
		if loop-value has permission "{@owner-perm}":
			set loop-value's tablist name to "{@owner-prefix} %loop-value%"
			set {%loop-value's uuid%.prefix} to "{@owner-prefix}"


on join:
	loop all players:
		if loop-value has permission "{@default-perm}":
			set loop-value's tablist name to "{@default-prefix} %loop-value%"
			set {%loop-value's uuid%.prefix} to "{@default-prefix}"
		if loop-value has permission "{@moderator-perm}":
			set loop-value's tablist name to "{@moderator-prefix} %loop-value%"
			set {%loop-value's uuid%.prefix} to "{@moderator-prefix}"
		if loop-value has permission "{@owner-perm}":
			set loop-value's tablist name to "{@owner-prefix} %loop-value%"
			set {%loop-value's uuid%.prefix} to "{@owner-prefix}"
	if {@remember-channel} is false:
		set {%player's uuid%.channel} to "default"
	if {%player's uuid%.channel} is not "default" or "help" or "staff":
		set {%player's uuid%.channel} to "default"
			
on chat:
	if {%player's uuid%.channel} is "default":
		if player has permission "{@channel-default-perm}":
			cancel event
			loop all players:
				if {%loop-value's uuid%.channel} is "default":
					if contains({filter::blockedwords::*}, message) is false:
						send "{@format-default}" to loop-value
					else if player has permission "filter.bypass":
						send "{@format-default}" to loop-value
						
				if {%loop-value's uuid%.channel} is "staff":
					if contains({filter::blockedwords::*}, message) is false:
						send "{@format-default}" to loop-value
					else if player has permission "filter.bypass":
						send "{@format-default}" to loop-value
						
				if {%loop-value's uuid%.channel} is "help":
					if contains({filter::blockedwords::*}, message) is false:
						send "{@format-default}" to loop-value
					else if player has permission "filter.bypass":
						send "{@format-default}" to loop-value
		else:
			message "{@prefix} &4Nope you dont have the perms."
			
	if {%player's uuid%.channel} is "help":
		if player has permission "{@channel-help-perm}":
			cancel event
			loop all players:
				if {%loop-value's uuid%.channel} is "help":
					if contains({filter::blockedwords::*}, message) is false:
						send "{@format-help}" to loop-value
					else if player has permission "filter.bypass":
						send "{@format-help}" to loop-value
						
				if {%loop-value's uuid%.channel} is "staff":
					if loop-value has permission "{@channel-help-perm}":
						if contains({filter::blockedwords::*}, message) is false:
							send "{@format-help}" to loop-value
						else if player has permission "filter.bypass":
							send "{@format-help}" to loop-value
							
				if {%loop-value's uuid%.channel} is "default":
					if loop-value has permission "{@channel-default-perm}":
						if contains({filter::blockedwords::*}, message) is false:
							send "{@format-help}" to loop-value
						else if player has permission "filter.bypass":
							send "{@format-help}" to loop-value
		else:
			message "{@prefix} &cNope you dont have the perms."

	if {%player's uuid%.channel} is "staff":
		if player has permission "{@channel-staff-perm}":
			cancel event
			loop all players:
				if {%loop-value's uuid%.channel} is "staff":
					if contains({filter::blockedwords::*}, message) is false:
						send "{@format-staff}" to loop-value
					else if player has permission "filter.bypass":
						send "{@format-staff}" to loop-value
						
				if {%loop-value's uuid%.channel} is "default":
					if loop-value has permission "{@channel-staff-perm}":
						if contains({filter::blockedwords::*}, message) is false:
							send "{@format-staff}" to loop-value
						else if player has permission "filter.bypass":
							send "{@format-staff}" to loop-value
							
				if {%loop-value's uuid%.channel} is "help":
					if loop-value has permission "{@channel-staff-perm}":
						if contains({filter::blockedwords::*}, message) is false:
							send "{@format-staff}" to loop-value
						else if player has permission "filter.bypass":
							send "{@format-staff}" to loop-value
		else:
			message "{@prefix} &cNope you dont have the perms."

command /sksudo <player> <text>:
	description: Make a player execute a command or chat
	usage: /sksudo player command / text
	permission: sksudo.use
	aliases: skriptsudo, sudo, ssudo
	trigger:
		if arg-2 contains "/":
			make arg-1 say "%arg-2%"
			loop all players:
				if loop-value is op:
					send "{@prefix} Made %arg-1% use %arg-2%" to loop-player
		else:
			message "{@prefix} It must be a command not a text!"

command /justm <text>:
	description: Just say some text, no Prefixes
	usage: /justm text (Just say some text, no Prefixes)
	trigger:
		message "%arg-1%"