aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/dev/mayaqq/ygasi/registry/CommandRegistry.java
blob: f46de6467aeeb90ad7acccd2d3ba1c04b9389f29 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package dev.mayaqq.ygasi.registry;

import com.mojang.brigadier.arguments.IntegerArgumentType;
import dev.mayaqq.ygasi.gui.*;
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
import net.minecraft.command.argument.EntityArgumentType;
import net.minecraft.server.command.CommandManager;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.stat.Stats;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;

import static dev.mayaqq.ygasi.registry.StatRegistry.SKILL_POINTS;
import static dev.mayaqq.ygasi.registry.StatRegistry.SKILL_POINTS_TOTAL;
import static net.minecraft.server.command.CommandManager.literal;

public class CommandRegistry {
    public static void register() {
        CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> dispatcher.register(literal("skilltree")
                .executes(context -> {
                    ServerPlayerEntity player = context.getSource().getPlayer();
                    BranchGui.gui(player);
                    return 1;
                })
                    .then(literal("Mercenary")
                            .executes(context -> {
                                ServerPlayerEntity player = context.getSource().getPlayer();
                                MercenaryGui.gui(player);
                                return 1;
                            })
                    )
                    .then(literal("Wizardry")
                            .executes(context -> {
                                ServerPlayerEntity player = context.getSource().getPlayer();
                                WizardryGui.gui(player);
                                return 1;
                            })
                )
                .then(literal("Druidry")
                        .executes(context -> {
                            ServerPlayerEntity player = context.getSource().getPlayer();
                            DruidryGui.gui(player);
                            return 1;
                        })
                )
        ));
        CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> dispatcher.register(literal("ygasi")
                .requires(source -> source.hasPermissionLevel(4))
                .then(literal("skillpoints")
                    .then(literal("reset")
                            .then(CommandManager.argument("targets", EntityArgumentType.players())
                                    .executes(context -> {
                                        for (int i = 0; i <= EntityArgumentType.getPlayers(context, "targets").size(); i++) {
                                            ServerPlayerEntity[] players = EntityArgumentType.getPlayers(context, "targets").toArray(new ServerPlayerEntity[0]);
                                            ResetGui.reset(players[i]);
                                        }
                                        String players;
                                        if (EntityArgumentType.getPlayers(context, "targets").size() == 1) {
                                            players = EntityArgumentType.getPlayers(context, "targets").toArray()[0].toString();
                                        } else {
                                            players = EntityArgumentType.getPlayers(context, "targets").size() + " players";
                                        }
                                        context.getSource().sendMessage(Text.translatable("commands.ygasi.skillpoints.reset", players).formatted(Formatting.GREEN));
                                        return 1;
                                    })))
                    .then(literal("add")
                            .then(CommandManager.argument("target", EntityArgumentType.player())
                                    .then(CommandManager.argument("amount", IntegerArgumentType.integer())
                                            .executes(context -> {
                                                int amount = IntegerArgumentType.getInteger(context, "amount");
                                                ServerPlayerEntity player = EntityArgumentType.getPlayer(context, "target");
                                                player.increaseStat(SKILL_POINTS, amount);
                                                player.increaseStat(SKILL_POINTS_TOTAL, amount);
                                                context.getSource().sendMessage(Text.translatable("commands.ygasi.skillpoints.add", amount, player.getName()).formatted(Formatting.GREEN));
                                                return 1;
                                            }))))
                    .then(literal("get")
                            .then(CommandManager.argument("target", EntityArgumentType.player())
                                    .executes(context -> {
                                        ServerPlayerEntity player = EntityArgumentType.getPlayer(context, "target");
                                        context.getSource().sendMessage(Text.translatable("commands.ygasi.skillpoints.get", player.getEntityName(), player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(SKILL_POINTS)), player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(SKILL_POINTS_TOTAL))).formatted(Formatting.GREEN));
                                        return 1;
                                    }))))
                .then(literal("config")
                        .executes(context -> {
                            ConfigGui.gui(context.getSource().getPlayer());
                            return 1;
                        })
                        .then(literal("reload")
                                .executes(context -> {
                                    ConfigRegistry.load();
                                    context.getSource().sendMessage(Text.translatable("commands.ygasi.config.reload").formatted(Formatting.GREEN));
                                    return 1;
                                })))

                )
        );
    }
}