Skip to content

Commit

Permalink
Merge pull request #2630 from tal5/Mount_Events_Fix
Browse files Browse the repository at this point in the history
Fix vehicle events
  • Loading branch information
mcmonkey4eva committed Jun 24, 2024
2 parents a4e70e5 + 03e8daa commit 83ff9d0
Show file tree
Hide file tree
Showing 9 changed files with 138 additions and 34 deletions.
5 changes: 0 additions & 5 deletions paper/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,6 @@
<id>papermc</id>
<url>https://repo.papermc.io/repository/maven-public/</url>
</repository>
<!--TODO: 1.20.6: Paper 1.20.6 uses a snapshot build of adventure currently, can remove this once that's no longer the case-->
<repository>
<id>sonatype-oss-snapshots1</id>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
</repository>
</repositories>

<dependencies>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -559,10 +559,10 @@ public void fire(Event event) {

@Override
public ObjectTag getContext(String name) {
switch (name) {
case "reflect_event": return currentEvent == null ? null : new JavaReflectedObjectTag(currentEvent);
}
return super.getContext(name);
return switch (name) {
case "reflect_event" -> currentEvent == null ? null : new JavaReflectedObjectTag(currentEvent);
default -> super.getContext(name);
};
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,9 +113,9 @@ public static void registerMainEvents() {
ScriptEvent.registerScriptEvent(EntityDespawnScriptEvent.class);
ScriptEvent.registerScriptEvent(EntityDropsItemScriptEvent.class);
ScriptEvent.registerScriptEvent(EntityEntersPortalScriptEvent.class);
ScriptEvent.registerScriptEvent(EntityEntersVehicleScriptEvent.class);
ScriptEvent.registerScriptEvent(NMSHandler.entityHelper.getEntersVehicleEventImpl());
ScriptEvent.registerScriptEvent(EntityExitsPortalScriptEvent.class);
ScriptEvent.registerScriptEvent(EntityExitsVehicleScriptEvent.class);
ScriptEvent.registerScriptEvent(NMSHandler.entityHelper.getExitsVehicleEventImpl());
ScriptEvent.registerScriptEvent(EntityExplodesScriptEvent.class);
ScriptEvent.registerScriptEvent(EntityExplosionPrimesScriptEvent.class);
ScriptEvent.registerScriptEvent(EntityFoodLevelChangeScriptEvent.class);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package com.denizenscript.denizen.events.entity;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import org.bukkit.event.EventHandler;
import org.bukkit.entity.Entity;
import org.bukkit.event.Listener;
import org.spigotmc.event.entity.EntityMountEvent;
import org.bukkit.event.entity.EntityEvent;

import java.util.Arrays;
import java.util.HashSet;
Expand Down Expand Up @@ -43,8 +43,6 @@ public EntityEntersVehicleScriptEvent() {

public EntityTag vehicle;
public EntityTag entity;
// TODO: 1.20.6: EntityMountEvent changed packages, might need to register in version-specific modules? or reflection?
public EntityMountEvent event;

public static HashSet<String> notRelevantEnterables = new HashSet<>(Arrays.asList("notable", "cuboid", "biome", "bed", "portal"));

Expand Down Expand Up @@ -90,11 +88,14 @@ else if (name.equals("entity")) {
return super.getContext(name);
}

@EventHandler
public void onEntityEntersVehicle(EntityMountEvent event) {
vehicle = new EntityTag(event.getMount());
entity = new EntityTag(event.getEntity());
this.event = event;
@Override
public String getName() { // TODO: once 1.20 is the minimum supported version, remove
return "EntityEntersVehicle";
}

public void fire(EntityEvent event, Entity vehicle) {
this.entity = new EntityTag(event.getEntity());
this.vehicle = new EntityTag(vehicle);
fire(event);
}
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package com.denizenscript.denizen.events.entity;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import org.bukkit.event.EventHandler;
import org.bukkit.entity.Entity;
import org.bukkit.event.Listener;
import org.spigotmc.event.entity.EntityDismountEvent;
import org.bukkit.event.entity.EntityEvent;

public class EntityExitsVehicleScriptEvent extends BukkitScriptEvent implements Listener {

Expand Down Expand Up @@ -40,8 +40,6 @@ public EntityExitsVehicleScriptEvent() {

public EntityTag vehicle;
public EntityTag entity;
// TODO: 1.20.6: EntityDismountEvent changed packages, might need to register in version-specific modules? or reflection?
public EntityDismountEvent event;

@Override
public boolean matches(ScriptPath path) {
Expand Down Expand Up @@ -74,11 +72,14 @@ else if (name.equals("entity")) {
return super.getContext(name);
}

@EventHandler
public void onEntityExitsVehicle(EntityDismountEvent event) {
vehicle = new EntityTag(event.getDismounted());
entity = new EntityTag(event.getEntity());
this.event = event;
@Override
public String getName() { // TODO: once 1.20 is the minimum supported version, remove
return "EntityExitsVehicle";
}

public void fire(EntityEvent event, Entity vehicle) {
this.entity = new EntityTag(event.getEntity());
this.vehicle = new EntityTag(vehicle);
fire(event);
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.denizenscript.denizen.nms.interfaces;

import com.denizenscript.denizen.events.entity.EntityEntersVehicleScriptEvent;
import com.denizenscript.denizen.events.entity.EntityExitsVehicleScriptEvent;
import com.denizenscript.denizen.nms.util.jnbt.CompoundTag;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.objects.LocationTag;
Expand All @@ -13,9 +15,8 @@
import org.bukkit.block.CreatureSpawner;
import org.bukkit.block.data.BlockData;
import org.bukkit.entity.*;
import org.bukkit.event.entity.EntityDamageByBlockEvent;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.*;
import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.meta.MapMeta;
import org.bukkit.util.BoundingBox;
Expand Down Expand Up @@ -476,4 +477,26 @@ public CompoundTag getRawNBT(Entity entity) {
public void modifyRawNBT(Entity entity, CompoundTag tag) {
throw new UnsupportedOperationException();
}

public static class EntityEntersVehicleScriptEventImpl extends EntityEntersVehicleScriptEvent {
@EventHandler
public void onEntityMount(EntityMountEvent event) {
fire(event, event.getMount());
}
}

public Class<? extends EntityEntersVehicleScriptEvent> getEntersVehicleEventImpl() { // TODO: once 1.20 is the minimum supported version, implement in the ScriptEvent class as usual
return EntityEntersVehicleScriptEventImpl.class;
}

public static class EntityExitsVehicleScriptEventImpl extends EntityExitsVehicleScriptEvent {
@EventHandler
public void onEntityMount(EntityDismountEvent event) {
fire(event, event.getDismounted());
}
}

public Class<? extends EntityExitsVehicleScriptEvent> getExitsVehicleEventImpl() { // TODO: once 1.20 is the minimum supported version, implement in the ScriptEvent class as usual
return EntityExitsVehicleScriptEventImpl.class;
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.denizenscript.denizen.nms.v1_17.helpers;

import com.denizenscript.denizen.Denizen;
import com.denizenscript.denizen.events.entity.EntityEntersVehicleScriptEvent;
import com.denizenscript.denizen.events.entity.EntityExitsVehicleScriptEvent;
import com.denizenscript.denizen.nms.NMSHandler;
import com.denizenscript.denizen.nms.interfaces.EntityHelper;
import com.denizenscript.denizen.nms.util.jnbt.CompoundTag;
Expand Down Expand Up @@ -52,11 +54,14 @@
import org.bukkit.craftbukkit.v1_17_R1.event.CraftEventFactory;
import org.bukkit.craftbukkit.v1_17_R1.inventory.CraftItemStack;
import org.bukkit.entity.*;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scheduler.BukkitTask;
import org.bukkit.util.BoundingBox;
import org.bukkit.util.Vector;
import org.spigotmc.event.entity.EntityDismountEvent;
import org.spigotmc.event.entity.EntityMountEvent;

import java.lang.invoke.MethodHandle;
import java.lang.reflect.Field;
Expand Down Expand Up @@ -700,4 +705,27 @@ public void openHorseInventory(Player player, AbstractHorse horse) {
net.minecraft.world.entity.animal.horse.AbstractHorse nmsHorse = ((CraftAbstractHorse) horse).getHandle();
((CraftPlayer) player).getHandle().openHorseInventory(nmsHorse, nmsHorse.inventory);
}

public static class EntityEntersVehicleScriptEventImpl extends EntityEntersVehicleScriptEvent {
@EventHandler
public void onEntityMount(EntityMountEvent event) {
fire(event, event.getMount());
}
}

@Override
public Class<? extends EntityEntersVehicleScriptEvent> getEntersVehicleEventImpl() {
return EntityEntersVehicleScriptEventImpl.class;
}

public static class EntityExitsVehicleScriptEventImpl extends EntityExitsVehicleScriptEvent {
@EventHandler
public void onEntityMount(EntityDismountEvent event) {
fire(event, event.getDismounted());
}
}

public Class<? extends EntityExitsVehicleScriptEvent> getExitsVehicleEventImpl() {
return EntityExitsVehicleScriptEventImpl.class;
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.denizenscript.denizen.nms.v1_18.helpers;

import com.denizenscript.denizen.Denizen;
import com.denizenscript.denizen.events.entity.EntityEntersVehicleScriptEvent;
import com.denizenscript.denizen.events.entity.EntityExitsVehicleScriptEvent;
import com.denizenscript.denizen.nms.NMSHandler;
import com.denizenscript.denizen.nms.interfaces.EntityHelper;
import com.denizenscript.denizen.nms.util.jnbt.CompoundTag;
Expand Down Expand Up @@ -59,11 +61,14 @@
import org.bukkit.craftbukkit.v1_18_R2.event.CraftEventFactory;
import org.bukkit.craftbukkit.v1_18_R2.inventory.CraftItemStack;
import org.bukkit.entity.*;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scheduler.BukkitTask;
import org.bukkit.util.BoundingBox;
import org.bukkit.util.Vector;
import org.spigotmc.event.entity.EntityDismountEvent;
import org.spigotmc.event.entity.EntityMountEvent;

import java.lang.invoke.MethodHandle;
import java.lang.reflect.Field;
Expand Down Expand Up @@ -777,4 +782,27 @@ public void openHorseInventory(Player player, AbstractHorse horse) {
net.minecraft.world.entity.animal.horse.AbstractHorse nmsHorse = ((CraftAbstractHorse) horse).getHandle();
((CraftPlayer) player).getHandle().openHorseInventory(nmsHorse, nmsHorse.inventory);
}

public static class EntityEntersVehicleScriptEventImpl extends EntityEntersVehicleScriptEvent {
@EventHandler
public void onEntityMount(EntityMountEvent event) {
fire(event, event.getMount());
}
}

@Override
public Class<? extends EntityEntersVehicleScriptEvent> getEntersVehicleEventImpl() {
return EntityEntersVehicleScriptEventImpl.class;
}

public static class EntityExitsVehicleScriptEventImpl extends EntityExitsVehicleScriptEvent {
@EventHandler
public void onEntityMount(EntityDismountEvent event) {
fire(event, event.getDismounted());
}
}

public Class<? extends EntityExitsVehicleScriptEvent> getExitsVehicleEventImpl() {
return EntityExitsVehicleScriptEventImpl.class;
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.denizenscript.denizen.nms.v1_19.helpers;

import com.denizenscript.denizen.Denizen;
import com.denizenscript.denizen.events.entity.EntityEntersVehicleScriptEvent;
import com.denizenscript.denizen.events.entity.EntityExitsVehicleScriptEvent;
import com.denizenscript.denizen.nms.NMSHandler;
import com.denizenscript.denizen.nms.interfaces.EntityHelper;
import com.denizenscript.denizen.nms.util.jnbt.CompoundTag;
Expand Down Expand Up @@ -68,11 +70,14 @@
import org.bukkit.craftbukkit.v1_19_R3.event.CraftEventFactory;
import org.bukkit.craftbukkit.v1_19_R3.inventory.CraftItemStack;
import org.bukkit.entity.*;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scheduler.BukkitTask;
import org.bukkit.util.BoundingBox;
import org.bukkit.util.Vector;
import org.spigotmc.event.entity.EntityDismountEvent;
import org.spigotmc.event.entity.EntityMountEvent;

import java.lang.invoke.MethodHandle;
import java.lang.reflect.Field;
Expand Down Expand Up @@ -830,4 +835,27 @@ public void openHorseInventory(Player player, AbstractHorse horse) {
net.minecraft.world.entity.animal.horse.AbstractHorse nmsHorse = ((CraftAbstractHorse) horse).getHandle();
((CraftPlayer) player).getHandle().openHorseInventory(nmsHorse, nmsHorse.inventory);
}

public static class EntityEntersVehicleScriptEventImpl extends EntityEntersVehicleScriptEvent {
@EventHandler
public void onEntityMount(EntityMountEvent event) {
fire(event, event.getMount());
}
}

@Override
public Class<? extends EntityEntersVehicleScriptEvent> getEntersVehicleEventImpl() {
return EntityEntersVehicleScriptEventImpl.class;
}

public static class EntityExitsVehicleScriptEventImpl extends EntityExitsVehicleScriptEvent {
@EventHandler
public void onEntityMount(EntityDismountEvent event) {
fire(event, event.getDismounted());
}
}

public Class<? extends EntityExitsVehicleScriptEvent> getExitsVehicleEventImpl() {
return EntityExitsVehicleScriptEventImpl.class;
}
}

0 comments on commit 83ff9d0

Please sign in to comment.