Package org.yi.acru.bukkit.Lockette

Source Code of org.yi.acru.bukkit.Lockette.LockettePrefixListener

//
// This file is a component of Lockette for Bukkit, and was written by Acru Jovian.
// Distributed under the The Non-Profit Open Software License version 3.0 (NPOSL-3.0)
// http://www.opensource.org/licenses/NOSL3.0
//


package org.yi.acru.bukkit.Lockette;

// Imports.
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.Sign;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.plugin.PluginManager;

import org.bukkit.event.block.SignChangeEvent;



public class LockettePrefixListener implements Listener{
  private static Lockette    plugin;
 
 
  public LockettePrefixListener(Lockette instance){
    plugin = instance;
  }
 
 
  protected void registerEvents(){
    PluginManager  pm = plugin.getServer().getPluginManager();
   
    pm.registerEvents(this, plugin);
  }
 
 
  //********************************************************************************************************************
  // Start of event section
 
 
  @EventHandler(priority = EventPriority.LOWEST)
  public void onSignChange(SignChangeEvent event){
    //if(event.isCancelled()) return;
   
    Block    block = event.getBlock();
    Player    player = event.getPlayer();
    boolean    typeWallSign = (block.getTypeId() == Material.WALL_SIGN.getId());
    boolean    typeSignPost = (block.getTypeId() == Material.SIGN_POST.getId());
   
   
    // Check to see if it is a sign change packet for an existing protected sign.
    // No longer needed in builds around 556+, but I am leaving this here for now.
    // Needed again as of build 1093...  :<
   
    if(typeWallSign){
      Sign    sign = (Sign) block.getState();
      String    text = sign.getLine(0).replaceAll("(?i)\u00A7[0-F]", "");
     
      if(text.equalsIgnoreCase("[Private]") || text.equalsIgnoreCase(Lockette.altPrivate) ||
          text.equalsIgnoreCase("[More Users]") || text.equalsIgnoreCase(Lockette.altMoreUsers)){
        // Okay, sign already exists and someone managed to send an event to replace.
        // Cancel it!  Also, set event text to sign text, just in case.
        // And check for this later in queue.
       
        event.setCancelled(true);
        event.setLine(0, sign.getLine(0));
        event.setLine(1, sign.getLine(1));
        event.setLine(2, sign.getLine(2));
        event.setLine(3, sign.getLine(3));
        Lockette.log.info("[" + plugin.getDescription().getName() + "] " + player.getName() + " just tried to change a non-editable sign. (Bukkit bug, or plugin conflict?)");
        return;
      }
    }
    else if(typeSignPost){
     
    }
    else{
      // Not a sign, wtf!
      event.setCancelled(true);
      Lockette.log.info("[" + plugin.getDescription().getName() + "] " + player.getName() + " just tried to set text for a non-sign. (Bukkit bug, or hacked client?)");
      return;
    }

    /*
    // Alternative: Enforce a blank sign, as bukkit catches spoofed packets now.
    // No longer needed, as the findOwner now has an ignore block.
   
    if(typeWallSign || (block.getTypeId() == Material.SIGN_POST.getId())){
      Sign    sign = (Sign) block.getState();
      String    text = sign.getLine(0).replaceAll("(?i)\u00A7[0-F]", "").toLowerCase();
     
      if(text.equals("[private]") || text.equals(Lockette.altPrivate) || text.equals("[more users]") || text.equals(Lockette.altMoreUsers)){
        sign.setLine(0, "");
        sign.setLine(1, "");
        sign.setLine(2, "");
        sign.setLine(3, "");
        sign.update(true);
      }
    }
    */
   

    // Colorizer code.
   
    if(Lockette.colorTags){
      event.setLine(0, event.getLine(0).replaceAll("&([0-9A-Fa-f])", "\u00A7$1"));
      event.setLine(1, event.getLine(1).replaceAll("&([0-9A-Fa-f])", "\u00A7$1"));
      event.setLine(2, event.getLine(2).replaceAll("&([0-9A-Fa-f])", "\u00A7$1"));
      event.setLine(3, event.getLine(3).replaceAll("&([0-9A-Fa-f])", "\u00A7$1"));
    }
  }
}

TOP

Related Classes of org.yi.acru.bukkit.Lockette.LockettePrefixListener

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.