From 1a570d1c08115dbc9e545067690b8e555da9dada Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Thu, 8 Aug 2024 01:02:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0PerkItem=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mcreator/superbwarfare/init/ModItems.java | 9 +++++ .../mcreator/superbwarfare/init/ModPerks.java | 12 +++--- .../mcreator/superbwarfare/item/PerkItem.java | 40 ++++++++++++++++++- .../superbwarfare/item/gun/GunItem.java | 5 +++ .../net/mcreator/superbwarfare/perk/Perk.java | 4 +- .../assets/superbwarfare/lang/en_us.json | 8 ++++ .../assets/superbwarfare/lang/zh_cn.json | 8 ++++ 7 files changed, 77 insertions(+), 9 deletions(-) diff --git a/src/main/java/net/mcreator/superbwarfare/init/ModItems.java b/src/main/java/net/mcreator/superbwarfare/init/ModItems.java index 36dfc61e5..865dad630 100644 --- a/src/main/java/net/mcreator/superbwarfare/init/ModItems.java +++ b/src/main/java/net/mcreator/superbwarfare/init/ModItems.java @@ -186,10 +186,19 @@ public class ModItems { return BLOCKS.register(block.getId().getPath(), () -> new BlockItem(block.get(), new Item.Properties())); } + /** + * Perk Items + */ + public static final DeferredRegister PERKS = DeferredRegister.create(ForgeRegistries.ITEMS, ModUtils.MODID); + + public static final RegistryObject KILL_CLIP = PERKS.register("kill_clip", () -> new PerkItem(ModPerks.KILL_CLIP)); + + public static void register(IEventBus bus) { ITEMS.register(bus); GUNS.register(bus); AMMO.register(bus); BLOCKS.register(bus); + PERKS.register(bus); } } diff --git a/src/main/java/net/mcreator/superbwarfare/init/ModPerks.java b/src/main/java/net/mcreator/superbwarfare/init/ModPerks.java index 0cf474d1b..8147b3c80 100644 --- a/src/main/java/net/mcreator/superbwarfare/init/ModPerks.java +++ b/src/main/java/net/mcreator/superbwarfare/init/ModPerks.java @@ -20,10 +20,10 @@ public class ModPerks { public static final DeferredRegister PERKS = DeferredRegister.create(new ResourceLocation(ModUtils.MODID, "perk"), ModUtils.MODID); - public static final RegistryObject FOURTH_TIMES_CHARM = PERKS.register("fourth_times_charm", () -> new Perk(Perk.Type.FUNCTIONAL)); - public static final RegistryObject GUTSHOT_STRAIGHT = PERKS.register("gutshot_straight", () -> new Perk(Perk.Type.DAMAGE)); - public static final RegistryObject HEAL_CLIP = PERKS.register("heal_clip", () -> new Perk(Perk.Type.FUNCTIONAL)); - public static final RegistryObject KILL_CLIP = PERKS.register("kill_clip", () -> new Perk(Perk.Type.DAMAGE)); - public static final RegistryObject KILLING_TALLY = PERKS.register("killing_tally", () -> new Perk(Perk.Type.DAMAGE)); - public static final RegistryObject MONSTER_HUNTER = PERKS.register("monster_hunter", () -> new Perk(Perk.Type.DAMAGE)); + public static final RegistryObject FOURTH_TIMES_CHARM = PERKS.register("fourth_times_charm", () -> new Perk("fourth_times_charm", Perk.Type.FUNCTIONAL)); + public static final RegistryObject GUTSHOT_STRAIGHT = PERKS.register("gutshot_straight", () -> new Perk("gutshot_straight", Perk.Type.DAMAGE)); + public static final RegistryObject HEAL_CLIP = PERKS.register("heal_clip", () -> new Perk("heal_clip", Perk.Type.FUNCTIONAL)); + public static final RegistryObject KILL_CLIP = PERKS.register("kill_clip", () -> new Perk("kill_clip", Perk.Type.DAMAGE)); + public static final RegistryObject KILLING_TALLY = PERKS.register("killing_tally", () -> new Perk("killing_tally", Perk.Type.DAMAGE)); + public static final RegistryObject MONSTER_HUNTER = PERKS.register("monster_hunter", () -> new Perk("monster_hunter", Perk.Type.DAMAGE)); } diff --git a/src/main/java/net/mcreator/superbwarfare/item/PerkItem.java b/src/main/java/net/mcreator/superbwarfare/item/PerkItem.java index 6a0555ca0..dde4a8f3e 100644 --- a/src/main/java/net/mcreator/superbwarfare/item/PerkItem.java +++ b/src/main/java/net/mcreator/superbwarfare/item/PerkItem.java @@ -1,10 +1,46 @@ package net.mcreator.superbwarfare.item; +import net.mcreator.superbwarfare.perk.Perk; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.Level; +import org.jetbrains.annotations.Nullable; + +import java.util.List; +import java.util.function.Supplier; public class PerkItem extends Item { + private final Supplier perk; - public PerkItem(Properties pProperties) { - super(pProperties); + public PerkItem(Supplier perk) { + super(new Properties()); + this.perk = perk; + } + + public PerkItem(Supplier perk, Rarity rarity) { + super(new Properties().rarity(rarity)); + this.perk = perk; + } + + public Perk getPerk() { + return this.perk.get(); + } + + @Override + public void appendHoverText(ItemStack stack, @Nullable Level level, List tooltips, TooltipFlag isAdvanced) { + ChatFormatting chatFormatting = switch (this.getPerk().type.getSlot()) { + case 0 -> ChatFormatting.YELLOW; + case 1 -> ChatFormatting.GREEN; + default -> ChatFormatting.RED; + }; + + tooltips.add(Component.translatable("perk.superbwarfare." + this.getPerk().descriptionId + ".desc").withStyle(ChatFormatting.GRAY)); + tooltips.add(Component.literal("")); + tooltips.add(Component.translatable("perk.superbwarfare.slot").withStyle(ChatFormatting.GOLD) + .append(Component.translatable("perk.superbwarfare.slot_" + this.getPerk().type.getSlot()).withStyle(chatFormatting))); } } diff --git a/src/main/java/net/mcreator/superbwarfare/item/gun/GunItem.java b/src/main/java/net/mcreator/superbwarfare/item/gun/GunItem.java index de5be2d47..6c0b1100f 100644 --- a/src/main/java/net/mcreator/superbwarfare/item/gun/GunItem.java +++ b/src/main/java/net/mcreator/superbwarfare/item/gun/GunItem.java @@ -5,6 +5,7 @@ import net.mcreator.superbwarfare.init.ModEnchantments; import net.mcreator.superbwarfare.init.ModItems; import net.mcreator.superbwarfare.init.ModTags; import net.mcreator.superbwarfare.network.ModVariables; +import net.mcreator.superbwarfare.perk.Perk; import net.mcreator.superbwarfare.tools.EnchantmentCategoryTool; import net.mcreator.superbwarfare.tools.GunsTool; import net.mcreator.superbwarfare.tools.ItemNBTTool; @@ -176,4 +177,8 @@ public abstract class GunItem extends Item { } } } + + public boolean canApplyPerk(ItemStack stack, Perk perk, int slot) { + return perk.type.getSlot() == slot; + } } diff --git a/src/main/java/net/mcreator/superbwarfare/perk/Perk.java b/src/main/java/net/mcreator/superbwarfare/perk/Perk.java index 67f6e2aa9..6729cb036 100644 --- a/src/main/java/net/mcreator/superbwarfare/perk/Perk.java +++ b/src/main/java/net/mcreator/superbwarfare/perk/Perk.java @@ -1,9 +1,11 @@ package net.mcreator.superbwarfare.perk; public class Perk { + public String descriptionId; public Type type; - public Perk(Type type) { + public Perk(String descriptionId, Type type) { + this.descriptionId = descriptionId; this.type = type; } diff --git a/src/main/resources/assets/superbwarfare/lang/en_us.json b/src/main/resources/assets/superbwarfare/lang/en_us.json index c94f628a6..6e2dbf380 100644 --- a/src/main/resources/assets/superbwarfare/lang/en_us.json +++ b/src/main/resources/assets/superbwarfare/lang/en_us.json @@ -175,6 +175,14 @@ "item.superbwarfare.galena": "Raw Galena", "item.superbwarfare.scheelite": "Raw Galena", + "item.superbwarfare.kill_clip": "Kill Clip", + + "perk.superbwarfare.slot": "Type: ", + "perk.superbwarfare.slot_0": "Ammo Perk", + "perk.superbwarfare.slot_1": "Functional Perk", + "perk.superbwarfare.slot_2": "Damage Perk", + "perk.superbwarfare.kill_clip.desc": "Increases the damage of weapon after dealing a final blow", + "death.attack.gunfire": "%1$s was shoot by %2$s", "death.attack.gunfire.entity": "%1$s was shoot by %2$s", "death.attack.gunfire.item": "%1$s was shoot by %2$s using %3$s", diff --git a/src/main/resources/assets/superbwarfare/lang/zh_cn.json b/src/main/resources/assets/superbwarfare/lang/zh_cn.json index cdf220533..da1318b7d 100644 --- a/src/main/resources/assets/superbwarfare/lang/zh_cn.json +++ b/src/main/resources/assets/superbwarfare/lang/zh_cn.json @@ -175,6 +175,14 @@ "item.superbwarfare.galena": "粗方铅矿", "item.superbwarfare.scheelite": "白钨矿", + "item.superbwarfare.kill_clip": "杀戮弹匣", + + "perk.superbwarfare.slot": "类型: ", + "perk.superbwarfare.slot_0": "子弹模组", + "perk.superbwarfare.slot_1": "功能模组", + "perk.superbwarfare.slot_2": "伤害模组", + "perk.superbwarfare.kill_clip.desc": "完成击杀后填装可提升武器伤害", + "death.attack.gunfire": "%1$s被%2$s射爆了", "death.attack.gunfire.entity": "%1$s被%2$s射爆了", "death.attack.gunfire.item": "%1$s被%2$s用%3$s射爆了",