Hi folks. I'm a relative forge newbie but done a couple of complex bukkit server plugins and am looking for some guidance from more experienced forge moders.
I've had a good look through the source but can't find a handy way to intercept (and possibly cancel) what bukkit would call block break, block place and craft item events.
I cobbled together some block place and break control using PlayerInteractEvent and BreakSpeed but my attempts were a little clumsy. I found lots of cool hooks for controlling this on new blocks I've created, but I'd like to be able to manage any in-game block too (without changing net.minecraft).
My gut tells me most things should be possible with the level of server and client control in minecraftforge. I even thought about splitting the mod into two sections, one Forge and one Bukkit and sharing the server side data somehow. That has to be mad, right?
@ForgeSubscribe
public void onBreakSpeed(BreakSpeed event) {
if(event.block.blockID == Block.torchWood.blockID) {
if(event.isCancelable()) {
event.setCanceled(true);
}
}
}
@ForgeSubscribe
public void onPlayerInteract(PlayerInteractEvent event) {
EntityPlayer p = event.entityPlayer;
if(event.action != Action.LEFT_CLICK_BLOCK) {
ItemStack s = p.inventory.getCurrentItem();
if(s.itemID == Block.torchWood.blockID) {
// Difficult to get the coordinates for where the new block would have
// been placed.
if(event.isCancelable()) {
event.setCanceled(true);
}
}
}
}