mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-22 10:35:38 +01:00
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.
40 lines
2.3 KiB
Diff
40 lines
2.3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com>
|
|
Date: Tue, 12 Jul 2022 18:01:14 +0200
|
|
Subject: [PATCH] Allow trident custom damage
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java
|
|
index e45c3a9805d9fac1fabe6d891c817743acd9969e..44c733c5b2c3e9942f28e882ad72306a24459c2c 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java
|
|
@@ -36,16 +36,19 @@ public class ThrownTrident extends AbstractArrow {
|
|
|
|
public ThrownTrident(EntityType<? extends ThrownTrident> type, Level world) {
|
|
super(type, world);
|
|
+ this.setBaseDamage(net.minecraft.world.item.TridentItem.BASE_DAMAGE); // Paper - Allow trident custom damage
|
|
}
|
|
|
|
public ThrownTrident(Level world, LivingEntity owner, ItemStack stack) {
|
|
super(EntityType.TRIDENT, owner, world, stack, (ItemStack) null);
|
|
+ this.setBaseDamage(net.minecraft.world.item.TridentItem.BASE_DAMAGE); // Paper - Allow trident custom damage
|
|
this.entityData.set(ThrownTrident.ID_LOYALTY, this.getLoyaltyFromItem(stack));
|
|
this.entityData.set(ThrownTrident.ID_FOIL, stack.hasFoil());
|
|
}
|
|
|
|
public ThrownTrident(Level world, double x, double y, double z, ItemStack stack) {
|
|
super(EntityType.TRIDENT, x, y, z, world, stack, stack);
|
|
+ this.setBaseDamage(net.minecraft.world.item.TridentItem.BASE_DAMAGE); // Paper - Allow trident custom damage
|
|
this.entityData.set(ThrownTrident.ID_LOYALTY, this.getLoyaltyFromItem(stack));
|
|
this.entityData.set(ThrownTrident.ID_FOIL, stack.hasFoil());
|
|
}
|
|
@@ -129,7 +132,7 @@ public class ThrownTrident extends AbstractArrow {
|
|
@Override
|
|
protected void onHitEntity(EntityHitResult entityHitResult) {
|
|
Entity entity = entityHitResult.getEntity();
|
|
- float f = 8.0F;
|
|
+ float f = (float) this.getBaseDamage(); // Paper - Allow trident custom damage
|
|
Entity entity1 = this.getOwner();
|
|
DamageSource damagesource = this.damageSources().trident(this, (Entity) (entity1 == null ? this : entity1));
|
|
Level world = this.level();
|