2016-04-29 5 views
2

Ich schreibe ein Bukkit-Plugin, um das Wachstum von Weinreben zu verhindern. Nach der Aufhebung von BlockGrowEvent wächst und wächst der Weinstock immer noch. Wie kann ich das Wachstum von Weinreben verhindern, und feuert das Ereignis sogar, wenn der Weinstock wächst?Bukkit verhindert Weinreben

Code:

@EventHandler (ignoreCancelled = true) 
public void onVineGrow(BlockGrowEvent event){ 
    event.setCancelled(true); 
} 

Antwort

3

Die BlockGrowEvent wird nur aufgerufen, wenn die Pflanzen wie Weizen, Zuckerrohr, ein Kaktus, eine Wassermelone oder einen Kürbis wachsen (und einige andere Pflanzen auch). Um die Verbreitung von Reben zu erkennen, hören Sie die BlockSpreadEvent. Da dieses Ereignis rückgängig gemacht werden kann, ist der Block, auf den sich die Rebe ausbreitet, immer noch Luft, während Sie das Ereignis behandeln. Um zu überprüfen, ob der Block eine Rebe ist und nicht ein Feuerblock oder ein Pilz, können Sie sich das neue ansehen BlockState des zu verbreitenden Blocks und prüfen, ob sein Typ event.getNewState().getData().getItemType() gleich Material.VINE ist.

+0

Also, @EventHandler (ignoreCancelled = true) öffentliche void onVineGrow (BlockSpreadEvent event) { event.setCancelled (true); } ' würde alle Blockverbreitung abbrechen? – Joris

+0

Ja! Soweit ich weiß, würde es dazu führen, dass sich Weinreben, Pilze und Feuer nicht mehr ausbreiten und vielleicht einige zusätzliche Blöcke, die sich ausbreiten können. –

Verwandte Themen