diff --git a/pom.xml b/pom.xml
index dc6ca70..b77262c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -20,23 +20,15 @@
https://www.iani.de/nexus/content/groups/public
- md5-repo
- https://repo.md-5.net/content/groups/public/
-
-
- dmulloy2-repo
- https://repo.dmulloy2.net/repository/public/
-
-
jitpack.io
https://jitpack.io
- dev.folia
- folia-api
- 1.19.4-R0.1-SNAPSHOT
+ io.papermc.paper
+ paper-api
+ 1.20.2-R0.1-SNAPSHOT
provided
@@ -64,12 +56,6 @@
provided
- de.fanta
- folianmsutils
- 1.0
- provided
-
-
commons-io
commons-io
2.11.0
@@ -87,34 +73,13 @@
2.0.0-SNAPSHOT
provided
-
- com.github.megavexnetwork.scoreboard-library
- scoreboard-library-api
- 2.0.0-RC8
-
-
- com.github.megavexnetwork.scoreboard-library
- scoreboard-library-implementation
- 2.0.0-RC8
-
-
- com.github.megavexnetwork.scoreboard-library
- scoreboard-library-packetevents
- 2.0.0-RC8
-
-
- com.comphenix.protocol
- ProtocolLib
- 5.0.0-SNAPSHOT
- provided
-
org.apache.maven.plugins
maven-jar-plugin
- 3.2.0
+ 3.3.0
${project.artifactId}
@@ -127,32 +92,6 @@
17
-
- org.apache.maven.plugins
- maven-shade-plugin
- 3.3.0
-
-
- package
-
- shade
-
-
- false
-
-
- net.megavex.scoreboardlibrary.api
- de.fanta.challenges.libs.scoreboardlibrary.api
-
-
- net.megavex.scoreboardlibrary.implementation
- de.fanta.challenges.libs.scoreboardlibrary.implementation
-
-
-
-
-
-
diff --git a/src/main/java/de/fanta/challenges/Challenges.java b/src/main/java/de/fanta/challenges/Challenges.java
index 4796446..44f59a6 100644
--- a/src/main/java/de/fanta/challenges/Challenges.java
+++ b/src/main/java/de/fanta/challenges/Challenges.java
@@ -1,7 +1,5 @@
package de.fanta.challenges;
-import com.comphenix.protocol.ProtocolLibrary;
-import com.comphenix.protocol.ProtocolManager;
import de.cubeside.nmsutils.NMSUtils;
import de.fanta.challenges.challenges.AllItemsChallenge;
import de.fanta.challenges.challenges.MLGChallenge;
@@ -18,7 +16,6 @@
import de.fanta.challenges.schedular.CancellableTask;
import de.fanta.challenges.schedular.Scheduler;
import de.fanta.challenges.scoreboard.BukkitScoreBoardManager;
-import de.fanta.challenges.scoreboard.FoliaScoreBoardManager;
import de.fanta.challenges.scoreboard.ScoreBoardMananger;
import de.fanta.challenges.scoreboard.ScoreManager;
import de.fanta.challenges.utils.ChatUtil;
@@ -111,12 +108,7 @@
private static final String CubesideMod_ModChannel = "cubesidemod:data";
private Scheduler scheduler;
- private boolean isFolia = false;
-
- private ProtocolManager protocolManager;
-
private ColorUtils colorUtils;
-
private Path challengeSavePath = new File("/home/storagebox/Challenge-saves").toPath();
private Path adventureSavePath = new File("/home/storagebox/Adventure-saves/").toPath();
@@ -126,11 +118,6 @@
@Override
public void onEnable() {
- if (getServer().getPluginManager().isPluginEnabled("ProtocolLib")) {
- protocolManager = ProtocolLibrary.getProtocolManager();
- getLogger().log(Level.INFO, "ProtocolLib found");
- }
-
LOGGER = getLogger();
plugin = this;
nmsUtils = getServer().getServicesManager().load(NMSUtils.class);
@@ -178,12 +165,7 @@
new EventRegistration(this).registerEvents();
this.backpack.loadInventoryFromConfig();
- if (isFolia) {
- this.sbManager = new FoliaScoreBoardManager(this);
- } else {
- this.sbManager = new BukkitScoreBoardManager(this);
- }
-
+ this.sbManager = new BukkitScoreBoardManager(this);
getScheduler().runGlobalDelayed(() -> {
plugin.setDayLightCircle(false);
@@ -696,14 +678,6 @@
return scheduler;
}
- public boolean isFolia() {
- return isFolia;
- }
-
- public ProtocolManager getProtocolManager() {
- return protocolManager;
- }
-
public ColorUtils getColorUtils() {
return colorUtils;
}
diff --git a/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/ForceItemChallengeEvent.java b/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/ForceItemChallengeEvent.java
index 9059812..5fc5019 100644
--- a/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/ForceItemChallengeEvent.java
+++ b/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/ForceItemChallengeEvent.java
@@ -106,7 +106,7 @@
skipItem = createSkipItem();
for (Material material : Material.values()) {
- if (material.isItem() && !material.isAir() && !plugin.getNotAvailableMaterials().contains(material)) {
+ if (material.isItem() && !material.isAir() && !plugin.getNotAvailableMaterials().contains(material) && !material.name().contains("smithing_template".toUpperCase())) {
materials.add(material);
}
}
diff --git a/src/main/java/de/fanta/challenges/commands/challenges/ChallengesCommand.java b/src/main/java/de/fanta/challenges/commands/challenges/ChallengesCommand.java
index 48f0fce..8b3fc8c 100644
--- a/src/main/java/de/fanta/challenges/commands/challenges/ChallengesCommand.java
+++ b/src/main/java/de/fanta/challenges/commands/challenges/ChallengesCommand.java
@@ -6,7 +6,10 @@
import de.iani.cubesideutils.commands.ArgsParser;
import org.bukkit.Color;
import org.bukkit.Location;
+import org.bukkit.Material;
import org.bukkit.Particle;
+import org.bukkit.World;
+import org.bukkit.block.Block;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@@ -23,7 +26,27 @@
public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) {
ChatUtil.sendNormalMessage(sender, "Challenges v" + plugin.getPluginMeta().getVersion() + " by " + (plugin.getPluginMeta().getAuthors() + "").replace("[", "").replace("]", ""));
ChatUtil.sendNormalMessage(sender, "Nutze /challenges help für Hilfe");
+
+ if (sender instanceof Player player) {
+ createCopperGrid(player.getLocation(), 10);
+ }
+
return true;
}
+ public static void createCopperGrid(Location center, int gridSize) {
+ int distance = 5; // Abstand zwischen den Kupferblöcken
+
+ int startX = center.getBlockX() - (gridSize / 2) * distance;
+ int startZ = center.getBlockZ() - (gridSize / 2) * distance;
+
+ for (int x = 0; x < gridSize; x++) {
+ for (int z = 0; z < gridSize; z++) {
+ Location blockLocation = new Location(center.getWorld(), startX + x * distance, center.getBlockY(), startZ + z * distance);
+ Block block = blockLocation.getBlock();
+ block.setType(Material.COPPER_BLOCK);
+ }
+ }
+ }
+
}
diff --git a/src/main/java/de/fanta/challenges/listeners/EventRegistration.java b/src/main/java/de/fanta/challenges/listeners/EventRegistration.java
index 238c694..f84ba29 100644
--- a/src/main/java/de/fanta/challenges/listeners/EventRegistration.java
+++ b/src/main/java/de/fanta/challenges/listeners/EventRegistration.java
@@ -1,7 +1,6 @@
package de.fanta.challenges.listeners;
import de.fanta.challenges.Challenges;
-import de.fanta.challenges.Troll;
import de.fanta.challenges.challenges.AllAdvancementsChallenge;
import de.fanta.challenges.challenges.BedrockWallChallenge;
import de.fanta.challenges.challenges.ChallengeEvents.BingoChallengeEvent;
@@ -102,9 +101,5 @@
pM.registerEvents(new WorldBorderLevelChallenge(), plugin);
pM.registerEvents(new CoordsTargeter(), plugin);
}
-
- if (plugin.isFolia()) {
- pM.registerEvents(new FoliaFixListener(plugin), plugin);
- }
}
}
diff --git a/src/main/java/de/fanta/challenges/listeners/FoliaFixListener.java b/src/main/java/de/fanta/challenges/listeners/FoliaFixListener.java
deleted file mode 100644
index 0189fb1..0000000
--- a/src/main/java/de/fanta/challenges/listeners/FoliaFixListener.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package de.fanta.challenges.listeners;
-
-import de.fanta.challenges.Challenges;
-import de.fanta.challenges.schedular.CancellableTask;
-import de.fanta.challenges.utils.ChatUtil;
-import de.fanta.challenges.utils.Config;
-import org.bukkit.Bukkit;
-import org.bukkit.GameMode;
-import org.bukkit.Location;
-import org.bukkit.Material;
-import org.bukkit.block.Block;
-import org.bukkit.entity.Player;
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.Listener;
-import org.bukkit.event.entity.PlayerDeathEvent;
-import org.bukkit.event.player.PlayerJoinEvent;
-import org.bukkit.event.player.PlayerMoveEvent;
-import org.bukkit.event.player.PlayerQuitEvent;
-
-import java.util.HashMap;
-import java.util.UUID;
-
-import static org.bukkit.Bukkit.getServer;
-
-public class FoliaFixListener implements Listener {
-
- private final Challenges plugin;
-
- private final HashMap deadPlayers = new HashMap<>();
- private final HashMap playerLocationList = new HashMap<>();
-
- public FoliaFixListener(Challenges plugin) {
- this.plugin = plugin;
- }
-
- @EventHandler
- public void onPlayerDeath(PlayerDeathEvent e) {
- CancellableTask task = plugin.getScheduler().runOnEntityAtFixedRate(e.getPlayer(), () -> checkDeathPlayers(e.getPlayer()), 1L, 1L);
- deadPlayers.put(e.getPlayer().getUniqueId(), task);
- }
-
- private void checkDeathPlayers(Player player) {
- if (player.isOnline()) {
- if (!player.isDead()) {
- if (!Config.getBoolean("respawn")) {
- ChatUtil.sendTitleToPlayer(player, "Du bist gestorben!", ChatUtil.RED + "Du bist nun Zuschauer", ChatUtil.GREEN, 10, 80, 10, false);
- plugin.getScheduler().runDelayedOnEntity(player, () -> player.setGameMode(GameMode.SPECTATOR), 1);
- deadPlayers.remove(player.getUniqueId()).cancel();
- }
- if (Config.getBoolean("nether.enabled")) {
- Location spawn = Bukkit.getWorlds().get(1).getSpawnLocation();
- player.teleportAsync(spawn);
- deadPlayers.remove(player.getUniqueId()).cancel();
- }
- if (player.getBedSpawnLocation() == null && !Config.getBoolean("nether.enabled")) {
- player.teleportAsync(getServer().getWorlds().get(0).getSpawnLocation().add(0.5, 1.0, 0.5));
- deadPlayers.remove(player.getUniqueId()).cancel();
- }
- }
- } else {
- deadPlayers.remove(player.getUniqueId()).cancel();
- }
- }
-
- @EventHandler
- public void onPlayerJoin(PlayerJoinEvent e) {
- if (!e.getPlayer().hasPlayedBefore() && !Config.getBoolean("nether.enabled")) {
- plugin.getScheduler().runDelayedOnEntity(e.getPlayer(), () -> e.getPlayer().teleportAsync(getServer().getWorlds().get(0).getSpawnLocation().add(0.5, 0.0, 0.5)), 1);
- }
- }
-
- @EventHandler
- public void onPlayerQuit(PlayerQuitEvent e) {
- if (deadPlayers.containsKey(e.getPlayer().getUniqueId())) {
- deadPlayers.remove(e.getPlayer().getUniqueId()).cancel();
- }
- }
-
- @EventHandler
- public void onPlayerPortal(PlayerMoveEvent e) {
- Block block = e.getPlayer().getLocation().getBlock();
- if (block.getType() != Material.NETHER_PORTAL) {
- playerLocationList.put(e.getPlayer(), e.getPlayer().getLocation());
- return;
- }
- if (plugin.getTimer().isRunning()) {
- if (Config.getBoolean("nether.enabled")) {
- Location endspawn = Bukkit.getWorlds().get(2).getSpawnLocation().add(60, -15, 60);
- plugin.getScheduler().runLocal(endspawn, () -> {
- for (int x = endspawn.getBlockX() - 2; x <= endspawn.getBlockX() + 2; x++) {
- for (int z = endspawn.getBlockZ() - 2; z <= endspawn.getBlockZ() + 2; z++) {
- for (int y = endspawn.getBlockY(); y <= endspawn.getBlockY() + 3; y++) {
- endspawn.getWorld().getBlockAt(x, y, z).setType(Material.AIR);
- }
- endspawn.getWorld().getBlockAt(x, endspawn.getBlockY() - 1, z).setType(Material.OBSIDIAN);
- }
- }
- e.getPlayer().teleportAsync(endspawn);
- });
- }
- } else {
- Location location = playerLocationList.get(e.getPlayer());
- e.getPlayer().teleportAsync(location.subtract(location.getDirection()));
- }
- }
-}
diff --git a/src/main/java/de/fanta/challenges/schedular/FoliaScheduler.java b/src/main/java/de/fanta/challenges/schedular/FoliaScheduler.java
deleted file mode 100644
index 1be9b25..0000000
--- a/src/main/java/de/fanta/challenges/schedular/FoliaScheduler.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package de.fanta.challenges.schedular;
-
-import de.fanta.challenges.Challenges;
-import io.papermc.paper.threadedregions.scheduler.ScheduledTask;
-import org.bukkit.Bukkit;
-import org.bukkit.Location;
-import org.bukkit.World;
-import org.bukkit.entity.Entity;
-
-import java.util.function.Consumer;
-
-public class FoliaScheduler implements Scheduler {
-
- private final Challenges plugin;
-
- public FoliaScheduler(Challenges plugin) {
- this.plugin = plugin;
- }
-
- @Override
- public void runAsync(Runnable task) {
- Bukkit.getServer().getAsyncScheduler().runNow(this.plugin, scheduledTask -> task.run());
- }
-
- @Override
- public void run(Runnable task) {
- Bukkit.getServer().getGlobalRegionScheduler().run(this.plugin, scheduledTask -> task.run());
- }
-
- @Override
- public void runLocal(Location location, Runnable task) {
- Bukkit.getServer().getRegionScheduler().run(this.plugin, location, scheduledTask -> task.run());
- }
-
- @Override
- public void runAtChunk(World world, int chunkX, int chunkZ, Runnable task) {
- Bukkit.getServer().getRegionScheduler().run(this.plugin, world, chunkX, chunkZ, scheduledTask -> task.run());
- }
-
- @Override
- public CancellableTask runGlobalDelayed(Runnable task, long delay) {
- return Bukkit.getServer().getGlobalRegionScheduler().runDelayed(this.plugin, scheduledTask -> task.run(), delay)::cancel;
- }
-
- @Override
- public void runLocalDelayed(Location location, Runnable task, long delay) {
- Bukkit.getServer().getRegionScheduler().runDelayed(this.plugin, location, scheduledTask -> task.run(), delay);
- }
-
- @Override
- public CancellableTask runLocalAtFixedRate(Location location, Runnable task, long delay, long period) {
- return Bukkit.getServer().getRegionScheduler().runAtFixedRate(this.plugin, location, scheduledTask -> task.run(), delay, period)::cancel;
- }
-
- @Override
- public void runLocalAtFixedRate(Location location, Consumer taskConsumer, long delay, long period) {
- Bukkit.getServer().getRegionScheduler().runAtFixedRate(this.plugin, location, scheduledTask -> taskConsumer.accept(scheduledTask::cancel), delay, period);
- }
-
- @Override
- public CancellableTask runGlobalAtFixedRate(Runnable task, long delay, long period) {
- return Bukkit.getServer().getGlobalRegionScheduler().runAtFixedRate(this.plugin, scheduledTask -> task.run(), delay, period)::cancel;
- }
-
- @Override
- public void runGlobalAtFixedRate(Consumer taskConsumer, long delay, long period) {
- Bukkit.getServer().getGlobalRegionScheduler().runAtFixedRate(this.plugin, scheduledTask -> taskConsumer.accept(scheduledTask::cancel), delay, period);
- }
-
- @Override
- public CancellableTask runOnEntityAtFixedRate(Entity entity, Runnable task, long delay, long period) {
- ScheduledTask createdTask = entity.getScheduler().runAtFixedRate(this.plugin, scheduledTask -> task.run(), null, delay, period);
- return createdTask == null ? null : createdTask::cancel;
- }
-
- @Override
- public void runOnEntityAtFixedRate(Entity entity, Consumer taskConsumer, long delay, long period) {
- entity.getScheduler().runAtFixedRate(this.plugin, scheduledTask -> taskConsumer.accept(scheduledTask::cancel), null, delay, period);
- }
-
- @Override
- public void runDelayedOnEntity(Entity entity, Runnable task, long delay) {
- entity.getScheduler().runDelayed(this.plugin, scheduledTask -> task.run(), null, delay);
- }
-}
diff --git a/src/main/java/de/fanta/challenges/scoreboard/FoliaScoreBoardManager.java b/src/main/java/de/fanta/challenges/scoreboard/FoliaScoreBoardManager.java
deleted file mode 100644
index 6ed166f..0000000
--- a/src/main/java/de/fanta/challenges/scoreboard/FoliaScoreBoardManager.java
+++ /dev/null
@@ -1,105 +0,0 @@
-package de.fanta.challenges.scoreboard;
-
-import de.fanta.challenges.Challenges;
-import de.fanta.challenges.ServerType;
-import de.fanta.challenges.teams.ChallengeTeam;
-import net.kyori.adventure.text.format.NamedTextColor;
-import net.megavex.scoreboardlibrary.api.ScoreboardLibrary;
-import net.megavex.scoreboardlibrary.api.exception.NoPacketAdapterAvailableException;
-import net.megavex.scoreboardlibrary.api.sidebar.Sidebar;
-import net.megavex.scoreboardlibrary.api.team.ScoreboardTeam;
-import net.megavex.scoreboardlibrary.api.team.TeamDisplay;
-import net.megavex.scoreboardlibrary.api.team.TeamManager;
-import org.bukkit.entity.Player;
-
-import java.util.logging.Level;
-
-public class FoliaScoreBoardManager implements ScoreBoardMananger {
-
- private final Challenges plugin;
- private ScoreboardLibrary scoreboardLibrary;
- private final TeamManager teamManager;
-
- private TeamDisplay teamDisplay;
- private Sidebar sidebar;
- private ScoreboardTeam team;
-
- public FoliaScoreBoardManager(Challenges plugin) {
- this.plugin = plugin;
-
-
- try {
- this.scoreboardLibrary = ScoreboardLibrary.loadScoreboardLibrary(plugin);
- } catch (NoPacketAdapterAvailableException ex) {
- plugin.getLogger().log(Level.SEVERE, "ScoreboardLibrary could not be loaded.", ex);
- }
- teamManager = scoreboardLibrary.createTeamManager();
- }
-
- @Override
- public void initScoreboard() {
- this.sidebar = scoreboardLibrary.createSidebar();
- this.team = teamManager.createIfAbsent("Player");
-
- teamDisplay = team.defaultDisplay();
- teamDisplay.playerColor(NamedTextColor.GREEN);
-
- updateTabHP();
- }
-
- @Override
- public void setScoreboardtoPlayer(Player p) {
- if (this.sidebar == null) {
- if (plugin.getServerType() != ServerType.ADVENTURE) {
- initScoreboard();
- }
- }
-
- sidebar.addPlayer(p);
- teamManager.addPlayer(p);
- teamDisplay.addEntry(p.getName());
- }
-
- @Override
- public void setScoreboardtoTeam(ChallengeTeam challengeTeam) {
- }
-
- @Override
- public void removeScoreboard(Player p) {
- if (team != null) {
- if (plugin.getServerType() != ServerType.ADVENTURE) {
- teamManager.removePlayer(p);
- teamDisplay.removeEntry(p.getName());
- }
- }
-
- }
-
- @Override
- public void removeAllFromScoreboard() {
- sidebar.removePlayers(sidebar.players());
- }
-
- @Override
- public int countScoreboardPlayers() {
- return team.teamManager().players().size();
- }
-
- @Override
- public void updateTabHP() {
- }
-
- @Override
- public void updateEventScoreboard() {
- }
-
- @Override
- public void updateEventScore(Scorable s) {
-
- }
-
- @Override
- public Object getScoreboard() {
- return sidebar;
- }
-}
diff --git a/src/main/java/de/fanta/challenges/utils/SaveWorldUtils.java b/src/main/java/de/fanta/challenges/utils/SaveWorldUtils.java
index 06b4e1e..1c99518 100644
--- a/src/main/java/de/fanta/challenges/utils/SaveWorldUtils.java
+++ b/src/main/java/de/fanta/challenges/utils/SaveWorldUtils.java
@@ -69,41 +69,10 @@
}
NMSUtils nms = plugin.getNMSUtils();
if (nms != null) {
- if (!plugin.isFolia()) {
- for (World world : Bukkit.getWorlds()) {
- nms.getWorldUtils().saveWorldNow(world);
- }
- return copyWorldAsync(player, saveID, saveSlot);
- } else {
- ArrayList> allTasks = new ArrayList<>();
- for (World world : Bukkit.getWorlds()) {
- for (Chunk chunk : world.getLoadedChunks()) {
- CompletableFuture future = new CompletableFuture<>();
- allTasks.add(future);
- Bukkit.getServer().getRegionScheduler().run(plugin, world, chunk.getX(), chunk.getZ(), scheduledTask -> {
- try {
- nms.getWorldUtils().saveChunkNow(chunk);
- } finally {
- future.complete(null);
- }
- });
- }
- }
-
- World world = Bukkit.getWorld("world");
- de.fanta.folianmsutils.NMSUtils foliaNMS = plugin.getServer().getServicesManager().load(de.fanta.folianmsutils.NMSUtils.class);
- foliaNMS.getWorldUtils().saveLevelDat(world);
- CompletableFuture waitForAll = CompletableFuture.allOf(allTasks.toArray(new CompletableFuture[0]));
- plugin.getScheduler().runAsync(() -> {
- try {
- waitForAll.get();
- nms.getWorldUtils().flushChunkSaves();
- copyWorldAsync(player, saveID, saveSlot);
- } catch (InterruptedException | ExecutionException e) {
- throw new RuntimeException(e);
- }
- });
+ for (World world : Bukkit.getWorlds()) {
+ nms.getWorldUtils().saveWorldNow(world);
}
+ return copyWorldAsync(player, saveID, saveSlot);
}
} catch (Exception ex) {
plugin.getLogger().log(Level.SEVERE, "Welt konnte nicht gespeichert werden", ex);
@@ -229,7 +198,6 @@
Bukkit.shutdown();
}
-
}
private static void setSeedInServerProperties(@Nullable String seed) {
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index bc15e80..f62427f 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -4,8 +4,7 @@
author: ${project.author}
api-version: 1.16
depend: [CubesideUtils, VanishNoPacket, GlobalPort, CubesideNMSUtils, PlayerUUIDCache]
-softdepend: [CubesideStatistics, ProtocolLib, FoliaNMSUtils, packetevents]
-folia-supported: true
+softdepend: [CubesideStatistics]
commands:
hp:
description: Verwalte die HP eines Spielers