Search in sources :

Example 1 with ItemDatabase

use of de.Keyle.MyPet.api.util.inventory.material.ItemDatabase in project MyPet by xXKeyleXx.

the class CommandOptionCreate method createInfo.

public static void createInfo(MyPetType petType, String[] args, TagCompound compound) {
    for (String arg : args) {
        if (arg.equalsIgnoreCase("baby")) {
            compound.getCompoundData().put("Baby", new TagByte(true));
        } else if (arg.equalsIgnoreCase("fire")) {
            compound.getCompoundData().put("Fire", new TagByte(true));
        } else if (arg.equalsIgnoreCase("powered")) {
            compound.getCompoundData().put("Powered", new TagByte(true));
        } else if (arg.equalsIgnoreCase("screaming")) {
            compound.getCompoundData().put("Screaming", new TagByte(true));
        } else if (arg.equalsIgnoreCase("saddle")) {
            compound.getCompoundData().put("Saddle", new TagByte(true));
        } else if (arg.equalsIgnoreCase("sheared")) {
            compound.getCompoundData().put("Sheared", new TagByte(true));
        } else if (arg.equalsIgnoreCase("wither")) {
            compound.getCompoundData().put("Type", new TagInt(1));
        } else if (arg.equalsIgnoreCase("stray")) {
            compound.getCompoundData().put("Type", new TagInt(2));
        } else if (arg.equalsIgnoreCase("husk")) {
            compound.getCompoundData().put("Type", new TagInt(6));
        } else if (arg.equalsIgnoreCase("tamed")) {
            compound.getCompoundData().put("Tamed", new TagByte(true));
        } else if (arg.equalsIgnoreCase("angry")) {
            compound.getCompoundData().put("Angry", new TagByte(true));
        } else if (arg.equalsIgnoreCase("villager")) {
            compound.getCompoundData().put("Villager", new TagByte(true));
        } else if (arg.equalsIgnoreCase("chest")) {
            compound.getCompoundData().put("Chest", new TagByte(true));
        } else if (arg.equalsIgnoreCase("elder")) {
            compound.getCompoundData().put("Elder", new TagByte(true));
        } else if (arg.equalsIgnoreCase("donkey")) {
            compound.getCompoundData().put("Type", new TagByte((byte) 1));
        } else if (arg.equalsIgnoreCase("mule")) {
            compound.getCompoundData().put("Type", new TagByte((byte) 2));
        } else if (arg.equalsIgnoreCase("zombie")) {
            compound.getCompoundData().put("Type", new TagByte((byte) 3));
        } else if (arg.equalsIgnoreCase("skeleton")) {
            compound.getCompoundData().put("Type", new TagByte((byte) 4));
        } else if (arg.equalsIgnoreCase("glowing")) {
            compound.getCompoundData().put("Glowing", new TagByte(true));
        } else if (arg.equalsIgnoreCase("rainbow")) {
            compound.getCompoundData().put("Rainbow", new TagByte(true));
        } else if (arg.equalsIgnoreCase("has-stung")) {
            compound.getCompoundData().put("HasStung", new TagByte(true));
        } else if (arg.equalsIgnoreCase("has-nectar")) {
            compound.getCompoundData().put("HasNectar", new TagByte(true));
        } else if (arg.startsWith("size:")) {
            String size = arg.replace("size:", "");
            if (Util.isInt(size)) {
                compound.getCompoundData().put("Size", new TagInt(Integer.parseInt(size)));
            }
        } else if (arg.startsWith("horse:")) {
            String horseTypeString = arg.replace("horse:", "");
            if (Util.isByte(horseTypeString)) {
                int horseType = Integer.parseInt(horseTypeString);
                horseType = Math.min(Math.max(0, horseType), 4);
                compound.getCompoundData().put("Type", new TagByte((byte) horseType));
            }
        } else if (arg.startsWith("variant:")) {
            String variantString = arg.replace("variant:", "");
            if (Util.isInt(variantString)) {
                int variant = Integer.parseInt(variantString);
                if (petType == MyPetType.Horse) {
                    variant = Math.min(Math.max(0, variant), 1030);
                    compound.getCompoundData().put("Variant", new TagInt(variant));
                } else if (petType == MyPetType.Rabbit) {
                    if (variant != 99 && (variant > 5 || variant < 0)) {
                        variant = 0;
                    }
                    compound.getCompoundData().put("Variant", new TagByte(variant));
                } else if (petType == MyPetType.Llama || petType == MyPetType.TraderLlama) {
                    if (variant > 3 || variant < 0) {
                        variant = 0;
                    }
                    compound.getCompoundData().put("Variant", new TagInt(variant));
                } else if (petType == MyPetType.Parrot) {
                    compound.getCompoundData().put("Variant", new TagInt(variant));
                } else if (petType == MyPetType.Axolotl) {
                    compound.getCompoundData().put("Variant", new TagInt(variant));
                } else if (petType == MyPetType.TropicalFish) {
                    compound.getCompoundData().put("Variant", new TagInt(variant));
                }
            }
        } else if (arg.startsWith("cat:")) {
            String catTypeString = arg.replace("cat:", "");
            if (Util.isInt(catTypeString)) {
                int catType = Integer.parseInt(catTypeString);
                catType = Math.min(Math.max(0, catType), 3);
                compound.getCompoundData().put("CatType", new TagInt(catType));
            }
        } else if (arg.startsWith("profession:")) {
            String professionString = arg.replace("profession:", "");
            if (Util.isInt(professionString)) {
                int profession = Integer.parseInt(professionString);
                profession = Math.min(Math.max(0, profession), MyPetApi.getCompatUtil().isCompatible("1.14") ? 15 : 5);
                if (petType == MyPetType.Villager) {
                    compound.getCompoundData().put("Profession", new TagInt(profession));
                    if (!compound.getCompoundData().containsKey("VillagerLevel")) {
                        compound.getCompoundData().put("VillagerLevel", new TagInt(1));
                    }
                } else if (petType == MyPetType.Zombie || petType == MyPetType.ZombieVillager) {
                    compound.getCompoundData().put("Villager", new TagByte(true));
                    compound.getCompoundData().put("Profession", new TagInt(profession));
                    if (!compound.getCompoundData().containsKey("TradingLevel")) {
                        compound.getCompoundData().put("TradingLevel", new TagInt(1));
                    }
                }
            }
        } else if (arg.startsWith("color:")) {
            String colorString = arg.replace("color:", "");
            if (Util.isByte(colorString)) {
                byte color = Byte.parseByte(colorString);
                color = color > 15 ? 15 : color < 0 ? 0 : color;
                compound.getCompoundData().put("Color", new TagByte(color));
            }
        } else if (arg.startsWith("collar:")) {
            String colorString = arg.replace("collar:", "");
            if (Util.isByte(colorString)) {
                byte color = Byte.parseByte(colorString);
                color = color > 15 ? 15 : color < 0 ? 0 : color;
                compound.getCompoundData().put("CollarColor", new TagByte(color));
            }
        } else if (arg.startsWith("block:")) {
            String block = arg.replace("block:", "");
            ItemDatabase itemDatabase = MyPetApi.getServiceManager().getService(ItemDatabase.class).get();
            MaterialHolder materialHolder = itemDatabase.getByID(block.toLowerCase());
            if (materialHolder != null) {
                compound.getCompoundData().put("BlockName", new TagString(materialHolder.getId()));
            }
        } else if (arg.startsWith("puff:")) {
            switch(arg) {
                case "puff:none":
                    compound.getCompoundData().put("PuffState", new TagInt(0));
                    break;
                case "puff:semi":
                    compound.getCompoundData().put("PuffState", new TagInt(1));
                    break;
                case "puff:fully":
                    compound.getCompoundData().put("PuffState", new TagInt(2));
                    break;
            }
        } else if (arg.startsWith("main-gene:") || arg.startsWith("hidden-gene:")) {
            String gene;
            String key;
            if (arg.startsWith("main-gene:")) {
                key = "MainGene";
                gene = arg.substring(10);
            } else {
                key = "HiddenGene";
                gene = arg.substring(12);
            }
            switch(gene.toLowerCase()) {
                case "normal":
                    compound.getCompoundData().put(key, new TagInt(0));
                    break;
                case "lazy":
                    compound.getCompoundData().put(key, new TagInt(1));
                    break;
                case "worried":
                    compound.getCompoundData().put(key, new TagInt(2));
                    break;
                case "playful":
                    compound.getCompoundData().put(key, new TagInt(3));
                    break;
                case "brown":
                    compound.getCompoundData().put(key, new TagInt(4));
                    break;
                case "weak":
                    compound.getCompoundData().put(key, new TagInt(5));
                    break;
                case "aggressive":
                    compound.getCompoundData().put(key, new TagInt(6));
                    break;
            }
        } else if (arg.startsWith("type:")) {
            switch(petType) {
                case Fox:
                    switch(arg) {
                        case "type:white":
                            compound.getCompoundData().put("FoxType", new TagInt(1));
                            break;
                        case "type:red":
                        default:
                            compound.getCompoundData().put("FoxType", new TagInt(0));
                            break;
                    }
                    break;
                case Mooshroom:
                    switch(arg) {
                        case "type:brown":
                            compound.getCompoundData().put("CowType", new TagInt(1));
                            break;
                        case "type:red":
                        default:
                            compound.getCompoundData().put("CowType", new TagInt(0));
                            break;
                    }
                    break;
                case Cat:
                    String catTypeString = arg.replace("type:", "");
                    if (Util.isInt(catTypeString)) {
                        int catType = Integer.parseInt(catTypeString);
                        catType = Util.clamp(catType, 0, 10);
                        compound.getCompoundData().put("CatType", new TagInt(catType));
                    }
                    break;
                case Villager:
                case ZombieVillager:
                    String villagerTypeString = arg.replace("type:", "");
                    if (Util.isInt(villagerTypeString)) {
                        int villagerType = Integer.parseInt(villagerTypeString);
                        villagerType = Util.clamp(villagerType, 0, 6);
                        compound.getCompoundData().put("VillagerType", new TagInt(villagerType));
                    }
                    break;
            }
        }
    }
}
Also used : ItemDatabase(de.Keyle.MyPet.api.util.inventory.material.ItemDatabase) TagInt(de.keyle.knbt.TagInt) TagString(de.keyle.knbt.TagString) MaterialHolder(de.Keyle.MyPet.api.util.inventory.material.MaterialHolder) TagString(de.keyle.knbt.TagString) TagByte(de.keyle.knbt.TagByte)

