diff --git a/BauSystem/BauSystem_Main/src/BauSystem.properties b/BauSystem/BauSystem_Main/src/BauSystem.properties index 67a16a47..c9116dce 100644 --- a/BauSystem/BauSystem_Main/src/BauSystem.properties +++ b/BauSystem/BauSystem_Main/src/BauSystem.properties @@ -271,6 +271,7 @@ SIMULATOR_CHANGE_HELP=§8/§esimulator change §8-§7 Change your simulator wand SIMULATOR_DELETE_HELP=§8/§esimulator delete §8[§7name§8] §8-§7 Deletes the simulator SIMULATOR_START_HELP=§8/§esimulator start §8[§7name§8] §8-§7 Starts the simulator SIMULATOR_COPY_HELP=§8/§esimulator copy §8[§7to-copy§8] §8[§7name§8] §8-§7 Copy the simulator +SIMULATOR_RENAME_HELP=§8/§esimulator rename §8[§7to-rename§8] §8[§7name§8] §8-§7 Rename the simulator SIMULATOR_GUI_ITEM_NAME=§eTNT Simulator SIMULATOR_NO_SIM_IN_HAND=§cNo simulator item selected SIMULATOR_GUI_SELECT_SIM=Simulator selection @@ -307,6 +308,7 @@ SIMULATOR_POSITION_Z=§7z-Position SIMULATOR_BACK=§eBack SIMULATOR_GUI_TOTAL_TNT=§7Total TNT§8: §e{0} SIMULATOR_DELETED=§cSimulator deleted +SIMULATOR_RENAMED=§cSimulator renamed from {0} to {1} ## GUI SIMULATOR_POSITION_EDIT=§eEdit position SIMULATOR_POSITION_ADD=§eSet position diff --git a/BauSystem/BauSystem_Main/src/BauSystem_de.properties b/BauSystem/BauSystem_Main/src/BauSystem_de.properties index 4013f3b2..45e60f84 100644 --- a/BauSystem/BauSystem_Main/src/BauSystem_de.properties +++ b/BauSystem/BauSystem_Main/src/BauSystem_de.properties @@ -254,6 +254,7 @@ SIMULATOR_CHANGE_HELP=§8/§esimulator change §8-§7 Wechsel zu einem anderen S SIMULATOR_DELETE_HELP=§8/§esimulator delete §8[§7name§8] §8-§7 Löscht den Simulator SIMULATOR_START_HELP=§8/§esimulator start §8[§7name§8] §8-§7 Startet die Simulation SIMULATOR_COPY_HELP=§8/§esimulator copy §8[§7to-copy§8] §8[§7name§8] §8-§7 Kopiert einen Simulator +SIMULATOR_RENAME_HELP=§8/§esimulator rename §8[§7to-rename§8] §8[§7name§8] §8-§7 Benennt einen Simulator um SIMULATOR_GUI_ITEM_NAME=§eTNT Simulator SIMULATOR_NO_SIM_IN_HAND=§cKein Simulator Item gewählt SIMULATOR_GUI_SELECT_SIM=Simulator wählen @@ -290,6 +291,7 @@ SIMULATOR_POSITION_Z=§7z-Position SIMULATOR_BACK=§eZurück SIMULATOR_GUI_TOTAL_TNT=§7Gesamt TNT§8: §e{0} SIMULATOR_DELETED=§cSimulator gelöscht +SIMULATOR_RENAMED=§cSimulator von {0} zu {1} umbenannt ## GUI SIMULATOR_POSITION_EDIT=§ePosition bearbeiten SIMULATOR_POSITION_ADD=§ePosition setzen diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/BauSystem.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/BauSystem.java index 0b1b160c..0d5fa43c 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/BauSystem.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/BauSystem.java @@ -25,6 +25,7 @@ import de.steamwar.bausystem.configplayer.ConfigConverter; import de.steamwar.bausystem.features.gui.BauGUI; import de.steamwar.bausystem.features.script.lua.SteamWarLuaPlugin; import de.steamwar.bausystem.features.script.lua.libs.LuaLib; +import de.steamwar.bausystem.features.slaves.laufbau.BoundingBoxLoader; import de.steamwar.bausystem.features.slaves.panzern.Panzern; import de.steamwar.bausystem.features.slaves.panzern.PanzernAlgorithm; import de.steamwar.bausystem.features.tpslimit.TPSFreezeUtils; @@ -184,6 +185,9 @@ public class BauSystem extends JavaPlugin { if (any instanceof ConfigConverter) { Config.addConfigConverter((ConfigConverter) any); } + if (any instanceof BoundingBoxLoader) { + ((BoundingBoxLoader) any).load(); + } }); instances.forEach((clazz, o) -> { diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/loader/Loader.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/loader/Loader.java index d8489a0f..0ce38b9a 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/loader/Loader.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/loader/Loader.java @@ -93,6 +93,7 @@ public class Loader implements Listener { element.execute(delay -> waitTime = delay); if (waitTime > 0) { if (element instanceof LoaderTNT) currentElement--; + waitTime--; return; } } diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/SimulatorCommand.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/SimulatorCommand.java index 06af3e68..de0c4b74 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/SimulatorCommand.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/SimulatorCommand.java @@ -20,7 +20,6 @@ package de.steamwar.bausystem.features.simulator; import de.steamwar.bausystem.BauSystem; -import de.steamwar.bausystem.Permission; import de.steamwar.bausystem.SWUtils; import de.steamwar.bausystem.features.simulator.data.Simulator; import de.steamwar.bausystem.features.simulator.execute.SimulatorExecutor; @@ -63,15 +62,7 @@ public class SimulatorCommand extends SWCommand { } @Register(value = "copy", description = "SIMULATOR_COPY_HELP") - public void copy(@Validator Player p, @ErrorMessage("SIMULATOR_NOT_EXISTS") Simulator simulator, String name) { - if (SimulatorStorage.getSimulator(name) != null) { - BauSystem.MESSAGE.send("SIMULATOR_NAME_ALREADY_EXISTS", p); - return; - } - if (!name.matches("[a-zA-Z_0-9-]+")) { - BauSystem.MESSAGE.send("SIMULATOR_NAME_INVALID", p); - return; - } + public void copy(@Validator Player p, @ErrorMessage("SIMULATOR_NOT_EXISTS") Simulator simulator, @Validator("simulatorName") String name) { if (!SimulatorStorage.copy(simulator, name)) { BauSystem.MESSAGE.send("SIMULATOR_ERROR_COPY", p); } @@ -88,6 +79,17 @@ public class SimulatorCommand extends SWCommand { SimulatorExecutor.run(simulator); } + @Register(value = "rename", description = "SIMULATOR_RENAME_HELP") + public void rename(@Validator Player p, @ErrorMessage("SIMULATOR_NOT_EXISTS") Simulator simulator, @Validator("simulatorName") String name) { + String oldName = simulator.getName(); + if (SimulatorStorage.copy(simulator, name)) { + SimulatorStorage.delete(simulator); + BauSystem.MESSAGE.send("SIMULATOR_RENAMED", p, oldName, name); + } else { + BauSystem.MESSAGE.send("SIMULATOR_ERROR_COPY", p); + } + } + @ClassMapper(value = Simulator.class, local = true) public TypeMapper allSimulators() { return new TypeMapper<>() { @@ -102,4 +104,19 @@ public class SimulatorCommand extends SWCommand { } }; } + + @Validator(value = "simulatorName", local = true) + public TypeValidator simulatorName() { + return (commandSender, name, messageSender) -> { + if (SimulatorStorage.getSimulator(name) != null) { + messageSender.send("SIMULATOR_NAME_ALREADY_EXISTS"); + return false; + } + if (!name.matches("[a-zA-Z_0-9-]+")) { + messageSender.send("SIMULATOR_NAME_INVALID"); + return false; + } + return true; + }; + } } diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/SimulatorStorage.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/SimulatorStorage.java index b3fbcba8..434e112d 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/SimulatorStorage.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/SimulatorStorage.java @@ -44,6 +44,7 @@ import org.bukkit.inventory.meta.ItemMeta; import java.io.File; import java.io.IOException; import java.util.*; +import java.util.stream.Collectors; @Linked @MinVersion(19) @@ -130,7 +131,7 @@ public class SimulatorStorage implements Enable { } public static void openSimulatorSelector(Player player) { - SimulatorPageGui simulatorPageGui = new SimulatorPageGui(player, null, 6 * 9, new ArrayList<>(simulatorMap.values())) { + SimulatorPageGui simulatorPageGui = new SimulatorPageGui(player, null, 6 * 9, simulatorMap.values().stream().sorted(Comparator.comparing(Simulator::getName)).collect(Collectors.toList())) { @Override public String baseTitle() { return "Simulators"; diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/states/ProcessingTracesState.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/states/ProcessingTracesState.java index c2893964..94eb6549 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/states/ProcessingTracesState.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/states/ProcessingTracesState.java @@ -24,6 +24,7 @@ import de.steamwar.bausystem.BauSystem; import de.steamwar.bausystem.features.slaves.laufbau.BlockBoundingBox; import de.steamwar.bausystem.features.slaves.laufbau.Cuboid; import de.steamwar.bausystem.features.tracer.TNTPoint; +import de.steamwar.bausystem.features.tracer.Trace; import de.steamwar.bausystem.features.tracer.TraceManager; import de.steamwar.bausystem.region.Point; import de.steamwar.bausystem.utils.FlatteningWrapper; @@ -34,7 +35,6 @@ import org.bukkit.util.Vector; import java.util.*; import java.util.function.BiPredicate; -import java.util.stream.Collectors; public class ProcessingTracesState implements LaufbauState { @@ -45,8 +45,9 @@ public class ProcessingTracesState implements LaufbauState { private final List elements; private final int factor; - private final List TNTPoints; - private final int totalTntRecords; + private final List Traces; + private final List TNTPoints = new ArrayList<>(); + private final int totalTraces; private final Set affectedBlocks = new HashSet<>(); private final Map> cuboidsPerChunk = new HashMap<>(); @@ -58,18 +59,13 @@ public class ProcessingTracesState implements LaufbauState { this.elements = elements; this.factor = factor; - // TODO: Optimize only retrieving traces inside of the affected regions! - TNTPoints = TraceManager.instance.getAll() - .stream() - .flatMap(trace -> trace.getHistories().stream()) - .flatMap(Collection::stream) - .collect(Collectors.toList()); - totalTntRecords = TNTPoints.size(); + Traces = new ArrayList<>(TraceManager.instance.getAll()); + totalTraces = Traces.size(); } @Override public String actionBarMessage(Player p) { - return BauSystem.MESSAGE.parse("LAUFBAU_SIMPLE_PROGRESS", p, BauSystem.MESSAGE.parse("LAUFBAU_STATE_PROCESSING_TRACES", p), totalTntRecords - TNTPoints.size(), totalTntRecords, eta(p, start, totalTntRecords - TNTPoints.size(), totalTntRecords)); + return BauSystem.MESSAGE.parse("LAUFBAU_SIMPLE_PROGRESS", p, BauSystem.MESSAGE.parse("LAUFBAU_STATE_PROCESSING_TRACES", p), totalTraces - Traces.size(), totalTraces, eta(p, start, totalTraces - Traces.size(), totalTraces)); } private boolean inRegion(Vector location, int expansion) { @@ -78,11 +74,17 @@ public class ProcessingTracesState implements LaufbauState { @Override public boolean hasNext() { - return !TNTPoints.isEmpty(); + return !Traces.isEmpty() || !TNTPoints.isEmpty(); } @Override public void next() { + if (TNTPoints.isEmpty()) { + Trace trace = Traces.remove(0); + trace.getHistories().stream().flatMap(Collection::stream).forEach(TNTPoints::add); + return; + } + TNTPoint current = TNTPoints.remove(0); if (FlatteningWrapper.impl.inWater(world, current.getLocation().toVector())) return; if (!(inRegion(current.getLocation().toVector(), 1) || (current.getPrevious().isPresent() && inRegion(current.getPrevious().get().getLocation().toVector(), 1)))) diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/util/SpeedCommand.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/util/SpeedCommand.java index 31308830..c8a6d2de 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/util/SpeedCommand.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/util/SpeedCommand.java @@ -39,12 +39,12 @@ public class SpeedCommand extends SWCommand { @Register public void speedCommand(Player p, float speed) { - speed = speed / 10F; - if (speed < -1F) { + if (speed < -10F) { BauSystem.MESSAGE.send("SPEED_TOO_SMALL", p, speed); - } else if (speed > 1F) { + } else if (speed > 10F) { BauSystem.MESSAGE.send("SPEED_TOO_HIGH", p, speed); } else { + speed = speed / 10F; p.setFlySpeed(speed); p.setWalkSpeed(Math.min(speed + 0.1F, 1F)); BauSystem.MESSAGE.send("SPEED_CURRENT", p, (p.getFlySpeed() * 10F)); diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/utils/PasteBuilder.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/utils/PasteBuilder.java index b0479f90..ef6b912b 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/utils/PasteBuilder.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/utils/PasteBuilder.java @@ -24,6 +24,7 @@ import com.sk89q.worldedit.extent.clipboard.Clipboard; import com.sk89q.worldedit.function.pattern.WaterloggedRemover; import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.world.block.BaseBlock; +import com.sk89q.worldedit.world.block.BlockType; import com.sk89q.worldedit.world.block.BlockTypes; import de.steamwar.bausystem.region.Color; import de.steamwar.bausystem.region.Point; @@ -34,9 +35,7 @@ import lombok.NonNull; import java.io.File; import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; +import java.util.*; import java.util.function.BiConsumer; import java.util.function.BiPredicate; @@ -106,51 +105,28 @@ public class PasteBuilder { public PasteBuilder color(Color color) { if (color == Color.PINK) return this; - BaseBlock WOOL = Objects.requireNonNull(BlockTypes.PINK_WOOL).getDefaultState().toBaseBlock(); - BaseBlock CLAY = Objects.requireNonNull(BlockTypes.PINK_TERRACOTTA).getDefaultState().toBaseBlock(); - BaseBlock GLAZED = Objects.requireNonNull(BlockTypes.PINK_GLAZED_TERRACOTTA).getDefaultState().toBaseBlock(); - BaseBlock GLASS = Objects.requireNonNull(BlockTypes.PINK_STAINED_GLASS).getDefaultState().toBaseBlock(); - BaseBlock GLASS_PANE = Objects.requireNonNull(BlockTypes.PINK_STAINED_GLASS_PANE).getDefaultState().toBaseBlock(); - BaseBlock CONCRETE = Objects.requireNonNull(BlockTypes.PINK_CONCRETE).getDefaultState().toBaseBlock(); - BaseBlock CONCRETE_POWDER = Objects.requireNonNull(BlockTypes.PINK_CONCRETE_POWDER).getDefaultState().toBaseBlock(); - BaseBlock CARPET = Objects.requireNonNull(BlockTypes.PINK_CARPET).getDefaultState().toBaseBlock(); - - BaseBlock wool = Objects.requireNonNull(BlockTypes.get(color.name().toLowerCase() + "_wool")).getDefaultState().toBaseBlock(); - BaseBlock clay = Objects.requireNonNull(BlockTypes.get(color.name().toLowerCase() + "_terracotta")).getDefaultState().toBaseBlock(); - BaseBlock glazed = Objects.requireNonNull(BlockTypes.get(color.name().toLowerCase() + "_glazed_terracotta")).getDefaultState().toBaseBlock(); - BaseBlock glass = Objects.requireNonNull(BlockTypes.get(color.name().toLowerCase() + "_stained_glass")).getDefaultState().toBaseBlock(); - BaseBlock glassPane = Objects.requireNonNull(BlockTypes.get(color.name().toLowerCase() + "_stained_glass_pane")).getDefaultState().toBaseBlock(); - BaseBlock carpet = Objects.requireNonNull(BlockTypes.get(color.name().toLowerCase() + "_carpet")).getDefaultState().toBaseBlock(); - BaseBlock concrete = Objects.requireNonNull(BlockTypes.get(color.name().toLowerCase() + "_concrete")).getDefaultState().toBaseBlock(); - BaseBlock concretePowder = Objects.requireNonNull(BlockTypes.get(color.name().toLowerCase() + "_concrete_powder")).getDefaultState().toBaseBlock(); - + Map blockCache = new HashMap<>(); return map((clipboard, blockVector3) -> { BaseBlock block = clipboard.getFullBlock(blockVector3); - if (block.equals(WOOL)) { - clipboard.setBlock(blockVector3, wool); - } else if (block.equals(CLAY)) { - clipboard.setBlock(blockVector3, clay); - } else if (block.equals(GLAZED)) { - clipboard.setBlock(blockVector3, glazed); - } else if (block.equals(GLASS)) { - clipboard.setBlock(blockVector3, glass); - } else if (block.equals(GLASS_PANE)) { - clipboard.setBlock(blockVector3, glassPane); - } else if (block.equals(CARPET)) { - clipboard.setBlock(blockVector3, carpet); - } else if (block.equals(CONCRETE)) { - clipboard.setBlock(blockVector3, concrete); - } else if (block.equals(CONCRETE_POWDER)) { - clipboard.setBlock(blockVector3, concretePowder); + if (block.getBlockType().getId().startsWith("minecraft:pink_")) { + BaseBlock baseBlock = blockCache.computeIfAbsent(block.getBlockType().getId(), s -> { + String replaced = s.replace("minecraft:pink_", "minecraft:" + color.name().toLowerCase() + "_"); + BlockType blockType = BlockTypes.get(replaced); + if (blockType == null) return null; + return blockType.getDefaultState().toBaseBlock(); + }); + if (baseBlock == null) return; + clipboard.setBlock(blockVector3, baseBlock); } }); } + /** + * Can only be used before {@link #color(Color)}. + */ public PasteBuilder onlyColors(boolean onlyColors) { if (!onlyColors) return this; - return only((baseBlock, s) -> { - return s.endsWith("_wool") || s.endsWith("_terracotta") || s.endsWith("_glazed_terracotta") || s.endsWith("_stained_glass") || s.endsWith("_stained_glass_pane") || s.endsWith("_carpet") || s.endsWith("_concrete") || s.endsWith("_concrete_powder"); - }); + return only((baseBlock, s) -> s.startsWith("minecraft:pink_")); } public PasteBuilder removeTNT(boolean removeTNT) { diff --git a/CommonCore/SQL/src/de/steamwar/sql/Punishment.java b/CommonCore/SQL/src/de/steamwar/sql/Punishment.java index 73278452..4e0c1665 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/Punishment.java +++ b/CommonCore/SQL/src/de/steamwar/sql/Punishment.java @@ -121,11 +121,11 @@ public class Punishment { public enum PunishmentType { Ban(false, "BAN_TEAM", "BAN_PERMA", "BAN_UNTIL", "UNBAN_ERROR", "UNBAN"), Mute( false, "MUTE_TEAM", "MUTE_PERMA", "MUTE_UNTIL", "UNMUTE_ERROR", "UNMUTE"), - NoSchemReceiving(false, "NOSCHEMRECEIVING_TEAM", "NOSCHEMRECEIVING_PERMA", "NOSCHEMRECEIVING_UNTIL", "UNNOSCHEMRECEIVING_ERROR", "UNNOSCHEMRECEIVING"), - NoSchemSharing(false, "NOSCHEMSHARING_TEAM", "NOSCHEMSHARING_PERMA", "NOSCHEMSHARING_UNTIL", "UNNOSCHEMSHARING_ERROR", "UNNOSCHEMSHARING"), - NoSchemSubmitting(true, "NOSCHEMSUBMITTING_TEAM", "NOSCHEMSUBMITTING_PERMA", "NOSCHEMSUBMITTING_UNTIL", "UNNOSCHEMSUBMITTING_ERROR", "UNNOSCHEMSUBMITTING"), + NoSchemReceiving(true, "NOSCHEMRECEIVING_TEAM", "NOSCHEMRECEIVING_PERMA", "NOSCHEMRECEIVING_UNTIL", "UNNOSCHEMRECEIVING_ERROR", "UNNOSCHEMRECEIVING"), + NoSchemSharing(true, "NOSCHEMSHARING_TEAM", "NOSCHEMSHARING_PERMA", "NOSCHEMSHARING_UNTIL", "UNNOSCHEMSHARING_ERROR", "UNNOSCHEMSHARING"), + NoSchemSubmitting(false, "NOSCHEMSUBMITTING_TEAM", "NOSCHEMSUBMITTING_PERMA", "NOSCHEMSUBMITTING_UNTIL", "UNNOSCHEMSUBMITTING_ERROR", "UNNOSCHEMSUBMITTING"), NoDevServer(true, "NODEVSERVER_TEAM", "NODEVSERVER_PERMA", "NODEVSERVER_UNTIL", "UNNODEVSERVER_ERROR", "UNNODEVSERVER"), - NoFightServer(false, "NOFIGHTSERVER_TEAM", "NOFIGHTSERVER_PERMA", "NOFIGHTSERVER_UNTIL", "UNNOFIGHTSERVER_ERROR", "UNNOFIGHTSERVER"), + NoFightServer(true, "NOFIGHTSERVER_TEAM", "NOFIGHTSERVER_PERMA", "NOFIGHTSERVER_UNTIL", "UNNOFIGHTSERVER_ERROR", "UNNOFIGHTSERVER"), NoTeamServer(true, "NOTEAMSERVER_TEAM", "NOTEAMSERVER_PERMA", "NOTEAMSERVER_UNTIL", "UNNOTEAMSERVER_ERROR", "UNNOTEAMSERVER"), Note(false, "NOTE_TEAM", null, null, null, null, true); diff --git a/VelocityCore/src/de/steamwar/messages/BungeeCore.properties b/VelocityCore/src/de/steamwar/messages/BungeeCore.properties index 5bb5238b..2535aaf3 100644 --- a/VelocityCore/src/de/steamwar/messages/BungeeCore.properties +++ b/VelocityCore/src/de/steamwar/messages/BungeeCore.properties @@ -739,6 +739,7 @@ DC_TICKETINTRO_IDEA=Describe your idea as detailed as possible. Hereto belongs: DC_TICKETINTRO_BUG=Please describe the observed unexpected or incorrect behaviour of our software. If necessary describe steps to reproduce the error. DC_TICKETINTRO_QUESTION=Please ask your question. A staff member will address the question soon. DC_TICKETINTRO_APPEAL=Asking creates wonders. +DC_TICKETINTRO_SCHEMATIC=Please answer the following questions as precisely as possible for the locking of the Schematic and, if possible, add evidence:\n - Which player(s)?\n - On which Arena Server\n - At what time?\n - Rules which the Schematic violates (rules/code of conduct) DC_TICKET_CLOSE=Close DC_SCHEMUPLOAD_NOPERM=You\'re not allowed to upload schematics. diff --git a/VelocityCore/src/de/steamwar/messages/BungeeCore_de.properties b/VelocityCore/src/de/steamwar/messages/BungeeCore_de.properties index edc46c77..786ad244 100644 --- a/VelocityCore/src/de/steamwar/messages/BungeeCore_de.properties +++ b/VelocityCore/src/de/steamwar/messages/BungeeCore_de.properties @@ -692,6 +692,7 @@ DC_TICKETINTRO_IDEA=Beschreibe deine Idee möglichst detailiert. Hierzu gehört: DC_TICKETINTRO_BUG=Bitte beschreibe das beobachtete unerwartete bzw. inkorrekte Verhalten der Serversoftware. Falls notwendig, beschreibe die Schritte, mit denen der Fehler reproduziert werden kann. DC_TICKETINTRO_QUESTION=Bitte stelle deine Frage, ein Serverteammitglied wird sich dieser zeitnah annehmen. DC_TICKETINTRO_APPEAL=Fragen wirkt Wunder! +DC_TICKETINTRO_SCHEMATIC=Bitte beantworte für die sperrung der Schematic möglichst genau folgende Fragen und füge nach Möglichkeit Beweismaterial hinzu:\n - Welche(r) Spieler?\n - Auf welchem Arena Server\n - Zu welchem Zeitpunkt?\n - Regeln, gegen welche die Schematic verstößt (Regelwerk/ Verhaltensrichtlinien) DC_TICKET_CLOSE=Schließen DC_SCHEMUPLOAD_NOPERM=Du darfst keine Schematics hochladen. diff --git a/VelocityCore/src/de/steamwar/velocitycore/commands/TeamCommand.java b/VelocityCore/src/de/steamwar/velocitycore/commands/TeamCommand.java index 32b65e93..928d6e78 100644 --- a/VelocityCore/src/de/steamwar/velocitycore/commands/TeamCommand.java +++ b/VelocityCore/src/de/steamwar/velocitycore/commands/TeamCommand.java @@ -478,6 +478,7 @@ public class TeamCommand extends SWCommand { } @Register("color") + @Register("changecolor") public void changeColor(@Validator("isLeader") PlayerChatter sender) { Team team = Team.get(sender.user().getTeam()); diff --git a/VelocityCore/src/de/steamwar/velocitycore/discord/DiscordBot.java b/VelocityCore/src/de/steamwar/velocitycore/discord/DiscordBot.java index 5a80a04f..57f6c1ef 100644 --- a/VelocityCore/src/de/steamwar/velocitycore/discord/DiscordBot.java +++ b/VelocityCore/src/de/steamwar/velocitycore/discord/DiscordBot.java @@ -30,8 +30,14 @@ import de.steamwar.velocitycore.discord.listeners.DiscordTeamEvent; import de.steamwar.velocitycore.discord.listeners.DiscordTicketHandler; import de.steamwar.velocitycore.discord.util.AuthManager; import lombok.Getter; -import net.dv8tion.jda.api.*; -import net.dv8tion.jda.api.entities.*; +import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.JDA; +import net.dv8tion.jda.api.JDABuilder; +import net.dv8tion.jda.api.OnlineStatus; +import net.dv8tion.jda.api.entities.Activity; +import net.dv8tion.jda.api.entities.Guild; +import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.entities.Role; import net.dv8tion.jda.api.entities.emoji.Emoji; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.exceptions.ErrorResponseException; @@ -136,13 +142,25 @@ public class DiscordBot { if(event.getComponentId().equals("auth")) event.reply("Gebe innerhalb der nächsten 10 Minuten ``/verify " + AuthManager.createDiscordAuthToken(event.getUser()) + "`` auf dem Minecraft Server ein").setEphemeral(true).queue(); }); + List actionRows = new ArrayList<>(); + List