Search in sources :

Example 1 with MyVillager

use of de.Keyle.MyPet.api.entity.types.MyVillager in project MyPet by xXKeyleXx.

the class EntityConverterService method convertEntity.

@Override
public void convertEntity(MyPet myPet, LivingEntity normalEntity) {
    if (myPet instanceof MyCreeper) {
        if (((MyCreeper) myPet).isPowered()) {
            ((Creeper) normalEntity).setPowered(true);
        }
    } else if (myPet instanceof MyGoat) {
        if (((MyGoat) myPet).isScreaming()) {
            ((Goat) normalEntity).setScreaming(true);
        }
    } else if (myPet instanceof MyEnderman) {
        if (((MyEnderman) myPet).hasBlock()) {
            ((Enderman) normalEntity).setCarriedMaterial(((MyEnderman) myPet).getBlock().getData());
        }
    } else if (myPet instanceof MyIronGolem) {
        ((IronGolem) normalEntity).setPlayerCreated(true);
    } else if (myPet instanceof MyMagmaCube) {
        ((MagmaCube) normalEntity).setSize(((MyMagmaCube) myPet).getSize());
    } else if (myPet instanceof MyPig) {
        ((Pig) normalEntity).setSaddle(((MyPig) myPet).hasSaddle());
    } else if (myPet instanceof MySheep) {
        ((Sheep) normalEntity).setSheared(((MySheep) myPet).isSheared());
        ((Sheep) normalEntity).setColor(((MySheep) myPet).getColor());
    } else if (myPet instanceof MyVillager) {
        MyVillager villagerPet = (MyVillager) myPet;
        Villager villagerEntity = ((Villager) normalEntity);
        Villager.Profession profession = Villager.Profession.values()[villagerPet.getProfession()];
        Villager.Type type = Villager.Type.values()[villagerPet.getType().ordinal()];
        villagerEntity.setVillagerType(type);
        villagerEntity.setProfession(profession);
        villagerEntity.setVillagerLevel(villagerPet.getVillagerLevel());
        if (villagerPet.hasOriginalData()) {
            TagCompound villagerTag = villagerPet.getOriginalData();
            net.minecraft.world.entity.npc.Villager entityVillager = ((CraftVillager) villagerEntity).getHandle();
            try {
                if (villagerTag.containsKey("Offers")) {
                    TagCompound offersTag = villagerTag.get("Offers");
                    CompoundTag vanillaNBT = (CompoundTag) ItemStackNBTConverter.compoundToVanillaCompound(offersTag);
                    entityVillager.setOffers(new MerchantOffers(vanillaNBT));
                }
                if (villagerTag.containsKey("Inventory")) {
                    TagList inventoryTag = villagerTag.get("Inventory");
                    ListTag vanillaNBT = (ListTag) ItemStackNBTConverter.compoundToVanillaCompound(inventoryTag);
                    for (int i = 0; i < vanillaNBT.size(); ++i) {
                        net.minecraft.world.item.ItemStack itemstack = net.minecraft.world.item.ItemStack.of(vanillaNBT.getCompound(i));
                        ItemStack item = CraftItemStack.asCraftMirror(itemstack);
                        if (!itemstack.isEmpty()) {
                            Villager vill = ((Villager) Bukkit.getServer().getEntity(normalEntity.getUniqueId()));
                            vill.getInventory().addItem(item);
                        }
                    }
                }
                if (villagerTag.containsKey("FoodLevel")) {
                    byte foodLevel = villagerTag.getAs("FoodLevel", TagByte.class).getByteData();
                    // Field: foodLevel
                    ReflectionUtil.setFieldValue("cq", entityVillager, foodLevel);
                }
                if (villagerTag.containsKey("Gossips")) {
                    TagList inventoryTag = villagerTag.get("Gossips");
                    ListTag vanillaNBT = (ListTag) ItemStackNBTConverter.compoundToVanillaCompound(inventoryTag);
                    // This might be useful for later/following versions
                    // ((GossipContainer) ReflectionUtil.getFieldValue(net.minecraft.world.entity.npc.Villager.class, entityVillager, "cr")) //Field: gossips
                    entityVillager.getGossips().update(new Dynamic<>(NbtOps.INSTANCE, vanillaNBT));
                }
                if (villagerTag.containsKey("LastRestock")) {
                    long lastRestock = villagerTag.getAs("LastRestock", TagLong.class).getLongData();
                    // Field: lastRestockGameTime
                    ReflectionUtil.setFieldValue("cv", entityVillager, lastRestock);
                }
                if (villagerTag.containsKey("LastGossipDecay")) {
                    long lastGossipDecay = villagerTag.getAs("LastGossipDecay", TagLong.class).getLongData();
                    // Field: lastGossipDecayTime
                    ReflectionUtil.setFieldValue("ct", entityVillager, lastGossipDecay);
                }
                if (villagerTag.containsKey("RestocksToday")) {
                    int restocksToday = villagerTag.getAs("RestocksToday", TagInt.class).getIntData();
                    // Field: numberOfRestocksToday
                    ReflectionUtil.setFieldValue("cw", entityVillager, restocksToday);
                }
                // Field: AssignProfessionWhenSpawned
                ReflectionUtil.setFieldValue("cy", entityVillager, true);
            } catch (Exception e) {
                e.printStackTrace();
            }
            if (villagerTag.containsKey("Xp")) {
                int xp = villagerTag.getAs("Xp", TagInt.class).getIntData();
                entityVillager.setVillagerXp(xp);
            }
        }
    } else if (myPet instanceof MySlime) {
        ((Slime) normalEntity).setSize(((MySlime) myPet).getSize());
    } else if (myPet instanceof MyZombieVillager) {
        Villager.Profession profession = Villager.Profession.values()[((MyZombieVillager) myPet).getProfession()];
        net.minecraft.world.entity.monster.ZombieVillager nmsEntity = ((CraftVillagerZombie) normalEntity).getHandle();
        nmsEntity.setVillagerData(nmsEntity.getVillagerData().setType(Registry.VILLAGER_TYPE.get(new ResourceLocation(((MyZombieVillager) myPet).getType().name().toLowerCase(Locale.ROOT)))).setLevel(((MyZombieVillager) myPet).getTradingLevel()).setProfession(Registry.VILLAGER_PROFESSION.get(new ResourceLocation(profession.name().toLowerCase(Locale.ROOT)))));
    } else if (myPet instanceof MyWitherSkeleton) {
        normalEntity.getEquipment().setItemInMainHand(new ItemStack(Material.STONE_SWORD));
    } else if (myPet instanceof MySkeleton) {
        normalEntity.getEquipment().setItemInMainHand(new ItemStack(Material.BOW));
    } else if (myPet instanceof MyHorse) {
        Horse.Style style = Horse.Style.values()[(((MyHorse) myPet).getVariant() >>> 8)];
        Horse.Color color = Horse.Color.values()[(((MyHorse) myPet).getVariant() & 0xFF)];
        ((Horse) normalEntity).setColor(color);
        ((Horse) normalEntity).setStyle(style);
        if (((MyHorse) myPet).hasSaddle()) {
            ((Horse) normalEntity).getInventory().setSaddle(((MyHorse) myPet).getSaddle().clone());
        }
        if (((MyHorse) myPet).hasArmor()) {
            ((Horse) normalEntity).getInventory().setArmor(((MyHorse) myPet).getArmor().clone());
        }
        ((Horse) normalEntity).setOwner(myPet.getOwner().getPlayer());
    } else if (myPet instanceof MySkeletonHorse) {
        ((SkeletonHorse) normalEntity).setOwner(myPet.getOwner().getPlayer());
    } else if (myPet instanceof MyZombieHorse) {
        ((ZombieHorse) normalEntity).setOwner(myPet.getOwner().getPlayer());
    } else if (myPet instanceof MyLlama) {
        ((Llama) normalEntity).setColor(Llama.Color.values()[Math.max(0, Math.min(3, ((MyLlama) myPet).getVariant()))]);
        ((Llama) normalEntity).setCarryingChest(((MyLlama) myPet).hasChest());
        if (((MyLlama) myPet).hasDecor()) {
            ((Llama) normalEntity).getInventory().setDecor(((MyLlama) myPet).getDecor());
        }
        ((Llama) normalEntity).setOwner(myPet.getOwner().getPlayer());
    } else if (myPet instanceof MyRabbit) {
        ((Rabbit) normalEntity).setRabbitType(((MyRabbit) myPet).getVariant().getBukkitType());
    } else if (myPet instanceof MyParrot) {
        ((Parrot) normalEntity).setVariant(Parrot.Variant.values()[((MyParrot) myPet).getVariant()]);
    } else if (myPet instanceof MyAxolotl) {
        ((Axolotl) normalEntity).setVariant(Axolotl.Variant.values()[((MyAxolotl) myPet).getVariant()]);
    } else if (myPet instanceof MyTropicalFish) {
        ((CraftTropicalFish) normalEntity).getHandle().setVariant(((MyTropicalFish) myPet).getVariant());
    } else if (myPet instanceof MyPufferfish) {
        ((PufferFish) normalEntity).setPuffState(((MyPufferfish) myPet).getPuffState().ordinal());
    } else if (myPet instanceof MyPhantom) {
        ((Phantom) normalEntity).setSize(((MyPhantom) myPet).getSize());
    } else if (myPet instanceof MyCat) {
        ((Cat) normalEntity).setCatType(((MyCat) myPet).getCatType());
        ((Cat) normalEntity).setCollarColor(((MyCat) myPet).getCollarColor());
    } else if (myPet instanceof MyMooshroom) {
        ((MushroomCow) normalEntity).setVariant(MushroomCow.Variant.values()[((MyMooshroom) myPet).getType().ordinal()]);
    } else if (myPet instanceof MyPanda) {
        ((Panda) normalEntity).setMainGene(((MyPanda) myPet).getMainGene());
        ((Panda) normalEntity).setHiddenGene(((MyPanda) myPet).getHiddenGene());
    } else if (myPet instanceof WanderingTrader) {
        MyWanderingTrader traderPet = (MyWanderingTrader) myPet;
        if (traderPet.hasOriginalData()) {
            TagCompound villagerTag = MyPetApi.getPlatformHelper().entityToTag(normalEntity);
            for (String key : traderPet.getOriginalData().getCompoundData().keySet()) {
                villagerTag.put(key, traderPet.getOriginalData().get(key));
            }
            MyPetApi.getPlatformHelper().applyTagToEntity(villagerTag, normalEntity);
        }
    } else if (myPet instanceof MyBee) {
        ((Bee) normalEntity).setHasNectar(((MyBee) myPet).hasNectar());
        ((Bee) normalEntity).setHasStung(((MyBee) myPet).hasStung());
    }
    if (myPet instanceof MyPetBaby && normalEntity instanceof Ageable) {
        if (((MyPetBaby) myPet).isBaby()) {
            ((Ageable) normalEntity).setBaby();
        } else {
            ((Ageable) normalEntity).setAdult();
        }
    }
}
Also used : MyZombieHorse(de.Keyle.MyPet.api.entity.types.MyZombieHorse) MyTropicalFish(de.Keyle.MyPet.api.entity.types.MyTropicalFish) MyWitherSkeleton(de.Keyle.MyPet.api.entity.types.MyWitherSkeleton) MyEnderman(de.Keyle.MyPet.api.entity.types.MyEnderman) MyCreeper(de.Keyle.MyPet.api.entity.types.MyCreeper) CraftTropicalFish(org.bukkit.craftbukkit.v1_18_R1.entity.CraftTropicalFish) MyMagmaCube(de.Keyle.MyPet.api.entity.types.MyMagmaCube) MySheep(de.Keyle.MyPet.api.entity.types.MySheep) MyWanderingTrader(de.Keyle.MyPet.api.entity.types.MyWanderingTrader) MyHorse(de.Keyle.MyPet.api.entity.types.MyHorse) AbstractHorse(org.bukkit.entity.AbstractHorse) MyHorse(de.Keyle.MyPet.api.entity.types.MyHorse) ChestedHorse(org.bukkit.entity.ChestedHorse) Horse(org.bukkit.entity.Horse) MySkeletonHorse(de.Keyle.MyPet.api.entity.types.MySkeletonHorse) ZombieHorse(org.bukkit.entity.ZombieHorse) MyZombieHorse(de.Keyle.MyPet.api.entity.types.MyZombieHorse) SkeletonHorse(org.bukkit.entity.SkeletonHorse) MyZombieVillager(de.Keyle.MyPet.api.entity.types.MyZombieVillager) MyVillager(de.Keyle.MyPet.api.entity.types.MyVillager) ZombieVillager(org.bukkit.entity.ZombieVillager) Villager(org.bukkit.entity.Villager) CraftVillager(org.bukkit.craftbukkit.v1_18_R1.entity.CraftVillager) WanderingTrader(org.bukkit.entity.WanderingTrader) MyWanderingTrader(de.Keyle.MyPet.api.entity.types.MyWanderingTrader) MyParrot(de.Keyle.MyPet.api.entity.types.MyParrot) MySkeleton(de.Keyle.MyPet.api.entity.types.MySkeleton) MyCat(de.Keyle.MyPet.api.entity.types.MyCat) MyPanda(de.Keyle.MyPet.api.entity.types.MyPanda) MySlime(de.Keyle.MyPet.api.entity.types.MySlime) MySkeletonHorse(de.Keyle.MyPet.api.entity.types.MySkeletonHorse) MyMooshroom(de.Keyle.MyPet.api.entity.types.MyMooshroom) Panda(org.bukkit.entity.Panda) MyPanda(de.Keyle.MyPet.api.entity.types.MyPanda) ZombieHorse(org.bukkit.entity.ZombieHorse) MyZombieHorse(de.Keyle.MyPet.api.entity.types.MyZombieHorse) MyPufferfish(de.Keyle.MyPet.api.entity.types.MyPufferfish) Enderman(org.bukkit.entity.Enderman) MyEnderman(de.Keyle.MyPet.api.entity.types.MyEnderman) MyGoat(de.Keyle.MyPet.api.entity.types.MyGoat) MyIronGolem(de.Keyle.MyPet.api.entity.types.MyIronGolem) Cat(org.bukkit.entity.Cat) MyCat(de.Keyle.MyPet.api.entity.types.MyCat) MyZombieVillager(de.Keyle.MyPet.api.entity.types.MyZombieVillager) ZombieVillager(org.bukkit.entity.ZombieVillager) MyAxolotl(de.Keyle.MyPet.api.entity.types.MyAxolotl) Axolotl(org.bukkit.entity.Axolotl) CraftItemStack(org.bukkit.craftbukkit.v1_18_R1.inventory.CraftItemStack) ItemStack(org.bukkit.inventory.ItemStack) Dynamic(com.mojang.serialization.Dynamic) MyCreeper(de.Keyle.MyPet.api.entity.types.MyCreeper) Creeper(org.bukkit.entity.Creeper) MyRabbit(de.Keyle.MyPet.api.entity.types.MyRabbit) Rabbit(org.bukkit.entity.Rabbit) Ageable(org.bukkit.entity.Ageable) TagCompound(de.keyle.knbt.TagCompound) MyLlama(de.Keyle.MyPet.api.entity.types.MyLlama) MyZombieVillager(de.Keyle.MyPet.api.entity.types.MyZombieVillager) MyPig(de.Keyle.MyPet.api.entity.types.MyPig) ResourceLocation(net.minecraft.resources.ResourceLocation) TagList(de.keyle.knbt.TagList) MyPhantom(de.Keyle.MyPet.api.entity.types.MyPhantom) MagmaCube(org.bukkit.entity.MagmaCube) MyMagmaCube(de.Keyle.MyPet.api.entity.types.MyMagmaCube) CompoundTag(net.minecraft.nbt.CompoundTag) MyVillager(de.Keyle.MyPet.api.entity.types.MyVillager) MyBee(de.Keyle.MyPet.api.entity.types.MyBee) MyBee(de.Keyle.MyPet.api.entity.types.MyBee) Bee(org.bukkit.entity.Bee) PufferFish(org.bukkit.entity.PufferFish) MyAxolotl(de.Keyle.MyPet.api.entity.types.MyAxolotl) Slime(org.bukkit.entity.Slime) MySlime(de.Keyle.MyPet.api.entity.types.MySlime) ListTag(net.minecraft.nbt.ListTag) MyLlama(de.Keyle.MyPet.api.entity.types.MyLlama) Llama(org.bukkit.entity.Llama) MerchantOffers(net.minecraft.world.item.trading.MerchantOffers) MyRabbit(de.Keyle.MyPet.api.entity.types.MyRabbit) MyPetBaby(de.Keyle.MyPet.api.entity.MyPetBaby) MySheep(de.Keyle.MyPet.api.entity.types.MySheep) Sheep(org.bukkit.entity.Sheep)