Example 2 with ItemDatabase

use of de.Keyle.MyPet.api.util.inventory.material.ItemDatabase in project MyPet by xXKeyleXx.

the class MyEnderman method readExtendedInfo.

@Override
public void readExtendedInfo(TagCompound info) {
    if (info.containsKey("BlockName")) {
        ItemDatabase itemDatabase = MyPetApi.getServiceManager().getService(ItemDatabase.class).get();
        String id = info.getAs("BlockName", TagString.class).getStringData();
        MaterialHolder materialHolder = itemDatabase.getByID(id);
        if (materialHolder != null) {
            Material material = materialHolder.getMaterial();
            if (material != null) {
                if (MyPetApi.getCompatUtil().isCompatible("1.13")) {
                    setBlock(new ItemStack(material, 1));
                } else {
                    short data = materialHolder.getLegacyId().getData();
                    setBlock(new ItemStack(material, 1, data));
                }
                setBlock(new ItemStack(material, 1));
            }
        }
    } else if (info.containsKey("BlockID")) {
        int id;
        byte data = 0;
        if (info.containsKeyAs("BlockID", TagShort.class)) {
            id = info.getAs("BlockID", TagShort.class).getShortData();
        } else {
            id = info.getAs("BlockID", TagInt.class).getIntData();
        }
        if (info.containsKeyAs("BlockData", TagShort.class)) {
            data = (byte) info.getAs("BlockData", TagShort.class).getShortData();
        } else if (info.containsKeyAs("BlockData", TagInt.class)) {
            data = (byte) info.getAs("BlockData", TagInt.class).getIntData();
        }
        ItemDatabase itemDatabase = MyPetApi.getServiceManager().getService(ItemDatabase.class).get();
        MaterialHolder materialHolder = itemDatabase.getByLegacyId(id, data);
        if (materialHolder != null) {
            Material material = materialHolder.getMaterial();
            if (MyPetApi.getCompatUtil().isCompatible("1.13")) {
                setBlock(new ItemStack(material, 1));
            } else {
                setBlock(new ItemStack(material, 1, data));
            }
        }
    } else if (info.containsKey("Block")) {
        TagCompound itemStackCompund = info.getAs("Block", TagCompound.class);
        try {
            ItemStack block = MyPetApi.getPlatformHelper().compundToItemStack(itemStackCompund);
            setBlock(block);
        } catch (Exception e) {
            MyPetApi.getLogger().warning("Could not load Block item from pet data!");
        }
    }
}
Also used : TagShort(de.keyle.knbt.TagShort) ItemDatabase(de.Keyle.MyPet.api.util.inventory.material.ItemDatabase) TagInt(de.keyle.knbt.TagInt) TagString(de.keyle.knbt.TagString) MaterialHolder(de.Keyle.MyPet.api.util.inventory.material.MaterialHolder) Material(org.bukkit.Material) TagString(de.keyle.knbt.TagString) ItemStack(org.bukkit.inventory.ItemStack) TagCompound(de.keyle.knbt.TagCompound)

