Last active
August 29, 2015 14:07
-
-
Save jimmikaelkael/b7aac6c8c27a8dd2aed5 to your computer and use it in GitHub Desktop.
TestBonemealPlugin source
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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