9
0
mirror of https://github.com/HibiscusMC/HMCCosmetics.git synced 2025-12-19 15:09:19 +00:00

fix: hidden backpacks still having armorstands spawned

This commit is contained in:
LoJoSho
2024-01-02 20:34:25 -06:00
parent 8c251a8c69
commit 63bda02869
3 changed files with 15 additions and 8 deletions

View File

@@ -340,6 +340,7 @@ public class PlayerGameListener implements Listener {
public void onPlayerGamemodeSwitch(PlayerGameModeChangeEvent event) {
CosmeticUser user = CosmeticUsers.getUser(event.getPlayer());
if (user == null) return;
if (user.isInWardrobe()) user.leaveWardrobe(true);
if (Settings.isDisabledGamemodesEnabled()) {
if (Settings.getDisabledGamemodes().contains(event.getNewGameMode().toString())) {

View File

@@ -209,7 +209,9 @@ public class CosmeticUser {
}
public ItemStack getUserCosmeticItem(CosmeticSlot slot) {
return getUserCosmeticItem(getCosmetic(slot));
Cosmetic cosmetic = getCosmetic(slot);
if (cosmetic == null) return new ItemStack(Material.AIR);
return getUserCosmeticItem(cosmetic);
}
public ItemStack getUserCosmeticItem(Cosmetic cosmetic) {
@@ -335,7 +337,7 @@ public class CosmeticUser {
leaveWardrobe(false);
}
public void leaveWardrobe(boolean disconnecting) {
public void leaveWardrobe(boolean ejected) {
PlayerWardrobeLeaveEvent event = new PlayerWardrobeLeaveEvent(this);
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) {
@@ -346,7 +348,7 @@ public class CosmeticUser {
getWardrobeManager().setWardrobeStatus(UserWardrobeManager.WardrobeStatus.STOPPING);
if (WardrobeSettings.isEnabledTransition() && !disconnecting) {
if (WardrobeSettings.isEnabledTransition() && !ejected) {
MessagesUtil.sendTitle(
getPlayer(),
WardrobeSettings.getTransitionText(),
@@ -413,6 +415,7 @@ public class CosmeticUser {
if (!hasCosmeticInSlot(CosmeticSlot.BACKPACK)) return;
final Cosmetic cosmetic = getCosmetic(CosmeticSlot.BACKPACK);
despawnBackpack();
if (hideCosmetics) return;
spawnBackpack((CosmeticBackpackType) cosmetic);
MessagesUtil.sendDebugMessages("Respawned Backpack for " + getEntity().getName());
}
@@ -512,7 +515,7 @@ public class CosmeticUser {
getBalloonManager().sendRemoveLeashPacket();
}
if (hasCosmeticInSlot(CosmeticSlot.BACKPACK)) {
userBackpackManager.clearItems();
despawnBackpack();
}
updateCosmetic();
MessagesUtil.sendDebugMessages("HideCosmetics");
@@ -535,7 +538,8 @@ public class CosmeticUser {
List<Player> viewer = HMCCPlayerUtils.getNearbyPlayers(getEntity().getLocation());
HMCCPacketManager.sendLeashPacket(getBalloonManager().getPufferfishBalloonId(), getPlayer().getEntityId(), viewer);
}
if (hasCosmeticInSlot(CosmeticSlot.BACKPACK) && isBackpackSpawned()) {
if (hasCosmeticInSlot(CosmeticSlot.BACKPACK)) {
if (!isBackpackSpawned()) respawnBackpack();
CosmeticBackpackType cosmeticBackpackType = (CosmeticBackpackType) getCosmetic(CosmeticSlot.BACKPACK);
ItemStack item = getUserCosmeticItem(cosmeticBackpackType);
userBackpackManager.setItem(item);

View File

@@ -136,9 +136,11 @@ public class UserWardrobeManager {
if (user.hasCosmeticInSlot(CosmeticSlot.BACKPACK)) {
// Maybe null as backpack maybe despawned before entering
if (user.getUserBackpackManager() == null) user.respawnBackpack();
user.getUserBackpackManager().getEntityManager().teleport(npcLocation.clone().add(0, 2, 0));
PacketManager.equipmentSlotUpdate(user.getUserBackpackManager().getFirstArmorStandId(), EquipmentSlot.HEAD, user.getUserCosmeticItem(user.getCosmetic(CosmeticSlot.BACKPACK)), viewer);
HMCCPacketManager.ridingMountPacket(NPC_ID, user.getUserBackpackManager().getFirstArmorStandId(), viewer);
if (user.isBackpackSpawned()) {
user.getUserBackpackManager().getEntityManager().teleport(npcLocation.clone().add(0, 2, 0));
PacketManager.equipmentSlotUpdate(user.getUserBackpackManager().getFirstArmorStandId(), EquipmentSlot.HEAD, user.getUserCosmeticItem(user.getCosmetic(CosmeticSlot.BACKPACK)), viewer);
HMCCPacketManager.ridingMountPacket(NPC_ID, user.getUserBackpackManager().getFirstArmorStandId(), viewer);
}
}
if (user.hasCosmeticInSlot(CosmeticSlot.BALLOON)) {