added MendingReducer tweak

This commit is contained in:
2025-09-20 14:43:19 +02:00
parent 238df2feff
commit d38871eac9
2 changed files with 39 additions and 0 deletions

View File

@@ -0,0 +1,16 @@
package eu.mhsl.craftattack.spawn.craftattack.appliances.tweaks.mendingReducer;
import eu.mhsl.craftattack.spawn.core.appliance.Appliance;
import org.bukkit.event.Listener;
import org.jetbrains.annotations.NotNull;
import java.util.List;
public class MendingReducer extends Appliance {
@Override
protected @NotNull List<Listener> listeners() {
return List.of(
new MendingRepairListener()
);
}
}

View File

@@ -0,0 +1,23 @@
package eu.mhsl.craftattack.spawn.craftattack.appliances.tweaks.mendingReducer;
import eu.mhsl.craftattack.spawn.core.appliance.ApplianceListener;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerItemMendEvent;
public class MendingRepairListener extends ApplianceListener<MendingReducer> {
private static final double COST_MULTIPLIER = 2.0;
@EventHandler
public void onMendingRepair(PlayerItemMendEvent event) {
int baseConsumed = event.getConsumedExperience();
int orbExp = event.getExperienceOrb().getExperience();
int desiredTotal = (int) Math.ceil(baseConsumed * COST_MULTIPLIER);
int extraCost = Math.max(0, desiredTotal - baseConsumed);
int maxExtraPossible = Math.max(0, orbExp - baseConsumed);
int extraApplied = Math.min(extraCost, maxExtraPossible);
if (extraApplied > 0) event.getExperienceOrb().setExperience(orbExp - extraApplied);
}
}