From 148e7bb3c6985e003fa953eac11101e167281f8c Mon Sep 17 00:00:00 2001 From: Developerkubilay Date: Fri, 18 Sep 2026 04:40:22 +0300 Subject: [PATCH] Fix elytra equip bypasses via number keys/drag and refine Turkish translation --- .../krint/elytraDisabled/ElytraListener.java | 35 +++++++++++++++++++ src/main/resources/lang/tr.yml | 14 ++++---- 2 files changed, 42 insertions(+), 7 deletions(-) diff --git a/src/main/java/ua/krint/elytraDisabled/ElytraListener.java b/src/main/java/ua/krint/elytraDisabled/ElytraListener.java index 308b645..97113c1 100644 --- a/src/main/java/ua/krint/elytraDisabled/ElytraListener.java +++ b/src/main/java/ua/krint/elytraDisabled/ElytraListener.java @@ -7,7 +7,9 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityToggleGlideEvent; +import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryDragEvent; import org.bukkit.event.inventory.InventoryType; import org.bukkit.event.player.*; import org.bukkit.inventory.ItemStack; @@ -73,12 +75,45 @@ public void onInventoryClick(InventoryClickEvent e) { } } + if (e.getClick() == ClickType.NUMBER_KEY && e.getSlotType() == InventoryType.SlotType.ARMOR) { + int hotbarButton = e.getHotbarButton(); + if (hotbarButton >= 0 && hotbarButton < 9) { + ItemStack hotbarItem = p.getInventory().getItem(hotbarButton); + if (hotbarItem != null && hotbarItem.getType() == Material.ELYTRA) { + e.setCancelled(true); + warn(p, "equip_blocked"); + return; + } + } + } + if (e.getClick().name().contains("SWAP") && current != null && current.getType() == Material.ELYTRA) { e.setCancelled(true); warn(p, "equip_blocked"); } } + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onInventoryDrag(InventoryDragEvent e) { + if (!(e.getWhoClicked() instanceof Player)) return; + Player p = (Player) e.getWhoClicked(); + + if (plugin.hasBypass(p)) return; + if (!plugin.isWorldDisabled(p.getWorld())) return; + if (!plugin.isPreventEquip()) return; + + ItemStack oldCursor = e.getOldCursor(); + if (oldCursor == null || oldCursor.getType() != Material.ELYTRA) return; + + for (int rawSlot : e.getRawSlots()) { + if (e.getView().getSlotType(rawSlot) == InventoryType.SlotType.ARMOR) { + e.setCancelled(true); + warn(p, "equip_blocked"); + return; + } + } + } + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onArmorEquip(PlayerInteractEvent e) { Player p = e.getPlayer(); diff --git a/src/main/resources/lang/tr.yml b/src/main/resources/lang/tr.yml index fb5ead9..50168a0 100644 --- a/src/main/resources/lang/tr.yml +++ b/src/main/resources/lang/tr.yml @@ -7,8 +7,8 @@ # # equip_blocked: # - '[type="title",title_times="10:40:10",sound="minecraft:entity.villager.no;1.0;1.0"]' -# - '&cYOOOOOK!' -# - '&7Olmaz kardeşim elytra kullanamazsın' +# - '&cEngellendi!' +# - '&7Bu dünyada elytra kuşanmak yasaktır' # # type: chat (varsayılan) / actionbar / title # title_times: "görünme:kalma:kaybolma" tik cinsinden (20 tik = 1 saniye), sadece title için @@ -26,17 +26,17 @@ # Elytra takmaya çalışırken gösterilen mesaj equip_blocked: - '[type="title",title_times="10:40:10",sound="minecraft:entity.villager.no;1.0;1.0"]' - - '&cYOOOOOK!' - - '&7Olmaz kardeşim elytra kullanamazsın' + - '&cEngellendi!' + - '&7Bu dünyada elytra kuşanmak yasaktır' # Uçmaya çalışırken gösterilen mesaj glide_blocked: - '[type="title",title_times="10:40:10",sound="minecraft:entity.villager.no;1.0;1.0"]' - - '&cYOOOOOK!' - - '&7Olmaz kardeşim elytra kullanamazsın' + - '&cEngellendi!' + - '&7Bu dünyada elytra ile uçuş devre dışıdır' # Elytra otomatik olarak çıkarıldığında gösterilen mesaj -removed_on_enter: "&eUsagım bu dünyada elitra kullanımı yasak ates devrinden devam ediyorsun" +removed_on_enter: "&eBu dünyaya giriş yaptığınız için elytranız envanterinize alındı." # Eklenti yeniden yüklenirken gösterilen mesajlar reload_success: "&a&l[ElytraDisabled]&r &aYapılandırma başarıyla yeniden yüklendi!"