diff --git a/gradle.properties b/gradle.properties index 4b66b98..49e9262 100644 --- a/gradle.properties +++ b/gradle.properties @@ -12,6 +12,6 @@ mod_id=customdiscsplugin voicechat_api_version=2.5.0 command_api_version=9.5.3 -plugin_version=3.2a +plugin_version=3.2.1a maven_group=me.Navoei.customdiscsplugin archives_base_name=custom-discs \ No newline at end of file diff --git a/readme.md b/readme.md index 53aee0e..c3bfb2d 100644 --- a/readme.md +++ b/readme.md @@ -1,4 +1,4 @@ -# Custom Discs v3.2a for Paper 1.21.1 ("a" for Athar's fork release from the original plugin here : https://github.com/Navoei/CustomDiscs ) +# Custom Discs v3.2.1a for Paper 1.21.1 ("a" for Athar's fork release from the original plugin here : https://github.com/Navoei/CustomDiscs ) A Paper fork of henkelmax's Audio Player. - Play custom music discs using the Simple Voice Chat API. (The voice chat mod is required on the client and server.) diff --git a/src/main/java/me/Navoei/customdiscsplugin/CustomDiscs.java b/src/main/java/me/Navoei/customdiscsplugin/CustomDiscs.java index 596d6a3..09b1aa3 100644 --- a/src/main/java/me/Navoei/customdiscsplugin/CustomDiscs.java +++ b/src/main/java/me/Navoei/customdiscsplugin/CustomDiscs.java @@ -150,7 +150,7 @@ public final class CustomDiscs extends JavaPlugin { } } catch (IOException e) { e.printStackTrace(); // So they notice - log.severe("Failed to create lang.yml for MyHomes."); + log.severe("Failed to create lang.yml for CustomDiscs."); log.severe("Now disabling..."); this.setEnabled(false); // Without it loaded, we can't send them messages } @@ -167,7 +167,7 @@ public final class CustomDiscs extends JavaPlugin { try { conf.save(getLangFile()); } catch (IOException e) { - log.log(Level.WARNING, "Failed to save lang.yml for MyHomes"); + log.log(Level.WARNING, "Failed to save lang.yml for CustomDiscs"); log.log(Level.WARNING, "Now disabling..."); e.printStackTrace(); } diff --git a/src/main/java/me/Navoei/customdiscsplugin/HopperManager.java b/src/main/java/me/Navoei/customdiscsplugin/HopperManager.java index 2c36dc5..3265dcd 100644 --- a/src/main/java/me/Navoei/customdiscsplugin/HopperManager.java +++ b/src/main/java/me/Navoei/customdiscsplugin/HopperManager.java @@ -8,7 +8,7 @@ import org.bukkit.Material; import org.bukkit.NamespacedKey; import org.bukkit.block.Block; import org.bukkit.block.BlockState; -import org.bukkit.block.Container; +//import org.bukkit.block.Container; import org.bukkit.block.Jukebox; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -24,16 +24,24 @@ import org.bukkit.persistence.PersistentDataType; import java.nio.file.Path; import java.util.Objects; +import org.bukkit.entity.minecart.HopperMinecart; +import org.bukkit.inventory.InventoryHolder; + +// Used only if logger is needed +//import java.util.logging.Logger; +//import org.bukkit.Bukkit; public class HopperManager implements Listener { CustomDiscs customDiscs = CustomDiscs.getInstance(); PlayerManager playerManager = PlayerManager.instance(); + + //private static final Logger logger = Bukkit.getLogger(); // or Logger.getLogger("Minecraft"); @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onJukeboxInsertFromHopper(InventoryMoveItemEvent event) { - + //logger.warning("Enter : onJukeboxInsertFromHopper"); if (event.getDestination().getLocation() == null) return; if (!event.getDestination().getType().equals(InventoryType.JUKEBOX)) return; if (!isCustomMusicDisc(event.getItem())) return; @@ -68,18 +76,28 @@ public class HopperManager implements Listener { @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onJukeboxEjectToHopper(InventoryMoveItemEvent event) { + //logger.warning("Enter : onJukeboxEjectToHopper"); + InventoryHolder holderSource = event.getSource().getHolder(); + InventoryHolder holderDestination = event.getDestination().getHolder(); + if (event.getSource().getLocation() == null) return; if (!event.getSource().getType().equals(InventoryType.JUKEBOX)) return; if (event.getItem().getItemMeta() == null) return; if (!isCustomMusicDisc(event.getItem())) return; - event.setCancelled(playerManager.isAudioPlayerPlaying(event.getSource().getLocation())); + if (holderDestination instanceof HopperMinecart) { + discToHopper(((BlockState) holderSource).getBlock()); + stopDiscOnEject(((BlockState) holderSource).getBlock()); + } else { + event.setCancelled(playerManager.isAudioPlayerPlaying(event.getSource().getLocation())); + } + } public void discToHopper(Block block) { - + //logger.warning("Enter : discToHopper"); if (block == null) return; if (!block.getLocation().getChunk().isLoaded()) return; if (!block.getType().equals(Material.JUKEBOX)) return; @@ -95,6 +113,7 @@ public class HopperManager implements Listener { @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onChunkLoad(ChunkLoadEvent event) { + //logger.warning("Enter : onChunkLoad"); for (BlockState blockState : event.getChunk().getTileEntities()) { if (blockState instanceof Jukebox jukebox) { if (!jukebox.hasRecord()) return; @@ -108,12 +127,18 @@ public class HopperManager implements Listener { } private boolean isCustomMusicDisc(ItemStack item) { + //logger.warning("Enter : isCustomMusicDisc"); return item.getItemMeta().getPersistentDataContainer().has(new NamespacedKey(customDiscs, "customdisc"), PersistentDataType.STRING); } + + private void stopDiscOnEject(Block block) { + playerManager.stopLocationalAudio(block.getLocation()); + } private static HopperManager instance; public static HopperManager instance() { + //logger.warning("Enter : HopperManager Instance"); if (instance == null) { instance = new HopperManager(); } diff --git a/src/main/java/me/Navoei/customdiscsplugin/event/JukeBox.java b/src/main/java/me/Navoei/customdiscsplugin/event/JukeBox.java index 075a15c..45fa637 100644 --- a/src/main/java/me/Navoei/customdiscsplugin/event/JukeBox.java +++ b/src/main/java/me/Navoei/customdiscsplugin/event/JukeBox.java @@ -152,4 +152,4 @@ public class JukeBox implements Listener{ playerManager.stopLocationalAudio(block.getLocation()); } -} +} \ No newline at end of file