Provide option to choose between InvUIRP versions

This commit is contained in:
NichtStudioCode 2021-02-13 17:52:36 +01:00
parent 3c3856423e
commit f38f86d423

@ -1,6 +1,7 @@
package de.studiocode.invui.resourcepack; package de.studiocode.invui.resourcepack;
import de.studiocode.invui.InvUI; import de.studiocode.invui.InvUI;
import de.studiocode.invui.resourcepack.Icon.MaterialIcon;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
@ -8,19 +9,34 @@ import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerResourcePackStatusEvent; import org.bukkit.event.player.PlayerResourcePackStatusEvent;
import org.bukkit.scheduler.BukkitTask; import org.bukkit.scheduler.BukkitTask;
import org.jetbrains.annotations.Nullable;
import java.util.HashMap; import java.util.HashMap;
import static org.bukkit.event.player.PlayerResourcePackStatusEvent.Status.DECLINED; import static org.bukkit.event.player.PlayerResourcePackStatusEvent.Status.DECLINED;
/**
* Forces {@link Player}s to use a custom ResourcePack and kicks them if they don't accept it.
*/
public class ForceResourcePack implements Listener { public class ForceResourcePack implements Listener {
/**
* A resource pack with all the {@link Icon}s
*/
public static final String LIGHT_RESOURCE_PACK_URL =
"https://github.com/NichtStudioCode/InvUIRP/releases/download/v0.6-light/InvUIRP.zip";
/**
* A resource pack that also provides all {@link MaterialIcon}s
*/
public static final String FULL_RESOURCE_PACK_URL =
"https://github.com/NichtStudioCode/InvUIRP/releases/download/v0.6/InvUIRP.zip";
private static final ForceResourcePack INSTANCE = new ForceResourcePack(); private static final ForceResourcePack INSTANCE = new ForceResourcePack();
private final HashMap<Player, BukkitTask> tasks = new HashMap<>(); private final HashMap<Player, BukkitTask> tasks = new HashMap<>();
private String resourcePackUrl = "https://github.com/NichtStudioCode/InvUIRP/releases/download/v0.6/InvUIRP.zip"; private String resourcePackUrl;
private boolean activated;
private ForceResourcePack() { private ForceResourcePack() {
Bukkit.getPluginManager().registerEvents(this, InvUI.getInstance().getPlugin()); Bukkit.getPluginManager().registerEvents(this, InvUI.getInstance().getPlugin());
@ -31,14 +47,34 @@ public class ForceResourcePack implements Listener {
return INSTANCE; return INSTANCE;
} }
/**
* Sets the URL String for the custom ResourcePack every {@link Player} is required to download.
* Can be set to <code>null</code> to stop the forcing of a ResourcePack
*
* @param resourcePackUrl The ResourcePack URL String
*/
public void setResourcePackUrl(@Nullable String resourcePackUrl) {
this.resourcePackUrl = resourcePackUrl;
}
public String getResourcePackUrl() {
return resourcePackUrl;
}
@EventHandler @EventHandler
public void handleJoin(PlayerJoinEvent event) { public void handleJoin(PlayerJoinEvent event) {
if (activated) sendResourcePack(event.getPlayer()); if (resourcePackUrl != null) sendResourcePack(event.getPlayer());
}
private void sendResourcePack(Player player) {
player.setResourcePack(resourcePackUrl);
tasks.put(player, Bukkit.getScheduler().runTaskLater(InvUI.getInstance().getPlugin(),
() -> kickPlayer(player), 20 * 5));
} }
@EventHandler @EventHandler
public void handleResourcePackStatus(PlayerResourcePackStatusEvent event) { public void handleResourcePackStatus(PlayerResourcePackStatusEvent event) {
if (activated) { if (resourcePackUrl != null) {
Player player = event.getPlayer(); Player player = event.getPlayer();
if (tasks.containsKey(player)) { if (tasks.containsKey(player)) {
if (event.getStatus() == DECLINED) kickPlayer(player); if (event.getStatus() == DECLINED) kickPlayer(player);
@ -48,30 +84,8 @@ public class ForceResourcePack implements Listener {
} }
} }
private void sendResourcePack(Player player) {
player.setResourcePack(resourcePackUrl);
tasks.put(player, Bukkit.getScheduler().runTaskLater(InvUI.getInstance().getPlugin(),
() -> kickPlayer(player), 20 * 5));
}
private void kickPlayer(Player player) { private void kickPlayer(Player player) {
player.kickPlayer("§cPlease accept the custom resource pack"); player.kickPlayer("§cPlease accept the custom resource pack");
} }
public String getResourcePackUrl() {
return resourcePackUrl;
}
public void setResourcePackUrl(String resourcePackUrl) {
this.resourcePackUrl = resourcePackUrl;
}
public boolean isActivated() {
return activated;
}
public void setActivated(boolean activated) {
this.activated = activated;
}
} }