Search in sources :

Example 11 with Block

use of org.bukkit.block.Block in project Prism-Bukkit by prism.

the class PrismBlockEvents method onBlockForm.

/**
     * 
     * @param event
     */
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onBlockForm(final BlockFormEvent event) {
    if (!Prism.getIgnore().event("block-form", event.getBlock()))
        return;
    final Block b = event.getBlock();
    final BlockState s = event.getNewState();
    RecordingQueue.addToQueue(ActionFactory.createBlockChange("block-form", b.getLocation(), b.getTypeId(), b.getData(), s.getTypeId(), s.getRawData(), "Environment"));
}
Also used : BlockState(org.bukkit.block.BlockState) Block(org.bukkit.block.Block) EventHandler(org.bukkit.event.EventHandler)

Example 12 with Block

use of org.bukkit.block.Block in project Prism-Bukkit by prism.

the class PrismBlockEvents method onBlockFromTo.

/**
     * 
     * @param event
     */
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onBlockFromTo(final BlockFromToEvent event) {
    // Ignore blocks that aren't liquid. @todo what else triggers this?
    if (!event.getBlock().isLiquid())
        return;
    final BlockState from = event.getBlock().getState();
    final BlockState to = event.getToBlock().getState();
    // Watch for blocks that the liquid can break
    if (me.botsko.elixr.BlockUtils.canFlowBreakMaterial(to.getType())) {
        if (from.getType() == Material.STATIONARY_WATER || from.getType() == Material.WATER) {
            if (Prism.getIgnore().event("water-break", event.getBlock())) {
                RecordingQueue.addToQueue(ActionFactory.createBlock("water-break", event.getToBlock(), "Water"));
            }
        } else if (from.getType() == Material.STATIONARY_LAVA || from.getType() == Material.LAVA) {
            if (Prism.getIgnore().event("lava-break", event.getBlock())) {
                RecordingQueue.addToQueue(ActionFactory.createBlock("lava-break", event.getToBlock(), "Lava"));
            }
        }
    }
    // Record water flow
    if (from.getType() == Material.STATIONARY_WATER || from.getType() == Material.WATER) {
        if (Prism.getIgnore().event("water-flow", event.getBlock())) {
            RecordingQueue.addToQueue(ActionFactory.createBlock("water-flow", event.getBlock(), "Water"));
        }
    }
    // Record lava flow
    if (from.getType() == Material.STATIONARY_LAVA || from.getType() == Material.LAVA) {
        if (Prism.getIgnore().event("lava-flow", event.getBlock())) {
            RecordingQueue.addToQueue(ActionFactory.createBlock("lava-flow", event.getBlock(), "Lava"));
        }
    }
    /**
         * Predict the forming of Stone, Obsidian, Cobblestone because of
         * lava/water flowing into each other. Boy, I wish bukkit used
         * block_form for this.
         */
    if (!Prism.getIgnore().event("block-form", event.getBlock()))
        return;
    // Lava flows to water. STONE forms
    if (from.getType().equals(Material.STATIONARY_LAVA) && to.getType().equals(Material.STATIONARY_WATER)) {
        final Block newTo = event.getToBlock();
        newTo.setType(Material.STONE);
        RecordingQueue.addToQueue(ActionFactory.createBlock("block-form", newTo, "Environment"));
    }
// // int id = event.getBlock().getTypeId();
//
// // If moving to air
// Block b = event.getToBlock();
// if(b.getType().equals(Material.AIR)){
//
// // formed sat/lava = cobble
// // formed stationary_water = stone
//
// // Are we moving from a water block
// Material fromM = event.getBlock().getType();
// if(fromM.equals(Material.WATER) ||
// fromM.equals(Material.STATIONARY_WATER)){
// // Check all sides
// for(BlockFace face : BlockFace.values()){
// Block r = b.getRelative(face, 1);
// // If the side is lava, cobble shall form.
// // Note: if stationary_lava, stone will form. Seems to always be
// captured above.
// if(r.getType().equals(Material.LAVA) ||
// r.getType().equals(Material.STATIONARY_LAVA)){
// String coordsKey = r.getX()+":"+r.getY()+":"+r.getZ();
// if(coordsUsed.contains(coordsKey)) continue;
// coordsUsed.add(coordsKey);
// Prism.debug("COBBLE FORMED " + r.getType().name());
// // r.setType(Material.COBBLESTONE);
// plugin.actionsRecorder.addToQueue( new
// BlockAction(ActionType.BLOCK_FORM, r, "Environment") );
// }
// }
// }
// }
//
//
// // Water flowing into lava forms obsidian or cobble
// if ( from.getType().equals(Material.STATIONARY_WATER) &&
// to.getType().equals(Material.STATIONARY_LAVA) ) {
// Prism.debug("FROM WATER to " + to.getType().name());
// BlockState lower =
// event.getToBlock().getRelative(BlockFace.DOWN).getState();
// // Obsidian can form below
// if( lower.getType().equals(Material.OBSIDIAN) ){
// String coordsKey = lower.getX()+":"+lower.getY()+":"+lower.getZ();
// if(coordsUsed.contains(coordsKey)) return;
// // Add coords to list the event has already fired for
// coordsUsed.add(coordsKey);
// Prism.debug("COBBLE/OBY FORMED BELOW " + coordsKey);
// plugin.actionsRecorder.addToQueue( new
// BlockAction(ActionType.BLOCK_FORM, lower.getBlock(), "Environment")
// );
// }
//
// }
}
Also used : BlockState(org.bukkit.block.BlockState) Block(org.bukkit.block.Block) EventHandler(org.bukkit.event.EventHandler)

