2.0.2 release, fixed tridents disappearing when throwing similar tridents from offhand

This commit is contained in:
mfnalex 2021-05-31 01:20:02 +02:00
parent a778b0bbde
commit 33dd0a981c
4 changed files with 38 additions and 7 deletions

View File

@ -1,3 +1,6 @@
## 2.0.2
- Fixed tridents disappearing when throwing similar tridents (same durability, etc.) from the offhand
## 2.0.1
- Fixed tridents getting lost on return when throwing many of them from the offhand while having "return-to-offhand" set to "true"

20
pom.xml
View File

@ -6,7 +6,7 @@
<groupId>de.jeff_media</groupId>
<name>BetterTridents</name>
<artifactId>BetterTridents</artifactId>
<version>2.0.1</version>
<version>2.0.2</version>
<properties>
<spigot.prefix>${project.name}</spigot.prefix>
@ -49,7 +49,23 @@
</relocation>
<relocation>
<pattern>org.bstats</pattern>
<shadedPattern>de.jeff_Media.notridentvoid</shadedPattern>
<shadedPattern>de.jeff_media.bettertridents.bstats</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache</pattern>
<shadedPattern>de.jeff_media.bettertridents.lib.org.apache</shadedPattern>
</relocation>
<relocation>
<pattern>org.codehaus</pattern>
<shadedPattern>de.jeff_media.bettertridents.lib.org.codehaus</shadedPattern>
</relocation>
<relocation>
<pattern>org.intellij</pattern>
<shadedPattern>de.jeff_media.bettertridents.lib.org.intellij</shadedPattern>
</relocation>
<relocation>
<pattern>org.jetbrains</pattern>
<shadedPattern>de.jeff_media.bettertridents.lib.org.jetbrains</shadedPattern>
</relocation>
</relocations>
</configuration>

View File

@ -11,6 +11,8 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerPickupArrowEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.persistence.PersistentDataType;
public class OffhandListener implements Listener {
@ -18,18 +20,20 @@ public class OffhandListener implements Listener {
@EventHandler(ignoreCancelled = true)
private void onPickupTrident(PlayerPickupArrowEvent event) {
main.debug("onPickupTrident");
if (!main.getConfig().getBoolean(Config.RETURN_TO_OFFHAND)) return;
if (!(event.getArrow() instanceof Trident)) return;
Trident trident = (Trident) event.getArrow();
if(!EnchantmentUtils.isOffhandThrown(trident)) {
main.debug("This trident wasn't thrown from the offhand.");
return;
}
Player player = event.getPlayer();
if (player.getInventory().getItemInOffHand().getType() != Material.AIR) return;
ItemStack tridentItem = event.getItem().getItemStack().clone();
ItemMeta meta = tridentItem.getItemMeta();
meta.getPersistentDataContainer().set(Main.OFFHAND_TAG, PersistentDataType.BYTE, (byte) 1);
tridentItem.setItemMeta(meta);
event.getItem().setItemStack(tridentItem);
main.debug("Starting offhand task...");
new MoveToOffhand(player, tridentItem).runTask(main);

View File

@ -1,8 +1,11 @@
package de.jeff_media.bettertridents.tasks;
import de.jeff_media.bettertridents.Main;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.persistence.PersistentDataType;
import org.bukkit.scheduler.BukkitRunnable;
public class MoveToOffhand extends BukkitRunnable {
@ -16,12 +19,17 @@ public class MoveToOffhand extends BukkitRunnable {
@Override
public void run() {
for (ItemStack item : player.getInventory()) {
for (int i = 0; i < player.getInventory().getSize(); i++) {
ItemStack item = player.getInventory().getItem(i);
if (item != null && item.equals(tridentItem)) {
ItemMeta meta = tridentItem.getItemMeta();
meta.getPersistentDataContainer().remove(Main.OFFHAND_TAG);
tridentItem.setItemMeta(meta);
ItemStack offhand = player.getInventory().getItemInOffHand();
if(offhand == null || offhand.getType() == Material.AIR) {
player.getInventory().remove(item);
player.getInventory().setItemInOffHand(item.clone());
player.getInventory().setItemInOffHand(tridentItem.clone());
tridentItem.setAmount(tridentItem.getAmount()-1);
player.getInventory().setItem(i, tridentItem);
}
break;
}