forked from LogBlock/LogBlock
Fix lectern logging
This commit is contained in:
@ -143,7 +143,7 @@ public class BlockChange implements LookupCacheElement {
|
||||
} else if (type.getMaterial() == Material.DAYLIGHT_DETECTOR) {
|
||||
msg.append("set ").append(type.getMaterial().name()).append(" to ").append(((DaylightDetector) type).isInverted() ? "inverted" : "normal");
|
||||
} else if (type instanceof Lectern) {
|
||||
msg.append("changed the book on a ").append(type.getMaterial().name()).append(" to").append(replacedDetails.length() == 0 ? "empty" : replacedDetails);
|
||||
msg.append("changed the book on a ").append(type.getMaterial().name()).append(" to").append(typeDetails.length() == 0 ? " empty" : typeDetails);
|
||||
} else if (type instanceof Powerable) {
|
||||
msg.append("stepped on ").append(type.getMaterial().name());
|
||||
} else if (type.getMaterial() == Material.TRIPWIRE) {
|
||||
|
@ -29,7 +29,7 @@ public class BlockPlaceLogging extends LoggingListener {
|
||||
final BlockState before = event.getBlockReplacedState();
|
||||
final BlockState after = event.getBlockPlaced().getState();
|
||||
final Actor actor = Actor.actorFromEntity(event.getPlayer());
|
||||
if (before.getType() == Material.LECTERN && after.getType() == Material.LECTERN && !Config.isLogging(event.getBlock().getWorld(), Logging.LECTERNBOOKCHANGE)) {
|
||||
if (before.getType() == Material.LECTERN && after.getType() == Material.LECTERN) {
|
||||
return;
|
||||
}
|
||||
LoggingUtil.smartLogBlockPlace(consumer, actor, before, after);
|
||||
|
@ -6,16 +6,37 @@ import de.diddiz.LogBlock.Actor;
|
||||
import de.diddiz.LogBlock.LogBlock;
|
||||
import de.diddiz.LogBlock.Logging;
|
||||
import de.diddiz.LogBlock.config.WorldConfig;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.BlockState;
|
||||
import org.bukkit.block.Lectern;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.player.PlayerTakeLecternBookEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class LecternLogging extends LoggingListener {
|
||||
public LecternLogging(LogBlock lb) {
|
||||
super(lb);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
public void onBlockPlace(BlockPlaceEvent event) {
|
||||
final WorldConfig wcfg = getWorldConfig(event.getPlayer().getWorld());
|
||||
if (wcfg != null && wcfg.isLogging(Logging.LECTERNBOOKCHANGE)) {
|
||||
final BlockState before = event.getBlockReplacedState();
|
||||
final BlockState after = event.getBlockPlaced().getState();
|
||||
if (before.getType() == Material.LECTERN && after.getType() == Material.LECTERN) {
|
||||
Lectern lecternBefore = (Lectern) before.getBlock().getState();
|
||||
ItemStack book = lecternBefore.getSnapshotInventory().getItem(0);
|
||||
lecternBefore.getSnapshotInventory().setItem(0, null);
|
||||
lecternBefore.setBlockData(before.getBlockData());
|
||||
consumer.queueBlockReplace(Actor.actorFromEntity(event.getPlayer()), lecternBefore, after);
|
||||
lecternBefore.getSnapshotInventory().setItem(0, book);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
public void onPlayerTakeLecternBook(PlayerTakeLecternBookEvent event) {
|
||||
final WorldConfig wcfg = getWorldConfig(event.getPlayer().getWorld());
|
||||
@ -23,7 +44,11 @@ public class LecternLogging extends LoggingListener {
|
||||
Lectern oldState = event.getLectern();
|
||||
Lectern newState = (Lectern) oldState.getBlock().getState();
|
||||
newState.getSnapshotInventory().setItem(0, null);
|
||||
|
||||
org.bukkit.block.data.type.Lectern oldBlockData = (org.bukkit.block.data.type.Lectern) oldState.getBlockData();
|
||||
org.bukkit.block.data.type.Lectern blockData = (org.bukkit.block.data.type.Lectern) Material.LECTERN.createBlockData();
|
||||
blockData.setFacing(oldBlockData.getFacing());
|
||||
blockData.setPowered(oldBlockData.isPowered());
|
||||
newState.setBlockData(blockData);
|
||||
consumer.queueBlockReplace(Actor.actorFromEntity(event.getPlayer()), oldState, newState);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user