From 0bbcf5251e2c8147fa535a6907bfe78207440efd Mon Sep 17 00:00:00 2001 From: Martin Prokoph Date: Sun, 7 Jul 2024 21:02:14 +0200 Subject: [PATCH] Update to work on newer ViaVersion servers - There will also not be any delay on those servers --- .../swordblocking/SwordBlockingClient.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/main/java/eu/midnightdust/swordblocking/SwordBlockingClient.java b/src/main/java/eu/midnightdust/swordblocking/SwordBlockingClient.java index 1e8ecca..f88a995 100644 --- a/src/main/java/eu/midnightdust/swordblocking/SwordBlockingClient.java +++ b/src/main/java/eu/midnightdust/swordblocking/SwordBlockingClient.java @@ -2,8 +2,15 @@ package eu.midnightdust.swordblocking; import eu.midnightdust.swordblocking.config.SwordBlockingConfig; import net.fabricmc.api.ClientModInitializer; +import net.minecraft.component.DataComponentTypes; import net.minecraft.entity.LivingEntity; -import net.minecraft.item.*; +import net.minecraft.item.AxeItem; +import net.minecraft.item.Item; +import net.minecraft.item.MaceItem; +import net.minecraft.item.ShieldItem; +import net.minecraft.item.SwordItem; + +import java.util.Objects; public class SwordBlockingClient implements ClientModInitializer { @Override @@ -12,7 +19,7 @@ public class SwordBlockingClient implements ClientModInitializer { } public static boolean isWeaponBlocking(LivingEntity entity) { - return entity.isUsingItem() && canWeaponBlock(entity); + return entity.isUsingItem() && (canWeaponBlock(entity) || isBlockingOnViaVersion(entity)); } public static boolean canWeaponBlock(LivingEntity entity) { @@ -23,4 +30,8 @@ public class SwordBlockingClient implements ClientModInitializer { return ((mainItem instanceof SwordItem || mainItem instanceof AxeItem || mainItem instanceof MaceItem) && offItem instanceof ShieldItem) || ((offItem instanceof SwordItem || offItem instanceof AxeItem || offItem instanceof MaceItem) && mainItem instanceof ShieldItem); } + public static boolean isBlockingOnViaVersion(LivingEntity entity) { + Item item = entity.getMainHandStack().getItem() instanceof SwordItem ? entity.getMainHandStack().getItem() : entity.getOffHandStack().getItem(); + return item instanceof SwordItem && item.getComponents() != null && item.getComponents().contains(DataComponentTypes.FOOD) && Objects.requireNonNull(item.getComponents().get(DataComponentTypes.FOOD)).eatSeconds() == 3600; + } }