nullexeptor

Wenn ihr bei eurem Plugin nicht weiter kommt, könnt ihr hier euer Problem beschreiben und um Hilfe bitten.

nullexeptor

Beitragvon CoDRusher22 » Sa 3. Sep 2016, 22:18

Hallo,Ich wollte eine bigger enderchest plugin coden jedoch kommt beim öffnen der echest folgender fehler

Fehler:
Code: Alles auswählen
  1. Caused by: java.lang.NullPointerException
  2.    at me.xFelixHD.pck.test.openInventory(test.java:45)
  3.    at me.xFelixHD.pck.test.onPlayerInteract(test.java:58)


Meine Klasse:
Code: Alles auswählen
  1. package me.xFelixHD.pck;
  2. import java.io.File;
  3. import java.io.IOException;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. import org.bukkit.Bukkit;
  7. import org.bukkit.Material;
  8. import org.bukkit.configuration.file.FileConfiguration;
  9. import org.bukkit.configuration.file.YamlConfiguration;
  10. import org.bukkit.entity.Player;
  11. import org.bukkit.event.EventHandler;
  12. import org.bukkit.event.Listener;
  13. import org.bukkit.event.block.Action;
  14. import org.bukkit.event.inventory.InventoryCloseEvent;
  15. import org.bukkit.event.player.PlayerInteractEvent;
  16. import org.bukkit.inventory.Inventory;
  17. import org.bukkit.inventory.ItemStack;
  18. import org.bukkit.plugin.java.JavaPlugin;
  19. public class test extends JavaPlugin implements Listener{
  20.    public void onEnable(){
  21.        Bukkit.getPluginManager().registerEvents(this, this);         
  22.    }
  23.     Inventory inv = null;
  24.     ArrayList<String> players = new ArrayList<String>();
  25.     public void openInventory(Player player){
  26.     inv = Bukkit.createInventory(null, 54, "§aSpender §4EnderChest");
  27.    
  28.     File file = new File("plugins//Echest//data", player.getName() + ".yml");
  29.     FileConfiguration cfg = YamlConfiguration.loadConfiguration(file);
  30.    
  31.    if(!file.exists()){
  32.       try {
  33.          file.getParentFile().mkdirs();
  34.          file.createNewFile();
  35.       } catch (IOException e1) {
  36.          e1.printStackTrace();
  37.       }
  38.    }
  39.    
  40.    for(int i = 0; i < inv.getSize(); i++){
  41.       List<?> list = cfg.getList("inventory");
  42.       inv.setItem(i, (ItemStack) list.get(i));
  43.    }
  44.    
  45.    player.openInventory(inv);
  46.    players.add(player.getName());
  47.    
  48. }
  49. @EventHandler
  50. public void onPlayerInteract(PlayerInteractEvent event){
  51.     Player player = event.getPlayer();
  52.     if(event.getAction() == Action.RIGHT_CLICK_BLOCK || event.getAction() == Action.RIGHT_CLICK_AIR){
  53.       if(player.isOp() || player.hasPermission("echest.iforce")){
  54.        if(event.getClickedBlock().getType().equals(Material.ENDER_CHEST)){
  55.          openInventory(player);
  56.        }
  57.       } else {
  58.          event.setCancelled(true);
  59.       }
  60.     }
  61.    
  62. }
  63. @EventHandler
  64. public void onInventoryClose(InventoryCloseEvent event){
  65.    Player player = (Player) event.getPlayer();
  66.    
  67.    File file = new File("plugins//Echest//data", player.getName() + ".yml");
  68.    FileConfiguration cfg = YamlConfiguration.loadConfiguration(file);
  69.    
  70.    inv = event.getInventory();
  71.    if(players.contains(player.getName())){
  72.       players.remove(player.getName());
  73.       cfg.set("inventory", inv.getContents());
  74.       try {
  75.          cfg.save(file);
  76.       } catch (IOException e1) {
  77.          e1.printStackTrace();
  78.       }
  79.    }
  80. }
  81. }

ich hoffe ihr könnt mir helfen bei denn problem ^^
Benutzeravatar
CoDRusher22
 
Beiträge: 7
Registriert: Do 28. Apr 2016, 15:20

Re: nullexeptor

Beitragvon Knadda » So 4. Sep 2016, 07:57

Du kannst kein ItemStack Object aus der config lesen
Code: Alles auswählen
  1.    for(int i = 0; i < inv.getSize(); i++){
  2.       List<?> list = cfg.getList("inventory");
  3.       inv.setItem(i, (ItemStack) list.get(i));  <----
  4.    }

