Last active
October 12, 2015 22:57
-
-
Save b1nary/4099897 to your computer and use it in GitHub Desktop.
RubyBukkit Colored chat plugin (with uptime lol)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Display time since server start or reload | |
| Plugin.is { | |
| name "SetaMOD" | |
| version "0.1" | |
| author "Seta" | |
| commands :uptime => { | |
| :usage => "/uptime - display time since server start or reload" | |
| }, :prefix => { | |
| :usage => "/prefix - player prefix" | |
| }, :farben => { | |
| :usage => "/farben - listet farben", | |
| :aliases => [ :colors, :colours ] | |
| }, :farbe => { | |
| :usage => "/farbe - setzt farbe", | |
| :aliases => [ :color, :colour ] | |
| }, :burger => { | |
| :usage => "/burger USER - jmd. einbürgern", | |
| :aliases => [ :burg ] | |
| } | |
| permissions "setamod.admin" => { | |
| :default => :op, | |
| :description => "Admin Commands" | |
| }, "setamod.user" => { | |
| :default => :op, | |
| :description => "User Commands" | |
| } | |
| } | |
| import 'org.bukkit.ChatColor' | |
| import 'org.bukkit.event.player.PlayerLoginEvent' | |
| import 'org.bukkit.event.block.SignChangeEvent' | |
| import 'org.bukkit.event.player.AsyncPlayerChatEvent' | |
| import 'org.bukkit.event.player.PlayerInteractEvent' | |
| NO_RIGHTS = "$dNein! Böser Kater!" | |
| $data = nil | |
| class Permissions | |
| # singleton | |
| def self.instance | |
| @permissions = Permissions.new if @permissions == nil | |
| @permissions | |
| end | |
| def self.playerHas(player, perm, default); instance.playerHas(player, perm, default); end | |
| def self.plugin; instance.plugin; end | |
| def self.pluginName | |
| plugin.getDescription.getFullName if plugin != nil | |
| end | |
| def self.setGroup player, group | |
| plugin.getUser(player).addGroup(group) | |
| end | |
| # the handler | |
| attr_reader :plugin | |
| def initialize | |
| server = org.bukkit.Bukkit.getServer | |
| pex = server.getPluginManager.getPlugin("PermissionsEx") | |
| if pex != nil then | |
| @plugin = pex | |
| @handler = proc { |player, perm, default| pex.has(player, perm) } | |
| @handler2 = proc { |player, group| pex.getUser(player).addGroup(group) } | |
| else | |
| @handler = proc { |player, perm, default| default } | |
| end | |
| end | |
| def playerHas(player, perm, default) | |
| @handler.call(player, perm, default) | |
| end | |
| end | |
| module PlayerPermissions | |
| def has(name, default = false) | |
| Permissions.playerHas(self, name, default) | |
| end | |
| end | |
| JavaUtilities.extend_proxy("org.bukkit.entity.Player") { | |
| include PlayerPermissions | |
| } | |
| def _save | |
| if !$data.nil? | |
| File.open("seta-is-best-pony.data","wb") do |file| | |
| Marshal.dump($data,file) | |
| end | |
| end | |
| end | |
| def _load | |
| if $data.nil? | |
| File.open("seta-is-best-pony.data","rb") {|f| $data = Marshal.load(f)} | |
| if $data[:signs].nil? | |
| $data[:signs] = {} | |
| end | |
| end | |
| end | |
| if !File.exists? "seta-is-best-pony.data" | |
| $data = { :player => {}, | |
| :prefix => { | |
| 'neuling' => "$5[$6Neuling$5]$6", | |
| 'op' => "$1[$4OP$1]$4", | |
| 'admin' => "$1[$4Admin$1]$4", | |
| 'burger' => "$2[$6Burger$2]$6", | |
| 'seta' => "$a[$b*_*$a]$b", | |
| 'noob' => "$0[$fN00B$0]$6" }, | |
| :has_prefix => {} } | |
| _save | |
| else | |
| _load | |
| end | |
| def colorize(s) | |
| map = { | |
| '$0' => ChatColor::BLACK, | |
| '$1' => ChatColor::DARK_BLUE, | |
| '$2' => ChatColor::DARK_GREEN, | |
| '$3' => ChatColor::DARK_AQUA, | |
| '$4' => ChatColor::DARK_RED, | |
| '$5' => ChatColor::DARK_PURPLE, | |
| '$6' => ChatColor::GOLD, | |
| '$7' => ChatColor::GRAY, | |
| '$8' => ChatColor::DARK_GRAY, | |
| '$9' => ChatColor::BLUE, | |
| '$a' => ChatColor::GREEN, | |
| '$b' => ChatColor::AQUA, | |
| '$c' => ChatColor::RED, | |
| '$d' => ChatColor::LIGHT_PURPLE, | |
| '$e' => ChatColor::YELLOW, | |
| '$f' => ChatColor::WHITE, | |
| '&0' => ChatColor::BLACK, | |
| '&1' => ChatColor::DARK_BLUE, | |
| '&2' => ChatColor::DARK_GREEN, | |
| '&3' => ChatColor::DARK_AQUA, | |
| '&4' => ChatColor::DARK_RED, | |
| '&5' => ChatColor::DARK_PURPLE, | |
| '&6' => ChatColor::GOLD, | |
| '&7' => ChatColor::GRAY, | |
| '&8' => ChatColor::DARK_GRAY, | |
| '&9' => ChatColor::BLUE, | |
| '&a' => ChatColor::GREEN, | |
| '&b' => ChatColor::AQUA, | |
| '&c' => ChatColor::RED, | |
| '&d' => ChatColor::LIGHT_PURPLE, | |
| '&e' => ChatColor::YELLOW, | |
| '&f' => ChatColor::WHITE, | |
| } | |
| map.each do|i,v| | |
| s = s.gsub(i, v.to_s) | |
| end | |
| s | |
| end | |
| COLORS = ["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"] | |
| DOT = colorize("$a:") | |
| def expand str, len | |
| if str.size < len | |
| str += " "*(len-str.size) | |
| end | |
| str | |
| end | |
| def checkPlayer player | |
| if $data[:player][player.getDisplayName].nil? | |
| $data[:has_prefix][player.getDisplayName] = [] | |
| $data[:has_prefix][player.getDisplayName] << 'neuling' | |
| $data[:has_prefix][player.getDisplayName] << 'noob' | |
| $data[:has_prefix][player.getDisplayName] << 'burger' | |
| $data[:player][player.getDisplayName] = {} | |
| $data[:player][player.getDisplayName][:prefix] = colorize($data[:prefix]['neuling']) | |
| $data[:player][player.getDisplayName][:color] = colorize("") | |
| $data[:player][player.getDisplayName][:textcolor] = colorize("$f") | |
| _save | |
| end | |
| end | |
| # plugin class | |
| class SetaMOD < RubyPlugin | |
| def onEnable | |
| registerEvents | |
| @serverStart = time | |
| print "[" + description.name + "] " + description.fullName + " enabled." | |
| end | |
| def onDisable; print uptimeString; end | |
| def registerEvents | |
| registerEvent(PlayerLoginEvent, :Normal) { | |
| |loginEvent| | |
| player = loginEvent.getPlayer | |
| checkPlayer(player) | |
| } | |
| registerEvent(AsyncPlayerChatEvent, :Lowest) { | |
| |chatEvent| | |
| checkPlayer(chatEvent.getPlayer) | |
| player = $data[:player][chatEvent.getPlayer.getDisplayName] | |
| #event = #{player[:prefix]} #{player[:color]}#{player[:textcolor]} | |
| chatEvent.setFormat("#{player[:prefix]} #{player[:color]}%s#{DOT} #{player[:textcolor]}%s") | |
| } | |
| registerEvent(SignChangeEvent, :Lowest) { | |
| |sign| | |
| if sign.getPlayer.hasPermission("setamod.admin") and sign.getLine(0) == "prefix" | |
| if sign.getLine(1).include? '&' | |
| if sign.getLine(2) != "" | |
| if $data[:prefix][sign.getLine(2)].nil? | |
| prefix = sign.getLine(1) | |
| title = sign.getLine(2) | |
| sign.setLine(0,"") | |
| sign.setLine(1,colorize("&6*&3Prefix&6*")) | |
| sign.setLine(2,colorize(prefix)) | |
| $data[:prefix][title] = prefix | |
| $data[:signs][[sign.getBlock.getLocation.getX, sign.getBlock.getLocation.getY, sign.getBlock.getLocation.getZ]] = title | |
| _save | |
| sign.getPlayer.sendMessage(colorize("&aPrefix erstellt & gespeichert")) | |
| else | |
| sign.getPlayer.sendMessage(colorize("&4Dieser prefix titel ist bereits vergeben")) | |
| end | |
| else | |
| sign.getPlayer.sendMessage(colorize("&4Bitte schreib einen titel für den neuen Prefix in Zeile 3")) | |
| end | |
| elsif !$data[:prefix][sign.getLine(1)].nil? | |
| prefix = $data[:prefix][sign.getLine(1)] | |
| title = sign.getLine(1) | |
| sign.setLine(0,"") | |
| sign.setLine(1,colorize("&6*&3Prefix&6*")) | |
| sign.setLine(2,colorize(prefix)) | |
| sign.setLine(3,colorize("&7#{title}")) | |
| $data[:signs][[sign.getBlock.getLocation.getX, sign.getBlock.getLocation.getY, sign.getBlock.getLocation.getZ]] = title | |
| _save | |
| sign.getPlayer.sendMessage(colorize("&aPrefix gespeichert")) | |
| else | |
| sign.getPlayer.sendMessage(colorize("&4Unbekannter Prefix")) | |
| sign.getPlayer.sendMessage(colorize("Um einen neuen zu erstellen schreib einen titel für den neuen Prefix in Zeile 3, um einen vorhandenen zu verwenden schreib seinen namen in Zeile 2")) | |
| end | |
| end | |
| } | |
| registerEvent(PlayerInteractEvent, :Normal) { | |
| |block| | |
| blox = block.getClickedBlock.getType.to_s | |
| if blox == "WALL_SIGN" or blox == "SIGN_POST" | |
| if $data[:signs][[block.getClickedBlock.getLocation.getX, block.getClickedBlock.getLocation.getY, block.getClickedBlock.getLocation.getZ]] | |
| title = $data[:signs][[block.getClickedBlock.getLocation.getX, block.getClickedBlock.getLocation.getY, block.getClickedBlock.getLocation.getZ]] | |
| if $data[:has_prefix][block.getPlayer.getName].include? title | |
| block.getPlayer.sendMessage(colorize('&aDu hast diesen Prefix bereits &b;) &5/prefix list')) | |
| else | |
| $data[:has_prefix][block.getPlayer.getName] << title | |
| _save | |
| block.getPlayer.sendMessage(colorize('&aNeuer prefix! *O* &5/prefix list')) | |
| end | |
| end | |
| end | |
| } | |
| end | |
| def onCommand(sender, command, label, args) | |
| if command.getName.downcase == "uptime" | |
| if sender.hasPermission("setamod.admin") then | |
| sender.sendMessage colorize(uptimeString) | |
| else | |
| sender.sendMessage colorize(NO_RIGHTS) | |
| end | |
| elsif command.getName.downcase == "prefix" | |
| if args.size > 0 | |
| if sender.hasPermission("setamod.admin") | |
| # | |
| # SET PREFIX | |
| # | |
| if args[0] == "give" | |
| if args.size == 3 | |
| if $data[:prefix][args[2]].nil? | |
| sender.sendMessage(colorize("$4Prefix $c"+args[2]+" $4existiert nicht.")) | |
| sender.sendMessage(colorize(" /prefix create NAME PREFIX")) | |
| else | |
| if $data[:player][args[1]].nil? | |
| sender.sendMessage(colorize("$4Player $c#{args[1]} $4does not exist")) | |
| else | |
| $data[:player][args[1]][:prefix] = colorize($data[:prefix][args[2]]) | |
| _save | |
| sender.sendMessage(colorize("$6Prefix für $a"+args[1]+" auf $b"+args[2]+"$a gesetzt. ~ "+$data[:prefix][args[2]])) end | |
| end | |
| else | |
| sender.sendMessage(colorize("$4Syntax:$c /prefix give PLAYER PREFIX_NAME")) | |
| end | |
| # | |
| # CREATE PREFIX | |
| # | |
| elsif args[0] == "create" | |
| if args.size == 3 | |
| exists = false | |
| exists = true if $data[:prefix][args[1]].nil? | |
| $data[:prefix][args[1]] = args[2] | |
| _save | |
| if exists | |
| sender.sendMessage(colorize("$2Yay!$6 Prefix erstellt: "+args[2]+"$6 als $a"+args[1])) | |
| else | |
| sender.sendMessage(colorize("$2Yay!$6 Prefix angepasst: "+args[2]+"$6 als $a"+args[1])) | |
| end | |
| else | |
| sender.sendMessage(colorize("$4Syntax:$c /prefix create NAME PREFIX")) | |
| end | |
| # | |
| # CHECK IF EXISTS PREFIX | |
| # | |
| elsif args[0] == "exists" || args[0] == "show" | |
| if args.size == 2 | |
| if $data[:prefix][args[1]].nil? | |
| sender.sendMessage(colorize("$4existiert nicht...")) | |
| else | |
| sender.sendMessage(colorize($data[:prefix][args[1]])) | |
| end | |
| else | |
| sender.sendMessage(colorize("$4Syntax:$c /prefix show NAME")) | |
| end | |
| end | |
| end | |
| # | |
| # USER COMMANDS | |
| # | |
| if args[0] == "list" | |
| sender.sendMessage(colorize("$dDeine Prefixe:")) | |
| $data[:has_prefix][sender.getName].each do |tag| | |
| sender.sendMessage(colorize(expand(tag, 10)+": #{expand($data[:prefix][tag], 10)}")) | |
| end | |
| elsif args[0] == "listall" | |
| sender.sendMessage(colorize("$dAlle Prefixe:")) | |
| $data[:prefix].each do |key,val| | |
| sender.sendMessage(colorize(expand(key, 10)+": #{expand(val, 10)}")) | |
| end | |
| elsif $data[:has_prefix][sender.getName].include? args[0] | |
| $data[:player][sender.getName][:prefix] = colorize($data[:prefix][args[0]]); | |
| sender.sendMessage(colorize("$aNeuer Prefix: "+$data[:prefix][args[0]])) | |
| _save | |
| end | |
| else | |
| sender.sendMessage(colorize("$a*O* $e*O* $a*O* $bPREFIX! $a*O* $e*O* $a*O*")) | |
| sender.sendMessage(colorize("$a | $dDas ultimative Prefix Plugin $a| ")) | |
| sender.sendMessage(colorize("$6 /prefix list ~ liste deiner prefixe")) | |
| sender.sendMessage(colorize("$6 /prefix NAME ~ setze prefix")) | |
| sender.sendMessage(colorize("$6 /farben ~ listet farben")) | |
| sender.sendMessage(colorize("$6 /farbe NUM ~ setzt farbe")) | |
| if sender.hasPermission("setamod.admin") | |
| sender.sendMessage(colorize("$d ADMIN COMMANDS")) | |
| sender.sendMessage(colorize("$6 /prefix create NAME PREFIX")) | |
| sender.sendMessage(colorize("$6 /prefix remove NAME")) | |
| sender.sendMessage(colorize("$6 /prefix give PLAYER NAME")) | |
| sender.sendMessage(colorize("$6 /prefix show NAME")) | |
| sender.sendMessage(colorize("$6 /prefix listall")) | |
| end | |
| end | |
| elsif command.getName.downcase == "farben" | |
| sender.sendMessage("#{colorize("$00")}, #{colorize("$11")}, #{colorize("$22")}, #{colorize("$33")}, #{colorize("$44")}, #{colorize("$55")}, #{colorize("$66")}, #{colorize("$77")}, #{colorize("$88")}, #{colorize("$99")}, #{colorize("$aa")}, #{colorize("$bb")}, #{colorize("$cc")}, #{colorize("$dd")}, #{colorize("$ee")}, #{colorize("$ff")}") | |
| elsif command.getName.downcase == "farbe" | |
| if COLORS.include? args[0] | |
| $data[:player][sender.getName][:color] = colorize("$#{args[0]}") | |
| sender.sendMessage(colorize("$#{args[0]}Neue farbe")) | |
| _save | |
| else | |
| sender.sendMessage(colorize("$cUnbekannte farbe... 1-f $d/farben")) | |
| end | |
| elsif command.getName.downcase == "burger" | |
| if args.size == 1 | |
| player = getServer.getPlayer( args[0] ) | |
| print player | |
| Permissions.setGroup(player, "User") | |
| getServer.broadcastMessage(colorize("$6Spieler $a"+args[0]+"$6 ist jetzt Bürger! *O*")) | |
| else | |
| sender.sendMessage(colorize("$4Syntax:$c /burger PLAYER_NAME")) | |
| end | |
| end | |
| true | |
| end | |
| def time; java.lang.System.currentTimeMillis / 1000; end | |
| def uptimeString | |
| diff = time - @serverStart | |
| "$dUptime: $e#{diff / 86400}d #{diff / 3600 % 24}h $b#{diff / 60 % 60}m #{diff % 60}s" | |
| end | |
| end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment