From 91ee15ac02bb9f8223f55e089597f5c462c3bf5b Mon Sep 17 00:00:00 2001 From: Starexify Date: Wed, 20 Nov 2024 22:21:36 +0100 Subject: [PATCH] 1.0.0 --- .../assets/big_swords_addon/lang/en_us.json | 8 +++--- .../big_swords_addon/data/LangProvider.java | 4 +-- .../event/ShieldMechanics.java | 26 ++++++++++++------- 3 files changed, 23 insertions(+), 15 deletions(-) diff --git a/src/generated/resources/assets/big_swords_addon/lang/en_us.json b/src/generated/resources/assets/big_swords_addon/lang/en_us.json index a7ff195..181cc87 100644 --- a/src/generated/resources/assets/big_swords_addon/lang/en_us.json +++ b/src/generated/resources/assets/big_swords_addon/lang/en_us.json @@ -1,10 +1,10 @@ { - "big_swords_addon:gilded_lonsdaleite_shield.perk": "Special Perk: ", - "big_swords_addon:gilded_lonsdaleite_shield.weakness": "Weakness: ", + "big_swords_addon:gilded_lonsdaleite_shield.perk": "Special Perk: Shatterproof", + "big_swords_addon:gilded_lonsdaleite_shield.weakness": "Weakness: Defensive Overload", "big_swords_addon:gilded_titanium_shield.perk": "Special Perk: Titanic Slam", "big_swords_addon:gilded_titanium_shield.weakness": "Weakness: Heavy", - "big_swords_addon:lonsdaleite_shield.perk": "Special Perk: ", - "big_swords_addon:lonsdaleite_shield.weakness": "Weakness: ", + "big_swords_addon:lonsdaleite_shield.perk": "Special Perk: Shatterproof", + "big_swords_addon:lonsdaleite_shield.weakness": "Weakness: Defensive Overload", "big_swords_addon:titanium_shield.perk": "Special Perk: Titanic Slam", "big_swords_addon:titanium_shield.weakness": "Weakness: Heavy", "item.big_swords_addon.gilded_lonsdaleite_shield": "Gilded Lonsdaleite Shield", diff --git a/src/main/java/net/nova/big_swords_addon/data/LangProvider.java b/src/main/java/net/nova/big_swords_addon/data/LangProvider.java index 666ccad..30ef5f0 100644 --- a/src/main/java/net/nova/big_swords_addon/data/LangProvider.java +++ b/src/main/java/net/nova/big_swords_addon/data/LangProvider.java @@ -31,8 +31,8 @@ protected void addTranslations() { // Shields addShield(BCItems.TITANIUM_SHIELD, "Titanium Shield", "Special Perk: Titanic Slam", "Weakness: Heavy"); addShield(BCItems.GILDED_TITANIUM_SHIELD, "Gilded Titanium Shield", "Special Perk: Titanic Slam", "Weakness: Heavy"); - addShield(BCItems.LONSDALEITE_SHIELD, "Lonsdaleite Shield", "Special Perk: ", "Weakness: "); - addShield(BCItems.GILDED_LONSDALEITE_SHIELD, "Gilded Lonsdaleite Shield", "Special Perk: ", "Weakness: "); + addShield(BCItems.LONSDALEITE_SHIELD, "Lonsdaleite Shield", "Special Perk: Shatterproof", "Weakness: Defensive Overload"); + addShield(BCItems.GILDED_LONSDALEITE_SHIELD, "Gilded Lonsdaleite Shield", "Special Perk: Shatterproof", "Weakness: Defensive Overload"); } public void addShield(Supplier key, String name, String perk, String weakness) { diff --git a/src/main/java/net/nova/big_swords_addon/event/ShieldMechanics.java b/src/main/java/net/nova/big_swords_addon/event/ShieldMechanics.java index 53bca05..377b3ba 100644 --- a/src/main/java/net/nova/big_swords_addon/event/ShieldMechanics.java +++ b/src/main/java/net/nova/big_swords_addon/event/ShieldMechanics.java @@ -1,5 +1,7 @@ package net.nova.big_swords_addon.event; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.damagesource.DamageTypes; @@ -21,12 +23,14 @@ import java.util.List; import java.util.Random; +import java.util.UUID; import static net.nova.big_swords_addon.BigSwordsRAddon.MODID; @EventBusSubscriber(modid = MODID) public class ShieldMechanics { public static final ResourceLocation MOVEMENT_SPEED_ID = ResourceLocation.withDefaultNamespace("movement_speed"); + private static int consecutiveBlockCount = 0; @SubscribeEvent public static void onShieldBlock(LivingShieldBlockEvent event) { @@ -34,27 +38,31 @@ public static void onShieldBlock(LivingShieldBlockEvent event) { ItemStack shield = player.getUseItem(); Entity attacker = event.getDamageSource().getEntity(); DamageSource damageSource = event.getDamageSource(); - Level level = player.level(); - Entity sourceEntity = event.getDamageSource().getDirectEntity(); - float blockedDamage = event.getBlockedDamage(); - float shieldDamage = event.shieldDamage(); - double randomChance = Math.random(); - Random random = new Random(); + // Lonsdaleite Shields boolean isLonsdaleiteShield = shield.is(BCItems.LONSDALEITE_SHIELD); boolean isGildedLonsdaleiteShield = shield.is(BCItems.GILDED_LONSDALEITE_SHIELD); if ((isLonsdaleiteShield || isGildedLonsdaleiteShield)) { + // Perk if (attacker instanceof LivingEntity && (damageSource.is(DamageTypes.PLAYER_ATTACK) || damageSource.is(DamageTypes.MOB_ATTACK))) { event.setShieldDamage(0); - - // Prevent axes from putting the shield on cooldown if (attacker instanceof LivingEntity living) { ItemStack weapon = living.getMainHandItem(); if (weapon.getItem() instanceof AxeItem) { - event.setCanceled(true); + player.getCooldowns().removeCooldown(shield.getItem()); } } + + // Weakness + consecutiveBlockCount++; + int stunThreshold = isGildedLonsdaleiteShield ? 10 : 5; + if (consecutiveBlockCount >= stunThreshold) { + player.setNoActionTime(400); + player.setDeltaMovement(0, player.getDeltaMovement().y, 0); + player.displayClientMessage(Component.literal("You are stunned!").withStyle(ChatFormatting.RED), true); + consecutiveBlockCount = 0; + } } } }