Skip to content

Commit

Permalink
Merge pull request #261 from PseudoKnight/enchancements
Browse files Browse the repository at this point in the history
Added entity_interact event
  • Loading branch information
LadyCailin committed Feb 14, 2015
2 parents 5034fa3 + d5d59f0 commit dea2090
Show file tree
Hide file tree
Showing 5 changed files with 126 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
import com.laytonsmith.abstraction.events.MCEntityDeathEvent;
import com.laytonsmith.abstraction.events.MCEntityEnterPortalEvent;
import com.laytonsmith.abstraction.events.MCEntityExplodeEvent;
import com.laytonsmith.abstraction.events.MCEntityInteractEvent;
import com.laytonsmith.abstraction.events.MCEntityTargetEvent;
import com.laytonsmith.abstraction.events.MCHangingBreakEvent;
import com.laytonsmith.abstraction.events.MCItemDespawnEvent;
Expand Down Expand Up @@ -67,6 +68,7 @@
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.entity.EntityInteractEvent;
import org.bukkit.event.entity.EntityPortalEnterEvent;
import org.bukkit.event.entity.EntityTargetEvent;
import org.bukkit.event.entity.ItemDespawnEvent;
Expand Down Expand Up @@ -680,6 +682,41 @@ public Object _GetObject() {
}
}

@abstraction(type = Implementation.Type.BUKKIT)
public static class BukkitMCEntityInteractEvent implements MCEntityInteractEvent {

EntityInteractEvent eie;

public BukkitMCEntityInteractEvent(EntityInteractEvent event) {
eie = event;
}

@Override
public Object _GetObject() {
return eie;
}

@Override
public MCEntity getEntity() {
return BukkitConvertor.BukkitGetCorrectEntity(eie.getEntity());
}

@Override
public MCBlock getBlock() {
return new BukkitMCBlock(eie.getBlock());
}

@Override
public boolean isCancelled() {
return eie.isCancelled();
}

@Override
public void setCancelled(boolean cancelled) {
eie.setCancelled(cancelled);
}
}

@abstraction(type = Implementation.Type.BUKKIT)
public static class BukkitMCHangingBreakEvent implements MCHangingBreakEvent {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.entity.EntityInteractEvent;
import org.bukkit.event.entity.EntityPortalEnterEvent;
import org.bukkit.event.entity.EntityTargetEvent;
import org.bukkit.event.entity.ItemDespawnEvent;
Expand Down Expand Up @@ -157,6 +158,13 @@ public void onChangeBlock(EntityChangeBlockEvent event) {
EventUtils.TriggerListener(Driver.ENTITY_CHANGE_BLOCK, "entity_change_block", ecbe);
}

@EventHandler(priority = EventPriority.LOWEST)
public void onInteract(EntityInteractEvent event) {
BukkitEntityEvents.BukkitMCEntityInteractEvent eie = new BukkitEntityEvents.BukkitMCEntityInteractEvent(event);
EventUtils.TriggerExternal(eie);
EventUtils.TriggerListener(Driver.ENTITY_INTERACT, "entity_interact", eie);
}

@EventHandler(priority = EventPriority.LOWEST)
public void onHangingBreak(HangingBreakEvent event) {
BukkitEntityEvents.BukkitMCHangingBreakEvent hbe = new BukkitEntityEvents.BukkitMCHangingBreakEvent(event);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.laytonsmith.abstraction.events;

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

public interface MCEntityInteractEvent extends BindableEvent {
public MCEntity getEntity();
public MCBlock getBlock();
public boolean isCancelled();
public void setCancelled(boolean cancelled);
}
1 change: 1 addition & 0 deletions src/main/java/com/laytonsmith/core/events/Driver.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ public enum Driver {
ENTITY_DEATH,
ENTITY_ENTER_PORTAL,
ENTITY_EXPLODE,
ENTITY_INTERACT,
HANGING_BREAK,
ITEM_DROP,
ITEM_PICKUP,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import com.laytonsmith.abstraction.events.MCEntityDeathEvent;
import com.laytonsmith.abstraction.events.MCEntityEnterPortalEvent;
import com.laytonsmith.abstraction.events.MCEntityExplodeEvent;
import com.laytonsmith.abstraction.events.MCEntityInteractEvent;
import com.laytonsmith.abstraction.events.MCEntityTargetEvent;
import com.laytonsmith.abstraction.events.MCHangingBreakEvent;
import com.laytonsmith.abstraction.events.MCItemDespawnEvent;
Expand Down Expand Up @@ -1475,6 +1476,73 @@ public CHVersion since() {
}
}

@api
public static class entity_interact extends AbstractEvent {

@Override
public String getName() {
return "entity_interact";
}

@Override
public String docs() {
return "{type: <string match> the entity type | block: <item match> The block id }"
+ " Fires when a non-player entity physically interacts with and triggers a block."
+ " (eg. pressure plates, redstone ore, farmland, tripwire, and wooden button)"
+ " {entity: the ID of the entity that interacted with the block"
+ " | block: the block ID with which the entity interacted "
+ " | location: the location of the interaction}"
+ " {}"
+ " {}";
}

@Override
public boolean matches(Map<String, Construct> prefilter, BindableEvent e) throws PrefilterNonMatchException {
if (e instanceof MCEntityInteractEvent) {
MCEntityInteractEvent event = (MCEntityInteractEvent) e;
Prefilters.match(prefilter, "type", event.getEntity().getType().name(), PrefilterType.STRING_MATCH);
Prefilters.match(prefilter, "block", event.getBlock().getTypeId(), PrefilterType.ITEM_MATCH);
return true;
}
return false;
}

@Override
public BindableEvent convert(CArray manualObject, Target t) {
return null;
}

@Override
public Map<String, Construct> evaluate(BindableEvent e) throws EventException {
if (e instanceof MCEntityInteractEvent) {
MCEntityInteractEvent event = (MCEntityInteractEvent) e;
Target t = Target.UNKNOWN;
Map<String, Construct> ret = evaluate_helper(event);
ret.put("entity", new CInt(event.getEntity().getEntityId(), t));
ret.put("block", new CInt(event.getBlock().getTypeId(), t));
ret.put("location", ObjectGenerator.GetGenerator().location(event.getBlock().getLocation(), false));
return ret;
} else {
throw new EventException("Could not convert to MCEntityInteractEvent");
}
}

@Override
public boolean modifyEvent(String key, Construct value, BindableEvent event) {
return false;
}

@Override
public Driver driver() {
return Driver.ENTITY_INTERACT;
}

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

public static Map<String, Construct> parseEntityDamageEvent(MCEntityDamageEvent event,
Map<String, Construct> map) {
if (event != null) {
Expand Down

0 comments on commit dea2090

Please sign in to comment.