Example 3 with ItemDatabase

use of de.Keyle.MyPet.api.util.inventory.material.ItemDatabase in project MyPet by xXKeyleXx.

the class PlatformHelper method itemstackToString.

@Override
public String itemstackToString(org.bukkit.inventory.ItemStack itemStack) {
    ItemDatabase itemDatabase = MyPetApi.getServiceManager().getService(ItemDatabase.class).get();
    String itemstack = itemDatabase.getByLegacyId(itemStack.getTypeId(), itemStack.getData().getData()).getId();
    if (itemStack.hasItemMeta()) {
        itemstack += " " + CraftItemStack.asNMSCopy(itemStack).getTag().toString();
    }
    return itemstack;
}
Also used : ItemDatabase(de.Keyle.MyPet.api.util.inventory.material.ItemDatabase)

Example 4 with ItemDatabase

use of de.Keyle.MyPet.api.util.inventory.material.ItemDatabase in project MyPet by xXKeyleXx.

the class PlatformHelper method itemstackToString.

@Override
public String itemstackToString(org.bukkit.inventory.ItemStack itemStack) {
    ItemDatabase itemDatabase = MyPetApi.getServiceManager().getService(ItemDatabase.class).get();
    String itemstack = itemDatabase.getByID(itemStack.getType().getKey().getKey()).getId();
    if (itemStack.hasItemMeta()) {
        itemstack += " " + CraftItemStack.asNMSCopy(itemStack).getTag().toString();
    }
    return itemstack;
}
Also used : ItemDatabase(de.Keyle.MyPet.api.util.inventory.material.ItemDatabase)

