Skip to content

Commit c765c6a

Browse files
committed
Fixed a critical issue on 1.19 causing the server to crash
1 parent 3aa95ce commit c765c6a

File tree

1 file changed

+90
-80
lines changed

1 file changed

+90
-80
lines changed

src/main/java/com/toonystank/armorswap/Events/ClickEvent.java

Lines changed: 90 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import org.bukkit.event.EventHandler;
1212
import org.bukkit.event.EventPriority;
1313
import org.bukkit.event.Listener;
14-
import org.bukkit.event.inventory.InventoryClickEvent;
14+
import org.bukkit.event.block.Action;
1515
import org.bukkit.event.player.PlayerInteractAtEntityEvent;
1616
import org.bukkit.event.player.PlayerInteractEntityEvent;
1717
import org.bukkit.event.player.PlayerInteractEvent;
@@ -50,65 +50,64 @@ public void onArmorStandRightClickEvent(PlayerInteractAtEntityEvent event) {
5050
Player player = event.getPlayer();
5151
if (!player.hasPermission(ConfigDataType.ARMOR_STAND_SWAP_PERMISSION.getString())) return;
5252
int value = getArmorSwapEnabled(player);
53+
player.sendMessage(player.isSneaking() + " Sneaking");
5354
if (!player.isSneaking()) return;
5455
if (value != 1) return;
5556

5657
Entity entity = event.getRightClicked();
5758

59+
if (entity instanceof ArmorStand stand) {
60+
event.setCancelled(true);
61+
if (stand.getEquipment() == null) return;
62+
if (!stand.isVisible()) return;
5863

59-
if (!entity.getType().equals(EntityType.ARMOR_STAND)) return;
60-
61-
event.setCancelled(true);
62-
ArmorStand stand = (ArmorStand) entity;
63-
if (stand.getEquipment() == null) return;
64-
if (!stand.isVisible()) return;
65-
66-
ItemStack[] standArmorList = stand.getEquipment().getArmorContents();
67-
ItemStack[] playerArmorList = player.getInventory().getArmorContents();
68-
for (ItemStack itemStack : playerArmorList) {
69-
String itemName;
70-
if (canMove(itemStack, player)) {
71-
if (itemStack == null || itemStack.getType().equals(Material.AIR)) {
72-
itemName = null;
73-
} else {
74-
itemName = itemStack.getType().toString().toUpperCase(Locale.ROOT);
75-
}
76-
if (itemName == null || itemName.contains(EquipmentDataType.PLAYER_BOOTS.getName())) {
77-
stand.getEquipment().setBoots(itemStack);
78-
}
79-
if (itemName == null || itemName.contains(EquipmentDataType.PLAYER_LEGGINGS.getName())) {
80-
stand.getEquipment().setLeggings(itemStack);
81-
}
82-
if (itemName == null || itemName.contains(EquipmentDataType.PLAYER_CHEST_PLATE.getName())) {
83-
stand.getEquipment().setChestplate(itemStack);
84-
}
85-
if (itemName == null || itemName.contains(EquipmentDataType.PLAYER_HELMET.getName())) {
86-
stand.getEquipment().setHelmet(itemStack);
64+
ItemStack[] standArmorList = stand.getEquipment().getArmorContents();
65+
ItemStack[] playerArmorList = player.getInventory().getArmorContents();
66+
for (ItemStack itemStack : playerArmorList) {
67+
String itemName;
68+
if (canMove(itemStack, player)) {
69+
if (itemStack == null || itemStack.getType().equals(Material.AIR)) {
70+
itemName = null;
71+
} else {
72+
itemName = itemStack.getType().toString().toUpperCase(Locale.ROOT);
73+
}
74+
if (itemName == null || itemName.contains(EquipmentDataType.PLAYER_BOOTS.getName())) {
75+
stand.getEquipment().setBoots(itemStack);
76+
}
77+
if (itemName == null || itemName.contains(EquipmentDataType.PLAYER_LEGGINGS.getName())) {
78+
stand.getEquipment().setLeggings(itemStack);
79+
}
80+
if (itemName == null || itemName.contains(EquipmentDataType.PLAYER_CHEST_PLATE.getName())) {
81+
stand.getEquipment().setChestplate(itemStack);
82+
}
83+
if (itemName == null || itemName.contains(EquipmentDataType.PLAYER_HELMET.getName())) {
84+
stand.getEquipment().setHelmet(itemStack);
85+
}
8786
}
8887
}
89-
}
90-
for (ItemStack itemStack : standArmorList) {
91-
String itemName;
92-
if (canMove(itemStack, player)) {
93-
if (itemStack == null || itemStack.getType().equals(Material.AIR)) {
94-
itemName = null;
95-
} else itemName = itemStack.getType().toString().toUpperCase(Locale.ROOT);
96-
if (itemName == null || itemName.contains(EquipmentDataType.STAND_BOOTS.getName())) {
97-
player.getInventory().setBoots(itemStack);
98-
}
99-
if (itemName == null || itemName.contains(EquipmentDataType.STAND_LEGGINGS.getName())) {
100-
player.getInventory().setLeggings(itemStack);
101-
}
102-
if (itemName == null || itemName.contains(EquipmentDataType.STAND_CHEST_PLATE.getName())) {
103-
player.getInventory().setChestplate(itemStack);
104-
}
105-
if (itemName == null || itemName.contains(EquipmentDataType.STAND_HELMET.getName())) {
106-
player.getInventory().setHelmet(itemStack);
88+
for (ItemStack itemStack : standArmorList) {
89+
String itemName;
90+
if (canMove(itemStack, player)) {
91+
if (itemStack == null || itemStack.getType().equals(Material.AIR)) {
92+
itemName = null;
93+
} else itemName = itemStack.getType().toString().toUpperCase(Locale.ROOT);
94+
if (itemName == null || itemName.contains(EquipmentDataType.STAND_BOOTS.getName())) {
95+
player.getInventory().setBoots(itemStack);
96+
}
97+
if (itemName == null || itemName.contains(EquipmentDataType.STAND_LEGGINGS.getName())) {
98+
player.getInventory().setLeggings(itemStack);
99+
}
100+
if (itemName == null || itemName.contains(EquipmentDataType.STAND_CHEST_PLATE.getName())) {
101+
player.getInventory().setChestplate(itemStack);
102+
}
103+
if (itemName == null || itemName.contains(EquipmentDataType.STAND_HELMET.getName())) {
104+
player.getInventory().setHelmet(itemStack);
105+
}
107106
}
108107
}
108+
standWithHand(player, stand);
109+
player.playSound(player.getLocation(), Sound.valueOf(sound), 1.0F, 1.0F);
109110
}
110-
standWithHand(player, stand);
111-
player.playSound(player.getLocation(), Sound.valueOf(sound), 1.0F, 1.0F);
112111
}
113112
}
114113
@SuppressWarnings("ConstantConditions")
@@ -184,49 +183,60 @@ public void giveItem(ItemStack playerItem, ItemStack itemOnFrame, ItemFrame clic
184183
//
185184
// RIGHT CLICK ON ARMOR EVENT START HERE
186185
//
186+
Boolean success = true;
187187
@EventHandler
188188
public void onArmorRightClickEvent(PlayerInteractEvent event) {
189+
if (!event.getAction().equals(Action.RIGHT_CLICK_AIR) || !event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) return;
189190
if (mainHandSwap) {
191+
success = false;
190192
Player player = event.getPlayer();
191193
if (player.getInventory().getItemInMainHand().getType().isAir()) return;
192194
int value = getArmorSwapEnabled(player);
193195
if (value == 1) {
194196
Block block = event.getClickedBlock();
195197
if (block != null) {
196-
if (!block.getType().isInteractable()) return;
198+
player.sendMessage(block.getType().toString());
199+
if (block.getType().isInteractable()) return;
200+
}
201+
ItemStack item = player.getInventory().getItemInMainHand();
202+
String itemName = item.getType().toString().toUpperCase(Locale.ROOT);
203+
if (itemName.contains(EquipmentDataType.PLAYER_HELMET.getName())) {
204+
if (player.getInventory().getHelmet() == null) return;
205+
ItemStack returnItem = player.getInventory().getHelmet();
206+
if (!canMove(returnItem, player)) return;
207+
player.getInventory().setItemInMainHand(returnItem);
208+
player.getInventory().setHelmet(item);
209+
success = true;
210+
}
211+
else if (itemName.contains(EquipmentDataType.PLAYER_CHEST_PLATE.getName()) || itemName.contains(EquipmentDataType.PLAYER_ELYTRA.getName())) {
212+
if (player.getInventory().getChestplate() == null) return;
213+
ItemStack returnItem = player.getInventory().getChestplate();
214+
if (!canMove(returnItem, player)) return;
215+
player.getInventory().setItemInMainHand(returnItem);
216+
player.getInventory().setChestplate(item);
217+
success = true;
218+
}
219+
else if (itemName.contains(EquipmentDataType.PLAYER_BOOTS.getName())) {
220+
if (player.getInventory().getBoots() == null) return;
221+
ItemStack returnItem = player.getInventory().getBoots();
222+
if (!canMove(returnItem, player)) return;
223+
player.getInventory().setItemInMainHand(returnItem);
224+
player.getInventory().setBoots(item);
225+
success = true;
226+
}
227+
else if (itemName.contains(EquipmentDataType.PLAYER_LEGGINGS.getName())) {
228+
if (player.getInventory().getLeggings() == null) return;
229+
ItemStack returnItem = player.getInventory().getBoots();
230+
if (!canMove(returnItem, player)) return;
231+
player.getInventory().setItemInMainHand(returnItem);
232+
player.getInventory().setLeggings(item);
233+
success = true;
234+
}
235+
if (success) {
236+
player.playSound(player.getLocation(), Sound.valueOf(sound), 1.0F, 1.0F);
197237
}
198-
ItemStack Item = player.getInventory().getItemInMainHand();
199-
playerItem(player, Item, sound);
200238
}
201239
}
202-
}
203-
public void playerItem(Player player, ItemStack item, String sound){
204-
String itemName = item.getType().toString().toUpperCase(Locale.ROOT);
205-
if (itemName.contains(EquipmentDataType.PLAYER_HELMET.getName())) {
206-
ItemStack returnItem = player.getInventory().getHelmet();
207-
if (!canMove(returnItem, player)) return;
208-
player.getInventory().setItemInMainHand(returnItem);
209-
player.getInventory().setHelmet(item);
210-
}
211-
else if (itemName.contains(EquipmentDataType.PLAYER_CHEST_PLATE.getName()) || itemName.contains(EquipmentDataType.PLAYER_ELYTRA.getName())) {
212-
ItemStack returnItem = player.getInventory().getChestplate();
213-
if (!canMove(returnItem, player)) return;
214-
player.getInventory().setItemInMainHand(returnItem);
215-
player.getInventory().setChestplate(item);
216-
}
217-
else if (itemName.contains(EquipmentDataType.PLAYER_BOOTS.getName())) {
218-
ItemStack returnItem = player.getInventory().getBoots();
219-
if (!canMove(returnItem, player)) return;
220-
player.getInventory().setItemInMainHand(returnItem);
221-
player.getInventory().setBoots(item);
222-
}
223-
else if (itemName.contains(EquipmentDataType.PLAYER_LEGGINGS.getName())) {
224-
ItemStack returnItem = player.getInventory().getLeggings();
225-
if (!canMove(returnItem, player)) return;
226-
player.getInventory().setItemInMainHand(returnItem);
227-
player.getInventory().setLeggings(item);
228-
}
229-
player.playSound(player.getLocation(), Sound.valueOf(sound), 1.0F, 1.0F);
230240
}
231241
//
232242
// RIGHT CLICK ON ARMOR EVENT ENDS HERE

0 commit comments

Comments
 (0)