9
0
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:
LoJoSho
2022-09-30 12:29:10 -05:00
parent 5ffe39cdba
commit d4bf6f256b
5 changed files with 19 additions and 15 deletions

View File

@@ -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,

View File

@@ -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

View File

@@ -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);

View File

@@ -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);
}

View File

@@ -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(