实现了升级点数返还功能,修复了刷模组的bug

This commit is contained in:
17146 2024-08-14 15:57:37 +08:00
parent e98005c3a6
commit 46f1f0f73a

View file

@ -150,15 +150,25 @@ public class ReforgingTableMenu extends AbstractContainerMenu {
@Override @Override
public void removed(Player pPlayer) { public void removed(Player pPlayer) {
super.removed(pPlayer); this.access.execute((level, pos) -> {
this.access.execute((p_39796_, p_39797_) -> { ItemStack gun = this.container.getItem(INPUT_SLOT);
ItemStack copy = gun.copy();
for (int i = 0; i < this.container.getContainerSize(); ++i) { for (int i = 0; i < this.container.getContainerSize(); ++i) {
ItemStack itemstack = this.container.getItem(i); ItemStack itemstack = this.container.getItem(i);
if (itemstack.getItem() instanceof PerkItem perkItem) {
if (!copy.isEmpty() && PerkHelper.getItemPerkLevel(perkItem.getPerk(), copy) > 0) {
continue;
}
}
if (!itemstack.isEmpty()) { if (!itemstack.isEmpty()) {
pPlayer.getInventory().placeItemBackInInventory(itemstack); pPlayer.getInventory().placeItemBackInInventory(itemstack);
} }
this.container.removeItemNoUpdate(i);
} }
this.clearContainer(pPlayer, this.container);
}); });
} }
@ -267,12 +277,15 @@ public class ReforgingTableMenu extends AbstractContainerMenu {
case DAMAGE -> this.damagePerkLevel.set(0); case DAMAGE -> this.damagePerkLevel.set(0);
} }
if (PerkHelper.getItemPerkLevel(perkItem.getPerk(), gun) <= 0) { int level = PerkHelper.getItemPerkLevel(perkItem.getPerk(), gun);
if (level <= 0) {
return; return;
} }
ItemStack output = gun.copy(); ItemStack output = gun.copy();
PerkHelper.removePerkByType(output, perkItem.getPerk().type); PerkHelper.removePerkByType(output, perkItem.getPerk().type);
output.getOrCreateTag().putDouble("UpgradePoint", Math.min(100, level + output.getOrCreateTag().getDouble("UpgradePoint")));
this.container.setItem(INPUT_SLOT, output); this.container.setItem(INPUT_SLOT, output);
this.container.setChanged(); this.container.setChanged();