TotalFreedomMod/src/me/StevenLawson/TotalFreedomMod/TotalFreedomModBlockListener.java

197 lines
6.3 KiB
Java
Raw Normal View History

2011-09-23 15:45:34 +00:00
package me.StevenLawson.TotalFreedomMod;
import java.util.logging.Logger;
import org.bukkit.ChatColor;
2011-09-30 19:32:13 +00:00
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Player;
2011-09-30 19:32:13 +00:00
import org.bukkit.event.block.BlockBreakEvent;
2011-09-23 15:45:34 +00:00
import org.bukkit.event.block.BlockBurnEvent;
import org.bukkit.event.block.BlockIgniteEvent;
import org.bukkit.event.block.BlockListener;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.inventory.ItemStack;
2011-09-23 15:45:34 +00:00
public class TotalFreedomModBlockListener extends BlockListener
{
2011-09-27 15:58:00 +00:00
public static TotalFreedomMod plugin;
private static final Logger log = Logger.getLogger("Minecraft");
2011-09-23 15:45:34 +00:00
2011-09-27 15:58:00 +00:00
TotalFreedomModBlockListener(TotalFreedomMod instance)
{
plugin = instance;
}
2011-09-23 15:45:34 +00:00
2011-09-27 15:58:00 +00:00
@Override
public void onBlockBurn(BlockBurnEvent event)
{
2011-10-02 04:18:52 +00:00
if (!plugin.allowFireSpread)
2011-09-27 15:58:00 +00:00
{
event.setCancelled(true);
return;
}
}
2011-09-25 23:00:14 +00:00
2011-09-27 15:58:00 +00:00
@Override
public void onBlockIgnite(BlockIgniteEvent event)
{
2011-10-02 04:18:52 +00:00
if (!plugin.allowFirePlace)
2011-09-27 15:58:00 +00:00
{
event.setCancelled(true);
return;
}
}
2011-09-25 23:00:14 +00:00
2011-09-30 19:32:13 +00:00
@Override
public void onBlockBreak(BlockBreakEvent event)
{
2011-10-01 17:59:46 +00:00
try
2011-09-30 19:32:13 +00:00
{
2011-10-01 17:59:46 +00:00
if (plugin.nukeMonitor)
{
Player p = event.getPlayer();
2011-09-30 19:32:13 +00:00
2011-10-01 17:59:46 +00:00
Location player_pos = p.getLocation();
Location block_pos = event.getBlock().getLocation();
2011-09-30 19:32:13 +00:00
2011-10-01 17:59:46 +00:00
if (player_pos.distance(block_pos) > plugin.nukeMonitorRange)
{
p.setOp(false);
p.setGameMode(GameMode.SURVIVAL);
p.getInventory().clear();
plugin.tfBroadcastMessage(p.getName() + " has been flagged for possible freecam nuking.", ChatColor.RED);
event.setCancelled(true);
return;
}
TFUserInfo playerdata = (TFUserInfo) plugin.userinfo.get(p);
if (playerdata != null)
{
playerdata.incrementBlockDestroyCount();
2011-09-30 19:32:13 +00:00
2011-10-01 17:59:46 +00:00
if (playerdata.getBlockDestroyCount() > plugin.nukeMonitorCount)
{
plugin.tfBroadcastMessage(p.getName() + " is breaking blocks too fast!", ChatColor.RED);
p.setOp(false);
p.setGameMode(GameMode.SURVIVAL);
p.getInventory().clear();
event.setCancelled(true);
return;
}
}
else
{
playerdata = new TFUserInfo();
playerdata.incrementBlockDestroyCount();
plugin.userinfo.put(p, playerdata);
}
2011-09-30 19:32:13 +00:00
}
}
2011-10-01 17:59:46 +00:00
catch (Exception ex)
{
log.info("Exception in TFM Block Listener onBlockBreak: " + ex.getMessage());
}
2011-09-30 19:32:13 +00:00
}
2011-09-27 15:58:00 +00:00
@Override
public void onBlockPlace(BlockPlaceEvent event)
{
ItemStack is = new ItemStack(event.getBlockPlaced().getType(), 1, (short) 0, event.getBlockPlaced().getData());
2011-10-02 04:18:52 +00:00
Player p = event.getPlayer();
2011-09-27 15:58:00 +00:00
if (is.getType() == Material.LAVA || is.getType() == Material.STATIONARY_LAVA)
{
2011-10-02 04:18:52 +00:00
if (plugin.allowLavaPlace)
{
log.info(String.format("%s placed lava @ %s",
p.getName(),
plugin.formatLocation(event.getBlock().getLocation())));
2011-10-02 04:18:52 +00:00
p.getInventory().clear(p.getInventory().getHeldItemSlot());
}
else
{
int slot = p.getInventory().getHeldItemSlot();
ItemStack heldItem = new ItemStack(Material.COOKIE, 1);
p.getInventory().setItem(slot, heldItem);
2011-10-02 04:18:52 +00:00
p.sendMessage(ChatColor.GOLD + "LAVA NO FUN, YOU EAT COOKIE INSTEAD, NO?");
2011-10-02 04:18:52 +00:00
event.setCancelled(true);
return;
}
2011-09-27 15:58:00 +00:00
}
else if (is.getType() == Material.WATER || is.getType() == Material.STATIONARY_WATER)
{
2011-10-02 04:18:52 +00:00
if (plugin.allowWaterPlace)
{
log.info(String.format("%s placed water @ %s",
p.getName(),
plugin.formatLocation(event.getBlock().getLocation())));
2011-10-02 04:18:52 +00:00
p.getInventory().clear(p.getInventory().getHeldItemSlot());
}
else
{
int slot = p.getInventory().getHeldItemSlot();
ItemStack heldItem = new ItemStack(Material.COOKIE, 1);
p.getInventory().setItem(slot, heldItem);
2011-10-02 04:18:52 +00:00
p.sendMessage(ChatColor.GOLD + "Does this look like a waterpark to you?");
2011-10-02 04:18:52 +00:00
event.setCancelled(true);
return;
}
2011-09-27 15:58:00 +00:00
}
2011-10-02 04:18:52 +00:00
else if (is.getType() == Material.FIRE)
2011-09-27 15:58:00 +00:00
{
2011-10-02 04:18:52 +00:00
if (plugin.allowFirePlace)
2011-09-27 15:58:00 +00:00
{
2011-10-02 04:18:52 +00:00
log.info(String.format("%s placed fire @ %s",
p.getName(),
plugin.formatLocation(event.getBlock().getLocation())));
2011-10-02 04:18:52 +00:00
p.getInventory().clear(p.getInventory().getHeldItemSlot());
}
else
{
int slot = p.getInventory().getHeldItemSlot();
ItemStack heldItem = new ItemStack(Material.COOKIE, 1);
2011-10-02 04:18:52 +00:00
p.getInventory().setItem(slot, heldItem);
2011-10-02 04:18:52 +00:00
p.sendMessage(ChatColor.GOLD + "It's gettin (too) hot in here...");
2011-09-27 15:58:00 +00:00
event.setCancelled(true);
return;
}
2011-10-02 04:18:52 +00:00
}
else if (is.getType() == Material.TNT)
{
if (plugin.allowExplosions)
{
log.info(String.format("%s placed TNT @ %s",
2011-09-27 15:58:00 +00:00
p.getName(),
plugin.formatLocation(event.getBlock().getLocation())));
2011-10-02 04:18:52 +00:00
p.getInventory().clear(p.getInventory().getHeldItemSlot());
}
else
{
int slot = p.getInventory().getHeldItemSlot();
ItemStack heldItem = new ItemStack(Material.COOKIE, 1);
p.getInventory().setItem(slot, heldItem);
p.sendMessage(ChatColor.GRAY + "TNT is currently disabled.");
event.setCancelled(true);
return;
}
2011-09-27 15:58:00 +00:00
}
}
2011-09-23 15:45:34 +00:00
}