diff --git a/build.gradle b/build.gradle index 944c836..a92405d 100644 --- a/build.gradle +++ b/build.gradle @@ -24,6 +24,7 @@ repositories { maven { url "https://maven.terraformersmc.com/releases/" } maven { url = "https://maven.isxander.dev/releases" } maven { url = "https://oss.sonatype.org/content/repositories/snapshots/" } + maven { url = uri("https://maven.noxcrew.com/public") } exclusiveContent { forRepository { maven { @@ -45,12 +46,16 @@ dependencies { // Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" - modApi "dev.isxander.yacl:yet-another-config-lib-fabric:3.1.0+1.20" + modApi("dev.isxander.yacl:yet-another-config-lib-fabric:3.2.1+1.20.2") { + exclude(group: "org.quiltmc.parsers") + exclude(group: "com.twelvemonkeys.common") + exclude(group: "com.twelvemonkeys.imageio") + } - modApi("com.terraformersmc:modmenu:7.0.1") + modApi("com.terraformersmc:modmenu:8.0.0") implementation include('com.github.JnCrMx:discord-game-sdk4j:v0.5.5') - modCompileOnly "maven.modrinth:noxesium:1.0.1" + modApi("com.noxcrew.noxesium:fabric:1.0.5") } processResources { @@ -90,4 +95,8 @@ jar { from("LICENSE") { rename { "${it}_${project.archivesBaseName}" } } +} + +loom { + accessWidenerPath = file("src/main/resources/islandutils.accesswidener") } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 17148c4..8147e1a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,13 +2,13 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://modmuss50.me/fabric.html -minecraft_version=1.20.1 -yarn_mappings=1.20.1+build.2 -loader_version=0.14.21 +minecraft_version=1.20.2 +yarn_mappings=1.20.2+build.4 +loader_version=0.14.22 # Mod Properties mod_version=1.6.2 maven_group=net.asodev archives_base_name=islandutils # Dependencies # check this on https://modmuss50.me/fabric.html -fabric_version=0.85.0+1.20.1 \ No newline at end of file +fabric_version=0.89.3+1.20.2 \ No newline at end of file diff --git a/src/main/java/net/asodev/islandutils/mixins/accessors/TabListAccessor.java b/src/main/java/net/asodev/islandutils/mixins/accessors/TabListAccessor.java deleted file mode 100644 index 7515227..0000000 --- a/src/main/java/net/asodev/islandutils/mixins/accessors/TabListAccessor.java +++ /dev/null @@ -1,14 +0,0 @@ -package net.asodev.islandutils.mixins.accessors; - -import net.minecraft.client.gui.components.PlayerTabOverlay; -import net.minecraft.network.chat.Component; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(PlayerTabOverlay.class) -public interface TabListAccessor { - - @Accessor("header") - Component getHeader(); - -} diff --git a/src/main/java/net/asodev/islandutils/mixins/network/PacketListenerMixin.java b/src/main/java/net/asodev/islandutils/mixins/network/PacketListenerMixin.java index bed1834..1bcdb0d 100644 --- a/src/main/java/net/asodev/islandutils/mixins/network/PacketListenerMixin.java +++ b/src/main/java/net/asodev/islandutils/mixins/network/PacketListenerMixin.java @@ -21,12 +21,11 @@ import net.asodev.islandutils.util.ChatUtils; import net.asodev.islandutils.util.MusicUtil; import net.minecraft.client.Minecraft; -import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.client.multiplayer.ClientPacketListener; -import net.minecraft.client.multiplayer.ClientSuggestionProvider; +import net.minecraft.client.multiplayer.*; import net.minecraft.client.resources.sounds.SoundInstance; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.network.Connection; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Style; import net.minecraft.network.chat.TextColor; @@ -52,14 +51,16 @@ import static net.asodev.islandutils.modules.FriendsInGame.TRANSACTION_ID; @Mixin(ClientPacketListener.class) -public abstract class PacketListenerMixin { +public abstract class PacketListenerMixin extends ClientCommonPacketListenerImpl { // I should really separate these mixins... - @Shadow @Final private Minecraft minecraft; // I love minecraft - @Shadow private CommandDispatcher commands; + protected PacketListenerMixin(Minecraft minecraft, Connection connection, CommonListenerCookie commonListenerCookie) { + super(minecraft, connection, commonListenerCookie); + } + @Inject(method = "handleSetExperience", at = @At("TAIL")) // Get our faction level public void handleSetExperience(ClientboundSetExperiencePacket clientboundSetExperiencePacket, CallbackInfo ci) { if (!MccIslandState.isOnline()) return; // We must be online! @@ -189,7 +190,7 @@ private void handleRespawn(ClientboundRespawnPacket clientboundRespawnPacket, Ca ClientLevel clientLevel = this.minecraft.level; // Get our player if (clientLevel == null) return; // minecraft is a good game. - ResourceKey resourceKey = clientboundRespawnPacket.getDimension(); // Get the key of this world + ResourceKey resourceKey = clientboundRespawnPacket.commonPlayerSpawnInfo().dimension(); // Get the key of this world if (resourceKey != clientLevel.dimension()) { // If we have changed worlds... MusicUtil.stopMusic(); // ...stop the music } diff --git a/src/main/java/net/asodev/islandutils/mixins/ui/ChatScreenMixin.java b/src/main/java/net/asodev/islandutils/mixins/ui/ChatScreenMixin.java index 9c972fe..f6dcea8 100644 --- a/src/main/java/net/asodev/islandutils/mixins/ui/ChatScreenMixin.java +++ b/src/main/java/net/asodev/islandutils/mixins/ui/ChatScreenMixin.java @@ -31,7 +31,12 @@ protected ChatScreenMixin(Component component) { } private final List buttons = new ArrayList<>(); - private int nextPress = 0; + private long lastPress = 0; + + @Unique + private static final int BUTTON_WIDTH = 43; + @Unique + private static final int BUTTON_HEIGHT = 9; @Unique private static final int BUTTON_WIDTH = 43; @@ -71,18 +76,14 @@ private void render(GuiGraphics guiGraphics, int i, int j, float f, CallbackInfo } } - @Inject(method = "tick", at = @At("HEAD")) - private void tick(CallbackInfo ci) { - if (nextPress > 0) nextPress--; - } - @Inject(method = "mouseClicked", at = @At("HEAD"), cancellable = true) private void mouseClicked(double d, double e, int i, CallbackInfoReturnable cir) { - if (nextPress > 0) return; + long timeNow = System.currentTimeMillis(); + if ((timeNow - lastPress) < 1000) return; for (PlainTextButtonNoShadow button : buttons) { if (button.isHoveredOrFocused()) { button.onPress(); - nextPress = 20; + lastPress = System.currentTimeMillis(); cir.setReturnValue(true); return; } diff --git a/src/main/java/net/asodev/islandutils/mixins/ui/PauseScreenMixin.java b/src/main/java/net/asodev/islandutils/mixins/ui/PauseScreenMixin.java index a634df9..9a69471 100644 --- a/src/main/java/net/asodev/islandutils/mixins/ui/PauseScreenMixin.java +++ b/src/main/java/net/asodev/islandutils/mixins/ui/PauseScreenMixin.java @@ -10,6 +10,7 @@ import net.minecraft.client.gui.screens.ConfirmScreen; import net.minecraft.client.gui.screens.PauseScreen; import net.minecraft.client.gui.screens.Screen; +import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -22,7 +23,6 @@ @Mixin(PauseScreen.class) public class PauseScreenMixin extends Screen { - @Final @Shadow private static Component DISCONNECT; @Mutable @Shadow private void onDisconnect() {} protected PauseScreenMixin(Component component) { @@ -38,7 +38,7 @@ protected PauseScreenMixin(Component component) { ) private Button.Builder createPause(Component component, Button.OnPress onPress) { if (!MccIslandState.isOnline() || !IslandOptions.getMisc().isPauseConfirm()) return Button.builder(component, onPress); - if (component == DISCONNECT) { + if (component == CommonComponents.GUI_DISCONNECT) { Component message = Component.literal("Are you sure you want to leave?").withStyle(ChatFormatting.AQUA); Component no = Component.literal("Cancel"); Component yes = Component.literal("Disconnect").withStyle(ChatFormatting.RED); diff --git a/src/main/java/net/asodev/islandutils/util/Sidebar.java b/src/main/java/net/asodev/islandutils/util/Sidebar.java index c0dbe33..886d724 100644 --- a/src/main/java/net/asodev/islandutils/util/Sidebar.java +++ b/src/main/java/net/asodev/islandutils/util/Sidebar.java @@ -4,6 +4,7 @@ import com.google.common.collect.Lists; import net.minecraft.client.Minecraft; import net.minecraft.network.chat.Component; +import net.minecraft.world.scores.DisplaySlot; import net.minecraft.world.scores.Objective; import net.minecraft.world.scores.PlayerTeam; import net.minecraft.world.scores.Scoreboard; @@ -63,7 +64,7 @@ private static Objective getSidebar() { @Nullable private static Objective getSidebar(Scoreboard scoreboard) { - return scoreboard.getDisplayObjective(Scoreboard.DISPLAY_SLOT_SIDEBAR); + return scoreboard.getDisplayObjective(DisplaySlot.SIDEBAR); } @Nullable diff --git a/src/main/java/net/asodev/islandutils/util/resourcepack/ResourcePackUpdater.java b/src/main/java/net/asodev/islandutils/util/resourcepack/ResourcePackUpdater.java index 1ea11f2..a08054b 100644 --- a/src/main/java/net/asodev/islandutils/util/resourcepack/ResourcePackUpdater.java +++ b/src/main/java/net/asodev/islandutils/util/resourcepack/ResourcePackUpdater.java @@ -9,6 +9,7 @@ import net.minecraft.server.packs.FilePackResources; import net.minecraft.server.packs.PackType; import net.minecraft.server.packs.repository.Pack; +import net.minecraft.server.packs.repository.PackCompatibility; import net.minecraft.server.packs.repository.PackSource; import net.minecraft.util.HttpUtil; import net.minecraft.world.flag.FeatureFlagSet; @@ -23,6 +24,7 @@ import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.util.HashMap; +import java.util.List; import java.util.Objects; import java.util.concurrent.CompletableFuture; @@ -63,14 +65,12 @@ public void downloadAndApply() throws Exception { public void apply(File file, Boolean save) { getting = false; state = null; - int version = SharedConstants.getCurrentVersion().getPackVersion(PackType.CLIENT_RESOURCES); pack = Pack.create( "island_utils", title, true, - (d) -> new FilePackResources("IslandUtils", file, true), - new Pack.Info(desc, version, FeatureFlagSet.of()), - PackType.CLIENT_RESOURCES, + new FilePackResources.FileResourcesSupplier(file, true), + new Pack.Info(desc, PackCompatibility.COMPATIBLE, FeatureFlagSet.of(), List.of()), Pack.Position.BOTTOM, true, PackSource.BUILT_IN diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 09da72a..ea78f67 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -13,9 +13,7 @@ "icon": "assets/island/icon.png", "environment": "client", "entrypoints": { - "client": [ - "net.asodev.islandutils.IslandUtilsClient" - ], + "client": [ "net.asodev.islandutils.IslandUtilsClient" ], "main": [ "net.asodev.islandutils.IslandUtils" ], "modmenu": [ "net.asodev.islandutils.options.ModMenuIntegration" ] }, @@ -30,7 +28,7 @@ } }, "depends": { - "noxesium": ">=1.0.0", + "noxesium": ">=1.0.5", "fabricloader": ">=0.14.8", "fabric": "*", "minecraft": "1.20.x", diff --git a/src/main/resources/islandutils.accesswidener b/src/main/resources/islandutils.accesswidener new file mode 100644 index 0000000..7acf6b7 --- /dev/null +++ b/src/main/resources/islandutils.accesswidener @@ -0,0 +1,4 @@ +accessWidener v1 named + +accessible method net/minecraft/server/packs/FilePackResources (Ljava/lang/String;Lnet/minecraft/server/packs/FilePackResources$SharedZipFileAccess;ZLjava/lang/String;)V +accessible method net/minecraft/server/packs/FilePackResources$SharedZipFileAccess (Ljava/io/File;)V \ No newline at end of file diff --git a/src/main/resources/islandutils.mixins.json b/src/main/resources/islandutils.mixins.json index c4bf04c..ccc3c12 100644 --- a/src/main/resources/islandutils.mixins.json +++ b/src/main/resources/islandutils.mixins.json @@ -23,7 +23,6 @@ "accessors.ContainerScreenAccessor", "accessors.SoundEngineAccessor", "accessors.SoundManagerAccessor", - "accessors.TabListAccessor", "cosmetics.UIMixin", "crafting.CraftingPacketMixin", "crafting.ScavengingScreenMixin",