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
10 changes: 5 additions & 5 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 21
uses: actions/setup-java@v2
- uses: actions/checkout@v4
- name: Set up JDK 25
uses: actions/setup-java@v4
with:
java-version: "21"
distribution: "adopt"
java-version: "25"
distribution: "corretto"
- run: ./gradlew build

- name: Upload Forge Build
Expand Down
10 changes: 5 additions & 5 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
plugins {
id "architectury-plugin" version "3.4-SNAPSHOT"
id "dev.architectury.loom" version "1.13-SNAPSHOT" apply false
id "architectury-plugin" version "3.5-SNAPSHOT"
id "dev.architectury.loom-no-remap" version "1.14-SNAPSHOT" apply false
}
architectury {
minecraft = rootProject.minecraft_version
}

subprojects {
apply plugin: "dev.architectury.loom"
apply plugin: "dev.architectury.loom-no-remap"

loom {
silentMojangMappingsLicense()
Expand All @@ -19,7 +19,7 @@ allprojects {
apply plugin: "architectury-plugin"
apply plugin: "maven-publish"

archivesBaseName = rootProject.archives_base_name
base.archivesName = rootProject.archives_base_name
version = rootProject.mod_version
group = rootProject.maven_group

Expand All @@ -44,7 +44,7 @@ allprojects {

tasks.withType(JavaCompile).configureEach {
options.encoding = "UTF-8"
options.release = 21
options.release = 25
}

java {
Expand Down
3 changes: 1 addition & 2 deletions common/build.gradle
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
dependencies {
// We depend on fabric loader here to use the fabric @Environment annotations and get the mixin dependencies
// Do NOT use other classes from fabric loader
modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}"
implementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}"

minecraft "com.mojang:minecraft:${rootProject.minecraft_version}"
mappings loom.officialMojangMappings()

implementation "org.xerial:sqlite-jdbc:3.47.0.0"
// modCompileOnly "maven.modrinth:voxelmap-updated:1.20.4-1.12.17"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
import net.minecraft.network.chat.Component;
import net.minecraft.world.inventory.ClickType;
import net.minecraft.world.inventory.ContainerInput;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;

Expand Down Expand Up @@ -159,11 +159,11 @@ private void clickNextPage(List<ItemStack> stacks) {

// Simulate a left click on the slot
if (mc.gameMode != null) {
mc.gameMode.handleInventoryMouseClick(
mc.gameMode.handleContainerInput(
container.containerId,
NEXT_PAGE_SLOT,
0,
ClickType.PICKUP,
ContainerInput.PICKUP,
mc.player
);
}
Expand Down Expand Up @@ -211,6 +211,6 @@ public static int getCurrentPage() {
}

private void logToChat(String message) {
mc.gui.getChat().addMessage(Component.literal("[JAList Auto] " + message));
mc.gui.getChat().addClientSystemMessage(Component.literal("[JAList Auto] " + message));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,17 @@
import gjum.minecraft.civ.snitchmod.common.model.SnitchFieldPreview;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Font;
//import net.minecraft.client.renderer.CoreShaders;
import net.minecraft.client.renderer.LightTexture;
import net.minecraft.client.renderer.Lightmap;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.rendertype.RenderType;
import net.minecraft.client.renderer.rendertype.RenderTypes;
import net.minecraft.client.renderer.ShapeRenderer;
import net.minecraft.network.chat.Component;
import net.minecraft.util.LightCoordsUtil;
import net.minecraft.world.phys.AABB;
import net.minecraft.world.phys.Vec3;
import net.minecraft.world.phys.shapes.Shapes;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.joml.Matrix4f;
import org.joml.Matrix4fStack;
import org.joml.Vector3f;
import org.lwjgl.opengl.GL11;

import java.util.ArrayList;
Expand Down Expand Up @@ -661,30 +657,8 @@ private static void renderTextFacingCamera(Component text, Vec3 pos, float offse

// Use immediate mode rendering with proper depth handling
try (RenderBufferGuard guard = RenderBufferGuard.open(false, true, false)) {
mc.font.drawInBatch(text, x, y, colorAlphaHex, shadow, matrix, guard.bufferSource, Font.DisplayMode.SEE_THROUGH, bgColor, LightTexture.FULL_BRIGHT);
mc.font.drawInBatch(text, x, y, colorAlphaHex, shadow, matrix, guard.bufferSource, Font.DisplayMode.SEE_THROUGH, bgColor, LightCoordsUtil.FULL_BRIGHT);
}

/*var poseStack = new PoseStack();
poseStack.translate(pos.x, pos.y, pos.z);
poseStack.mulPose(mc.gameRenderer.getMainCamera().rotation());
scale *= 0.005f * (mc.player.position().distanceTo(pos) / 2.4);
scale = Math.clamp(scale, 0.015f, 0.15f);
poseStack.scale(scale, -scale, 1); // third component determines background distance

float w = mc.font.width(text);
float x = -w / 2f;
float y = -(.5f - offset) * (mc.font.lineHeight + 2); // +2 for background padding, -1 for default line spacing
boolean shadow = false;
var matrix = poseStack.last().pose();
var buffer = mc.renderBuffers().bufferSource();
float bgOpacity = Minecraft.getInstance().options.getBackgroundOpacity(0.25f);
int bgColor = (int) (bgOpacity * 255.0f) << 24;
int flags = 0;
// XXX somehow, the letters farthest from the crosshair render behind the background
mc.font.drawInBatch(text, x, y, colorAlphaHex, shadow, matrix, buffer, Font.DisplayMode.SEE_THROUGH, bgColor, flags);

poseStack.popPose();
buffer.endBatch();*/
}

private static @NotNull String timestampRelativeText(long ts) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@
import gjum.minecraft.civ.snitchmod.common.model.SnitchRename;
import net.minecraft.client.KeyMapping;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
import net.minecraft.client.multiplayer.ServerData;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.Identifier;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.phys.Vec3;
import org.jetbrains.annotations.Nullable;
import org.joml.Matrix4f;
import org.lwjgl.glfw.GLFW;

import java.util.ArrayList;
Expand All @@ -28,7 +28,7 @@
import java.util.stream.Stream;

public abstract class SnitchMod {
private final static Minecraft mc = Minecraft.getInstance();
protected static Minecraft mc = Minecraft.getInstance();
public static final KeyMapping.Category SNITCHMOD_CATEGORY
= KeyMapping.Category.register(Identifier.fromNamespaceAndPath("snitchmod", "category"));

Expand Down Expand Up @@ -243,6 +243,20 @@ public void handleTick() {
logToChat(Component.literal("Showing a snitch field preview in the direction you're looking"));
}
// TODO if block pos changed -> if pos inside snitch range not in before -> send jainfo -> mark refreshed
// Check for J key press while in JAList GUI
var mc = Minecraft.getInstance();
if (mc.screen instanceof AbstractContainerScreen<?> containerScreen) {
String title = containerScreen.getTitle().getString();
if ((title.toLowerCase().contains("snitches") || title.contains("JukeAlert"))
&& GLFW.glfwGetKey(mc.getWindow().handle(), GLFW.GLFW_KEY_J) == GLFW.GLFW_PRESS) {

// Prevent spam clicking by checking if auto-paginator is not already active
if (!JalistAutoPaginator.getInstance().isActive()) {
System.out.println("[SnitchMod] J key detected in JAList!");
JalistAutoPaginator.getInstance().startAutoPagination();
}
}
}
}

/**
Expand Down Expand Up @@ -354,6 +368,6 @@ public Stream<Snitch> streamNearbySnitches(Vec3 playerPos, int distance) {
}

private void logToChat(Component msg) {
mc.gui.getChat().addMessage(Component.literal("[SnitchMod] ").append(msg));
mc.gui.getChat().addClientSystemMessage(Component.literal("[SnitchMod] ").append(msg));
}
}
24 changes: 12 additions & 12 deletions fabric/build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
plugins {
id "com.github.johnrengelman.shadow" version "7.0.0"
id "com.gradleup.shadow" version "9.3.0"
}

architectury {
Expand All @@ -16,14 +16,13 @@ configurations {
}

dependencies {
modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}"
modApi "net.fabricmc.fabric-api:fabric-api:${rootProject.fabric_api_version}"
implementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}"
api "net.fabricmc.fabric-api:fabric-api:${rootProject.fabric_api_version}"

common(project(path: ":common", configuration: "namedElements")) { transitive false }
common(project(path: ":common")) { transitive false }
shadowCommon(project(path: ":common", configuration: "transformProductionFabric")) { transitive false }

minecraft "com.mojang:minecraft:${rootProject.minecraft_version}"
mappings loom.officialMojangMappings()

implementation "org.xerial:sqlite-jdbc:3.47.0.0"
shadowCommon "org.xerial:sqlite-jdbc:3.47.0.0"
Expand All @@ -47,14 +46,15 @@ processResources {
}

shadowJar {
configurations = [project.configurations.shadowCommon]
archiveClassifier = "dev-shadow"
}
exclude "architectury.common.json"

remapJar {
input.set shadowJar.archiveFile
dependsOn shadowJar
dependsOn(jar)
mainSpec.sourcePaths.clear() // Remove default source set inclusion
from(zipTree(jar.archiveFile)) // Unpack jar output (preserves Loom modifications)

configurations = [project.configurations.shadowCommon]
archiveClassifier = "fabric"
from rootProject.file("LICENSE.txt")
}

jar {
Expand Down Expand Up @@ -94,7 +94,7 @@ tasks.register('cleanJar', Delete) {
}

tasks.register('copyJar', Copy) {
from remapJar
from shadowJar
into '../dist'
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,54 +1,30 @@
package gjum.minecraft.civ.snitchmod.fabric;

import gjum.minecraft.civ.snitchmod.common.JalistAutoPaginator;
import gjum.minecraft.civ.snitchmod.common.SnitchMod;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
import net.fabricmc.fabric.api.client.rendering.v1.world.WorldRenderEvents;
import net.fabricmc.fabric.api.client.rendering.v1.world.WorldRenderContext;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
import org.lwjgl.glfw.GLFW;
import net.fabricmc.fabric.api.client.keymapping.v1.KeyMappingHelper;
import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderEvents;

public class FabricSnitchMod extends SnitchMod implements ClientModInitializer {
@Override
public void onInitializeClient() {
KeyBindingHelper.registerKeyBinding(openGuiKey);
KeyBindingHelper.registerKeyBinding(toggleOverlayKey);
KeyBindingHelper.registerKeyBinding(togglePlacementKey);
KeyBindingHelper.registerKeyBinding(previewSnitchFieldKey);
KeyBindingHelper.registerKeyBinding(toggleSnitchGoneStatusKey);
KeyBindingHelper.registerKeyBinding(jalistAutoKey);
KeyMappingHelper.registerKeyMapping(openGuiKey);
KeyMappingHelper.registerKeyMapping(toggleOverlayKey);
KeyMappingHelper.registerKeyMapping(togglePlacementKey);
KeyMappingHelper.registerKeyMapping(previewSnitchFieldKey);
KeyMappingHelper.registerKeyMapping(toggleSnitchGoneStatusKey);
KeyMappingHelper.registerKeyMapping(jalistAutoKey);

ClientTickEvents.START_CLIENT_TICK.register(client -> {
try {
handleTick();

// Check for J key press while in JAList GUI
var mc = Minecraft.getInstance();
if (mc.screen instanceof AbstractContainerScreen<?> containerScreen) {
String title = containerScreen.getTitle().getString();
if ((title.toLowerCase().contains("snitches") || title.contains("JukeAlert"))
&& GLFW.glfwGetKey(mc.getWindow().handle(), GLFW.GLFW_KEY_J) == GLFW.GLFW_PRESS) {

// Prevent spam clicking by checking if auto-paginator is not already active
if (!JalistAutoPaginator.getInstance().isActive()) {
System.out.println("[FabricSnitchMod] J key detected in JAList!");
JalistAutoPaginator.getInstance().startAutoPagination();
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
});
WorldRenderEvents.END_MAIN.register(((context) -> {
try {
handleRenderBlockOverlay(context.matrices());
} catch (Exception e) {
e.printStackTrace();
}
}));
}
ClientTickEvents.START_CLIENT_TICK.register(client -> {
handleTick();
});
LevelRenderEvents.END_MAIN.register(((context) -> {
try {
handleRenderBlockOverlay(context.poseStack());
} catch (Exception e) {
e.printStackTrace();
}
}));
}
}
2 changes: 1 addition & 1 deletion fabric/src/main/resources/fabric.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
},
"depends": {
"fabricloader": ">=${fabric_loader_version}",
"fabric": "*",
"fabric-api": "*",
"minecraft": "${minecraft_version}"
},
"mixins": [
Expand Down
2 changes: 1 addition & 1 deletion forge/build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
plugins {
id "com.github.johnrengelman.shadow" version "7.0.0"
id "com.gradleup.shadow" version "9.3.0"
}

architectury {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package gjum.minecraft.civ.snitchmod.forge;

import gjum.minecraft.civ.snitchmod.common.SnitchMod;
import net.minecraft.client.Minecraft;
import net.minecraftforge.client.event.RegisterKeyMappingsEvent;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.TickEvent;
import net.minecraftforge.eventbus.api.listener.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;

@Mod("snitchmod")
Expand All @@ -21,10 +23,16 @@ public static void onRegisterKeyMappings(RegisterKeyMappingsEvent event) {
event.register(togglePlacementKey);
event.register(previewSnitchFieldKey);
event.register(toggleSnitchGoneStatusKey);
event.register(jalistAutoKey);
}

@SubscribeEvent
public void onClientTick(TickEvent.ClientTickEvent.Pre event) {
handleTick();
}

@SubscribeEvent
public void onClientLoaded(FMLClientSetupEvent event) {
mc = Minecraft.getInstance();
}
}
Loading
Loading