9
0
mirror of https://github.com/HibiscusMC/HMCCosmetics.git synced 2026-01-04 15:41:45 +00:00

Players can take off armor in wardrobe

This commit is contained in:
LoJoSho
2022-11-24 10:47:28 -06:00
parent e36bd2d988
commit aa438234ea
3 changed files with 31 additions and 3 deletions

View File

@@ -5,6 +5,7 @@ import com.hibiscusmc.hmccosmetics.config.Settings;
import com.hibiscusmc.hmccosmetics.config.WardrobeSettings;
import com.hibiscusmc.hmccosmetics.cosmetic.Cosmetic;
import com.hibiscusmc.hmccosmetics.cosmetic.CosmeticSlot;
import com.hibiscusmc.hmccosmetics.cosmetic.Cosmetics;
import com.hibiscusmc.hmccosmetics.cosmetic.types.CosmeticBackpackType;
import com.hibiscusmc.hmccosmetics.cosmetic.types.CosmeticBalloonType;
import com.hibiscusmc.hmccosmetics.entities.BalloonEntity;
@@ -137,6 +138,18 @@ public class CosmeticUser {
return true;
}
public int amountOfCosmetics() {
return playerCosmetics.keySet().size();
}
public int amountOfCosmeticsArmor() {
int amount = 0;
for (Cosmetic cosmetic : Cosmetics.values()) {
if (cosmetic.getSlot() == CosmeticSlot.BOOTS || cosmetic.getSlot() == CosmeticSlot.LEGGINGS || cosmetic.getSlot() == CosmeticSlot.CHESTPLATE || cosmetic.getSlot() == CosmeticSlot.HELMET) amount = amount + 1;
}
return amount;
}
public void toggleWardrobe() {
if (isInWardrobe()) {
leaveWardrobe();

View File

@@ -29,7 +29,7 @@ public class Wardrobe {
private Location viewingLocation;
private Location npcLocation;
private Location exitLocation;
private Boolean active;
private boolean active;
public Wardrobe(CosmeticUser user) {
NPC_ID = Entity.nextEntityId();

View File

@@ -8,7 +8,9 @@ import com.hibiscusmc.hmccosmetics.cosmetic.CosmeticSlot;
import com.hibiscusmc.hmccosmetics.cosmetic.types.CosmeticArmorType;
import com.hibiscusmc.hmccosmetics.user.CosmeticUser;
import com.hibiscusmc.hmccosmetics.user.CosmeticUsers;
import com.hibiscusmc.hmccosmetics.util.InventoryUtils;
import com.hibiscusmc.hmccosmetics.util.PlayerUtils;
import com.hibiscusmc.hmccosmetics.util.ServerUtils;
import com.hibiscusmc.hmccosmetics.util.packets.wrappers.WrapperPlayServerNamedEntitySpawn;
import com.hibiscusmc.hmccosmetics.util.packets.wrappers.WrapperPlayServerPlayerInfo;
import com.mojang.datafixers.util.Pair;
@@ -18,6 +20,7 @@ import net.minecraft.network.protocol.game.ClientboundSetEquipmentPacket;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.item.ItemStack;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.craftbukkit.v1_19_R1.CraftEquipmentSlot;
import org.bukkit.craftbukkit.v1_19_R1.inventory.CraftItemStack;
import org.bukkit.entity.Entity;
@@ -95,14 +98,26 @@ public class PacketManager extends BasePacket {
if (cosmeticSlot == CosmeticSlot.BACKPACK || cosmeticSlot == CosmeticSlot.BALLOON) return;
if (!(user.getCosmetic(cosmeticSlot) instanceof CosmeticArmorType)) return;
if (!(user.getCosmetic(cosmeticSlot) instanceof CosmeticArmorType)) {
nmsSlot = CraftEquipmentSlot.getNMS(InventoryUtils.getEquipmentSlot(cosmeticSlot));
nmsItem = CraftItemStack.asNMSCopy(new org.bukkit.inventory.ItemStack(Material.AIR));
Pair<EquipmentSlot, ItemStack> pair = new Pair<>(nmsSlot, nmsItem);
List<Pair<EquipmentSlot, ItemStack>> pairs = Collections.singletonList(pair);
ClientboundSetEquipmentPacket packet = new ClientboundSetEquipmentPacket(entityId, pairs);
for (Player p : sendTo) sendPacket(p, packet);
return;
}
CosmeticArmorType cosmeticArmor = (CosmeticArmorType) user.getCosmetic(cosmeticSlot);
// Converting EquipmentSlot and ItemStack to NMS ones.
nmsSlot = CraftEquipmentSlot.getNMS(cosmeticArmor.getEquipSlot());
nmsItem = CraftItemStack.asNMSCopy(cosmeticArmor.getCosmeticItem());
if (nmsSlot == null || nmsItem == null) return;
if (nmsSlot == null) return;
Pair<EquipmentSlot, ItemStack> pair = new Pair<>(nmsSlot, nmsItem);