Example 5 with ItemDatabase

use of de.Keyle.MyPet.api.util.inventory.material.ItemDatabase in project MyPet by xXKeyleXx.

the class PlatformHelper method itemstackToString.

@Override
public String itemstackToString(org.bukkit.inventory.ItemStack itemStack) {
    ItemDatabase itemDatabase = MyPetApi.getServiceManager().getService(ItemDatabase.class).get();
    String itemstack = itemDatabase.getByID(itemStack.getType().getKey().getKey()).getId();
    if (itemStack.hasItemMeta()) {
        itemstack += " " + CraftItemStack.asNMSCopy(itemStack).getTag().toString();
    }
    return itemstack;
}
Also used : ItemDatabase(de.Keyle.MyPet.api.util.inventory.material.ItemDatabase)

Aggregations

ItemDatabase (de.Keyle.MyPet.api.util.inventory.material.ItemDatabase)11 MaterialHolder (de.Keyle.MyPet.api.util.inventory.material.MaterialHolder)4 IconMenu (de.Keyle.MyPet.api.gui.IconMenu)2 IconMenuItem (de.Keyle.MyPet.api.gui.IconMenuItem)2 SkilltreeIcon (de.Keyle.MyPet.api.skill.skilltree.SkilltreeIcon)2 TagInt (de.keyle.knbt.TagInt)2 TagString (de.keyle.knbt.TagString)2 Player (org.bukkit.entity.Player)2 MyPet (de.Keyle.MyPet.api.entity.MyPet)1 MyPetPlayer (de.Keyle.MyPet.api.player.MyPetPlayer)1 Skilltree (de.Keyle.MyPet.api.skill.skilltree.Skilltree)1 PetShop (de.Keyle.MyPet.util.shop.PetShop)1 ShopManager (de.Keyle.MyPet.util.shop.ShopManager)1 TagByte (de.keyle.knbt.TagByte)1 TagCompound (de.keyle.knbt.TagCompound)1 TagShort (de.keyle.knbt.TagShort)1 Material (org.bukkit.Material)1 ConsoleCommandSender (org.bukkit.command.ConsoleCommandSender)1 ItemStack (org.bukkit.inventory.ItemStack)1 BukkitRunnable (org.bukkit.scheduler.BukkitRunnable)1