Skip to content

Commit

Permalink
Fix lectern logging
Browse files Browse the repository at this point in the history
  • Loading branch information
Brokkonaut committed May 28, 2019
1 parent da692ed commit 9eef03a
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 3 deletions.
2 changes: 1 addition & 1 deletion src/main/java/de/diddiz/LogBlock/BlockChange.java
Expand Up @@ -143,7 +143,7 @@ public String toString() {
} 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) {
Expand Down
Expand Up @@ -29,7 +29,7 @@ public void onBlockPlace(BlockPlaceEvent event) {
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);
Expand Down
27 changes: 26 additions & 1 deletion src/main/java/de/diddiz/LogBlock/listeners/LecternLogging.java
Expand Up @@ -6,24 +6,49 @@
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());
if (wcfg != null && wcfg.isLogging(Logging.LECTERNBOOKCHANGE)) {
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);
}
}
Expand Down

0 comments on commit 9eef03a

Please sign in to comment.