Files
FUCK-CustomDiscs/src/main/java/me/Navoei/customdiscsplugin/CustomDiscs.java
2022-09-04 19:11:50 -05:00

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