diff --git a/client b/client index 44179f4e..cef9b7b6 160000 --- a/client +++ b/client @@ -1 +1 @@ -Subproject commit 44179f4e1218eca99906a6d81af371c1c76b28bb +Subproject commit cef9b7b64f6ce555b7f2b461923e58f96edd78e7 diff --git a/onejar/neoforge_1_21_6/build.gradle b/onejar/neoforge_1_21_6/build.gradle index 8242220b..c8056c7a 100644 --- a/onejar/neoforge_1_21_6/build.gradle +++ b/onejar/neoforge_1_21_6/build.gradle @@ -1,7 +1,7 @@ plugins { id 'java-library' id 'maven-publish' - id 'net.neoforged.gradle.userdev' version '7.0.189' + id 'net.neoforged.gradle.userdev' version '7.0.192' } tasks.named('wrapper', Wrapper).configure { @@ -156,7 +156,6 @@ tasks.withType(ProcessResources).configureEach { minecraft_version : minecraft_version, minecraft_version_range: minecraft_version_range, neo_version : neo_version, - neo_version_range : neo_version_range, mod_id : mod_id, mod_name : mod_name, mod_license : mod_license, diff --git a/onejar/neoforge_1_21_6/gradle.properties b/onejar/neoforge_1_21_6/gradle.properties index 1abe06e2..cb8aa54f 100644 --- a/onejar/neoforge_1_21_6/gradle.properties +++ b/onejar/neoforge_1_21_6/gradle.properties @@ -7,8 +7,8 @@ org.gradle.configuration-cache=true #read more on this at https://github.com/neoforged/NeoGradle/blob/NG_7.0/README.md#apply-parchment-mappings # you can also find the latest versions at: https://parchmentmc.org/docs/getting-started -neogradle.subsystems.parchment.minecraftVersion=1.21.5 -neogradle.subsystems.parchment.mappingsVersion=2025.06.15 +neogradle.subsystems.parchment.minecraftVersion=1.21.6 +neogradle.subsystems.parchment.mappingsVersion=2025.06.29 # Environment Properties # You can find the latest versions here: https://projects.neoforged.net/neoforged/neoforge # The Minecraft version must agree with the Neo version to get a valid artifact @@ -20,7 +20,7 @@ minecraft_version_range=[1.21.6] # The Neo version must agree with the Minecraft version to get a valid artifact neo_version=21.6.20-beta # The Neo version range can use any version of Neo as bounds -neo_version_range=[21.6.20-beta,) +#neo_version_range=[21.6.20-beta,) kff_version=5.7.0 diff --git a/onejar/neoforge_1_21_6/settings.gradle b/onejar/neoforge_1_21_6/settings.gradle index e8394ccb..2d869ce7 100644 --- a/onejar/neoforge_1_21_6/settings.gradle +++ b/onejar/neoforge_1_21_6/settings.gradle @@ -10,4 +10,4 @@ plugins { id 'org.gradle.toolchains.foojay-resolver-convention' version '0.9.0' } -rootProject.name = 'AllMusic_Server' \ No newline at end of file +rootProject.name = 'AllMusic' \ No newline at end of file diff --git a/onejar/neoforge_1_21_6/src/main/java/com/coloryr/allmusic/client/AllMusicClient.java b/onejar/neoforge_1_21_6/src/main/java/com/coloryr/allmusic/client/AllMusicClient.java index 9ae95db8..f54c727e 100644 --- a/onejar/neoforge_1_21_6/src/main/java/com/coloryr/allmusic/client/AllMusicClient.java +++ b/onejar/neoforge_1_21_6/src/main/java/com/coloryr/allmusic/client/AllMusicClient.java @@ -2,7 +2,8 @@ package com.coloryr.allmusic.client; import com.coloryr.allmusic.client.core.AllMusicBridge; import com.coloryr.allmusic.client.core.AllMusicCore; -import com.coloryr.allmusic.server.core.objs.enums.ComType; +import com.coloryr.allmusic.client.core.CommandType; +import com.coloryr.allmusic.server.AllMusicForge; import com.coloryr.allmusic.server.side.forge.PackData; import com.mojang.blaze3d.opengl.GlTexture; import com.mojang.blaze3d.systems.RenderSystem; @@ -10,18 +11,18 @@ import com.mojang.blaze3d.textures.FilterMode; import com.mojang.blaze3d.textures.GpuTexture; import com.mojang.blaze3d.textures.GpuTextureView; import com.mojang.blaze3d.textures.TextureFormat; -import io.netty.buffer.ByteBuf; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.renderer.RenderPipelines; import net.minecraft.client.renderer.texture.AbstractTexture; -import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.chat.Component; -import net.minecraft.network.codec.StreamCodec; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundSource; +import net.neoforged.api.distmarker.Dist; import net.neoforged.bus.api.IEventBus; import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.fml.common.Mod; import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent; import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent; import net.neoforged.fml.loading.FMLPaths; @@ -33,14 +34,15 @@ import net.neoforged.neoforge.client.event.sound.PlayStreamingSourceEvent; import net.neoforged.neoforge.client.event.sound.SoundEngineLoadEvent; import net.neoforged.neoforge.client.gui.VanillaGuiLayers; import net.neoforged.neoforge.common.NeoForge; -import net.neoforged.neoforge.network.handling.IPayloadContext; -import net.neoforged.neoforge.network.handling.IPayloadHandler; -import org.jetbrains.annotations.NotNull; import org.joml.Matrix3x2fStack; import java.nio.ByteBuffer; -public class AllMusicClient implements IPayloadHandler, StreamCodec, AllMusicBridge { +// This class will not load on dedicated servers. Accessing client side code from here is safe. +@Mod(value = AllMusicForge.MODID, dist = Dist.CLIENT) +// You can use EventBusSubscriber to automatically register all static methods in the class annotated with @SubscribeEvent +@EventBusSubscriber(modid = AllMusicForge.MODID, value = Dist.CLIENT) +public class AllMusicClient implements AllMusicBridge { private static GuiGraphics gui; public static final ResourceLocation channel = @@ -70,21 +72,12 @@ public class AllMusicClient implements IPayloadHandler, StreamCodec, StreamCodec { + @Override + public void handle(@NotNull PackData payload, IPayloadContext context) { + if (context.flow() == PacketFlow.CLIENTBOUND) { + AllMusicClient.decode(payload); + } + } + } } diff --git a/onejar/neoforge_1_21_6/src/main/java/com/coloryr/allmusic/server/side/forge/PackData.java b/onejar/neoforge_1_21_6/src/main/java/com/coloryr/allmusic/server/side/forge/PackData.java index 1ccbf045..f3625805 100644 --- a/onejar/neoforge_1_21_6/src/main/java/com/coloryr/allmusic/server/side/forge/PackData.java +++ b/onejar/neoforge_1_21_6/src/main/java/com/coloryr/allmusic/server/side/forge/PackData.java @@ -3,12 +3,17 @@ package com.coloryr.allmusic.server.side.forge; import com.coloryr.allmusic.server.AllMusicForge; import com.coloryr.allmusic.server.codec.PacketCodec; import com.coloryr.allmusic.server.core.objs.enums.ComType; +import io.netty.buffer.ByteBuf; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import org.jetbrains.annotations.NotNull; +import java.nio.charset.StandardCharsets; + public record PackData(ComType cmd, String data, int data1) implements CustomPacketPayload { + public static final ComType[] types = ComType.values(); + public static final Type TYPE = new Type<>(AllMusicForge.channel); public static final StreamCodec CODEC = new PackCodec(); @@ -20,13 +25,41 @@ public record PackData(ComType cmd, String data, int data1) implements CustomPac public static class PackCodec implements StreamCodec { @Override public @NotNull PackData decode(RegistryFriendlyByteBuf pack) { + byte type = pack.readByte(); + if (type >= types.length || type < 0) { + return new PackData(ComType.CLEAR, "", 0); + } + ComType type1 = types[type]; + String data = null; + int data1 = 0; + switch (type1) { + case LYRIC: + case INFO: + case LIST: + case PLAY: + case IMG: + case HUD: + data = readString(pack); + break; + case POS: + data1 = pack.readInt(); + break; + } pack.clear(); - return new PackData(ComType.CLEAR, "", 0); + return new PackData(type1, data, data1); } @Override public void encode(@NotNull RegistryFriendlyByteBuf pack, PackData buffer) { PacketCodec.pack(pack, buffer.cmd, buffer.data, buffer.data1); } + + private static String readString(ByteBuf buf) { + int size = buf.readInt(); + byte[] temp = new byte[size]; + buf.readBytes(temp); + + return new String(temp, StandardCharsets.UTF_8); + } } } diff --git a/onejar/neoforge_1_21_6/src/main/templates/META-INF/neoforge.mods.toml b/onejar/neoforge_1_21_6/src/main/resources/META-INF/neoforge.mods.toml similarity index 98% rename from onejar/neoforge_1_21_6/src/main/templates/META-INF/neoforge.mods.toml rename to onejar/neoforge_1_21_6/src/main/resources/META-INF/neoforge.mods.toml index efb3ca2d..1fe55bf7 100644 --- a/onejar/neoforge_1_21_6/src/main/templates/META-INF/neoforge.mods.toml +++ b/onejar/neoforge_1_21_6/src/main/resources/META-INF/neoforge.mods.toml @@ -63,7 +63,7 @@ type="required" #mandatory # Optional field describing why the dependency is required or why it is incompatible # reason="..." # The version range of the dependency -versionRange="${neo_version_range}" #mandatory +versionRange="[${neo_version},)" #mandatory # An ordering relationship for the dependency. # BEFORE - This mod is loaded BEFORE the dependency # AFTER - This mod is loaded AFTER the dependency @@ -84,4 +84,4 @@ side="BOTH" # that your mod requires GL version 3.2 or higher. Other features will be added. They are side aware so declaring this won't # stop your mod loading on the server for example. #[features.${mod_id}] -#openGLVersion="[3.2,)" +#openGLVersion="[3.2,)" \ No newline at end of file