Skip to content

Commit a67eb0e

Browse files
committed
(fix error) - 1) исправлена ошибка когда не сортировались большие сундуки и шалкеры, открытые через плагин. 2) доработана сортировка зелий, теперь мутные зелья и вода идут после зелий с эффектами
1 parent a8d22c1 commit a67eb0e

File tree

4 files changed

+46
-5
lines changed

4 files changed

+46
-5
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ plugins {
33
}
44

55
group = 'com.flyaway.quicksort'
6-
version = '1.0.0'
6+
version = '1.0.1'
77

88
java {
99
toolchain {

src/main/java/com/flyaway/quciksort/EventListener.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.bukkit.inventory.InventoryHolder;
1313
import org.bukkit.inventory.ItemStack;
1414
import org.bukkit.block.Chest;
15+
import org.bukkit.block.DoubleChest;
1516
import org.bukkit.block.Barrel;
1617
import org.bukkit.block.ShulkerBox;
1718
import org.bukkit.block.Hopper;
@@ -90,6 +91,7 @@ private boolean isAllowedContainer(Inventory inventory) {
9091

9192
// Разрешенные контейнеры
9293
if (holder instanceof Chest ||
94+
holder instanceof DoubleChest ||
9395
holder instanceof Barrel ||
9496
holder instanceof ShulkerBox ||
9597
holder instanceof Hopper ||
@@ -98,8 +100,9 @@ private boolean isAllowedContainer(Inventory inventory) {
98100
return true;
99101
}
100102

101-
// Эндерсундук
102-
if (inventory.getType() == InventoryType.ENDER_CHEST) {
103+
InventoryType type = inventory.getType();
104+
if (type == InventoryType.ENDER_CHEST
105+
|| type == InventoryType.SHULKER_BOX) {
103106
return true;
104107
}
105108

src/main/java/com/flyaway/quciksort/SortManager.java

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import org.bukkit.Material;
66
import org.bukkit.entity.Player;
7+
import org.bukkit.potion.PotionType;
78
import org.bukkit.inventory.Inventory;
89
import org.bukkit.inventory.ItemStack;
910
import org.bukkit.inventory.PlayerInventory;
@@ -248,7 +249,14 @@ else if (index1 != -1 && index2 == -1) {
248249
}
249250
// Если оба не в порядке или порядок одинаковый - сравниваем дальше
250251

251-
// Если тип одинаковый, то по названию эффекта
252+
// Сначала по наличию эффекта (с эффектами выше, без эффектов - ниже)
253+
boolean hasEffect1 = hasPotionEffect(item1);
254+
boolean hasEffect2 = hasPotionEffect(item2);
255+
if (hasEffect1 != hasEffect2) {
256+
return Boolean.compare(hasEffect2, hasEffect1); // true идет первым
257+
}
258+
259+
// Если оба с эффектами или оба без эффектов, то по названию эффекта
252260
String effect1 = getPotionEffectName(item1);
253261
String effect2 = getPotionEffectName(item2);
254262
int effectCompare = effect1.compareTo(effect2);
@@ -277,6 +285,36 @@ else if (index1 != -1 && index2 == -1) {
277285
});
278286
}
279287

288+
private boolean hasPotionEffect(ItemStack potion) {
289+
if (!(potion.getItemMeta() instanceof org.bukkit.inventory.meta.PotionMeta meta)) {
290+
return false;
291+
}
292+
293+
// Если есть кастомные эффекты — точно есть эффект
294+
if (meta.hasCustomEffects()) {
295+
return true;
296+
}
297+
298+
// Проверяем базовый тип зелья
299+
if (meta.getBasePotionData() != null) {
300+
PotionType type = meta.getBasePotionData().getType();
301+
if (type == null) return false;
302+
303+
// Безэффектные типы — всегда false
304+
switch (type) {
305+
case PotionType.WATER:
306+
case PotionType.MUNDANE:
307+
case PotionType.THICK:
308+
case PotionType.AWKWARD:
309+
return false;
310+
default:
311+
return true;
312+
}
313+
}
314+
315+
return false;
316+
}
317+
280318
private String getPotionEffectName(ItemStack potion) {
281319
if (potion.getItemMeta() instanceof org.bukkit.inventory.meta.PotionMeta) {
282320
org.bukkit.inventory.meta.PotionMeta meta = (org.bukkit.inventory.meta.PotionMeta) potion.getItemMeta();

src/main/resources/plugin.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: QuickSort
2-
version: 1.0.0
2+
version: 1.0.1
33
main: com.flyaway.quicksort.QuickSort
44
api-version: 1.21
55
description: Плагин для сортировки инвентаря по ПКМ+SHIFT

0 commit comments

Comments
 (0)