Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Problem ze stawianiem i usuwaniem bloków za pomocą pluginu Timer.


babciaaaa

Rekomendowane odpowiedzi

Opublikowano

czesc, mam problem z stawianiem oraz usuwanie blokow przy uzyciu timera.

jezeli wywoluje osobno event_disco_tworz_bloki() lub event_disco_kasuj_bloki(int wk) za pomoca komendy, wszystkie bloki zachowuja sie poprawnie (tworza, kasuja)
problem polega na tym ze jezeli wywoluje te funkcje przez timer niektore bloki sa ignorowane(losowo), cos jak by serwer dostawal chwilowego laga i omijal te bloki.

jak moge rozwiazac ten problem, w javie jestem nowy wiec prosil bym o jakies szczegolowe wyjasnienie

   

taskID = Bukkit.getScheduler().scheduleAsyncRepeatingTask(Main.getInst(), new Runnable()
    {
        public void run()
        {
            if(czas == 1)
            {
                Random random = new Random();        
                wybrany_kolor = random.nextInt(ilosc_kolorow);
                
                event_disco_przedmiot(wybrany_kolor);
                
            }
            else if(czas == 3)
            {
                event_disco_kasuj_bloki(wybrany_kolor);
            }
            else if(czas == 7)
            {
                event_disco_tworz_bloki();
                czas = 0;
            }
            czas++;
        }
    }, 0, 20);

    
    
    

private void event_disco_tworz_bloki()
    {                              
        World world = Bukkit.getServer().getWorld("events");
        Random random = new Random();
        
        for (int x = blockX; x <= (blockX + blockDIS); x++) {
            for (int z = blockZ; z <= (blockZ + blockDIS); z++) {
                    
                world.getBlockAt(x,blockY,z).setType(Material.WOOL);
                world.getBlockAt(x,blockY,z).setData((byte)random.nextInt(ilosc_kolorow));    
            }
        }                            
    }

    
    

private void event_disco_kasuj_bloki(int wk)
    {                              
        World world = Bukkit.getServer().getWorld("events");
            
        for (int x = blockX; x <= (blockX + blockDIS); x++) {
            for (int z = blockZ; z <= (blockZ + blockDIS); z++) {
                    
                if(world.getBlockAt(x,blockY,z).getData() != wk)
                    world.getBlockAt(x,blockY,z).setType(Material.AIR);    
            }
        }
    }

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...