From e98005c3a61198a59252ac09512c0b5d2ed4adfb Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Wed, 14 Aug 2024 00:45:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=87=8D=E9=93=B8=E5=8F=B0?= =?UTF-8?q?=E7=9A=84=E5=8D=87=E7=BA=A7=E7=82=B9=E6=95=B0=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../block/menu/ReforgingTableMenu.java | 47 ++++++++++++++++-- .../client/screens/ReforgingTableScreen.java | 40 +++++++++++++++ .../event/PlayerEventHandler.java | 1 + .../textures/gui/reforging_table.png | Bin 5127 -> 5172 bytes 4 files changed, 83 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/mcreator/superbwarfare/block/menu/ReforgingTableMenu.java b/src/main/java/net/mcreator/superbwarfare/block/menu/ReforgingTableMenu.java index 45d8028d3..25de1b7dd 100644 --- a/src/main/java/net/mcreator/superbwarfare/block/menu/ReforgingTableMenu.java +++ b/src/main/java/net/mcreator/superbwarfare/block/menu/ReforgingTableMenu.java @@ -7,6 +7,7 @@ import net.mcreator.superbwarfare.item.PerkItem; import net.mcreator.superbwarfare.item.gun.GunItem; import net.mcreator.superbwarfare.perk.Perk; import net.mcreator.superbwarfare.perk.PerkHelper; +import net.minecraft.util.Mth; import net.minecraft.world.Container; import net.minecraft.world.SimpleContainer; import net.minecraft.world.entity.player.Inventory; @@ -32,6 +33,7 @@ public class ReforgingTableMenu extends AbstractContainerMenu { public final DataSlot ammoPerkLevel = DataSlot.standalone(); public final DataSlot funcPerkLevel = DataSlot.standalone(); public final DataSlot damagePerkLevel = DataSlot.standalone(); + public final DataSlot upgradePoint = DataSlot.standalone(); public static final int X_OFFSET = 0; public static final int Y_OFFSET = 11; @@ -55,10 +57,12 @@ public class ReforgingTableMenu extends AbstractContainerMenu { this.ammoPerkLevel.set(0); this.funcPerkLevel.set(0); this.damagePerkLevel.set(0); + this.upgradePoint.set(0); this.addDataSlot(ammoPerkLevel); this.addDataSlot(funcPerkLevel); this.addDataSlot(damagePerkLevel); + this.addDataSlot(upgradePoint); this.addSlot(new InputSlot(container, INPUT_SLOT, 20, 22)); this.addSlot(new PerkSlot(container, AMMO_PERK_SLOT, Perk.Type.AMMO, 80, 25)); @@ -158,14 +162,39 @@ public class ReforgingTableMenu extends AbstractContainerMenu { }); } - public void setPerkLevel(Perk.Type type, boolean add) { + public void setPerkLevel(Perk.Type type, boolean upgrade) { + if (upgrade && this.upgradePoint.get() <= 0) { + return; + } + + if (!upgrade && this.upgradePoint.get() >= 100) { + return; + } + switch (type) { case AMMO -> - this.ammoPerkLevel.set(add ? Math.min(10, this.ammoPerkLevel.get() + 1) : Math.max(1, this.ammoPerkLevel.get() - 1)); + this.ammoPerkLevel.set(upgrade ? Math.min(10, this.ammoPerkLevel.get() + 1) : Math.max(1, this.ammoPerkLevel.get() - 1)); case FUNCTIONAL -> - this.funcPerkLevel.set(add ? Math.min(10, this.funcPerkLevel.get() + 1) : Math.max(1, this.funcPerkLevel.get() - 1)); + this.funcPerkLevel.set(upgrade ? Math.min(10, this.funcPerkLevel.get() + 1) : Math.max(1, this.funcPerkLevel.get() - 1)); case DAMAGE -> - this.damagePerkLevel.set(add ? Math.min(10, this.damagePerkLevel.get() + 1) : Math.max(1, this.damagePerkLevel.get() - 1)); + this.damagePerkLevel.set(upgrade ? Math.min(10, this.damagePerkLevel.get() + 1) : Math.max(1, this.damagePerkLevel.get() - 1)); + } + + this.upgradePoint.set(Mth.clamp(this.upgradePoint.get() + (upgrade ? -1 : 1), 0, 100)); + } + + public void handleUpgradePoint(ItemStack stack) { + if (!(stack.getItem() instanceof GunItem)) { + return; + } + + double oldPoint = stack.getOrCreateTag().getDouble("UpgradePoint"); + int point = (int) oldPoint; + int newPoint = this.upgradePoint.get(); + int delta = newPoint - point; + + if (delta != 0) { + stack.getOrCreateTag().putDouble("UpgradePoint", oldPoint + delta); } } @@ -208,9 +237,12 @@ public class ReforgingTableMenu extends AbstractContainerMenu { } } + handleUpgradePoint(result); + this.ammoPerkLevel.set(0); this.funcPerkLevel.set(0); this.damagePerkLevel.set(0); + this.upgradePoint.set(0); this.container.setItem(INPUT_SLOT, ItemStack.EMPTY); this.container.setItem(RESULT_SLOT, result); @@ -274,7 +306,8 @@ public class ReforgingTableMenu extends AbstractContainerMenu { return; } - this.container.setChanged(); + int point = (int) pStack.getOrCreateTag().getDouble("UpgradePoint"); + this.upgradePoint.set(Mth.clamp(point, 0, 100)); var ammoPerk = PerkHelper.getPerkByType(pStack, Perk.Type.AMMO); if (ammoPerk != null) { @@ -297,6 +330,7 @@ public class ReforgingTableMenu extends AbstractContainerMenu { damagePerkItem.ifPresent(registryObject -> this.container.setItem(DAMAGE_PERK_SLOT, registryObject.get().getDefaultInstance())); } + this.container.setChanged(); this.broadcastChanges(); } @@ -334,6 +368,9 @@ public class ReforgingTableMenu extends AbstractContainerMenu { } } + handleUpgradePoint(pStack); + this.upgradePoint.set(0); + this.container.setChanged(); } diff --git a/src/main/java/net/mcreator/superbwarfare/client/screens/ReforgingTableScreen.java b/src/main/java/net/mcreator/superbwarfare/client/screens/ReforgingTableScreen.java index 972074570..813f02bc8 100644 --- a/src/main/java/net/mcreator/superbwarfare/client/screens/ReforgingTableScreen.java +++ b/src/main/java/net/mcreator/superbwarfare/client/screens/ReforgingTableScreen.java @@ -56,6 +56,12 @@ public class ReforgingTableScreen extends AbstractContainerScreen 0) { pGuiGraphics.blit(TEXTURE, this.leftPos + 156, this.topPos + 31, 5 * damagePerkLevel - 5, 190, 5, 5, 200, 200); } + + var upgradePoint = ReforgingTableScreen.this.menu.upgradePoint.get(); + int pointG = upgradePoint / 10; + int pointS = upgradePoint % 10; + pGuiGraphics.blit(TEXTURE, this.leftPos + 43, this.topPos + 20, 51 + 5 * pointG, 178, 5, 5, 200, 200); + pGuiGraphics.blit(TEXTURE, this.leftPos + 47, this.topPos + 20, 51 + 5 * pointS, 178, 5, 5, 200, 200); } @Override @@ -133,6 +139,23 @@ public class ReforgingTableScreen extends AbstractContainerScreen { + if (ReforgingTableScreen.this.menu.ammoPerkLevel.get() >= 10) { + return; + } + } + case FUNCTIONAL -> { + if (ReforgingTableScreen.this.menu.funcPerkLevel.get() >= 10) { + return; + } + } + case DAMAGE -> { + if (ReforgingTableScreen.this.menu.damagePerkLevel.get() >= 10) { + return; + } + } + } ModUtils.PACKET_HANDLER.sendToServer(new SetPerkLevelMessage(type.ordinal(), true)); } @@ -162,6 +185,23 @@ public class ReforgingTableScreen extends AbstractContainerScreen { + if (ReforgingTableScreen.this.menu.ammoPerkLevel.get() <= 1) { + return; + } + } + case FUNCTIONAL -> { + if (ReforgingTableScreen.this.menu.funcPerkLevel.get() <= 1) { + return; + } + } + case DAMAGE -> { + if (ReforgingTableScreen.this.menu.damagePerkLevel.get() <= 1) { + return; + } + } + } ModUtils.PACKET_HANDLER.sendToServer(new SetPerkLevelMessage(type.ordinal(), false)); } diff --git a/src/main/java/net/mcreator/superbwarfare/event/PlayerEventHandler.java b/src/main/java/net/mcreator/superbwarfare/event/PlayerEventHandler.java index 5cb773b2c..70e6d58ea 100644 --- a/src/main/java/net/mcreator/superbwarfare/event/PlayerEventHandler.java +++ b/src/main/java/net/mcreator/superbwarfare/event/PlayerEventHandler.java @@ -246,6 +246,7 @@ public class PlayerEventHandler { if (tag.getDouble("damagetotal") >= tag.getDouble("exp2")) { tag.putDouble("exp1", (tag.getDouble("exp2"))); tag.putInt("level", tag.getInt("level") + 1); + tag.putDouble("UpgradePoint", tag.getDouble("UpgradePoint") + 0.2); } tag.putDouble("damagenow", (tag.getDouble("damagetotal") - tag.getDouble("exp1"))); tag.putDouble("damageneed", (tag.getDouble("exp2") - tag.getDouble("exp1"))); diff --git a/src/main/resources/assets/superbwarfare/textures/gui/reforging_table.png b/src/main/resources/assets/superbwarfare/textures/gui/reforging_table.png index 70d82b9b784e25bac5243f717001ed86c350e987..e1156fcd8faa568134de3e97b6f4ad66bfe02dab 100644 GIT binary patch literal 5172 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 GKKx&SkEXr=