9
0
mirror of https://github.com/HibiscusMC/HMCCosmetics.git synced 2025-12-20 15:39:16 +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) { public void onPlayerGamemodeSwitch(PlayerGameModeChangeEvent event) {
CosmeticUser user = CosmeticUsers.getUser(event.getPlayer()); CosmeticUser user = CosmeticUsers.getUser(event.getPlayer());
if (user == null) return; if (user == null) return;
if (user.isInWardrobe()) user.leaveWardrobe(true);
if (Settings.isDisabledGamemodesEnabled()) { if (Settings.isDisabledGamemodesEnabled()) {
if (Settings.getDisabledGamemodes().contains(event.getNewGameMode().toString())) { if (Settings.getDisabledGamemodes().contains(event.getNewGameMode().toString())) {

View File

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

View File

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