From d45064cd0af51dfea671de6a860364c5b7622b3d Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Thu, 8 Aug 2024 15:09:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A8=A1=E7=BB=84=E5=8F=AF=E4=BB=A5=E5=8D=87?= =?UTF-8?q?=E7=BA=A7=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../superbwarfare/event/TempEventHandler.java | 4 +++- .../superbwarfare/perk/PerkHelper.java | 20 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/mcreator/superbwarfare/event/TempEventHandler.java b/src/main/java/net/mcreator/superbwarfare/event/TempEventHandler.java index e9be47cab..72ca526a0 100644 --- a/src/main/java/net/mcreator/superbwarfare/event/TempEventHandler.java +++ b/src/main/java/net/mcreator/superbwarfare/event/TempEventHandler.java @@ -7,6 +7,7 @@ import net.minecraftforge.event.AnvilUpdateEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; +// TODO 移除此类,功能移动到枪械重铸台 @Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.FORGE) public class TempEventHandler { @@ -18,7 +19,8 @@ public class TempEventHandler { if (right.getItem() instanceof PerkItem perkItem) { ItemStack output = left.copy(); - PerkHelper.setPerk(output, perkItem.getPerk()); + int level = PerkHelper.getItemPerkLevel(perkItem.getPerk(), output); + PerkHelper.setPerk(output, perkItem.getPerk(), level + 1); event.setOutput(output); event.setCost(10); diff --git a/src/main/java/net/mcreator/superbwarfare/perk/PerkHelper.java b/src/main/java/net/mcreator/superbwarfare/perk/PerkHelper.java index 40e60fa31..049d41438 100644 --- a/src/main/java/net/mcreator/superbwarfare/perk/PerkHelper.java +++ b/src/main/java/net/mcreator/superbwarfare/perk/PerkHelper.java @@ -52,6 +52,26 @@ public class PerkHelper { return 0; } + var tag = stack.getTag(); + if (tag == null) { + return 0; + } + + var tagPerk = tag.getCompound(TAG_PERK); + if (!tagPerk.contains(perk.type.getName())) { + return 0; + } + + var pt = tagPerk.getCompound(perk.type.getName()); + ResourceLocation id = getPerkId(perk); + if (id == null) { + return 0; + } + + if (!pt.getString(TAG_PERK_ID).equals(makeId(id))) { + return 0; + } + return getPerkLevel(getPerkTag(stack, perk.type)); }