[Plugin] Usuwanie śniegu

Zombie
szymhal
szymhal

Siemka, potrzebuje kod do pluginu, który będzie blokował lub usuwał śnieg tworzony przez bałwany. Pare linijek, wiem że to jest proste, lecz to co ja napisałem nie działa XD Nie chcę robić tego w Skript, bo to ma być addon do głównego pluginu.

Z góry dzięki.

luxDev
luxDev Pionier
szymhal
szymhal

Nie działa, snowman pozostawia za sobą snieg.

@EDIT: Kod:

package pl.SzymoonPL;

import org.bukkit.Material; import org.bukkit.entity.Snowman; import org.bukkit.event.EventHandler; import org.bukkit.event.block.EntityBlockFormEvent; import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin{

@Override public void onEnable(){ System.out.println("[S-AntySnow] Plugin zostal wlaczony."); }

@Override public void onDisable(){ System.out.println("[S-AntySnow] Plugin zostal wylaczony."); }

@EventHandler public void snow(EntityBlockFormEvent e){ if(e.getEntity() instanceof Snowman){ if(e.getNewState().getType() == Material.SNOW){ e.setCancelled(true); } } }

}

luxDev
luxDev Pionier

A czemu klasa nie rozszerza Listener? :) i w onEnable registerEvents?

szymhal
szymhal

listener jest potrzebny?

luxDev
luxDev Pionier

implements Listener i w onEnable this.getServer().getPluginManager().registerEvents(this, this);

tl;dl tak musi

DBanaszewski
DBanaszewski α-tester v3

Tak, musi być ;)

public class Main extends JavaPlugin implemets Listener

I w onEnable(): Bukkit.getPluginManager().registerEvents(this, this) - jeżeli robisz to w głównej klasie ;)

szymhal
szymhal

package pl.SzymoonPL;

import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Snowman; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.EntityBlockFormEvent; import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin implements Listener{

@Override public void onEnable(){ Bukkit.getPluginManager().registerEvents(this, this); System.out.println("[S-AntySnow] Plugin zostal wlaczony."); }

@Override public void onDisable(){ System.out.println("[S-AntySnow] Plugin zostal wylaczony."); }

@EventHandler public void snow(EntityBlockFormEvent e){ if(e.getEntity() instanceof Snowman){ if(e.getNewState().getType() == Material.SNOW){ e.setCancelled(true); } } }

}

Pewnie coś źle zrobiłem, bo nie dziala xd

szymhal
szymhal

Podbijam temat.

luxDev
luxDev Pionier

Okej więc, nie jest to możliwe do zablokowania przez event, w sensie setCancelled zadziała tylko w ten sposób że serwer o tym będzie wiedzieć ale, client będzie dalej widział ten śnieg.

Task który usuwa śnieg? nw