Daher kommt auch die NullPointerException da der ItemStack null ist.
Benutzeravatar
Knadda
 
Beiträge: 49
Registriert: Mo 1. Aug 2016, 07:06

Re: nullexeptor

Beitragvon CoDRusher22 » So 4. Sep 2016, 12:49

Und wie kann man das verbessern sorry ich habe mich mit denn configs und items noch nicht so befasst
Benutzeravatar
CoDRusher22
 
Beiträge: 7
Registriert: Do 28. Apr 2016, 15:20

Re: nullexeptor

Beitragvon Kampfprofessor » So 4. Sep 2016, 16:18

Code: Alles auswählen
  1. ItemStack air = .....Material.AIR...;
  2. if(list.get(i) == null) {
  3. inv.setItem(i, air);
  4. }
Benutzeravatar
Kampfprofessor
 
Beiträge: 71
Registriert: Fr 12. Feb 2016, 15:48

Re: nullexeptor

Beitragvon Knadda » So 4. Sep 2016, 20:28

Das ist meine Config-Klasse. Damit müsste es gehen :)

Code: Alles auswählen
  1. public class Configuration {
  2.    
  3.    private final File file;
  4.    private final FileConfiguration cfg;
  5.    
  6.    public Configuration(final String arg0, final String arg1) {
  7.       this.file = new File(arg0, arg1+".yml");
  8.       this.cfg = YamlConfiguration.loadConfiguration(this.file);
  9.       this.saveConfig();
  10.       this.loadConfig();
  11.    }
  12.    public void saveConfig() {
  13.       try {
  14.          this.cfg.save(this.file);
  15.       } catch (final Exception e) {
  16.       }
  17.    }
  18.    public void loadConfig() {
  19.       try {
  20.          this.cfg.load(this.file);
  21.       } catch (final Exception e) {
  22.       }
  23.    }
  24.    public void addDefault(final String arg0, final Object arg1) {
  25.       if (this.cfg.isSet(arg0) == false) {
  26.          this.set(arg0, arg1);
  27.          this.saveConfig();
  28.       }
  29.    }
  30.    public boolean isSet(final String arg0) {
  31.       return this.cfg.isSet(arg0);
  32.    }
  33.    public void set(final String arg0, final Object arg1) {
  34.       if (arg1 instanceof ItemStack) {
  35.          this.cfg.set(arg0, toString((ItemStack) arg1));
  36.       } else {
  37.          this.cfg.set(arg0, arg1);
  38.       }
  39.    }
  40.    public Object get(final String arg0) {
  41.       return this.cfg.get(arg0);
  42.    }
  43.    public boolean getBoolean(final String arg0) {
  44.       return this.cfg.getBoolean(arg0);
  45.    }
  46.    public List<Boolean> getBooleanList(final String arg0) {
  47.       return this.cfg.getBooleanList(arg0);
  48.    }
  49.    public List<Byte> getByteList(final String arg0) {
  50.       return this.cfg.getByteList(arg0);
  51.    }
  52.    public List<Character> getCharacterList(final String arg0) {
  53.       return this.cfg.getCharacterList(arg0);
  54.    }
  55.    public ConfigurationSection getConfigurationSection(final String arg0) {
  56.       return this.cfg.getConfigurationSection(arg0);
  57.    }
  58.    public double getDouble(final String arg0) {
  59.       return this.cfg.getDouble(arg0);
  60.    }
  61.    public List<Double> getDoubleList(final String arg0) {
  62.       return this.cfg.getDoubleList(arg0);
  63.    }
  64.    public List<Float> getFloatList(final String arg0) {
  65.       return this.cfg.getFloatList(arg0);
  66.    }
  67.    public int getInt(final String arg0) {
  68.       return this.cfg.getInt(arg0);
  69.    }
  70.    public List<Integer> getIntegerList(final String arg0) {
  71.       return this.cfg.getIntegerList(arg0);
  72.    }
  73.    public Set<String> getKeys(final boolean arg0) {
  74.       return this.cfg.getKeys(arg0);
  75.    }
  76.    public Set<String> getKeys(final String arg0, final boolean arg1) {
  77.       return this.cfg.getConfigurationSection(arg0).getKeys(arg1);
  78.    }
  79.    public List<?> getList(final String arg0) {
  80.       return this.cfg.getList(arg0);
  81.    }
  82.    public long getLong(final String arg0) {
  83.       return this.cfg.getLong(arg0);
  84.    }
  85.    public ItemStack getItemstack(final String arg0) {
  86.       return asItem(this.cfg.getString(arg0));
  87.    }
  88.    public List<Long> getLongList(final String arg0) {
  89.       return this.cfg.getLongList(arg0);
  90.    }
  91.    public List<Short> getShortList(final String arg0) {
  92.       return this.cfg.getShortList(arg0);
  93.    }
  94.    public String getString(final String arg0) {
  95.       return this.cfg.getString(arg0);
  96.    }
  97.    public List<String> getStringList(final String arg0) {
  98.       return this.cfg.getStringList(arg0);
  99.    }
  100.    public Map<String, Object> getValues(final boolean arg0) {
  101.       return this.cfg.getValues(arg0);
  102.    }
  103.    public Vector getVector(final String arg0) {
  104.       return this.cfg.getVector(arg0);
  105.    }
  106.    public final List<String> translateStringList(final List<String> arg0) {
  107.       if (arg0 != null) {
  108.          if (arg0.isEmpty() == false) {
  109.             final List<String> lore = Lists.newArrayList();
  110.             for (final String s : arg0) {
  111.                lore.add(ChatColor.translateAlternateColorCodes('&', s));
  112.             }
  113.             return lore;
  114.          }
  115.       }
  116.       return arg0;
  117.    }
  118.    @SuppressWarnings("deprecation")
  119.    private ItemStack asItem(final String arg0) {
  120.       ItemStack item = null;
  121.       if (arg0.contains(" ")) {
  122.          final String[] args = arg0.split(" ");
  123.          try {
  124.             if (args[0].contains(":")) {
  125.                final String[] keys = args[0].split(":");
  126.                item = new ItemStack(Material.getMaterial(Integer.valueOf(keys[0])), Integer.valueOf(keys[1]));
  127.                if (keys.length == 3) {
  128.                   item.setDurability(Short.valueOf(keys[2]));
  129.                }
  130.             } else {
  131.                item = new ItemStack(Material.getMaterial(Integer.valueOf(args[0])));
  132.             }
  133.          } catch (final Exception e) {
  134.          }
  135.          if (item != null) {
  136.             final ItemMeta meta = item.getItemMeta();
  137.             for (int i = 1; i < args.length; i++) {
  138.                if (args[i].toUpperCase().startsWith("name:".toUpperCase())) {
  139.                   meta.setDisplayName(ChatColor.translateAlternateColorCodes('&', args[i].replace("name:", "").replace("_", " ")));
  140.                }
  141.                if (args[i].toUpperCase().startsWith("lore:".toUpperCase())) {
  142.                   final String[] rawlore = args[i].replace("lore:", "").replace("_", " ").split(";");
  143.                   final List<String> lore = Lists.newArrayList();
  144.                   for (final String raw : rawlore) {
  145.                      lore.add(ChatColor.translateAlternateColorCodes('&', raw));
  146.                   }
  147.                   meta.setLore(lore);
  148.                }
  149.                if (args[i].toUpperCase().startsWith("ench:".toUpperCase())) {
  150.                   final String[] rawench = args[i].replace("ench:", "").split(";");
  151.                   for (final String raw : rawench) {
  152.                      if (raw.contains(",")) {
  153.                         try {
  154.                            meta.addEnchant(Enchantment.getById(Integer.valueOf(raw.split(",")[0])), Integer.valueOf(raw.split(",")[1]), true);
  155.                         } catch (final Exception e) {
  156.                         }
  157.                         
  158.                      } else {
  159.                         try {
  160.                            meta.addEnchant(Enchantment.getById(Integer.valueOf(raw)), 1, true);
  161.                         } catch (final Exception e) {
  162.                         }
  163.                      }
  164.                   }
  165.                }
  166.                item.setItemMeta(meta);
  167.                if (args[i].toUpperCase().startsWith("sench:".toUpperCase()) && item.getItemMeta() instanceof EnchantmentStorageMeta) {
  168.                   final EnchantmentStorageMeta meta2 = (EnchantmentStorageMeta) item.getItemMeta();
  169.                   final String[] rawench = args[i].replace("sench:", "").split(";");
  170.                   for (final String raw : rawench) {
  171.                      if (raw.contains(",")) {
  172.                         try {
  173.                            meta2.addStoredEnchant(Enchantment.getById(Integer.valueOf(raw.split(",")[0])), Integer.valueOf(raw.split(",")[1]), true);
  174.                         } catch (final Exception e) {
  175.                         }
  176.                         
  177.                      } else {
  178.                         try {
  179.                            meta2.addStoredEnchant(Enchantment.getById(Integer.valueOf(raw)), 1, true);
  180.                         } catch (final Exception e) {
  181.                         }
  182.                      }
  183.                   }
  184.                   item.setItemMeta(meta2);
  185.                }
  186.                if (args[i].toUpperCase().startsWith("rocket:".toUpperCase()) && item.getItemMeta() instanceof FireworkMeta) {
  187.                   final FireworkMeta meta2 = (FireworkMeta) item.getItemMeta();
  188.                   final String[] rawench = args[i].replace("rocket:", "").split("<");
  189.                   try {
  190.                      final int power = Integer.valueOf(rawench[0]);
  191.                      meta2.setPower(power);
  192.                      if (rawench[1].toUpperCase().startsWith("effect:".toUpperCase())) {
  193.                         final String[] raweff = rawench[1].replace("effect:", "").split("%");
  194.                         for (final String re : raweff) {
  195.                            final String[] eff = re.split("#");
  196.                            if (eff.length >= 4) {
  197.                               final Builder builder = FireworkEffect.builder();
  198.                               final Type type = Type.valueOf(eff[0]);
  199.                               final boolean flicker = Boolean.valueOf(eff[1]);
  200.                               final boolean trail = Boolean.valueOf(eff[2]);
  201.                               builder.flicker(flicker).trail(trail).with(type);
  202.                               if (eff[3].toUpperCase().startsWith("color:".toUpperCase())) {
  203.                                  final String[] rawcolor = eff[3].replace("color:", "").split(",");
  204.                                  for (int i1 = 0; i1 < rawcolor.length; i1++) {
  205.                                     builder.withColor(Color.fromRGB(Integer.valueOf(rawcolor[i1])));
  206.                                  }
  207.                               }
  208.                               if (eff.length == 5) {
  209.                                  if (eff[4].toUpperCase().startsWith("fcolor:".toUpperCase())) {
  210.                                     final String[] rawfcolor = eff[4].replace("fcolor:", "").split(",");
  211.                                     for (int i1 = 0; i1 < rawfcolor.length; i1++) {
  212.                                        builder.withFade(Color.fromRGB(Integer.valueOf(rawfcolor[i1])));
  213.                                     }
  214.                                  }
  215.                               }
  216.                               meta2.addEffect(builder.build());
  217.                            }
  218.                         }
  219.                      }
  220.                   } catch (final Exception e) {
  221.                      e.printStackTrace();
  222.                   }
  223.                   item.setItemMeta(meta2);
  224.                }
  225.                if (args[i].toUpperCase().startsWith("value:".toUpperCase()) && item.getItemMeta() instanceof SkullMeta) {
  226.                   final Property property = new Property("textures", args[i].replace("value:", ""));
  227.                   final GameProfile profile = new GameProfile(UUID.randomUUID(), "Kopf");
  228.                   profile.getProperties().put(property.getName(), property);
  229.                   Reflections.FIELDS.setValue(meta, "profile", profile);
  230.                   item.setItemMeta(meta);
  231.                }
  232.             }
  233.          }
  234.       } else {
  235.          try {
  236.             if (arg0.contains(":")) {
  237.                final String[] keys = arg0.split(":");
  238.                item = new ItemStack(Material.getMaterial(Integer.valueOf(keys[0])), Integer.valueOf(keys[1]));
  239.                if (keys.length == 3) {
  240.                   item.setDurability(Short.valueOf(keys[2]));
  241.                }
  242.             } else {
  243.                item = new ItemStack(Material.getMaterial(Integer.valueOf(arg0)));
  244.             }
  245.          } catch (final Exception e) {
  246.             item = new ItemStack(Material.getMaterial(arg0));
  247.          }
  248.       }
  249.       return item;
  250.    }
  251.    @SuppressWarnings("deprecation")
  252.    private String toString(final ItemStack arg0) {
  253.       String item = "";
  254.       if (arg0 != null) {
  255.          item = arg0.getType().getId()+":"+arg0.getAmount()+":"+arg0.getDurability();
  256.          if (arg0.getItemMeta() != null) {
  257.             final ItemMeta meta = arg0.getItemMeta();
  258.             if (meta.hasDisplayName()) {
  259.                item+=" name:"+meta.getDisplayName().replace("§", "&").replace(" ", "_");
  260.             }
  261.             if (meta.hasLore()) {
  262.                String lore = " lore:";
  263.                for (final String s : meta.getLore()) {
  264.                   lore+=s.replace(" ", "_")+";";
  265.                }
  266.                while(lore.endsWith(";")) {
  267.                   lore = lore.substring(0, lore.length()-1);
  268.                }
  269.                item+=lore.replace("§", "&");
  270.             }
  271.             if (meta.hasEnchants()) {
  272.                String ench = " ench:";
  273.                for (final Entry<Enchantment, Integer> s : meta.getEnchants().entrySet()) {
  274.                   ench+=s.getKey().getId()+","+s.getValue()+";";
  275.                }
  276.                while(ench.endsWith(";")) {
  277.                   ench = ench.substring(0, ench.length()-1);
  278.                }
  279.                item+=ench;
  280.             }
  281.             if (arg0.getItemMeta() instanceof EnchantmentStorageMeta) {
  282.                final EnchantmentStorageMeta meta2 = (EnchantmentStorageMeta) arg0.getItemMeta();
  283.                String ench = " sench:";
  284.                for (final Entry<Enchantment, Integer> s : meta2.getStoredEnchants().entrySet()) {
  285.                   ench+=s.getKey().getId()+","+s.getValue()+";";
  286.                }
  287.                while(ench.endsWith(";")) {
  288.                   ench = ench.substring(0, ench.length()-1);
  289.                }
  290.                item+=ench;
  291.             }
  292.             if (arg0.getItemMeta() instanceof FireworkMeta) {
  293.                final FireworkMeta meta2 = (FireworkMeta) arg0.getItemMeta();
  294.                String ench = " rocket:";
  295.                ench+=meta2.getPower()+"<";
  296.                String eff = "effect:";
  297.                for (final FireworkEffect effect : meta2.getEffects()) {
  298.                   eff+=effect.getType()+"#";
  299.                   eff+=effect.hasFlicker()+"#";
  300.                   eff+=effect.hasTrail()+"#";
  301.                   String c = "color:";
  302.                   String fc = "fcolor:";
  303.                   for (final Color color : effect.getColors()) {
  304.                      c+=color.asRGB()+",";
  305.                   }
  306.                   while(c.endsWith(",")) {
  307.                      c = c.substring(0, c.length()-1);
  308.                   }
  309.                   for (final Color fcolor : effect.getFadeColors()) {
  310.                      c+=fcolor.asRGB()+",";
  311.                   }
  312.                   while(fc.endsWith(",")) {
  313.                      fc = fc.substring(0, fc.length()-1);
  314.                   }
  315.                   eff+=c+(fc.equalsIgnoreCase("")?"@"+fc:"");
  316.                   eff+="%";
  317.                }
  318.                while(eff.endsWith("%")) {
  319.                   eff = eff.substring(0, eff.length()-1);
  320.                }
  321.                ench+=eff;
  322.                item+=ench;
  323.             }
  324.             if (arg0.getItemMeta() instanceof SkullMeta) {
  325.                String value = " value:";
  326.                try {
  327.                   final String version = Bukkit.getServer().getClass().getPackage().getName().substring(23);
  328.                   final Field field = Class.forName("org.bukkit.craftbukkit."+version+".inventory.CraftMetaSkull").getDeclaredField("profile");
  329.                   field.setAccessible(true);
  330.                   final GameProfile profile = (GameProfile) field.get(meta);
  331.                   value+=profile.getProperties().get("textures").iterator().next().getValue();
  332.                } catch (final ClassNotFoundException e) {
  333.                   e.printStackTrace();
  334.                } catch (final NoSuchFieldException e) {
  335.                   e.printStackTrace();
  336.                } catch (final SecurityException e) {
  337.                   e.printStackTrace();
  338.                } catch (final IllegalArgumentException e) {
  339.                   e.printStackTrace();
  340.                } catch (final IllegalAccessException e) {
  341.                   e.printStackTrace();
  342.                }
  343.                item+=value;
  344.             }
  345.          }
  346.       }
  347.       return item;
  348.    }
  349. }
Zuletzt geändert von Knadda am Mo 5. Sep 2016, 19:57, insgesamt 1-mal geändert.
Benutzeravatar
Knadda
 
Beiträge: 49
Registriert: Mo 1. Aug 2016, 07:06

Re: nullexeptor

Beitragvon naturboy » Mo 5. Sep 2016, 17:36

Bitte Verwende Code tags
Danke
Benutzeravatar
naturboy
 
Beiträge: 279
Registriert: Mi 17. Jul 2013, 17:45


Zurück zu Hilfe und Support

Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 18 Gäste

cron