From 15914f33c2102d7f0eefd0829fc3725b64db9839 Mon Sep 17 00:00:00 2001 From: FlorianMichael <60033407+FlorianMichael@users.noreply.github.com> Date: Tue, 21 Feb 2023 02:02:06 +0100 Subject: [PATCH] Addon: ViaFabricPlusVisual updated README.md --- README.md | 12 +++ ViaFabricPlus-Visual/build.gradle | 26 +++++++ .../ViaFabricPlusVisual.java | 49 ++++++++++++ .../definition/ArmorPointsDefinition.java | 75 +++++++++++++++++++ .../injection/mixin/MixinChatHud.java | 42 +++++++++++ .../injection/mixin/MixinChatScreen.java | 42 +++++++++++ .../mixin/MixinClientPlayNetworkHandler.java | 38 ++++++++++ .../mixin/MixinClientPlayerEntity.java | 46 ++++++++++++ .../injection/mixin/MixinItemRenderer.java | 50 +++++++++++++ .../src/main/resources/fabric.mod.json | 35 +++++++++ .../viafabricplus-visual.mixins.json | 18 +++++ build.gradle | 44 ++++++++--- gradle.properties | 2 +- settings.gradle | 2 + .../viafabricplus/ViaFabricPlus.java | 2 +- .../vialegacy/MixinProtocol1_8to1_7_6_10.java | 2 +- .../value/impl/BooleanValue.java | 2 + .../value/impl/ProtocolSyncBooleanValue.java | 1 + 18 files changed, 476 insertions(+), 12 deletions(-) create mode 100644 ViaFabricPlus-Visual/build.gradle create mode 100644 ViaFabricPlus-Visual/src/main/java/de/florianmichael/viafabricplus_visual/ViaFabricPlusVisual.java create mode 100644 ViaFabricPlus-Visual/src/main/java/de/florianmichael/viafabricplus_visual/definition/ArmorPointsDefinition.java create mode 100644 ViaFabricPlus-Visual/src/main/java/de/florianmichael/viafabricplus_visual/injection/mixin/MixinChatHud.java create mode 100644 ViaFabricPlus-Visual/src/main/java/de/florianmichael/viafabricplus_visual/injection/mixin/MixinChatScreen.java create mode 100644 ViaFabricPlus-Visual/src/main/java/de/florianmichael/viafabricplus_visual/injection/mixin/MixinClientPlayNetworkHandler.java create mode 100644 ViaFabricPlus-Visual/src/main/java/de/florianmichael/viafabricplus_visual/injection/mixin/MixinClientPlayerEntity.java create mode 100644 ViaFabricPlus-Visual/src/main/java/de/florianmichael/viafabricplus_visual/injection/mixin/MixinItemRenderer.java create mode 100644 ViaFabricPlus-Visual/src/main/resources/fabric.mod.json create mode 100644 ViaFabricPlus-Visual/src/main/resources/viafabricplus-visual.mixins.json diff --git a/README.md b/README.md index 2e8620a4..7114c02a 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,15 @@ # ViaFabricPlus Clientside ViaVersion, ViaLegacy and ViaAprilFools implementation with clientside fixes for Fabric +## Why? +Originally ViaFabricPlus was not a standalone project but a part of my Minecraft Utility Mod,
+since this is no longer existent I am now developing the Protocol Translation part as a standalone mod,
+and now: ViaFabricPlus is here + +## Project structure +ViaFabricPlus splits into three major parts: +| Part | Description | +|-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| ViaFabricPlus | Core of the project, all fixes here are stable and have been tested many times | +| ViaFabricPlus-Visual | Addon for the core, it adds only visual changes between the versions like old textures,
optional and not necessary for the gameplay, but recommended. | +| ViaFabricPlus-Emulation | Addon for the Core, this addon is for all for the 1.8 and 1.12 protocol, here it adds complete emulations of the Raytrace or also Movement,
to consider is that this breaks much mod incompatibility and is also very experimental | diff --git a/ViaFabricPlus-Visual/build.gradle b/ViaFabricPlus-Visual/build.gradle new file mode 100644 index 00000000..fd35c95d --- /dev/null +++ b/ViaFabricPlus-Visual/build.gradle @@ -0,0 +1,26 @@ +plugins { + id "fabric-loom" version "1.1-SNAPSHOT" +} + +sourceCompatibility = JavaVersion.VERSION_17 +targetCompatibility = JavaVersion.VERSION_17 + +archivesBaseName = project.archives_base_name + "-visual" +version = project.mod_version +group = project.maven_group + +repositories { + mavenCentral() +} + +dependencies { + minecraft "com.mojang:minecraft:${project.minecraft_version}" + mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" + modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" + + implementation "com.viaversion:viaversion:${project.viaversion_version}" + + implementation "com.github.RaphiMC:ViaLegacy:${project.vialegacy_version}" + + implementation project(":") +} diff --git a/ViaFabricPlus-Visual/src/main/java/de/florianmichael/viafabricplus_visual/ViaFabricPlusVisual.java b/ViaFabricPlus-Visual/src/main/java/de/florianmichael/viafabricplus_visual/ViaFabricPlusVisual.java new file mode 100644 index 00000000..08e9040b --- /dev/null +++ b/ViaFabricPlus-Visual/src/main/java/de/florianmichael/viafabricplus_visual/ViaFabricPlusVisual.java @@ -0,0 +1,49 @@ +/** + * --FLORIAN MICHAEL PRIVATE LICENCE v1.2-- + * + * This file / project is protected and is the intellectual property of Florian Michael (aka. EnZaXD), + * any use (be it private or public, be it copying or using for own use, be it publishing or modifying) of this + * file / project is prohibited. It requires in that use a written permission with official signature of the owner + * "Florian Michael". "Florian Michael" receives the right to control and manage this file / project. This right is not + * cancelled by copying or removing the license and in case of violation a criminal consequence is to be expected. + * The owner "Florian Michael" is free to change this license. The creator assumes no responsibility for any infringements + * that have arisen, are arising or will arise from this project / file. If this licence is used anywhere, + * the latest version published by the author Florian Michael (aka EnZaXD) always applies automatically. + * + * Changelog: + * v1.0: + * Added License + * v1.1: + * Ownership withdrawn + * v1.2: + * Version-independent validity and automatic renewal + */ + +package de.florianmichael.viafabricplus_visual; + +import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; +import de.florianmichael.viafabricplus.platform.ProtocolRange; +import de.florianmichael.viafabricplus.value.impl.ProtocolSyncBooleanValue; +import de.florianmichael.viafabricplus_visual.definition.ArmorPointsDefinition; +import net.fabricmc.api.ClientModInitializer; +import net.raphimc.vialegacy.api.LegacyProtocolVersion; + +public class ViaFabricPlusVisual implements ClientModInitializer { + + // 1.19.2 -> 1.19 + public final static ProtocolSyncBooleanValue disableSecureChatWarning = new ProtocolSyncBooleanValue("Disable secure chat warning", ProtocolRange.andOlder(ProtocolVersion.v1_19)); + + // 1.19 -> 1.18.2 + public final static ProtocolSyncBooleanValue hideSignatureIndicator = new ProtocolSyncBooleanValue("Hide signature indicator", ProtocolRange.andOlder(ProtocolVersion.v1_18_2)); + + // 1.13 -> 1.12.2 + public final static ProtocolSyncBooleanValue replacePetrifiedOakSlab = new ProtocolSyncBooleanValue("Replace petrified oak slab", new ProtocolRange(ProtocolVersion.v1_12_2, LegacyProtocolVersion.r1_3_1tor1_3_2)); + + // 1.9 -> 1.8.x + public final static ProtocolSyncBooleanValue emulateArmorHud = new ProtocolSyncBooleanValue("Emulate Armor hud", ProtocolRange.andOlder(ProtocolVersion.v1_8)); + + @Override + public void onInitializeClient() { + ArmorPointsDefinition.load(); + } +} diff --git a/ViaFabricPlus-Visual/src/main/java/de/florianmichael/viafabricplus_visual/definition/ArmorPointsDefinition.java b/ViaFabricPlus-Visual/src/main/java/de/florianmichael/viafabricplus_visual/definition/ArmorPointsDefinition.java new file mode 100644 index 00000000..9f6af7a2 --- /dev/null +++ b/ViaFabricPlus-Visual/src/main/java/de/florianmichael/viafabricplus_visual/definition/ArmorPointsDefinition.java @@ -0,0 +1,75 @@ +/** + * --FLORIAN MICHAEL PRIVATE LICENCE v1.2-- + * + * This file / project is protected and is the intellectual property of Florian Michael (aka. EnZaXD), + * any use (be it private or public, be it copying or using for own use, be it publishing or modifying) of this + * file / project is prohibited. It requires in that use a written permission with official signature of the owner + * "Florian Michael". "Florian Michael" receives the right to control and manage this file / project. This right is not + * cancelled by copying or removing the license and in case of violation a criminal consequence is to be expected. + * The owner "Florian Michael" is free to change this license. The creator assumes no responsibility for any infringements + * that have arisen, are arising or will arise from this project / file. If this licence is used anywhere, + * the latest version published by the author Florian Michael (aka EnZaXD) always applies automatically. + * + * Changelog: + * v1.0: + * Added License + * v1.1: + * Ownership withdrawn + * v1.2: + * Version-independent validity and automatic renewal + */ + +package de.florianmichael.viafabricplus_visual.definition; + +import com.viaversion.viaversion.protocols.protocol1_9to1_8.ArmorType; +import net.minecraft.client.MinecraftClient; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.registry.Registries; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class ArmorPointsDefinition { + public static final List ARMOR_ITEMS_IN_1_8 = Arrays.asList( + Items.LEATHER_HELMET, + Items.LEATHER_CHESTPLATE, + Items.LEATHER_BOOTS, + Items.CHAINMAIL_HELMET, + Items.CHAINMAIL_CHESTPLATE, + Items.CHAINMAIL_LEGGINGS, + Items.CHAINMAIL_BOOTS, + Items.IRON_HELMET, + Items.IRON_CHESTPLATE, + Items.IRON_LEGGINGS, + Items.IRON_BOOTS, + Items.DIAMOND_HELMET, + Items.DIAMOND_CHESTPLATE, + Items.DIAMOND_LEGGINGS, + Items.DIAMOND_BOOTS, + Items.GOLDEN_HELMET, + Items.GOLDEN_CHESTPLATE, + Items.GOLDEN_LEGGINGS, + Items.GOLDEN_BOOTS + ); + + private final static Map armorTracker = new HashMap<>(); + + public static void load() { + for (Item armorItem : ARMOR_ITEMS_IN_1_8) { + armorTracker.put(armorItem, ArmorType.findByType(Registries.ITEM.getId(armorItem).toString()).getArmorPoints()); + } + } + + private static int getArmorPoints(final ItemStack itemStack) { + if (!armorTracker.containsKey(itemStack.getItem())) return 0; + return armorTracker.get(itemStack.getItem()); + } + + public static int sum() { + return MinecraftClient.getInstance().player.getInventory().armor.stream().mapToInt(ArmorPointsDefinition::getArmorPoints).sum(); + } +} diff --git a/ViaFabricPlus-Visual/src/main/java/de/florianmichael/viafabricplus_visual/injection/mixin/MixinChatHud.java b/ViaFabricPlus-Visual/src/main/java/de/florianmichael/viafabricplus_visual/injection/mixin/MixinChatHud.java new file mode 100644 index 00000000..bc63c9d0 --- /dev/null +++ b/ViaFabricPlus-Visual/src/main/java/de/florianmichael/viafabricplus_visual/injection/mixin/MixinChatHud.java @@ -0,0 +1,42 @@ +/** + * --FLORIAN MICHAEL PRIVATE LICENCE v1.2-- + * + * This file / project is protected and is the intellectual property of Florian Michael (aka. EnZaXD), + * any use (be it private or public, be it copying or using for own use, be it publishing or modifying) of this + * file / project is prohibited. It requires in that use a written permission with official signature of the owner + * "Florian Michael". "Florian Michael" receives the right to control and manage this file / project. This right is not + * cancelled by copying or removing the license and in case of violation a criminal consequence is to be expected. + * The owner "Florian Michael" is free to change this license. The creator assumes no responsibility for any infringements + * that have arisen, are arising or will arise from this project / file. If this licence is used anywhere, + * the latest version published by the author Florian Michael (aka EnZaXD) always applies automatically. + * + * Changelog: + * v1.0: + * Added License + * v1.1: + * Ownership withdrawn + * v1.2: + * Version-independent validity and automatic renewal + */ + +package de.florianmichael.viafabricplus_visual.injection.mixin; + +import de.florianmichael.viafabricplus_visual.ViaFabricPlusVisual; +import net.minecraft.client.gui.hud.ChatHud; +import net.minecraft.client.gui.hud.ChatHudLine; +import net.minecraft.client.gui.hud.MessageIndicator; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(ChatHud.class) +public class MixinChatHud { + + @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/ChatHudLine$Visible;indicator()Lnet/minecraft/client/gui/hud/MessageIndicator;")) + public MessageIndicator removeIndicators(ChatHudLine.Visible instance) { + if (ViaFabricPlusVisual.hideSignatureIndicator.getValue()) { + return null; + } + return instance.indicator(); + } +} diff --git a/ViaFabricPlus-Visual/src/main/java/de/florianmichael/viafabricplus_visual/injection/mixin/MixinChatScreen.java b/ViaFabricPlus-Visual/src/main/java/de/florianmichael/viafabricplus_visual/injection/mixin/MixinChatScreen.java new file mode 100644 index 00000000..15574155 --- /dev/null +++ b/ViaFabricPlus-Visual/src/main/java/de/florianmichael/viafabricplus_visual/injection/mixin/MixinChatScreen.java @@ -0,0 +1,42 @@ +/** + * --FLORIAN MICHAEL PRIVATE LICENCE v1.2-- + * + * This file / project is protected and is the intellectual property of Florian Michael (aka. EnZaXD), + * any use (be it private or public, be it copying or using for own use, be it publishing or modifying) of this + * file / project is prohibited. It requires in that use a written permission with official signature of the owner + * "Florian Michael". "Florian Michael" receives the right to control and manage this file / project. This right is not + * cancelled by copying or removing the license and in case of violation a criminal consequence is to be expected. + * The owner "Florian Michael" is free to change this license. The creator assumes no responsibility for any infringements + * that have arisen, are arising or will arise from this project / file. If this licence is used anywhere, + * the latest version published by the author Florian Michael (aka EnZaXD) always applies automatically. + * + * Changelog: + * v1.0: + * Added License + * v1.1: + * Ownership withdrawn + * v1.2: + * Version-independent validity and automatic renewal + */ + +package de.florianmichael.viafabricplus_visual.injection.mixin; + +import de.florianmichael.viafabricplus_visual.ViaFabricPlusVisual; +import net.minecraft.client.gui.hud.ChatHud; +import net.minecraft.client.gui.hud.MessageIndicator; +import net.minecraft.client.gui.screen.ChatScreen; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(ChatScreen.class) +public class MixinChatScreen { + + @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/ChatHud;getIndicatorAt(DD)Lnet/minecraft/client/gui/hud/MessageIndicator;")) + public MessageIndicator removeIndicator(ChatHud instance, double mouseX, double mouseY) { + if (ViaFabricPlusVisual.hideSignatureIndicator.getValue()) { + return null; + } + return instance.getIndicatorAt(mouseX, mouseY); + } +} diff --git a/ViaFabricPlus-Visual/src/main/java/de/florianmichael/viafabricplus_visual/injection/mixin/MixinClientPlayNetworkHandler.java b/ViaFabricPlus-Visual/src/main/java/de/florianmichael/viafabricplus_visual/injection/mixin/MixinClientPlayNetworkHandler.java new file mode 100644 index 00000000..4a73613c --- /dev/null +++ b/ViaFabricPlus-Visual/src/main/java/de/florianmichael/viafabricplus_visual/injection/mixin/MixinClientPlayNetworkHandler.java @@ -0,0 +1,38 @@ +/** + * --FLORIAN MICHAEL PRIVATE LICENCE v1.2-- + * + * This file / project is protected and is the intellectual property of Florian Michael (aka. EnZaXD), + * any use (be it private or public, be it copying or using for own use, be it publishing or modifying) of this + * file / project is prohibited. It requires in that use a written permission with official signature of the owner + * "Florian Michael". "Florian Michael" receives the right to control and manage this file / project. This right is not + * cancelled by copying or removing the license and in case of violation a criminal consequence is to be expected. + * The owner "Florian Michael" is free to change this license. The creator assumes no responsibility for any infringements + * that have arisen, are arising or will arise from this project / file. If this licence is used anywhere, + * the latest version published by the author Florian Michael (aka EnZaXD) always applies automatically. + * + * Changelog: + * v1.0: + * Added License + * v1.1: + * Ownership withdrawn + * v1.2: + * Version-independent validity and automatic renewal + */ + +package de.florianmichael.viafabricplus_visual.injection.mixin; + +import de.florianmichael.viafabricplus_visual.ViaFabricPlusVisual; +import net.minecraft.client.network.ClientPlayNetworkHandler; +import net.minecraft.network.packet.s2c.play.ServerMetadataS2CPacket; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(ClientPlayNetworkHandler.class) +public class MixinClientPlayNetworkHandler { + + @Redirect(method = "onServerMetadata", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/packet/s2c/play/ServerMetadataS2CPacket;isSecureChatEnforced()Z")) + public boolean removeSecureChatWarning(ServerMetadataS2CPacket instance) { + return instance.isSecureChatEnforced() || ViaFabricPlusVisual.disableSecureChatWarning.getValue(); + } +} diff --git a/ViaFabricPlus-Visual/src/main/java/de/florianmichael/viafabricplus_visual/injection/mixin/MixinClientPlayerEntity.java b/ViaFabricPlus-Visual/src/main/java/de/florianmichael/viafabricplus_visual/injection/mixin/MixinClientPlayerEntity.java new file mode 100644 index 00000000..f8547e18 --- /dev/null +++ b/ViaFabricPlus-Visual/src/main/java/de/florianmichael/viafabricplus_visual/injection/mixin/MixinClientPlayerEntity.java @@ -0,0 +1,46 @@ +/** + * --FLORIAN MICHAEL PRIVATE LICENCE v1.2-- + * + * This file / project is protected and is the intellectual property of Florian Michael (aka. EnZaXD), + * any use (be it private or public, be it copying or using for own use, be it publishing or modifying) of this + * file / project is prohibited. It requires in that use a written permission with official signature of the owner + * "Florian Michael". "Florian Michael" receives the right to control and manage this file / project. This right is not + * cancelled by copying or removing the license and in case of violation a criminal consequence is to be expected. + * The owner "Florian Michael" is free to change this license. The creator assumes no responsibility for any infringements + * that have arisen, are arising or will arise from this project / file. If this licence is used anywhere, + * the latest version published by the author Florian Michael (aka EnZaXD) always applies automatically. + * + * Changelog: + * v1.0: + * Added License + * v1.1: + * Ownership withdrawn + * v1.2: + * Version-independent validity and automatic renewal + */ + +package de.florianmichael.viafabricplus_visual.injection.mixin; + +import com.mojang.authlib.GameProfile; +import de.florianmichael.viafabricplus_visual.ViaFabricPlusVisual; +import de.florianmichael.viafabricplus_visual.definition.ArmorPointsDefinition; +import net.minecraft.client.network.AbstractClientPlayerEntity; +import net.minecraft.client.network.ClientPlayerEntity; +import net.minecraft.client.world.ClientWorld; +import org.spongepowered.asm.mixin.Mixin; + +@Mixin(ClientPlayerEntity.class) +public class MixinClientPlayerEntity extends AbstractClientPlayerEntity { + + public MixinClientPlayerEntity(ClientWorld world, GameProfile profile) { + super(world, profile); + } + + @Override + public int getArmor() { + if (ViaFabricPlusVisual.emulateArmorHud.getValue()) { + return ArmorPointsDefinition.sum(); + } + return super.getArmor(); + } +} diff --git a/ViaFabricPlus-Visual/src/main/java/de/florianmichael/viafabricplus_visual/injection/mixin/MixinItemRenderer.java b/ViaFabricPlus-Visual/src/main/java/de/florianmichael/viafabricplus_visual/injection/mixin/MixinItemRenderer.java new file mode 100644 index 00000000..775e85ee --- /dev/null +++ b/ViaFabricPlus-Visual/src/main/java/de/florianmichael/viafabricplus_visual/injection/mixin/MixinItemRenderer.java @@ -0,0 +1,50 @@ +/** + * --FLORIAN MICHAEL PRIVATE LICENCE v1.2-- + * + * This file / project is protected and is the intellectual property of Florian Michael (aka. EnZaXD), + * any use (be it private or public, be it copying or using for own use, be it publishing or modifying) of this + * file / project is prohibited. It requires in that use a written permission with official signature of the owner + * "Florian Michael". "Florian Michael" receives the right to control and manage this file / project. This right is not + * cancelled by copying or removing the license and in case of violation a criminal consequence is to be expected. + * The owner "Florian Michael" is free to change this license. The creator assumes no responsibility for any infringements + * that have arisen, are arising or will arise from this project / file. If this licence is used anywhere, + * the latest version published by the author Florian Michael (aka EnZaXD) always applies automatically. + * + * Changelog: + * v1.0: + * Added License + * v1.1: + * Ownership withdrawn + * v1.2: + * Version-independent validity and automatic renewal + */ + +package de.florianmichael.viafabricplus_visual.injection.mixin; + +import de.florianmichael.viafabricplus_visual.ViaFabricPlusVisual; +import net.minecraft.client.render.item.ItemModels; +import net.minecraft.client.render.item.ItemRenderer; +import net.minecraft.client.render.model.BakedModel; +import net.minecraft.entity.LivingEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.world.World; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(ItemRenderer.class) +public class MixinItemRenderer { + + @Shadow @Final private ItemModels models; + + @Inject(method = "getModel", at = @At("HEAD"), cancellable = true) + public void removeModel(ItemStack stack, World world, LivingEntity entity, int seed, CallbackInfoReturnable cir) { + if (ViaFabricPlusVisual.replacePetrifiedOakSlab.getValue() && world != null /* world is null in gui rendering */ && stack.isOf(Items.PETRIFIED_OAK_SLAB)) { + cir.setReturnValue(this.models.getModelManager().getMissingModel()); + } + } +} diff --git a/ViaFabricPlus-Visual/src/main/resources/fabric.mod.json b/ViaFabricPlus-Visual/src/main/resources/fabric.mod.json new file mode 100644 index 00000000..a99d77c9 --- /dev/null +++ b/ViaFabricPlus-Visual/src/main/resources/fabric.mod.json @@ -0,0 +1,35 @@ +{ + "schemaVersion": 1, + "id": "viafabricplus-visual", + "version": "${version}", + + "name": "ViaFabricPlus Visual", + "description": " ViaFabricPlus addon which adds visual fixes", + "authors": [ + "FlorianMichael", + "EnZaXD", + "JesseUwU" + ], + "contact": { + "homepage": "https://github.com/FlorianMichael/", + "sources": "https://github.com/FlorianMichael/ViaFabricPlus" + }, + "entrypoints": { + "client": [ + "de.florianmichael.viafabricplus_visual.ViaFabricPlusVisual" + ] + }, + "license": "CC0-1.0", + "environment": "*", + "mixins": [ + "viafabricplus-visual.mixins.json" + ], + "depends": { + "fabricloader": ">=0.14.11", + "minecraft": "~1.19.3", + "java": ">=17" + }, + "suggests": { + "another-mod": "*" + } +} diff --git a/ViaFabricPlus-Visual/src/main/resources/viafabricplus-visual.mixins.json b/ViaFabricPlus-Visual/src/main/resources/viafabricplus-visual.mixins.json new file mode 100644 index 00000000..9a07e38b --- /dev/null +++ b/ViaFabricPlus-Visual/src/main/resources/viafabricplus-visual.mixins.json @@ -0,0 +1,18 @@ +{ + "required": true, + "minVersion": "0.8", + "package": "de.florianmichael.viafabricplus_visual.injection.mixin", + "compatibilityLevel": "JAVA_17", + "mixins": [ + ], + "injectors": { + "defaultRequire": 1 + }, + "client": [ + "MixinChatHud", + "MixinChatScreen", + "MixinClientPlayerEntity", + "MixinClientPlayNetworkHandler", + "MixinItemRenderer" + ] +} diff --git a/build.gradle b/build.gradle index 87e7e2b8..579ad02c 100644 --- a/build.gradle +++ b/build.gradle @@ -9,15 +9,17 @@ archivesBaseName = project.archives_base_name version = project.mod_version group = project.maven_group -repositories { - mavenCentral() - maven { - name = "Jitpack" - url = "https://jitpack.io" - } - maven { - name = "ViaVersion" - url "https://repo.viaversion.com" +allprojects { + repositories { + mavenCentral() + maven { + name = "Jitpack" + url = "https://jitpack.io" + } + maven { + name = "ViaVersion" + url "https://repo.viaversion.com" + } } } @@ -63,3 +65,27 @@ jar { rename { "${it}_${project.archivesBaseName}" } } } + + +tasks.register("installAddons") { + group archivesBaseName + dependsOn "build" + doLast { + File base = file(".") + base.listFiles().each { + if (it.name.startsWith("ViaFabricPlus-") && it.isDirectory()) { + String addonName = it.name.toLowerCase() + "-" + project(it.name).version + ".jar" + File build = new File(it, "build" + File.separator + "libs" + File.separator + addonName) + File modDest = new File(base, "run" + File.separator + "mods" + File.separator + addonName) + if(build.exists()) { + if (modDest.delete()) + println "Deleted old $addonName" + else + println "Failed to delete old $addonName version" + if (build.renameTo(modDest)) + println "Copied $addonName" + } + } + } + } +} diff --git a/gradle.properties b/gradle.properties index 7937b1fb..b81e4b58 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,7 +7,7 @@ loader_version=0.14.14 mod_version=1.0.0 maven_group=de.florianmichael -archives_base_name=every-protocol +archives_base_name=viafabricplus vialoadingbase_version=15f55e6b3e viaversion_version=4.6.0-23w07a-SNAPSHOT diff --git a/settings.gradle b/settings.gradle index f7854b3c..3f5033ba 100644 --- a/settings.gradle +++ b/settings.gradle @@ -8,3 +8,5 @@ pluginManagement { gradlePluginPortal() } } +include 'ViaFabricPlus-Visual' + diff --git a/src/main/java/de/florianmichael/viafabricplus/ViaFabricPlus.java b/src/main/java/de/florianmichael/viafabricplus/ViaFabricPlus.java index 42faf192..8735938d 100644 --- a/src/main/java/de/florianmichael/viafabricplus/ViaFabricPlus.java +++ b/src/main/java/de/florianmichael/viafabricplus/ViaFabricPlus.java @@ -58,7 +58,7 @@ import java.util.List; * - Add ViaFabricPlus-Emulation */ public class ViaFabricPlus { - public final static File RUN_DIRECTORY = new File(".viafabricplus"); + public final static File RUN_DIRECTORY = new File("ViaFabricPlus"); public final static AttributeKey LOCAL_USER_CONNECTION = AttributeKey.newInstance("viafabricplus-via-connection"); private final static ViaFabricPlus self = new ViaFabricPlus(); diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/vialegacy/MixinProtocol1_8to1_7_6_10.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/vialegacy/MixinProtocol1_8to1_7_6_10.java index 0c56e48b..57f6a80c 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/vialegacy/MixinProtocol1_8to1_7_6_10.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/vialegacy/MixinProtocol1_8to1_7_6_10.java @@ -15,7 +15,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(Protocol1_8to1_7_6_10.class) +@Mixin(value = Protocol1_8to1_7_6_10.class, remap = false) public class MixinProtocol1_8to1_7_6_10 extends AbstractProtocol { @Inject(method = "registerPackets", at = @At("RETURN")) diff --git a/src/main/java/de/florianmichael/viafabricplus/value/impl/BooleanValue.java b/src/main/java/de/florianmichael/viafabricplus/value/impl/BooleanValue.java index 3caa4ed1..af53dc89 100644 --- a/src/main/java/de/florianmichael/viafabricplus/value/impl/BooleanValue.java +++ b/src/main/java/de/florianmichael/viafabricplus/value/impl/BooleanValue.java @@ -37,6 +37,8 @@ public class BooleanValue extends AbstractValue { @Override public void read(JsonObject object) { + if (!object.has(getName())) return; + setValue(object.get(getName()).getAsBoolean()); } } diff --git a/src/main/java/de/florianmichael/viafabricplus/value/impl/ProtocolSyncBooleanValue.java b/src/main/java/de/florianmichael/viafabricplus/value/impl/ProtocolSyncBooleanValue.java index 260cb545..7ec851d0 100644 --- a/src/main/java/de/florianmichael/viafabricplus/value/impl/ProtocolSyncBooleanValue.java +++ b/src/main/java/de/florianmichael/viafabricplus/value/impl/ProtocolSyncBooleanValue.java @@ -49,6 +49,7 @@ public class ProtocolSyncBooleanValue extends AbstractValue { @Override public void read(JsonObject object) { + if (!object.has(getName())) return; final JsonObject valueNode = object.get(getName()).getAsJsonObject(); setValue(valueNode.get("value").getAsBoolean());