Initially add setwarp
This commit is contained in:
parent
b31f35e647
commit
a244de0169
8 changed files with 189 additions and 8 deletions
|
@ -15,6 +15,7 @@ import org.bukkit.scheduler.BukkitScheduler;
|
|||
|
||||
import dev.zontreck.ase.guis.ChestGUI;
|
||||
import dev.zontreck.ase.utils.TPACaches;
|
||||
import dev.zontreck.ase.warps.Warp;
|
||||
import io.papermc.lib.PaperLib;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
|
@ -24,6 +25,7 @@ public class AriasServerEssentials extends JavaPlugin implements Listener {
|
|||
protected static Map<String, SavedData> cachedPlayerData = new HashMap<>();
|
||||
private static List<TPACaches> cacheTPA = new ArrayList<>();
|
||||
public static boolean disabled = false;
|
||||
public Map<String, Warp> warps;
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
|
@ -43,6 +45,54 @@ public class AriasServerEssentials extends JavaPlugin implements Listener {
|
|||
|
||||
PluginManager pm = getServer().getPluginManager();
|
||||
pm.registerEvents(new EventsHandler(), this);
|
||||
|
||||
ReadConfiguration();
|
||||
}
|
||||
|
||||
public void ReadConfiguration() {
|
||||
ReadWarps();
|
||||
}
|
||||
|
||||
/**
|
||||
* This should be called by, and after player data is saved.
|
||||
*/
|
||||
public void SaveConfiguration() {
|
||||
CommitWarps();
|
||||
saveConfig();
|
||||
}
|
||||
|
||||
public void ReadWarps() {
|
||||
|
||||
if (getConfig().contains("warps")) {
|
||||
warps = new HashMap<>();
|
||||
|
||||
for (String warp : getConfig().getConfigurationSection("warps").getKeys(false)) {
|
||||
ConfigurationSection sect = getConfig().getConfigurationSection("warps").getConfigurationSection(warp);
|
||||
Warp w = new Warp();
|
||||
w.restore(sect);
|
||||
|
||||
warps.put(w.warpName, w);
|
||||
}
|
||||
} else {
|
||||
warps = new HashMap<>();
|
||||
}
|
||||
}
|
||||
|
||||
public void CommitWarps() {
|
||||
|
||||
ConfigurationSection warps = getConfig().createSection("warps");
|
||||
// Begin serialization
|
||||
for (Map.Entry<String, Warp> entry : this.warps.entrySet()) {
|
||||
Warp warp = entry.getValue();
|
||||
ConfigurationSection sect = warps.createSection(warp.warpName);
|
||||
sect.set("name", warp.warpName);
|
||||
sect.set("id", warp.owningPlayer.toString());
|
||||
sect.set("location", warp.location);
|
||||
sect.set("public", warp.isPublic);
|
||||
|
||||
warps.set(warp.warpName, sect);
|
||||
}
|
||||
getConfig().set("warps", warps);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -51,8 +101,8 @@ public class AriasServerEssentials extends JavaPlugin implements Listener {
|
|||
disabled = true;
|
||||
}
|
||||
|
||||
public static JavaPlugin getSelf() {
|
||||
return plugin;
|
||||
public static AriasServerEssentials getSelf() {
|
||||
return (AriasServerEssentials) plugin;
|
||||
}
|
||||
|
||||
public static SavedData getPlayerData(String playerID) {
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
package dev.zontreck.ase;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
|
||||
import dev.zontreck.ase.homes.Home;
|
||||
|
||||
/**
|
||||
* PLAYER SAVED DATA
|
||||
*/
|
||||
public class SavedData {
|
||||
public Map<String, Home> homes;
|
||||
// TODO: Add warps
|
||||
|
||||
public SavedData() {
|
||||
homes = new HashMap<>();
|
||||
|
@ -39,7 +39,7 @@ public class SavedData {
|
|||
|
||||
// Apply to main configuration
|
||||
AriasServerEssentials.getSelf().getConfig().getConfigurationSection("playerData").set(playerID, player);
|
||||
AriasServerEssentials.getSelf().saveConfig();
|
||||
AriasServerEssentials.getSelf().SaveConfiguration();
|
||||
}
|
||||
|
||||
public static SavedData deserialize(ConfigurationSection section) {
|
||||
|
|
|
@ -14,6 +14,7 @@ import dev.zontreck.ase.commands.tpa.TPACommand;
|
|||
import dev.zontreck.ase.commands.tpa.TPAHereCommand;
|
||||
import dev.zontreck.ase.commands.tpa.TPAcceptCommand;
|
||||
import dev.zontreck.ase.commands.tpa.TPDenyCommand;
|
||||
import dev.zontreck.ase.commands.warps.SetWarpCommand;
|
||||
import io.papermc.paper.command.brigadier.Commands;
|
||||
import io.papermc.paper.command.brigadier.argument.ArgumentTypes;
|
||||
import io.papermc.paper.command.brigadier.argument.resolvers.selector.PlayerSelectorArgumentResolver;
|
||||
|
@ -107,5 +108,15 @@ public class CommandRegistry {
|
|||
StringArgumentType.getString(ctx, "message"),
|
||||
StringArgumentType.getString(ctx, "name")))))
|
||||
.build());
|
||||
cmds.register(Commands.literal("setwarp")
|
||||
.requires(x -> x.getSender().isPermissionSet(SetWarpCommand.PERMISSION)
|
||||
|| x.getSender().isOp())
|
||||
.then(Commands.argument("name", StringArgumentType.string())
|
||||
.executes(ctx -> SetWarpCommand.execute(ctx.getSource(),
|
||||
StringArgumentType.getString(ctx, "name"))))
|
||||
|
||||
.build()
|
||||
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
package dev.zontreck.ase.commands.warps;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.mojang.brigadier.Command;
|
||||
|
||||
import dev.zontreck.ase.AriasServerEssentials;
|
||||
import dev.zontreck.ase.warps.Warp;
|
||||
import io.papermc.paper.command.brigadier.CommandSourceStack;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
|
||||
public class SetWarpCommand {
|
||||
public static final String PERMISSION = "ase.commands.setwarp";
|
||||
|
||||
public static int execute(CommandSourceStack ctx, String warpName) {
|
||||
Player player = (Player) ctx.getSender();
|
||||
Warp newWarp = Warp.create(warpName, player);
|
||||
AriasServerEssentials ASE = AriasServerEssentials.getSelf();
|
||||
|
||||
Component permissionDenied = Component.text("[", NamedTextColor.YELLOW)
|
||||
.append(Component.text("ASE", NamedTextColor.DARK_PURPLE))
|
||||
.append(Component.text("] ", NamedTextColor.YELLOW)).append(Component.text(
|
||||
"The warp could not be created, or updated, because the warp already exists and is owned by someone else.",
|
||||
NamedTextColor.DARK_RED));
|
||||
|
||||
Component warpCreatedOrUpdated = Component.text("[", NamedTextColor.YELLOW)
|
||||
.append(Component.text("ASE", NamedTextColor.DARK_PURPLE))
|
||||
.append(Component.text("] ", NamedTextColor.YELLOW)).append(Component.text(
|
||||
"The warp was successfully created or updated!", NamedTextColor.DARK_GREEN));
|
||||
|
||||
if (ASE.warps.containsKey(newWarp.warpName)) {
|
||||
// Check if current player is the owner
|
||||
if (ASE.warps.get(warpName).owningPlayer == player.getUniqueId()) {
|
||||
// Allow updating warp position
|
||||
newWarp = ASE.warps.get(warpName);
|
||||
newWarp.location = player.getLocation();
|
||||
|
||||
ASE.warps.put(warpName, newWarp);
|
||||
ASE.SaveConfiguration();
|
||||
|
||||
player.sendMessage(warpCreatedOrUpdated);
|
||||
} else {
|
||||
player.sendMessage(permissionDenied);
|
||||
}
|
||||
} else {
|
||||
ASE.warps.put(warpName, newWarp);
|
||||
ASE.SaveConfiguration();
|
||||
player.sendMessage(warpCreatedOrUpdated);
|
||||
}
|
||||
|
||||
return Command.SINGLE_SUCCESS;
|
||||
}
|
||||
}
|
|
@ -1,10 +1,8 @@
|
|||
package dev.zontreck.ase.homes;
|
||||
|
||||
import org.bukkit.EntityEffect;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
|
||||
public class Home {
|
||||
String homeName;
|
||||
|
|
55
src/main/java/dev/zontreck/ase/warps/Warp.java
Normal file
55
src/main/java/dev/zontreck/ase/warps/Warp.java
Normal file
|
@ -0,0 +1,55 @@
|
|||
package dev.zontreck.ase.warps;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class Warp {
|
||||
public String warpName;
|
||||
public UUID owningPlayer;
|
||||
public Location location;
|
||||
public boolean isPublic;
|
||||
/**
|
||||
* This list is all the players who are allowed to go to this warp.
|
||||
*
|
||||
* NOTE: The owning player is ALWAYS allowed to go to the warp, and will never
|
||||
* appear in the allowed list.
|
||||
*/
|
||||
public List<UUID> allowedPlayers = new ArrayList<>();
|
||||
|
||||
public OfflinePlayer getOwner() {
|
||||
return Bukkit.getOfflinePlayer(owningPlayer);
|
||||
}
|
||||
|
||||
public Warp() {
|
||||
|
||||
}
|
||||
|
||||
public static Warp create(String warpName, Player owner) {
|
||||
Warp warp = new Warp();
|
||||
warp.warpName = warpName;
|
||||
warp.owningPlayer = owner.getUniqueId();
|
||||
warp.location = owner.getLocation();
|
||||
warp.isPublic = false; // False by default
|
||||
|
||||
return warp;
|
||||
}
|
||||
|
||||
public void restore(ConfigurationSection section) {
|
||||
warpName = section.getString("name");
|
||||
owningPlayer = UUID.fromString(section.getString("id"));
|
||||
location = section.getLocation("location");
|
||||
isPublic = section.getBoolean("public");
|
||||
allowedPlayers = new ArrayList<>();
|
||||
|
||||
for (String id : section.getStringList("allowed")) {
|
||||
allowedPlayers.add(UUID.fromString(id));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -45,6 +45,9 @@ commands:
|
|||
broadcastas:
|
||||
description: Broadcasts a message with a defined name
|
||||
usage: "- /broadcastas [name] [message] -"
|
||||
setwarp:
|
||||
description: Create or update a named warp
|
||||
usage: "- /setwarp [name] -"
|
||||
permissions:
|
||||
ase.commands.*:
|
||||
description: Allow all commands
|
||||
|
@ -100,3 +103,6 @@ permissions:
|
|||
ase.broadcastas:
|
||||
description: Allows broadcasting messages with a defined name
|
||||
default: false
|
||||
ase.commands.setwarp:
|
||||
description: Allows creating or updating warps
|
||||
default: false
|
||||
|
|
|
@ -2,6 +2,7 @@ main: ${PACKAGE}.${NAME}
|
|||
name: ${NAME}
|
||||
version: "${VERSION}"
|
||||
api-version: "1.21.1"
|
||||
bootstrapper: dev.zontreck.ase.Bootstrapper
|
||||
author: AUTHOR
|
||||
description: DESCRIPTION
|
||||
commands:
|
||||
|
@ -44,6 +45,9 @@ commands:
|
|||
broadcastas:
|
||||
description: Broadcasts a message with a defined name
|
||||
usage: "- /broadcastas [name] [message] -"
|
||||
setwarp:
|
||||
description: Create or update a named warp
|
||||
usage: "- /setwarp [name] -"
|
||||
permissions:
|
||||
ase.commands.*:
|
||||
description: Allow all commands
|
||||
|
@ -99,3 +103,6 @@ permissions:
|
|||
ase.broadcastas:
|
||||
description: Allows broadcasting messages with a defined name
|
||||
default: false
|
||||
ase.commands.setwarp:
|
||||
description: Allows creating or updating warps
|
||||
default: false
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue