mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-06-17 14:21:08 +00:00
implement biome commands
This commit is contained in:
+9
-7
@@ -1,6 +1,11 @@
|
|||||||
package com.dfsek.terra.bukkit.command.command.biome;
|
package com.dfsek.terra.bukkit.command.command.biome;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.world.generation.GenerationPhase;
|
||||||
|
import com.dfsek.terra.biome.UserDefinedBiome;
|
||||||
|
import com.dfsek.terra.biome.grid.master.TerraBiomeGrid;
|
||||||
import com.dfsek.terra.bukkit.command.WorldCommand;
|
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.World;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
@@ -18,12 +23,9 @@ public class BiomeCommand extends WorldCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean execute(@NotNull Player sender, @NotNull Command command, @NotNull String label, @NotNull String[] args, World w) {
|
public boolean execute(@NotNull Player sender, @NotNull Command command, @NotNull String label, @NotNull String[] args, World w) {
|
||||||
/*
|
TerraBiomeGrid grid = getMain().getWorld(BukkitAdapter.adapt(sender.getWorld())).getGrid();
|
||||||
TerraBiomeGrid grid = ((TerraBukkitPlugin) getMain()).getWorld(sender.getWorld()).getGrid();
|
UserDefinedBiome biome = (UserDefinedBiome) grid.getBiome(BukkitAdapter.adapt(sender.getLocation()), GenerationPhase.POPULATE);
|
||||||
UserDefinedBiome biome = (UserDefinedBiome) grid.getBiome(sender.getLocation(), GenerationPhase.POPULATE);
|
LangUtil.send("command.biome.in", BukkitAdapter.adapt(sender), biome.getID());
|
||||||
LangUtil.send("command.biome.in", sender, biome.getID());
|
|
||||||
|
|
||||||
*/
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -34,7 +36,7 @@ public class BiomeCommand extends WorldCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<com.dfsek.terra.bukkit.command.Command> getSubCommands() {
|
public List<com.dfsek.terra.bukkit.command.Command> getSubCommands() {
|
||||||
return Arrays.asList(new BiomeLocateCommand(this, true), new BiomeLocateCommand(this, false), new BiomeInfoCommand(this));
|
return Arrays.asList(new BiomeLocateCommand(this), new BiomeInfoCommand(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+4
-5
@@ -1,5 +1,6 @@
|
|||||||
package com.dfsek.terra.bukkit.command.command.biome;
|
package com.dfsek.terra.bukkit.command.command.biome;
|
||||||
|
|
||||||
|
import com.dfsek.terra.TerraWorld;
|
||||||
import com.dfsek.terra.biome.UserDefinedBiome;
|
import com.dfsek.terra.biome.UserDefinedBiome;
|
||||||
import com.dfsek.terra.bukkit.BukkitCommandSender;
|
import com.dfsek.terra.bukkit.BukkitCommandSender;
|
||||||
import com.dfsek.terra.bukkit.command.WorldCommand;
|
import com.dfsek.terra.bukkit.command.WorldCommand;
|
||||||
@@ -18,6 +19,7 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class BiomeInfoCommand extends WorldCommand {
|
public class BiomeInfoCommand extends WorldCommand {
|
||||||
public BiomeInfoCommand(com.dfsek.terra.bukkit.command.Command parent) {
|
public BiomeInfoCommand(com.dfsek.terra.bukkit.command.Command parent) {
|
||||||
@@ -84,14 +86,11 @@ public class BiomeInfoCommand extends WorldCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getTabCompletions(@NotNull CommandSender sender, @NotNull String alias, @NotNull String[] args) {
|
public List<String> getTabCompletions(@NotNull CommandSender sender, @NotNull String alias, @NotNull String[] args) {
|
||||||
/*
|
if(!(sender instanceof Player) || !TerraWorld.isTerraWorld(BukkitAdapter.adapt(((Player) sender).getWorld())))
|
||||||
if(!(sender instanceof Player) || !(((Player) sender).getWorld().getGenerator() instanceof TerraChunkGenerator))
|
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
List<String> ids = ((TerraBukkitPlugin) getMain()).getWorld(((Player) sender).getWorld()).getConfig().getBiomeIDs();
|
List<String> ids = getMain().getWorld(BukkitAdapter.adapt(((Player) sender).getWorld())).getConfig().getBiomeIDs();
|
||||||
if(args.length == 1)
|
if(args.length == 1)
|
||||||
return ids.stream().filter(string -> string.toUpperCase().startsWith(args[0].toUpperCase())).collect(Collectors.toList());
|
return ids.stream().filter(string -> string.toUpperCase().startsWith(args[0].toUpperCase())).collect(Collectors.toList());
|
||||||
|
|
||||||
*/
|
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+26
-19
@@ -1,6 +1,20 @@
|
|||||||
package com.dfsek.terra.bukkit.command.command.biome;
|
package com.dfsek.terra.bukkit.command.command.biome;
|
||||||
|
|
||||||
|
import com.dfsek.terra.TerraWorld;
|
||||||
|
import com.dfsek.terra.api.math.vector.Vector3;
|
||||||
|
import com.dfsek.terra.async.AsyncBiomeFinder;
|
||||||
|
import com.dfsek.terra.biome.UserDefinedBiome;
|
||||||
|
import com.dfsek.terra.bukkit.TerraBukkitPlugin;
|
||||||
import com.dfsek.terra.bukkit.command.WorldCommand;
|
import com.dfsek.terra.bukkit.command.WorldCommand;
|
||||||
|
import com.dfsek.terra.bukkit.world.BukkitAdapter;
|
||||||
|
import com.dfsek.terra.config.lang.LangUtil;
|
||||||
|
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.World;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
@@ -9,54 +23,50 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class BiomeLocateCommand extends WorldCommand {
|
public class BiomeLocateCommand extends WorldCommand {
|
||||||
private final boolean tp;
|
public BiomeLocateCommand(com.dfsek.terra.bukkit.command.Command parent) {
|
||||||
|
|
||||||
public BiomeLocateCommand(com.dfsek.terra.bukkit.command.Command parent, boolean teleport) {
|
|
||||||
super(parent);
|
super(parent);
|
||||||
this.tp = teleport;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("DuplicatedCode")
|
@SuppressWarnings("DuplicatedCode")
|
||||||
@Override
|
@Override
|
||||||
public boolean execute(@NotNull Player sender, @NotNull Command command, @NotNull String label, @NotNull String[] args, World world) {
|
public boolean execute(@NotNull Player sender, @NotNull Command command, @NotNull String label, @NotNull String[] args, World world) {
|
||||||
/*
|
|
||||||
String id = args[0];
|
String id = args[0];
|
||||||
int maxRadius;
|
int maxRadius;
|
||||||
try {
|
try {
|
||||||
maxRadius = Integer.parseInt(args[1]);
|
maxRadius = Integer.parseInt(args[1]);
|
||||||
} catch(NumberFormatException e) {
|
} catch(NumberFormatException e) {
|
||||||
LangUtil.send("command.biome.invalid-radius", sender, args[1]);
|
LangUtil.send("command.biome.invalid-radius", BukkitAdapter.adapt(sender), args[1]);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
UserDefinedBiome b;
|
UserDefinedBiome b;
|
||||||
try {
|
try {
|
||||||
b = ((TerraBukkitPlugin) getMain()).getWorld(world).getConfig().getBiome(id);
|
b = getMain().getWorld(BukkitAdapter.adapt(world)).getConfig().getBiome(id);
|
||||||
} catch(IllegalArgumentException | NullPointerException e) {
|
} catch(IllegalArgumentException | NullPointerException e) {
|
||||||
LangUtil.send("command.biome.invalid", sender, id);
|
LangUtil.send("command.biome.invalid", BukkitAdapter.adapt(sender), id);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
Bukkit.getScheduler().runTaskAsynchronously(getMain(), new AsyncBiomeFinder(((TerraBukkitPlugin) getMain()).getWorld(world).getGrid(), b, sender.getLocation().clone().multiply((1D / ((TerraBukkitPlugin) getMain()).getTerraConfig().getBiomeSearchResolution())), 0, maxRadius, location -> {
|
Bukkit.getScheduler().runTaskAsynchronously((TerraBukkitPlugin) getMain(), new AsyncBiomeFinder(getMain().getWorld(BukkitAdapter.adapt(world)).getGrid(), b, BukkitAdapter.adapt(sender.getLocation().clone().multiply((1D / ((TerraBukkitPlugin) getMain()).getTerraConfig().getBiomeSearchResolution()))), 0, maxRadius, location -> {
|
||||||
if(location != null) {
|
if(location != null) {
|
||||||
ComponentBuilder cm = new ComponentBuilder(String.format("The nearest %s is at ", id.toLowerCase()))
|
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)
|
.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 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")}))
|
.event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new BaseComponent[] {new TextComponent("Click to teleport")}))
|
||||||
.color(ChatColor.GREEN)
|
.color(ChatColor.GREEN)
|
||||||
.append(String.format(" (%.1f blocks away)", location.add(new Vector(0, sender.getLocation().getY(), 0)).distance(sender.getLocation().toVector())), ComponentBuilder.FormatRetention.NONE);
|
.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());
|
sender.spigot().sendMessage(cm.create());
|
||||||
// LangUtil.send("command.biome.biome-found", sender, String.valueOf(location.getBlockX()), String.valueOf(location.getBlockZ()));
|
// LangUtil.send("command.biome.biome-found", sender, String.valueOf(location.getBlockX()), String.valueOf(location.getBlockZ()));
|
||||||
} else LangUtil.send("command.biome.unable-to-locate", sender);
|
} else LangUtil.send("command.biome.unable-to-locate", BukkitAdapter.adapt(sender));
|
||||||
}, (TerraBukkitPlugin) getMain()));
|
}, getMain()));
|
||||||
|
|
||||||
*/
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return tp ? "teleport" : "locate";
|
return "locate";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -71,14 +81,11 @@ public class BiomeLocateCommand extends WorldCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getTabCompletions(@NotNull CommandSender sender, @NotNull String alias, @NotNull String[] args) {
|
public List<String> getTabCompletions(@NotNull CommandSender sender, @NotNull String alias, @NotNull String[] args) {
|
||||||
/*
|
if(!(sender instanceof Player) || !TerraWorld.isTerraWorld(BukkitAdapter.adapt(((Player) sender).getWorld())))
|
||||||
if(!(sender instanceof Player) || !(((Player) sender).getWorld().getGenerator() instanceof TerraChunkGenerator))
|
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
List<String> ids = ((TerraBukkitPlugin) getMain()).getWorld(((Player) sender).getWorld()).getConfig().getBiomeIDs();
|
List<String> ids = getMain().getWorld(BukkitAdapter.adapt(((Player) sender).getWorld())).getConfig().getBiomeIDs();
|
||||||
if(args.length == 1)
|
if(args.length == 1)
|
||||||
return ids.stream().filter(string -> string.toUpperCase().startsWith(args[0].toUpperCase())).collect(Collectors.toList());
|
return ids.stream().filter(string -> string.toUpperCase().startsWith(args[0].toUpperCase())).collect(Collectors.toList());
|
||||||
|
|
||||||
*/
|
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-4
@@ -3,7 +3,6 @@ package com.dfsek.terra.bukkit.command.command.structure;
|
|||||||
import com.dfsek.terra.TerraWorld;
|
import com.dfsek.terra.TerraWorld;
|
||||||
import com.dfsek.terra.api.math.vector.Vector3;
|
import com.dfsek.terra.api.math.vector.Vector3;
|
||||||
import com.dfsek.terra.async.AsyncStructureFinder;
|
import com.dfsek.terra.async.AsyncStructureFinder;
|
||||||
import com.dfsek.terra.bukkit.BukkitCommandSender;
|
|
||||||
import com.dfsek.terra.bukkit.TerraBukkitPlugin;
|
import com.dfsek.terra.bukkit.TerraBukkitPlugin;
|
||||||
import com.dfsek.terra.bukkit.command.WorldCommand;
|
import com.dfsek.terra.bukkit.command.WorldCommand;
|
||||||
import com.dfsek.terra.bukkit.world.BukkitAdapter;
|
import com.dfsek.terra.bukkit.world.BukkitAdapter;
|
||||||
@@ -42,14 +41,14 @@ public class LocateCommand extends WorldCommand {
|
|||||||
try {
|
try {
|
||||||
maxRadius = Integer.parseInt(args[1]);
|
maxRadius = Integer.parseInt(args[1]);
|
||||||
} catch(NumberFormatException e) {
|
} catch(NumberFormatException e) {
|
||||||
LangUtil.send("command.structure.invalid-radius", new BukkitCommandSender(sender), args[1]);
|
LangUtil.send("command.structure.invalid-radius", BukkitAdapter.adapt(sender), args[1]);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
TerraStructure s;
|
TerraStructure s;
|
||||||
try {
|
try {
|
||||||
s = Objects.requireNonNull(getMain().getWorld(BukkitAdapter.adapt(world)).getConfig().getStructure(id));
|
s = Objects.requireNonNull(getMain().getWorld(BukkitAdapter.adapt(world)).getConfig().getStructure(id));
|
||||||
} catch(IllegalArgumentException | NullPointerException e) {
|
} catch(IllegalArgumentException | NullPointerException e) {
|
||||||
LangUtil.send("command.structure.invalid", new BukkitCommandSender(sender), id);
|
LangUtil.send("command.structure.invalid", BukkitAdapter.adapt(sender), id);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
Bukkit.getScheduler().runTaskAsynchronously((TerraBukkitPlugin) getMain(), new AsyncStructureFinder(getMain().getWorld(BukkitAdapter.adapt(world)).getGrid(), s, BukkitAdapter.adapt(sender.getLocation()), 0, maxRadius, (location) -> {
|
Bukkit.getScheduler().runTaskAsynchronously((TerraBukkitPlugin) getMain(), new AsyncStructureFinder(getMain().getWorld(BukkitAdapter.adapt(world)).getGrid(), s, BukkitAdapter.adapt(sender.getLocation()), 0, maxRadius, (location) -> {
|
||||||
@@ -61,7 +60,7 @@ public class LocateCommand extends WorldCommand {
|
|||||||
.event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new BaseComponent[] {new TextComponent("Click to teleport")}))
|
.event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new BaseComponent[] {new TextComponent("Click to teleport")}))
|
||||||
.color(ChatColor.GREEN)
|
.color(ChatColor.GREEN)
|
||||||
.append(String.format(" (%.1f blocks away)", location.add(new Vector3(0, sender.getLocation().getY(), 0)).distance(
|
.append(String.format(" (%.1f blocks away)", location.add(new Vector3(0, sender.getLocation().getY(), 0)).distance(
|
||||||
new Vector3(sender.getLocation().getX(), sender.getLocation().getY(), sender.getLocation().getZ()))), ComponentBuilder.FormatRetention.NONE);
|
BukkitAdapter.adapt(sender.getLocation().toVector()))), ComponentBuilder.FormatRetention.NONE);
|
||||||
sender.spigot().sendMessage(cm.create());
|
sender.spigot().sendMessage(cm.create());
|
||||||
} else
|
} else
|
||||||
sender.sendMessage("Unable to locate structure. ");
|
sender.sendMessage("Unable to locate structure. ");
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package com.dfsek.terra.bukkit.world;
|
package com.dfsek.terra.bukkit.world;
|
||||||
|
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.math.vector.Vector3;
|
||||||
|
import com.dfsek.terra.api.platform.CommandSender;
|
||||||
import com.dfsek.terra.api.platform.block.Axis;
|
import com.dfsek.terra.api.platform.block.Axis;
|
||||||
import com.dfsek.terra.api.platform.block.BlockFace;
|
import com.dfsek.terra.api.platform.block.BlockFace;
|
||||||
import com.dfsek.terra.api.platform.block.data.Bisected;
|
import com.dfsek.terra.api.platform.block.data.Bisected;
|
||||||
@@ -10,8 +12,10 @@ import com.dfsek.terra.api.platform.block.data.Slab;
|
|||||||
import com.dfsek.terra.api.platform.block.data.Stairs;
|
import com.dfsek.terra.api.platform.block.data.Stairs;
|
||||||
import com.dfsek.terra.api.platform.world.Chunk;
|
import com.dfsek.terra.api.platform.world.Chunk;
|
||||||
import com.dfsek.terra.api.platform.world.World;
|
import com.dfsek.terra.api.platform.world.World;
|
||||||
|
import com.dfsek.terra.bukkit.BukkitCommandSender;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.block.data.type.Wall;
|
import org.bukkit.block.data.type.Wall;
|
||||||
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Utility class to adapt Bukkit enums to Terra enums.
|
* Utility class to adapt Bukkit enums to Terra enums.
|
||||||
@@ -330,6 +334,22 @@ public final class BukkitAdapter {
|
|||||||
return new com.dfsek.terra.api.math.vector.Location(adapt(location.getWorld()), location.getX(), location.getY(), location.getZ());
|
return new com.dfsek.terra.api.math.vector.Location(adapt(location.getWorld()), location.getX(), location.getY(), location.getZ());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Vector adapt(Vector3 vector3) {
|
||||||
|
return new Vector(vector3.getX(), vector3.getY(), vector3.getZ());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Vector3 adapt(Vector vector) {
|
||||||
|
return new Vector3(vector.getX(), vector.getY(), vector.getZ());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static CommandSender adapt(org.bukkit.command.CommandSender sender) {
|
||||||
|
return new BukkitCommandSender(sender);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static org.bukkit.command.CommandSender adapt(CommandSender sender) {
|
||||||
|
return ((BukkitCommandSender) sender).getHandle();
|
||||||
|
}
|
||||||
|
|
||||||
public static World adapt(org.bukkit.World world) {
|
public static World adapt(org.bukkit.World world) {
|
||||||
return new BukkitWorld(world);
|
return new BukkitWorld(world);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user