Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
3a5700b
Update Gradle wrapper to 9.5.0
github-actions[bot] May 3, 2026
2b381b2
Update Gradle wrapper to 9.5.1
github-actions[bot] May 17, 2026
252e5cb
Merge branch 'SkriptLang:master' into master
AnOwlBe Jun 8, 2026
1a46531
Update Gradle wrapper to 9.6.0
github-actions[bot] Jun 21, 2026
f3a8990
initial work still alot todo
AnOwlBe Jun 26, 2026
d78e01b
more random stuff
AnOwlBe Jun 27, 2026
30d8ead
push before switching branches
AnOwlBe Jun 28, 2026
66f633c
more stuff
AnOwlBe Jun 28, 2026
527ae06
aa
AnOwlBe Jun 28, 2026
cda7f94
wtflip is tis
AnOwlBe Jun 29, 2026
7ad1518
more random stuff
AnOwlBe Jun 29, 2026
a2f8ac1
final straw (just need to finish EvtEntityMove.java & do a quick revi…
AnOwlBe Jun 30, 2026
975a833
small stuff
AnOwlBe Jul 2, 2026
846edb8
code cleanup
AnOwlBe Jul 2, 2026
434fdd7
Final commit before pr (hopefully)
AnOwlBe Jul 3, 2026
5917cb0
Merge branch 'dev/feature' into EntityEvents
AnOwlBe Jul 3, 2026
a502005
stuff
AnOwlBe Jul 3, 2026
7f2d44d
this isn't needed
AnOwlBe Jul 3, 2026
4fd2bb0
requested changes
AnOwlBe Jul 3, 2026
e357160
Apply suggestions from code review
AnOwlBe Jul 3, 2026
941e68d
requested changes
AnOwlBe Jul 5, 2026
9c5658b
Merge remote-tracking branch 'origin/EntityEvents' into EntityEvents
AnOwlBe Jul 5, 2026
908d6fb
Apply suggestions from code review
AnOwlBe Jul 5, 2026
a5213b9
Apply suggestions from code review
AnOwlBe Jul 5, 2026
87284de
Merge branch 'EntityEvents' of https://github.com/AnOwlBe/Skript into…
AnOwlBe Jul 5, 2026
9400900
requested changes
AnOwlBe Jul 5, 2026
f03ba39
Update src/main/java/org/skriptlang/skript/bukkit/entity/elements/eve…
AnOwlBe Jul 5, 2026
3f55175
should fix tests failing
AnOwlBe Jul 5, 2026
4f2306a
Merge remote-tracking branch 'origin/EntityEvents' into EntityEvents
AnOwlBe Jul 5, 2026
3ed83a5
should fix tests failing [2x]
AnOwlBe Jul 5, 2026
59148b5
requested changes
AnOwlBe Jul 5, 2026
da1aec6
small thing noticed
AnOwlBe Jul 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
164 changes: 82 additions & 82 deletions gradlew.bat

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

116 changes: 0 additions & 116 deletions src/main/java/ch/njol/skript/classes/data/BukkitEventValues.java
Original file line number Diff line number Diff line change
Expand Up @@ -192,44 +192,6 @@ public static void register(EventValueRegistry registry) {
registry.register(EventValue.simple(SignChangeEvent.class, Player.class, SignChangeEvent::getPlayer));
registry.register(EventValue.simple(SignChangeEvent.class, Component[].class, event -> event.lines().toArray(new Component[0])));

// === EntityEvents ===
registry.register(EventValue.builder(EntityEvent.class, Entity.class)
.getter(EntityEvent::getEntity)
.excludes(EntityDamageEvent.class, EntityDeathEvent.class)
.excludedErrorMessage("Use 'attacker' and/or 'victim' in damage/death events")
.build());
registry.register(EventValue.builder(EntityEvent.class, CommandSender.class)
.getter(EntityEvent::getEntity)
.excludes(EntityDamageEvent.class, EntityDeathEvent.class)
.excludedErrorMessage("Use 'attacker' and/or 'victim' in damage/death events")
.build());
registry.register(EventValue.simple(EntityEvent.class, World.class, event -> event.getEntity().getWorld()));
registry.register(EventValue.simple(EntityEvent.class, Location.class, event -> event.getEntity().getLocation()));
registry.register(EventValue.builder(EntityEvent.class, EntityData.class)
.getter(event -> EntityData.fromEntity(event.getEntity()))
.excludes(EntityDamageEvent.class, EntityDeathEvent.class)
.excludedErrorMessage("Use 'type of attacker/victim' in damage/death events.")
.build());
// EntityDamageEvent
registry.register(EventValue.simple(EntityDamageEvent.class, DamageCause.class, EntityDamageEvent::getCause));
registry.register(EventValue.simple(EntityDamageByEntityEvent.class, Projectile.class, event -> {
if (event.getDamager() instanceof Projectile projectile)
return projectile;
return null;
}));
// EntityDeathEvent
registry.register(EventValue.simple(EntityDeathEvent.class, ItemStack[].class, event -> event.getDrops().toArray(new ItemStack[0])));
registry.register(EventValue.simple(EntityDeathEvent.class, Projectile.class, event -> {
EntityDamageEvent damageEvent = event.getEntity().getLastDamageCause();
if (damageEvent instanceof EntityDamageByEntityEvent entityEvent && entityEvent.getDamager() instanceof Projectile projectile)
return projectile;
return null;
}));
registry.register(EventValue.simple(EntityDeathEvent.class, DamageCause.class, event -> {
EntityDamageEvent damageEvent = event.getEntity().getLastDamageCause();
return damageEvent == null ? null : damageEvent.getCause();
}));

// ProjectileHitEvent
// ProjectileHitEvent#getHitBlock was added in 1.11
if (Skript.methodExists(ProjectileHitEvent.class, "getHitBlock"))
Expand Down Expand Up @@ -268,18 +230,6 @@ public static void register(EventValueRegistry registry) {
// EntityTameEvent
registry.register(EventValue.simple(EntityTameEvent.class, Entity.class, EntityTameEvent::getEntity));

// EntityChangeBlockEvent
registry.register(EventValue.builder(EntityChangeBlockEvent.class, Block.class)
.getter(EntityChangeBlockEvent::getBlock)
.time(Time.PAST)
.build());
registry.register(EventValue.simple(EntityChangeBlockEvent.class, Block.class, EntityChangeBlockEvent::getBlock));
registry.register(EventValue.simple(EntityChangeBlockEvent.class, BlockData.class, EntityChangeBlockEvent::getBlockData));
registry.register(EventValue.builder(EntityChangeBlockEvent.class, BlockData.class)
.getter(EntityChangeBlockEvent::getBlockData)
.time(Time.FUTURE)
.build());

// AreaEffectCloudApplyEvent
registry.register(EventValue.simple(AreaEffectCloudApplyEvent.class, LivingEntity[].class, event -> event.getAffectedEntities().toArray(new LivingEntity[0])));
registry.register(EventValue.simple(AreaEffectCloudApplyEvent.class, PotionEffectType.class, new Converter<>() {
Expand All @@ -302,10 +252,6 @@ public PotionEffectType convert(AreaEffectCloudApplyEvent event) {
registry.register(EventValue.simple(ItemSpawnEvent.class, ItemStack.class, event -> event.getEntity().getItemStack()));
// LightningStrikeEvent
registry.register(EventValue.simple(LightningStrikeEvent.class, Entity.class, LightningStrikeEvent::getLightning));
// EndermanAttackPlayerEvent
if (Skript.classExists("com.destroystokyo.paper.event.entity.EndermanAttackPlayerEvent")) {
registry.register(EventValue.simple(EndermanAttackPlayerEvent.class, Player.class, EndermanAttackPlayerEvent::getPlayer));
}

// --- PlayerEvents ---
registry.register(EventValue.simple(PlayerEvent.class, Player.class, PlayerEvent::getPlayer));
Expand Down Expand Up @@ -594,13 +540,6 @@ else if (hand == EquipmentSlot.OFF_HAND)
//PlayerTeleportEvent
registry.register(EventValue.simple(PlayerTeleportEvent.class, TeleportCause.class, PlayerTeleportEvent::getCause));
//EntityMoveEvent
if (Skript.classExists("io.papermc.paper.event.entity.EntityMoveEvent")) {
registry.register(EventValue.simple(EntityMoveEvent.class, Location.class, EntityMoveEvent::getFrom));
registry.register(EventValue.builder(EntityMoveEvent.class, Location.class)
.getter(EntityMoveEvent::getTo)
.time(Time.FUTURE)
.build());
}
//CreatureSpawnEvent
registry.register(EventValue.simple(CreatureSpawnEvent.class, SpawnReason.class, CreatureSpawnEvent::getSpawnReason));
//PlayerRespawnEvent - 1.21.5+ added AbstractRespawnEvent as a base class, where prior to that, getRespawnReason was in PlayerRespawnEvent
Expand All @@ -618,31 +557,6 @@ else if (hand == EquipmentSlot.OFF_HAND)
}));
} catch (NoSuchMethodException ignored) {}
}
//FireworkExplodeEvent
registry.register(EventValue.simple(FireworkExplodeEvent.class, Firework.class, FireworkExplodeEvent::getEntity));
registry.register(EventValue.simple(FireworkExplodeEvent.class, FireworkEffect.class, event -> {
List<FireworkEffect> effects = event.getEntity().getFireworkMeta().getEffects();
if (effects.isEmpty())
return null;
return effects.get(0);
}));
registry.register(EventValue.simple(FireworkExplodeEvent.class, Color[].class, event -> {
List<FireworkEffect> effects = event.getEntity().getFireworkMeta().getEffects();
if (effects.isEmpty())
return null;
List<Color> colors = new ArrayList<>();
for (FireworkEffect fireworkEffect : effects) {
for (org.bukkit.Color color : fireworkEffect.getColors()) {
if (SkriptColor.fromBukkitColor(color) != null)
colors.add(SkriptColor.fromBukkitColor(color));
else
colors.add(ColorRGB.fromBukkitColor(color));
}
}
if (colors.isEmpty())
return null;
return colors.toArray(Color[]::new);
}));
//PlayerRiptideEvent
registry.register(EventValue.simple(PlayerRiptideEvent.class, ItemStack.class, PlayerRiptideEvent::getItem));
//PlayerInventorySlotChangeEvent
Expand Down Expand Up @@ -694,15 +608,6 @@ else if (hand == EquipmentSlot.OFF_HAND)
registry.register(EventValue.simple(PlayerStopUsingItemEvent.class, ItemType.class, event -> new ItemType(event.getItem())));
}

// EntityResurrectEvent
registry.register(EventValue.simple(EntityResurrectEvent.class, Slot.class, event -> {
EquipmentSlot hand = event.getHand();
EntityEquipment equipment = event.getEntity().getEquipment();
if (equipment == null || hand == null)
return null;
return new ch.njol.skript.util.slot.EquipmentSlot(equipment, hand);
}));

// PlayerItemHeldEvent
registry.register(EventValue.simple(PlayerItemHeldEvent.class, Slot.class, event -> new InventorySlot(event.getPlayer().getInventory(), event.getNewSlot())));
registry.register(EventValue.builder(PlayerItemHeldEvent.class, Slot.class)
Expand All @@ -726,10 +631,6 @@ else if (hand == EquipmentSlot.OFF_HAND)
if (Skript.classExists("io.papermc.paper.event.player.PlayerStonecutterRecipeSelectEvent"))
registry.register(EventValue.simple(PlayerStonecutterRecipeSelectEvent.class, ItemStack.class, event -> event.getStonecuttingRecipe().getResult()));

// EntityTransformEvent
registry.register(EventValue.simple(EntityTransformEvent.class, Entity[].class, event -> event.getTransformedEntities().stream().toArray(Entity[]::new)));
registry.register(EventValue.simple(EntityTransformEvent.class, TransformReason.class, EntityTransformEvent::getTransformReason));

// BellRingEvent - these are BlockEvents and not EntityEvents, so they have declared methods for getEntity()
if (Skript.classExists("org.bukkit.event.block.BellRingEvent")) {
registry.register(EventValue.simple(BellRingEvent.class, Entity.class, BellRingEvent::getEntity));
Expand All @@ -756,9 +657,6 @@ else if (hand == EquipmentSlot.OFF_HAND)
.build());
registry.register(EventValue.simple(InventoryMoveItemEvent.class, ItemStack.class, InventoryMoveItemEvent::getItem));

// EntityRegainHealthEvent
registry.register(EventValue.simple(EntityRegainHealthEvent.class, RegainReason.class, EntityRegainHealthEvent::getRegainReason));

// FurnaceExtractEvent
registry.register(EventValue.simple(FurnaceExtractEvent.class, Player.class, FurnaceExtractEvent::getPlayer));
registry.register(EventValue.simple(FurnaceExtractEvent.class, ItemStack[].class, event -> new ItemStack[]{ItemStack.of(event.getItemType(), event.getItemAmount())}));
Expand Down Expand Up @@ -814,20 +712,6 @@ else if (hand == EquipmentSlot.OFF_HAND)
.build());
}

registry.register(EventValue.simple(VillagerCareerChangeEvent.class, VillagerCareerChangeEvent.ChangeReason.class, VillagerCareerChangeEvent::getReason));
registry.register(EventValue.builder(VillagerCareerChangeEvent.class, Villager.Profession.class)
.getter(VillagerCareerChangeEvent::getProfession)
.registerChanger(ChangeMode.SET, (event, profession) -> {
if (profession == null)
return;
event.setProfession(profession);
})
.build());
registry.register(EventValue.builder(VillagerCareerChangeEvent.class, Villager.Profession.class)
.getter(event -> event.getEntity().getProfession())
.time(Time.PAST)
.build());

}

}
Loading
Loading