From 8b66fa7a670a16209f702949475938e879ac24e2 Mon Sep 17 00:00:00 2001 From: VT-14 Date: Fri, 25 Aug 2023 13:42:14 -0400 Subject: [PATCH 1/2] Implement the Gilded Upgrade The upgrade works, but is only obtainable by spawning it in (Commands or the Creative Tab). Still need to work out a way to Train the upgrade. I'm planning on a certain number of Piglin Trades, but am not sure how to properly track that (can't find an event for it). --- .../resources/assets/bloodmagic/lang/en_us.json | 1 + .../bloodmagic/common/data/GeneratorLanguage.java | 1 + .../bloodmagic/common/item/ItemLivingArmor.java | 14 +++++++++----- .../bloodmagic/core/LivingArmorRegistrar.java | 4 +++- .../data/bloodmagic/living_armor/gilded.json | 6 ++++++ 5 files changed, 20 insertions(+), 6 deletions(-) create mode 100644 src/main/resources/data/bloodmagic/living_armor/gilded.json diff --git a/src/generated/resources/assets/bloodmagic/lang/en_us.json b/src/generated/resources/assets/bloodmagic/lang/en_us.json index f8d39db29..73f499877 100644 --- a/src/generated/resources/assets/bloodmagic/lang/en_us.json +++ b/src/generated/resources/assets/bloodmagic/lang/en_us.json @@ -419,6 +419,7 @@ "living_upgrade.bloodmagic.experienced": "Experienced", "living_upgrade.bloodmagic.fall_protect": "Soft Fall", "living_upgrade.bloodmagic.fire_resist": "Gift of Ignis", + "living_upgrade.bloodmagic.gilded": "Gilded", "living_upgrade.bloodmagic.grave_digger": "Grave Digger", "living_upgrade.bloodmagic.grim_reaper": "Grim Reaper's Sprint", "living_upgrade.bloodmagic.health": "Healthy", diff --git a/src/main/java/wayoftime/bloodmagic/common/data/GeneratorLanguage.java b/src/main/java/wayoftime/bloodmagic/common/data/GeneratorLanguage.java index bd37526a2..93c1413ba 100644 --- a/src/main/java/wayoftime/bloodmagic/common/data/GeneratorLanguage.java +++ b/src/main/java/wayoftime/bloodmagic/common/data/GeneratorLanguage.java @@ -445,6 +445,7 @@ protected void addTranslations() add("living_upgrade.bloodmagic.repair", "Repairing"); add("living_upgrade.bloodmagic.curios_socket", "Socketed"); add("living_upgrade.bloodmagic.diamond_protect", "Brilliance"); + add("living_upgrade.bloodmagic.gilded", "Gilded"); add("living_upgrade.bloodmagic.slowness", "Limp Leg"); add("living_upgrade.bloodmagic.crippled_arm", "Crippled Arm"); diff --git a/src/main/java/wayoftime/bloodmagic/common/item/ItemLivingArmor.java b/src/main/java/wayoftime/bloodmagic/common/item/ItemLivingArmor.java index e4a8ee739..c00c43e8c 100644 --- a/src/main/java/wayoftime/bloodmagic/common/item/ItemLivingArmor.java +++ b/src/main/java/wayoftime/bloodmagic/common/item/ItemLivingArmor.java @@ -7,17 +7,13 @@ import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; -import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.*; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeModifier; import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.EquipmentSlot; -import net.minecraft.world.item.ArmorItem; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.CreativeModeTab; -import net.minecraft.world.item.ItemStack; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.core.NonNullList; import net.minecraft.network.chat.Component; @@ -197,4 +193,12 @@ public boolean hasElytraUpgrade(ItemStack stack, LivingEntity entity) else return false; } + + public boolean makesPiglinsNeutral(ItemStack stack, LivingEntity wearer) + { + if (stack.getItem() instanceof ItemLivingArmor && wearer instanceof Player && LivingUtil.hasFullSet((Player) wearer)) { + return LivingStats.fromPlayer((Player) wearer, true).getLevel(LivingArmorRegistrar.UPGRADE_GILDED.get().getKey()) > 0; + } + return false; + } } diff --git a/src/main/java/wayoftime/bloodmagic/core/LivingArmorRegistrar.java b/src/main/java/wayoftime/bloodmagic/core/LivingArmorRegistrar.java index 929556804..4d74d58da 100644 --- a/src/main/java/wayoftime/bloodmagic/core/LivingArmorRegistrar.java +++ b/src/main/java/wayoftime/bloodmagic/core/LivingArmorRegistrar.java @@ -63,6 +63,7 @@ public class LivingArmorRegistrar def.put("curios_socket", BloodMagic.rl("curios_socket")); def.put("diamond_protect", BloodMagic.rl("diamond_protect")); def.put("repair", BloodMagic.rl("repair")); + def.put("gilded", BloodMagic.rl("gilded")); def.put("downgrade/quenched", BloodMagic.rl("downgrade/quenched")); def.put("downgrade/storm_trooper", BloodMagic.rl("downgrade/storm_trooper")); def.put("downgrade/battle_hungry", BloodMagic.rl("downgrade/battle_hungry")); @@ -145,7 +146,7 @@ public class LivingArmorRegistrar attributeMap.put(Attributes.ATTACK_DAMAGE, new AttributeModifier(uuid, "Damage Modifier 3", upgrade.getBonusValue("damage", level).doubleValue(), AttributeModifier.Operation.ADDITION)); })); public static final LivingUpgradeRegistryObject UPGRADE_REPAIR = UPGRADES.register("repair", () -> parseDefinition("repair")); - + public static final LivingUpgradeRegistryObject UPGRADE_GILDED = UPGRADES.register("gilded", () -> parseDefinition("gilded")); public static final LivingUpgradeRegistryObject DOWNGRADE_QUENCHED = UPGRADES.register("downgrade/quenched", () -> parseDefinition("downgrade/quenched").asDowngrade()); public static final LivingUpgradeRegistryObject DOWNGRADE_STORM_TROOPER = UPGRADES.register("downgrade/storm_trooper", () -> parseDefinition("downgrade/storm_trooper").asDowngrade()); public static final LivingUpgradeRegistryObject DOWNGRADE_BATTLE_HUNGRY = UPGRADES.register("downgrade/battle_hungry", () -> parseDefinition("downgrade/battle_hungry").asDowngrade()); @@ -198,6 +199,7 @@ public static void register() registerUpgrade(UPGRADE_DIAMOND.get()); registerUpgrade(UPGRADE_MELEE_DAMAGE.get()); registerUpgrade(UPGRADE_REPAIR.get()); + registerUpgrade(UPGRADE_GILDED.get()); registerUpgrade(DOWNGRADE_QUENCHED.get()); registerUpgrade(DOWNGRADE_STORM_TROOPER.get()); registerUpgrade(DOWNGRADE_BATTLE_HUNGRY.get()); diff --git a/src/main/resources/data/bloodmagic/living_armor/gilded.json b/src/main/resources/data/bloodmagic/living_armor/gilded.json new file mode 100644 index 000000000..ed5799f63 --- /dev/null +++ b/src/main/resources/data/bloodmagic/living_armor/gilded.json @@ -0,0 +1,6 @@ +{ + "id": "bloodmagic:gilded", + "levels": [ + { "xp": 1, "cost": 5 } + ] +} \ No newline at end of file From b600ee0df25986f74e23435275b045847123f30d Mon Sep 17 00:00:00 2001 From: VT-14 Date: Wed, 6 Sep 2023 15:10:34 -0400 Subject: [PATCH 2/2] Implemented Gilded Upgrade Training and Documentation Trained by directly giving a Piglin a Gold Ingot while wearing a full set of Living Armor. --- .../util/handler/event/GenericHandler.java | 13 +++++++++++++ .../living_equipment/armor_upgrades/gilded.json | 15 +++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 src/main/resources/assets/bloodmagic/patchouli_books/guide/en_us/entries/alchemy_array/living_equipment/armor_upgrades/gilded.json diff --git a/src/main/java/wayoftime/bloodmagic/util/handler/event/GenericHandler.java b/src/main/java/wayoftime/bloodmagic/util/handler/event/GenericHandler.java index 9eb1393e8..698bfbb07 100644 --- a/src/main/java/wayoftime/bloodmagic/util/handler/event/GenericHandler.java +++ b/src/main/java/wayoftime/bloodmagic/util/handler/event/GenericHandler.java @@ -13,6 +13,7 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.goal.MeleeAttackGoal; import net.minecraft.world.entity.ai.goal.target.TargetGoal; +import net.minecraft.world.entity.monster.piglin.Piglin; import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.projectile.Arrow; import net.minecraft.world.entity.projectile.ThrowableProjectile; @@ -1190,4 +1191,16 @@ public static int getChargeTime(ItemStack stack) int i = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.QUICK_CHARGE, stack); return i == 0 ? 25 : 25 - 5 * i; } + + @SubscribeEvent + public void onEntityInteract(PlayerInteractEvent.EntityInteract event){ + if (event.getTarget() instanceof Piglin && event.getItemStack().is(Items.GOLD_INGOT)) + { + Player player = event.getEntity(); + if (LivingUtil.hasFullSet(player)) + { + LivingUtil.applyNewExperience(player, LivingArmorRegistrar.UPGRADE_GILDED.get(), 1); + } + } + } } diff --git a/src/main/resources/assets/bloodmagic/patchouli_books/guide/en_us/entries/alchemy_array/living_equipment/armor_upgrades/gilded.json b/src/main/resources/assets/bloodmagic/patchouli_books/guide/en_us/entries/alchemy_array/living_equipment/armor_upgrades/gilded.json new file mode 100644 index 000000000..783d30686 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/patchouli_books/guide/en_us/entries/alchemy_array/living_equipment/armor_upgrades/gilded.json @@ -0,0 +1,15 @@ +{ + "name": "Gilded", + "icon": "minecraft:golden_chestplate", + "category": "bloodmagic:alchemy_array/living_equipment/armor_upgrades", + "pages": [ + { + "type": "patchouli:text", + "text": "Effect: Passivises Piglins as if you were wearing Golden Armor.$(br2)Trained by: Giving a Piglin a $(item)Gold Ingot$(). You must give it to them directly, it cannot be dropped on the ground.$(br2)Maximum level: 1" + }, + { + "type": "bloodmagic:living_armour_upgrade_table", + "upgrade": "bloodmagic:gilded" + } + ] +} \ No newline at end of file