Solved Doesn't load on startup?

Discussion in 'Plugin Development' started by Awesomebanana2002, Jul 9, 2015.

Thread Status:
Not open for further replies.
  1. (Sorry for my bad English)
    Hi there!
    I have a problem, I made a new class for a Villager that contains a inventory, but all the villagers just load on startup, when I add some debugging, on startup it loads 1 villager, after a reload 6, and after the other reloads the correct villagers in the world, 5. I don't get errors. Please Help!

    OnEnable:
    Code:
        @Override
        public void onEnable() {
            plugin = this;
          
            saveDefaultConfig();
            reloadConfig();
          
            // Just for testing
            getConfig().set("item-stack", new ItemStack(Material.STICK, 2, (short) 2));
            saveConfig();
           
            // Here the villagers load
            Utils.init();
            Utils.loadVillagers();
           
            // This also doesn't seem to work:
            //new VillagerLoader().runTaskLater(this, 10);
          
            PluginManager pm = Bukkit.getPluginManager();
            pm.registerEvents(new EntityListener(), this);
            pm.registerEvents(new PlayerListener(), this);
          
        }
    LoadVillagers method:
    Code:
        public static void loadVillagers() {
            villagers.clear();
            for (World w : Bukkit.getWorlds()) {
                for (Entity en : w.getEntities()) {
                    if (en instanceof Villager) {
                        VillagerClone villager = new VillagerClone((Villager) en);
                        if(!villagers.contains(villager)) villagers.add(villager);
                        Bukkit.broadcastMessage(String.valueOf(villagers.size()));
                    }
                }
            }
        }
    EDIT:
    It only seems to work when a player is online.. What???
     
  2. Offline

    mine-care

    @Awesomebanana2002 i havent gotten what you want to do here and what the problem is ? :3
    What is the VillagerClone class?
    Also to avoid duplicates, use a Set implementation instead of a list.
     
  3. I'm trying to add inventories to villagers, and when you right click they will open, if you give them a sword they will act like a body guard for you.
    It also seems to only laod the villagers when theres a player online... Weird
    Here's my VillagerClone class:
    Code:
    package com.TheWGB.VI;
    
    public class VillagerClone {
        public Villager villager;
        public Inventory inv;
       
        public VillagerClone(Villager villager) {
            this.villager = villager;
           
            loadInventoryFromConfig();
        }
       
        public ItemStack getItemInHand() {
            return inv.getItem(0);
        }
       
        public void setItemInHand(ItemStack is) {
            ItemStack old = getItemInHand();
            inv.setItem(0, is);
            if(!(old==null || old.getType()==Material.AIR)) {
                inv.addItem(old);
            }
        }
       
        public boolean hasSword() {
            if(getItemInHand()==null) return false;
            return getItemInHand().getType()==Material.IRON_SWORD || getItemInHand().getType()==Material.WOOD_SWORD || getItemInHand().getType()==Material.STONE_SWORD || getItemInHand().getType()==Material.DIAMOND_SWORD || getItemInHand().getType()==Material.GOLD_SWORD;
        }
       
       
       
       
        public void loadInventoryFromConfig() {
            this.inv = Bukkit.createInventory(null, 3*9, "Villager Inventory");
           
            // TODO LOAD INVENTORY FROM CONFIG
        }
       
        public void setInventoryToConfig() {
            // TODO SAVE INVENTORY TO CONFIG
        }
    }
    
     
  4. Offline

    mine-care

  5. Offline

    mine-care

Thread Status:
Not open for further replies.

Share This Page