mirror of
https://github.com/HibiscusMC/HMCCosmetics.git
synced 2025-12-26 02:19:25 +00:00
Equipment no longer always sends full slots
Signed-off-by: LoJoSho <contact@lojosho.com>
This commit is contained in:
@@ -142,8 +142,6 @@ public class CosmeticFixListener implements Listener {
|
||||
int invTypeClicked = event.getPacket().getIntegers().read(0);
|
||||
int slotClicked = event.getPacket().getIntegers().read(2);
|
||||
|
||||
//plugin.getLogger().log(Level.INFO, "Slot Clicked: " + slotClicked + " | Type clicked: " + invTypeClicked);
|
||||
|
||||
// Must be a player inventory.
|
||||
if (invTypeClicked != 0) return;
|
||||
// -999 is when a player clicks outside their inventory. https://wiki.vg/Inventory#Player_Inventory
|
||||
@@ -178,7 +176,7 @@ public class CosmeticFixListener implements Listener {
|
||||
//plugin.getLogger().log(Level.INFO, "updateOnClick (171)");
|
||||
|
||||
final Location location = player.getLocation();
|
||||
final Equipment equipment = userManager.getItemList(user);
|
||||
final Equipment equipment = new Equipment();
|
||||
final ItemStack cosmetic = userManager.getCosmeticItem(
|
||||
user.getPlayerArmor().getItem(type),
|
||||
current,
|
||||
@@ -189,8 +187,8 @@ public class CosmeticFixListener implements Listener {
|
||||
if (cosmetic != null && cosmetic.getType() != Material.AIR) equipment.setItem(slot, cosmetic);
|
||||
//plugin.getLogger().log(Level.INFO, "Set cosmetic in " + slot + " to " + cosmetic + "(done)");
|
||||
|
||||
final Equipment items =
|
||||
userManager.getItemList(user, equipment, Collections.emptySet());
|
||||
/*
|
||||
final Equipment items = userManager.getItemList(user, equipment, Collections.emptySet());
|
||||
for (EquipmentSlot e : items.keys()) {
|
||||
//final EquipmentSlot s = e.getSlot();
|
||||
final ArmorItem.Type t = ArmorItem.Type.fromWrapper(e);
|
||||
@@ -215,6 +213,7 @@ public class CosmeticFixListener implements Listener {
|
||||
}
|
||||
return;
|
||||
}
|
||||
*/
|
||||
for (final Player other : Bukkit.getOnlinePlayers()) {
|
||||
if (!settings.isInViewDistance(location, other.getLocation())) continue;
|
||||
userManager.sendUpdatePacket(
|
||||
@@ -242,7 +241,6 @@ public class CosmeticFixListener implements Listener {
|
||||
if (windowId != 0) return;
|
||||
final int size = items.size();
|
||||
final PlayerArmor playerArmor = user.getPlayerArmor();
|
||||
//final List<Equipment> equipmentList = new ArrayList<>();
|
||||
final Equipment equip = userManager.getItemList(user);
|
||||
for (final ArmorItem armorItem : playerArmor.getArmorItems()) {
|
||||
final ArmorItem.Type type = armorItem.getType();
|
||||
@@ -262,8 +260,6 @@ public class CosmeticFixListener implements Listener {
|
||||
));
|
||||
if ((current).equals(setTo)) continue;
|
||||
equip.setItem(slot, setTo);
|
||||
//plugin.getLogger().log(Level.INFO, "Setto " + setTo);
|
||||
//equipmentList.add(PacketManager.getEquipment(setTo, slot));
|
||||
}
|
||||
userManager.sendUpdatePacket(
|
||||
user,
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package io.github.fisher2911.hmccosmetics.listener;
|
||||
|
||||
import com.comphenix.protocol.ProtocolLibrary;
|
||||
import io.github.fisher2911.hmccosmetics.HMCCosmetics;
|
||||
import io.github.fisher2911.hmccosmetics.config.WardrobeSettings;
|
||||
import io.github.fisher2911.hmccosmetics.database.Database;
|
||||
@@ -13,6 +14,7 @@ import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.scheduler.BukkitScheduler;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
@@ -36,16 +38,18 @@ public class JoinListener implements Listener {
|
||||
user -> new TaskChain(this.plugin).chain(
|
||||
() -> this.userManager.add(user)
|
||||
).chain(() -> {
|
||||
// this.userManager.resendCosmetics(player);
|
||||
// this.userManager.updateCosmetics(user);
|
||||
final WardrobeSettings settings = this.plugin.getSettings().getWardrobeSettings();
|
||||
if (settings.isAlwaysDisplay() && settings.getWardrobeLocation() != null) {
|
||||
final Wardrobe wardrobe = user.getWardrobe();
|
||||
wardrobe.setCurrentLocation(settings.getWardrobeLocation());
|
||||
wardrobe.spawnFakePlayer(player);
|
||||
}
|
||||
}, true).execute()
|
||||
);
|
||||
// and finally, resend the cosmetics
|
||||
Bukkit.getScheduler().runTaskLaterAsynchronously(HMCCosmetics.getPlugin(HMCCosmetics.class),
|
||||
() -> {
|
||||
this.userManager.updateCosmetics(user);
|
||||
}, 20);
|
||||
}, true).execute());
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
|
||||
@@ -44,7 +44,6 @@ public class PacketManager_1_19_2 extends PacketBase {
|
||||
packet.getModifier().writeDefaults();
|
||||
packet.getIntegers().write(0, armorStandId);
|
||||
WrappedDataWatcher metadata = new WrappedDataWatcher();
|
||||
//final WrappedDataWatcher.Serializer serializer = WrappedDataWatcher.Registry.get(Byte.class);
|
||||
if (metadata == null) return;
|
||||
// 0x10 & 0x20
|
||||
metadata.setObject(new WrappedDataWatcher.WrappedDataWatcherObject(0, WrappedDataWatcher.Registry.get(Byte.class)), (byte) 0x20);
|
||||
|
||||
@@ -258,7 +258,8 @@ public class UserManager {
|
||||
|
||||
public void removeAll() {
|
||||
for (final var user : this.userMap.values()) {
|
||||
user.despawnAttached();
|
||||
// server is shutting down anyways when this is called
|
||||
//user.despawnAttached();
|
||||
}
|
||||
|
||||
this.userMap.clear();
|
||||
@@ -284,7 +285,7 @@ public class UserManager {
|
||||
final ItemStack itemStack = this.getCosmeticItem(armorItem, wearing, ArmorItem.Status.APPLIED, slot);
|
||||
//final List<Equipment> itemList = new ArrayList<>();
|
||||
//itemList.add(PacketManager.getEquipment(itemStack, slot));
|
||||
Equipment equip = user.getEquipment();
|
||||
Equipment equip = new Equipment();
|
||||
equip.setItem(slot, itemStack);
|
||||
this.sendUpdatePacket(user, equip);
|
||||
}
|
||||
|
||||
@@ -65,6 +65,10 @@ public class Wardrobe extends User {
|
||||
viewer
|
||||
);
|
||||
PacketManager.sendFakePlayerInfoPacket(viewer, this.getId(), viewer);
|
||||
PacketManager.sendInvisibilityPacket(
|
||||
this.entityIds.wardrobeViewer(),
|
||||
viewer
|
||||
);
|
||||
});
|
||||
|
||||
Bukkit.getScheduler().runTaskLaterAsynchronously(
|
||||
|
||||
Reference in New Issue
Block a user