Search in sources :

Example 1 with Member

use of io.icker.factions.database.Member in project factions by ickerio.

the class ClaimCommand method add.

public static int add(CommandContext<ServerCommandSource> context) throws CommandSyntaxException {
    ServerCommandSource source = context.getSource();
    ServerPlayerEntity player = source.getPlayer();
    ServerWorld world = player.getWorld();
    ChunkPos chunkPos = world.getChunk(player.getBlockPos()).getPos();
    String dimension = world.getRegistryKey().getValue().toString();
    Member member = Member.get(player.getUuid());
    Claim existingClaim = Claim.get(chunkPos.x, chunkPos.z, dimension);
    if (existingClaim == null) {
        Faction faction = member.getFaction();
        faction.addClaim(chunkPos.x, chunkPos.z, dimension);
        new Message("%s claimed chunk (%d, %d)", player.getName().asString(), chunkPos.x, chunkPos.z).send(faction);
        return 1;
    }
    String owner = existingClaim.getFaction().name == member.getFaction().name ? "Your" : "Another";
    new Message(owner + " faction already owns this chunk").fail().send(player, false);
    return 0;
}
Also used : ServerWorld(net.minecraft.server.world.ServerWorld) Message(io.icker.factions.util.Message) ServerPlayerEntity(net.minecraft.server.network.ServerPlayerEntity) ChunkPos(net.minecraft.util.math.ChunkPos) Member(io.icker.factions.database.Member) Claim(io.icker.factions.database.Claim) ServerCommandSource(net.minecraft.server.command.ServerCommandSource) Faction(io.icker.factions.database.Faction)

Example 2 with Member

use of io.icker.factions.database.Member in project factions by ickerio.

the class KickMemberCommand method run.

@Override
public int run(CommandContext<ServerCommandSource> context) throws CommandSyntaxException {
    ServerPlayerEntity target = EntityArgumentType.getPlayer(context, "player");
    ServerCommandSource source = context.getSource();
    ServerPlayerEntity player = source.getPlayer();
    if (target.getUuid().equals(player.getUuid())) {
        new Message("You cannot kick yourself").format(Formatting.RED).send(player, false);
        return 0;
    }
    Faction faction = Member.get(player.getUuid()).getFaction();
    for (Member member : faction.getMembers()) if (member.uuid.equals(target.getUuid())) {
        if (Member.get(player.getUuid()).getRank() == Member.Rank.CO_OWNER && (member.getRank() == Member.Rank.CO_OWNER || member.getRank() == Member.Rank.OWNER)) {
            new Message("You can only kick members with a lower rank than yours").format(Formatting.RED).send(player, false);
            return 0;
        }
        member.remove();
        context.getSource().getServer().getPlayerManager().sendCommandTree(player);
        new Message("Kicked " + target.getName().getString()).send(player, false);
        return 1;
    }
    new Message("That player is not a member of your faction");
    return 0;
}
Also used : Message(io.icker.factions.util.Message) ServerPlayerEntity(net.minecraft.server.network.ServerPlayerEntity) Member(io.icker.factions.database.Member) ServerCommandSource(net.minecraft.server.command.ServerCommandSource) Faction(io.icker.factions.database.Faction)

Example 3 with Member

use of io.icker.factions.database.Member in project factions by ickerio.

the class LeaveCommand method run.

@Override
public int run(CommandContext<ServerCommandSource> context) throws CommandSyntaxException {
    ServerCommandSource source = context.getSource();
    ServerPlayerEntity player = source.getPlayer();
    Member member = Member.get(player.getUuid());
    Faction faction = member.getFaction();
    new Message(player.getName().asString() + " left").send(faction);
    member.remove();
    context.getSource().getServer().getPlayerManager().sendCommandTree(player);
    if (faction.getMembers().size() == 0) {
        faction.remove();
    } else {
        FactionEvents.adjustPower(faction, -Config.MEMBER_POWER);
    }
    return 1;
}
Also used : Message(io.icker.factions.util.Message) ServerPlayerEntity(net.minecraft.server.network.ServerPlayerEntity) Member(io.icker.factions.database.Member) ServerCommandSource(net.minecraft.server.command.ServerCommandSource) Faction(io.icker.factions.database.Faction)

Example 4 with Member

use of io.icker.factions.database.Member in project factions by ickerio.

the class MapCommand method show.

