diff --git a/Challenge/src/main/java/de/fanta/challenge/commands/SkipItemCommand.java b/Challenge/src/main/java/de/fanta/challenge/commands/SkipItemCommand.java index 0b30f4a..15b884e 100644 --- a/Challenge/src/main/java/de/fanta/challenge/commands/SkipItemCommand.java +++ b/Challenge/src/main/java/de/fanta/challenge/commands/SkipItemCommand.java @@ -24,21 +24,23 @@ ChatUtil.sendErrorMessage(sender, "You are not a Player :>"); return true; } - if (plugin.getCurrentEditor() != null) { - if (!plugin.isEditor(p) || !p.hasPermission("Challenges.editor.override")) { - ChatUtil.sendErrorMessage(p, "Das kann nur der Editor!"); - return true; - } - } else { + + if (plugin.getCurrentEditor() == null) { ChatUtil.sendErrorMessage(p, "Aktuell gibt es keinen Editor!"); + return true; } - if (Config.getBoolean("allitems")) { - AllItemsChallenge.next(p, true); - } else { + if (!plugin.isEditor(p) || !p.hasPermission("challenges.editor.override")) { + ChatUtil.sendErrorMessage(p, "Das kann nur der Editor!"); + return true; + } + + if (!Config.getBoolean("allitems")) { ChatUtil.sendErrorMessage(p, "Dies geht nur wenn All Items Aktiv ist!"); + return true; } + AllItemsChallenge.next(p, true); return true; } } diff --git a/Lobby/src/main/java/de/fanta/lobby/ChallengesGlobalDataHelper.java b/Lobby/src/main/java/de/fanta/lobby/ChallengesGlobalDataHelper.java index 10ebc48..fad2abb 100644 --- a/Lobby/src/main/java/de/fanta/lobby/ChallengesGlobalDataHelper.java +++ b/Lobby/src/main/java/de/fanta/lobby/ChallengesGlobalDataHelper.java @@ -49,7 +49,7 @@ plugin.updatePlayerCount(serverName, count, maxPlayers); } case INITIAL_DATA_REQUEST -> { - if (Bukkit.getPluginManager().getPlugin("Challenges") != null) { + if (Bukkit.getPluginManager().getPlugin("Challenge") != null) { Challenge challenges = (Challenge) Bukkit.getPluginManager().getPlugin("Challenge"); boolean timerRunning = challenges.getTimer().isRunning(); int playerCount = Bukkit.getOnlinePlayers().size(); @@ -121,7 +121,6 @@ Player p = Bukkit.getPlayer(uuid); if (p != null) { server.spawnPiglin(p); - //server.spawnNPC(p); GlobalApi.portOnlinePlayerToLocation(p.getName(), server.getGPLocation()); } break; diff --git a/Lobby/src/main/java/de/fanta/lobby/Lobby.java b/Lobby/src/main/java/de/fanta/lobby/Lobby.java index 4ad1301..b3c194d 100644 --- a/Lobby/src/main/java/de/fanta/lobby/Lobby.java +++ b/Lobby/src/main/java/de/fanta/lobby/Lobby.java @@ -128,19 +128,6 @@ statistics = new Statistics(this); } - /*if (getServer().getPluginManager().isPluginEnabled("SignGUI")) { - signManager = new SignManager(this); - signManager.init(); - }*/ - - /*try { - Class.forName("io.papermc.paper.threadedregions.scheduler.ScheduledTask"); - getLogger().log(Level.INFO, "Folia found. Use Folia Scheduler"); - scheduler = new FoliaScheduler(this); - } catch (Throwable ignored) { - getLogger().log(Level.INFO, "Bukkit found. Use Bukkit Scheduler"); - scheduler = new BukkitScheduler(this); - }*/ getLogger().log(Level.INFO, "Bukkit found. Use Bukkit Scheduler"); scheduler = new BukkitScheduler(this); @@ -308,7 +295,6 @@ public void updatePlayerCount(String serverName, int count, int maxPlayers) { JoinEntityData data = entityData.get(serverName); - if (data != null) { data.setPlayerCount(count); data.setMaxPlayers(maxPlayers); @@ -346,6 +332,7 @@ } public void updatePiglinBehaviour(String serverName) { + getLogger().info("Update Server: " + serverName); Piglin piglin = getPiglinForServerName(serverName); JoinEntityData data = entityData.get(serverName); diff --git a/Lobby/src/main/java/de/fanta/lobby/Server.java b/Lobby/src/main/java/de/fanta/lobby/Server.java index 7f83c81..24eae2f 100644 --- a/Lobby/src/main/java/de/fanta/lobby/Server.java +++ b/Lobby/src/main/java/de/fanta/lobby/Server.java @@ -99,7 +99,7 @@ serverPlayers.remove(this); return; } - load(p, this.serverType.getDir(), path, getMapVersion(new File(dir + "/Challenges/serverconfig.yml"))); + load(p, this.serverType.getDir(), path, getMapVersion(new File(dir + "/" + getPluginFolderPrefix(dir) + "/serverconfig.yml"))); } public void loadNewAdventure(Player player, String category, String map, String mapVersion) { @@ -117,7 +117,7 @@ return; } - load(player, "Adventure-Maps", category + "/" + map, getMapVersion(new File(dir + "/Challenges/serverconfig.yml"))); + load(player, "Adventure-Maps", category + "/" + map, getMapVersion(new File(dir + "/" + getPluginFolderPrefix(dir) + "/serverconfig.yml"))); } else { ChatUtil.sendErrorMessage(player, "Du brauchst mindestens die Version " + ChatUtil.BLUE + mapVersion + ChatUtil.RED + " um die Map zu starten!"); } @@ -126,7 +126,7 @@ public void load(Player p, String serverTypeDir, String targetDir, String ServerVersion) { plugin.getScheduler().runAsync(() -> { File serverFolder = new File(plugin.getServerFolderPath().toFile(), this.dir); - File configs = new File(serverFolder, "/plugins/Challenges"); + File configs = new File(serverFolder, "/plugins/" + getPluginFolderPrefix(new File(serverFolder, "/plugins"))); File end = new File(serverFolder, "/world_the_end"); File nether = new File(serverFolder, "/world_nether"); File world = new File(serverFolder, "/world"); @@ -143,12 +143,12 @@ saveend = new File(plugin.getChallengeSavePath().toFile(), targetDir + "/world_the_end"); savenether = new File(plugin.getChallengeSavePath().toFile(), targetDir + "/world_nether"); saveworld = new File(plugin.getChallengeSavePath().toFile(), targetDir + "/world"); - saveconfigs = new File(plugin.getChallengeSavePath().toFile(), targetDir + "/Challenges"); + saveconfigs = new File(plugin.getChallengeSavePath().toFile(), targetDir + "/" + getPluginFolderPrefix(new File(plugin.getChallengeSavePath().toFile(), targetDir))); } else { saveend = new File(plugin.getAdventureMapsPath().toFile(), targetDir + "/world_the_end"); savenether = new File(plugin.getAdventureMapsPath().toFile(), targetDir + "/world_nether"); saveworld = new File(plugin.getAdventureMapsPath().toFile(), targetDir + "/world"); - saveconfigs = new File(plugin.getAdventureMapsPath().toFile(), targetDir + "/Challenges"); + saveconfigs = new File(plugin.getAdventureMapsPath().toFile(), targetDir + "/" + getPluginFolderPrefix(new File(plugin.getChallengeSavePath().toFile(), targetDir))); } ChatUtil.sendNormalMessage(p, "Versuche Map zu laden!"); @@ -177,7 +177,7 @@ moveFolderWithProgress(copyMap, p); - File serverConfigFile = new File(plugin.getServerFolderPath().toFile(), this.dir + "/plugins/Challenges/serverconfig.yml"); + File serverConfigFile = new File(plugin.getServerFolderPath().toFile(), this.dir + "/plugins/" + getPluginFolderPrefix(new File(plugin.getServerFolderPath().toFile(), this.dir + "/plugins")) + "/serverconfig.yml"); YamlConfiguration serverConfig = new YamlConfiguration(); serverConfig.load(serverConfigFile); @@ -315,4 +315,20 @@ } return serverVersion; } + + private static String getPluginFolderPrefix(File saveSlot) { + String challengeFolder = null; + File challenges = new File(saveSlot, "/Challenges"); + File challenge = new File(saveSlot, "/Challenge"); + File adventure = new File(saveSlot, "/Adventure"); + if (challenges.isDirectory()) { + challengeFolder = "Challenges"; + } else if (challenge.isDirectory()) { + challengeFolder = "Challenge"; + } else if (adventure.isDirectory()) { + challengeFolder = "Adventure"; + } + + return challengeFolder; + } } \ No newline at end of file diff --git a/Lobby/src/main/java/de/fanta/lobby/listeners/EntityListener.java b/Lobby/src/main/java/de/fanta/lobby/listeners/EntityListener.java index c1f3b8f..0287450 100644 --- a/Lobby/src/main/java/de/fanta/lobby/listeners/EntityListener.java +++ b/Lobby/src/main/java/de/fanta/lobby/listeners/EntityListener.java @@ -8,6 +8,7 @@ import de.speedy64.globalport.GlobalApi; import io.papermc.paper.event.entity.EntityMoveEvent; import org.bukkit.GameMode; +import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -15,8 +16,11 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.player.PlayerInteractEntityEvent; +import org.bukkit.event.world.ChunkLoadEvent; import org.bukkit.inventory.EquipmentSlot; +import java.util.Arrays; +import java.util.List; import java.util.UUID; public class EntityListener implements Listener { @@ -65,6 +69,16 @@ } } + @EventHandler + public void onEntityLoad(ChunkLoadEvent e) { + List entities = Arrays.stream(e.getChunk().getEntities()).toList(); + entities.forEach(entity -> { + if (plugin.isJoinEntity(entity)) { + plugin.updatePiglinBehaviour(plugin.getServerNameForEntity(entity.getUniqueId())); + } + }); + } + public void onPlayerClickEntity(Player player, UUID clicked) { if (player == null || clicked == null) { return; diff --git a/Lobby/src/main/java/de/fanta/lobby/listeners/PlayerListener.java b/Lobby/src/main/java/de/fanta/lobby/listeners/PlayerListener.java index fe0458b..f0ffc81 100644 --- a/Lobby/src/main/java/de/fanta/lobby/listeners/PlayerListener.java +++ b/Lobby/src/main/java/de/fanta/lobby/listeners/PlayerListener.java @@ -72,10 +72,10 @@ String hosteName = CubesideUtilsBukkit.getInstance().getPlayerData(e.getPlayer()).getHostName().toLowerCase(); if (hosteName.startsWith("challenge")) { Location location = GPLocation.getLocation("challenge").getLocation(); - e.getPlayer().teleportAsync(location); + e.getPlayer().teleport(location); } else if (hosteName.startsWith("adventure")) { Location location = GPLocation.getLocation("adventure").getLocation(); - e.getPlayer().teleportAsync(location); + e.getPlayer().teleport(location); } } }, 1L);