Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ public static void init() {
add(new SpectateCommand());
add(new GamemodeCommand());
add(new SaveMapCommand());
add(new LogoutCommand());
add(new MacroCommand());
add(new ModulesCommand());
add(new BindsCommand());
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
/*
* This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client).
* Copyright (c) Meteor Development.
*/

package meteordevelopment.meteorclient.commands.commands;

import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import meteordevelopment.meteorclient.commands.Command;
import meteordevelopment.meteorclient.systems.modules.Modules;
import meteordevelopment.meteorclient.systems.modules.render.LogoutSpots;
import meteordevelopment.meteorclient.utils.player.ChatUtils;
import net.minecraft.command.CommandSource;

public class LogoutCommand extends Command {
public LogoutCommand() {
super("logout-spots", "Manage logout spots - clear all spots or remove specific players", "logout");
}

@Override
public void build(LiteralArgumentBuilder<CommandSource> builder) {
builder.then(literal("clear")
.executes(context -> {
LogoutSpots logoutSpots = Modules.get().get(LogoutSpots.class);
logoutSpots.clearLogoutSpots();

ChatUtils.info("Cleared all logout spots");
return SINGLE_SUCCESS;
})
);

builder.then(literal("remove")
.then(argument("name", StringArgumentType.word())
.executes(context -> {
String playerName = StringArgumentType.getString(context, "name");
LogoutSpots logoutSpots = Modules.get().get(LogoutSpots.class);

boolean removed = logoutSpots.removeLogoutSpot(playerName);

if (removed) {
ChatUtils.info("Removed logout spot for player: " + playerName);
} else {
ChatUtils.error("No logout spot found for player: " + playerName);
}
return SINGLE_SUCCESS;
})
)
);


}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@
import meteordevelopment.meteorclient.events.render.Render2DEvent;
import meteordevelopment.meteorclient.events.render.Render3DEvent;
import meteordevelopment.meteorclient.events.world.TickEvent;
import meteordevelopment.meteorclient.gui.GuiTheme;
import meteordevelopment.meteorclient.gui.widgets.WWidget;
import meteordevelopment.meteorclient.gui.widgets.containers.WVerticalList;
import meteordevelopment.meteorclient.gui.widgets.pressable.WButton;
import meteordevelopment.meteorclient.renderer.Renderer2D;
import meteordevelopment.meteorclient.renderer.ShapeMode;
import meteordevelopment.meteorclient.renderer.text.TextRenderer;
Expand Down Expand Up @@ -105,6 +109,17 @@ public LogoutSpots() {
lineColor.onChanged();
}

@Override
public WWidget getWidget(GuiTheme theme) {
WVerticalList list = theme.verticalList();

WButton clear = list.add(theme.button("Clear Logout Spots")).expandX().widget();

clear.action = this::clearLogoutSpots;

return list;
}

@Override
public void onActivate() {
lastPlayerList.addAll(mc.getNetworkHandler().getPlayerList());
Expand All @@ -114,12 +129,7 @@ public void onActivate() {
lastDimension = mc.world.getDimension();
}

@Override
public void onDeactivate() {
players.clear();
lastPlayerList.clear();
}


private void updateLastPlayers() {
lastPlayers.clear();
for (Entity entity : mc.world.getEntities()) {
Expand Down Expand Up @@ -195,6 +205,15 @@ public String getInfoString() {
return Integer.toString(players.size());
}

public void clearLogoutSpots() {
players.clear();
lastPlayerList.clear();
}

public boolean removeLogoutSpot(String playerName) {
return players.removeIf(entry -> entry.name.equalsIgnoreCase(playerName));
}

private static final Vector3d pos = new Vector3d();

private class Entry {
Expand Down
Loading