added MendingReducer tweak
This commit is contained in:
@@ -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()
|
||||
);
|
||||
}
|
||||
}
|
@@ -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);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user