Skip to content

Commit

Permalink
improve admin commands
Browse files Browse the repository at this point in the history
  • Loading branch information
PinkGoosik committed Mar 30, 2023
1 parent 1930ab1 commit d1b9ca7
Show file tree
Hide file tree
Showing 6 changed files with 66 additions and 25 deletions.
13 changes: 10 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ plugins {
id "io.github.juuxel.loom-quiltflower" version "1.8.0"
}

archivesBaseName = project.archives_base_name
version = project.mod_version + "+" + project.minecraft_version
group = project.maven_group

Expand Down Expand Up @@ -34,10 +33,18 @@ dependencies {
modImplementation include("eu.pb4:placeholder-api:${project.placeholder_api}")
modImplementation include("xyz.nucleoid:server-translations-api:${project.server_translations_api}")
modImplementation include("me.lucko:fabric-permissions-api:0.2-SNAPSHOT")

modLocalRuntime "maven.modrinth:dcwa:4.0"
modLocalRuntime "maven.modrinth:starlight:1.1.1+1.19"
modLocalRuntime "maven.modrinth:lithium:mc1.19.4-0.11.1"
}

loom {
accessWidenerPath = file("src/main/resources/" + archivesBaseName + ".accesswidener")
accessWidenerPath = file("src/main/resources/" + base.archivesName.get() + ".accesswidener")
}

base {
archivesName = project.archives_base_name
}