public static int show(CommandContext<ServerCommandSource> context) throws CommandSyntaxException {
    ServerCommandSource source = context.getSource();
    ServerPlayerEntity player = source.getPlayer();
    ServerWorld world = player.getWorld();
    ChunkPos chunkPos = world.getChunk(player.getBlockPos()).getPos();
    String dimension = world.getRegistryKey().getValue().toString();
    Member member = Member.get(player.getUuid());
    Faction faction = member == null ? null : member.getFaction();
    // Print the header of the faction map.
    new Message("---------------[").format(Formatting.GRAY).add(new Message(" F MAP ").format(Formatting.AQUA)).add(new Message("]---------------").format(Formatting.GRAY)).send(player, false);
    Map<String, Formatting> factions = new HashMap<>();
    // Create and fill an array with the faction map.
    MutableText[] rows = new MutableText[11];
    for (int z = -5; z <= 5; z++) {
        MutableText row = new LiteralText("");
        for (int x = -6; x <= 6; x++) {
            Claim claim = Claim.get(chunkPos.x + x, chunkPos.z + z, dimension);
            if (x == 0 && z == 0) {
                row.append(new LiteralText(" ■").formatted(Formatting.YELLOW));
            } else if (claim == null) {
                row.append(new LiteralText(" ■").formatted(Formatting.GRAY));
            } else if (faction != null && claim.getFaction().name.equals(faction.name)) {
                row.append(new LiteralText(" ■").formatted(Formatting.GREEN));
            } else {
                Faction owner = claim.getFaction();
                factions.put(owner.name, owner.color);
                row.append(new LiteralText(" ■").formatted(owner.color).styled((style) -> style.withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new LiteralText(owner.name)))));
            }
        }
        rows[z + 5] = row;
    }
    // Attach the legend to the rows and send them to the player.
    player.sendMessage(rows[0].append(new LiteralText("  ■").formatted(Formatting.GRAY)).append(" Wilderness"), false);
    player.sendMessage(rows[1].append(new LiteralText("  ■").formatted(Formatting.GREEN)).append(" Your faction"), false);
    player.sendMessage(rows[2].append(new LiteralText("  ■").formatted(Formatting.YELLOW)).append(" Your position"), false);
    int i = 3;
    for (Map.Entry<String, Formatting> entry : factions.entrySet()) {
        if (i >= rows.length)
            break;
        player.sendMessage(rows[i].append(new LiteralText("  ■").formatted(entry.getValue())).append(" " + entry.getKey()), false);
        i++;
    }
    // Send remaining rows.
    for (; i < rows.length; i++) {
        player.sendMessage(rows[i], false);
    }
    // Print the footer of the faction map.
    new Message("---------------------------------------").format(Formatting.GRAY).send(player, false);
    return 1;
}
Also used : MutableText(net.minecraft.text.MutableText) LiteralText(net.minecraft.text.LiteralText) java.util(java.util) ServerCommandSource(net.minecraft.server.command.ServerCommandSource) CommandContext(com.mojang.brigadier.context.CommandContext) Faction(io.icker.factions.database.Faction) ServerWorld(net.minecraft.server.world.ServerWorld) ChunkPos(net.minecraft.util.math.ChunkPos) HoverEvent(net.minecraft.text.HoverEvent) Formatting(net.minecraft.util.Formatting) Claim(io.icker.factions.database.Claim) ServerPlayerEntity(net.minecraft.server.network.ServerPlayerEntity) MutableText(net.minecraft.text.MutableText) CommandSyntaxException(com.mojang.brigadier.exceptions.CommandSyntaxException) Message(io.icker.factions.util.Message) Member(io.icker.factions.database.Member) HoverEvent(net.minecraft.text.HoverEvent) Message(io.icker.factions.util.Message) Formatting(net.minecraft.util.Formatting) ServerPlayerEntity(net.minecraft.server.network.ServerPlayerEntity) ServerCommandSource(net.minecraft.server.command.ServerCommandSource) ServerWorld(net.minecraft.server.world.ServerWorld) ChunkPos(net.minecraft.util.math.ChunkPos) Member(io.icker.factions.database.Member) Claim(io.icker.factions.database.Claim) Faction(io.icker.factions.database.Faction) LiteralText(net.minecraft.text.LiteralText)

Example 5 with Member

use of io.icker.factions.database.Member in project factions by ickerio.

the class TransferOwnerCommand method run.

@Override
public int run(CommandContext<ServerCommandSource> context) throws CommandSyntaxException {
    ServerPlayerEntity target = EntityArgumentType.getPlayer(context, "player");
    ServerCommandSource source = context.getSource();
    ServerPlayerEntity player = source.getPlayer();
    if (target.getUuid().equals(player.getUuid())) {
        new Message("You cannot transfer ownership to yourself").format(Formatting.RED).send(player, false);
        return 0;
    }
    Faction faction = Member.get(player.getUuid()).getFaction();
    for (Member member : faction.getMembers()) if (member.uuid.equals(target.getUuid())) {
        member.updateRank(Member.Rank.OWNER);
        Member.get(player.getUuid()).updateRank(Member.Rank.CO_OWNER);
        context.getSource().getServer().getPlayerManager().sendCommandTree(player);
        context.getSource().getServer().getPlayerManager().sendCommandTree(target);
        new Message("Transferred ownership to " + target.getName().getString()).send(player, false);
        return 1;
    }
    new Message(target.getName().getString() + " is not in your faction").format(Formatting.RED).send(player, false);
    return 0;
}
Also used : Message(io.icker.factions.util.Message) ServerPlayerEntity(net.minecraft.server.network.ServerPlayerEntity) Member(io.icker.factions.database.Member) ServerCommandSource(net.minecraft.server.command.ServerCommandSource) Faction(io.icker.factions.database.Faction)

Aggregations

Member (io.icker.factions.database.Member)16 Message (io.icker.factions.util.Message)12 Faction (io.icker.factions.database.Faction)11 ServerPlayerEntity (net.minecraft.server.network.ServerPlayerEntity)10 ServerCommandSource (net.minecraft.server.command.ServerCommandSource)9 Claim (io.icker.factions.database.Claim)3 ChunkPos (net.minecraft.util.math.ChunkPos)3 CommandContext (com.mojang.brigadier.context.CommandContext)2 CommandSyntaxException (com.mojang.brigadier.exceptions.CommandSyntaxException)2 ServerWorld (net.minecraft.server.world.ServerWorld)2 Formatting (net.minecraft.util.Formatting)2 GameProfile (com.mojang.authlib.GameProfile)1 StringArgumentType (com.mojang.brigadier.arguments.StringArgumentType)1 FactionsMod (io.icker.factions.FactionsMod)1 Config (io.icker.factions.config.Config)1 Ally (io.icker.factions.database.Ally)1 Invite (io.icker.factions.database.Invite)1 PlayerConfig (io.icker.factions.database.PlayerConfig)1 java.util (java.util)1 ArrayList (java.util.ArrayList)1