Skip to content

Instantly share code, notes, and snippets.

@NigelThorne
Created October 7, 2012 08:00
Show Gist options
  • Save NigelThorne/3847484 to your computer and use it in GitHub Desktop.
Save NigelThorne/3847484 to your computer and use it in GitHub Desktop.
PurpleOp0.2
require 'java'
module Purugin
module Event
# FIXME: This only handles normal priority. Real fix is to generate these on demand versus up
# front. We can reify what we need. This will also fix custom event types.
require 'jruby/core_ext'
import "org.kitteh.tag.TagAPI"
class AsyncPlayerChatEventListener
include org.bukkit.event.Listener
def initialize(&code); @code = code; end
def on_event(event); @code.call(event); end
add_method_signature 'on_event', [java.lang.Void::TYPE, org.bukkit.event.player.AsyncPlayerChatEvent]
add_method_annotation 'on_event', org.bukkit.event.EventHandler => {}
become_java!
end
EVENT_NAME_TO_LISTENER[:async_player_chat] = AsyncPlayerChatEventListener
class PlayerReceiveNameTagEventListener
include org.bukkit.event.Listener
def initialize(&code); @code = code; end
def on_event(event); @code.call(event); end
add_method_signature 'on_event', [java.lang.Void::TYPE, org.kitteh.tag.PlayerReceiveNameTagEvent]
add_method_annotation 'on_event', org.bukkit.event.EventHandler => {}
become_java!
end
EVENT_NAME_TO_LISTENER[:player_receive_name_tag] = PlayerReceiveNameTagEventListener
end
end
class PurpleOpPlugin
include Purugin::Plugin, Purugin::Colors
description( 'PurpleOp', 0.3 )
required :TagAPI
def player_color(player)
return ChatColor::LIGHT_PURPLE if @owners.include? player.name
return ChatColor::RED if player.is_op?
return ChatColor::DARK_AQUA if @moderator.include? player.name
return ChatColor::GOLD if @donators.include? player.name
ChatColor::WHITE
end
def on_enable
@owners = (config.get!("purpleop.owners", "")).split(",")
@moderator = (config.get!("purpleop.moderator", "")).split(",")
@donators = (config.get!("purpleop.donators", "")).split(",")
event(:async_player_chat) do |e|
e.format = "< #{color(player_color(e.player),"%1$s")} > %2$s"
end
event(:player_receive_name_tag) do |e|
e.tag = color(player_color(event.named_player),ChatColor.strip_color(event.named_player.name));
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment