Skip to content
Permalink
Browse files
Add hanging_place event
  • Loading branch information
Lildirt committed Nov 10, 2020
1 parent 612736e commit cbb47d7
Show file tree
Hide file tree
Showing 5 changed files with 124 additions and 0 deletions.
@@ -58,6 +58,7 @@
import com.laytonsmith.abstraction.events.MCEntityUnleashEvent;
import com.laytonsmith.abstraction.events.MCFireworkExplodeEvent;
import com.laytonsmith.abstraction.events.MCHangingBreakEvent;
import com.laytonsmith.abstraction.events.MCHangingPlaceEvent;
import com.laytonsmith.abstraction.events.MCItemDespawnEvent;
import com.laytonsmith.abstraction.events.MCItemSpawnEvent;
import com.laytonsmith.abstraction.events.MCPlayerDropItemEvent;
@@ -101,6 +102,7 @@
import org.bukkit.event.entity.ProjectileLaunchEvent;
import org.bukkit.event.hanging.HangingBreakByEntityEvent;
import org.bukkit.event.hanging.HangingBreakEvent;
import org.bukkit.event.hanging.HangingPlaceEvent;
import org.bukkit.event.player.PlayerDropItemEvent;
import org.bukkit.event.player.PlayerInteractAtEntityEvent;
import org.bukkit.event.player.PlayerInteractEntityEvent;
@@ -810,6 +812,31 @@ public MCEntity getRemover() {
}
}

@abstraction(type = Implementation.Type.BUKKIT)
public static class BukkitMCHangingPlaceEvent implements MCHangingPlaceEvent {

HangingPlaceEvent hpe;

public BukkitMCHangingPlaceEvent(Event event) {
hpe = (HangingPlaceEvent) event;
}

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

@Override
public MCHanging getEntity() {
return new BukkitMCHanging(hpe.getEntity());
}

@Override
public MCPlayer getPlayer() {
return new BukkitMCPlayer(hpe.getPlayer());
}
}

