Plugin Placer un bloc et le supprimer x secondes après

LuckySpawn

Aventurier
21 Juillet 2020
7
0
2
France
Bonjour, cela fait plusieurs jours que je galère sur le même sujet (supprimer un bloc de sandstone, 1 min après qu'il est été placé) mais même après avoir regarder sur d'autres forum, je n'y arrive toujours pas, alors es-ce-que quelqu'un pourrait m'aider/m'expliquer comment faire ce système en 1.9 compatible jusqu'à la 1.16 s'il-vous-plaît. Merci d'avance :D
 

Detobel36

Créateur de plugins (PhoenixRebirth)
Support
17 Août 2012
10 530
24
2 247
347
27
Bruxelles - Belgique
www.phoenix-rebirth.fr
Salut,

Pour supprimer un block:
Java:
int x = 0;
int y = 0;
int z = 0;

Bukkit.getWorld("world").getBlockAt(x, y, z).setType(Material.AIR);
Doc:
A noter que "getBlockAt" peut prendre une variable "Location" aussi (pratique si tu l'exécute à la suite d'un listener qui te donne une location).

Pour mettre un délais:
Java:
Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
    @Override
    public void run() {
        // Le code à exécuter
    }
}, 60*20L); // 20 = 1 seconde, donc 60*20 = 1 min
Doc: https://hub.spigotmc.org/javadocs/s...bukkit.plugin.Plugin,java.lang.Runnable,long)

Si tu veux plus d'aide, faut nous dire où tu bloques...


Cordialement,
Detobel36
 

LuckySpawn

Aventurier
21 Juillet 2020
7
0
2
France
Java:
    @EventHandler
    public void onPlace(BlockPlaceEvent event) {
        Player player = event.getPlayer();
        Block b = event.getBlock();
        
        if (player.hasPermission("breakblocffa.use")) {
            if (b.getType() == Material.SANDSTONE) {
                Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
                    @Override
                    public void run() {
                        b.setType(Material.AIR);
                    }
                }, 60*20L);
            }
        }
    }

Faut-il que je change "Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {" car on me dit que plugin n'est pas une variable
Merci d'avance
 

Detobel36

Créateur de plugins (PhoenixRebirth)
Support
17 Août 2012
10 530
24
2 247
347
27
Bruxelles - Belgique
www.phoenix-rebirth.fr
Salut,

"plugin" c'est l'instance de ton main ;)

Donc soit tu fais un "getInstance()" dans ta class main, qui retourne une instance de la-dite class (intialisé lors du onLoa d par exemple).
Soit tu la passe directement à ton listener.

Cordialement,
Detobel36