下面列出了org.bukkit.Material#FIRE 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@EventWrapper
public void onBlockBurn(final BlockBurnEvent event) {
Match match = PGM.get().getMatchManager().getMatch(event.getBlock().getWorld());
if (match == null) return;
BlockState oldState = event.getBlock().getState();
BlockState newState = BlockStates.toAir(oldState);
MatchPlayerState igniterState = null;
TrackerMatchModule tmm = match.needModule(TrackerMatchModule.class);
for (BlockFace face : NEIGHBORS) {
Block neighbor = oldState.getBlock().getRelative(face);
if (neighbor.getType() == Material.FIRE) {
igniterState = tmm.getOwner(neighbor);
if (igniterState != null) break;
}
}
this.callEvent(event, oldState, newState, igniterState);
}
@EventWrapper
public void onBlockBurn(final BlockBurnEvent event) {
Match match = PGM.getMatchManager().getMatch(event.getBlock().getWorld());
if(match == null) return;
BlockState oldState = event.getBlock().getState();
BlockState newState = BlockStateUtils.toAir(oldState);
MatchPlayerState igniterState = null;
for(BlockFace face : NEIGHBORS) {
Block neighbor = oldState.getBlock().getRelative(face);
if(neighbor.getType() == Material.FIRE) {
igniterState = blockResolver.getOwner(neighbor);
if(igniterState != null) break;
}
}
this.callEvent(event, oldState, newState, igniterState);
}
@EventHandler(priority = EventPriority.NORMAL)
public void OnBlockFormEvent (BlockFormEvent event) {
/* Disable cobblestone generators. */
if (ItemManager.getId(event.getNewState()) == CivData.COBBLESTONE) {
ItemManager.setTypeId(event.getNewState(), CivData.GRAVEL);
return;
}
Chunk spreadChunk = event.getNewState().getChunk();
coord.setX(spreadChunk.getX());
coord.setZ(spreadChunk.getZ());
coord.setWorldname(spreadChunk.getWorld().getName());
TownChunk tc = CivGlobal.getTownChunk(coord);
if (tc == null) {
return;
}
if (tc.perms.isFire() == false) {
if(event.getNewState().getType() == Material.FIRE) {
event.setCancelled(true);
}
}
}
/**
* Prevent fire spread
* @param e - event
*/
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onBlockSpread(BlockSpreadEvent e) {
if (DEBUG) {
plugin.getLogger().info(e.getEventName());
plugin.getLogger().info(e.getSource().getType().toString());
}
if (e.getSource().getType() == Material.FIRE) {
if (!inWorld(e.getBlock())) {
//plugin.getLogger().info("DEBUG: Not in world");
return;
}
if (actionAllowed(e.getBlock().getLocation(), SettingsFlag.FIRE_SPREAD)) {
return;
}
e.setCancelled(true);
}
}
@EventWrapper
public void onBlockSpread(final BlockSpreadEvent event) {
// This fires for: fire, grass, mycelium, mushrooms, and vines
// Fire is already handled by BlockIgniteEvent
if (event.getNewState().getType() != Material.FIRE) {
this.callEvent(
new BlockTransformEvent(event, event.getBlock().getState(), event.getNewState()));
}
}
@EventWrapper
public void onBlockSpread(final BlockSpreadEvent event) {
// This fires for: fire, grass, mycelium, mushrooms, and vines
// Fire is already handled by BlockIgniteEvent
if(event.getNewState().getType() != Material.FIRE) {
this.callEvent(new BlockTransformEvent(event, event.getBlock().getState(), event.getNewState()));
}
}
public static void handleSpreadEvent(@Nonnull BlockSpreadEvent e) {
if (e.isCancelled()) return;
// Only cancel fire spreading
if (e.getBlock().getType() == Material.FIRE) {
cancelWorldEvent(e.getBlock().getChunk(), e, "blockFireSpread");
}
}
@Override
protected ItemStack getIcon()
{
return new ItemStack(Material.FIRE);
}