@@ -0,0 +1,51 @@
|
||||
--- a/net/minecraft/world/item/component/Consumable.java
|
||||
+++ b/net/minecraft/world/item/component/Consumable.java
|
||||
@@ -29,6 +29,11 @@
|
||||
import net.minecraft.world.level.World;
|
||||
import net.minecraft.world.level.gameevent.GameEvent;
|
||||
|
||||
+// CraftBukkit start
|
||||
+import net.minecraft.world.item.Items;
|
||||
+import org.bukkit.event.entity.EntityPotionEffectEvent;
|
||||
+// CraftBukkit end
|
||||
+
|
||||
public record Consumable(float consumeSeconds, ItemUseAnimation animation, Holder<SoundEffect> sound, boolean hasConsumeParticles, List<ConsumeEffect> onConsumeEffects) {
|
||||
|
||||
public static final float DEFAULT_CONSUME_SECONDS = 1.6F;
|
||||
@@ -69,8 +74,19 @@
|
||||
consumablelistener.onConsume(world, entityliving, itemstack, this);
|
||||
});
|
||||
if (!world.isClientSide) {
|
||||
+ // CraftBukkit start
|
||||
+ EntityPotionEffectEvent.Cause cause;
|
||||
+ if (itemstack.is(Items.MILK_BUCKET)) {
|
||||
+ cause = EntityPotionEffectEvent.Cause.MILK;
|
||||
+ } else if (itemstack.is(Items.POTION)) {
|
||||
+ cause = EntityPotionEffectEvent.Cause.POTION_DRINK;
|
||||
+ } else {
|
||||
+ cause = EntityPotionEffectEvent.Cause.FOOD;
|
||||
+ }
|
||||
+
|
||||
this.onConsumeEffects.forEach((consumeeffect) -> {
|
||||
- consumeeffect.apply(world, itemstack, entityliving);
|
||||
+ consumeeffect.apply(world, itemstack, entityliving, cause);
|
||||
+ // CraftBukkit end
|
||||
});
|
||||
}
|
||||
|
||||
@@ -79,6 +95,15 @@
|
||||
return itemstack;
|
||||
}
|
||||
|
||||
+ // CraftBukkit start
|
||||
+ public void cancelUsingItem(net.minecraft.server.level.EntityPlayer entityplayer, ItemStack itemstack) {
|
||||
+ itemstack.getAllOfType(ConsumableListener.class).forEach((consumablelistener) -> {
|
||||
+ consumablelistener.cancelUsingItem(entityplayer, itemstack);
|
||||
+ });
|
||||
+ entityplayer.server.getPlayerList().sendActivePlayerEffects(entityplayer);
|
||||
+ }
|
||||
+ // CraftBukkit end
|
||||
+
|
||||
public boolean canConsume(EntityLiving entityliving, ItemStack itemstack) {
|
||||
FoodInfo foodinfo = (FoodInfo) itemstack.get(DataComponents.FOOD);
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
--- a/net/minecraft/world/item/component/ConsumableListener.java
|
||||
+++ b/net/minecraft/world/item/component/ConsumableListener.java
|
||||
@@ -7,4 +7,6 @@
|
||||
public interface ConsumableListener {
|
||||
|
||||
void onConsume(World world, EntityLiving entityliving, ItemStack itemstack, Consumable consumable);
|
||||
+
|
||||
+ default void cancelUsingItem(net.minecraft.server.level.EntityPlayer entityplayer, ItemStack itemstack) {} // CraftBukkit
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
--- a/net/minecraft/world/item/component/DeathProtection.java
|
||||
+++ b/net/minecraft/world/item/component/DeathProtection.java
|
||||
@@ -15,6 +15,10 @@
|
||||
import net.minecraft.world.item.consume_effects.ClearAllStatusEffectsConsumeEffect;
|
||||
import net.minecraft.world.item.consume_effects.ConsumeEffect;
|
||||
|
||||
+// CraftBukkit start
|
||||
+import org.bukkit.event.entity.EntityPotionEffectEvent;
|
||||
+// CraftBukkit end
|
||||
+
|
||||
public record DeathProtection(List<ConsumeEffect> deathEffects) {
|
||||
|
||||
public static final Codec<DeathProtection> CODEC = RecordCodecBuilder.create((instance) -> {
|
||||
@@ -29,7 +33,7 @@
|
||||
while (iterator.hasNext()) {
|
||||
ConsumeEffect consumeeffect = (ConsumeEffect) iterator.next();
|
||||
|
||||
- consumeeffect.apply(entityliving.level(), itemstack, entityliving);
|
||||
+ consumeeffect.apply(entityliving.level(), itemstack, entityliving, EntityPotionEffectEvent.Cause.TOTEM); // CraftBukkit
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
--- a/net/minecraft/world/item/component/SuspiciousStewEffects.java
|
||||
+++ b/net/minecraft/world/item/component/SuspiciousStewEffects.java
|
||||
@@ -29,7 +29,7 @@
|
||||
public static final StreamCodec<RegistryFriendlyByteBuf, SuspiciousStewEffects> STREAM_CODEC = SuspiciousStewEffects.a.STREAM_CODEC.apply(ByteBufCodecs.list()).map(SuspiciousStewEffects::new, SuspiciousStewEffects::effects);
|
||||
|
||||
public SuspiciousStewEffects withEffectAdded(SuspiciousStewEffects.a suspicioussteweffects_a) {
|
||||
- return new SuspiciousStewEffects(SystemUtils.copyAndAdd(this.effects, (Object) suspicioussteweffects_a));
|
||||
+ return new SuspiciousStewEffects(SystemUtils.copyAndAdd(this.effects, suspicioussteweffects_a)); // CraftBukkit - decompile error
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -44,6 +44,15 @@
|
||||
|
||||
}
|
||||
|
||||
+ // CraftBukkit start
|
||||
+ @Override
|
||||
+ public void cancelUsingItem(net.minecraft.server.level.EntityPlayer entityplayer, ItemStack itemstack) {
|
||||
+ for (SuspiciousStewEffects.a suspicioussteweffects_a : this.effects) {
|
||||
+ entityplayer.connection.send(new net.minecraft.network.protocol.game.PacketPlayOutRemoveEntityEffect(entityplayer.getId(), suspicioussteweffects_a.effect()));
|
||||
+ }
|
||||
+ }
|
||||
+ // CraftBukkit end
|
||||
+
|
||||
@Override
|
||||
public void addToTooltip(Item.b item_b, Consumer<IChatBaseComponent> consumer, TooltipFlag tooltipflag) {
|
||||
if (tooltipflag.isCreative()) {
|
||||
Reference in New Issue
Block a user