diff --git a/src/de/steamwar/bausystem/BauSystem.java b/src/de/steamwar/bausystem/BauSystem.java index dbc285d..ba26878 100644 --- a/src/de/steamwar/bausystem/BauSystem.java +++ b/src/de/steamwar/bausystem/BauSystem.java @@ -1,7 +1,6 @@ package de.steamwar.bausystem; import de.steamwar.bausystem.commands.*; -import de.steamwar.bausystem.sql.Bauwelt; import de.steamwar.bausystem.world.ArenaSection; import de.steamwar.bausystem.world.RegionListener; import de.steamwar.bausystem.world.TNTListener; @@ -26,7 +25,6 @@ import java.util.logging.Level; public class BauSystem extends JavaPlugin implements Listener { private static BauSystem plugin; private static UUID owner; - private static Bauwelt welt; private static List sections; public static final String PREFIX = "§eBauSystem§8» §7"; public static final String SECTION_PATH = "/home/minecraft/backbone/server/UserBau/"; @@ -42,14 +40,11 @@ public class BauSystem extends JavaPlugin implements Listener { Bukkit.shutdown(); return; } - welt = Bauwelt.getBauwelt(owner); try { - CommandRemover.removeCommand("tp"); + CommandRemover.removeAll("tp", "gamemode", "time"); CommandRemover.injectCommand(new CommandTeleport()); - CommandRemover.removeCommand("gamemode"); CommandRemover.injectCommand(new CommandGamemode()); - CommandRemover.removeCommand("time"); CommandRemover.injectCommand(new CommandTime()); } catch (Exception e) { getLogger().log(Level.SEVERE, "Failed to replace commands", e); @@ -71,12 +66,12 @@ public class BauSystem extends JavaPlugin implements Listener { getCommand("speed").setExecutor(new CommandSpeed()); getCommand("tnt").setExecutor(new CommandTNT()); getCommand("fire").setExecutor(new CommandFire()); + getCommand("freeze").setExecutor(new CommandFreeze()); getCommand("testblock").setExecutor(new CommandTestblock()); getCommand("bau").setExecutor(new CommandBau()); getCommand("bauinfo").setExecutor(new CommandInfo()); getCommand("protect").setExecutor(new CommandProtect()); getCommand("skull").setExecutor(new CommandSkull()); - getCommand("freeze").setExecutor(new CommandFreeze()); getCommand("loader").setExecutor(new CommandLoader()); Bukkit.getPluginManager().registerEvents(this, this); @@ -90,9 +85,6 @@ public class BauSystem extends JavaPlugin implements Listener { public static UUID getOwner(){ return owner; } - public static Bauwelt getWelt(){ - return welt; - } public static List getSections(){ return sections; } diff --git a/src/de/steamwar/bausystem/commands/CommandBau.java b/src/de/steamwar/bausystem/commands/CommandBau.java index c9eb7f2..a57abec 100644 --- a/src/de/steamwar/bausystem/commands/CommandBau.java +++ b/src/de/steamwar/bausystem/commands/CommandBau.java @@ -40,7 +40,7 @@ public class CommandBau implements CommandExecutor { } BauweltMember target = BauweltMember.getBauMember(id); - Welt.toggleTestblock(p, target); + Welt.toggleWorld(p, target); } private boolean negativeToggleCheck(Player p, UUID id){ diff --git a/src/de/steamwar/bausystem/commands/CommandFire.java b/src/de/steamwar/bausystem/commands/CommandFire.java index 9dce0f9..f100ec3 100644 --- a/src/de/steamwar/bausystem/commands/CommandFire.java +++ b/src/de/steamwar/bausystem/commands/CommandFire.java @@ -1,20 +1,40 @@ package de.steamwar.bausystem.commands; -import de.steamwar.bausystem.world.Welt; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.block.BlockBurnEvent; +import org.bukkit.event.block.BlockSpreadEvent; -public class CommandFire implements CommandExecutor { +public class CommandFire extends ToggleCommand { + + public CommandFire(){ + super(true); + } + + public static ToggleCommand getInstance(){ + return getInstance(CommandFire.class); + } @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if(!(sender instanceof Player)) - return false; - Player player = (Player) sender; - - Welt.switchFire(player); - return false; + String getNoPermMessage() { + return "§cDu darfst hier nicht Feuerschaden (de-)aktivieren"; } + @Override + String getEnableMessage(){ + return "§cFeuerschaden deaktiviert"; + } + @Override + String getDisableMessage(){ + return "§aFeuerschaden aktiviert"; + } + + @EventHandler + public void onFireDamage(BlockBurnEvent e) { + e.setCancelled(true); + } + + @EventHandler + public void onFireSpread(BlockSpreadEvent e){ + e.setCancelled(true); + } + } diff --git a/src/de/steamwar/bausystem/commands/CommandFreeze.java b/src/de/steamwar/bausystem/commands/CommandFreeze.java index 94e360f..e518c82 100644 --- a/src/de/steamwar/bausystem/commands/CommandFreeze.java +++ b/src/de/steamwar/bausystem/commands/CommandFreeze.java @@ -1,42 +1,29 @@ package de.steamwar.bausystem.commands; -import de.steamwar.bausystem.BauSystem; -import de.steamwar.bausystem.Permission; -import de.steamwar.bausystem.world.Welt; -import org.bukkit.Bukkit; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; -import org.bukkit.event.HandlerList; -import org.bukkit.event.Listener; import org.bukkit.event.block.BlockPhysicsEvent; -public class CommandFreeze implements CommandExecutor, Listener { +public class CommandFreeze extends ToggleCommand { - private boolean frozen = false; + public CommandFreeze(){ + super(false); + } + + public static ToggleCommand getInstance(){ + return getInstance(CommandFreeze.class); + } @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if(!(sender instanceof Player)) - return false; - Player player = (Player) sender; - - if (Welt.noPermission(player, Permission.world)){ - player.sendMessage(BauSystem.PREFIX + "§cDu darfst diese Welt nicht einfrieren"); - return false; - } - - if(frozen){ - HandlerList.unregisterAll(this); - Bukkit.broadcastMessage(BauSystem.PREFIX + "§aDie Welt wurde aufgetaut"); - }else{ - Bukkit.getPluginManager().registerEvents(this, BauSystem.getPlugin()); - Bukkit.broadcastMessage(BauSystem.PREFIX + "§cDie Welt wurde eingefroren"); - } - frozen = !frozen; - return false; + String getNoPermMessage() { + return "§cDu darfst diese Welt nicht einfrieren"; + } + @Override + String getEnableMessage(){ + return "§cWelt eingefroren"; + } + @Override + String getDisableMessage(){ + return "§aWelt aufgetaut"; } @EventHandler diff --git a/src/de/steamwar/bausystem/commands/CommandInfo.java b/src/de/steamwar/bausystem/commands/CommandInfo.java index e8d2f00..edd6e77 100644 --- a/src/de/steamwar/bausystem/commands/CommandInfo.java +++ b/src/de/steamwar/bausystem/commands/CommandInfo.java @@ -1,7 +1,6 @@ package de.steamwar.bausystem.commands; import de.steamwar.bausystem.BauSystem; -import de.steamwar.bausystem.sql.Bauwelt; import de.steamwar.bausystem.sql.BauweltMember; import de.warking.hunjy.MySQL.WarkingUser; import net.minecraft.server.v1_12_R1.MinecraftServer; @@ -15,12 +14,12 @@ public class CommandInfo implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - Bauwelt welt = BauSystem.getWelt(); - sender.sendMessage(BauSystem.PREFIX + "Besitzer: §e" + WarkingUser.get(welt.getUserID()).getUserName()); - sender.sendMessage(BauSystem.PREFIX + "TNT-Schaden: " + (welt.isTNTDmg() ? "§aAN" : "§cAUS")); - sender.sendMessage(BauSystem.PREFIX + "Feuerschaden: " + (welt.isFireDmg() ? "§aAN" : "§cAUS")); + sender.sendMessage(BauSystem.PREFIX + "Besitzer: §e" + WarkingUser.get(BauSystem.getOwnerID()).getUserName()); + sender.sendMessage(BauSystem.PREFIX + "TNT-Schaden: " + (CommandTNT.getInstance().isOn() ? "§aAUS" : "§cAN")); + sender.sendMessage(BauSystem.PREFIX + "Feuerschaden: " + (CommandFire.getInstance().isOn() ? "§aAUS" : "§cAN")); + sender.sendMessage(BauSystem.PREFIX + "Eingefroren: " + (CommandFreeze.getInstance().isOn() ? "§aJA" : "§cNEIN")); - List members = BauweltMember.getMembers(welt.getUserID()); + List members = BauweltMember.getMembers(BauSystem.getOwnerID()); StringBuilder membermessage = new StringBuilder().append(BauSystem.PREFIX).append("Mitglieder: "); for (BauweltMember member : members) { diff --git a/src/de/steamwar/bausystem/commands/CommandRemover.java b/src/de/steamwar/bausystem/commands/CommandRemover.java index 54e56f4..472a8ce 100644 --- a/src/de/steamwar/bausystem/commands/CommandRemover.java +++ b/src/de/steamwar/bausystem/commands/CommandRemover.java @@ -18,14 +18,7 @@ public class CommandRemover { for (String cmd : cmds) removeCommand(cmd); } - /** - * Removes command from bukkit CommandMap - * - * @param command Command to remove - * @return - * @throws Exception - */ - public static void removeCommand(String command) throws Exception { + private static void removeCommand(String command) throws Exception { Class serverClass = Class.forName("org.bukkit.craftbukkit." + VERSION + ".CraftServer"); Field f1 = serverClass.getDeclaredField("commandMap"); diff --git a/src/de/steamwar/bausystem/commands/CommandTNT.java b/src/de/steamwar/bausystem/commands/CommandTNT.java index d75baa8..f077b5e 100644 --- a/src/de/steamwar/bausystem/commands/CommandTNT.java +++ b/src/de/steamwar/bausystem/commands/CommandTNT.java @@ -1,20 +1,33 @@ package de.steamwar.bausystem.commands; -import de.steamwar.bausystem.world.Welt; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.entity.EntityExplodeEvent; -public class CommandTNT implements CommandExecutor { +public class CommandTNT extends ToggleCommand { + + public CommandTNT(){ + super(true); + } + + public static ToggleCommand getInstance(){ + return getInstance(CommandTNT.class); + } @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if(!(sender instanceof Player)) - return false; - Player player = (Player) sender; + String getNoPermMessage() { + return "§cDu darfst hier nicht TNT-Schaden (de-)aktivieren"; + } + @Override + String getEnableMessage(){ + return "§cTNT-Schaden deaktiviert"; + } + @Override + String getDisableMessage(){ + return "§aTNT-Schaden aktiviert"; + } - Welt.switchTNT(player); - return false; + @EventHandler + public void onExplode(EntityExplodeEvent e) { + e.setCancelled(true); } } diff --git a/src/de/steamwar/bausystem/commands/ToggleCommand.java b/src/de/steamwar/bausystem/commands/ToggleCommand.java new file mode 100644 index 0000000..499ff3f --- /dev/null +++ b/src/de/steamwar/bausystem/commands/ToggleCommand.java @@ -0,0 +1,68 @@ +package de.steamwar.bausystem.commands; + +import de.steamwar.bausystem.BauSystem; +import de.steamwar.bausystem.Permission; +import de.steamwar.bausystem.world.Welt; +import net.md_5.bungee.api.ChatMessageType; +import net.md_5.bungee.api.chat.TextComponent; +import org.bukkit.Bukkit; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.event.HandlerList; +import org.bukkit.event.Listener; + +import java.util.HashMap; +import java.util.Map; + +public abstract class ToggleCommand implements CommandExecutor, Listener { + + private static Map, Boolean> enabled = new HashMap<>(); + private static Map, ToggleCommand> instance = new HashMap<>(); + + ToggleCommand(boolean on){ + enabled.put(getClass(), false); + if(on) + toggle(); + instance.put(getClass(), this); + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if(!(sender instanceof Player)) + return false; + Player player = (Player) sender; + + if (Welt.noPermission(player, Permission.world)){ + player.sendMessage(BauSystem.PREFIX + getNoPermMessage()); + return false; + } + + toggle(); + return false; + } + + static ToggleCommand getInstance(Class clazz){ + return instance.get(clazz); + } + + abstract String getNoPermMessage(); + abstract String getEnableMessage(); + abstract String getDisableMessage(); + + public boolean isOn(){ + return enabled.get(getClass()); + } + + public void toggle(){ + enabled.compute(getClass(), (clazz, value) -> !value); + if(enabled.get(getClass())){ + Bukkit.getPluginManager().registerEvents(this, BauSystem.getPlugin()); + Bukkit.getOnlinePlayers().forEach(player -> player.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(getEnableMessage()))); + }else{ + HandlerList.unregisterAll(this); + Bukkit.getOnlinePlayers().forEach(player -> player.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(getDisableMessage()))); + } + } +} diff --git a/src/de/steamwar/bausystem/sql/Bauwelt.java b/src/de/steamwar/bausystem/sql/Bauwelt.java deleted file mode 100644 index 4559390..0000000 --- a/src/de/steamwar/bausystem/sql/Bauwelt.java +++ /dev/null @@ -1,87 +0,0 @@ -package de.steamwar.bausystem.sql; - -import de.warking.hunjy.MySQL.MySQL; -import de.warking.hunjy.MySQL.WarkingUser; - -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.UUID; - -import static de.warking.hunjy.Core.sql; - -public class Bauwelt { - - private final int UserID; - private boolean TNTDmg; - private boolean FireDmg; - - private Bauwelt(int userID, boolean tntDmg, boolean fireDmg, boolean updateDB){ - UserID = userID; - TNTDmg = tntDmg; - FireDmg = fireDmg; - if(updateDB) - updateDB(); - } - - public Bauwelt(int userID, boolean tntDmg, boolean fireDmg){ - this(userID, tntDmg, fireDmg, true); - } - - public Bauwelt(UUID userID, boolean tntDmg, boolean fireDmg){ - this(WarkingUser.get(userID).getId(), tntDmg, fireDmg, true); - } - - private void updateDB(){ - sql.update("INSERT INTO Bauwelt" + - " (UserID, TNTDmg, FireDmg)" + - " VALUES" + - " ('" + UserID + "', '" + MySQL.booleanToInt(TNTDmg) + "', '" + MySQL.booleanToInt(FireDmg) + "')" + - " ON DUPLICATE KEY UPDATE" + - " TNTDmg = VALUES(TNTDmg), FireDmg = VALUES(FireDmg)"); - } - - public static Bauwelt getBauwelt(UUID user){ - return getBauwelt(WarkingUser.get(user).getId()); - } - - public static Bauwelt getBauwelt(int userId){ - ResultSet bauwelt = sql.select("SELECT * FROM Bauwelt WHERE UserID = '" + userId + "'"); - try { - if(bauwelt == null || !bauwelt.next()){ - return null; - } - boolean tntDmg = bauwelt.getBoolean("TNTDmg"); - boolean fireDmg = bauwelt.getBoolean("FireDmg"); - return new Bauwelt(userId, tntDmg, fireDmg, false); - } catch (SQLException e) { - e.printStackTrace(); - } - return null; - } - - public int getUserID() { - return UserID; - } - - public UUID getUUID(){ - return WarkingUser.get(UserID).getUUID(); - } - - public boolean isTNTDmg() { - return TNTDmg; - } - - public void setTNTDmg(boolean TNTDmg) { - this.TNTDmg = TNTDmg; - updateDB(); - } - - public boolean isFireDmg() { - return FireDmg; - } - - public void setFireDmg(boolean fireDmg) { - FireDmg = fireDmg; - updateDB(); - } -} \ No newline at end of file diff --git a/src/de/steamwar/bausystem/world/AutoLoader.java b/src/de/steamwar/bausystem/world/AutoLoader.java index 0852b4c..b454b6f 100644 --- a/src/de/steamwar/bausystem/world/AutoLoader.java +++ b/src/de/steamwar/bausystem/world/AutoLoader.java @@ -162,7 +162,6 @@ public class AutoLoader implements Listener { } }else if(event.getAction() == Action.PHYSICAL){ Block block = event.getClickedBlock(); - System.out.println(block); Material material = block.getType(); if(material == Material.STONE_PLATE || material == Material.WOOD_PLATE){ new TemporaryActivation(block.getLocation(), 20); @@ -207,6 +206,7 @@ public class AutoLoader implements Listener { player.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(message)); } + @SuppressWarnings("deprecation") private boolean setRedstone(Location location, boolean active){ Block block = location.getBlock(); Material material = block.getType(); diff --git a/src/de/steamwar/bausystem/world/RegionListener.java b/src/de/steamwar/bausystem/world/RegionListener.java index de7e854..b16790c 100644 --- a/src/de/steamwar/bausystem/world/RegionListener.java +++ b/src/de/steamwar/bausystem/world/RegionListener.java @@ -11,7 +11,6 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.block.*; -import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent; public class RegionListener implements Listener { @@ -58,24 +57,6 @@ public class RegionListener implements Listener { .getCommandManager().getDispatcher().get(command) != null; } - @EventHandler - public void onExplode(EntityExplodeEvent e) { - if(!BauSystem.getWelt().isTNTDmg()) - e.setCancelled(true); - } - - @EventHandler - public void onFireDamage(BlockBurnEvent e) { - if(!BauSystem.getWelt().isFireDmg()) - e.setCancelled(true); - } - - @EventHandler - public void onFireSpread(BlockSpreadEvent e){ - if(!BauSystem.getWelt().isFireDmg()) - e.setCancelled(true); - } - @EventHandler public void onSignChange(SignChangeEvent event) { for(int i = 0; i <= 3; ++i) { diff --git a/src/de/steamwar/bausystem/world/Welt.java b/src/de/steamwar/bausystem/world/Welt.java index 9e139b7..4b7839c 100644 --- a/src/de/steamwar/bausystem/world/Welt.java +++ b/src/de/steamwar/bausystem/world/Welt.java @@ -2,7 +2,6 @@ package de.steamwar.bausystem.world; import de.steamwar.bausystem.BauSystem; import de.steamwar.bausystem.Permission; -import de.steamwar.bausystem.sql.Bauwelt; import de.steamwar.bausystem.sql.BauweltMember; import de.warking.hunjy.MySQL.WarkingUser; import org.bukkit.Bukkit; @@ -34,83 +33,34 @@ public class Welt { } } - public static void switchTNT(Player p){ - if (noPermission(p, Permission.world)){ - p.sendMessage(BauSystem.PREFIX + "§cDu darfst hier nicht TNT-Schaden (de)aktivieren"); - return; + private static void sendMessages(Player p, boolean ableTo, BauweltMember target, String what){ + Player z = Bukkit.getPlayer(WarkingUser.get(target.getMemberID()).getUUID()); + if (z != null) { + if (ableTo) { + z.sendMessage(BauSystem.PREFIX + "§aDu kannst nun auf der Welt von §6" + p.getName() + "§a " + what); + }else { + z.sendMessage(BauSystem.PREFIX + "§cDu kannst nun nicht mehr auf der Welt von §6" + p.getName() + "§c " + what); + } } - - Bauwelt welt = BauSystem.getWelt(); - welt.setTNTDmg(!welt.isTNTDmg()); - if (welt.isTNTDmg()) - Bukkit.broadcastMessage(BauSystem.PREFIX + "§aTNT-Schaden erlaubt"); - else - Bukkit.broadcastMessage(BauSystem.PREFIX + "§cTNT-Schaden verboten"); - } - - public static void switchFire(Player p){ - if (noPermission(p, Permission.world)){ - p.sendMessage(BauSystem.PREFIX + "§cDu darfst hier nicht Feuerschaden (de)aktivieren"); - return; + if (ableTo) { + p.sendMessage(BauSystem.PREFIX + "§aDer Spieler darf nun " + what); + } else { + p.sendMessage(BauSystem.PREFIX + "§cDer Spieler darf nun nicht mehr " + what); } - - Bauwelt welt = BauSystem.getWelt(); - welt.setFireDmg(!welt.isFireDmg()); - if (welt.isFireDmg()) - Bukkit.broadcastMessage(BauSystem.PREFIX + "§aFeuer-Schaden erlaubt"); - else - Bukkit.broadcastMessage(BauSystem.PREFIX + "§cFeuer-Schaden verboten"); } - public static void toggleBuild(Player p, BauweltMember target){ target.setBuild(!target.isBuild()); - Player z = Bukkit.getPlayer(WarkingUser.get(target.getMemberID()).getUUID()); - if (z != null) { - if (target.isBuild()) { - z.sendMessage(BauSystem.PREFIX + "§aDu kannst nun auf der Welt von §6" + p.getName() + "§a bauen"); - }else { - z.sendMessage(BauSystem.PREFIX + "§cDu kannst nun nicht mehr auf der Welt von §6" + p.getName() + "§c bauen"); - } - } - if (target.isBuild()) { - p.sendMessage(BauSystem.PREFIX + "§aDer Spieler darf nun bauen"); - } else { - p.sendMessage(BauSystem.PREFIX + "§cDer Spieler darf nun nicht mehr bauen"); - } + sendMessages(p, target.isBuild(), target, "bauen"); } public static void toggleWE(Player p, BauweltMember target){ target.setWorldEdit(!target.isWorldEdit()); - Player z = Bukkit.getPlayer(WarkingUser.get(target.getMemberID()).getUUID()); - if (z != null) { - if (target.isWorldEdit()) { - z.sendMessage(BauSystem.PREFIX + "§aDu kannst nun auf der Welt von §6" + p.getName() + "§a WorldEdit verwenden"); - }else { - z.sendMessage(BauSystem.PREFIX + "§cDu kannst nun nicht mehr auf der Welt von §6" + p.getName() + "§c WorldEdit verwenden"); - } - } - if (target.isWorldEdit()) { - p.sendMessage(BauSystem.PREFIX + "§aDer Spieler darf nun WorldEdit verwenden"); - } else { - p.sendMessage(BauSystem.PREFIX + "§cDer Spieler darf nun kein WorldEdit mehr verwenden"); - } + sendMessages(p, target.isWorldEdit(), target, "WorldEdit verwenden"); } - public static void toggleTestblock(Player p, BauweltMember target){ + public static void toggleWorld(Player p, BauweltMember target){ target.setWorld(!target.isWorld()); - Player z = Bukkit.getPlayer(WarkingUser.get(target.getMemberID()).getUUID()); - if (z != null) { - if (target.isWorld()) { - z.sendMessage(BauSystem.PREFIX + "§aDu kannst nun auf der Welt von §6" + p.getName() + "§a Einstellungen vornehmen"); - }else { - z.sendMessage(BauSystem.PREFIX + "§cDu kannst nun nicht mehr auf der Welt von §6" + p.getName() + "§c Einstellungen vornehmen"); - } - } - if (target.isWorld()) { - p.sendMessage(BauSystem.PREFIX + "§aDer Spieler darf nun Einstellungen vornehmen"); - } else { - p.sendMessage(BauSystem.PREFIX + "§cDer Spieler darf nun nicht mehr Einstellungen vornehmen"); - } + sendMessages(p, target.isWorld(), target, "Einstellungen vornehmen"); } }