package com.samistine.samistinesignfix; import java.util.Arrays; import java.util.logging.Level; import org.bukkit.block.Block; import org.bukkit.block.BlockState; import org.bukkit.block.Sign; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.block.SignChangeEvent; import org.bukkit.event.world.ChunkLoadEvent; import org.bukkit.plugin.java.JavaPlugin; public class SamistineSignFix extends JavaPlugin implements Listener { @Override public void onEnable() { getServer().getPluginManager().registerEvents(this, this); } @EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST) public void onChunkLoad(ChunkLoadEvent e) { for (BlockState state : e.getChunk().getTileEntities()){ if (state instanceof Sign) { final Sign sign = (Sign) state; if (sign.getLines().length() > 100) { getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() { public void run() { editSign(sign); } }); } } } } @EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST) public void onSignChangeEvent(SignChangeEvent e) { if (e.getLines() > 100) { e.setCancelled(true); Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() { @Override public void run() { editSign((Sign) e.getBlock().getState()); } }); } } public void editSign(final Sign sign) { if (sign != null && sign.getChunk().isLoaded()) { getLogger().log(Level.WARNING, "Invalid signs at {0} :", sign.getLocation().toString()); sign.setLine(0, "YOU CAN'T DO THAT"); sign.setLine(1, "Protected By"); sign.setLine(2, "SamistineSignFix"); sign.setLine(3, "Have a nice day"); sign.update(); } } }