From 5a85aced45e48fa11062abc724040b445422b55a Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 10 Mar 2021 02:50:40 -0700 Subject: [PATCH] BiomeInfoCommand --- .../commands/biome/BiomeInfoCommand.java | 28 ++++++ .../command/command/biome/BiomeCommand.java | 50 ---------- .../command/biome/BiomeInfoCommand.java | 86 ----------------- .../command/biome/BiomeLocateCommand.java | 95 ------------------- 4 files changed, 28 insertions(+), 231 deletions(-) delete mode 100644 platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/biome/BiomeCommand.java delete mode 100644 platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/biome/BiomeInfoCommand.java delete mode 100644 platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/biome/BiomeLocateCommand.java diff --git a/common/src/main/java/com/dfsek/terra/commands/biome/BiomeInfoCommand.java b/common/src/main/java/com/dfsek/terra/commands/biome/BiomeInfoCommand.java index e87033e63..4fe3fe2ac 100644 --- a/common/src/main/java/com/dfsek/terra/commands/biome/BiomeInfoCommand.java +++ b/common/src/main/java/com/dfsek/terra/commands/biome/BiomeInfoCommand.java @@ -3,9 +3,16 @@ package com.dfsek.terra.commands.biome; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Argument; import com.dfsek.terra.api.command.annotation.Command; +import com.dfsek.terra.api.command.annotation.inject.ArgumentTarget; import com.dfsek.terra.api.platform.CommandSender; +import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.commands.biome.arg.BiomeArgumentParser; import com.dfsek.terra.commands.biome.tab.BiomeTabCompleter; +import com.dfsek.terra.config.templates.BiomeTemplate; +import com.dfsek.terra.world.population.items.TerraStructure; + +import java.util.List; @Command( arguments = { @@ -17,8 +24,29 @@ import com.dfsek.terra.commands.biome.tab.BiomeTabCompleter; } ) public class BiomeInfoCommand implements CommandTemplate { + @ArgumentTarget("biome") + private TerraBiome biome; + @Override public void execute(CommandSender sender) { + sender.sendMessage("Biome info for \"" + biome.getID() + "\"."); + sender.sendMessage("Vanilla biome: " + biome.getVanillaBiomes()); + + if(biome instanceof UserDefinedBiome) { + BiomeTemplate bio = ((UserDefinedBiome) biome).getConfig(); + + if(bio.getExtend() != null) sender.sendMessage("Extends: " + bio.getExtend()); + + List structureConfigs = bio.getStructures(); + + if(structureConfigs.size() == 0) sender.sendMessage("No Structures"); + else { + sender.sendMessage("-------Structures-------"); + for(TerraStructure c : structureConfigs) { + sender.sendMessage(" - " + c.getTemplate().getID()); + } + } + } } } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/biome/BiomeCommand.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/biome/BiomeCommand.java deleted file mode 100644 index 216897347..000000000 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/biome/BiomeCommand.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.dfsek.terra.bukkit.command.command.biome; - -import com.dfsek.terra.api.world.biome.UserDefinedBiome; -import com.dfsek.terra.api.world.biome.provider.BiomeProvider; -import com.dfsek.terra.bukkit.command.WorldCommand; -import com.dfsek.terra.bukkit.world.BukkitAdapter; -import com.dfsek.terra.config.lang.LangUtil; -import org.bukkit.World; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -public class BiomeCommand extends WorldCommand { - public BiomeCommand(com.dfsek.terra.bukkit.command.Command parent) { - super(parent); - } - - @Override - public boolean execute(@NotNull Player sender, @NotNull Command command, @NotNull String label, @NotNull String[] args, World w) { - BiomeProvider grid = getMain().getWorld(BukkitAdapter.adapt(sender.getWorld())).getBiomeProvider(); - UserDefinedBiome biome = (UserDefinedBiome) grid.getBiome(BukkitAdapter.adapt(sender.getLocation())); - LangUtil.send("command.biome.in", BukkitAdapter.adapt(sender), biome.getID()); - return true; - } - - @Override - public String getName() { - return "biome"; - } - - @Override - public List getSubCommands() { - return Arrays.asList(new BiomeLocateCommand(this), new BiomeInfoCommand(this)); - } - - @Override - public int arguments() { - return 0; - } - - @Override - public List getTabCompletions(@NotNull CommandSender sender, @NotNull String alias, @NotNull String[] args) { - return Collections.emptyList(); - } -} diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/biome/BiomeInfoCommand.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/biome/BiomeInfoCommand.java deleted file mode 100644 index 2eee4e2ec..000000000 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/biome/BiomeInfoCommand.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.dfsek.terra.bukkit.command.command.biome; - -import com.dfsek.terra.api.world.biome.UserDefinedBiome; -import com.dfsek.terra.bukkit.BukkitCommandSender; -import com.dfsek.terra.bukkit.command.WorldCommand; -import com.dfsek.terra.bukkit.world.BukkitAdapter; -import com.dfsek.terra.config.lang.LangUtil; -import com.dfsek.terra.config.pack.ConfigPack; -import com.dfsek.terra.config.pack.WorldConfig; -import com.dfsek.terra.config.templates.BiomeTemplate; -import com.dfsek.terra.world.TerraWorld; -import com.dfsek.terra.world.population.items.TerraStructure; -import org.bukkit.World; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.stream.Collectors; - -public class BiomeInfoCommand extends WorldCommand { - public BiomeInfoCommand(com.dfsek.terra.bukkit.command.Command parent) { - super(parent); - } - - @Override - public boolean execute(@NotNull Player sender, @NotNull Command command, @NotNull String label, @NotNull String[] args, World world) { - String id = args[0]; - WorldConfig cfg = getMain().getWorld(BukkitAdapter.adapt(world)).getConfig(); - UserDefinedBiome b; - try { - b = (UserDefinedBiome) cfg.getBiomeRegistry().get(id); - } catch(IllegalArgumentException | NullPointerException e) { - LangUtil.send("command.biome.invalid", new BukkitCommandSender(sender), id); - return true; - } - sender.sendMessage("TerraBiome info for \"" + b.getID() + "\"."); - sender.sendMessage("Vanilla biome: " + b.getVanillaBiomes()); - - BiomeTemplate bio = b.getConfig(); - - if(bio.getExtend() != null) sender.sendMessage("Extends: " + bio.getExtend()); - - List structureConfigs = bio.getStructures(); - - if(structureConfigs.size() == 0) sender.sendMessage("No Structures"); - else { - sender.sendMessage("-------Structures-------"); - for(TerraStructure c : structureConfigs) { - sender.sendMessage(" - " + c.getTemplate().getID()); - } - } - - return true; - } - - @Override - public String getName() { - return "info"; - } - - @Override - public List getSubCommands() { - return Collections.emptyList(); - } - - @Override - public int arguments() { - return 1; - } - - @Override - public List getTabCompletions(@NotNull CommandSender sender, @NotNull String alias, @NotNull String[] args) { - if(!(sender instanceof Player) || !TerraWorld.isTerraWorld(BukkitAdapter.adapt(((Player) sender).getWorld()))) - return Collections.emptyList(); - List ids = new ArrayList<>(); - - getMain().getWorld(BukkitAdapter.adapt(((Player) sender).getWorld())).getConfig().getBiomeRegistry().forEach((id, biome) -> ids.add(id)); - if(args.length == 1) - return ids.stream().filter(string -> string.toUpperCase().startsWith(args[0].toUpperCase())).collect(Collectors.toList()); - return Collections.emptyList(); - } -} diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/biome/BiomeLocateCommand.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/biome/BiomeLocateCommand.java deleted file mode 100644 index ec8800123..000000000 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/biome/BiomeLocateCommand.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.dfsek.terra.bukkit.command.command.biome; - -import com.dfsek.terra.api.math.vector.Vector3; -import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.locate.AsyncBiomeFinder; -import com.dfsek.terra.bukkit.TerraBukkitPlugin; -import com.dfsek.terra.bukkit.command.WorldCommand; -import com.dfsek.terra.bukkit.world.BukkitAdapter; -import com.dfsek.terra.config.lang.LangUtil; -import com.dfsek.terra.world.TerraWorld; -import net.md_5.bungee.api.ChatColor; -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.api.chat.ClickEvent; -import net.md_5.bungee.api.chat.ComponentBuilder; -import net.md_5.bungee.api.chat.HoverEvent; -import net.md_5.bungee.api.chat.TextComponent; -import org.bukkit.Bukkit; -import org.bukkit.World; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.stream.Collectors; - -@SuppressWarnings("deprecation") -public class BiomeLocateCommand extends WorldCommand { - public BiomeLocateCommand(com.dfsek.terra.bukkit.command.Command parent) { - super(parent); - } - - @SuppressWarnings("DuplicatedCode") - @Override - public boolean execute(@NotNull Player sender, @NotNull Command command, @NotNull String label, @NotNull String[] args, World world) { - String id = args[0]; - int maxRadius; - try { - maxRadius = Integer.parseInt(args[1]); - } catch(NumberFormatException e) { - LangUtil.send("command.biome.invalid-radius", BukkitAdapter.adapt(sender), args[1]); - return true; - } - TerraBiome b; - try { - b = getMain().getWorld(BukkitAdapter.adapt(world)).getConfig().getBiomeRegistry().get(id); - } catch(IllegalArgumentException | NullPointerException e) { - LangUtil.send("command.biome.invalid", BukkitAdapter.adapt(sender), id); - return true; - } - Bukkit.getScheduler().runTaskAsynchronously((TerraBukkitPlugin) getMain(), new AsyncBiomeFinder(getMain().getWorld(BukkitAdapter.adapt(world)).getBiomeProvider(), b, BukkitAdapter.adapt(sender.getLocation().clone().multiply((1D / ((TerraBukkitPlugin) getMain()).getTerraConfig().getBiomeSearchResolution()))), 0, maxRadius, location -> { - if(location != null) { - ComponentBuilder cm = new ComponentBuilder(String.format("The nearest %s is at ", id.toLowerCase())) - .append(String.format("[%d, ~, %d]", location.getBlockX(), location.getBlockZ()), ComponentBuilder.FormatRetention.NONE) - .event(new ClickEvent(ClickEvent.Action.RUN_COMMAND, String.format("/minecraft:tp %s %d.0 %.2f %d.0", sender.getName(), location.getBlockX(), sender.getLocation().getY(), location.getBlockZ()))) - .event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new BaseComponent[] {new TextComponent("Click to teleport")})) - .color(ChatColor.GREEN) - .append(String.format(" (%.1f blocks away)", location.add(new Vector3(0, sender.getLocation().getY(), 0)).distance(BukkitAdapter.adapt(sender.getLocation().toVector()))), ComponentBuilder.FormatRetention.NONE); - sender.spigot().sendMessage(cm.create()); - // LangUtil.send("command.biome.biome-found", sender, String.valueOf(location.getBlockX()), String.valueOf(location.getBlockZ())); - } else LangUtil.send("command.biome.unable-to-locate", BukkitAdapter.adapt(sender)); - }, getMain())); - - return true; - } - - @Override - public String getName() { - return "locate"; - } - - @Override - public List getSubCommands() { - return Collections.emptyList(); - } - - @Override - public int arguments() { - return 2; - } - - @Override - public List getTabCompletions(@NotNull CommandSender sender, @NotNull String alias, @NotNull String[] args) { - if(!(sender instanceof Player) || !TerraWorld.isTerraWorld(BukkitAdapter.adapt(((Player) sender).getWorld()))) - return Collections.emptyList(); - List ids = new ArrayList<>(); - - getMain().getWorld(BukkitAdapter.adapt(((Player) sender).getWorld())).getConfig().getBiomeRegistry().forEach((id, biome) -> ids.add(id)); - if(args.length == 1) - return ids.stream().filter(string -> string.toUpperCase().startsWith(args[0].toUpperCase())).collect(Collectors.toList()); - return Collections.emptyList(); - } -}