Skip to content

Commit

Permalink
added SelectCommand
Browse files Browse the repository at this point in the history
 - removed region selection from other subcommands (regenRegion, DegenArea and Region)
 - added integration for world edit - you can now select via your trusty wooden axe and WECUI
  • Loading branch information
FireInstall committed Jan 24, 2024
1 parent eb5825c commit 51ff7ef
Show file tree
Hide file tree
Showing 12 changed files with 359 additions and 120 deletions.
12 changes: 12 additions & 0 deletions Minigames/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,12 @@
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
<!-- WorldEdit -->
<repository>
<id>enginehub.org</id>
<url>https://maven.enginehub.org/repo/</url>
</repository>

</repositories>

<dependencies>
Expand Down Expand Up @@ -120,6 +126,12 @@
<artifactId>commons-text</artifactId>
<version>1.10.0</version>
</dependency>
<dependency>
<groupId>com.sk89q.worldedit</groupId>
<artifactId>worldedit-bukkit</artifactId>
<version>7.3.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<resources>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ public class CommandDispatcher implements CommandExecutor, TabCompleter {
registerCommand(new BackendCommand());
registerCommand(new InfoCommand());
registerCommand(new ResourcePackCommand());
registerCommand(new SelectCommand());

if (plugin.getConfig().getBoolean("outputCMDToFile")) {
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import au.com.mineauz.minigames.Minigames;
import au.com.mineauz.minigames.minigame.Minigame;
import com.google.common.base.Charsets;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
Expand All @@ -11,6 +10,7 @@
import org.kitteh.pastegg.*;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
Expand Down Expand Up @@ -116,7 +116,7 @@ public List<String> onTabComplete(CommandSender sender, Minigame minigame,

private String getFile(Path file) {
try {
return Files.readString(file, Charsets.UTF_8);
return Files.readString(file, StandardCharsets.UTF_8);
} catch (IOException e) {
return ExceptionUtils.getStackTrace(e);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
package au.com.mineauz.minigames.commands;

import au.com.mineauz.minigames.MinigameUtils;
import au.com.mineauz.minigames.Minigames;
import au.com.mineauz.minigames.minigame.Minigame;
import au.com.mineauz.minigames.objects.MinigamePlayer;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.List;

public class SelectCommand implements ICommand {
@Override
public @NotNull String getName() {
return "select";
}

@Override
public @NotNull String[] getAliases() {
return null;
}

@Override
public boolean canBeConsole() {
return false;
}

@Override
public String getDescription() {
return "select and clear region selections";
}

@Override
public @NotNull String[] getParameters() {
return new String[]{
"1",
"2",
"clear"
};
}

@Override
public @NotNull String[] getUsage() {
return new String[]{
"/minigame select 1",
"/minigame select 2",
"/minigame select clear"
};
}

@Override
public String getPermissionMessage() {
return "You don't have permission to modify regions";
}

@Override
public @Nullable String getPermission() {
return "minigame.region.select";
}

@Override
public boolean onCommand(@NotNull CommandSender sender, @Nullable Minigame minigame,
String label, @NotNull String @Nullable [] args) {
if (sender instanceof Player player) {
MinigamePlayer mgPlayer = Minigames.getPlugin().getPlayerManager().getMinigamePlayer(player);

if (args != null && args.length > 0) {
if (args[0].equalsIgnoreCase("1")) {
mgPlayer.setSelection1(player.getLocation());
mgPlayer.sendInfoMessage(Component.text("Point 1 selected", NamedTextColor.GRAY));
} else if (args[0].equalsIgnoreCase("2")) {
mgPlayer.setSelection2(player.getLocation());
mgPlayer.sendInfoMessage(Component.text("Point 2 selected", NamedTextColor.GRAY));

} else if (args[0].equalsIgnoreCase("clear")) {
mgPlayer.clearSelection();
mgPlayer.sendInfoMessage(Component.text("Selection cleared.", NamedTextColor.GRAY));
} else { // unknown param
return false;
}
} else { // not enough args
return false;
}
} else {
sender.sendMessage(Component.text("You have to be a player.", NamedTextColor.RED));
return false;
}

return true;
}

@Override
public @Nullable List<@NotNull String> onTabComplete(CommandSender sender, Minigame minigame, String alias, String[] args) {
if (args != null && args.length == 1) {
return MinigameUtils.tabCompleteMatch(List.of("1", "2", "clear"), args[0]);
}
return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.JoinConfiguration;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.Location;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

Expand Down Expand Up @@ -43,7 +42,7 @@ Sets the two corners of a floor to degenerate or clears both of them (if set).

@Override
public String[] getParameters() {
return new String[]{"1", "2", "create", "clear", "type", "time"};
return new String[]{"create", "remove", "type", "time"};
}

@Override
Expand All @@ -68,23 +67,8 @@ public boolean onCommand(CommandSender sender, Minigame minigame,
if (args != null) {
if (sender instanceof Player player){
MinigamePlayer mgPlayer = Minigames.getPlugin().getPlayerManager().getMinigamePlayer(player);
Location placerLoc = mgPlayer.getLocation();

switch (args[0].toLowerCase()){
case "1" -> {
Location p2 = mgPlayer.getSelectionPoints()[1];
mgPlayer.clearSelection();
mgPlayer.setSelection(placerLoc, p2);

mgPlayer.sendInfoMessage(Component.text("Floor degenerator point 1 for " + minigame +"selected" , NamedTextColor.GRAY));
}
case "2" -> {
Location p2 = mgPlayer.getSelectionPoints()[0];
mgPlayer.clearSelection();
mgPlayer.setSelection(p2, placerLoc);

mgPlayer.sendInfoMessage(Component.text("Floor degenerator point 2 for " + minigame +"selected", NamedTextColor.GRAY));
}
case "create" -> {
if (mgPlayer.hasSelection()) {
minigame.setFloorDegen(new MgRegion("degen", mgPlayer.getSelectionPoints()[0], mgPlayer.getSelectionPoints()[1]));
Expand All @@ -96,7 +80,7 @@ public boolean onCommand(CommandSender sender, Minigame minigame,
mgPlayer.sendInfoMessage(Component.text("You have not made a selection!", NamedTextColor.RED));
}
}
case "clear" -> {
case "remove" -> {
minigame.removeFloorDegen();
mgPlayer.sendInfoMessage(Component.text("Floor degenerator corners have been removed for " + minigame, NamedTextColor.GRAY ));
}
Expand Down Expand Up @@ -138,7 +122,7 @@ public boolean onCommand(CommandSender sender, Minigame minigame,
public List<String> onTabComplete(CommandSender sender, Minigame minigame,
String alias, String[] args) {
if (args.length == 1) {
return MinigameUtils.tabCompleteMatch(List.of("1", "2", "create", "clear", "type", "time"), args[0]);
return MinigameUtils.tabCompleteMatch(List.of("create", "remove", "type", "time"), args[0]);
} else if (args[0].equalsIgnoreCase("type")) {
return MinigameUtils.tabCompleteMatch(List.of("random", "inward", "circle"), args[1]);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
import net.kyori.adventure.text.event.ClickEvent;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import org.bukkit.Location;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

Expand Down Expand Up @@ -51,10 +50,9 @@ public String[] getParameters() {
@Override
public String[] getUsage() {
return new String[]{
"/minigame set <Minigame> regenarea select <1/2>",
"/minigame set <Minigame> regenarea create <name>",
"/minigame set <Minigame> regenarea list <page>",
"/minigame set <Minigame> regenarea delete <name>" };
"/minigame set <Minigame> regenarea remove <name>"};
}

@Override
Expand Down Expand Up @@ -138,25 +136,6 @@ public boolean onCommand(CommandSender sender, Minigame minigame,

} else if (args.length == 2) {
switch (args[0].toLowerCase()) {
case "select" -> {
Location placerLoc = mgPlayer.getLocation();
placerLoc.subtract(0, 1, 0);

if (args[1].equals("1")) {
Location p2 = mgPlayer.getSelectionPoints()[1];
mgPlayer.clearSelection();
mgPlayer.setSelection(placerLoc, p2);

mgPlayer.sendInfoMessage(Component.text("Point 1 selected", NamedTextColor.GRAY));
} else {
Location p2 = mgPlayer.getSelectionPoints()[0];
mgPlayer.clearSelection();
mgPlayer.setSelection(p2, placerLoc);

mgPlayer.sendInfoMessage(Component.text("Point 2 selected", NamedTextColor.GRAY));
}
return true;
}
case "create" -> {
if (mgPlayer.hasSelection()) {
String name = args[1];
Expand Down Expand Up @@ -189,7 +168,7 @@ public boolean onCommand(CommandSender sender, Minigame minigame,
mgPlayer.sendMessage(Component.text(args[1] + "Is not a valid number!"), MinigameMessageType.ERROR);
}
}
case "delete" -> {
case "remove" -> {
if (minigame.removeRegenRegion(args[1])) {
mgPlayer.sendInfoMessage(Component.text("Removed the regen region named " + args[1] + " from " + minigame.getName(false), NamedTextColor.GRAY));
} else {
Expand All @@ -215,17 +194,13 @@ public List<String> onTabComplete(CommandSender sender, Minigame minigame,

if (args.length == 1) {
List<String> tab = new ArrayList<>();
tab.add("select");
tab.add("create");
tab.add("list");
tab.add("delete");
tab.add("remove");
return MinigameUtils.tabCompleteMatch(tab, args[0]);
} else if (args.length == 2) {
List<String> tab = new ArrayList<>();
if (args[0].equalsIgnoreCase("select")) {
tab.add("1");
tab.add("2");
} else if (args[0].equalsIgnoreCase("create") || args[0].equalsIgnoreCase("delete")) {
if (args[0].equalsIgnoreCase("create") || args[0].equalsIgnoreCase("remove")) {
for (MgRegion region : minigame.getRegenRegions()) {
tab.add(region.getName());
}
Expand Down
Loading

1 comment on commit 51ff7ef

@FireInstall
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.