Missing functions added

This commit is contained in:
Roch Blonndiaux 2023-01-25 11:53:51 +01:00
parent 263889f699
commit 83c6d948de
5 changed files with 32 additions and 56 deletions

View File

@ -1,42 +0,0 @@
package net.Indyuce.mmoitems.api.event.inventory;
import net.Indyuce.mmoitems.api.player.inventory.EquippedItem;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class MMOItemEquipEvent extends Event {
private final int oldHashcode;
private final int newHashcode;
private final @Nullable EquippedItem oldItem;
private final @Nullable EquippedItem newItem;
public MMOItemEquipEvent(int oldHashcode, int newHashcode, @Nullable EquippedItem oldItem, @Nullable EquippedItem newItem) {
this.oldHashcode = oldHashcode;
this.newHashcode = newHashcode;
this.oldItem = oldItem;
this.newItem = newItem;
}
public int getOldHashcode() {
return oldHashcode;
}
public int getNewHashcode() {
return newHashcode;
}
public @Nullable EquippedItem getOldItem() {
return oldItem;
}
public @Nullable EquippedItem getNewItem() {
return newItem;
}
@NotNull static final HandlerList handlers = new HandlerList();
@NotNull public HandlerList getHandlers() { return handlers; }
@NotNull public static HandlerList getHandlerList() { return handlers; }
}

View File

