Skip to content

Commit e1837dc

Browse files
Packsolitekennytv
andauthored
Fix legacy block picking on some Paper forks (ViaVersion#4496)
Co-authored-by: Nassim Jahnke <[email protected]>
1 parent 66eead2 commit e1837dc

File tree

1 file changed

+17
-4
lines changed

1 file changed

+17
-4
lines changed

bukkit/src/main/java/com/viaversion/viaversion/bukkit/providers/BukkitPickItemProvider.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,10 @@
1818
package com.viaversion.viaversion.bukkit.providers;
1919

2020
import com.viaversion.viaversion.ViaVersionPlugin;
21+
import com.viaversion.viaversion.api.Via;
2122
import com.viaversion.viaversion.api.connection.UserConnection;
2223
import com.viaversion.viaversion.api.minecraft.BlockPosition;
24+
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
2325
import com.viaversion.viaversion.bukkit.platform.PaperViaInjector;
2426
import com.viaversion.viaversion.bukkit.util.LegacyBlockToItem;
2527
import com.viaversion.viaversion.protocols.v1_21_2to1_21_4.provider.PickItemProvider;
@@ -187,14 +189,25 @@ static BlockToItem build() {
187189
}
188190
return item;
189191
};
192+
}
193+
194+
final ProtocolVersion version = Via.getAPI().getServerVersion().lowestSupportedProtocolVersion();
195+
if (version.equalTo(ProtocolVersion.v1_8)) {
196+
final LegacyBlockToItem legacy = LegacyBlockToItem.getInstance();
197+
return legacy != null ? (block, includeData) -> legacy.blockToItem(block) : (b, i) -> null;
190198
} else if (PaperViaInjector.hasMethod(Material.class, "isItem")) {
191-
return (block, includeData) -> new ItemStack(block.getType(), 1);
199+
return (block, includeData) -> {
200+
if (!block.getType().isItem()) {
201+
return null;
202+
}
203+
return version.newerThanOrEqualTo(ProtocolVersion.v1_13)
204+
? new ItemStack(block.getType())
205+
: new ItemStack(block.getType(), 1, (short) 0, block.getData());
206+
};
192207
} else {
193-
LegacyBlockToItem legacy = LegacyBlockToItem.getInstance();
194-
return legacy != null ? (block, includeData) -> legacy.blockToItem(block) : (b, i) -> null;
208+
return (block, includeData) -> null;
195209
}
196210
}
197-
198211
}
199212

200213
@FunctionalInterface

0 commit comments

Comments
 (0)