net.minecraft.world.item.consume_effects

This commit is contained in:
Noah van der Aa
2024-12-14 18:27:10 +01:00
parent 1f128f76c7
commit 52d26db5a0
10 changed files with 85 additions and 135 deletions

View File

@@ -0,0 +1,19 @@
--- a/net/minecraft/world/item/consume_effects/ApplyStatusEffectsConsumeEffect.java
+++ b/net/minecraft/world/item/consume_effects/ApplyStatusEffectsConsumeEffect.java
@@ -46,14 +_,14 @@
}
@Override
- public boolean apply(Level level, ItemStack stack, LivingEntity entity) {
+ public boolean apply(Level level, ItemStack stack, LivingEntity entity, org.bukkit.event.entity.EntityPotionEffectEvent.Cause cause) { // CraftBukkit
if (entity.getRandom().nextFloat() >= this.probability) {
return false;
} else {
boolean flag = false;
for (MobEffectInstance mobEffectInstance : this.effects) {
- if (entity.addEffect(new MobEffectInstance(mobEffectInstance))) {
+ if (entity.addEffect(new MobEffectInstance(mobEffectInstance), cause)) { // CraftBukkit
flag = true;
}
}

View File

@@ -0,0 +1,14 @@
--- a/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java
+++ b/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java
@@ -18,7 +_,9 @@
}
@Override
- public boolean apply(Level level, ItemStack stack, LivingEntity entity) {
- return entity.removeAllEffects();
+ // CraftBukkit start
+ public boolean apply(Level level, ItemStack stack, LivingEntity entity, org.bukkit.event.entity.EntityPotionEffectEvent.Cause cause) {
+ return entity.removeAllEffects(cause);
+ // CraftBukkit end
}
}

View File

@@ -0,0 +1,19 @@
--- a/net/minecraft/world/item/consume_effects/ConsumeEffect.java
+++ b/net/minecraft/world/item/consume_effects/ConsumeEffect.java
@@ -19,7 +_,15 @@
ConsumeEffect.Type<? extends ConsumeEffect> getType();
- boolean apply(Level level, ItemStack stack, LivingEntity entity);
+ // CraftBukkit start
+ default boolean apply(Level level, ItemStack stack, LivingEntity entity) {
+ return this.apply(level, stack, entity, org.bukkit.event.entity.EntityPotionEffectEvent.Cause.UNKNOWN);
+ }
+
+ default boolean apply(Level level, ItemStack stack, LivingEntity entity, org.bukkit.event.entity.EntityPotionEffectEvent.Cause cause) {
+ return this.apply(level, stack, entity);
+ }
+ // CraftBukkit end
public record Type<T extends ConsumeEffect>(MapCodec<T> codec, StreamCodec<RegistryFriendlyByteBuf, T> streamCodec) {
public static final ConsumeEffect.Type<ApplyStatusEffectsConsumeEffect> APPLY_EFFECTS = register(

View File

@@ -0,0 +1,16 @@
--- a/net/minecraft/world/item/consume_effects/RemoveStatusEffectsConsumeEffect.java
+++ b/net/minecraft/world/item/consume_effects/RemoveStatusEffectsConsumeEffect.java
@@ -35,11 +_,11 @@
}
@Override
- public boolean apply(Level level, ItemStack stack, LivingEntity entity) {
+ public boolean apply(Level level, ItemStack stack, LivingEntity entity, org.bukkit.event.entity.EntityPotionEffectEvent.Cause cause) { // CraftBukkit
boolean flag = false;
for (Holder<MobEffect> holder : this.effects) {
- if (entity.removeEffect(holder)) {
+ if (entity.removeEffect(holder, cause)) { // CraftBukkit
flag = true;
}
}

View File

@@ -0,0 +1,17 @@
--- a/net/minecraft/world/item/consume_effects/TeleportRandomlyConsumeEffect.java
+++ b/net/minecraft/world/item/consume_effects/TeleportRandomlyConsumeEffect.java
@@ -55,7 +_,13 @@
}
Vec3 vec3 = entity.position();
- if (entity.randomTeleport(d, d1, d2, true)) {
+ // CraftBukkit start - handle canceled status of teleport event
+ java.util.Optional<Boolean> status = entity.randomTeleport(d, d1, d2, true, org.bukkit.event.player.PlayerTeleportEvent.TeleportCause.CHORUS_FRUIT);
+
+ // teleport event was canceled, no more tries
+ if (!status.isPresent()) break;
+ if (status.get()) {
+ // CraftBukkit end
level.gameEvent(GameEvent.TELEPORT, vec3, GameEvent.Context.of(entity));
SoundSource soundSource;
SoundEvent soundEvent;