Skip to content

Commit d78555b

Browse files
committed
Fix ReplaceToolOnBuy does not work for offhand
1 parent f226525 commit d78555b

3 files changed

Lines changed: 24 additions & 4 deletions

File tree

src/main/java/me/metallicgoat/tweaksaddon/config/ConfigLegacyMigrator.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,6 @@ public static void loadOldMain(FileConfiguration config) {
138138

139139
MainConfig.papi_team_you_placeholder = config.getString("Team-You-Placeholder", MainConfig.papi_team_you_placeholder);
140140

141-
MainConfig.papi_player_arena_running_time = config.getString("Running-Time-Placeholder", MainConfig.papi_player_arena_running_time);
142-
143141
MainConfig.scoreboard_updating_enabled_in_game = config.getBoolean("Force-Scoreboard-Updating.Enabled-In-Game", false);
144142
MainConfig.scoreboard_updating_enabled_in_lobby = config.getBoolean("Force-Scoreboard-Updating.Enabled-In-Lobby", false);
145143

src/main/java/me/metallicgoat/tweaksaddon/tweaks/advancedswords/ReplaceToolOnBuy.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.bukkit.event.EventHandler;
99
import org.bukkit.event.Listener;
1010
import org.bukkit.inventory.ItemStack;
11+
import org.bukkit.inventory.PlayerInventory;
1112

1213
public class ReplaceToolOnBuy implements Listener {
1314

@@ -29,8 +30,11 @@ public void onToolBuy(PlayerBuyInShopEvent event) {
2930

3031
private void clearOld(Material tool, Player p) {
3132
final boolean isClearingPickaxe = ToolSwordHelper.isPickaxe(tool);
33+
final PlayerInventory inv = p.getInventory();
34+
35+
for (int i = 0; i < p.getInventory().getSize(); i++) {
36+
final ItemStack itemStack = inv.getItem(i);
3237

33-
for (ItemStack itemStack : p.getInventory()) {
3438
if (itemStack == null ||
3539
!ToolSwordHelper.isTool(itemStack.getType()) ||
3640
!ToolSwordHelper.isNotToIgnore(itemStack))
@@ -40,7 +44,7 @@ private void clearOld(Material tool, Player p) {
4044
final boolean match = (isCheckingPickaxe && isClearingPickaxe) || (!isCheckingPickaxe && !isClearingPickaxe);
4145

4246
if (match && ToolSwordHelper.getSwordToolLevel(tool) > ToolSwordHelper.getSwordToolLevel(itemStack.getType()))
43-
p.getInventory().remove(itemStack);
47+
inv.setItem(i, null);
4448
}
4549
}
4650
}

src/main/java/me/metallicgoat/tweaksaddon/utils/Util.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,14 @@
55
import de.marcely.bedwars.api.arena.Team;
66
import de.marcely.bedwars.api.arena.picker.ArenaPickerAPI;
77
import de.marcely.bedwars.api.game.spawner.DropType;
8+
import de.marcely.bedwars.tools.NMSHelper;
89
import de.marcely.bedwars.tools.location.XYZYP;
910
import org.bukkit.Location;
1011
import org.bukkit.World;
12+
import org.bukkit.entity.HumanEntity;
13+
import org.bukkit.entity.Player;
14+
import org.bukkit.inventory.ItemStack;
15+
import org.bukkit.inventory.PlayerInventory;
1116
import org.jetbrains.annotations.Nullable;
1217

1318
import java.util.ArrayList;
@@ -18,6 +23,19 @@
1823

1924
public class Util {
2025

26+
public static @Nullable ItemStack getItemInOffHand(HumanEntity player) {
27+
if (NMSHelper.get().getVersion() == 8)
28+
return null;
29+
30+
try {
31+
return (ItemStack) PlayerInventory.class.getDeclaredMethod("getItemInOffHand", null).invoke(player.getInventory());
32+
} catch (Exception e) {
33+
e.printStackTrace();
34+
}
35+
36+
return null;
37+
}
38+
2139
public static Collection<Arena> parseArenas(String arenaKey) {
2240
if (arenaKey.equalsIgnoreCase("ALL-ARENAS")) {
2341
return GameAPI.get().getArenas();

0 commit comments

Comments
 (0)