Added logging and inventory rollback support for players breaking items
This commit is contained in:
parent
5494bce0fc
commit
45f9f4316e
2 changed files with 46 additions and 2 deletions
|
|
@ -39,6 +39,7 @@ import net.coreprotect.listener.player.PlayerDeathListener;
|
||||||
import net.coreprotect.listener.player.PlayerDropItemListener;
|
import net.coreprotect.listener.player.PlayerDropItemListener;
|
||||||
import net.coreprotect.listener.player.PlayerInteractEntityListener;
|
import net.coreprotect.listener.player.PlayerInteractEntityListener;
|
||||||
import net.coreprotect.listener.player.PlayerInteractListener;
|
import net.coreprotect.listener.player.PlayerInteractListener;
|
||||||
|
import net.coreprotect.listener.player.PlayerItemBreakListener;
|
||||||
import net.coreprotect.listener.player.PlayerJoinListener;
|
import net.coreprotect.listener.player.PlayerJoinListener;
|
||||||
import net.coreprotect.listener.player.PlayerQuitListener;
|
import net.coreprotect.listener.player.PlayerQuitListener;
|
||||||
import net.coreprotect.listener.player.PlayerTakeLecternBookListener;
|
import net.coreprotect.listener.player.PlayerTakeLecternBookListener;
|
||||||
|
|
@ -86,6 +87,7 @@ public final class ListenerHandler {
|
||||||
// Player Listeners
|
// Player Listeners
|
||||||
pluginManager.registerEvents(new ArmorStandManipulateListener(), plugin);
|
pluginManager.registerEvents(new ArmorStandManipulateListener(), plugin);
|
||||||
pluginManager.registerEvents(new CraftItemListener(), plugin);
|
pluginManager.registerEvents(new CraftItemListener(), plugin);
|
||||||
|
pluginManager.registerEvents(new FoodLevelChangeListener(), plugin);
|
||||||
pluginManager.registerEvents(new InventoryChangeListener(), plugin);
|
pluginManager.registerEvents(new InventoryChangeListener(), plugin);
|
||||||
pluginManager.registerEvents(new PlayerBucketEmptyListener(), plugin);
|
pluginManager.registerEvents(new PlayerBucketEmptyListener(), plugin);
|
||||||
pluginManager.registerEvents(new PlayerBucketFillListener(), plugin);
|
pluginManager.registerEvents(new PlayerBucketFillListener(), plugin);
|
||||||
|
|
@ -93,12 +95,12 @@ public final class ListenerHandler {
|
||||||
pluginManager.registerEvents(new PlayerDeathListener(), plugin);
|
pluginManager.registerEvents(new PlayerDeathListener(), plugin);
|
||||||
pluginManager.registerEvents(new PlayerDropItemListener(), plugin);
|
pluginManager.registerEvents(new PlayerDropItemListener(), plugin);
|
||||||
pluginManager.registerEvents(new PlayerPickupArrowListener(), plugin);
|
pluginManager.registerEvents(new PlayerPickupArrowListener(), plugin);
|
||||||
pluginManager.registerEvents(new FoodLevelChangeListener(), plugin);
|
|
||||||
pluginManager.registerEvents(new PlayerInteractEntityListener(), plugin);
|
pluginManager.registerEvents(new PlayerInteractEntityListener(), plugin);
|
||||||
|
pluginManager.registerEvents(new PlayerInteractListener(), plugin);
|
||||||
|
pluginManager.registerEvents(new PlayerItemBreakListener(), plugin);
|
||||||
pluginManager.registerEvents(new PlayerJoinListener(), plugin);
|
pluginManager.registerEvents(new PlayerJoinListener(), plugin);
|
||||||
pluginManager.registerEvents(new PlayerQuitListener(), plugin);
|
pluginManager.registerEvents(new PlayerQuitListener(), plugin);
|
||||||
pluginManager.registerEvents(new SignChangeListener(), plugin);
|
pluginManager.registerEvents(new SignChangeListener(), plugin);
|
||||||
pluginManager.registerEvents(new PlayerInteractListener(), plugin);
|
|
||||||
pluginManager.registerEvents(new PlayerTakeLecternBookListener(), plugin);
|
pluginManager.registerEvents(new PlayerTakeLecternBookListener(), plugin);
|
||||||
pluginManager.registerEvents(new ProjectileLaunchListener(), plugin);
|
pluginManager.registerEvents(new ProjectileLaunchListener(), plugin);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
package net.coreprotect.listener.player;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.player.PlayerItemBreakEvent;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import net.coreprotect.config.Config;
|
||||||
|
import net.coreprotect.config.ConfigHandler;
|
||||||
|
import net.coreprotect.consumer.Queue;
|
||||||
|
|
||||||
|
public final class PlayerItemBreakListener extends Queue implements Listener {
|
||||||
|
|
||||||
|
protected static void playerBreakItem(Location location, String user, ItemStack itemStack) {
|
||||||
|
if (!Config.getConfig(location.getWorld()).ITEM_TRANSACTIONS || itemStack == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String loggingItemId = user.toLowerCase(Locale.ROOT) + "." + location.getBlockX() + "." + location.getBlockY() + "." + location.getBlockZ();
|
||||||
|
int itemId = getItemId(loggingItemId);
|
||||||
|
|
||||||
|
List<ItemStack> list = ConfigHandler.itemsBreak.getOrDefault(loggingItemId, new ArrayList<>());
|
||||||
|
list.add(itemStack.clone());
|
||||||
|
ConfigHandler.itemsBreak.put(loggingItemId, list);
|
||||||
|
|
||||||
|
int time = (int) (System.currentTimeMillis() / 1000L) + 1;
|
||||||
|
Queue.queueItemTransaction(user, location.clone(), time, 0, itemId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||||
|
protected void onPlayerItemBreak(PlayerItemBreakEvent event) {
|
||||||
|
ItemStack itemStack = event.getBrokenItem();
|
||||||
|
playerBreakItem(event.getPlayer().getLocation(), event.getPlayer().getName(), itemStack);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue