From 8176ee26335a9c24096f35d171bd1aa4ed26f31d Mon Sep 17 00:00:00 2001 From: Atsuihsio <842960157@qq.com> Date: Tue, 1 Oct 2024 14:40:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=98=B2=E5=BC=B9=E6=8F=92?= =?UTF-8?q?=E6=9D=BF=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../b69ee8a2655365569b979911c0440daa8c470ac2 | 3 +- .../models/item/armor_plate.json | 6 ++ .../datagen/ModItemModelProvider.java | 2 + .../event/LivingEventHandler.java | 11 ++- .../mcreator/superbwarfare/init/ModItems.java | 1 + .../superbwarfare/item/ArmorPlate.java | 69 ++++++++++++++++++ .../superbwarfare/item/HandGrenade.java | 4 + .../superbwarfare/item/RgoGrenade.java | 4 + .../assets/superbwarfare/lang/en_us.json | 2 + .../assets/superbwarfare/lang/zh_cn.json | 2 + .../textures/item/armor_plate.png | Bin 0 -> 334 bytes .../recipes/armor_plate_crafting.json | 27 +++++++ 12 files changed, 129 insertions(+), 2 deletions(-) create mode 100644 src/generated/resources/assets/superbwarfare/models/item/armor_plate.json create mode 100644 src/main/java/net/mcreator/superbwarfare/item/ArmorPlate.java create mode 100644 src/main/resources/assets/superbwarfare/textures/item/armor_plate.png create mode 100644 src/main/resources/data/superbwarfare/recipes/armor_plate_crafting.json diff --git a/src/generated/resources/.cache/b69ee8a2655365569b979911c0440daa8c470ac2 b/src/generated/resources/.cache/b69ee8a2655365569b979911c0440daa8c470ac2 index 84bfffdb1..dad68fefb 100644 --- a/src/generated/resources/.cache/b69ee8a2655365569b979911c0440daa8c470ac2 +++ b/src/generated/resources/.cache/b69ee8a2655365569b979911c0440daa8c470ac2 @@ -1,8 +1,9 @@ -// 1.20.1 2024-09-30T20:14:30.9400448 Item Models: superbwarfare +// 1.20.1 2024-10-01T13:07:54.2773833 Item Models: superbwarfare 13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/aa_12_blueprint.json 13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/ak_47_blueprint.json c993bddc0db9453ffbefa59f9ac9a74dba909038 assets/superbwarfare/models/item/ancient_cpu.json 4b8fe8fbe5e64c3449ad539317254e4ed7188411 assets/superbwarfare/models/item/ap_head.json +9a20bdee844ad4f2556250e0eca7a2575cafd712 assets/superbwarfare/models/item/armor_plate.json 984c08ca6f6893a15721a85e30118f9e32c65c7f assets/superbwarfare/models/item/barbed_wire.json 13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/bocek_blueprint.json 1e5b4637c3787516305dd3d1598f401a5e78a954 assets/superbwarfare/models/item/cemented_carbide_action.json diff --git a/src/generated/resources/assets/superbwarfare/models/item/armor_plate.json b/src/generated/resources/assets/superbwarfare/models/item/armor_plate.json new file mode 100644 index 000000000..4bf81fa0f --- /dev/null +++ b/src/generated/resources/assets/superbwarfare/models/item/armor_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "superbwarfare:item/armor_plate" + } +} \ No newline at end of file diff --git a/src/main/java/net/mcreator/superbwarfare/datagen/ModItemModelProvider.java b/src/main/java/net/mcreator/superbwarfare/datagen/ModItemModelProvider.java index 96ad1577e..b05fd46cf 100644 --- a/src/main/java/net/mcreator/superbwarfare/datagen/ModItemModelProvider.java +++ b/src/main/java/net/mcreator/superbwarfare/datagen/ModItemModelProvider.java @@ -85,6 +85,8 @@ public class ModItemModelProvider extends ItemModelProvider { simpleItem(ModItems.EPIC_MATERIAL_PACK); simpleItem(ModItems.LEGENDARY_MATERIAL_PACK); + simpleItem(ModItems.ARMOR_PLATE); + // armor simpleItem(ModItems.RU_HELMET_6B47); diff --git a/src/main/java/net/mcreator/superbwarfare/event/LivingEventHandler.java b/src/main/java/net/mcreator/superbwarfare/event/LivingEventHandler.java index 1b7002308..c39ac7cb3 100644 --- a/src/main/java/net/mcreator/superbwarfare/event/LivingEventHandler.java +++ b/src/main/java/net/mcreator/superbwarfare/event/LivingEventHandler.java @@ -103,7 +103,16 @@ public class LivingEventHandler { damage *= 1 - 0.2 * Mth.clamp(entity.getAttributeValue(ModAttributes.BULLET_RESISTANCE.get()), 0, 1); } - event.setAmount((float) damage); + ItemStack armor = entity.getItemBySlot(EquipmentSlot.CHEST); + + double armorValue = 0; + + if (armor.getItem() != ItemStack.EMPTY.getItem()) { + armorValue = armor.getOrCreateTag().getDouble("ArmorPlate"); + armor.getOrCreateTag().putDouble("ArmorPlate", Math.max(armor.getOrCreateTag().getDouble("ArmorPlate") - damage, 0)); + } + + event.setAmount((float)(Math.max(damage - armorValue, 0))); if (entity instanceof TargetEntity && sourceEntity instanceof Player player) { player.displayClientMessage(Component.literal("Damage:" + new DecimalFormat("##.#").format(damage) + diff --git a/src/main/java/net/mcreator/superbwarfare/init/ModItems.java b/src/main/java/net/mcreator/superbwarfare/init/ModItems.java index 8d642e011..b9f3421a6 100644 --- a/src/main/java/net/mcreator/superbwarfare/init/ModItems.java +++ b/src/main/java/net/mcreator/superbwarfare/init/ModItems.java @@ -125,6 +125,7 @@ public class ModItems { public static final RegistryObject KNIFE = ITEMS.register("knife", Knife::new); public static final RegistryObject HAMMER = ITEMS.register("hammer", Hammer::new); public static final RegistryObject CROWBAR = ITEMS.register("crowbar", Crowbar::new); + public static final RegistryObject ARMOR_PLATE = ITEMS.register("armor_plate", ArmorPlate::new); public static final RegistryObject RU_HELMET_6B47 = ITEMS.register("ru_helmet_6b47", RuHelmet6b47::new); public static final RegistryObject RU_CHEST_6B43 = ITEMS.register("ru_chest_6b43", RuChest6b43::new); public static final RegistryObject US_HELMET_PASTG = ITEMS.register("us_helmet_pastg", UsHelmetPastg::new); diff --git a/src/main/java/net/mcreator/superbwarfare/item/ArmorPlate.java b/src/main/java/net/mcreator/superbwarfare/item/ArmorPlate.java new file mode 100644 index 000000000..e665430c7 --- /dev/null +++ b/src/main/java/net/mcreator/superbwarfare/item/ArmorPlate.java @@ -0,0 +1,69 @@ +package net.mcreator.superbwarfare.item; + + +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.UseAnim; +import net.minecraft.world.level.Level; +import org.jetbrains.annotations.NotNull; + +public class ArmorPlate extends Item { + public ArmorPlate() { + super(new Item.Properties()); + } + + @Override + public @NotNull InteractionResultHolder use(Level worldIn, Player playerIn, InteractionHand handIn) { + ItemStack stack = playerIn.getItemInHand(handIn); + + ItemStack armor = playerIn.getItemBySlot(EquipmentSlot.CHEST); + + if (armor.getItem() != ItemStack.EMPTY.getItem() && armor.getOrCreateTag().getDouble("armorPlate") < 50) { + playerIn.startUsingItem(handIn); + return InteractionResultHolder.consume(stack); + } + + return InteractionResultHolder.fail(stack); + } + + @Override + public @NotNull UseAnim getUseAnimation(@NotNull ItemStack stack) { + return UseAnim.BOW; + } + + @Override + public ItemStack finishUsingItem(ItemStack pStack, Level pLevel, LivingEntity pLivingEntity) { + if (!pLevel.isClientSide) { + + ItemStack armor = pLivingEntity.getItemBySlot(EquipmentSlot.CHEST); + + if (armor.getItem() != ItemStack.EMPTY.getItem()) { + armor.getOrCreateTag().putDouble("ArmorPlate", armor.getOrCreateTag().getDouble("ArmorPlate") + 50); + } + + if (pLivingEntity instanceof ServerPlayer serverPlayer) { + serverPlayer.level().playSound(null, serverPlayer.getOnPos(), SoundEvents.ARMOR_EQUIP_IRON, SoundSource.PLAYERS, 0.5f, 1); + } + + if (pLivingEntity instanceof Player player && !player.isCreative()) { + pStack.shrink(1); + } + } + + return super.finishUsingItem(pStack, pLevel, pLivingEntity); + } + + @Override + public int getUseDuration(ItemStack stack) { + return 30; + } + +} diff --git a/src/main/java/net/mcreator/superbwarfare/item/HandGrenade.java b/src/main/java/net/mcreator/superbwarfare/item/HandGrenade.java index 98d277a55..a49f27303 100644 --- a/src/main/java/net/mcreator/superbwarfare/item/HandGrenade.java +++ b/src/main/java/net/mcreator/superbwarfare/item/HandGrenade.java @@ -79,6 +79,10 @@ public class HandGrenade extends Item { if (pLivingEntity instanceof Player player) { player.getCooldowns().addCooldown(pStack.getItem(), 25); } + + if (pLivingEntity instanceof Player player && !player.isCreative()) { + pStack.shrink(1); + } } return super.finishUsingItem(pStack, pLevel, pLivingEntity); diff --git a/src/main/java/net/mcreator/superbwarfare/item/RgoGrenade.java b/src/main/java/net/mcreator/superbwarfare/item/RgoGrenade.java index 9377de231..651ba27fb 100644 --- a/src/main/java/net/mcreator/superbwarfare/item/RgoGrenade.java +++ b/src/main/java/net/mcreator/superbwarfare/item/RgoGrenade.java @@ -79,6 +79,10 @@ public class RgoGrenade extends Item { if (pLivingEntity instanceof Player player) { player.getCooldowns().addCooldown(pStack.getItem(), 20); } + + if (pLivingEntity instanceof Player player && !player.isCreative()) { + pStack.shrink(1); + } } return super.finishUsingItem(pStack, pLevel, pLivingEntity); diff --git a/src/main/resources/assets/superbwarfare/lang/en_us.json b/src/main/resources/assets/superbwarfare/lang/en_us.json index 35dd45609..e3dcfdea8 100644 --- a/src/main/resources/assets/superbwarfare/lang/en_us.json +++ b/src/main/resources/assets/superbwarfare/lang/en_us.json @@ -202,6 +202,8 @@ "item.superbwarfare.scheelite": "Raw Galena", "item.superbwarfare.raw_silver": "Raw Silver", + "item.superbwarfare.armor_plate": "Armor Plate", + "item.superbwarfare.ru_helmet_6b47": "Russia 6b47 Helmet", "item.superbwarfare.ru_chest_6b43": "Russia 6b43 Chest", "item.superbwarfare.us_helmet_pastg": "US PASTG Helmet", diff --git a/src/main/resources/assets/superbwarfare/lang/zh_cn.json b/src/main/resources/assets/superbwarfare/lang/zh_cn.json index 297027031..0690ebdaa 100644 --- a/src/main/resources/assets/superbwarfare/lang/zh_cn.json +++ b/src/main/resources/assets/superbwarfare/lang/zh_cn.json @@ -202,6 +202,8 @@ "item.superbwarfare.scheelite": "白钨矿", "item.superbwarfare.raw_silver": "粗银", + "item.superbwarfare.armor_plate": "防弹插板", + "item.superbwarfare.ru_helmet_6b47": "俄罗斯6B47头盔", "item.superbwarfare.ru_chest_6b43": "俄罗斯6B43防弹胸甲", "item.superbwarfare.us_helmet_pastg": "美制PASTG头盔", diff --git a/src/main/resources/assets/superbwarfare/textures/item/armor_plate.png b/src/main/resources/assets/superbwarfare/textures/item/armor_plate.png new file mode 100644 index 0000000000000000000000000000000000000000..582378be58ab52974c518880fceb5746ef50fb4b GIT binary patch literal 334 zcmV-U0kQsxP)LQ@gH(AP^kEV5toz#=^w^|0QE>r6y`2u$D5apaM$k8)_+fU#etE%EL0)I`7_fW!d9GK@B%d(_n45>*e zK|~Nj@W}3?OiHlU;yllb5E1b*#=scEZ(n;5iv*!S4EtjbzVLnD0|4?oe