Skip to content

Instantly share code, notes, and snippets.

@jimmikaelkael
Last active August 29, 2015 14:07
Show Gist options
  • Save jimmikaelkael/b7aac6c8c27a8dd2aed5 to your computer and use it in GitHub Desktop.
Save jimmikaelkael/b7aac6c8c27a8dd2aed5 to your computer and use it in GitHub Desktop.
TestBonemealPlugin source
package org.jimmikaelkael;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.TreeType;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockGrowEvent;
import org.bukkit.event.block.BlockSpreadEvent;
import org.bukkit.event.world.StructureGrowEvent;
import org.bukkit.plugin.java.JavaPlugin;
public class TestBonemealPlugin extends JavaPlugin implements Listener {
@Override
public void onEnable() {
getLogger().info("TestPlugin enabled.");
Bukkit.getPluginManager().registerEvents(this, this);
}
@Override
public void onDisable() {
getLogger().info("TestPlugin disabled.");
}
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void onBlockSpread(BlockSpreadEvent e) {
Block b = e.getBlock();
Block s = e.getSource();
//getLogger().info("BlockSpreadEvent at: " + b.getX() + ", " + b.getY() + ", " + b.getZ() + " source: " + s.getX() + ", " + s.getY() + ", " + s.getZ());
if (b.getType().equals(Material.RED_MUSHROOM)) {
// cancel block spread if red mushroom
getLogger().info("red mushrooms won't spread...");
e.setCancelled(true);
}
}
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void onBlockGrow(BlockGrowEvent e) {
Block b = e.getBlock();
//getLogger().info("BlockGrowEvent at: " + b.getX() + ", " + b.getY() + ", " + b.getZ());
if (e.getNewState().getType().equals(Material.LONG_GRASS)) {
// turn tall grass into dead bush
e.getNewState().setType(Material.DEAD_BUSH);
e.getNewState().setRawData((byte) 0);
getLogger().info("the tall grass is dead");
} else if (e.getNewState().getType().equals(Material.POTATO)) {
// cancel potato growth
getLogger().info("potatoes won't grow...");
e.setCancelled(true);
} else if (e.getNewState().getType().equals(Material.CARROT)) {
getLogger().info("carrot grow into tree");
e.setCancelled(true);
b.setType(Material.AIR);
b.getWorld().generateTree(b.getLocation(), TreeType.TREE);
} else if (e.getNewState().getType().equals(Material.CROPS)) {
getLogger().info("wheat crop may grow into huge mushroom");
e.setCancelled(true);
b.setType(Material.AIR);
b.getRelative(BlockFace.DOWN).setType(Material.GRASS);
b.getWorld().generateTree(b.getLocation(), TreeType.RED_MUSHROOM);
}
}
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void onStructureGrow(StructureGrowEvent e) {
Block b = e.getLocation().getBlock();
getLogger().info("StructureGrowEvent at: " + b.getX() + ", " + b.getY() + ", " + b.getZ());
getLogger().info("number of blocks: " + e.getBlocks().size());
getLogger().info("tree type: " + e.getSpecies().name());
if (e.getPlayer() != null) {
getLogger().info("player who triggered event: " + e.getPlayer().getName());
}
getLogger().info("from bonemeal: " + e.isFromBonemeal());
if (e.isFromBonemeal()) {
// cancel if from bonemeal
getLogger().info("structure growth cancelled as it's from bonemeal");
e.setCancelled(true);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment