mirror of
https://gitlab.com/phoenix-dvpmt/mmoitems.git
synced 2025-02-15 13:31:26 +01:00
Missing functions added
This commit is contained in:
parent
263889f699
commit
83c6d948de
@ -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; }
|
||||
}
|
@ -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;
|
||||
|
@ -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))
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user