mirror of
https://github.com/SPAWNRYS-ban/FUCK-CustomDiscs.git
synced 2025-12-10 05:19:43 +05:00
Enable Hopper Minecart to pick custom discs while being played
This commit is contained in:
@@ -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
|
||||
@@ -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.)
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -152,4 +152,4 @@ public class JukeBox implements Listener{
|
||||
playerManager.stopLocationalAudio(block.getLocation());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user