Unbekannte Fehlerursache

Dieses Thema im Forum "Programmierung" wurde erstellt von Basti07711, 4. September 2015.

  1. Basti07711
    Offline

    Basti07711 Ehem. Teammitglied

    Registriert seit:
    2. August 2012
    Beiträge:
    714
    Ort:
    Hinter dir
    Minecraft:
    Basti07711
    Hallo Leute,
    ich habe mal wieder ein Problem und ich komme nicht drauf woran es liegt.

    Also ich Code derzeit ein Shop-Plugin und will Shops zufällig in die Welt setzen, nun ist es aber so, dass nachdem ich gejoint bin der Server sofort abstürzt.

    Hier der Code:
    Code (Javascript):
    1. public class ShopManager {
    2.    
    3.     public static Random r = new Random();
    4.    
    5.    
    6.     public static void startShop(int time){
    7.        
    8.         MultiverseCore mv = (MultiverseCore) Bukkit.getPluginManager().getPlugin("Multiverse-Core");
    9.        
    10.         WorldManager wm = (WorldManager) mv.getCore().getMVWorldManager();
    11.        
    12.         Collection<MultiverseWorld> mwl = wm.getMVWorlds();
    13.        
    14.         List<World> wl = new ArrayList<World>();
    15.        
    16.         for(MultiverseWorld mw : mwl){
    17.             World w = mw.getCBWorld();
    18.             wl.add(w);
    19.         }
    20.        
    21.         int rw = r.nextInt(wl.size());
    22.        
    23.         World fw = wl.get(rw);
    24.  
    25.        
    26.         Location loc = fw.getSpawnLocation();
    27.        
    28.         Location floc = null;
    29.        
    30.         for(int i = 0; i < 100; i++){
    31.            
    32.             Location rloc = generateRandomLocation(loc);
    33.            
    34.             if(rloc.getY() < 70 && rloc.getY() > 64){
    35.                
    36.                 floc = rloc;
    37.                
    38.                 break;
    39.             }
    40.         }
    41.        
    42.         if(!(floc == null)){
    43.            
    44.             List<String> types = new ArrayList<String>();
    45.            
    46.             types.add("Blocks");
    47.             types.add("Food");
    48.             types.add("Ore");
    49.             types.add("Plants");
    50.             types.add("Tools");
    51.             types.add("Weapon");
    52.            
    53.             int rs = r.nextInt(types.size());
    54.            
    55.             String t = types.get(rs);
    56.            
    57.            
    58.             final IronGolem ig = (IronGolem) fw.spawnEntity(floc, EntityType.IRON_GOLEM);
    59.            
    60.             if(t.equalsIgnoreCase("Blocks")){
    61.                 ig.setCustomName("§8§lBlöcke");
    62.                
    63.                 ig.getEquipment().setItemInHand(new ItemStack(Material.SANDSTONE));
    64.                 ig.getEquipment().setItemInHandDropChance(0);
    65.             }
    66.             if(t.equalsIgnoreCase("Food")){
    67.                 ig.setCustomName("§6§lNahrung");
    68.                
    69.                 ig.getEquipment().setItemInHand(new ItemStack(Material.COOKED_BEEF));
    70.                 ig.getEquipment().setItemInHandDropChance(0);
    71.             }
    72.             if(t.equalsIgnoreCase("Ore")){
    73.                 ig.setCustomName("§7§lErze");
    74.                
    75.                 ig.getEquipment().setItemInHand(new ItemStack(Material.IRON_ORE));
    76.                 ig.getEquipment().setItemInHandDropChance(0);
    77.             }
    78.             if(t.equalsIgnoreCase("Plants")){
    79.                 ig.setCustomName("§2§lPflanzen");
    80.                
    81.                 ig.getEquipment().setItemInHand(new ItemStack(Material.SAPLING));
    82.                 ig.getEquipment().setItemInHandDropChance(0);
    83.             }
    84.             if(t.equalsIgnoreCase("Tools")){
    85.                 ig.setCustomName("§5§lWerkzeuge");
    86.                
    87.                 ig.getEquipment().setItemInHand(new ItemStack(Material.IRON_PICKAXE));
    88.                 ig.getEquipment().setItemInHandDropChance(0);
    89.             }
    90.             if(t.equalsIgnoreCase("Weapons")){
    91.                 ig.setCustomName("§4§lWaffen");
    92.                
    93.                 ig.getEquipment().setItemInHand(new ItemStack(Material.IRON_SWORD));
    94.                 ig.getEquipment().setItemInHandDropChance(0);
    95.             }
    96.            
    97.             ig.setCanPickupItems(false);
    98.            
    99.             ig.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION, Integer.MAX_VALUE, Integer.MAX_VALUE));
    100.             ig.addPotionEffect(new PotionEffect(PotionEffectType.ABSORPTION, Integer.MAX_VALUE, Integer.MAX_VALUE));
    101.             ig.addPotionEffect(new PotionEffect(PotionEffectType.INCREASE_DAMAGE, Integer.MAX_VALUE, 2));
    102.            
    103.             ig.setRemoveWhenFarAway(false);
    104.             ig.setCustomNameVisible(true);
    105.            
    106.             Bukkit.broadcastMessage("§2Ein Shop ist bei den Koordinaten §6X:§5" + floc.getBlockX() + " §6Z:§5" + floc.getBlockZ() + " §2aufgetaucht! Geht hin und seht seine tollen Angeboten!");
    107.            
    108.             int rt = 0;
    109.            
    110.             for(int i2 = 0; i2 < 1000; i2++){
    111.                
    112.                 int rtf = r.nextInt(216000);
    113.                
    114.                 if(rtf >= 7200){
    115.                     rt = rtf;
    116.                     break;
    117.                 }
    118.                
    119.             }
    120.            
    121.             if(!(rt == 0)){
    122.                 Bukkit.getScheduler().scheduleSyncDelayedTask(Bukkit.getPluginManager().getPlugin("ApocalypseZ"), new Runnable(){
    123.                     public void run(){
    124.                        
    125.                         ig.getLocation().getChunk().unload();
    126.                        
    127.                         ig.remove();
    128.                        
    129.                         Bukkit.broadcastMessage("§2Der Shop ist nun wieder weg! Beehrt ihn bald wieder!");
    130.                        
    131.                         startShop(r.nextInt(216000));
    132.                        
    133.                     }
    134.                 },r.nextInt(216000));
    135.             }
    136.             else{
    137.                 startShop(r.nextInt(216000));
    138.             }
    139.         }
    140.         else{
    141.             startShop(r.nextInt(216000));
    142.         }
    143.     }
    144.    
    145.     public static Location generateRandomLocation(Location loc){
    146.        
    147.         World fw = loc.getWorld();
    148.        
    149.        
    150.        
    151.         int xr = r.nextInt(2);
    152.         int zr = r.nextInt(2);
    153.        
    154.         if(xr == 0){
    155.             loc.setX(loc.getX()+r.nextInt(2000));
    156.         }
    157.         else{
    158.             loc.setX(loc.getX()-r.nextInt(2000));
    159.         }
    160.        
    161.         if(zr == 0){
    162.             loc.setZ(loc.getZ()+r.nextInt(2000));
    163.         }
    164.         else{
    165.             loc.setZ(loc.getZ()+r.nextInt(2000));
    166.         }
    167.        
    168.         loc.getChunk().load();
    169.        
    170.         double y = fw.getHighestBlockYAt(loc.getBlockX(), loc.getBlockZ());
    171.        
    172.         loc.setY(y);
    173.        
    174.         return loc;
    175.     }
    176.    
    177.    
    178.     public static Inventory getShopSells(IronGolem e){
    179.        
    180.         Inventory ie = null;
    181.        
    182.         String name = e.getCustomName();
    183.        
    184.         if(name.equalsIgnoreCase("§8§lBlöcke")){
    185.            
    186.             Inventory i = Bukkit.createInventory(null, 9, name);
    187.            
    188.             i.addItem(new ItemStack(Material.SANDSTONE));
    189.             i.addItem(new ItemStack(Material.COBBLESTONE));
    190.             i.addItem(new ItemStack(Material.STONE));
    191.             i.addItem(new ItemStack(Material.LOG));
    192.             i.addItem(new ItemStack(Material.GRAVEL));
    193.             i.addItem(new ItemStack(Material.SMOOTH_BRICK));
    194.             i.addItem(new ItemStack(Material.GLASS));
    195.            
    196.             ie = i;
    197.            
    198.         }
    199.        
    200.         if(name.equalsIgnoreCase("§6§lNahrung")){
    201.            
    202.             Inventory i = Bukkit.createInventory(null, 9, name);
    203.            
    204.             i.addItem(new ItemStack(Material.COOKED_BEEF));
    205.             i.addItem(new ItemStack(Material.COOKED_CHICKEN));
    206.             i.addItem(new ItemStack(Material.COOKED_FISH));
    207.             i.addItem(new ItemStack(Material.APPLE));
    208.             i.addItem(new ItemStack(Material.PUMPKIN_PIE));
    209.             i.addItem(new ItemStack(Material.CAKE));
    210.             i.addItem(new ItemStack(Material.BAKED_POTATO));
    211.             i.addItem(new ItemStack(Material.BREAD));
    212.            
    213.             ie = i;
    214.            
    215.         }
    216.        
    217.         if(name.equalsIgnoreCase("§7§lErze")){
    218.            
    219.             Inventory i = Bukkit.createInventory(null, 9, name);
    220.            
    221.             i.addItem(new ItemStack(Material.IRON_ORE));
    222.             i.addItem(new ItemStack(Material.GOLD_ORE));
    223.             i.addItem(new ItemStack(Material.REDSTONE_ORE));
    224.             i.addItem(new ItemStack(Material.COAL_ORE));
    225.             i.addItem(new ItemStack(Material.DIAMOND_ORE));
    226.             i.addItem(new ItemStack(Material.EMERALD_ORE));
    227.             i.addItem(new ItemStack(Material.LAPIS_ORE));
    228.            
    229.             ie = i;
    230.            
    231.         }
    232.        
    233.         if(name.equalsIgnoreCase("§2§lPflanzen")){
    234.            
    235.             Inventory i = Bukkit.createInventory(null, 9, name);
    236.            
    237.             i.addItem(new ItemStack(Material.SAPLING));
    238.             i.addItem(new ItemStack(Material.SEEDS));
    239.             i.addItem(new ItemStack(Material.PUMPKIN_SEEDS));
    240.             i.addItem(new ItemStack(Material.MELON_SEEDS));
    241.             i.addItem(new ItemStack(Material.POTATO));
    242.             i.addItem(new ItemStack(Material.CARROT));
    243.            
    244.             ie = i;
    245.            
    246.         }
    247.        
    248.         if(name.equalsIgnoreCase("§5§lWerkzeuge")){
    249.            
    250.             Inventory i = Bukkit.createInventory(null, 18, name);
    251.            
    252.             i.addItem(new ItemStack(Material.STONE_PICKAXE));
    253.             i.addItem(new ItemStack(Material.STONE_SPADE));
    254.             i.addItem(new ItemStack(Material.STONE_AXE));
    255.             i.addItem(new ItemStack(Material.STONE_HOE));
    256.             i.addItem(new ItemStack(Material.IRON_PICKAXE));
    257.             i.addItem(new ItemStack(Material.IRON_SPADE));
    258.             i.addItem(new ItemStack(Material.IRON_AXE));
    259.             i.addItem(new ItemStack(Material.IRON_HOE));
    260.             i.addItem(new ItemStack(Material.DIAMOND_PICKAXE));
    261.             i.addItem(new ItemStack(Material.DIAMOND_SPADE));
    262.             i.addItem(new ItemStack(Material.DIAMOND_AXE));
    263.             i.addItem(new ItemStack(Material.DIAMOND_HOE));
    264.            
    265.             ie = i;
    266.            
    267.         }
    268.        
    269.         if(name.equalsIgnoreCase("§4§lWaffen")){
    270.            
    271.             Inventory i = Bukkit.createInventory(null, 9, name);
    272.            
    273.             i.addItem(new ItemStack(Material.BOW));
    274.             i.addItem(new ItemStack(Material.STONE_SWORD));
    275.             i.addItem(new ItemStack(Material.IRON_SWORD));
    276.             i.addItem(new ItemStack(Material.DIAMOND_SWORD));
    277.             i.addItem(new ItemStack(Material.RECORD_11));
    278.             i.addItem(new ItemStack(Material.ARROW));
    279.             i.addItem(new ItemStack(Material.NETHER_BRICK_ITEM));
    280.            
    281.             ie = i;
    282.            
    283.         }
    284.        
    285.         return ie;
    286.        
    287.     }
    288.    
    289.     public static ItemStack getPrice(ItemStack i){
    290.        
    291.         ItemStack price = null;
    292.        
    293.         Material m = i.getType();
    294.        
    295.         switch(m){
    296.         case SANDSTONE:
    297.            
    298.             ItemStack p = new ItemStack(Material.STONE);
    299.             p.setDurability((short) 1);
    300.            
    301.             price = p;
    302.            
    303.             break;
    304.            
    305.         case COBBLESTONE:
    306.            
    307.             price = new ItemStack(Material.DIRT);
    308.            
    309.             break;
    310.            
    311.         case STONE:
    312.            
    313.             price = new ItemStack(Material.COBBLESTONE);
    314.             break;
    315.            
    316.            
    317.         case LOG:
    318.            
    319.             ItemStack p2 = new ItemStack(Material.STONE);
    320.             p2.setDurability((short) 3);
    321.            
    322.             price = p2;
    323.            
    324.             break;
    325.            
    326.         case GRAVEL:
    327.            
    328.             price = new ItemStack(Material.DIRT);
    329.             break;
    330.            
    331.         case SMOOTH_BRICK:
    332.            
    333.             ItemStack p3 = new ItemStack(Material.STONE);
    334.             p3.setDurability((short) 6);
    335.            
    336.             price = p3;
    337.             break;
    338.            
    339.         case GLASS:
    340.            
    341.             price = new ItemStack(Material.STONE);
    342.             break;
    343.            
    344.         case COOKED_BEEF:
    345.            
    346.             price = new ItemStack(Material.SULPHUR);
    347.             break;
    348.            
    349.         case COOKED_CHICKEN:
    350.            
    351.             price = new ItemStack(Material.STRING);
    352.             break;
    353.            
    354.         case COOKED_FISH:
    355.            
    356.             price = new ItemStack(Material.STRING);
    357.             break;
    358.            
    359.         case APPLE:
    360.            
    361.             price = new ItemStack(Material.FEATHER);
    362.             break;
    363.            
    364.         case PUMPKIN_PIE:
    365.            
    366.             price = new ItemStack(Material.REDSTONE);
    367.             break;
    368.            
    369.         case CAKE:
    370.            
    371.             price = new ItemStack(Material.GOLD_INGOT);
    372.             break;
    373.            
    374.         case BAKED_POTATO:
    375.            
    376.             price = new ItemStack(Material.SULPHUR);
    377.             break;
    378.            
    379.         case BREAD:
    380.            
    381.             price = new ItemStack(Material.LEATHER);
    382.             break;
    383.            
    384.         case IRON_ORE:
    385.            
    386.             ItemStack p4 = new ItemStack(Material.SANDSTONE);
    387.             p4.setDurability((short) 2);
    388.            
    389.             price = p4;
    390.             break;
    391.            
    392.         case GOLD_ORE:
    393.            
    394.             price = new ItemStack(Material.BRICK);
    395.             break;
    396.            
    397.         case COAL_ORE:
    398.            
    399.             price = new ItemStack(Material.SMOOTH_BRICK);
    400.             break;
    401.            
    402.         case REDSTONE_ORE:
    403.            
    404.             price = new ItemStack(Material.IRON_INGOT);
    405.             break;
    406.            
    407.         case DIAMOND_ORE:
    408.            
    409.             price = new ItemStack(Material.EMERALD);
    410.             break;
    411.            
    412.         case EMERALD_ORE:
    413.            
    414.             price = new ItemStack(Material.DIAMOND);
    415.             break;
    416.            
    417.         case LAPIS_ORE:
    418.            
    419.             price = new ItemStack(Material.GOLD_INGOT);
    420.             break;
    421.            
    422.         case SAPLING:
    423.            
    424.             price = new ItemStack(Material.LOG);
    425.             break;
    426.            
    427.         case SEEDS:
    428.            
    429.             price = new ItemStack(Material.COAL);
    430.             break;
    431.            
    432.         case PUMPKIN_SEEDS:
    433.            
    434.             price = new ItemStack(Material.IRON_INGOT);
    435.             break;
    436.            
    437.         case MELON_SEEDS:
    438.            
    439.             price = new ItemStack(Material.GOLD_INGOT);
    440.             break;
    441.            
    442.         case POTATO:
    443.            
    444.             price = new ItemStack(Material.SANDSTONE);
    445.             break;
    446.            
    447.         case CARROT:
    448.            
    449.             price = new ItemStack(Material.WOOL);
    450.             break;
    451.            
    452.         case STONE_PICKAXE:
    453.            
    454.             ItemStack p5 = new ItemStack(Material.POTION);
    455.             p5.setDurability((short) 8194);
    456.            
    457.             price = p5;
    458.             break;
    459.            
    460.         case STONE_SPADE:
    461.            
    462.             ItemStack p6 = new ItemStack(Material.POTION);
    463.             p6.setDurability((short) 8196);
    464.            
    465.             price = p6;
    466.             break;
    467.            
    468.         case STONE_AXE:
    469.            
    470.             ItemStack p7 = new ItemStack(Material.POTION);
    471.             p7.setDurability((short) 8194);
    472.            
    473.             price = p7;
    474.             break;
    475.            
    476.         case STONE_HOE:
    477.            
    478.             ItemStack p8 = new ItemStack(Material.POTION);
    479.             p8.setDurability((short) 8226);
    480.            
    481.             price = p8;
    482.             break;
    483.            
    484.         case IRON_PICKAXE:
    485.            
    486.             ItemStack p9 = new ItemStack(Material.POTION);
    487.             p9.setDurability((short) 8201);
    488.            
    489.             price = p9;
    490.             break;
    491.            
    492.         case IRON_AXE:
    493.            
    494.             ItemStack p10 = new ItemStack(Material.POTION);
    495.             p10.setDurability((short) 8201);
    496.            
    497.             price = p10;
    498.             break;
    499.            
    500.         case IRON_SPADE:
    501.            
    502.             ItemStack p11 = new ItemStack(Material.POTION);
    503.             p11.setDurability((short) 8234);
    504.            
    505.             price = p11;
    506.             break;
    507.            
    508.         case IRON_HOE:
    509.            
    510.             ItemStack p12 = new ItemStack(Material.POTION);
    511.             p12.setDurability((short) 8234);
    512.            
    513.             price = p12;
    514.             break;
    515.            
    516.         case DIAMOND_PICKAXE:
    517.            
    518.             ItemStack p13 = new ItemStack(Material.POTION);
    519.             p13.setDurability((short) 8238);
    520.            
    521.             price = p13;
    522.             break;
    523.            
    524.         case DIAMOND_AXE:
    525.            
    526.             ItemStack p14 = new ItemStack(Material.POTION);
    527.             p14.setDurability((short) 8238);
    528.            
    529.             price = p14;
    530.             break;
    531.            
    532.         case DIAMOND_SPADE:
    533.            
    534.             ItemStack p15 = new ItemStack(Material.POTION);
    535.             p15.setDurability((short) 16396);
    536.            
    537.             price = p15;
    538.             break;
    539.            
    540.         case DIAMOND_HOE:
    541.            
    542.             ItemStack p16 = new ItemStack(Material.POTION);
    543.             p16.setDurability((short) 16428);
    544.            
    545.             price = p16;
    546.             break;
    547.            
    548.         case BOW:
    549.            
    550.             price = new ItemStack(Material.GOLD_INGOT);
    551.             break;
    552.            
    553.         case STONE_SWORD:
    554.            
    555.             price = new ItemStack(Material.NETHERRACK);
    556.             break;
    557.            
    558.         case IRON_SWORD:
    559.            
    560.             price = new ItemStack(Material.GLOWSTONE);
    561.             break;
    562.            
    563.         case DIAMOND_SWORD:
    564.            
    565.             price = new ItemStack(Material.GOLD_BLOCK);
    566.             break;
    567.            
    568.         case RECORD_11:
    569.            
    570.             price = new ItemStack(Material.DIAMOND);
    571.             break;
    572.            
    573.         case NETHER_BRICK_ITEM:
    574.            
    575.             price = new ItemStack(Material.GLOWSTONE_DUST);
    576.             break;
    577.         }
    578.        
    579.         return price;
    580.     }
    581.  
    582. }

    Hier der besagte Fehler:
    http://pastebin.com/fziEBbCz



    Kann mir jemand den Fehler erklären und mir sagen, wodurch er verursacht wird?
     
    #1
  2. Victini151
    Offline

    Victini151

    Dem Stacktrace bei Zeile 24 zu entnehmen, stirbt der bei der Rekursion. Ist die Abbruchbedingung eventuell fehlerhaft?
    Es muss aber gar keinen Fehler geben, es kann auch sein, dass der Code zu lange braucht, sodass der "Spigot Watchdog" entscheidet, den Server für tot zu erklären.
     
    #2
  3. Basti07711
    Offline

    Basti07711 Ehem. Teammitglied

    Registriert seit:
    2. August 2012
    Beiträge:
    714
    Ort:
    Hinter dir
    Minecraft:
    Basti07711
    Ich habe es gelöst bekommen, es schien wohl, dass der Chunk an der Location nicht ordentlich geladen war und er dadurch aus irgend einem Grund nicht den höchsten Block anhand der Location erhalten kann.
     
    #3