Example 2 with MyVillager

use of de.Keyle.MyPet.api.entity.types.MyVillager in project MyPet by xXKeyleXx.

the class EntityConverterService method convertEntity.

@Override
public void convertEntity(MyPet myPet, LivingEntity normalEntity) {
    if (myPet instanceof MyCreeper) {
        if (((MyCreeper) myPet).isPowered()) {
            ((Creeper) normalEntity).setPowered(true);
        }
    } else if (myPet instanceof MyGoat) {
        if (((MyGoat) myPet).isScreaming()) {
            ((Goat) normalEntity).setScreaming(true);
        }
    } else if (myPet instanceof MyEnderman) {
        if (((MyEnderman) myPet).hasBlock()) {
            ((Enderman) normalEntity).setCarriedMaterial(((MyEnderman) myPet).getBlock().getData());
        }
    } else if (myPet instanceof MyIronGolem) {
        ((IronGolem) normalEntity).setPlayerCreated(true);
    } else if (myPet instanceof MyMagmaCube) {
        ((MagmaCube) normalEntity).setSize(((MyMagmaCube) myPet).getSize());
    } else if (myPet instanceof MyPig) {
        ((Pig) normalEntity).setSaddle(((MyPig) myPet).hasSaddle());
    } else if (myPet instanceof MySheep) {
        ((Sheep) normalEntity).setSheared(((MySheep) myPet).isSheared());
        ((Sheep) normalEntity).setColor(((MySheep) myPet).getColor());
    } else if (myPet instanceof MyVillager) {
        MyVillager villagerPet = (MyVillager) myPet;
        Villager villagerEntity = ((Villager) normalEntity);
        Villager.Profession profession = Villager.Profession.values()[villagerPet.getProfession()];
        Villager.Type type = Villager.Type.values()[villagerPet.getType().ordinal()];
        villagerEntity.setVillagerType(type);
        villagerEntity.setProfession(profession);
        villagerEntity.setVillagerLevel(villagerPet.getVillagerLevel());
        if (villagerPet.hasOriginalData()) {
            TagCompound villagerTag = villagerPet.getOriginalData();
            net.minecraft.world.entity.npc.Villager entityVillager = ((CraftVillager) villagerEntity).getHandle();
            try {
                if (villagerTag.containsKey("Offers")) {
                    TagCompound offersTag = villagerTag.get("Offers");
                    CompoundTag vanillaNBT = (CompoundTag) ItemStackNBTConverter.compoundToVanillaCompound(offersTag);
                    entityVillager.setOffers(new MerchantOffers(vanillaNBT));
                }
                if (villagerTag.containsKey("Inventory")) {
                    TagList inventoryTag = villagerTag.get("Inventory");
                    ListTag vanillaNBT = (ListTag) ItemStackNBTConverter.compoundToVanillaCompound(inventoryTag);
                    for (int i = 0; i < vanillaNBT.size(); ++i) {
                        net.minecraft.world.item.ItemStack itemstack = net.minecraft.world.item.ItemStack.of(vanillaNBT.getCompound(i));
                        ItemStack item = CraftItemStack.asCraftMirror(itemstack);
                        if (!itemstack.isEmpty()) {
                            Villager vill = ((Villager) Bukkit.getServer().getEntity(normalEntity.getUniqueId()));
                            vill.getInventory().addItem(item);
                        }
                    }
                }
                if (villagerTag.containsKey("FoodLevel")) {
                    byte foodLevel = villagerTag.getAs("FoodLevel", TagByte.class).getByteData();
                    // Field: foodLevel
                    ReflectionUtil.setFieldValue("cn", entityVillager, foodLevel);
                }
                if (villagerTag.containsKey("Gossips")) {
                    TagList inventoryTag = villagerTag.get("Gossips");
                    ListTag vanillaNBT = (ListTag) ItemStackNBTConverter.compoundToVanillaCompound(inventoryTag);
                    // Field: gossips
                    ((GossipContainer) ReflectionUtil.getFieldValue(net.minecraft.world.entity.npc.Villager.class, entityVillager, "co")).update(new Dynamic<>(NbtOps.INSTANCE, vanillaNBT));
                }
                if (villagerTag.containsKey("LastRestock")) {
                    long lastRestock = villagerTag.getAs("LastRestock", TagLong.class).getLongData();
                    // Field: lastRestockGameTime
                    ReflectionUtil.setFieldValue("cs", entityVillager, lastRestock);
                }
                if (villagerTag.containsKey("LastGossipDecay")) {
                    long lastGossipDecay = villagerTag.getAs("LastGossipDecay", TagLong.class).getLongData();
                    // Field: lastGossipDecayTime
                    ReflectionUtil.setFieldValue("cq", entityVillager, lastGossipDecay);
                }
                if (villagerTag.containsKey("RestocksToday")) {
                    int restocksToday = villagerTag.getAs("RestocksToday", TagInt.class).getIntData();
                    // Field: numberOfRestocksToday
                    ReflectionUtil.setFieldValue("ct", entityVillager, restocksToday);
                }
                // Field: AssignProfessionWhenSpawned
                ReflectionUtil.setFieldValue("cv", entityVillager, true);
            } catch (Exception e) {
                e.printStackTrace();
            }
            if (villagerTag.containsKey("Xp")) {
                int xp = villagerTag.getAs("Xp", TagInt.class).getIntData();
                entityVillager.setVillagerXp(xp);
            }
        }
    } else if (myPet instanceof MySlime) {
        ((Slime) normalEntity).setSize(((MySlime) myPet).getSize());
    } else if (myPet instanceof MyZombieVillager) {
        Villager.Profession profession = Villager.Profession.values()[((MyZombieVillager) myPet).getProfession()];
        net.minecraft.world.entity.monster.ZombieVillager nmsEntity = ((CraftVillagerZombie) normalEntity).getHandle();
        nmsEntity.setVillagerData(nmsEntity.getVillagerData().setType(Registry.VILLAGER_TYPE.get(new ResourceLocation(((MyZombieVillager) myPet).getType().name().toLowerCase(Locale.ROOT)))).setLevel(((MyZombieVillager) myPet).getTradingLevel()).setProfession(Registry.VILLAGER_PROFESSION.get(new ResourceLocation(profession.name().toLowerCase(Locale.ROOT)))));
    } else if (myPet instanceof MyWitherSkeleton) {
        normalEntity.getEquipment().setItemInMainHand(new ItemStack(Material.STONE_SWORD));
    } else if (myPet instanceof MySkeleton) {
        normalEntity.getEquipment().setItemInMainHand(new ItemStack(Material.BOW));
    } else if (myPet instanceof MyHorse) {
        Horse.Style style = Horse.Style.values()[(((MyHorse) myPet).getVariant() >>> 8)];
        Horse.Color color = Horse.Color.values()[(((MyHorse) myPet).getVariant() & 0xFF)];
        ((Horse) normalEntity).setColor(color);
        ((Horse) normalEntity).setStyle(style);
        if (((MyHorse) myPet).hasSaddle()) {
            ((Horse) normalEntity).getInventory().setSaddle(((MyHorse) myPet).getSaddle().clone());
        }
        if (((MyHorse) myPet).hasArmor()) {
            ((Horse) normalEntity).getInventory().setArmor(((MyHorse) myPet).getArmor().clone());
        }
        ((Horse) normalEntity).setOwner(myPet.getOwner().getPlayer());
    } else if (myPet instanceof MySkeletonHorse) {
        ((SkeletonHorse) normalEntity).setOwner(myPet.getOwner().getPlayer());
    } else if (myPet instanceof MyZombieHorse) {
        ((ZombieHorse) normalEntity).setOwner(myPet.getOwner().getPlayer());
    } else if (myPet instanceof MyLlama) {
        ((Llama) normalEntity).setColor(Llama.Color.values()[Math.max(0, Math.min(3, ((MyLlama) myPet).getVariant()))]);
        ((Llama) normalEntity).setCarryingChest(((MyLlama) myPet).hasChest());
        if (((MyLlama) myPet).hasDecor()) {
            ((Llama) normalEntity).getInventory().setDecor(((MyLlama) myPet).getDecor());
        }
        ((Llama) normalEntity).setOwner(myPet.getOwner().getPlayer());
    } else if (myPet instanceof MyRabbit) {
        ((Rabbit) normalEntity).setRabbitType(((MyRabbit) myPet).getVariant().getBukkitType());
    } else if (myPet instanceof MyParrot) {
        ((Parrot) normalEntity).setVariant(Parrot.Variant.values()[((MyParrot) myPet).getVariant()]);
    } else if (myPet instanceof MyAxolotl) {
        ((Axolotl) normalEntity).setVariant(Axolotl.Variant.values()[((MyAxolotl) myPet).getVariant()]);
    } else if (myPet instanceof MyTropicalFish) {
        ((CraftTropicalFish) normalEntity).getHandle().setVariant(((MyTropicalFish) myPet).getVariant());
    } else if (myPet instanceof MyPufferfish) {
        ((PufferFish) normalEntity).setPuffState(((MyPufferfish) myPet).getPuffState().ordinal());
    } else if (myPet instanceof MyPhantom) {
        ((Phantom) normalEntity).setSize(((MyPhantom) myPet).getSize());
    } else if (myPet instanceof MyCat) {
        ((Cat) normalEntity).setCatType(((MyCat) myPet).getCatType());
        ((Cat) normalEntity).setCollarColor(((MyCat) myPet).getCollarColor());
    } else if (myPet instanceof MyMooshroom) {
        ((MushroomCow) normalEntity).setVariant(MushroomCow.Variant.values()[((MyMooshroom) myPet).getType().ordinal()]);
    } else if (myPet instanceof MyPanda) {
        ((Panda) normalEntity).setMainGene(((MyPanda) myPet).getMainGene());
        ((Panda) normalEntity).setHiddenGene(((MyPanda) myPet).getHiddenGene());
    } else if (myPet instanceof WanderingTrader) {
        MyWanderingTrader traderPet = (MyWanderingTrader) myPet;
        if (traderPet.hasOriginalData()) {
            TagCompound villagerTag = MyPetApi.getPlatformHelper().entityToTag(normalEntity);
            for (String key : traderPet.getOriginalData().getCompoundData().keySet()) {
                villagerTag.put(key, traderPet.getOriginalData().get(key));
            }
            MyPetApi.getPlatformHelper().applyTagToEntity(villagerTag, normalEntity);
        }
    } else if (myPet instanceof MyBee) {
        ((Bee) normalEntity).setHasNectar(((MyBee) myPet).hasNectar());
        ((Bee) normalEntity).setHasStung(((MyBee) myPet).hasStung());
    }
    if (myPet instanceof MyPetBaby && normalEntity instanceof Ageable) {
        if (((MyPetBaby) myPet).isBaby()) {
            ((Ageable) normalEntity).setBaby();
        } else {
            ((Ageable) normalEntity).setAdult();
        }
    }
}
Also used : MyZombieHorse(de.Keyle.MyPet.api.entity.types.MyZombieHorse) MyTropicalFish(de.Keyle.MyPet.api.entity.types.MyTropicalFish) MyWitherSkeleton(de.Keyle.MyPet.api.entity.types.MyWitherSkeleton) MyEnderman(de.Keyle.MyPet.api.entity.types.MyEnderman) MyCreeper(de.Keyle.MyPet.api.entity.types.MyCreeper) CraftTropicalFish(org.bukkit.craftbukkit.v1_17_R1.entity.CraftTropicalFish) MyMagmaCube(de.Keyle.MyPet.api.entity.types.MyMagmaCube) MySheep(de.Keyle.MyPet.api.entity.types.MySheep) MyWanderingTrader(de.Keyle.MyPet.api.entity.types.MyWanderingTrader) MyHorse(de.Keyle.MyPet.api.entity.types.MyHorse) AbstractHorse(org.bukkit.entity.AbstractHorse) MyHorse(de.Keyle.MyPet.api.entity.types.MyHorse) ChestedHorse(org.bukkit.entity.ChestedHorse) Horse(org.bukkit.entity.Horse) MySkeletonHorse(de.Keyle.MyPet.api.entity.types.MySkeletonHorse) ZombieHorse(org.bukkit.entity.ZombieHorse) MyZombieHorse(de.Keyle.MyPet.api.entity.types.MyZombieHorse) SkeletonHorse(org.bukkit.entity.SkeletonHorse) MyZombieVillager(de.Keyle.MyPet.api.entity.types.MyZombieVillager) MyVillager(de.Keyle.MyPet.api.entity.types.MyVillager) ZombieVillager(org.bukkit.entity.ZombieVillager) Villager(org.bukkit.entity.Villager) CraftVillager(org.bukkit.craftbukkit.v1_17_R1.entity.CraftVillager) WanderingTrader(org.bukkit.entity.WanderingTrader) MyWanderingTrader(de.Keyle.MyPet.api.entity.types.MyWanderingTrader) MyParrot(de.Keyle.MyPet.api.entity.types.MyParrot) MySkeleton(de.Keyle.MyPet.api.entity.types.MySkeleton) MyCat(de.Keyle.MyPet.api.entity.types.MyCat) MyPanda(de.Keyle.MyPet.api.entity.types.MyPanda) MySlime(de.Keyle.MyPet.api.entity.types.MySlime) MySkeletonHorse(de.Keyle.MyPet.api.entity.types.MySkeletonHorse) MyMooshroom(de.Keyle.MyPet.api.entity.types.MyMooshroom) Panda(org.bukkit.entity.Panda) MyPanda(de.Keyle.MyPet.api.entity.types.MyPanda) ZombieHorse(org.bukkit.entity.ZombieHorse) MyZombieHorse(de.Keyle.MyPet.api.entity.types.MyZombieHorse) MyPufferfish(de.Keyle.MyPet.api.entity.types.MyPufferfish) Enderman(org.bukkit.entity.Enderman) MyEnderman(de.Keyle.MyPet.api.entity.types.MyEnderman) MyGoat(de.Keyle.MyPet.api.entity.types.MyGoat) MyIronGolem(de.Keyle.MyPet.api.entity.types.MyIronGolem) Cat(org.bukkit.entity.Cat) MyCat(de.Keyle.MyPet.api.entity.types.MyCat) MyZombieVillager(de.Keyle.MyPet.api.entity.types.MyZombieVillager) ZombieVillager(org.bukkit.entity.ZombieVillager) MyAxolotl(de.Keyle.MyPet.api.entity.types.MyAxolotl) Axolotl(org.bukkit.entity.Axolotl) ItemStack(org.bukkit.inventory.ItemStack) CraftItemStack(org.bukkit.craftbukkit.v1_17_R1.inventory.CraftItemStack) Dynamic(com.mojang.serialization.Dynamic) MyCreeper(de.Keyle.MyPet.api.entity.types.MyCreeper) Creeper(org.bukkit.entity.Creeper) MyRabbit(de.Keyle.MyPet.api.entity.types.MyRabbit) Rabbit(org.bukkit.entity.Rabbit) Ageable(org.bukkit.entity.Ageable) TagCompound(de.keyle.knbt.TagCompound) MyLlama(de.Keyle.MyPet.api.entity.types.MyLlama) MyZombieVillager(de.Keyle.MyPet.api.entity.types.MyZombieVillager) MyPig(de.Keyle.MyPet.api.entity.types.MyPig) ResourceLocation(net.minecraft.resources.ResourceLocation) TagList(de.keyle.knbt.TagList) MyPhantom(de.Keyle.MyPet.api.entity.types.MyPhantom) MagmaCube(org.bukkit.entity.MagmaCube) MyMagmaCube(de.Keyle.MyPet.api.entity.types.MyMagmaCube) CompoundTag(net.minecraft.nbt.CompoundTag) MyVillager(de.Keyle.MyPet.api.entity.types.MyVillager) MyBee(de.Keyle.MyPet.api.entity.types.MyBee) MyBee(de.Keyle.MyPet.api.entity.types.MyBee) Bee(org.bukkit.entity.Bee) PufferFish(org.bukkit.entity.PufferFish) MyAxolotl(de.Keyle.MyPet.api.entity.types.MyAxolotl) Slime(org.bukkit.entity.Slime) MySlime(de.Keyle.MyPet.api.entity.types.MySlime) ListTag(net.minecraft.nbt.ListTag) MyLlama(de.Keyle.MyPet.api.entity.types.MyLlama) Llama(org.bukkit.entity.Llama) MerchantOffers(net.minecraft.world.item.trading.MerchantOffers) MyRabbit(de.Keyle.MyPet.api.entity.types.MyRabbit) MyPetBaby(de.Keyle.MyPet.api.entity.MyPetBaby) MySheep(de.Keyle.MyPet.api.entity.types.MySheep) Sheep(org.bukkit.entity.Sheep)

