Skip to content

Commit 57acaad

Browse files
committed
rewrites + temp girlboss removal
1 parent 2e1fb60 commit 57acaad

File tree

2 files changed

+99
-0
lines changed

2 files changed

+99
-0
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.dark.zewo2.mixin;
2+
3+
import com.dark.zewo2.modules.Girlboss;
4+
import com.mojang.authlib.GameProfile;
5+
import meteordevelopment.meteorclient.systems.modules.Modules;
6+
import net.minecraft.client.network.message.MessageHandler;
7+
import net.minecraft.network.message.MessageSignatureData;
8+
import net.minecraft.network.message.MessageType;
9+
import net.minecraft.network.message.SignedMessage;
10+
import org.spongepowered.asm.mixin.Mixin;
11+
import org.spongepowered.asm.mixin.injection.At;
12+
import org.spongepowered.asm.mixin.injection.Inject;
13+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
14+
15+
import java.nio.ByteBuffer;
16+
17+
@Mixin(MessageHandler.class)
18+
public class MixinMessageHandler {
19+
20+
@Inject(method = "onChatMessage", at = @At("HEAD"))
21+
public void onChatMessage(final SignedMessage message, final GameProfile sender, final MessageType.Parameters params, final CallbackInfo ci) {
22+
if (!Modules.get().get(Girlboss.class).isActive()) return;
23+
24+
if (message.signature() == null) {
25+
return;
26+
}
27+
Girlboss.receivedMessage(message.signature().toByteBuffer());
28+
for (final MessageSignatureData lastSeen : message.signedBody().lastSeenMessages().entries()) {
29+
final ByteBuffer signatureByteBuffer = lastSeen.toByteBuffer();
30+
Girlboss.addSeenSignature(sender.getId(), signatureByteBuffer);
31+
}
32+
}
33+
34+
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package com.dark.zewo2.modules;
2+
3+
import com.dark.zewo2.Addon;
4+
import meteordevelopment.meteorclient.systems.modules.Category;
5+
import meteordevelopment.meteorclient.systems.modules.Module;
6+
import com.google.common.collect.Multimap;
7+
import com.google.common.collect.MultimapBuilder;
8+
import net.minecraft.client.MinecraftClient;
9+
import net.minecraft.entity.player.PlayerEntity;
10+
import net.minecraft.text.Text;
11+
12+
import java.nio.ByteBuffer;
13+
import java.util.*;
14+
15+
16+
public class Girlboss extends Module {
17+
public Girlboss() {
18+
super(Addon.CATEGORY, "Girlboss", "Notifies you when someone receives a private message.");
19+
}
20+
21+
private static final Multimap<ByteBuffer, UUID> signatures = MultimapBuilder.hashKeys().hashSetValues().build();
22+
private static final Set<ByteBuffer> seen = new HashSet<>();
23+
private static final Set<String> alertsSent = new HashSet<>();
24+
private static int alertsClearedTick = -1;
25+
private static boolean hasSentFirstAlert = false;
26+
27+
public static void receivedMessage(final ByteBuffer signature) {
28+
seen.add(signature);
29+
}
30+
31+
public static void addSeenSignature(final UUID sender, final ByteBuffer signature) {
32+
if (seen.contains(signature) || signatures.containsEntry(signature, sender)) {
33+
return;
34+
}
35+
36+
signatures.put(signature, sender);
37+
if (MinecraftClient.getInstance().world == null) {
38+
return;
39+
}
40+
41+
final Collection<UUID> uuids = signatures.get(signature);
42+
final List<String> names = new ArrayList<>();
43+
for (final UUID uuid : uuids) {
44+
final PlayerEntity playerEntity = MinecraftClient.getInstance().world.getPlayerByUuid(uuid);
45+
if (playerEntity != null) {
46+
names.add(playerEntity.getName().getString());
47+
}
48+
}
49+
50+
final int last = names.size() - 1;
51+
final String joinedNames = String.join(" and ", String.join(", ", names.subList(0, last)), names.get(last));
52+
final String verb = names.size() > 1 ? "have" : "has";
53+
54+
final String message = "§a[Girlboss] §7" + (names.size() == 1 ? names.get(0) : joinedNames) + " " + verb + " seen a message you haven't!";
55+
if (MinecraftClient.getInstance().player.age != alertsClearedTick) {
56+
alertsClearedTick = MinecraftClient.getInstance().player.age;
57+
alertsSent.clear();
58+
}
59+
if (alertsSent.add(message) && hasSentFirstAlert) {
60+
MinecraftClient.getInstance().player.sendMessage(Text.literal(message));
61+
}
62+
hasSentFirstAlert = true;
63+
}
64+
65+
}

0 commit comments

Comments
 (0)