processResources {
Expand All @@ -60,6 +67,6 @@ java {

jar {
from("LICENSE") {
rename { "${it}_${project.archivesBaseName}" }
rename { "${it}_${base.archivesName.get()}"}
}
}
19 changes: 9 additions & 10 deletions src/main/java/skylands/command/HubCommands.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import com.mojang.brigadier.CommandDispatcher;
import me.lucko.fabric.api.permissions.v0.Permissions;
import net.minecraft.command.argument.BlockPosArgumentType;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.util.math.BlockPos;
Expand All @@ -21,37 +20,37 @@ static void init(CommandDispatcher<ServerCommandSource> dispatcher) {
dispatcher.register(literal("sl").then(literal("hub").requires(Permissions.require("skylands.hub", true)).executes(context -> {
var source = context.getSource();
var player = source.getPlayer();
MinecraftServer server = source.getServer();

if(player != null) {
HubCommands.visit(player, server);
HubCommands.visit(player);
}
return 1;
})));

dispatcher.register(literal("force-sl").then(literal("set-hub-pos").requires(Permissions.require("skylands.force.hub.position", 4)).then(argument("position", blockPos()).executes(context -> {
dispatcher.register(literal("force-sl").then(literal("hub").then(literal("set-spawn-pos").requires(Permissions.require("skylands.force.hub.position", 4)).then(argument("position", blockPos()).executes(context -> {
var pos = BlockPosArgumentType.getBlockPos(context, "position");
var source = context.getSource();
HubCommands.setPos(pos, source);
return 1;
}))).then(literal("toggle-hub-protection").requires(Permissions.require("skylands.force.hub.protection", 4)).executes(context -> {
}))).then(literal("toggle-protection").requires(Permissions.require("skylands.force.hub.protection", 4)).executes(context -> {
HubCommands.toggleProtection(context.getSource());
return 1;
})));
}))));
}

public static void visit(ServerPlayerEntity player, MinecraftServer server) {
public static void visit(ServerPlayerEntity player) {
player.sendMessage(Texts.prefixed("message.skylands.hub_visit"));
Skylands.instance.hub.visit(player);
Skylands.getHub().visit(player);
}

static void setPos(BlockPos pos, ServerCommandSource source) {
Skylands.instance.hub.pos = new Vec3d(pos.getX() + 0.5, pos.getY(), pos.getZ() + 0.5);
Skylands.getHub().pos = new Vec3d(pos.getX() + 0.5, pos.getY(), pos.getZ() + 0.5);
String posText = pos.getX() + " " + pos.getY() + " " + pos.getZ();
source.sendFeedback(Texts.prefixed("message.skylands.hub_pos_change", map -> map.put("%pos%", posText)), true);
}

static void toggleProtection(ServerCommandSource source) {
var hub = Skylands.instance.hub;
var hub = Skylands.getHub();
if(hub.hasProtection) {
hub.hasProtection = false;
source.sendFeedback(Texts.prefixed("message.skylands.hub_protection.disable"), true);
Expand Down
39 changes: 31 additions & 8 deletions src/main/java/skylands/command/SkylandsCommands.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.suggestion.SuggestionProvider;
import me.lucko.fabric.api.permissions.v0.Permissions;
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
import net.minecraft.server.command.ServerCommandSource;
Expand All @@ -15,6 +16,16 @@
import static com.mojang.brigadier.arguments.StringArgumentType.word;

public class SkylandsCommands {
public static final SuggestionProvider<ServerCommandSource> SUGGEST_ISLANDS = (context, builder) -> {
String remains = builder.getRemaining();

for(var island : Skylands.getIslands().stuck) {
if(island.owner.name.contains(remains)) {
builder.suggest(island.owner.name);
}
}
return builder.buildFuture();
};

public static void init() {
CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> SkylandsCommands.register(dispatcher));
Expand All @@ -33,20 +44,32 @@ private static void register(CommandDispatcher<ServerCommandSource> dispatcher)
DeleteCommand.init(dispatcher);
SettingCommands.init(dispatcher);

dispatcher.register(literal("force-sl").then(literal("delete-island").requires(Permissions.require("skylands.force.delete", 4)).then(argument("player", word()).executes(context -> {
dispatcher.register(literal("force-sl").then(literal("delete").requires(Permissions.require("skylands.force.delete", 4)).then(argument("player", word()).suggests(SUGGEST_ISLANDS).executes(context -> {
var playerName = StringArgumentType.getString(context, "player");
var island = Skylands.instance.islands.get(playerName);

if(island.isPresent()) {
Skylands.getIslands().get(playerName).ifPresentOrElse(island -> {
Skylands.instance.islands.delete(playerName);
context.getSource().sendFeedback(Texts.prefixed("message.skylands.force_delete.success", map -> map.put("%player%", playerName)), true);
}
else {
context.getSource().sendFeedback(Texts.prefixed("message.skylands.force_delete.fail", map -> map.put("%player%", playerName)), true);
}
Texts.prefixed(context, "message.skylands.force.delete.success", map -> map.put("%player%", playerName));
}, () -> {
Texts.prefixed(context, "message.skylands.force.delete.fail", map -> map.put("%player%", playerName));
});

return 1;
}))));

dispatcher.register(literal("force-sl").then(literal("visit").requires(Permissions.require("skylands.force.visit", 4)).then(argument("player", word()).suggests(SUGGEST_ISLANDS).executes(context -> {
var playerName = StringArgumentType.getString(context, "player");
var admin = context.getSource().getPlayer();
if(admin != null) {
Skylands.getIslands().get(playerName).ifPresentOrElse(island -> {
island.visitAsMember(admin);
Texts.prefixed(context, "message.skylands.force.visit.success", map -> map.put("%player%", playerName));
}, () -> {
Texts.prefixed(context, "message.skylands.force.visit.fail", map -> map.put("%player%", playerName));
});
}
return 1;
}))));
SkylandsConfigCommands.init(dispatcher);
}
}
2 changes: 0 additions & 2 deletions src/main/java/skylands/logic/Skylands.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ public void readFromNbt(NbtCompound nbt) {
NbtMigrator.update(skylandsNbt);

this.format = skylandsNbt.getInt("format");
// this.config.readFromNbt(skylandsNbt);
this.islands.readFromNbt(skylandsNbt);
this.hub.readFromNbt(skylandsNbt);
}
Expand All @@ -41,7 +40,6 @@ public void writeToNbt(NbtCompound nbt) {
NbtCompound skylandsNbt = new NbtCompound();

skylandsNbt.putInt("format", this.format);
// this.config.writeToNbt(skylandsNbt);
this.islands.writeToNbt(skylandsNbt);
this.hub.writeToNbt(skylandsNbt);

Expand Down
11 changes: 11 additions & 0 deletions src/main/java/skylands/util/Texts.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package skylands.util;

import com.mojang.brigadier.context.CommandContext;
import eu.pb4.placeholders.api.TextParserUtils;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.text.Text;
import net.minecraft.util.Language;

Expand All @@ -11,6 +14,14 @@
public class Texts {
public static String prefixTranslationKey = "message.skylands.prefix";

public static void prefixed(CommandContext<ServerCommandSource> context, String key, Consumer<Map<String, String>> builder) {
context.getSource().sendFeedback(Texts.prefixed(key, builder), false);
}

public static void prefixed(PlayerEntity player, String key, Consumer<Map<String, String>> builder) {
player.sendMessage(Texts.prefixed(key, builder));
}

public static Text prefixed(String key, Consumer<Map<String, String>> builder) {
String prefix = getPrefix();
String text = Language.getInstance().get(key);
Expand Down
7 changes: 5 additions & 2 deletions src/main/resources/data/skylands/lang/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,11 @@
"message.skylands.island_delete.success": "Your Island got successfully deleted!",
"message.skylands.island_delete.warning": "Are you sure that you want to delete your Island? It can't be rolled back even with all might and determination! Type <color:#3fd9ff>/sl delete CONFIRM <color:#98f9ff>to continue.",

"message.skylands.force_delete.fail": "<color:#ff816a>%player% does not have an Island yet!",
"message.skylands.force_delete.success": "%player%'s Island got successfully deleted!",
"message.skylands.force.delete.fail": "<color:#ff816a>%player% does not have an Island yet!",
"message.skylands.force.delete.success": "%player%'s Island got successfully deleted!",

"message.skylands.force.visit.fail": "<color:#ff816a>%player% does not have an Island yet!",
"message.skylands.force.visit.success": "Teleporting to the <color:#3fd9ff>%player%<color:#98f9ff>'s Island!",

"message.skylands.hub_visit": "Teleporting to the Hub!",
"message.skylands.hub_pos_change": "Position of the Hub got changed to <color:#3fd9ff>%pos%",
Expand Down

0 comments on commit d1b9ca7

Please sign in to comment.