c5a10665b8
Spigot still maintains some partial implementation of "tick skipping", a practice in which the MinecraftServer.currentTick field is updated not by an increment of one per actual tick, but instead set to System.currentTimeMillis() / 50. This behaviour means that the tracked tick may "skip" a tick value in case a previous tick took more than the expected 50ms. To compensate for this in important paths, spigot/craftbukkit implements "wall-time". Instead of incrementing/decrementing ticks on block entities/entities by one for each call to their tick() method, they instead increment/decrement important values, like an ItemEntity's age or pickupDelay, by the difference of `currentTick - lastTick`, where `lastTick` is the value of `currentTick` during the last tick() call. These "fixes" however do not play nicely with minecraft's simulation distance as entities/block entities implementing the above behaviour would "catch up" their values when moving from a non-ticking chunk to a ticking one as their `lastTick` value remains stuck on the last tick in a ticking chunk and hence lead to a large "catch up" once ticked again. Paper completely removes the "tick skipping" behaviour (See patch "Further-improve-server-tick-loop"), making the above precautions completely unnecessary, which also rids paper of the previous described incompatibility with non-ticking chunks.
59 Zeilen
3.8 KiB
Diff
59 Zeilen
3.8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com>
|
|
Date: Tue, 16 Aug 2022 19:44:55 +0200
|
|
Subject: [PATCH] Missing effect cause
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java
|
|
index 3dec72f407ca4af53ac5fe32f05326638af05474..01a0731e92d39c8718538244e34a271fb8717fc2 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java
|
|
@@ -401,7 +401,7 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder<Axolo
|
|
player.addEffect(new MobEffectInstance(MobEffects.REGENERATION, j, 0), this, org.bukkit.event.entity.EntityPotionEffectEvent.Cause.AXOLOTL); // CraftBukkit
|
|
}
|
|
|
|
- player.removeEffect(MobEffects.DIG_SLOWDOWN);
|
|
+ player.removeEffect(MobEffects.DIG_SLOWDOWN, org.bukkit.event.entity.EntityPotionEffectEvent.Cause.AXOLOTL); // Paper - Add missing effect cause
|
|
}
|
|
|
|
@Override
|
|
diff --git a/src/main/java/net/minecraft/world/item/HoneyBottleItem.java b/src/main/java/net/minecraft/world/item/HoneyBottleItem.java
|
|
index 483a24b094e2afa49405f4ef5a0d3f04eab31dec..530e3105e11094beab88b4d991aa0756880746d1 100644
|
|
--- a/src/main/java/net/minecraft/world/item/HoneyBottleItem.java
|
|
+++ b/src/main/java/net/minecraft/world/item/HoneyBottleItem.java
|
|
@@ -28,7 +28,7 @@ public class HoneyBottleItem extends Item {
|
|
}
|
|
|
|
if (!world.isClientSide) {
|
|
- user.removeEffect(MobEffects.POISON);
|
|
+ user.removeEffect(MobEffects.POISON, org.bukkit.event.entity.EntityPotionEffectEvent.Cause.FOOD); // Paper - Add missing effect cause
|
|
}
|
|
|
|
if (stack.isEmpty()) {
|
|
diff --git a/src/main/java/net/minecraft/world/item/OminousBottleItem.java b/src/main/java/net/minecraft/world/item/OminousBottleItem.java
|
|
index aba027a4c73fd7a01556e71cfc39dbe5e9c9464a..d42b64ab58997f45974f70dc660643ac4e372a39 100644
|
|
--- a/src/main/java/net/minecraft/world/item/OminousBottleItem.java
|
|
+++ b/src/main/java/net/minecraft/world/item/OminousBottleItem.java
|
|
@@ -36,7 +36,7 @@ public class OminousBottleItem extends Item {
|
|
if (!world.isClientSide) {
|
|
world.playSound(null, user.blockPosition(), SoundEvents.OMINOUS_BOTTLE_DISPOSE, user.getSoundSource(), 1.0F, 1.0F);
|
|
Integer integer = stack.getOrDefault(DataComponents.OMINOUS_BOTTLE_AMPLIFIER, Integer.valueOf(0));
|
|
- user.addEffect(new MobEffectInstance(MobEffects.BAD_OMEN, 120000, integer, false, false, true));
|
|
+ user.addEffect(new MobEffectInstance(MobEffects.BAD_OMEN, 120000, integer, false, false, true), org.bukkit.event.entity.EntityPotionEffectEvent.Cause.POTION_DRINK); // Paper - Add missing effect cause
|
|
}
|
|
|
|
stack.consume(1, user);
|
|
diff --git a/src/main/java/net/minecraft/world/item/SuspiciousStewItem.java b/src/main/java/net/minecraft/world/item/SuspiciousStewItem.java
|
|
index f15c54be432480ae5bcda3a60e21e54fdce04b8a..5b448006debecab983167d15fac59fc2a04805df 100644
|
|
--- a/src/main/java/net/minecraft/world/item/SuspiciousStewItem.java
|
|
+++ b/src/main/java/net/minecraft/world/item/SuspiciousStewItem.java
|
|
@@ -48,7 +48,7 @@ public class SuspiciousStewItem extends Item {
|
|
while (iterator.hasNext()) {
|
|
SuspiciousStewEffects.Entry suspicioussteweffects_a = (SuspiciousStewEffects.Entry) iterator.next();
|
|
|
|
- user.addEffect(suspicioussteweffects_a.createEffectInstance());
|
|
+ user.addEffect(suspicioussteweffects_a.createEffectInstance(), org.bukkit.event.entity.EntityPotionEffectEvent.Cause.FOOD); // Paper - Add missing effect cause
|
|
}
|
|
|
|
return super.finishUsingItem(stack, world, user);
|