diff --git a/build.gradle b/build.gradle index 44ebae0..c23d6f0 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '1.8-SNAPSHOT' + id 'fabric-loom' version '1.10-SNAPSHOT' id 'maven-publish' id 'com.modrinth.minotaur' version '2.+' id 'net.darkhax.curseforgegradle' version '1.1.+' @@ -14,8 +14,8 @@ base { } repositories { - maven { url "https://maven.terraformersmc.com/releases/" } - maven { url "https://maven.isxander.dev/releases" } + maven { url = "https://maven.terraformersmc.com/releases/" } + maven { url = "https://maven.isxander.dev/releases" } } loom { @@ -33,7 +33,7 @@ dependencies { } processResources { - filteringCharset "UTF-8" + filteringCharset = "UTF-8" var replaceProperties = [ version : project.version, diff --git a/gradle.properties b/gradle.properties index ccbdc14..57b8e78 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,16 +4,16 @@ org.gradle.parallel=true # Fabric Properties # check these on https://fabricmc.net/develop -min_minecraft_version=1.21.4 -minecraft_version=1.21.4 -yarn_mappings=1.21.4+build.8 -loader_version=0.16.10 +min_minecraft_version=1.20.4 +minecraft_version=1.20.4 +yarn_mappings=1.20.4+build.3 +loader_version=0.15.11 # Mod Properties -mod_version=1.2.3+1.21.4 +mod_version=1.2.3+1.20.4 maven_group=one.oth3r file_name=sit! # Dependencies -fabric_version=0.116.1+1.21.4 -modmenu_version=13.0.0-beta.1 +fabric_version=0.97.1+1.20.4 +modmenu_version=9.0.0 diff --git a/src/main/java/one/oth3r/sit/file/CustomBlock.java b/src/main/java/one/oth3r/sit/file/CustomBlock.java index e9b8769..8f8bf68 100644 --- a/src/main/java/one/oth3r/sit/file/CustomBlock.java +++ b/src/main/java/one/oth3r/sit/file/CustomBlock.java @@ -96,7 +96,7 @@ public class CustomBlock { for (String tag : blockTags) { // substring to remove # and if needed, ! // if there is a math for the NOT(!) tag, return false - if (tag.startsWith("!") && blockState.isIn(TagKey.of(Registries.BLOCK.getKey(), Identifier.of(tag.substring(2))))) return false; + if (tag.startsWith("!") && blockState.isIn(TagKey.of(Registries.BLOCK.getKey(), new Identifier(tag.substring(2))))) return false; // if there is a match, return true if (blockState.isIn(TagKey.of(Registries.BLOCK.getKey(), Identifier.tryParse(tag.substring(1))))) tagCheck = true; } diff --git a/src/main/java/one/oth3r/sit/file/CustomItem.java b/src/main/java/one/oth3r/sit/file/CustomItem.java index ec1ef5f..05515f6 100644 --- a/src/main/java/one/oth3r/sit/file/CustomItem.java +++ b/src/main/java/one/oth3r/sit/file/CustomItem.java @@ -53,10 +53,10 @@ public class CustomItem { // if a NOT tag if (tag.startsWith("!")) { // if there is a math for the NOT(!) tag, return false - if (itemStack.isIn(TagKey.of(Registries.ITEM.getKey(), Identifier.of(tag.substring(2))))) return false; + if (itemStack.isIn(TagKey.of(Registries.ITEM.getKey(), new Identifier(tag.substring(2))))) return false; } // else (normal tag), if there is a match, set tagCheck to true - else if (itemStack.isIn(TagKey.of(Registries.ITEM.getKey(), Identifier.of(tag.substring(1))))) tagCheck = true; + else if (itemStack.isIn(TagKey.of(Registries.ITEM.getKey(), new Identifier(tag.substring(1))))) tagCheck = true; } // not returning true in the loop because there might be a (!) not tag that the item might fall into, after the item was already in another tag diff --git a/src/main/java/one/oth3r/sit/packet/PacketSender.java b/src/main/java/one/oth3r/sit/packet/PacketSender.java new file mode 100644 index 0000000..ff624bb --- /dev/null +++ b/src/main/java/one/oth3r/sit/packet/PacketSender.java @@ -0,0 +1,39 @@ +package one.oth3r.sit.packet; + +import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; +import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; +import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; +import net.minecraft.network.PacketByteBuf; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.util.Identifier; +import one.oth3r.sit.utl.Data; + +import java.nio.ByteBuffer; +import java.nio.charset.StandardCharsets; + +public class PacketSender { + private final PacketByteBuf data; + private final PacketType type; + + public PacketSender(PacketType type, String data) { + this.type = type; + this.data = PacketByteBufs.create() + .writeBytes(ByteBuffer.wrap(data.getBytes(StandardCharsets.UTF_8))); + } + + public void sendToPlayer(ServerPlayerEntity player) { + ServerPlayNetworking.send(player,getIdentifier(type),data); + } + + public void sendToServer() { + ClientPlayNetworking.send(getIdentifier(type),data); + } + + public static Identifier getIdentifier(PacketType packetType) { + return new Identifier(Data.MOD_ID, packetType.getId()); + } + + public static String getPacketData(PacketByteBuf buf) { + return buf.toString(StandardCharsets.UTF_8); + } +} diff --git a/src/main/java/one/oth3r/sit/packet/PacketType.java b/src/main/java/one/oth3r/sit/packet/PacketType.java new file mode 100644 index 0000000..28b351c --- /dev/null +++ b/src/main/java/one/oth3r/sit/packet/PacketType.java @@ -0,0 +1,16 @@ +package one.oth3r.sit.packet; + +public enum PacketType { + RESPONSE("response_v1.0"), + SETTINGS("settings_v2.0"); + + final String id; + + PacketType(String id) { + this.id = id; + } + + public String getId() { + return id; + } +} diff --git a/src/main/java/one/oth3r/sit/packet/SitPayloads.java b/src/main/java/one/oth3r/sit/packet/SitPayloads.java deleted file mode 100644 index e1aaba9..0000000 --- a/src/main/java/one/oth3r/sit/packet/SitPayloads.java +++ /dev/null @@ -1,43 +0,0 @@ -package one.oth3r.sit.packet; - -import net.minecraft.network.RegistryByteBuf; -import net.minecraft.network.codec.PacketCodec; -import net.minecraft.network.codec.PacketCodecs; -import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.Identifier; -import one.oth3r.sit.utl.Data; - -public class SitPayloads { - /** - * the packet that the client sends to the server - * @param value the sitting settings for the client - */ - public record SettingsPayload(String value) implements CustomPayload { - - public static final Id ID = new Id<>(Identifier.of(Data.MOD_ID,"settings_v2.0")); - - public static final PacketCodec CODEC = PacketCodecs.STRING.xmap(SettingsPayload::new, SettingsPayload::value).cast(); - - @Override - public Id getId() { - return ID; - } - } - - /** - * the packet that the server sends to the client when responding to the settings payload - */ - public record ResponsePayload(String value) implements CustomPayload { - - public static final String VERSION = "response_v1.0"; - - public static final Id ID = new Id<>(Identifier.of(Data.MOD_ID,VERSION)); - - public static final PacketCodec CODEC = PacketCodecs.STRING.xmap(ResponsePayload::new, ResponsePayload::value).cast(); - - @Override - public Id getId() { - return ID; - } - } -} diff --git a/src/main/java/one/oth3r/sit/screen/ClickableImageWidget.java b/src/main/java/one/oth3r/sit/screen/ClickableImageWidget.java index fb14e4f..375c367 100644 --- a/src/main/java/one/oth3r/sit/screen/ClickableImageWidget.java +++ b/src/main/java/one/oth3r/sit/screen/ClickableImageWidget.java @@ -4,7 +4,6 @@ import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.tooltip.Tooltip; import net.minecraft.client.gui.widget.ButtonWidget; -import net.minecraft.client.render.RenderLayer; import net.minecraft.text.Text; import net.minecraft.util.Identifier; @@ -21,10 +20,12 @@ public class ClickableImageWidget extends ButtonWidget { @Override protected void renderWidget(DrawContext context, int mouseX, int mouseY, float delta) { + context.setShaderColor(1.0f, 1.0f, 1.0f, this.alpha); RenderSystem.enableBlend(); RenderSystem.enableDepthTest(); - context.drawTexture(RenderLayer::getGuiTextured, image, + context.drawTexture(image, this.getX(), this.getY(), 0.0f, 0.0f, this.getWidth(), this.getHeight(), this.getWidth(), this.getHeight()); + context.setShaderColor(1.0f, 1.0f, 1.0f, 1.0f); } } diff --git a/src/main/java/one/oth3r/sit/screen/ConfigScreen.java b/src/main/java/one/oth3r/sit/screen/ConfigScreen.java index b64eb60..637bd6a 100644 --- a/src/main/java/one/oth3r/sit/screen/ConfigScreen.java +++ b/src/main/java/one/oth3r/sit/screen/ConfigScreen.java @@ -5,15 +5,11 @@ import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.ConfirmLinkScreen; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.widget.ButtonWidget; -import net.minecraft.client.render.RenderLayer; import net.minecraft.text.Text; import net.minecraft.util.Identifier; -import net.minecraft.util.math.ColorHelper; import one.oth3r.sit.file.FileData; import one.oth3r.sit.utl.Data; -import java.net.URI; - public class ConfigScreen extends Screen { protected final Screen parent; @@ -38,13 +34,13 @@ public class ConfigScreen extends Screen { TextureButtonWidget issuesButton = this.addDrawableChild(new TextureButtonWidget.Builder(Text.translatable("sit!.gui.button.issues"), - ConfirmLinkScreen.opening(this, URI.create("https://github.com/Oth3r/Sit/issues")), true) + ConfirmLinkScreen.opening(this, "https://github.com/Oth3r/Sit/issues"), true) .dimensions(20,20).texture(Identifier.of(Data.MOD_ID, "issues"), 15, 15).build()); issuesButton.setPosition(this.width / 2 - 125, startY + 72 + 12); this.addDrawableChild(ButtonWidget.builder(Text.translatable("sit!.gui.button.website"), - ConfirmLinkScreen.opening(this, URI.create("https://modrinth.com/mod/sit!")) + ConfirmLinkScreen.opening(this, "https://modrinth.com/mod/sit!") ).dimensions(this.width / 2 - 100, startY + 72 + 12, 98, 20).build()); this.addDrawableChild(ButtonWidget.builder(Text.translatable("gui.done"), (button) -> { @@ -52,7 +48,7 @@ public class ConfigScreen extends Screen { }).dimensions(this.width / 2 + 2, startY + 72 + 12, 98, 20).build()); TextureButtonWidget donateButton = this.addDrawableChild(new TextureButtonWidget.Builder(Text.translatable("sit!.gui.button.donate"), - ConfirmLinkScreen.opening(this, URI.create("https://Ko-fi.com/oth3r")), true) + ConfirmLinkScreen.opening(this, "https://Ko-fi.com/oth3r"), true) .dimensions(20,20).texture(Identifier.of(Data.MOD_ID, "donate"), 15, 15).build()); donateButton.setPosition(this.width / 2 + 105, startY + 72 + 12); } @@ -73,8 +69,8 @@ public class ConfigScreen extends Screen { private void renderBanner(DrawContext context, int x, int y, float alpha) { RenderSystem.enableBlend(); - context.drawTexture(RenderLayer::getGuiTextured,Identifier.of(Data.MOD_ID, "textures/gui/banner.png"), - x, y, 0.0f, 0.0f, 128, 72, 128, 72, ColorHelper.getWhite(alpha)); + context.drawTexture(Identifier.of(Data.MOD_ID, "textures/gui/banner.png"), + x, y, 0.0f, 0.0f, 128, 72, 128, 72); RenderSystem.disableBlend(); } diff --git a/src/main/java/one/oth3r/sit/screen/TextureButtonWidget.java b/src/main/java/one/oth3r/sit/screen/TextureButtonWidget.java index 6a13691..122137b 100644 --- a/src/main/java/one/oth3r/sit/screen/TextureButtonWidget.java +++ b/src/main/java/one/oth3r/sit/screen/TextureButtonWidget.java @@ -4,7 +4,6 @@ import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.tooltip.Tooltip; import net.minecraft.client.gui.widget.ButtonWidget; -import net.minecraft.client.render.RenderLayer; import net.minecraft.text.Text; import net.minecraft.util.Identifier; import org.jetbrains.annotations.Nullable; @@ -30,7 +29,7 @@ public class TextureButtonWidget extends ButtonWidget { super.renderWidget(context, mouseX, mouseY, delta); int x = this.getX() + this.getWidth() / 2 - this.textureWidth / 2; int y = this.getY() + this.getHeight() / 2 - this.textureHeight / 2; - context.drawGuiTexture(RenderLayer::getGuiTextured, this.texture, x, y, this.textureWidth, this.textureHeight); + context.drawGuiTexture(this.texture, x, y, this.textureWidth, this.textureHeight); } @Override diff --git a/src/main/java/one/oth3r/sit/screen/UnderConstructionScreen.java b/src/main/java/one/oth3r/sit/screen/UnderConstructionScreen.java index 8395f35..ba418fc 100644 --- a/src/main/java/one/oth3r/sit/screen/UnderConstructionScreen.java +++ b/src/main/java/one/oth3r/sit/screen/UnderConstructionScreen.java @@ -29,7 +29,7 @@ public class UnderConstructionScreen> extends Screen { protected void init() { int startY = this.height / 5-4; ButtonWidget foxPNG = this.addDrawableChild(new ClickableImageWidget(70,70,140,140, Tooltip.of(Text.of("Art by @bunnestbun")), - Identifier.of(Data.MOD_ID, "textures/gui/fox.png"), ConfirmLinkScreen.opening(this, URI.create("https://www.instagram.com/bunnestbun/")))); + Identifier.of(Data.MOD_ID, "textures/gui/fox.png"), ConfirmLinkScreen.opening(this, "https://www.instagram.com/bunnestbun/"))); foxPNG.setPosition(this.width / 2 - (foxPNG.getWidth()/2), startY-35); ButtonWidget openFileButton = this.addDrawableChild(new ButtonWidget.Builder(Text.translatable("sit!.gui.button.file"), @@ -38,7 +38,7 @@ public class UnderConstructionScreen> extends Screen { openFileButton.setPosition(this.width / 2 - 70, startY+110); TextureButtonWidget folderButton = this.addDrawableChild(new TextureButtonWidget.Builder(Text.translatable("sit!.gui.button.folder"), - (button) -> Util.getOperatingSystem().open(Paths.get(this.file.getFile().getParent())), true) + (button) -> Util.getOperatingSystem().open(this.file.getFile().getParent()), true) .dimensions(20,20).texture(Identifier.of(Data.MOD_ID, "folder"), 15, 15).build()); folderButton.setPosition(this.width / 2 + 50, startY + 110); diff --git a/src/main/java/one/oth3r/sit/utl/Events.java b/src/main/java/one/oth3r/sit/utl/Events.java index f06a485..fbc2241 100644 --- a/src/main/java/one/oth3r/sit/utl/Events.java +++ b/src/main/java/one/oth3r/sit/utl/Events.java @@ -8,7 +8,6 @@ import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents; import net.fabricmc.fabric.api.event.player.UseBlockCallback; -import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry; import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; import net.minecraft.client.MinecraftClient; @@ -21,7 +20,8 @@ import one.oth3r.sit.command.SitCommand; import one.oth3r.sit.file.FileData; import one.oth3r.sit.file.LangReader; import one.oth3r.sit.file.SittingConfig; -import one.oth3r.sit.packet.SitPayloads; +import one.oth3r.sit.packet.PacketSender; +import one.oth3r.sit.packet.PacketType; import one.oth3r.sit.screen.ConfigScreen; import org.lwjgl.glfw.GLFW; @@ -83,35 +83,37 @@ public class Events { private static class Packet { private static void common() { - // register the data - PayloadTypeRegistry.playC2S().register(SitPayloads.SettingsPayload.ID, SitPayloads.SettingsPayload.CODEC); - - PayloadTypeRegistry.playS2C().register(SitPayloads.ResponsePayload.ID, SitPayloads.ResponsePayload.CODEC); - // server receiver is common /// receiving the sitting setting payload - ServerPlayNetworking.registerGlobalReceiver(SitPayloads.SettingsPayload.ID,((payload, context) -> Data.getServer().execute(() -> { - // save the setting on the server for that player - FileData.setPlayerSetting(context.player(),Utl.getGson().fromJson(payload.value(), SittingConfig.class)); + ServerPlayNetworking.registerGlobalReceiver(PacketSender.getIdentifier(PacketType.SETTINGS), + ((server, player, handler, buf, responseSender) -> { + String packetData = PacketSender.getPacketData(buf); + server.execute(() -> { + // save the setting on the server for that player + FileData.setPlayerSetting(player,Utl.getGson().fromJson(packetData, SittingConfig.class)); - // send the player back a response packet for confirmation - ServerPlayNetworking.send(context.player(),new SitPayloads.ResponsePayload(SitPayloads.ResponsePayload.VERSION)); + // send the player back a response packet for confirmation + new PacketSender(PacketType.RESPONSE,PacketType.RESPONSE.getId()).sendToPlayer(player); - // log the receiving of the packet from the player - Data.LOGGER.info(Utl.lang("sit!.console.player_settings",context.player().getName().getString()).getString()); - }))); + // log the receiving of the packet from the player + Data.LOGGER.info(Utl.lang("sit!.console.player_settings",player.getName().getString()).getString()); + }); + })); } private static void client() { /// receiving the response packet from the server - ClientPlayNetworking.registerGlobalReceiver(SitPayloads.ResponsePayload.ID, ((payload, context) -> { - // only update when needed - if (!Data.isSupportedServer()) { - Data.setSupportedServer(true); - Data.LOGGER.info(Utl.lang("sit!.console.connected",payload.value()).getString()); - } - })); + ClientPlayNetworking.registerGlobalReceiver(PacketSender.getIdentifier(PacketType.RESPONSE), + ((client, handler, buf, responseSender) -> { + String packetData = PacketSender.getPacketData(buf); + client.execute(() -> { + if (!Data.isSupportedServer()) { + Data.setSupportedServer(true); + Data.LOGGER.info(Utl.lang("sit!.console.connected",packetData).getString()); + } + }); + })); } } diff --git a/src/main/java/one/oth3r/sit/utl/Utl.java b/src/main/java/one/oth3r/sit/utl/Utl.java index 88e86b7..0ccc439 100644 --- a/src/main/java/one/oth3r/sit/utl/Utl.java +++ b/src/main/java/one/oth3r/sit/utl/Utl.java @@ -5,7 +5,6 @@ import com.google.gson.reflect.TypeToken; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; import com.google.gson.stream.MalformedJsonException; -import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; import net.minecraft.block.*; import net.minecraft.block.enums.BlockHalf; import net.minecraft.block.enums.SlabType; @@ -14,7 +13,6 @@ import net.minecraft.entity.decoration.DisplayEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.BlockItem; import net.minecraft.item.ItemStack; -import net.minecraft.item.consume.UseAction; import net.minecraft.registry.Registries; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.world.ServerWorld; @@ -29,7 +27,8 @@ import net.minecraft.util.math.Vec3d; import net.minecraft.world.RaycastContext; import net.minecraft.world.World; import one.oth3r.sit.file.*; -import one.oth3r.sit.packet.SitPayloads; +import one.oth3r.sit.packet.PacketSender; +import one.oth3r.sit.packet.PacketType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -322,7 +321,7 @@ public class Utl { player.sendMessage(messageTag().append(Utl.lang("sit!.chat.purged",Utl.lang("sit!.chat.purged.total",count).styled( style -> style.withColor(Colors.LIGHT_GRAY).withItalic(true) )).styled( - style -> style.withColor(Colors.GREEN) + style -> style.withColor(Formatting.GREEN) ))); } } @@ -370,7 +369,7 @@ public class Utl { */ public static void sendSettingsPackets() { if (Data.isClient() && Data.isInGame()) { - ClientPlayNetworking.send(new SitPayloads.SettingsPayload(Utl.getGson().toJson(FileData.getSittingConfig()))); + new PacketSender(PacketType.SETTINGS, Utl.getGson().toJson(FileData.getSittingConfig())).sendToServer(); } }