mirror of
https://github.com/PlayPro/CoreProtect.git
synced 2025-02-18 02:02:29 +01:00
Added logging and inventory rollback support for players breaking items
This commit is contained in:
parent
5494bce0fc
commit
45f9f4316e
@ -39,6 +39,7 @@ import net.coreprotect.listener.player.PlayerDeathListener;
|
||||
import net.coreprotect.listener.player.PlayerDropItemListener;
|
||||
import net.coreprotect.listener.player.PlayerInteractEntityListener;
|
||||
import net.coreprotect.listener.player.PlayerInteractListener;
|
||||
import net.coreprotect.listener.player.PlayerItemBreakListener;
|
||||
import net.coreprotect.listener.player.PlayerJoinListener;
|
||||
import net.coreprotect.listener.player.PlayerQuitListener;
|
||||
import net.coreprotect.listener.player.PlayerTakeLecternBookListener;
|
||||
@ -86,6 +87,7 @@ public final class ListenerHandler {
|
||||
// Player Listeners
|
||||
pluginManager.registerEvents(new ArmorStandManipulateListener(), plugin);
|
||||
pluginManager.registerEvents(new CraftItemListener(), plugin);
|
||||
pluginManager.registerEvents(new FoodLevelChangeListener(), plugin);
|
||||
pluginManager.registerEvents(new InventoryChangeListener(), plugin);
|
||||
pluginManager.registerEvents(new PlayerBucketEmptyListener(), plugin);
|
||||
pluginManager.registerEvents(new PlayerBucketFillListener(), plugin);
|
||||
@ -93,12 +95,12 @@ public final class ListenerHandler {
|
||||
pluginManager.registerEvents(new PlayerDeathListener(), plugin);
|
||||
pluginManager.registerEvents(new PlayerDropItemListener(), plugin);
|
||||
pluginManager.registerEvents(new PlayerPickupArrowListener(), plugin);
|
||||
pluginManager.registerEvents(new FoodLevelChangeListener(), plugin);
|
||||
pluginManager.registerEvents(new PlayerInteractEntityListener(), plugin);
|
||||
pluginManager.registerEvents(new PlayerInteractListener(), plugin);
|
||||
pluginManager.registerEvents(new PlayerItemBreakListener(), plugin);
|
||||
pluginManager.registerEvents(new PlayerJoinListener(), plugin);
|
||||
pluginManager.registerEvents(new PlayerQuitListener(), plugin);
|
||||
pluginManager.registerEvents(new SignChangeListener(), plugin);
|
||||
pluginManager.registerEvents(new PlayerInteractListener(), plugin);
|
||||
pluginManager.registerEvents(new PlayerTakeLecternBookListener(), 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…
Reference in New Issue
Block a user