Aggregations

Dynamic (com.mojang.serialization.Dynamic)2 MyPetBaby (de.Keyle.MyPet.api.entity.MyPetBaby)2 MyAxolotl (de.Keyle.MyPet.api.entity.types.MyAxolotl)2 MyBee (de.Keyle.MyPet.api.entity.types.MyBee)2 MyCat (de.Keyle.MyPet.api.entity.types.MyCat)2 MyCreeper (de.Keyle.MyPet.api.entity.types.MyCreeper)2 MyEnderman (de.Keyle.MyPet.api.entity.types.MyEnderman)2 MyGoat (de.Keyle.MyPet.api.entity.types.MyGoat)2 MyHorse (de.Keyle.MyPet.api.entity.types.MyHorse)2 MyIronGolem (de.Keyle.MyPet.api.entity.types.MyIronGolem)2 MyLlama (de.Keyle.MyPet.api.entity.types.MyLlama)2 MyMagmaCube (de.Keyle.MyPet.api.entity.types.MyMagmaCube)2 MyMooshroom (de.Keyle.MyPet.api.entity.types.MyMooshroom)2 MyPanda (de.Keyle.MyPet.api.entity.types.MyPanda)2 MyParrot (de.Keyle.MyPet.api.entity.types.MyParrot)2 MyPhantom (de.Keyle.MyPet.api.entity.types.MyPhantom)2 MyPig (de.Keyle.MyPet.api.entity.types.MyPig)2 MyPufferfish (de.Keyle.MyPet.api.entity.types.MyPufferfish)2 MyRabbit (de.Keyle.MyPet.api.entity.types.MyRabbit)2 MySheep (de.Keyle.MyPet.api.entity.types.MySheep)2