// Path: src/main/java/tc/oc/tracker/trackers/DispenserTracker.java
// public interface DispenserTracker extends Tracker {
//     boolean hasOwner(@Nonnull Entity entity);
// 
//     @Nullable OfflinePlayer getOwner(@Nonnull Entity entity);
// 
//     @Nullable OfflinePlayer setOwner(@Nonnull Entity entity, @Nullable Player player);
// 
//     boolean hasPlacer(@Nonnull Block block);
// 
//     @Nullable OfflinePlayer getPlacer(@Nonnull Block block);
// 
//     @Nullable OfflinePlayer setPlacer(@Nonnull Block block, @Nullable Player player);
// 
//     @Nonnull OfflinePlayer clearPlacer(@Nonnull Block block);
// }


import java.util.Iterator;
import org.bukkit.Material;
import org.bukkit.OfflinePlayer;
import org.bukkit.block.Block;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockDispenseEntityEvent;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.entity.EntityExplodeEvent;
import tc.oc.tracker.trackers.DispenserTracker;
package tc.oc.tracker.plugin;




public class DispenserListener implements Listener {
    private final DispenserTracker tracker;

// Path: src/main/java/tc/oc/tracker/trackers/DispenserTracker.java
// public interface DispenserTracker extends Tracker {
//     boolean hasOwner(@Nonnull Entity entity);
// 
//     @Nullable OfflinePlayer getOwner(@Nonnull Entity entity);
// 
//     @Nullable OfflinePlayer setOwner(@Nonnull Entity entity, @Nullable Player player);
// 
//     boolean hasPlacer(@Nonnull Block block);
// 
//     @Nullable OfflinePlayer getPlacer(@Nonnull Block block);
// 
//     @Nullable OfflinePlayer setPlacer(@Nonnull Block block, @Nullable Player player);
// 
//     @Nonnull OfflinePlayer clearPlacer(@Nonnull Block block);
// }


// Path: src/main/java/tc/oc/tracker/plugin/DispenserListener.java
import java.util.Iterator;
import org.bukkit.Material;
import org.bukkit.OfflinePlayer;
import org.bukkit.block.Block;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockDispenseEntityEvent;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.entity.EntityExplodeEvent;
import tc.oc.tracker.trackers.DispenserTracker;

package tc.oc.tracker.plugin;




public class DispenserListener implements Listener {
    private final DispenserTracker tracker;

    public DispenserListener(DispenserTracker tracker) {