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
7 changes: 3 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
- Remove redundant escape characters from string config field default comments.
- Add comments to lists of enums stating what values they can take (#23).
- Use system dependant line endings.
- Give each config its own Jankson instance to fix multithreading issues on Neoforge (#22).
Add more APIs in order to remove Architectury dependency.

This is a backwards compatible update. Mods which still use 1.x.x versions of JamLib are able to coexist with JamLib 2.x.x and mods using it. Please get in touch if you run into issues.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@
JamLib provides:

- Platform abstractions
- Events
- A JSON5 config API
- Networking
- A mod repost (9minecraft etc.) checker

Comprehensive documentation can be found [here](https://docs.jamalam.tech/jamlib/getting-started/).
Expand Down
29 changes: 28 additions & 1 deletion common/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,48 @@ architectury {
common(rootProject.enabled_platforms.split(","))
}

sourceSets {
deprecated {
java {
srcDir "src/deprecated/java"
}
}
}

loom {
splitEnvironmentSourceSets()

mods {
jamlib {
sourceSet sourceSets.main
sourceSet sourceSets.client
sourceSet sourceSets.deprecated
}
}
}

loom.createRemapConfigurations(sourceSets.deprecated)
configurations {
deprecatedImplementation.extendsFrom implementation
deprecatedRuntimeOnly.extendsFrom runtimeOnly
modDeprecatedImplementation.extendsFrom modImplementation
deprecatedCompileClasspath.extendsFrom clientCompileClasspath
modDeprecatedImplementation.extendsFrom modClientImplementation
deprecatedImplementation.extendsFrom clientImplementation
}

dependencies {
modImplementation libs.fabric.loader
modImplementation libs.architectury.common
api libs.jankson

deprecatedImplementation libs.architectury.common
deprecatedImplementation sourceSets.main.output
deprecatedImplementation sourceSets.client.output
Comment thread
Jamalam360 marked this conversation as resolved.
}

tasks.named('jar', Jar) {
from sourceSets.deprecated.output
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}

publishing {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package io.github.jamalam360.jamlib.client.api.events;

import io.github.jamalam360.jamlib.api.events.core.Event;
import net.minecraft.client.Minecraft;

/**
* Events for client-side player lifecycle events.
*/
public class ClientPlayLifecycleEvents {
/**
* Called when the local player has joined a logical server.
*/
public static final Event<Join> JOIN = new Event<>();
/**
* Called when the local player leaves a logical server.
*/
public static final Event<Leave> DISCONNECT = new Event<>();

@FunctionalInterface
public interface Join {
void onJoin(Minecraft client);
}

@FunctionalInterface
public interface Leave {
void onLeave(Minecraft client);
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.jamalam360.jamlib.client.gui;
package io.github.jamalam360.jamlib.client.api.gui;

import com.google.common.collect.ImmutableList;
import net.minecraft.client.Minecraft;
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package io.github.jamalam360.jamlib.client;
package io.github.jamalam360.jamlib.client.impl;

import static io.github.jamalam360.jamlib.JamLib.JAR_RENAMING_CHECKER;

import dev.architectury.event.events.client.ClientPlayerEvent;
import io.github.jamalam360.jamlib.client.api.events.ClientPlayLifecycleEvents;
import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
Expand All @@ -12,14 +12,11 @@
public class JamLibClient {
@ApiStatus.Internal
public static void init() {
ClientPlayerEvent.CLIENT_PLAYER_JOIN.register(JamLibClient::onPlayerJoin);
ClientPlayLifecycleEvents.JOIN.listen(JamLibClient::onPlayerJoin);
}

private static void onPlayerJoin(LocalPlayer player) {
if (player != Minecraft.getInstance().player) {
return;
}

private static void onPlayerJoin(Minecraft minecraft) {
LocalPlayer player = minecraft.player;
if (JAR_RENAMING_CHECKER.getSuspiciousJarsToNotifyAbout().isEmpty()) {
return;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
package io.github.jamalam360.jamlib.client.config.gui;
package io.github.jamalam360.jamlib.client.impl.config;

import dev.architectury.platform.Platform;
import io.github.jamalam360.jamlib.JamLib;
import io.github.jamalam360.jamlib.client.config.gui.entry.ConfigEntry;
import io.github.jamalam360.jamlib.client.gui.WidgetList;
import io.github.jamalam360.jamlib.config.ConfigExtensions;
import io.github.jamalam360.jamlib.config.ConfigManager;
import io.github.jamalam360.jamlib.config.HiddenInGui;
import io.github.jamalam360.jamlib.client.impl.config.entry.ConfigEntry;
import io.github.jamalam360.jamlib.client.api.gui.WidgetList;
import io.github.jamalam360.jamlib.api.config.ConfigExtensions;
import io.github.jamalam360.jamlib.api.config.ConfigManager;
import io.github.jamalam360.jamlib.api.config.HiddenInGui;
import io.github.jamalam360.jamlib.api.platform.ModInfo;
import io.github.jamalam360.jamlib.api.platform.Platform;
import net.minecraft.util.Util;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
Expand Down Expand Up @@ -58,7 +59,7 @@ protected static Component createTitle(ConfigManager<?> manager) {
if (I18n.exists(translationKey)) {
return Component.translatable(translationKey);
} else {
return Component.literal(Platform.getMod(manager.getModId()).getName());
return Component.literal(Platform.getMod(manager.getModId()).map(ModInfo::modName).orElse("Unknown"));
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package io.github.jamalam360.jamlib.client.config.gui;
package io.github.jamalam360.jamlib.client.impl.config;

import dev.architectury.platform.Platform;
import io.github.jamalam360.jamlib.config.ConfigManager;
import io.github.jamalam360.jamlib.api.config.ConfigManager;
import java.util.List;
import java.util.Objects;

import io.github.jamalam360.jamlib.api.platform.ModInfo;
import io.github.jamalam360.jamlib.api.platform.Platform;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.components.Button;
Expand Down Expand Up @@ -31,7 +33,7 @@ private static Component createTitle(String modId) {
if (I18n.exists(translationKey)) {
return Component.translatable(translationKey);
} else {
return Component.translatable("config.jamlib.selection_screen_title", Platform.getMod(modId).getName());
return Component.translatable("config.jamlib.selection_screen_title", Platform.getMod(modId).map(ModInfo::modName).orElse("Unknown"));
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.jamalam360.jamlib.client.config.gui;
package io.github.jamalam360.jamlib.client.impl.config;

import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.jamalam360.jamlib.client.config.gui;
package io.github.jamalam360.jamlib.client.impl.config;

import java.util.List;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
package io.github.jamalam360.jamlib.client.config.gui.entry;
package io.github.jamalam360.jamlib.client.impl.config.entry;

import net.minecraft.ChatFormatting;
import net.minecraft.client.gui.components.AbstractWidget;
import net.minecraft.client.gui.components.Button;
import net.minecraft.network.chat.Component;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable;

import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package io.github.jamalam360.jamlib.client.config.gui.entry;
package io.github.jamalam360.jamlib.client.impl.config.entry;

import com.google.gson.Gson;
import io.github.jamalam360.jamlib.JamLib;
import io.github.jamalam360.jamlib.client.config.gui.ConfigScreen;
import io.github.jamalam360.jamlib.client.mixinsupport.MutableSpriteImageWidget$Sprite;
import io.github.jamalam360.jamlib.config.ConfigExtensions;
import io.github.jamalam360.jamlib.config.ConfigManager;
import io.github.jamalam360.jamlib.client.impl.config.ConfigScreen;
import io.github.jamalam360.jamlib.client.impl.mixinsupport.MutableSpriteImageWidget$Sprite;
import io.github.jamalam360.jamlib.api.config.ConfigExtensions;
import io.github.jamalam360.jamlib.api.config.ConfigManager;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.components.AbstractWidget;
import net.minecraft.client.gui.components.ImageWidget;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.github.jamalam360.jamlib.client.config.gui.entry;
package io.github.jamalam360.jamlib.client.impl.config.entry;

import io.github.jamalam360.jamlib.config.ConfigManager;
import io.github.jamalam360.jamlib.api.config.ConfigManager;

import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.jamalam360.jamlib.client.config.gui.entry;
package io.github.jamalam360.jamlib.client.impl.config.entry;

import net.minecraft.client.gui.components.Button;
import net.minecraft.network.chat.CommonComponents;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.github.jamalam360.jamlib.client.config.gui.entry;
package io.github.jamalam360.jamlib.client.impl.config.entry;

import io.github.jamalam360.jamlib.client.config.gui.ConfigScreen;
import io.github.jamalam360.jamlib.client.impl.config.ConfigScreen;
import net.minecraft.client.gui.components.AbstractWidget;
import net.minecraft.client.resources.language.I18n;
import net.minecraft.network.chat.CommonComponents;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package io.github.jamalam360.jamlib.client.config.gui.entry;
package io.github.jamalam360.jamlib.client.impl.config.entry;

import io.github.jamalam360.jamlib.JamLib;
import io.github.jamalam360.jamlib.config.ConfigManager;
import io.github.jamalam360.jamlib.api.config.ConfigManager;

import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,15 @@
package io.github.jamalam360.jamlib.client.config.gui.entry;
package io.github.jamalam360.jamlib.client.impl.config.entry;

import io.github.jamalam360.jamlib.JamLib;
import io.github.jamalam360.jamlib.client.gui.WidgetList;
import io.github.jamalam360.jamlib.config.ConfigExtensions;
import io.github.jamalam360.jamlib.client.api.gui.WidgetList;
import io.github.jamalam360.jamlib.api.config.ConfigExtensions;
import net.minecraft.client.gui.components.AbstractWidget;
import net.minecraft.client.gui.components.Button;
import net.minecraft.client.gui.components.ImageWidget;
import net.minecraft.client.gui.components.Tooltip;
import net.minecraft.network.chat.Component;

import java.lang.reflect.ParameterizedType;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.function.Predicate;

public class ListConfigEntry<T, E> extends ConfigEntry<T, List<E>> {
private List<ConfigEntry<T, E>> listMembers;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package io.github.jamalam360.jamlib.client.config.gui.entry;
package io.github.jamalam360.jamlib.client.impl.config.entry;

import io.github.jamalam360.jamlib.JamLib;
import io.github.jamalam360.jamlib.config.ConfigManager;
import io.github.jamalam360.jamlib.api.config.ConfigManager;

import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package io.github.jamalam360.jamlib.client.config.gui.entry;
package io.github.jamalam360.jamlib.client.impl.config.entry;

import io.github.jamalam360.jamlib.config.Slider;
import io.github.jamalam360.jamlib.config.WithinRange;
import io.github.jamalam360.jamlib.api.config.Slider;
import io.github.jamalam360.jamlib.api.config.WithinRange;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.components.AbstractWidget;
import net.minecraft.client.gui.components.EditBox;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.jamalam360.jamlib.client.config.gui.entry;
package io.github.jamalam360.jamlib.client.impl.config.entry;

import net.minecraft.client.gui.components.AbstractSliderButton;
import net.minecraft.network.chat.Component;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
package io.github.jamalam360.jamlib.client.config.gui.entry;
package io.github.jamalam360.jamlib.client.impl.config.entry;

import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.components.AbstractWidget;
import net.minecraft.client.gui.components.EditBox;
import net.minecraft.network.chat.CommonComponents;
import net.minecraft.network.chat.Component;
import org.jetbrains.annotations.Nullable;

import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package io.github.jamalam360.jamlib.client.mixin;
package io.github.jamalam360.jamlib.client.impl.mixin;

import io.github.jamalam360.jamlib.client.mixinsupport.MutableSpriteImageWidget$Sprite;
import io.github.jamalam360.jamlib.client.impl.mixinsupport.MutableSpriteImageWidget$Sprite;
import net.minecraft.resources.Identifier;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Mutable;
import org.spongepowered.asm.mixin.Shadow;

@Mixin(targets = "net.minecraft.client.gui.components.ImageWidget$Sprite")
public class ImageWidget$SpriteMixin implements MutableSpriteImageWidget$Sprite {
public abstract class ImageWidget$SpriteMixin implements MutableSpriteImageWidget$Sprite {
@Mutable
@Shadow
private Identifier sprite;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package io.github.jamalam360.jamlib.client.mixin.event;
package io.github.jamalam360.jamlib.client.impl.mixin.event;

import io.github.jamalam360.jamlib.events.client.ClientPlayLifecycleEvents;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import io.github.jamalam360.jamlib.client.api.events.ClientPlayLifecycleEvents;
import net.minecraft.client.Minecraft;
import net.minecraft.client.multiplayer.ClientPacketListener;
import net.minecraft.network.protocol.game.ClientboundLoginPacket;
Expand All @@ -12,7 +10,7 @@
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin(ClientPacketListener.class)
public class ClientPacketListenerMixin {
public abstract class ClientPacketListenerMixin {
/**
* Injection point taken from Fabric API - <a href="https://github.com/FabricMC/fabric/blob/1.21.2/fabric-networking-api-v1/src/client/java/net/fabricmc/fabric/mixin/networking/client/ClientPlayNetworkHandlerMixin.java#L54">...</a>
*/
Expand All @@ -21,6 +19,6 @@ public class ClientPacketListenerMixin {
at = @At("RETURN")
)
private void jamlib$joinServer(ClientboundLoginPacket packet, CallbackInfo ci) {
ClientPlayLifecycleEvents.JOIN.invoker().onJoin(Minecraft.getInstance());
ClientPlayLifecycleEvents.JOIN.invoke((listener) -> listener.onJoin(Minecraft.getInstance()));
}
}
Loading
Loading