回滚撞击经验吸取

This commit is contained in:
Atsuihsio 2024-12-19 14:26:32 +08:00
parent ee36a54567
commit 01c90f1b47

View file

@ -740,23 +740,16 @@ public class LivingEventHandler {
public static void onLivingExperienceDrop(LivingExperienceDropEvent event) { public static void onLivingExperienceDrop(LivingExperienceDropEvent event) {
Player player = event.getAttackingPlayer(); Player player = event.getAttackingPlayer();
if (player == null) return; if (player == null) return;
DamageSource source = event.getAttackingPlayer().getLastDamageSource();
if (source == null) return;
if (player.getVehicle() instanceof IVehicleEntity && source.is(ModDamageTypes.VEHICLE_STRIKE)) {
player.giveExperiencePoints(event.getDroppedExperience());
event.setCanceled(true);
}
ItemStack stack = player.getMainHandItem(); ItemStack stack = player.getMainHandItem();
if (stack.is(ModTags.Items.GUN)) { if (!stack.is(ModTags.Items.GUN)) return;
int level = PerkHelper.getItemPerkLevel(ModPerks.POWERFUL_ATTRACTION.get(), stack); int level = PerkHelper.getItemPerkLevel(ModPerks.POWERFUL_ATTRACTION.get(), stack);
if (level > 0) { if (level > 0) {
player.giveExperiencePoints((int) (event.getDroppedExperience() * (0.8f + 0.2f * level))); player.giveExperiencePoints((int) (event.getDroppedExperience() * (0.8f + 0.2f * level)));
event.setCanceled(true); event.setCanceled(true);
} }
} }
}
public static void handlePlayerBeamReset(Player player) { public static void handlePlayerBeamReset(Player player) {
player.getCapability(ModCapabilities.LASER_CAPABILITY).ifPresent(LaserCapability.ILaserCapability::end); player.getCapability(ModCapabilities.LASER_CAPABILITY).ifPresent(LaserCapability.ILaserCapability::end);