From faf480f818c76829a9184f7b3b51ba62da8e239e Mon Sep 17 00:00:00 2001 From: Navoei Date: Sun, 16 Jun 2024 17:05:56 -0500 Subject: [PATCH] Fixed Issues with Hoppers --- gradle.properties | 2 +- .../customdiscsplugin/HopperManager.java | 29 ++++++------------- .../customdiscsplugin/PlayerManager.java | 2 ++ 3 files changed, 12 insertions(+), 21 deletions(-) diff --git a/gradle.properties b/gradle.properties index a9a39d1..708de7a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,6 +11,6 @@ mod_id=customdiscsplugin # Target an older API to make it compatible with older versions of Simple Voice Chat voicechat_api_version=2.5.0 -plugin_version=2.6 +plugin_version=2.6.1 maven_group=me.Navoei.customdiscsplugin archives_base_name=custom-discs \ No newline at end of file diff --git a/src/main/java/me/Navoei/customdiscsplugin/HopperManager.java b/src/main/java/me/Navoei/customdiscsplugin/HopperManager.java index 7703ec7..69b316e 100644 --- a/src/main/java/me/Navoei/customdiscsplugin/HopperManager.java +++ b/src/main/java/me/Navoei/customdiscsplugin/HopperManager.java @@ -2,18 +2,13 @@ package me.Navoei.customdiscsplugin; import me.Navoei.customdiscsplugin.language.Lang; import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.TextComponent; -import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; -import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.NamespacedKey; import org.bukkit.block.Block; -import org.bukkit.block.BlockFace; import org.bukkit.block.BlockState; import org.bukkit.block.Jukebox; -import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; @@ -24,7 +19,6 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.persistence.PersistentDataType; import java.nio.file.Path; -import java.util.Arrays; import java.util.Objects; public class HopperManager implements Listener { @@ -69,22 +63,14 @@ public class HopperManager implements Listener { if (block == null) return; if (!block.getLocation().getChunk().isLoaded()) return; if (!block.getType().equals(Material.JUKEBOX)) return; - if (!block.getRelative(BlockFace.DOWN).getType().equals(Material.HOPPER)) return; - - Block hopperBlock = block.getRelative(BlockFace.DOWN); - org.bukkit.block.Hopper hopper = (org.bukkit.block.Hopper) hopperBlock.getState(); Jukebox jukebox = (Jukebox) block.getState(); - - InventoryMoveItemEvent event = new InventoryMoveItemEvent(jukebox.getInventory(), jukebox.getRecord(), hopper.getInventory(), false); - Bukkit.getPluginManager().callEvent(event); - - if (!event.isCancelled()) { - if (!Arrays.toString(hopper.getInventory().getContents()).contains("null")) return; - - jukebox.setRecord(new ItemStack(Material.AIR)); - block.setBlockData(jukebox.getBlockData()); + if (jukebox.isPlaying()) { + jukebox.stopPlaying(); } + //Set the block type to force an update. + block.setType(Material.JUKEBOX); + jukebox.update(true, true); } @@ -94,7 +80,9 @@ public class HopperManager implements Listener { if (blockState instanceof Jukebox jukebox) { if (!jukebox.hasRecord()) return; if (!PlayerManager.instance().isAudioPlayerPlaying(blockState.getLocation()) && isCustomMusicDisc(jukebox.getRecord())) { - discToHopper(blockState.getBlock()); + //Set the block type to force an update. + blockState.getBlock().setType(Material.JUKEBOX); + jukebox.update(true, true); } } } @@ -113,4 +101,5 @@ public class HopperManager implements Listener { return instance; } + } diff --git a/src/main/java/me/Navoei/customdiscsplugin/PlayerManager.java b/src/main/java/me/Navoei/customdiscsplugin/PlayerManager.java index 28f830a..0d707e2 100644 --- a/src/main/java/me/Navoei/customdiscsplugin/PlayerManager.java +++ b/src/main/java/me/Navoei/customdiscsplugin/PlayerManager.java @@ -83,7 +83,9 @@ public class PlayerManager { } audioPlayer.setOnStopped(() -> { + //Stuff that runs once the audio player ends. + //Stop the vanilla disc if it is playing. This ensures the hopper will pickup the disc. Bukkit.getScheduler().runTask(CustomDiscs.getInstance(), () -> HopperManager.instance().discToHopper(block)); playerMap.remove(id);