@ -259,7 +259,6 @@ public class PlayerData {
});
}
}
Bukkit.broadcastMessage("Equipped: " + inventory.equipped().size() + " PlayerData#262");
// Calculate the player's item set
final Map<ItemSet, Integer> itemSetCount = new HashMap<>();
@ -271,7 +270,6 @@ public class PlayerData {
itemSetCount.put(itemSet, itemSetCount.getOrDefault(itemSet, 0) + 1);
}
Bukkit.broadcastMessage("Equipped: " + inventory.equipped().size() + " PlayerData#274");
// Reset and compute item set bonuses
setBonuses = null;
@ -318,8 +316,6 @@ public class PlayerData {
// inventory.boots = getPlayer().getInventory().getBoots();
// inventory.hand = getPlayer().getInventory().getItemInMainHand();
// inventory.offhand = getPlayer().getInventory().getItemInOffHand();
Bukkit.broadcastMessage("Equipped: " + inventory.equipped().size() + " PlayerData#322");
}
public void updateStats() {
@ -441,6 +437,11 @@ public class PlayerData {
this.overridingItemParticles = overridingItemParticles;
}
@ApiStatus.Internal
public void refreshEncumberedValue() {
this.encumbered = isEncumbered();
}
@ApiStatus.Internal
public @NotNull Set<String> permissions() {
return permissions;

View File

@ -55,7 +55,7 @@ public class PlayerStats {
StatInstance.ModifierPacket packet = getInstance(stat).newPacket();
// Remove previous potential modifiers
packet.removeIf(name -> name.startsWith("MMOItem"));
// packet.removeIf(name -> name.startsWith("MMOItem"));
// Add set bonuses
if (playerData.hasSetBonuses() && playerData.getSetBonuses().hasStat(stat))

View File

@ -6,6 +6,7 @@ import io.lumine.mythic.lib.player.skill.PassiveSkill;
import net.Indyuce.mmoitems.ItemStats;
import net.Indyuce.mmoitems.MMOItems;
import net.Indyuce.mmoitems.api.ItemSet;
import net.Indyuce.mmoitems.api.event.inventory.MMOInventoryRefreshEvent;
import net.Indyuce.mmoitems.api.item.mmoitem.VolatileMMOItem;
import net.Indyuce.mmoitems.api.player.PlayerData;
import net.Indyuce.mmoitems.api.player.inventory.EquippedItem;
@ -14,6 +15,7 @@ import net.Indyuce.mmoitems.comp.inventory.model.PlayerMMOInventory;
import net.Indyuce.mmoitems.comp.inventory.model.SlotEquippedItem;
import net.Indyuce.mmoitems.stat.data.*;
import net.milkbowl.vault.permission.Permission;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffect;
import org.bukkit.scheduler.BukkitRunnable;
@ -79,6 +81,12 @@ public class PlayerInventoryHandler implements Runnable {
// Process old item sets
this.processOldItemSets();
// Refresh player data
this.data.refreshEncumberedValue();
// Call Bukkit event
Bukkit.getPluginManager().callEvent(new MMOInventoryRefreshEvent(inventory.equipped(), this.data.getPlayer(), this.data));
// Process new item sets
this.processNewItemSets(newImage);
}
@ -140,6 +148,8 @@ public class PlayerInventoryHandler implements Runnable {
}
private void processNewItemSets(@NotNull PlayerInventoryImage newImage) {
MMOItems.log("Processing new item sets...");
// Count the number of items in each set
final Map<ItemSet, Integer> itemSetCount = new HashMap<>();
for (EquippedItem equipped : inventory.equipped()) {
@ -151,8 +161,10 @@ public class PlayerInventoryHandler implements Runnable {
}
// Add item sets to the image
itemSetCount.forEach((itemSet, integer) -> newImage.itemSets().put(itemSet.getId(), integer));
itemSetCount.forEach((itemSet, integer) -> {
newImage.itemSets().put(itemSet.getId(), integer);
MMOItems.log("Added item set " + itemSet.getId() + " with " + integer + " items.");
});
// Determine the bonuses to apply
ItemSet.SetBonuses bonuses = null;
for (Map.Entry<ItemSet, Integer> equippedSetBonus : itemSetCount.entrySet()) {
@ -163,8 +175,12 @@ public class PlayerInventoryHandler implements Runnable {
}
// Apply the bonuses
if (bonuses == null)
if (bonuses == null) {
MMOItems.log("No bonuses to apply.");
return;
}
MMOItems.log("Applying bonuses... Abilities: " + bonuses.getAbilities().size() + " Particles: " + bonuses.getParticles().size() + " Potion effects: " + bonuses.getPotionEffects().size() + " Permissions: " + bonuses.getPermissions().size());
if (MMOItems.plugin.hasPermissions()) {
final Permission perms = MMOItems.plugin.getVault().getPermissions();
for (String perm : bonuses.getPermissions())
@ -174,6 +190,7 @@ public class PlayerInventoryHandler implements Runnable {
// Abilities
for (AbilityData ability : bonuses.getAbilities()) {
MMOItems.log("Adding ability: " + ability.getAbility().getName());
PassiveSkill skill = this.data.getMMOPlayerData().getPassiveSkillMap().addModifier(new PassiveSkill("MMOItemsItem", ability, EquipmentSlot.OTHER, ModifierSource.OTHER));
if (skill != null)
newImage.setAbilities().add(skill.getUniqueId());
@ -184,9 +201,12 @@ public class PlayerInventoryHandler implements Runnable {
this.data.getItemParticles().add(particle.start(this.data));
// Potion effects
for (PotionEffect effect : bonuses.getPotionEffects())
for (PotionEffect effect : bonuses.getPotionEffects()) {
MMOItems.log("Adding potion effect: " + effect.getType().getName());
if (this.data.getPermanentPotionEffectAmplifier(effect.getType()) < effect.getAmplifier())
this.data.getPermanentPotionEffectsMap().put(effect.getType(), effect);
}
}
private void processOldItem(int slot, @Nullable VolatileMMOItem oldItem) {
@ -202,7 +222,7 @@ public class PlayerInventoryHandler implements Runnable {
// Abilities
if (oldItem.hasData(ItemStats.ABILITIES))
image.itemAbilities()
.get(slot)
.getOrDefault(slot, new ArrayList<>())
.forEach(uuid -> this.data.getMMOPlayerData().getPassiveSkillMap().removeModifier(uuid));
// Item particles

View File

@ -6,10 +6,7 @@ import net.Indyuce.mmoitems.comp.inventory.PlayerInventoryHandler;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
import java.util.*;
/**
* mmoitems