Skip to content

Commit

Permalink
Added block_burn Event
Browse files Browse the repository at this point in the history
  • Loading branch information
Chris Gallarno committed Jul 18, 2013
1 parent 293760b commit 2f3fdd1
Show file tree
Hide file tree
Showing 5 changed files with 148 additions and 0 deletions.
Expand Up @@ -15,6 +15,7 @@
import com.laytonsmith.core.constructs.CString;
import com.laytonsmith.core.constructs.Target;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockBurnEvent;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.block.SignChangeEvent;

Expand Down Expand Up @@ -91,6 +92,24 @@ public MCBlockState getBlockReplacedState() {
return new BukkitMCBlockState(event.getBlockReplacedState());
}
}

@abstraction(type = Implementation.Type.BUKKIT)
public static class BukkitMCBlockBurnEvent implements MCBlockBurnEvent {

BlockBurnEvent event;

public BukkitMCBlockBurnEvent(BlockBurnEvent e) {
event = e;
}

public Object _GetObject() {
return event;
}

public MCBlock getBlock() {
return new BukkitMCBlock(event.getBlock());
}
}

@abstraction(type = Implementation.Type.BUKKIT)
public static class BukkitMCSignChangeEvent implements MCSignChangeEvent {
Expand Down
Expand Up @@ -3,12 +3,14 @@
package com.laytonsmith.abstraction.bukkit.events.drivers;

import com.laytonsmith.abstraction.bukkit.events.BukkitBlockEvents;
import com.laytonsmith.core.events.BoundEvent;
import com.laytonsmith.core.events.Driver;
import com.laytonsmith.core.events.EventUtils;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockBurnEvent;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.block.SignChangeEvent;

Expand Down Expand Up @@ -38,4 +40,11 @@ public void onBlockBreak(BlockBreakEvent e){
EventUtils.TriggerExternal(bbe);
EventUtils.TriggerListener(Driver.BLOCK_BREAK, "block_break", bbe);
}

@EventHandler(priority=EventPriority.LOWEST)
public void onBlockBurn(BlockBurnEvent e){
BukkitBlockEvents.BukkitMCBlockBurnEvent bbe = new BukkitBlockEvents.BukkitMCBlockBurnEvent(e);
EventUtils.TriggerExternal(bbe);
EventUtils.TriggerListener(Driver.BLOCK_BURN, "block_burn", bbe);
}
}
@@ -0,0 +1,14 @@
package com.laytonsmith.abstraction.events;

import com.laytonsmith.abstraction.blocks.MCBlock;
import com.laytonsmith.core.events.BindableEvent;

/**
*
* @author cgallarno
*/
public interface MCBlockBurnEvent extends BindableEvent {

public MCBlock getBlock();

}
1 change: 1 addition & 0 deletions src/main/java/com/laytonsmith/core/events/Driver.java
Expand Up @@ -26,6 +26,7 @@ public enum Driver {
SERVER_COMMAND,
BLOCK_BREAK,
BLOCK_PLACE,
BLOCK_BURN,
TARGET_ENTITY,
ENTITY_DAMAGE_PLAYER,
ENTITY_DAMAGE,
Expand Down
105 changes: 105 additions & 0 deletions src/main/java/com/laytonsmith/core/events/drivers/BlockEvents.java
Expand Up @@ -342,6 +342,111 @@ public boolean modifyEvent(String key, Construct value,
return false;
}
}

@api
public static class block_burn extends AbstractEvent {

public String getName() {
return "block_burn";
}

public String docs() {
return "{type: <string match> | data: <string match>} "
+ "This event is called when a block is burned. "
+ "Cancelling the event cancels the burn. "
+ "block: An array with "
+ "keys 'type' (int), 'data' (int), 'X' (int), 'Y' (int), 'Z' (int) "
+ "and 'world' (string) for the physical location of the block | "
+ "location: the locationArray of this block | drops | xp} "
+ "{block}";
}

public CHVersion since() {
return CHVersion.V3_3_1;
}

public Driver driver() {
return Driver.BLOCK_BURN;
}

public boolean matches(Map<String, Construct> prefilter, BindableEvent e)
throws PrefilterNonMatchException {
if (e instanceof MCBlockBurnEvent) {
MCBlockBurnEvent event = (MCBlockBurnEvent) e;

if (prefilter.containsKey("type")) {
Construct v = prefilter.get("type");

if (v instanceof CInt) {
int val = Integer.parseInt(v.val());

if (event.getBlock().getTypeId() != val) {
return false;
}
} else {
return false;
}
}

if (prefilter.containsKey("data")) {
Construct v = prefilter.get("data");

if (v instanceof CInt) {
int val = Integer.parseInt(v.val());

if ((int) event.getBlock().getData() != val) {
return false;
}
} else {
return false;
}
}
}

return true;
}

public BindableEvent convert(CArray manualObject) {
return null;
}

public Map<String, Construct> evaluate(BindableEvent e)
throws EventException {

MCBlockBurnEvent event = (MCBlockBurnEvent) e;
Map<String, Construct> map = evaluate_helper(event);

CArray blk = new CArray(Target.UNKNOWN);

int blktype = event.getBlock().getTypeId();
blk.set("type", new CInt(blktype, Target.UNKNOWN), Target.UNKNOWN);

int blkdata = event.getBlock().getData();
blk.set("data", new CInt(blkdata, Target.UNKNOWN), Target.UNKNOWN);

blk.set("X", new CInt(event.getBlock().getX(), Target.UNKNOWN), Target.UNKNOWN);
blk.set("Y", new CInt(event.getBlock().getY(), Target.UNKNOWN), Target.UNKNOWN);
blk.set("Z", new CInt(event.getBlock().getZ(), Target.UNKNOWN), Target.UNKNOWN);
blk.set("world", new CString(event.getBlock().getWorld().getName(), Target.UNKNOWN), Target.UNKNOWN);

map.put("block", blk);

CArray location = ObjectGenerator.GetGenerator()
.location(StaticLayer.GetLocation(event.getBlock().getWorld(), event.getBlock().getX(), event.getBlock().getY(), event.getBlock().getZ()));
map.put("location", location);

return map;
}

public boolean modifyEvent(String key, Construct value,
BindableEvent e) {

MCBlockBreakEvent event = (MCBlockBreakEvent) e;
MCBlock blk = event.getBlock();

return false;
}
}

@api
public static class sign_changed extends AbstractEvent {
Expand Down

0 comments on commit 2f3fdd1

Please sign in to comment.