Fixed Issues with Hoppers

This commit is contained in:
Navoei
2024-06-16 17:05:56 -05:00
parent 0d03507d5e
commit faf480f818
3 changed files with 12 additions and 21 deletions

View File

@@ -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

View File

@@ -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;
}
}

View File

@@ -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);