diff --git a/pom.xml b/pom.xml
index 559c098..61899b4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
de.fanta.challenges
Challenges
- 1.17-DEV
+ 1.17.1-DEV
UTF-8
UTF-8
@@ -12,8 +12,8 @@
- destroystokyo-repo
- https://repo.destroystokyo.com/repository/maven-public/
+ papermc
+ https://papermc.io/repo/repository/maven-public/
brokkonaut
@@ -27,8 +27,8 @@
io.papermc.paper
- Paper-API
- 1.17-R0.1-SNAPSHOT
+ paper-api
+ 1.17.1-R0.1-SNAPSHOT
provided
diff --git a/src/main/java/de/fanta/challenges/Challenges.java b/src/main/java/de/fanta/challenges/Challenges.java
index e17f6db..455dc51 100644
--- a/src/main/java/de/fanta/challenges/Challenges.java
+++ b/src/main/java/de/fanta/challenges/Challenges.java
@@ -9,30 +9,14 @@
import de.fanta.challenges.events.ServerStatusChangedEvent;
import de.fanta.challenges.events.TimerChangedEvent;
import de.fanta.challenges.guis.BackpackGui;
-import de.fanta.challenges.guis.ResetGui;
-import de.fanta.challenges.guis.TimerGui;
-import de.fanta.challenges.guis.eventgui.EventGui;
-import de.fanta.challenges.guis.eventgui.EventItemsGui;
-import de.fanta.challenges.guis.settingsgui.MainGui;
-import de.fanta.challenges.guis.settingsgui.OtherSettingsGui;
-import de.fanta.challenges.guis.settingsgui.ServerSettingsGui;
-import de.fanta.challenges.guis.settingsgui.SettingsGui;
-import de.fanta.challenges.listeners.BingoListener;
-import de.fanta.challenges.listeners.BlockCreateListener;
-import de.fanta.challenges.listeners.BlockDestroyListener;
-import de.fanta.challenges.listeners.DamageListener;
-import de.fanta.challenges.listeners.DeathListener;
-import de.fanta.challenges.listeners.InteractListener;
-import de.fanta.challenges.listeners.InventoryClickListener;
-import de.fanta.challenges.listeners.PlayerListener;
-import de.fanta.challenges.listeners.QuitJoinListener;
-import de.fanta.challenges.listeners.VoidListener;
+import de.fanta.challenges.listeners.EventRegistration;
import de.fanta.challenges.scoreboard.ScoreBoardManager;
import de.fanta.challenges.scoreboard.ScoreManager;
import de.fanta.challenges.utils.ChatUtil;
import de.fanta.challenges.utils.VanishUtils;
import de.fanta.challenges.utils.guiutils.GUIUtils;
import net.md_5.bungee.api.ChatColor;
+import org.apache.commons.io.FileUtils;
import org.bukkit.BanList;
import org.bukkit.Bukkit;
import org.bukkit.GameRule;
@@ -46,7 +30,6 @@
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
-import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import java.io.File;
@@ -55,6 +38,7 @@
import java.util.Arrays;
import java.util.List;
import java.util.Random;
+import java.util.UUID;
import java.util.logging.Logger;
import java.util.stream.Collectors;
@@ -90,6 +74,10 @@
public NMSUtils nmsUtils;
+ private UUID texturepackid = null;
+
+ public String texturepacklink = null;
+
public static Challenges getPlugin() {
return plugin;
}
@@ -102,6 +90,8 @@
private boolean waitingForShutdown;
+ public int resetTaskId = -1;
+
@Override
public void onEnable() {
LOGGER = getLogger();
@@ -119,26 +109,7 @@
this.backpack = new BackpackGui(getConfig().getInt("backpack_size") * 9);
new CommandRegistration(this).registerCommands();
-
- PluginManager pM = Bukkit.getPluginManager();
- pM.registerEvents(new InventoryClickListener(), this);
- pM.registerEvents(new QuitJoinListener(), this);
- pM.registerEvents(new BlockDestroyListener(), this);
- pM.registerEvents(new BlockCreateListener(), this);
- pM.registerEvents(new InteractListener(), this);
- pM.registerEvents(new DamageListener(), this);
- pM.registerEvents(new DeathListener(), this);
- pM.registerEvents(new PlayerListener(), this);
- pM.registerEvents(new VoidListener(), this);
- pM.registerEvents(new TimerGui(), this);
- pM.registerEvents(new ResetGui(), this);
- pM.registerEvents(new MainGui(), this);
- pM.registerEvents(new SettingsGui(), this);
- pM.registerEvents(new ServerSettingsGui(), this);
- pM.registerEvents(new OtherSettingsGui(), this);
- pM.registerEvents(new EventGui(), this);
- pM.registerEvents(new BingoListener(), this);
- pM.registerEvents(new EventItemsGui(), this);
+ new EventRegistration(this).registerEvents();
saveDefaultConfig();
reloadConfig();
@@ -149,18 +120,21 @@
getLogger().info("Plugin loaded!");
this.sbManager = new ScoreBoardManager(this);
- timer.setTime(getConfig().getInt("timertime"));
-
Bukkit.getScheduler().scheduleSyncDelayedTask(this, () -> {
World world = Bukkit.getWorld("world");
world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false);
checkMLGWorld();
- plugin.getSBManager().initScoreboard();
+ if (Bukkit.getMotd().equalsIgnoreCase("Challenge")) {
+ plugin.getSBManager().initScoreboard();
+ }
}, 1L);
CavesAndCliffs = getConfig().getBoolean("1-18-datapack");
if (getConfig().getBoolean("World_Reset")) {
+ if (!getConfig().getBoolean("firsttimerstart")) {
+ timer.setTime(0);
+ }
File config = new File(plugin.getDataFolder(), "config.yml");
config.delete();
reloadConfig();
@@ -173,13 +147,48 @@
this.getBackpack().resize(getConfig().getInt("backpack_size") * 9);
this.rndDrops.loadItems();
this.backpack.loadInventoryFromConfig();
+ timer.setTime(getConfig().getInt("timertime"));
+ }
+
+
+ if (Bukkit.getMotd().equalsIgnoreCase("Adventure")) { //TODO Challenges Load Server
+ startResetTask();
+
+ File texturepack = new File("world/resources.zip");
+ if (texturepack.exists()) {
+ texturepackid = UUID.randomUUID();
+ File texturepackdownload = new File("/var/www/html/AdventureMap-TexturePacks/" + texturepackid + "/");
+ File temp = new File(texturepackid.toString());
+ try {
+ FileUtils.forceMkdir(temp);
+ FileUtils.moveFileToDirectory(texturepack, temp, false);
+ File renameTP = new File(texturepackid.toString() + "/" + "resources.zip");
+ File renamedTP = new File(texturepackid.toString() + "/" + texturepackid + ".zip");
+ renameTP.renameTo(renamedTP);
+ if (temp.isDirectory()) {
+ FileUtils.moveDirectory(temp, texturepackdownload);
+ } else {
+ System.out.println("Ordner nicht da!");
+ }
+
+ texturepacklink = "https://fantacs.de/AdventureMap-TexturePacks/" + texturepackid + "/" + texturepackid + ".zip";
+ System.out.println(texturepacklink);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ getConfig().set("showtimer", false);
+
+ } else {
+ getConfig().set("showtimer", true);
}
Bukkit.getScheduler().scheduleSyncDelayedTask(this, () -> {
- pM.callEvent(new ServerStatusChangedEvent(true));
- pM.callEvent(new TimerChangedEvent(timer.isRunning()));
- pM.callEvent(new PlayerCountChangedEvent(Bukkit.getOnlinePlayers().size() - plugin.getVanish().countVanishPlayers()));
+ EventRegistration.pM.callEvent(new ServerStatusChangedEvent(true));
+ EventRegistration.pM.callEvent(new TimerChangedEvent(timer.isRunning()));
+ EventRegistration.pM.callEvent(new PlayerCountChangedEvent(Bukkit.getOnlinePlayers().size() - plugin.getVanish().countVanishPlayers()));
}, 60L);
+
}
@Override
@@ -201,6 +210,19 @@
GUIUtils.setConfig("event.enabled", false);
getScoreManager().saveScores();
}
+ if (texturepackid != null) {
+ File temp = new File(texturepackid.toString());
+ if (temp.isDirectory()) {
+ temp.delete();
+ }
+ }
+
+ File texturepackdownload = new File("/var/www/html/AdventureMap-TexturePacks/" + texturepackid);
+ if (texturepackdownload.isDirectory()) {
+ System.out.println("Delete File " + texturepackdownload.getAbsolutePath());
+ texturepackdownload.delete();
+ }
+
saveConfig();
getLogger().info("Plugin unloaded");
}
@@ -322,6 +344,16 @@
return hasEditor() && currentEditor.getUniqueId().equals(player.getUniqueId());
}
+ public void startResetTask() {
+ resetTaskId = Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "reset confirm"), 3 * 60 * 20);
+ System.out.println("Reset in 3 Minuten");
+ }
+
+ public void stopResetTask() {
+ Bukkit.getScheduler().cancelTask(resetTaskId);
+ resetTaskId = -1;
+ }
+
public Timer getTimer() {
return timer;
}
diff --git a/src/main/java/de/fanta/challenges/Timer.java b/src/main/java/de/fanta/challenges/Timer.java
index 1596a50..382e625 100644
--- a/src/main/java/de/fanta/challenges/Timer.java
+++ b/src/main/java/de/fanta/challenges/Timer.java
@@ -38,7 +38,7 @@
this.plugin = plugin;
this.random = new Random();
this.maxMLGTime = plugin.getConfig().getInt("mlg.maxtime");
- this.mode = TimerMode.DOWN;
+ this.mode = TimerMode.UP;
if (!isRunning()) {
sendIdleActionBar();
@@ -140,7 +140,10 @@
private void sendTimerActionBar(ChatColor color) {
for (Player p : Bukkit.getOnlinePlayers()) {
if (!plugin.getVanish().isVanish(p)) {
- p.sendActionBar(formatTime(color));
+ if (plugin.getConfig().getBoolean("showtimer")) {
+ p.sendActionBar(formatTime(color));
+ }
+
}
}
}
diff --git a/src/main/java/de/fanta/challenges/challenges/RandomDrops.java b/src/main/java/de/fanta/challenges/challenges/RandomDrops.java
index 8e2ef00..4a2ea8e 100644
--- a/src/main/java/de/fanta/challenges/challenges/RandomDrops.java
+++ b/src/main/java/de/fanta/challenges/challenges/RandomDrops.java
@@ -21,8 +21,8 @@
private final HashMap drops = new HashMap<>();
public RandomDrops() {
- this.BLOCKS = (ArrayList) Arrays. stream(Material.values()).filter(Material::isBlock).collect(Collectors.toList());
- this.ITEM_DROPS = (ArrayList) Arrays. stream(Material.values()).filter(mat -> (mat.isItem() || mat == Material.BEDROCK)).collect(Collectors.toList());
+ this.BLOCKS = (ArrayList) Arrays.stream(Material.values()).filter(mat -> (mat.isBlock() && mat != Material.AIR && mat != Material.CAVE_AIR && mat != Material.VOID_AIR)).collect(Collectors.toList());
+ this.ITEM_DROPS = (ArrayList) Arrays.stream(Material.values()).filter(mat -> (mat.isItem() && mat != Material.FILLED_MAP)).collect(Collectors.toList());
}
public void shuffleItems() {
diff --git a/src/main/java/de/fanta/challenges/commands/CommandRegistration.java b/src/main/java/de/fanta/challenges/commands/CommandRegistration.java
index 60d745c..b3069a3 100644
--- a/src/main/java/de/fanta/challenges/commands/CommandRegistration.java
+++ b/src/main/java/de/fanta/challenges/commands/CommandRegistration.java
@@ -36,12 +36,7 @@
import de.fanta.challenges.commands.timer.TimerStartCommand;
import de.iani.cubesideutils.bukkit.commands.CommandRouter;
-public class CommandRegistration {
- private final Challenges plugin;
-
- public CommandRegistration(Challenges plugin) {
- this.plugin = plugin;
- }
+public record CommandRegistration(Challenges plugin) {
public void registerCommands() {
diff --git a/src/main/java/de/fanta/challenges/commands/LeaveCommand.java b/src/main/java/de/fanta/challenges/commands/LeaveCommand.java
index 26fa2bd..ba4f078 100644
--- a/src/main/java/de/fanta/challenges/commands/LeaveCommand.java
+++ b/src/main/java/de/fanta/challenges/commands/LeaveCommand.java
@@ -4,6 +4,8 @@
import de.iani.cubesideutils.bukkit.commands.SubCommand;
import de.iani.cubesideutils.commands.ArgsParser;
import de.speedy64.globalport.GlobalApi;
+import net.md_5.bungee.api.ChatColor;
+import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@@ -15,11 +17,15 @@
@Override
public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) {
- if (!(sender instanceof Player)) {
+ if (!(sender instanceof Player p)) {
ChatUtil.sendErrorMessage(sender, "You are not a Player :>");
return true;
} else {
- GlobalApi.portOnlinePlayerToLocation(sender.getName(), "challenge");
+ if (Bukkit.getMotd().equalsIgnoreCase("Challenge")) {
+ GlobalApi.portOnlinePlayerToLocation(p.getName(), "challenge");
+ } else if (Bukkit.getMotd().equalsIgnoreCase("Adventure")) {
+ GlobalApi.portOnlinePlayerToLocation(p.getName(), "adventure");
+ }
}
return true;
}
diff --git a/src/main/java/de/fanta/challenges/commands/challenges/ChallengesSaveCommand.java b/src/main/java/de/fanta/challenges/commands/challenges/ChallengesSaveCommand.java
index cb24f56..62ade08 100644
--- a/src/main/java/de/fanta/challenges/commands/challenges/ChallengesSaveCommand.java
+++ b/src/main/java/de/fanta/challenges/commands/challenges/ChallengesSaveCommand.java
@@ -28,29 +28,47 @@
return true;
}
- if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) {
- UUID uuid = plugin.getCurrentEditor().getUniqueId();
- if (plugin.getConfig().getBoolean("firsttimerstart")) {
- ChatUtil.sendNormalMessage(sender, "Challenge wird gespeichert!");
+ if (!args.hasNext()) {
+ if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) {
+ UUID uuid = plugin.getCurrentEditor().getUniqueId();
+ if (plugin.getConfig().getBoolean("firsttimerstart")) {
+ ChatUtil.sendNormalMessage(sender, "Welt wird gespeichert!");
+ try {
+ SaveWorldUtils.saveWorld(uuid.toString());
+ } catch (Exception ex) {
+ Bukkit.getLogger().log(Level.SEVERE, "Could not save world ", ex);
+ ChatUtil.sendErrorMessage(sender, "Welt konnte nicht gespeichert werden!");
+ return true;
+ }
+ ChatUtil.sendNormalMessage(sender, "Welt wurde erfolgreich gespeichert!");
+ } else {
+ ChatUtil.sendErrorMessage(sender, "Die Map wurde noch nicht gestartet!");
+ }
+ return true;
+ } else if (plugin.getCurrentEditor() != null) {
+ ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!");
+ return true;
+ } else {
+ ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!");
+ ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP Kaufen!");
+ return true;
+ }
+ } else {
+ if (sender.hasPermission("challenges.save.admin")) {
+ String next = args.getNext();
+ ChatUtil.sendNormalMessage(sender, "Welt wird gespeichert!");
try {
- SaveWorldUtils.saveWorld(uuid);
+ SaveWorldUtils.saveWorld(next);
} catch (Exception ex) {
Bukkit.getLogger().log(Level.SEVERE, "Could not save world ", ex);
- ChatUtil.sendErrorMessage(sender, "Challenge konnte nicht gespeichert werden!");
+ ChatUtil.sendErrorMessage(sender, "Welt konnte nicht gespeichert werden!");
return true;
}
- ChatUtil.sendNormalMessage(sender, "Challenge wurde erfolgreich gespeichert!");
+ ChatUtil.sendNormalMessage(sender, "Welt wurde erfolgreich gespeichert!");
} else {
- ChatUtil.sendErrorMessage(sender, "Die Challenge wurde noch nicht gestartet!");
+ ChatUtil.sendErrorMessage(sender, "Keine rechte!");
}
- return true;
- } else if (plugin.getCurrentEditor() != null) {
- ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!");
- return true;
- } else {
- ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!");
- ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP Kaufen!");
- return true;
}
+ return true;
}
}
diff --git a/src/main/java/de/fanta/challenges/commands/reset/ResetConfirmCommand.java b/src/main/java/de/fanta/challenges/commands/reset/ResetConfirmCommand.java
index 0c3de31..636f2a4 100644
--- a/src/main/java/de/fanta/challenges/commands/reset/ResetConfirmCommand.java
+++ b/src/main/java/de/fanta/challenges/commands/reset/ResetConfirmCommand.java
@@ -64,8 +64,13 @@
plugin.getTimer().stopTimer();
plugin.getTimer().setTime(0);
for (Player p : Bukkit.getOnlinePlayers()) {
- p.sendTitle(ChatColor.of("#0ddead") + "Server wird zurückgesetzt!", ChatColor.RED + "Bitte warte einen Moment" + ChatColor.of("#0ddead") + "." + ChatColor.AQUA + "." + ChatColor.YELLOW + ".", 10, 220, 10);
- GlobalApi.portOnlinePlayerToLocation(p.getName(), "challenge");
+ if (Bukkit.getMotd().equalsIgnoreCase("Challenge")) {
+ p.sendTitle(ChatColor.of("#0ddead") + "Server wird zurückgesetzt!", ChatColor.RED + "Bitte warte einen Moment" + ChatColor.of("#0ddead") + "." + ChatColor.AQUA + "." + ChatColor.YELLOW + ".", 10, 220, 10);
+ GlobalApi.portOnlinePlayerToLocation(p.getName(), "challenge");
+ } else if (Bukkit.getMotd().equalsIgnoreCase("Adventure")) {
+ p.sendTitle(ChatColor.of("#0ddead") + "Server wird gestoppt!", ChatColor.RED + "Bitte warte einen Moment" + ChatColor.of("#0ddead") + "." + ChatColor.AQUA + "." + ChatColor.YELLOW + ".", 10, 220, 10);
+ GlobalApi.portOnlinePlayerToLocation(p.getName(), "adventure");
+ }
}
plugin.getConfig().set("World_Name", Bukkit.getWorlds().get(0).getName());
plugin.getConfig().set("World_Reset", true);
diff --git a/src/main/java/de/fanta/challenges/commands/timer/TimerStartCommand.java b/src/main/java/de/fanta/challenges/commands/timer/TimerStartCommand.java
index 2ef3a65..080b494 100644
--- a/src/main/java/de/fanta/challenges/commands/timer/TimerStartCommand.java
+++ b/src/main/java/de/fanta/challenges/commands/timer/TimerStartCommand.java
@@ -31,7 +31,7 @@
World world = Bukkit.getWorld("world");
world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, true);
plugin.getTimer().startTimer();
- ChatUtil.sendBrodcastMessage(ChatUtil.GREEN + " Der Timer wird fortgesetzt!");
+ ChatUtil.sendBrodcastMessage(ChatUtil.GREEN + "Der Timer wird fortgesetzt!");
} else {
ChatUtil.sendWarningMessage(sender, "Der Timer läuft bereits!");
}
diff --git a/src/main/java/de/fanta/challenges/guis/ResetGui.java b/src/main/java/de/fanta/challenges/guis/ResetGui.java
index 91f4e93..7f4e705 100644
--- a/src/main/java/de/fanta/challenges/guis/ResetGui.java
+++ b/src/main/java/de/fanta/challenges/guis/ResetGui.java
@@ -11,22 +11,37 @@
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.Inventory;
+import org.bukkit.inventory.ItemStack;
public class ResetGui implements Listener {
+ private static final Challenges plugin = Challenges.getPlugin();
+
+ private static final int CAVES_AND_CLIFF_INDEX = 0;
private static final int RESET_INDEX = 2;
+ private static final int SEED_INDEX = 4;
+
public static final int INVENTORY_SIZE = 5;
public static final Inventory RESET_GUI = Bukkit.createInventory(null, InventoryType.HOPPER, Challenges.GUIPREFIX + " >> Reset");
+ public static String seed = "";
+
public static void createResetGUI(Player p) {
- RESET_GUI.setItem(RESET_INDEX, GUIUtils.createGuiItem(Material.REPEATING_COMMAND_BLOCK, ChatColor.DARK_RED + "Server resetten", ChatColor.RED + "Wenn du denn Server resettest wird", ChatColor.RED + "der Server komplett zurückgesetzt", ChatColor.RED + "und du musst von vorne beginnen!"));
+ RESET_GUI.setItem(RESET_INDEX, GUIUtils.createGuiItem(Material.REPEATING_COMMAND_BLOCK, ChatColor.DARK_RED + "Server resetten", ChatColor.RED + "Wenn du denn Server resettest wird", ChatColor.RED + "der Server komplett zurückgesetzt", ChatColor.RED + "und du musst von vorne beginnen!"));
+ if (plugin.getConfig().getBoolean("1-18-datapack")) {
+ RESET_GUI.setItem(CAVES_AND_CLIFF_INDEX, GUIUtils.createGuiItem(Material.POINTED_DRIPSTONE, ChatColor.GREEN + "Caves and Cliff Welt (1.18)", true));
+ } else {
+ RESET_GUI.setItem(CAVES_AND_CLIFF_INDEX, GUIUtils.createGuiItem(Material.POINTED_DRIPSTONE, ChatColor.RED + "Caves and Cliff Welt (1.18)", false));
+ }
+ RESET_GUI.setItem(SEED_INDEX, GUIUtils.createGuiItem(Material.FILLED_MAP, ChatColor.GREEN + "Seed: " + seed));
for (int i = 0; i < INVENTORY_SIZE; i++) {
- if (RESET_GUI.getItem(i) == null || RESET_GUI.getItem(i).getType() == Material.AIR) {
+ ItemStack item = RESET_GUI.getItem(i);
+ if (item == null || item.getType() == Material.AIR) {
RESET_GUI.setItem(i, GUIUtils.EMPTY_ICON);
}
}
- p.openInventory(RESET_GUI);
+ p.openInventory(RESET_GUI);
}
@EventHandler
@@ -34,9 +49,16 @@
int slot = e.getRawSlot();
Player p = (Player) e.getWhoClicked();
if (RESET_GUI.equals(e.getClickedInventory())) {
- if (slot == RESET_INDEX) {
- Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "reset confirm");
- p.closeInventory();
+ switch (slot) {
+ case RESET_INDEX -> Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "reset confirm " + plugin.getConfig().getBoolean("1-18-datapack") + " " + seed);
+ case CAVES_AND_CLIFF_INDEX -> {
+ if (plugin.getConfig().getBoolean("1-18-datapack")) {
+ plugin.getConfig().set("1-18-datapack", false);
+ } else {
+ plugin.getConfig().set("1-18-datapack", true);
+ }
+ createResetGUI(p);
+ }
}
e.setCancelled(true);
}
diff --git a/src/main/java/de/fanta/challenges/guis/TimerGui.java b/src/main/java/de/fanta/challenges/guis/TimerGui.java
index 054e4a9..324ec60 100644
--- a/src/main/java/de/fanta/challenges/guis/TimerGui.java
+++ b/src/main/java/de/fanta/challenges/guis/TimerGui.java
@@ -21,6 +21,8 @@
public static final int INVENTORY_SIZE = 27;
public static final Inventory TIMER_GUI = Bukkit.createInventory(null, INVENTORY_SIZE, Challenges.GUIPREFIX + " >> Timer");
+ private static final int SHOWTIMER_INDEX = 13;
+
public static void createTimerGUI(Player p) {
if (plugin.getTimer().isReverse()) {
@@ -28,6 +30,11 @@
} else {
TIMER_GUI.setItem(11, GUIUtils.createGuiItem(Material.MAGENTA_GLAZED_TERRACOTTA, ChatColor.GREEN + "Timer Richtung - vorwärts"));
}
+ if (plugin.getConfig().getBoolean("showtimer")) {
+ TIMER_GUI.setItem(SHOWTIMER_INDEX, GUIUtils.createGuiItem(Material.OBSERVER, ChatColor.GREEN + "Timer wird angezeigt!", true));
+ } else {
+ TIMER_GUI.setItem(SHOWTIMER_INDEX, GUIUtils.createGuiItem(Material.OBSERVER, ChatColor.RED + "Timer wird nicht angezeigt!", false));
+ }
if (plugin.getTimer().isRunning()) {
TIMER_GUI.setItem(15, GUIUtils.createGuiItem(Material.CLOCK, ChatColor.GREEN + "Timer gestartet", true));
} else {
@@ -73,6 +80,15 @@
GUIUtils.sendTitleToAll("Timer", "Der Timer läuft jetzt rückwärts.", ChatColor.AQUA);
}
p.closeInventory();
+ } else if (slot == SHOWTIMER_INDEX) {
+ if (plugin.getConfig().getBoolean("showtimer")) {
+ plugin.getConfig().set("showtimer", false);
+ GUIUtils.sendTitleToAll("Timer", "Der Timer wird jetzt nicht mehr angezeigt!", ChatColor.RED);
+ } else {
+ plugin.getConfig().set("showtimer", true);
+ GUIUtils.sendTitleToAll("Timer", "Der Timer wird jetzt wieder angezeigt!", ChatColor.GREEN);
+ }
+ createTimerGUI(p);
}
e.setCancelled(true);
}
diff --git a/src/main/java/de/fanta/challenges/guis/settingsgui/OtherSettingsGui.java b/src/main/java/de/fanta/challenges/guis/settingsgui/OtherSettingsGui.java
index a58a636..bbf36b6 100644
--- a/src/main/java/de/fanta/challenges/guis/settingsgui/OtherSettingsGui.java
+++ b/src/main/java/de/fanta/challenges/guis/settingsgui/OtherSettingsGui.java
@@ -22,6 +22,8 @@
private static final int DMG_INCHAT_INDEX = 11;
private static final int TNT_DEATH_INDEX = 12;
private static final int TAB_HP_INDEX = 13;
+ private static final int DIREKT_SMLET_INDEX = 14;
+ private static final int FAST_FURNACE_INDEX = 15;
private static final int BACKPACK_ADD_INDEX = 1;
private static final int BACKPACK_REMOVE_INDEX = 19;
@@ -60,6 +62,17 @@
} else {
OTHER_SETTINGS_GUI.setItem(TAB_HP_INDEX, GUIUtils.createGuiItem(Material.HEART_OF_THE_SEA, ChatColor.RED + "Herzen in der Tablist anzeigen deaktiviert"));
}
+ if (plugin.getConfig().getBoolean("silkore")) {
+ OTHER_SETTINGS_GUI.setItem(DIREKT_SMLET_INDEX, GUIUtils.createGuiItem(Material.IRON_INGOT, ChatColor.GREEN + "Abgebaute Erze droppen Barren aktiviert", true));
+ } else {
+ OTHER_SETTINGS_GUI.setItem(DIREKT_SMLET_INDEX, GUIUtils.createGuiItem(Material.IRON_INGOT, ChatColor.RED + "Abgebaute Erze droppen Barren deaktiviert"));
+ }
+ if (plugin.getConfig().getBoolean("speedfurnace.enabled")) {
+ OTHER_SETTINGS_GUI.setItem(FAST_FURNACE_INDEX, GUIUtils.createGuiItem(Material.FURNACE, ChatColor.GREEN + "Schneller Ofen aktiviert", true));
+ } else {
+ OTHER_SETTINGS_GUI.setItem(FAST_FURNACE_INDEX, GUIUtils.createGuiItem(Material.FURNACE, ChatColor.RED + "Schneller Ofen deaktiviert"));
+ }
+
OTHER_SETTINGS_GUI.setItem(BACK_INDEX, GUIUtils.createGuiItem(Material.ARROW, ChatColor.GREEN + "Zurück"));
OTHER_SETTINGS_GUI.setItem(CLOSE_IDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatColor.RED + "Menü verlassen!"));
@@ -117,6 +130,24 @@
}
plugin.getSBManager().updateTabHP();
break;
+ case DIREKT_SMLET_INDEX:
+ if (plugin.getConfig().getBoolean("silkore")) {
+ GUIUtils.sendTitleToAll("Einstellungen", "Abgebaute Erze droppen Barren deaktiviert", ChatColor.RED);
+ GUIUtils.setConfig("silkore", false);
+ } else {
+ GUIUtils.sendTitleToAll("Einstellungen", "Abgebaute Erze droppen Barren aktiviert", ChatColor.GREEN);
+ GUIUtils.setConfig("silkore", true);
+ }
+ break;
+ case FAST_FURNACE_INDEX:
+ if (plugin.getConfig().getBoolean("speedfurnace.enabled")) {
+ GUIUtils.sendTitleToAll("Einstellungen", "Schneller Ofen deaktiviert", ChatColor.RED);
+ GUIUtils.setConfig("speedfurnace.enabled", false);
+ } else {
+ GUIUtils.sendTitleToAll("Einstellungen", "Schneller Ofen aktiviert", ChatColor.GREEN);
+ GUIUtils.setConfig("speedfurnace.enabled", true);
+ }
+ break;
}
createOtherSettingsGUI(p);
switch (slot) {
diff --git a/src/main/java/de/fanta/challenges/listeners/BlockDestroyListener.java b/src/main/java/de/fanta/challenges/listeners/BlockDestroyListener.java
index f1b60e1..2bc69b6 100644
--- a/src/main/java/de/fanta/challenges/listeners/BlockDestroyListener.java
+++ b/src/main/java/de/fanta/challenges/listeners/BlockDestroyListener.java
@@ -5,9 +5,11 @@
import de.iani.cubesideutils.bukkit.items.ItemGroups;
import org.bukkit.GameMode;
import org.bukkit.Material;
+import org.bukkit.block.Block;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
+import org.bukkit.event.block.BlockDropItemEvent;
import org.bukkit.event.block.BlockExplodeEvent;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.inventory.ItemStack;
@@ -24,21 +26,38 @@
}
if ((!plugin.getTimer().isRunning()) && e.getPlayer().getGameMode() == GameMode.SURVIVAL) {
e.setCancelled(true);
- }
+ }
if (plugin.getConfig().getString("event.type").equals("build") && plugin.getTimer().isRunning()) {
Material blockType = e.getBlock().getType();
- if (!ItemTypeListUtil.isInstaBreakBlock(blockType) && !ItemGroups.isDoubleBlockPlant(blockType) && !ItemGroups.isSingleBlockPlant(blockType)) { //TODO VOLLKORN :>
+ if (!ItemTypeListUtil.isInstaBreakBlock(blockType) && !ItemGroups.isDoubleBlockPlant(blockType) && !ItemGroups.isSingleBlockPlant(blockType)) { //TODO VOLLKORN :>
plugin.getScoreManager().updateScore(e.getPlayer(), 1);
}
}
}
-
+
+ @EventHandler
+ public void onBlockDrop(BlockDropItemEvent e) {
+ if (plugin.getConfig().getBoolean("silkore")) {
+ Block block = e.getBlock();
+ Material dropType = switch (e.getBlockState().getType()) {
+ case IRON_ORE, DEEPSLATE_IRON_ORE -> Material.IRON_INGOT;
+ case GOLD_ORE, DEEPSLATE_GOLD_ORE -> Material.GOLD_INGOT;
+ case COPPER_ORE, DEEPSLATE_COPPER_ORE -> Material.COPPER_INGOT;
+ default -> null;
+ };
+ if(dropType != null) {
+ e.getItems().forEach(item -> block.getLocation().getWorld().dropItem(block.getLocation(), new ItemStack(dropType, item.getItemStack().getAmount())));
+ e.setCancelled(true);
+ }
+ }
+ }
+
@EventHandler
public void onBlockExplode(BlockExplodeEvent e) {
if (this.plugin.getConfig().getBoolean("rnddrops")) {
e.blockList().forEach(block -> {
- if(!block.getType().isAir()){
- block.getWorld().dropItem(block.getLocation().add(0.5D, 0.5D, 0.5D),new ItemStack(this.plugin.getRandomDropsManager().getMaterialFromBlock(block)));
+ if (!block.getType().isAir()) {
+ block.getWorld().dropItem(block.getLocation().add(0.5D, 0.5D, 0.5D), new ItemStack(this.plugin.getRandomDropsManager().getMaterialFromBlock(block)));
block.setType(Material.AIR);
}
});
diff --git a/src/main/java/de/fanta/challenges/listeners/CommandBlockListener.java b/src/main/java/de/fanta/challenges/listeners/CommandBlockListener.java
new file mode 100644
index 0000000..40458cc
--- /dev/null
+++ b/src/main/java/de/fanta/challenges/listeners/CommandBlockListener.java
@@ -0,0 +1,29 @@
+package de.fanta.challenges.listeners;
+
+import org.bukkit.command.ConsoleCommandSender;
+import org.bukkit.command.ProxiedCommandSender;
+import org.bukkit.command.RemoteConsoleCommandSender;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.server.ServerCommandEvent;
+
+public class CommandBlockListener implements Listener {
+
+ @EventHandler
+ public void onDispatchCommandBlockCommand(ServerCommandEvent e) {
+
+ if (e.getSender() instanceof ConsoleCommandSender || e.getSender() instanceof ProxiedCommandSender || e.getSender() instanceof RemoteConsoleCommandSender) {
+ return;
+ }
+ if (e.getCommand().startsWith("/")) {
+ String command = e.getCommand().replaceFirst("/", "");
+ if (!command.startsWith("minecraft:")) {
+ e.setCommand("minecraft:" + command);
+ }
+ } else {
+ if (!e.getCommand().startsWith("minecraft:")) {
+ e.setCommand("minecraft:" + e.getCommand());
+ }
+ }
+ }
+}
diff --git a/src/main/java/de/fanta/challenges/listeners/DamageListener.java b/src/main/java/de/fanta/challenges/listeners/DamageListener.java
index 7d3671d..602b53e 100644
--- a/src/main/java/de/fanta/challenges/listeners/DamageListener.java
+++ b/src/main/java/de/fanta/challenges/listeners/DamageListener.java
@@ -41,7 +41,7 @@
if (e.getFinalDamage() > 0) {
if (e.getCause() == DamageCause.FALL) {
if (plugin.getConfig().getBoolean("deathonfall")) {
- if (plugin.getConfig().getBoolean("dmginchat")) { ;
+ if (plugin.getConfig().getBoolean("dmginchat")) {
ChatUtil.sendBrodcastMessage(ChatUtil.BLUE + p.getName() + ChatUtil.GREEN + " hat " + ChatUtil.ORANGE + dmg + ChatUtil.GREEN + " HP Schaden genommen durch " + ChatUtil.ORANGE + e.getCause());
}
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> p.setHealth(0), 1);
diff --git a/src/main/java/de/fanta/challenges/listeners/EventRegistration.java b/src/main/java/de/fanta/challenges/listeners/EventRegistration.java
new file mode 100644
index 0000000..0a6a06e
--- /dev/null
+++ b/src/main/java/de/fanta/challenges/listeners/EventRegistration.java
@@ -0,0 +1,39 @@
+package de.fanta.challenges.listeners;
+
+import de.fanta.challenges.Challenges;
+import de.fanta.challenges.guis.ResetGui;
+import de.fanta.challenges.guis.TimerGui;
+import de.fanta.challenges.guis.eventgui.EventGui;
+import de.fanta.challenges.guis.eventgui.EventItemsGui;
+import de.fanta.challenges.guis.settingsgui.MainGui;
+import de.fanta.challenges.guis.settingsgui.OtherSettingsGui;
+import de.fanta.challenges.guis.settingsgui.ServerSettingsGui;
+import de.fanta.challenges.guis.settingsgui.SettingsGui;
+import org.bukkit.Bukkit;
+import org.bukkit.plugin.PluginManager;
+
+public record EventRegistration(Challenges plugin) {
+ public static final PluginManager pM = Bukkit.getPluginManager();
+ public void registerEvents() {
+ pM.registerEvents(new InventoryClickListener(), plugin);
+ pM.registerEvents(new QuitJoinListener(), plugin);
+ pM.registerEvents(new BlockDestroyListener(), plugin);
+ pM.registerEvents(new BlockCreateListener(), plugin);
+ pM.registerEvents(new InteractListener(), plugin);
+ pM.registerEvents(new DamageListener(), plugin);
+ pM.registerEvents(new DeathListener(), plugin);
+ pM.registerEvents(new PlayerListener(), plugin);
+ pM.registerEvents(new VoidListener(), plugin);
+ pM.registerEvents(new TimerGui(), plugin);
+ pM.registerEvents(new ResetGui(), plugin);
+ pM.registerEvents(new MainGui(), plugin);
+ pM.registerEvents(new SettingsGui(), plugin);
+ pM.registerEvents(new ServerSettingsGui(), plugin);
+ pM.registerEvents(new OtherSettingsGui(), plugin);
+ pM.registerEvents(new EventGui(), plugin);
+ pM.registerEvents(new BingoListener(), plugin);
+ pM.registerEvents(new EventItemsGui(), plugin);
+ pM.registerEvents(new FurnaceListener(), plugin);
+ pM.registerEvents(new CommandBlockListener(), plugin);
+ }
+}
diff --git a/src/main/java/de/fanta/challenges/listeners/FurnaceListener.java b/src/main/java/de/fanta/challenges/listeners/FurnaceListener.java
new file mode 100644
index 0000000..dcca253
--- /dev/null
+++ b/src/main/java/de/fanta/challenges/listeners/FurnaceListener.java
@@ -0,0 +1,58 @@
+package de.fanta.challenges.listeners;
+
+import de.fanta.challenges.Challenges;
+import de.fanta.challenges.utils.ChatUtil;
+import org.bukkit.Bukkit;
+import org.bukkit.OfflinePlayer;
+import org.bukkit.block.Block;
+import org.bukkit.block.BlockState;
+import org.bukkit.block.Furnace;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.block.BlockPlaceEvent;
+import org.bukkit.event.player.PlayerInteractEvent;
+import org.bukkit.metadata.FixedMetadataValue;
+import org.bukkit.metadata.MetadataValue;
+
+import java.util.Optional;
+import java.util.UUID;
+
+public class FurnaceListener implements Listener {
+
+ private static final String META_PLACED_BY_PLAYER = "PlacedByPlayer";
+
+ private final Challenges plugin = Challenges.getPlugin();
+
+ @EventHandler
+ public void onFurnacePlace(BlockPlaceEvent e) {
+ BlockState state = e.getBlockPlaced().getState();
+ if(state instanceof Furnace furnace) {
+ if (plugin.getConfig().getBoolean("speedfurnace.enabled")) {
+ furnace.setCookSpeedMultiplier(10.0);
+ }
+ furnace.setMetadata(META_PLACED_BY_PLAYER, new FixedMetadataValue(plugin, e.getPlayer().getUniqueId().toString()));
+ furnace.update();
+ }
+ }
+
+ @EventHandler
+ public void onInteract(PlayerInteractEvent e) {
+ if (plugin.getConfig().getBoolean("event.enabled")) {
+ Block block = e.getClickedBlock();
+ if(block != null) {
+ BlockState state = block.getState();
+ if(state instanceof Furnace furnace && furnace.hasMetadata(META_PLACED_BY_PLAYER)) {
+ Optional valueOptional = furnace.getMetadata(META_PLACED_BY_PLAYER).stream().filter(metadataValue -> metadataValue.getOwningPlugin().equals(plugin)).findFirst();
+ if(valueOptional.isPresent()){
+ UUID uuid = UUID.fromString(valueOptional.get().asString());
+ if(!e.getPlayer().getUniqueId().equals(uuid)) {
+ e.setCancelled(true);
+ }
+ ChatUtil.sendNormalMessage(e.getPlayer(), "Dieser Ofen gehört: " + Bukkit.getOfflinePlayer(uuid).getName());
+ }
+ }
+ }
+ }
+
+ }
+}
diff --git a/src/main/java/de/fanta/challenges/listeners/PlayerListener.java b/src/main/java/de/fanta/challenges/listeners/PlayerListener.java
index 93d7fc8..a97573a 100644
--- a/src/main/java/de/fanta/challenges/listeners/PlayerListener.java
+++ b/src/main/java/de/fanta/challenges/listeners/PlayerListener.java
@@ -22,9 +22,12 @@
import org.bukkit.inventory.ItemStack;
import org.bukkit.scheduler.BukkitRunnable;
import org.kitteh.vanish.event.VanishStatusChangeEvent;
+import org.spigotmc.event.player.PlayerSpawnLocationEvent;
import java.util.Objects;
+import static org.bukkit.Bukkit.getServer;
+
public class PlayerListener implements Listener {
private final Challenges plugin = Challenges.getPlugin();
@@ -97,7 +100,7 @@
public void onPayerMove(PlayerMoveEvent e) {
Player player = e.getPlayer();
Location playerloc = player.getLocation();
- if (!plugin.getConfig().getBoolean("firsttimerstart")) {
+ if (!plugin.getConfig().getBoolean("firsttimerstart") && (Bukkit.getMotd().equalsIgnoreCase("Challenge"))) {
if (!plugin.getTimer().isRunning() && player.getGameMode() == GameMode.SURVIVAL) {
Location spawn = e.getPlayer().getWorld().getSpawnLocation();
if (playerloc.distance(spawn) > 20) {
@@ -148,6 +151,15 @@
}
@EventHandler
+ public void onBucketChatchFish(PlayerBucketEntityEvent e) {
+ ItemStack itemStack = e.getEntityBucket();
+ Bingo bingo = plugin.getBingo();
+ if (bingo.isRunning()) {
+ bingo.addDiscoveredItem(e.getPlayer(), itemStack);
+ }
+ }
+
+ @EventHandler
public void onBucketEmpty(PlayerBucketEmptyEvent e) {
ItemStack itemStack = e.getItemStack();
Player player = e.getPlayer();
@@ -169,6 +181,18 @@
Location spawn = Bukkit.getWorlds().get(1).getSpawnLocation();
e.setRespawnLocation(spawn);
}
+
+ if (!e.isBedSpawn() && !e.isAnchorSpawn()) {
+ e.setRespawnLocation(getServer().getWorlds().get(0).getSpawnLocation().add(0.5, 0.0, 0.5));
+ }
+ }
+
+ @EventHandler
+ public void onPlayerSpawn(PlayerSpawnLocationEvent e) {
+ if (!e.getPlayer().hasPlayedBefore()) {
+ e.setSpawnLocation(getServer().getWorlds().get(0).getSpawnLocation().add(0.5, 0.0, 0.5));
+ }
+
}
@EventHandler
@@ -201,7 +225,9 @@
plugin.updateEditor();
}
} else {
- plugin.getSBManager().setScoreboard(p);
+ if (Bukkit.getMotd().equalsIgnoreCase("Challenge")) {
+ plugin.getSBManager().setScoreboard(p);
+ }
if (plugin.getCurrentEditor() == null) {
plugin.setCurrentEditor(p);
}
diff --git a/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java b/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java
index 6d04640..e73d31a 100644
--- a/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java
+++ b/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java
@@ -5,15 +5,10 @@
import de.fanta.challenges.events.PlayerCountChangedEvent;
import de.fanta.challenges.events.ServerStatusChangedEvent;
import de.fanta.challenges.utils.ChatUtil;
-import de.speedy64.globalport.GlobalApi;
import net.md_5.bungee.api.ChatColor;
import org.bukkit.Bukkit;
-import org.bukkit.GameRule;
import org.bukkit.Location;
-import org.bukkit.Server;
-import org.bukkit.World;
import org.bukkit.entity.Player;
-import org.bukkit.entity.Spider;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
@@ -25,7 +20,6 @@
public class QuitJoinListener implements Listener {
private final Challenges plugin = Challenges.getPlugin();
- private int resetTaskId = -1;
@EventHandler
public void onPlayerJoin(PlayerJoinEvent e) {
@@ -38,46 +32,54 @@
if (plugin.CavesAndCliffs) {
if (Via.getAPI().getPlayerVersion(p.getUniqueId()) < 755) {
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> {
- p.kickPlayer("Du musst mit Minecraft 1.17 Joinen");
+ p.kickPlayer("Du musst mit Minecraft " + Bukkit.getServer().getMinecraftVersion() + " Joinen");
}, 3L);
}
}
- if (resetTaskId > 0) {
- Bukkit.getScheduler().cancelTask(resetTaskId);
- resetTaskId = -1;
+ if (plugin.resetTaskId > 0) {
+ plugin.stopResetTask();
}
+
+ if (plugin.texturepacklink != null) {
+ p.setResourcePack(plugin.texturepacklink);
+ }
+
if (plugin.getConfig().getBoolean("nether.enabled") && !p.hasPlayedBefore()) {
Location netherspawn = Bukkit.getWorlds().get(1).getSpawnLocation();
p.teleport(netherspawn);
}
- if (plugin.getVanish().isVanish(p)) {
- ChatUtil.sendNormalMessage(p, "Du bist im Vanish, niemand weiß, dass du in der Lobby bist.");
- return;
- }
- ChatUtil.sendBrodcastMessage(ChatUtil.BLUE + p.getName() + ChatUtil.GREEN + " hat die Lobby betreten! " + ChatColor.of("#E4E737") + "[" + (Bukkit.getServer().getOnlinePlayers().size() - plugin.getVanish().countVanishPlayers()) + "/" + Bukkit.getServer().getMaxPlayers() + "]");
- e.setJoinMessage(null);
- if (plugin.getConfig().getBoolean("sharedmg")) {
- int rnd = new Random().nextInt(Bukkit.getOnlinePlayers().size());
- Player rp = (Player) Bukkit.getServer().getOnlinePlayers().toArray()[rnd];
- p.setHealth(rp.getHealth());
- }
- plugin.getSBManager().setScoreboard(p);
-
- if (plugin.getCurrentEditor() == null) {
- Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> {
- if (p.hasPermission("Challenges.editor")) {
- plugin.setCurrentEditor(p);
-
- } else {
- ChatUtil.sendWarningMessage(p, "Es ist aktuell kein Editor in dieser Lobby");
- ChatUtil.sendWarningMessage(p, "Um selbst Editor zu werden musst du VIP sein!");
+ Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> {
+ if (!plugin.getVanish().isVanish(p)) {
+ ChatUtil.sendBrodcastMessage(ChatUtil.BLUE + p.getName() + ChatUtil.GREEN + " hat die Lobby betreten! " + ChatColor.of("#E4E737") + "[" + (Bukkit.getServer().getOnlinePlayers().size() - plugin.getVanish().countVanishPlayers()) + "/" + Bukkit.getServer().getMaxPlayers() + "]");
+ e.setJoinMessage(null);
+ if (plugin.getConfig().getBoolean("sharedmg")) {
+ int rnd = new Random().nextInt(Bukkit.getOnlinePlayers().size());
+ Player rp = (Player) Bukkit.getServer().getOnlinePlayers().toArray()[rnd];
+ p.setHealth(rp.getHealth());
}
- }, 1L);
- } else {
- ChatUtil.sendNormalMessage(p, plugin.getCurrentEditor().getName() + " ist der Editor dieser Lobby!");
- }
+ if (Bukkit.getMotd().equalsIgnoreCase("Challenge")) {
+ plugin.getSBManager().setScoreboard(p);
+ }
+ if (plugin.getCurrentEditor() == null) {
+ Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> {
+ if (p.hasPermission("Challenges.editor")) {
+ plugin.setCurrentEditor(p);
+
+ } else {
+ ChatUtil.sendWarningMessage(p, "Es ist aktuell kein Editor in dieser Lobby");
+ ChatUtil.sendWarningMessage(p, "Um selbst Editor zu werden musst du VIP sein!");
+ }
+ }, 1L);
+ } else {
+ ChatUtil.sendNormalMessage(p, plugin.getCurrentEditor().getName() + " ist der Editor dieser Lobby!");
+ }
+ } else {
+ ChatUtil.sendNormalMessage(p, "Du bist im Vanish, niemand weiß, dass du in der Lobby bist.");
+ }
+ }, 1L);
+
Bukkit.getPluginManager().callEvent(new PlayerCountChangedEvent(Bukkit.getOnlinePlayers().size() - plugin.getVanish().countVanishPlayers()));
}
@@ -98,37 +100,26 @@
plugin.getTimer().stopTimer();
}
+ if (Bukkit.getServer().getOnlinePlayers().size() - 1 == 0) {
+ plugin.startResetTask();
+ }
+
if (!plugin.getVanish().isVanish(player)) {
e.setQuitMessage(null);
ChatUtil.sendBrodcastMessage(ChatUtil.BLUE + player.getName() + ChatColor.of("#C45B3D") + " hat die Lobby verlassen! " + ChatColor.of("#E4E737") + "[" + (Bukkit.getServer().getOnlinePlayers().size() - plugin.getVanish().countVanishPlayers() - 1) + "/" + Bukkit.getServer().getMaxPlayers() + "]");
this.plugin.getSBManager().removeScoreboard(player);
- if (Bukkit.getServer().getOnlinePlayers().size() - 1 == 0) {
- System.out.println("Reset ohne Vanish");
- resetTaskId = Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> {
- Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "reset confirm");
- }, 10 * 60 * 20);
- if (plugin.getCurrentEditor() != null && player.getUniqueId().equals(plugin.getCurrentEditor().getUniqueId())) {
- plugin.updateEditor();
- } else {
- plugin.setCurrentEditor(null);
- }
- }
-
Bukkit.getPluginManager().callEvent(new PlayerCountChangedEvent(Bukkit.getOnlinePlayers().size() - plugin.getVanish().countVanishPlayers() - 1));
+ if (player == plugin.getCurrentEditor()) {
+ plugin.updateEditor();
+ }
+
if (plugin.isWaitingForShutdown() && Bukkit.getOnlinePlayers().size() == 1) {
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> {
Bukkit.getPluginManager().callEvent(new ServerStatusChangedEvent(false));
}, 1L);
}
- } else {
- if (Bukkit.getServer().getOnlinePlayers().size() - 1 == 0) {
- System.out.println("Reset mit Vanish");
- resetTaskId = Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> {
- Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "reset confirm");
- }, 10 * 60 * 20);
- }
}
}
}
diff --git a/src/main/java/de/fanta/challenges/listeners/VoidListener.java b/src/main/java/de/fanta/challenges/listeners/VoidListener.java
index 76fb3d5..7efb540 100644
--- a/src/main/java/de/fanta/challenges/listeners/VoidListener.java
+++ b/src/main/java/de/fanta/challenges/listeners/VoidListener.java
@@ -13,6 +13,7 @@
import java.util.Arrays;
import java.util.List;
import java.util.Random;
+import java.util.stream.Collectors;
public class VoidListener implements Listener {
@@ -30,7 +31,7 @@
public void startTask() {
Random random = new Random();
Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, () -> {
- List materials = Arrays.asList(Material.values());
+ List materials = Arrays.stream(Material.values()).filter(mat -> (mat.isBlock() && mat != Material.AIR && mat != Material.CAVE_AIR && mat != Material.VOID_AIR)).collect(Collectors.toList());
ItemStack randomItem = new ItemStack(materials.get(random.nextInt(materials.size())));
World world = Bukkit.getWorld("VOID");
Location loc = new Location(world, 0.5, 61, 0.5);
diff --git a/src/main/java/de/fanta/challenges/scoreboard/ScoreBoardManager.java b/src/main/java/de/fanta/challenges/scoreboard/ScoreBoardManager.java
index e96f125..77cfe06 100644
--- a/src/main/java/de/fanta/challenges/scoreboard/ScoreBoardManager.java
+++ b/src/main/java/de/fanta/challenges/scoreboard/ScoreBoardManager.java
@@ -35,7 +35,9 @@
public void setScoreboard(Player p) {
if (this.scoreboard == null) {
- initScoreboard();
+ if (Bukkit.getMotd().equalsIgnoreCase("Challenge")) {
+ initScoreboard();
+ }
}
team.addEntry(p.getName());
@@ -45,14 +47,18 @@
public void removeScoreboard(Player p) {
if (team != null) {
- team.removeEntry(p.getName());
- p.setScoreboard(scoreboard);
+ if (Bukkit.getMotd().equalsIgnoreCase("Challenge")) {
+ team.removeEntry(p.getName());
+ p.setScoreboard(scoreboard);
+ }
}
}
public void addScoreboard(Player p) {
- team.addEntry(p.getName());
- p.setScoreboard(scoreboard);
+ if (Bukkit.getMotd().equalsIgnoreCase("Challenge")) {
+ team.addEntry(p.getName());
+ p.setScoreboard(scoreboard);
+ }
}
public void updateTabHP() {
diff --git a/src/main/java/de/fanta/challenges/utils/SaveWorldUtils.java b/src/main/java/de/fanta/challenges/utils/SaveWorldUtils.java
index 45f3c22..ca34301 100644
--- a/src/main/java/de/fanta/challenges/utils/SaveWorldUtils.java
+++ b/src/main/java/de/fanta/challenges/utils/SaveWorldUtils.java
@@ -9,14 +9,13 @@
import java.io.File;
import java.io.IOException;
-import java.util.UUID;
import java.util.logging.Level;
public class SaveWorldUtils {
private static final Challenges plugin = Challenges.getPlugin();
- public static void saveWorld(UUID uuid) {
+ public static void saveWorld(String uuid) {
Challenges.getPlugin().getConfig().set("timertime", Challenges.getPlugin().getTimer().getTime());
Challenges.getPlugin().saveConfig();
Challenges.getPlugin().getConfig().set("backpack_size", Challenges.getPlugin().getBackpack().getSize() / 9);
@@ -37,32 +36,38 @@
nms.getWorldUtils().saveWorldNow(world_end);
nms.getWorldUtils().saveWorldNow(world_nether);
}
- File dir = new File(uuid.toString());
+ File dir = new File(uuid);
File configs = new File("plugins/Challenges");
File end = new File("world_the_end");
File nether = new File("world_nether");
File world = new File("world");
- File saveend = new File(uuid.toString() + "/world_the_end");
- File savenether = new File(uuid.toString() + "/world_nether");
- File saveworld = new File(uuid.toString() + "/world");
- File saveconfigs = new File(uuid.toString() + "/Challenges");
+ File saveend = new File(uuid + "/world_the_end");
+ File savenether = new File(uuid + "/world_nether");
+ File saveworld = new File(uuid + "/world");
+ File saveconfigs = new File(uuid + "/Challenges");
if (Bukkit.getMotd().equals("Challenge")) {
File loaddir = new File("/home/minecraft/saves/" + uuid);
- try {
- FileUtils.forceMkdir(dir);
- FileUtils.copyDirectory(configs, saveconfigs);
- FileUtils.copyDirectory(end, saveend);
- FileUtils.copyDirectory(nether, savenether);
- FileUtils.copyDirectory(world, saveworld);
- if (loaddir.isDirectory()) {
- FileUtils.deleteDirectory(loaddir);
- }
- FileUtils.moveDirectory(dir, loaddir);
- } catch (IOException ex) {
- Bukkit.getLogger().log(Level.SEVERE, "Could not save world ", ex);
+ if (!loaddir.isDirectory()) {
+ loaddir.delete();
}
+ try {
+ FileUtils.forceMkdir(dir);
+ FileUtils.copyDirectory(configs, saveconfigs);
+ FileUtils.copyDirectory(end, saveend);
+ FileUtils.copyDirectory(nether, savenether);
+ FileUtils.copyDirectory(world, saveworld);
+ if (loaddir.isDirectory()) {
+ FileUtils.deleteDirectory(loaddir);
+ }
+ FileUtils.moveDirectory(dir, loaddir);
+ } catch (IOException ex) {
+ Bukkit.getLogger().log(Level.SEVERE, "Could not save world ", ex);
+ }
} else if (Bukkit.getMotd().equals("Adventure")) {
File loaddir = new File("/home/minecraft/Adventure-saves/" + uuid);
+ if (!loaddir.isDirectory()) {
+ loaddir.delete();
+ }
try {
FileUtils.forceMkdir(dir);
FileUtils.copyDirectory(configs, saveconfigs);
@@ -75,6 +80,7 @@
FileUtils.moveDirectory(dir, loaddir);
} catch (IOException ex) {
Bukkit.getLogger().log(Level.SEVERE, "Could not save world ", ex);
+ ChatUtil.sendErrorMessage(Bukkit.getPlayer(uuid), "Map konnte nicht richtig gespeichert werden, bitte versuche es noch einmal");
}
} else {
throw new RuntimeException("Motd stimmt nicht überein!");
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index ecffdd6..f2ef5b5 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -26,10 +26,15 @@
maxtime: 600
timertime: 0
firsttimerstart: false
+showtimer: true
Saved_Locations: {}
World_Name: world
World_Reset: false
1-18-datapack: false
+silkore: false
+speedfurnace:
+ enabled: false
+ multiplier: 10.0
event:
enabled: false
type: nix