mirror of
https://github.com/SPAWNRYS-ban/FUCK-CustomDiscs.git
synced 2025-12-10 13:30:24 +05:00
99 lines
3.5 KiB
Java
99 lines
3.5 KiB
Java
package me.Navoei.customdiscsplugin;
|
|
|
|
import com.comphenix.protocol.PacketType;
|
|
import com.comphenix.protocol.ProtocolLibrary;
|
|
import com.comphenix.protocol.ProtocolManager;
|
|
import com.comphenix.protocol.events.ListenerPriority;
|
|
import com.comphenix.protocol.events.PacketAdapter;
|
|
import com.comphenix.protocol.events.PacketContainer;
|
|
import com.comphenix.protocol.events.PacketEvent;
|
|
import de.maxhenkel.voicechat.api.BukkitVoicechatService;
|
|
import me.Navoei.customdiscsplugin.command.CommandManager;
|
|
import me.Navoei.customdiscsplugin.event.JukeBox;
|
|
import org.apache.logging.log4j.LogManager;
|
|
import org.apache.logging.log4j.Logger;
|
|
import org.bukkit.NamespacedKey;
|
|
import org.bukkit.block.Jukebox;
|
|
import org.bukkit.persistence.PersistentDataType;
|
|
import org.bukkit.plugin.java.JavaPlugin;
|
|
|
|
import javax.annotation.Nullable;
|
|
import java.io.File;
|
|
import java.util.Objects;
|
|
|
|
public final class CustomDiscs extends JavaPlugin {
|
|
|
|
public static final String PLUGIN_ID = "CustomDiscs";
|
|
public static final Logger LOGGER = LogManager.getLogger(PLUGIN_ID);
|
|
static CustomDiscs instance;
|
|
|
|
@Nullable
|
|
private VoicePlugin voicechatPlugin;
|
|
|
|
public float musicDiscDistance;
|
|
public float musicDiscVolume;
|
|
|
|
@Override
|
|
public void onEnable() {
|
|
|
|
CustomDiscs.instance = this;
|
|
|
|
BukkitVoicechatService service = getServer().getServicesManager().load(BukkitVoicechatService.class);
|
|
|
|
this.saveDefaultConfig();
|
|
|
|
File musicData = new File(this.getDataFolder(), "musicdata");
|
|
if (!(musicData.exists())) {
|
|
musicData.mkdirs();
|
|
}
|
|
|
|
if (service != null) {
|
|
voicechatPlugin = new VoicePlugin();
|
|
service.registerPlugin(voicechatPlugin);
|
|
LOGGER.info("Successfully registered CustomDiscs plugin");
|
|
} else {
|
|
LOGGER.info("Failed to register CustomDiscs plugin");
|
|
}
|
|
|
|
getServer().getPluginManager().registerEvents(new JukeBox(), this);
|
|
getServer().getPluginManager().registerEvents(new HopperManager(), this);
|
|
getCommand("customdisc").setExecutor(new CommandManager());
|
|
|
|
musicDiscDistance = getConfig().getInt("music-disc-distance");
|
|
musicDiscVolume = Float.parseFloat(Objects.requireNonNull(getConfig().getString("music-disc-volume")));
|
|
|
|
ProtocolManager protocolManager = ProtocolLibrary.getProtocolManager();
|
|
|
|
protocolManager.addPacketListener(new PacketAdapter(this, ListenerPriority.NORMAL, PacketType.Play.Server.WORLD_EVENT) {
|
|
@Override
|
|
public void onPacketSending(PacketEvent event) {
|
|
PacketContainer packet = event.getPacket();
|
|
|
|
if (packet.getIntegers().read(0).toString().equals("1010")) {
|
|
Jukebox jukebox = (Jukebox) packet.getBlockPositionModifier().read(0).toLocation(event.getPlayer().getWorld()).getBlock().getState();
|
|
|
|
if (!jukebox.getRecord().hasItemMeta()) return;
|
|
|
|
if (jukebox.getRecord().getItemMeta().getPersistentDataContainer().has(new NamespacedKey(CustomDiscs.getInstance(), "customdisc"), PersistentDataType.STRING)) {
|
|
event.setCancelled(true);
|
|
}
|
|
|
|
}
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
@Override
|
|
public void onDisable() {
|
|
if (voicechatPlugin != null) {
|
|
getServer().getServicesManager().unregister(voicechatPlugin);
|
|
LOGGER.info("Successfully unregistered CustomDiscs plugin");
|
|
}
|
|
}
|
|
|
|
public static CustomDiscs getInstance() {
|
|
return instance;
|
|
}
|
|
}
|