mirror of
https://github.com/PaperMC/Paper.git
synced 2025-05-19 05:30:23 -07:00
75 lines
2.7 KiB
Java
75 lines
2.7 KiB
Java
package io.papermc.paper;
|
|
|
|
import io.papermc.paper.world.damagesource.CombatEntry;
|
|
import io.papermc.paper.world.damagesource.FallLocationType;
|
|
import io.papermc.paper.world.damagesource.PaperCombatEntryWrapper;
|
|
import io.papermc.paper.world.damagesource.PaperCombatTrackerWrapper;
|
|
import net.minecraft.Optionull;
|
|
import net.minecraft.world.damagesource.FallLocation;
|
|
import org.bukkit.block.Biome;
|
|
import org.bukkit.craftbukkit.block.CraftBiome;
|
|
import org.bukkit.craftbukkit.damage.CraftDamageEffect;
|
|
import org.bukkit.craftbukkit.damage.CraftDamageSource;
|
|
import org.bukkit.craftbukkit.entity.CraftLivingEntity;
|
|
import org.bukkit.damage.DamageEffect;
|
|
import org.bukkit.damage.DamageSource;
|
|
import org.bukkit.entity.LivingEntity;
|
|
import org.jspecify.annotations.NullMarked;
|
|
import org.jspecify.annotations.Nullable;
|
|
|
|
@NullMarked
|
|
public class PaperServerInternalAPIBridge implements InternalAPIBridge {
|
|
public static final PaperServerInternalAPIBridge INSTANCE = new PaperServerInternalAPIBridge();
|
|
|
|
@Override
|
|
public DamageEffect getDamageEffect(final String key) {
|
|
return CraftDamageEffect.getById(key);
|
|
}
|
|
|
|
@Override
|
|
public Biome constructLegacyCustomBiome() {
|
|
class Holder {
|
|
static final Biome LEGACY_CUSTOM = new CraftBiome.LegacyCustomBiomeImpl();
|
|
}
|
|
return Holder.LEGACY_CUSTOM;
|
|
}
|
|
|
|
@Override
|
|
public CombatEntry createCombatEntry(final LivingEntity entity, final DamageSource damageSource, final float damage) {
|
|
final net.minecraft.world.entity.LivingEntity mob = ((CraftLivingEntity) entity).getHandle();
|
|
final FallLocation fallLocation = FallLocation.getCurrentFallLocation(mob);
|
|
return createCombatEntry(
|
|
((CraftDamageSource) damageSource).getHandle(),
|
|
damage,
|
|
fallLocation,
|
|
(float) mob.fallDistance
|
|
);
|
|
}
|
|
|
|
@Override
|
|
public CombatEntry createCombatEntry(
|
|
final DamageSource damageSource,
|
|
final float damage,
|
|
@Nullable final FallLocationType fallLocationType,
|
|
final float fallDistance
|
|
) {
|
|
return createCombatEntry(
|
|
((CraftDamageSource) damageSource).getHandle(),
|
|
damage,
|
|
Optionull.map(fallLocationType, PaperCombatTrackerWrapper::paperToMinecraft),
|
|
fallDistance
|
|
);
|
|
}
|
|
|
|
private CombatEntry createCombatEntry(
|
|
final net.minecraft.world.damagesource.DamageSource damageSource,
|
|
final float damage,
|
|
final net.minecraft.world.damagesource.@Nullable FallLocation fallLocation,
|
|
final float fallDistance
|
|
) {
|
|
return new PaperCombatEntryWrapper(new net.minecraft.world.damagesource.CombatEntry(
|
|
damageSource, damage, fallLocation, fallDistance
|
|
));
|
|
}
|
|
}
|