Solved Trying to Schedule task after time

Discussion in 'Plugin Development' started by Jaboi313, Jul 6, 2022.

Thread Status:
Not open for further replies.
  1. Offline

    Jaboi313

    I was making this event when you break a block you go trough multiple tiers and when you have reached the final tier the block becomes bedrock and then after some time it becomes stone again, but the "plugin" in the scheduler gives me an error :

    Code:
    package me.jaboi313.prisonrp.events;
    
    import org.bukkit.Bukkit;
    
    import org.bukkit.Material;
    import org.bukkit.block.Block;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.BlockBreakEvent;
    
    import java.util.Arrays;
    import java.util.List;
    import java.util.Random;
    
    public class RegenBlockEvent implements Listener{
    
        @EventHandler
        public void onBlockBreakEvent(BlockBreakEvent e) {
            Block block = e.getBlock();
            Material material = block.getType();
    
            List<Material> tier0List = Arrays.asList(Material.STONE, Material.COAL_ORE);
            List<Material> tier1List = Arrays.asList(Material.ANDESITE, Material.IRON_ORE, Material.COPPER_ORE, Material.GOLD_ORE);
            List<Material> tier2List = Arrays.asList(Material.TUFF, Material.AMETHYST_BLOCK);
            List<Material> tier3List = Arrays.asList(Material.DEEPSLATE, Material.DEEPSLATE_REDSTONE_ORE, Material.DEEPSLATE_EMERALD_ORE, Material.DEEPSLATE_LAPIS_ORE, Material.DEEPSLATE_DIAMOND_ORE, Material.ANCIENT_DEBRIS);
    
            Random random = new Random();
    
            Material randomTier0 = tier0List.get(random.nextInt(tier0List.size()));
            Material randomTier1 = tier1List.get(random.nextInt(tier1List.size()));
            Material randomTier2 = tier2List.get(random.nextInt(tier2List.size()));
            Material randomTier3 = tier3List.get(random.nextInt(tier3List.size()));
    
            if (material.equals(Material.STONE)||material.equals(Material.COAL_ORE)) {
                block.breakNaturally();
                block.setType(randomTier1);
            }
            if (material.equals(Material.ANDESITE)||material.equals(Material.IRON_ORE)||material.equals(Material.COPPER_ORE)||material.equals(Material.GOLD_ORE)) {
                block.breakNaturally();
                block.setType(randomTier2);
            }
            if (material.equals(Material.TUFF)||material.equals(Material.AMETHYST_BLOCK)) {
                block.breakNaturally();
                block.setType(randomTier3);
            }
            if (material.equals(Material.DEEPSLATE)||material.equals(Material.DEEPSLATE_REDSTONE_ORE)||material.equals(Material.DEEPSLATE_EMERALD_ORE)||material.equals(Material.DEEPSLATE_LAPIS_ORE)||material.equals(Material.DEEPSLATE_DIAMOND_ORE)||material.equals(Material.ANCIENT_DEBRIS)) {
                block.breakNaturally();
                block.setType(Material.BEDROCK);
                Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
                    @Override
                    public void run() {
                        block.setType(randomTier0);
                    }
                }, 200L);
            }
        }
    }
    
     
  2. Online

    timtower Administrator Administrator Moderator

    @Jaboi313 Make a constructor for that class.
    Give it a plugin as argument.
     
  3. Offline

    Jaboi313

  4. Online

    timtower Administrator Administrator Moderator

    @Jaboi313 Then you would have a plugin variable.
     
  5. Offline

    Jaboi313

    I dont know exactly how it works but in my case it this does work
     
Thread Status:
Not open for further replies.

Share This Page