@abstraction(type = Implementation.Type.BUKKIT)
public static class BukkitMCEntityToggleGlideEvent implements MCEntityToggleGlideEvent {

@@ -16,6 +16,7 @@
import com.laytonsmith.abstraction.bukkit.events.BukkitEntityEvents.BukkitMCEntityUnleashEvent;
import com.laytonsmith.abstraction.bukkit.events.BukkitEntityEvents.BukkitMCFireworkExplodeEvent;
import com.laytonsmith.abstraction.bukkit.events.BukkitEntityEvents.BukkitMCHangingBreakEvent;
import com.laytonsmith.abstraction.bukkit.events.BukkitEntityEvents.BukkitMCHangingPlaceEvent;
import com.laytonsmith.abstraction.bukkit.events.BukkitEntityEvents.BukkitMCItemDespawnEvent;
import com.laytonsmith.abstraction.bukkit.events.BukkitEntityEvents.BukkitMCItemSpawnEvent;
import com.laytonsmith.abstraction.bukkit.events.BukkitEntityEvents.BukkitMCPlayerDropItemEvent;
@@ -54,6 +55,7 @@
import org.bukkit.event.entity.ProjectileHitEvent;
import org.bukkit.event.entity.ProjectileLaunchEvent;
import org.bukkit.event.hanging.HangingBreakEvent;
import org.bukkit.event.hanging.HangingPlaceEvent;
import org.bukkit.event.player.PlayerDropItemEvent;
import org.bukkit.event.player.PlayerInteractAtEntityEvent;
import org.bukkit.event.player.PlayerInteractEntityEvent;
@@ -185,6 +187,12 @@ public void onHangingBreak(HangingBreakEvent event) {
EventUtils.TriggerListener(Driver.HANGING_BREAK, "hanging_break", hbe);
}

@EventHandler(priority = EventPriority.LOWEST)
public void onHangingPlace(HangingPlaceEvent event) {
BukkitMCHangingPlaceEvent hpe = new BukkitMCHangingPlaceEvent(event);
EventUtils.TriggerListener(Driver.HANGING_PLACE, "hanging_place", hpe);
}

@EventHandler(priority = EventPriority.LOWEST)
public void onEntityToggleGlide(EntityToggleGlideEvent event) {
BukkitMCEntityToggleGlideEvent etge = new BukkitMCEntityToggleGlideEvent(event);
@@ -0,0 +1,13 @@
package com.laytonsmith.abstraction.events;

import com.laytonsmith.abstraction.MCPlayer;
import com.laytonsmith.abstraction.entities.MCHanging;
import com.laytonsmith.core.events.BindableEvent;

public interface MCHangingPlaceEvent extends BindableEvent {

MCHanging getEntity();

MCPlayer getPlayer();

}
@@ -42,6 +42,7 @@ public enum Driver {
ENTITY_PORTAL_TRAVEL,
ENTITY_UNLEASH,
HANGING_BREAK,
HANGING_PLACE,
ITEM_DROP,
ITEM_PICKUP,
ITEM_DESPAWN,
@@ -40,6 +40,7 @@
import com.laytonsmith.abstraction.events.MCEntityUnleashEvent;
import com.laytonsmith.abstraction.events.MCFireworkExplodeEvent;
import com.laytonsmith.abstraction.events.MCHangingBreakEvent;
import com.laytonsmith.abstraction.events.MCHangingPlaceEvent;
import com.laytonsmith.abstraction.events.MCItemDespawnEvent;
import com.laytonsmith.abstraction.events.MCItemSpawnEvent;
import com.laytonsmith.abstraction.events.MCPlayerDropItemEvent;
@@ -1856,6 +1857,80 @@ public boolean modifyEvent(String key, Mixed value, BindableEvent event) {
}
}

@api
public static class hanging_place extends AbstractEvent {

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

@Override
public String docs() {
return "{type: <macro> The entity type of the entity | player: <macro> The player triggering the event"
+ " | world: <macro> The world the entity is in}"
+ " This event is called when a player attempts to place an item frame, painting, or leash."
+ " {id: The entity ID of the entity. | type: The type of the hanging entity; can be ITEM_FRAME,"
+ " PAINTING, or LEASE_HITCH | location: Where the entity was placed. |"
+ " player: The name of the player which placed this entity. }"
+ " {}"
+ " {}";
}

@Override
public Version since() {
return MSVersion.V3_3_4;
}

@Override
public boolean matches(Map<String, Mixed> prefilter, BindableEvent event) throws PrefilterNonMatchException {
if(event instanceof MCHangingPlaceEvent) {
MCHangingPlaceEvent hangingPlaceEvent = (MCHangingPlaceEvent) event;
MCHanging hanging = hangingPlaceEvent.getEntity();
Prefilters.match(prefilter, "type", hanging.getType().name(), PrefilterType.MACRO);
Prefilters.match(prefilter, "player", hangingPlaceEvent.getPlayer().getName(), PrefilterType.MACRO);
Prefilters.match(prefilter, "world",
hangingPlaceEvent.getEntity().getLocation().getWorld().getName(), PrefilterType.MACRO);
return true;
} else {
return false;
}
}

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

@Override
public Map<String, Mixed> evaluate(BindableEvent event) throws EventException {
if(event instanceof MCHangingPlaceEvent) {
MCHangingPlaceEvent hangingPlaceEvent = (MCHangingPlaceEvent) event;
Map<String, Mixed> ret = evaluate_helper(event);
MCHanging hanging = hangingPlaceEvent.getEntity();

ret.put("type", new CString(hanging.getType().name(), Target.UNKNOWN));
ret.put("id", new CString(hanging.getUniqueId().toString(), Target.UNKNOWN));
ret.put("player", new CString(hangingPlaceEvent.getPlayer().getName(), Target.UNKNOWN));
ret.put("location", ObjectGenerator.GetGenerator().location(hanging.getLocation()));
return ret;
} else {
throw new EventException("Cannot convert event to HangingPlaceEvent");
}
}

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

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

}

@api
public static class entity_toggle_glide extends AbstractEvent {

0 comments on commit cbb47d7

Please sign in to comment.