forked from LogBlock/LogBlock
Handle more relative breaking scenarios, courtesy of @Psithief
This commit is contained in:
@@ -4,6 +4,7 @@ import static de.diddiz.LogBlock.config.Config.getWorldConfig;
|
|||||||
import static de.diddiz.LogBlock.config.Config.isLogging;
|
import static de.diddiz.LogBlock.config.Config.isLogging;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.block.BlockFace;
|
||||||
import org.bukkit.block.Sign;
|
import org.bukkit.block.Sign;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
@@ -25,14 +26,20 @@ public class BlockBreakLogging extends LoggingListener
|
|||||||
final WorldConfig wcfg = getWorldConfig(event.getBlock().getWorld());
|
final WorldConfig wcfg = getWorldConfig(event.getBlock().getWorld());
|
||||||
if (wcfg != null && wcfg.isLogging(Logging.BLOCKBREAK)) {
|
if (wcfg != null && wcfg.isLogging(Logging.BLOCKBREAK)) {
|
||||||
final int type = event.getBlock().getTypeId();
|
final int type = event.getBlock().getTypeId();
|
||||||
if (wcfg.isLogging(Logging.SIGNTEXT) && (type == 63 || type == 68))
|
if (wcfg.isLogging(Logging.SIGNTEXT) && (type == 63 || type == 68)) {
|
||||||
consumer.queueSignBreak(event.getPlayer().getName(), (Sign)event.getBlock().getState());
|
consumer.queueSignBreak(event.getPlayer().getName(), (Sign)event.getBlock().getState());
|
||||||
else if (wcfg.isLogging(Logging.CHESTACCESS) && (type == 23 || type == 54 || type == 61))
|
}
|
||||||
|
else if (wcfg.isLogging(Logging.CHESTACCESS) && (type == 23 || type == 54 || type == 61)) {
|
||||||
consumer.queueContainerBreak(event.getPlayer().getName(), event.getBlock().getState());
|
consumer.queueContainerBreak(event.getPlayer().getName(), event.getBlock().getState());
|
||||||
else if (type == 79)
|
}
|
||||||
|
else if (type == 79) {
|
||||||
consumer.queueBlockReplace(event.getPlayer().getName(), event.getBlock().getState(), 9, (byte)0);
|
consumer.queueBlockReplace(event.getPlayer().getName(), event.getBlock().getState(), 9, (byte)0);
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
consumer.queueBlockBreak(event.getPlayer().getName(), event.getBlock().getState());
|
consumer.queueBlockBreak(event.getPlayer().getName(), event.getBlock().getState());
|
||||||
|
if (BukkitUtils.getRelativeTopBreakabls().contains(event.getBlock().getRelative(BlockFace.UP).getTypeId())) {
|
||||||
|
consumer.queueBlockBreak(event.getPlayer().getName(), event.getBlock().getRelative(BlockFace.UP).getState());
|
||||||
|
}
|
||||||
List<Location> nearbySigns = BukkitUtils.getBlocksNearby(event.getBlock(), BukkitUtils.getRelativeBreakables());
|
List<Location> nearbySigns = BukkitUtils.getBlocksNearby(event.getBlock(), BukkitUtils.getRelativeBreakables());
|
||||||
if(nearbySigns.size() != 0) {
|
if(nearbySigns.size() != 0) {
|
||||||
for(Location location : nearbySigns) {
|
for(Location location : nearbySigns) {
|
||||||
|
@@ -27,6 +27,7 @@ public class BukkitUtils
|
|||||||
{
|
{
|
||||||
private static final Set<Set<Integer>> blockEquivalents;
|
private static final Set<Set<Integer>> blockEquivalents;
|
||||||
private static final Set<Integer> relativeBreakable;
|
private static final Set<Integer> relativeBreakable;
|
||||||
|
private static final Set<Integer> relativeTopBreakable;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
blockEquivalents = new HashSet<Set<Integer>>(7);
|
blockEquivalents = new HashSet<Set<Integer>>(7);
|
||||||
@@ -43,6 +44,27 @@ public class BukkitUtils
|
|||||||
relativeBreakable.add(68); // Sign
|
relativeBreakable.add(68); // Sign
|
||||||
relativeBreakable.add(65); // Ladder
|
relativeBreakable.add(65); // Ladder
|
||||||
relativeBreakable.add(77); // Button
|
relativeBreakable.add(77); // Button
|
||||||
|
|
||||||
|
relativeTopBreakable = new HashSet<Integer>(19);
|
||||||
|
relativeTopBreakable.add(6); ////Vegetation start////
|
||||||
|
relativeTopBreakable.add(31); //
|
||||||
|
relativeTopBreakable.add(32); //
|
||||||
|
relativeTopBreakable.add(37); //
|
||||||
|
relativeTopBreakable.add(38); //
|
||||||
|
relativeTopBreakable.add(39); //
|
||||||
|
relativeTopBreakable.add(40); //
|
||||||
|
relativeTopBreakable.add(59); //
|
||||||
|
relativeTopBreakable.add(81); //
|
||||||
|
relativeTopBreakable.add(83); ////Vegetation end////
|
||||||
|
relativeTopBreakable.add(27); // Powered rail
|
||||||
|
relativeTopBreakable.add(28); // Detector rail
|
||||||
|
relativeTopBreakable.add(66); // Rails
|
||||||
|
relativeTopBreakable.add(55); // Redstone
|
||||||
|
relativeTopBreakable.add(70); // Stone pressure plate
|
||||||
|
relativeTopBreakable.add(72); // Wood pressure plate
|
||||||
|
relativeTopBreakable.add(78); // Snow
|
||||||
|
relativeTopBreakable.add(93); // Redstone repeater
|
||||||
|
relativeTopBreakable.add(94); // Redstone repeater
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -165,6 +187,10 @@ public class BukkitUtils
|
|||||||
public static Set<Integer> getRelativeBreakables() {
|
public static Set<Integer> getRelativeBreakables() {
|
||||||
return relativeBreakable;
|
return relativeBreakable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Set<Integer> getRelativeTopBreakabls() {
|
||||||
|
return relativeTopBreakable;
|
||||||
|
}
|
||||||
|
|
||||||
public static String entityName(Entity entity) {
|
public static String entityName(Entity entity) {
|
||||||
if (entity instanceof Player)
|
if (entity instanceof Player)
|
||||||
|
Reference in New Issue
Block a user