diff --git a/LobbySystem/src/de/steamwar/lobby/command/ModifyCommand.java b/LobbySystem/src/de/steamwar/lobby/command/ModifyCommand.java new file mode 100644 index 00000000..d782112d --- /dev/null +++ b/LobbySystem/src/de/steamwar/lobby/command/ModifyCommand.java @@ -0,0 +1,88 @@ +/* + * This file is a part of the SteamWar software. + * + * Copyright (C) 2021 SteamWar.de-Serverteam + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package de.steamwar.lobby.command; + +import de.steamwar.command.SWCommand; +import de.steamwar.lobby.LobbySystem; +import de.steamwar.lobby.listener.PlayerSpawn; +import de.steamwar.sql.SteamwarUser; +import de.steamwar.sql.UserPerm; +import org.bukkit.Bukkit; +import org.bukkit.GameMode; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerQuitEvent; + +import java.util.HashSet; +import java.util.Set; + +public class ModifyCommand extends SWCommand implements Listener { + + private static final Set modifying = new HashSet<>(); + + public static boolean modifying(HumanEntity player) { + return modifying.contains(player); + } + + public ModifyCommand() { + super("modify"); + Bukkit.getPluginManager().registerEvents(this, LobbySystem.getPlugin()); + } + + @Register + public void modify(Player player) { + SteamwarUser user = SteamwarUser.get(player.getUniqueId()); + if(!user.hasPerm(UserPerm.ADMINISTRATION)) { + return; + } + + if(modifying(player)) { + modifying.remove(player); + LobbySystem.getEntityServer(true).removePlayer(player); + player.setGameMode(GameMode.ADVENTURE); + player.setOp(false); + PlayerSpawn.giveItems(player); + }else { + modifying.add(player); + LobbySystem.getEntityServer(true).addPlayer(player); + player.setGameMode(GameMode.CREATIVE); + player.setOp(true); + } + } + + @EventHandler + public void onLeave(PlayerQuitEvent event) { + Player player = event.getPlayer(); + + modifying.remove(player); + player.setOp(false); + } + + @Register("waitinghallspawn") + public void setWaitingHallSpawn(Player player) { + SteamwarUser user = SteamwarUser.get(player.getUniqueId()); + if(!user.hasPerm(UserPerm.ADMINISTRATION)) + return; + + LobbySystem.config().setWaitingHallSpawn(player.getLocation()); + } +}