Skip to content
Merged
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
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
mod.id=eventutils
mod.name=EventUtils
mod.version=2.2.0
mod.version=2.3.0

deps.fabric_loader=0.16.9

Expand Down
4 changes: 2 additions & 2 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ stonecutter {
centralScript = "build.gradle.kts"
shared {
versions( // Make sure to update .github/workflows/publish.yml when changing versions!
"1.21.6",
"1.21.5",
"1.21.4",
"1.21.3",
"1.21.1",
"1.21",
"1.20.6",
"1.20.4")
}
create(rootProject)
Expand Down
16 changes: 15 additions & 1 deletion src/main/java/cc/aabss/eventutils/EventUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,16 @@ public class EventUtils implements ClientModInitializer {
public static EventUtils MOD;
@NotNull public static final Logger LOGGER = LogManager.getLogger(EventUtils.class, new PrefixMessageFactory());
@NotNull public static final String QUEUE_TEXT = "\n\n Per-server ranks get a higher priority in their respective queues. To receive such a rank, purchase one at\n store.invadedlands.net.\n\nTo leave a queue, use the command: /leavequeue.\n";
@NotNull public static final MutableText MESSAGE_PREFIX = Text.literal("EventUtils")
.formatted(Formatting.BOLD)
.fillStyle(Style.EMPTY.withColor(TextColor.fromRgb(0xF5AA42)))
.append(Text.literal("§r »")
.fillStyle(Style.EMPTY.withBold(false).withColor(TextColor.fromRgb(0xB57C2F))));
@NotNull public static final MutableText ERROR_MESSAGE_PREFIX = Text.literal("EventUtils")
.formatted(Formatting.BOLD)
.formatted(Formatting.RED)
.append(Text.literal("§r§4 »")
.fillStyle(Style.EMPTY.withBold(false)));

@NotNull public final EventConfig config = new EventConfig();
@NotNull public final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(3);
Expand Down Expand Up @@ -128,8 +138,12 @@ public String getIpAndConnect(@NotNull EventType eventType, @NotNull JsonObject
return ip;
}

public static boolean isNPC(@NotNull String name, boolean bypass) {
return (!MOD.config.hideNPCs || bypass) && (name.contains("[") || name.contains("]") || name.contains(" ") || name.contains("-") || name.equals("§z"));
}

public static boolean isNPC(@NotNull String name) {
return name.contains("[") || name.contains("]") || name.contains(" ") || name.contains("-");
return isNPC(name, false);
}

@Contract(pure = true)
Expand Down
16 changes: 9 additions & 7 deletions src/main/java/cc/aabss/eventutils/KeybindManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,14 +52,16 @@ public KeybindManager(@NotNull EventUtils mod) {
if (windowHandle == null) windowHandle = client.getWindow().getHandle();

// Event info key
if (GLFW.glfwGetKey(windowHandle, ((KeyBindingMixin) eventInfoKey).getBoundKey().getCode()) == GLFW.GLFW_PRESS) {
if (canNotPress(eventInfoKey)) return;
EventUtils.LOGGER.info("Event info key pressed");
if (SocketEndpoint.LAST_EVENT != null) {
client.setScreen(new EventInfoScreen(SocketEndpoint.LAST_EVENT));
return;
if (!eventInfoKey.isUnbound()) {
if (GLFW.glfwGetKey(windowHandle, ((KeyBindingMixin) eventInfoKey).getBoundKey().getCode()) == GLFW.GLFW_PRESS) {
if (canNotPress(eventInfoKey)) return;
EventUtils.LOGGER.info("Event info key pressed");
if (SocketEndpoint.LAST_EVENT != null) {
client.setScreen(new EventInfoScreen(SocketEndpoint.LAST_EVENT));
return;
}
if (client.player != null) client.player.sendMessage(Text.translatable("eventutils.no_recent_event.message").formatted(Formatting.RED), true);
}
if (client.player != null) client.player.sendMessage(Text.literal("No event has happened recently!").formatted(Formatting.RED), true);
}

// DEV: Uncomment to force test event
Expand Down
31 changes: 25 additions & 6 deletions src/main/java/cc/aabss/eventutils/NotificationToast.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,20 @@

import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.toast.Toast;
import net.minecraft.client.toast.ToastManager;
import net.minecraft.text.OrderedText;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;

//? if >=1.21.6 {

/*import net.minecraft.client.gl.RenderPipelines;

*///?}

import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

Expand Down Expand Up @@ -80,15 +86,20 @@ public int getHeight() {

@Override
//? if <1.21.2 {
/*public Toast.Visibility draw(DrawContext drawContext, ToastManager manager, long startTime) {*/
//?} else {
/*public Toast.Visibility draw(DrawContext drawContext, ToastManager manager, long startTime) {
*///?} else {
public void draw(DrawContext drawContext, TextRenderer textRenderer, long startTime) {
//?}
if (width == 160 && lines.size() <= 1) {
//? if <1.21.2 {
/*drawContext.drawGuiTexture(TEXTURE, 0, 0, width, height);*/
//?} else {
drawContext.drawGuiTexture(RenderLayer::getGuiTextured, TEXTURE, 0, 0, width, height);
/*drawContext.drawGuiTexture(TEXTURE, 0, 0, width, height);
*///?} else {
//? if >=1.21.6 {
/*drawContext.drawGuiTexture(RenderPipelines.GUI_TEXTURED, TEXTURE, 0, 0, width, height); // work on 1.21.4 and 1.21.5
*///?} else {
drawContext.drawGuiTexture(RenderLayer::getGuiTextured, TEXTURE, 0, 0, width, height); // work on 1.21.4 and 1.21.5

//?}
//?}
} else {
int minHeight = Math.min(4, height - 28);
Expand Down Expand Up @@ -119,9 +130,17 @@ private void drawPart(@NotNull DrawContext context, int j, int k, int l) {
for (int o = m; o < widthN; o += 64) context.drawGuiTexture(TEXTURE, 160, 32, 32, j, o, k, Math.min(64, widthN - o), l);
context.drawGuiTexture(TEXTURE, 160, 32, 160 - n, j, widthN, k, n, l);
*///?} else {
//? if >=1.21.6 {
/*context.drawGuiTexture(RenderPipelines.GUI_TEXTURED, TEXTURE, 160, 32, 0, j, 0, k, m, l);
for (int o = m; o < widthN; o += 64) context.drawGuiTexture(RenderPipelines.GUI_TEXTURED, TEXTURE, 160, 32, 32, j, o, k, Math.min(64, widthN - o), l);
context.drawGuiTexture(RenderPipelines.GUI_TEXTURED, TEXTURE, 160, 32, 160 - n, j, widthN, k, n, l);
*///?} else {

context.drawGuiTexture(RenderLayer::getGuiTextured, TEXTURE, 160, 32, 0, j, 0, k, m, l);
for (int o = m; o < widthN; o += 64) context.drawGuiTexture(RenderLayer::getGuiTextured, TEXTURE, 160, 32, 32, j, o, k, Math.min(64, widthN - o), l);
context.drawGuiTexture(RenderLayer::getGuiTextured, TEXTURE, 160, 32, 160 - n, j, widthN, k, n, l);

//?}
//?}
}

Expand Down
16 changes: 14 additions & 2 deletions src/main/java/cc/aabss/eventutils/UpdateChecker.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,25 @@ private void notifyUpdate(@NotNull String latestVersion) {
final MinecraftClient client = MinecraftClient.getInstance();
client.send(() -> {
if (client.player == null) return;
client.player.sendMessage(Text.literal("§6[EVENTUTILS]§r §e" + EventUtils.translate("eventutils.updatechecker.new")+"§r §7(v" + Versions.EU_VERSION + " -> v" + latestVersion.replace(Versions.MC_VERSION + "-", "") + ")" + "\n")
.setStyle(Style.EMPTY
//? if >=1.21.5 {
/*client.player.sendMessage(
EventUtils.MESSAGE_PREFIX.copy().append(" §e" + EventUtils.translate("eventutils.updatechecker.new")+"§r §7(v" + Versions.EU_VERSION + " -> v" + latestVersion.replace(Versions.MC_VERSION + "-", "") + ")" + "\n")
.setStyle(EventUtils.MESSAGE_PREFIX.getStyle()
.withHoverEvent(new HoverEvent.ShowText(translatable("eventutils.updatechecker.hover")))
.withClickEvent(new ClickEvent.OpenUrl(URI.create("https://modrinth.com/mod/alerts/version/" + latestVersion))))
.append(Text.literal("§7§o" + EventUtils.translate("eventutils.updatechecker.config"))
.setStyle(Style.EMPTY.withClickEvent(new ClickEvent.RunCommand("/event utils")))),
false);
*///?} else {
client.player.sendMessage(
EventUtils.MESSAGE_PREFIX.copy().append(" §e" + EventUtils.translate("eventutils.updatechecker.new")+"§r §7(v" + Versions.EU_VERSION + " -> v" + latestVersion.replace(Versions.MC_VERSION + "-", "") + ")" + "\n")
.setStyle(EventUtils.MESSAGE_PREFIX.getStyle()
.withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, translatable("eventutils.updatechecker.hover")))
.withClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, "https://modrinth.com/mod/alerts/version/" + latestVersion)))
.append(Text.literal("§7§o" + EventUtils.translate("eventutils.updatechecker.config"))
.setStyle(Style.EMPTY.withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/eventutils config")))),
false);
//?}
});
}

Expand Down
20 changes: 20 additions & 0 deletions src/main/java/cc/aabss/eventutils/commands/CommandRegister.java
Original file line number Diff line number Diff line change
Expand Up @@ -77,11 +77,31 @@ public static void register(@NotNull CommandDispatcher<FabricClientCommandSource
return 0;
}).build();

final LiteralCommandNode<FabricClientCommandSource> countName = ClientCommandManager
.literal("countname")
.then(ClientCommandManager.literal("count")
.then(ClientCommandManager.argument("filter", StringArgumentType.string())
.executes((context) -> {
CountNameCmd.count(context, StringArgumentType.getString(context, "filter"));
return 0;
})))
.then(ClientCommandManager.literal("list")
.then(ClientCommandManager.argument("filter", StringArgumentType.string())
.executes((context) -> {
CountNameCmd.list(context, StringArgumentType.getString(context, "filter"));
return 0;
})))
.executes(context -> {
CountNameCmd.list(context, "");
return 0;
}).build();

// Build command tree
dispatcher.getRoot().addChild(main);
main.addChild(config);
main.addChild(teleport);
main.addChild(priority);
main.addChild(priorityTop);
main.addChild(countName);
}
}
75 changes: 75 additions & 0 deletions src/main/java/cc/aabss/eventutils/commands/CountNameCmd.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
package cc.aabss.eventutils.commands;

import cc.aabss.eventutils.EventUtils;
import com.mojang.brigadier.context.CommandContext;
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
import net.minecraft.client.MinecraftClient;
import net.minecraft.text.MutableText;
import net.minecraft.text.Style;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import org.jetbrains.annotations.NotNull;

import java.util.List;

public class CountNameCmd {
public static void count(@NotNull CommandContext<FabricClientCommandSource> context, String filter) {
final MinecraftClient client = context.getSource().getClient();
client.send(() -> {
if (client.world == null || client.player == null || client.getNetworkHandler() == null) {
context.getSource().sendFeedback(Text.translatable("eventutils.command.countname.noplayers", EventUtils.ERROR_MESSAGE_PREFIX, Text.literal(filter).formatted(Formatting.DARK_RED)));
return;
}

final List<String> namesFiltered = client.getNetworkHandler().getPlayerList().stream()
.map(entry -> entry.getProfile().getName())
.filter(name -> name.toLowerCase().contains(filter.toLowerCase()))
.filter(name -> !EventUtils.isNPC(name, true))
.toList();

if (namesFiltered.isEmpty()) {
context.getSource().sendFeedback(Text.translatable("eventutils.command.countname.noplayers", EventUtils.ERROR_MESSAGE_PREFIX, Text.literal(filter).formatted(Formatting.DARK_RED)));
return;
}

context.getSource().sendFeedback(Text.translatable("eventutils.command.countname.count", EventUtils.MESSAGE_PREFIX, "§6" + namesFiltered.size(), namesFiltered.size() != 1 ? Text.translatable("eventutils.word.plural").formatted(Formatting.YELLOW) : "", Text.literal(filter).formatted(Formatting.GOLD)));
});
}

public static void list(@NotNull CommandContext<FabricClientCommandSource> context, String filter) {
final MinecraftClient client = context.getSource().getClient();
client.send(() -> {
if (client.world == null || client.player == null || client.getNetworkHandler() == null) {
context.getSource().sendFeedback(Text.translatable("eventutils.command.countname.noplayers", EventUtils.ERROR_MESSAGE_PREFIX, Text.literal(filter).formatted(Formatting.DARK_RED)));
return;
}

final List<String> namesFiltered = client.getNetworkHandler().getPlayerList().stream()
.map(entry -> entry.getProfile().getName())
.filter(name -> name.toLowerCase().contains(filter.toLowerCase()))
.filter(name -> !EventUtils.isNPC(name, true))
.toList();

if (namesFiltered.isEmpty()) {
context.getSource().sendFeedback(Text.translatable("eventutils.command.countname.noplayers", EventUtils.ERROR_MESSAGE_PREFIX, Text.literal(filter).formatted(Formatting.DARK_RED)));
return;
}

MutableText playerList = Text.literal("");
for (int i = 0; i < namesFiltered.size(); i++) {
String name = namesFiltered.get(i);
playerList.append(
Text.literal(name).formatted(Formatting.GOLD)
);

if (i < namesFiltered.size() - 1) {
playerList.append(
Text.literal(", ").formatted(Formatting.YELLOW)
);
}
}

context.getSource().sendFeedback(Text.translatable("eventutils.command.countname.list", EventUtils.MESSAGE_PREFIX, "§6" + namesFiltered.size(), namesFiltered.size() != 1 ? Text.translatable("eventutils.word.plural").formatted(Formatting.YELLOW) : "", Text.literal(filter).formatted(Formatting.GOLD), playerList));
});
}
}
Loading