|
84 | 84 | BlockPos blockPos = this.mainSupportingBlockPos.get(); |
85 | 85 | if (!(yOffset > 1.0E-5F)) { |
86 | 86 | return blockPos; |
| 87 | +@@ -2377,7 +_,7 @@ |
| 88 | + } |
| 89 | + delta = event.getKnockback(); |
| 90 | + } |
| 91 | +- this.setDeltaMovement(this.getDeltaMovement().add(delta.getX(), delta.getY(), delta.getZ())); |
| 92 | ++ this.setDeltaMovement(this.getDeltaMovement().add(delta.getX(), delta.getY(), delta.getZ()).shreddedPaperCapToRegionSize()); // ShreddedPaper - cap pushing delta to region size |
| 93 | + // Paper end - Add EntityKnockbackByEntityEvent and EntityPushedByEntityAttackEvent |
| 94 | + this.needsSync = true; |
| 95 | + } |
87 | 96 | @@ -3546,7 +_,9 @@ |
88 | 97 | } |
89 | 98 | } |
|
127 | 136 | // Paper start - gateway-specific teleport event |
128 | 137 | final org.bukkit.event.entity.EntityTeleportEvent teleEvent; |
129 | 138 | if (this.portalProcess != null && this.portalProcess.isSamePortal(((net.minecraft.world.level.block.EndGatewayBlock) Blocks.END_GATEWAY)) && this.level.getBlockEntity(this.portalProcess.getEntryPosition()) instanceof net.minecraft.world.level.block.entity.TheEndGatewayBlockEntity theEndGatewayBlockEntity) { |
| 139 | +@@ -4920,7 +_,7 @@ |
| 140 | + pushVector = pushVector.normalize().scale(0.0045000000000000005); |
| 141 | + } |
| 142 | + |
| 143 | +- this.setDeltaMovement(currMovement.add(pushVector)); |
| 144 | ++ this.setDeltaMovement(currMovement.add(pushVector).shreddedPaperCapToRegionSize()); // ShreddedPaper - cap pushing delta to region size |
| 145 | + |
| 146 | + // note: inFluid = true here as pushVector != 0 |
| 147 | + return true; |
130 | 148 | @@ -4996,6 +_,12 @@ |
131 | 149 |
|
132 | 150 | public void setDeltaMovement(Vec3 deltaMovement) { |
133 | 151 | if (deltaMovement.isFinite()) { |
134 | 152 | + // ShreddedPaper start - why is something setting the entity velocity to larger than one region... |
135 | 153 | + if (deltaMovement.horizontalDistanceSqr() > RegionPos.MAX_DISTANCE_SQR + 1 && deltaMovement.horizontalDistanceSqr() > this.deltaMovement.horizontalDistanceSqr()) { |
136 | 154 | + LOGGER.warn("Velocity is being set larger than the ShreddedPaper region size: {} for entity {}", deltaMovement, this, new Exception("Velocity larger than region size, limiting velocity to region size")); |
137 | | -+ deltaMovement = deltaMovement.normalize().scale(RegionPos.MAX_DISTANCE_SQR); |
| 155 | ++ deltaMovement = deltaMovement.shreddedPaperCapToRegionSize(); |
138 | 156 | + } |
139 | 157 | + // ShreddedPaper end - why is something setting the entity velocity to larger than one region... |
140 | 158 | synchronized (this.posLock) { // Paper - detailed watchdog information |
|
0 commit comments