Example 13 with Block

use of org.bukkit.block.Block in project Prism-Bukkit by prism.

the class PrismBlockEvents method onBlockPlace.

/**
     * 
     * @param event
     */
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onBlockPlace(final BlockPlaceEvent event) {
    final Player player = event.getPlayer();
    final Block block = event.getBlock();
    if (!Prism.getIgnore().event("block-place", player))
        return;
    if (block.getType().equals(Material.AIR))
        return;
    final BlockState s = event.getBlockReplacedState();
    RecordingQueue.addToQueue(ActionFactory.createBlockChange("block-place", block.getLocation(), s.getTypeId(), s.getRawData(), block.getTypeId(), block.getData(), player.getName()));
    // Pass to the placement alerter
    if (!player.hasPermission("prism.alerts.use.place.ignore") && !player.hasPermission("prism.alerts.ignore")) {
        plugin.useMonitor.alertOnBlockPlacement(player, block);
    }
}
Also used : Player(org.bukkit.entity.Player) BlockState(org.bukkit.block.BlockState) Block(org.bukkit.block.Block) EventHandler(org.bukkit.event.EventHandler)

Example 14 with Block

use of org.bukkit.block.Block in project HawkEye by oliverwoodings.

the class Undo method run.

/**
	 * Run the undo.
	 * Contains appropriate methods of catching errors and notifying the player
	 */
public void run() {
    //Start rollback process
    int i = 0;
    while (i < 200 && undoQueue.hasNext()) {
        //If undo doesn't exist
        DataEntry entry = undoQueue.next();
        if (entry.getUndoState() == null)
            continue;
        //Global undo
        if (undoType == RollbackType.GLOBAL) {
            entry.getUndoState().update(true);
            //Add back into database if delete data is on
            if (Config.DeleteDataOnRollback)
                DataManager.addEntry(entry);
        } else //Player undo
        {
            Player player = (Player) session.getSender();
            Block block = entry.getUndoState().getBlock();
            player.sendBlockChange(block.getLocation(), block.getType(), block.getData());
        }
        counter++;
    }
    //Check if undo is finished
    if (!undoQueue.hasNext()) {
        //End timer
        Bukkit.getServer().getScheduler().cancelTask(timerID);
        session.setDoingRollback(false);
        session.setRollbackResults(null);
        Util.sendMessage(session.getSender(), "&cUndo complete, &7" + counter + " &cedits performed");
        Util.debug("Undo complete, " + counter + " edits performed");
    }
}
Also used : DataEntry(uk.co.oliwali.HawkEye.entry.DataEntry) Player(org.bukkit.entity.Player) Block(org.bukkit.block.Block)

Example 15 with Block

use of org.bukkit.block.Block in project HawkEye by oliverwoodings.

the class Rebuild method run.

/**
	 * Run the rollback.
	 * Contains appropriate methods of catching errors and notifying the player
	 */
public void run() {
    //Start rollback process
    int i = 0;
    while (i < 200 && rebuildQueue.hasNext()) {
        i++;
        DataEntry entry = rebuildQueue.next();
        //If the action can't be rolled back, skip this entry
        if (entry.getType() == null || !entry.getType().canRollback())
            continue;
        //If the world doesn't exist, skip this entry
        World world = HawkEye.server.getWorld(entry.getWorld());
        if (world == null)
            continue;
        //Get some data from the entry
        Location loc = new Location(world, entry.getX(), entry.getY(), entry.getZ());
        Block block = world.getBlockAt(loc);
        //Rebuild it
        entry.rebuild(block);
        counter++;
    }
    //Check if rollback is finished
    if (!rebuildQueue.hasNext()) {
        //End timer
        Bukkit.getServer().getScheduler().cancelTask(timerID);
        session.setDoingRollback(false);
        session.setRollbackResults(undo);
        Util.sendMessage(session.getSender(), "&cRebuild complete, &7" + counter + "&c edits performed");
        Util.sendMessage(session.getSender(), "&cUndo this rebuild using &7/hawk undo");
        Util.debug("Rebuild complete, " + counter + " edits performed");
    }
}
Also used : DataEntry(uk.co.oliwali.HawkEye.entry.DataEntry) Block(org.bukkit.block.Block) World(org.bukkit.World) Location(org.bukkit.Location)

Aggregations

Block (org.bukkit.block.Block)187 EventHandler (org.bukkit.event.EventHandler)62 Player (org.bukkit.entity.Player)42 Location (org.bukkit.Location)30 BlockState (org.bukkit.block.BlockState)28 Sign (org.bukkit.block.Sign)24 Material (org.bukkit.Material)23 BlockFace (org.bukkit.block.BlockFace)23 GlowBlock (net.glowstone.block.GlowBlock)19 ASkyBlock (com.wasteofplastic.acidisland.ASkyBlock)16 MaterialData (org.bukkit.material.MaterialData)16 ArrayList (java.util.ArrayList)15 World (org.bukkit.World)14 Entity (org.bukkit.entity.Entity)14 ItemStack (org.bukkit.inventory.ItemStack)14 TownBlock (com.palmergames.bukkit.towny.object.TownBlock)13 Vector (org.bukkit.util.Vector)13 IOException (java.io.IOException)7 net.aufdemrand.denizencore.objects.dList (net.aufdemrand.denizencore.objects.dList)6 net.aufdemrand.denizen.objects.dLocation (net.aufdemrand.denizen.objects.dLocation)5