5
5
import cat .nyaa .ukit .utils .SubCommandExecutor ;
6
6
import cat .nyaa .ukit .utils .SubTabCompleter ;
7
7
import cat .nyaa .ukit .utils .Utils ;
8
- import io .papermc .paper .event .player .PlayerInventorySlotChangeEvent ;
9
8
import land .melon .lab .simplelanguageloader .utils .ItemUtils ;
10
9
import land .melon .lab .simplelanguageloader .utils .Pair ;
11
10
import org .bukkit .Bukkit ;
20
19
import org .bukkit .event .block .Action ;
21
20
import org .bukkit .event .entity .ProjectileHitEvent ;
22
21
import org .bukkit .event .player .PlayerInteractEvent ;
22
+ import org .bukkit .event .player .PlayerItemHeldEvent ;
23
23
import org .bukkit .event .player .PlayerQuitEvent ;
24
24
import org .bukkit .inventory .ItemStack ;
25
25
import org .bukkit .inventory .meta .ItemMeta ;
@@ -292,6 +292,7 @@ public void onExpBottleHit(ProjectileHitEvent event) {
292
292
293
293
@ EventHandler
294
294
public void onRightClickBottle (PlayerInteractEvent event ) {
295
+ if (!pluginInstance .config .xpStoreConfig .enableQuickTake ) return ;
295
296
if (event .getPlayer ().isSneaking ()) return ;
296
297
if (!List .of (Action .RIGHT_CLICK_BLOCK , Action .RIGHT_CLICK_AIR ).contains (event .getAction ()))
297
298
return ;
@@ -300,6 +301,10 @@ public void onRightClickBottle(PlayerInteractEvent event) {
300
301
if (!isExpContainer (item )) return ;
301
302
event .setCancelled (true );
302
303
304
+ var itemAmount = item .getAmount ();
305
+ var amountContain = getExpContained (item );
306
+ if (amountContain == 0 ) return ;
307
+
303
308
var timeNow = System .currentTimeMillis ();
304
309
var expireTime = quickTakeArmMap .getOrDefault (event .getPlayer ().getUniqueId (), 0L );
305
310
quickTakeArmMap .put (event .getPlayer ().getUniqueId (), timeNow + pluginInstance .config .xpStoreConfig .quickTakeArmTimeInMillisecond );
@@ -308,8 +313,6 @@ public void onRightClickBottle(PlayerInteractEvent event) {
308
313
return ;
309
314
}
310
315
311
- var itemAmount = item .getAmount ();
312
- var amountContain = getExpContained (item );
313
316
// amountContain * quickTakeRatio or quickTakeMinimumAmount if amountContain enough, or take all at once
314
317
var amountPreference = Objects .requireNonNullElse (getQuickTakePreference (item ), getDefaultMinimumTakeAmount (amountContain ));
315
318
var amountTake = Math .min (amountContain , amountPreference );
@@ -332,7 +335,7 @@ public void onPlayerQuit(PlayerQuitEvent event) {
332
335
}
333
336
334
337
@ EventHandler
335
- public void onPlayerSwitchItem (PlayerInventorySlotChangeEvent event ) {
338
+ public void onPlayerSwitchItem (PlayerItemHeldEvent event ) {
336
339
quickTakeArmMap .remove (event .getPlayer ().getUniqueId ());
337
340
}
338
341
0 commit comments