geforkt von Mirrors/Paper
aa52bf9e33
Mojang made some changes to priorities in 1.17 and it seems that these changes conflict with the changes made in this patch, which in some cases appears to cause excessive rescheduling of tasks. This, however, is not confirmed as such but seems to be the behavior that we're seeing to cause this issue, if mojang has adopted the changes we suggested, then a good chunk of this patch may be unneeded, but, this needs a much better look than I'm currently able to do
41 Zeilen
2.4 KiB
Diff
41 Zeilen
2.4 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: GioSDA <gsdambrosio@gmail.com>
|
|
Date: Wed, 10 Mar 2021 10:06:45 -0800
|
|
Subject: [PATCH] Add option to fix items merging through walls
|
|
|
|
|
|
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
index c0e733d839f4c86bdcd6e1ca0b40b082fc6eb86e..579bd433e1f680c2273cd048b304c1276016e6cc 100644
|
|
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
@@ -799,5 +799,10 @@ public class PaperWorldConfig {
|
|
private void mapItemFrameCursorLimit() {
|
|
mapItemFrameCursorLimit = getInt("map-item-frame-cursor-limit", mapItemFrameCursorLimit);
|
|
}
|
|
+
|
|
+ public boolean fixItemsMergingThroughWalls;
|
|
+ private void fixItemsMergingThroughWalls() {
|
|
+ fixItemsMergingThroughWalls = getBoolean("fix-items-merging-through-walls", fixItemsMergingThroughWalls);
|
|
+ }
|
|
}
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
|
|
index e0c13a112c95eed9867d4608e18dc797b0c9c9cf..158719d46c96bb733a00e08c8285f41a48406abf 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
|
|
@@ -241,6 +241,14 @@ public class ItemEntity extends Entity {
|
|
ItemEntity entityitem = (ItemEntity) iterator.next();
|
|
|
|
if (entityitem.isMergable()) {
|
|
+ // Paper Start - Fix items merging through walls
|
|
+ if (this.level.paperConfig.fixItemsMergingThroughWalls) {
|
|
+ net.minecraft.world.level.ClipContext rayTrace = new net.minecraft.world.level.ClipContext(this.position(), entityitem.position(),
|
|
+ net.minecraft.world.level.ClipContext.Block.COLLIDER, net.minecraft.world.level.ClipContext.Fluid.NONE, this);
|
|
+ net.minecraft.world.phys.BlockHitResult rayTraceResult = level.clip(rayTrace);
|
|
+ if (rayTraceResult.getType() == net.minecraft.world.phys.HitResult.Type.BLOCK) continue;
|
|
+ }
|
|
+ // Paper End
|
|
this.tryToMerge(entityitem);
|
|
if (this.isRemoved()) {
|
|
break;
|