package us.fihgu.toolbox.resourcepack; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerResourcePackStatusEvent; import org.bukkit.event.player.PlayerResourcePackStatusEvent.Status; import org.bukkit.permissions.Permission; import org.bukkit.permissions.PermissionDefault; import com.chrismin13.additionsapi.AdditionsAPI; import com.chrismin13.additionsapi.files.ConfigFile; import com.chrismin13.additionsapi.utils.Debug; import com.chrismin13.additionsapi.utils.LangFileUtils; import me.benfah.cu.init.impl.MinePackInitializationMethod; public class ResourcePackListener implements Listener { @EventHandler public void onLogin(PlayerLoginEvent event) { sendResourcePack(event.getPlayer(), event.getAddress().getHostAddress()); } public static void sendResourcePack(Player player, String hostAddress) { Bukkit.getServer().getScheduler().runTaskLater(AdditionsAPI.getInstance(), () -> { if (ResourcePackManager.hasResource() && ConfigFile.getInstance().getConfig().getBoolean("resource-pack.send-to-player") && !player.hasPermission( new Permission("additionsapi.resourcepack.disable", PermissionDefault.FALSE))) { String link; if (!ConfigFile.getInstance().getConfig().getBoolean("resource-pack.use-minepack")) { if (hostAddress != null && hostAddress.equals("127.0.0.1")) { link = "http://" + ResourcePackServer.localhost + ":" + ResourcePackServer.port + ResourcePackServer.path; } else { link = "http://" + ResourcePackServer.host + ":" + ResourcePackServer.port + ResourcePackServer.path; } } else { link = MinePackInitializationMethod.resourcePack; } if (player != null && player.isOnline()) if (ResourcePackManager.hasSendWithHash) try { player.setResourcePack(link, ResourcePackManager.resourcePackSha1Byte); } catch (NoSuchMethodError e) { ResourcePackManager.hasSendWithHash = false; player.setResourcePack(link); } else player.setResourcePack(link); Debug.saySuper("Sending Resource Pack Link to Player: " + link); } }, 20L); } @EventHandler public void onResourcestatusChange(PlayerResourcePackStatusEvent event) { if (ResourcePackManager.getForceResourcePack()) { Status status = event.getStatus(); switch (status) { case DECLINED: case FAILED_DOWNLOAD: final Player player = event.getPlayer(); if (!player.hasPermission(new Permission("additionsapi.resourcepack.bypass", PermissionDefault.FALSE))) Bukkit.getServer().getScheduler().runTask(AdditionsAPI.getInstance(), () -> player.kickPlayer(LangFileUtils.get("resource_pack_kick"))); break; case ACCEPTED: case SUCCESSFULLY_LOADED: default: break; } } } }