Skip to content
This repository was archived by the owner on Dec 16, 2024. It is now read-only.

Commit 487e640

Browse files
committed
fixed older version support
1 parent 5ebcb4d commit 487e640

File tree

4 files changed

+22
-6
lines changed

4 files changed

+22
-6
lines changed

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>lol.hyper</groupId>
88
<artifactId>lecterncrashfix</artifactId>
9-
<version>1.0</version>
9+
<version>1.1</version>
1010
<packaging>jar</packaging>
1111

1212
<name>LecternCrashFix</name>

src/main/java/lol/hyper/lecterncrashfix/LecternCrashFix.java

+6-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.comphenix.protocol.events.PacketAdapter;
77
import com.comphenix.protocol.events.PacketEvent;
88
import lol.hyper.lecterncrashfix.wrapper.WrapperPlayClientWindowClick;
9+
import org.bukkit.Bukkit;
910
import org.bukkit.entity.Player;
1011
import org.bukkit.event.inventory.InventoryType;
1112
import org.bukkit.inventory.InventoryView;
@@ -19,14 +20,18 @@ public final class LecternCrashFix extends JavaPlugin {
1920

2021
@Override
2122
public void onEnable() {
23+
String bukkitPackageName = Bukkit.getServer().getClass().getPackage().getName();
24+
String bukkitVersion = bukkitPackageName.substring(bukkitPackageName.lastIndexOf(".") + 1);
25+
int ver = Integer.parseInt(bukkitVersion.split("_")[1]);
26+
2227
ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(this, ListenerPriority.HIGHEST, PacketType.Play.Client.WINDOW_CLICK) {
2328
@Override
2429
public void onPacketReceiving(PacketEvent event) {
2530
if (event.getPlayer() == null) {
2631
return;
2732
}
2833

29-
WrapperPlayClientWindowClick packet = new WrapperPlayClientWindowClick(event.getPacket());
34+
WrapperPlayClientWindowClick packet = new WrapperPlayClientWindowClick(event.getPacket(), ver);
3035
Player player = event.getPlayer();
3136
InventoryView inv = player.getOpenInventory();
3237
if (inv.getType() == InventoryType.LECTERN) {

src/main/java/lol/hyper/lecterncrashfix/wrapper/WrapperPlayClientWindowClick.java

+14-3
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,17 @@
2525

2626
public class WrapperPlayClientWindowClick extends AbstractPacket {
2727
public static final PacketType TYPE = PacketType.Play.Client.WINDOW_CLICK;
28+
private final int VERSION;
2829

29-
public WrapperPlayClientWindowClick() {
30+
public WrapperPlayClientWindowClick(int version) {
3031
super(new PacketContainer(TYPE), TYPE);
32+
VERSION = version;
3133
handle.getModifier().writeDefaults();
3234
}
3335

34-
public WrapperPlayClientWindowClick(PacketContainer packet) {
36+
public WrapperPlayClientWindowClick(PacketContainer packet, int version) {
3537
super(packet, TYPE);
38+
VERSION = version;
3639
}
3740

3841
/**
@@ -135,7 +138,15 @@ public void setClickedItem(ItemStack value) {
135138
}
136139

137140
public InventoryClickType getShift() {
138-
return handle.getEnumModifier(InventoryClickType.class, 4).read(0);
141+
// index changes here because versions use different ones idk
142+
int index = 0;
143+
if (VERSION == 16) {
144+
index = 5;
145+
}
146+
if (VERSION >= 17) {
147+
index = 4;
148+
}
149+
return handle.getEnumModifier(InventoryClickType.class, index).read(0);
139150
}
140151

141152
public void setShift(InventoryClickType value) {

src/main/resources/plugin.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: LecternCrashFix
22
version: '${project.version}'
33
main: lol.hyper.lecterncrashfix.LecternCrashFix
4-
api-version: 1.18
4+
api-version: 1.16
55
depend: [ProtocolLib]

0 commit comments

Comments
 (0)