Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Detonate effect #6898

Open
wants to merge 61 commits into
base: dev/feature
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 10 commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
8a4bf22
Create EffDetonate.java
EquipableMC Jul 13, 2024
2d177cd
Update EffDetonate.java
EquipableMC Jul 13, 2024
8d3db27
adds support for windcharge and tnt minecart
EquipableMC Jul 13, 2024
25c6b4d
Update EffDetonate.java
EquipableMC Jul 13, 2024
ca00bb4
adds support for creeper
EquipableMC Jul 13, 2024
f7d9c0b
adds tests
EquipableMC Jul 15, 2024
5f8b0fe
Merge branch 'dev/feature' into pop-firework-effect
EquipableMC Jul 15, 2024
1f5d87f
fixes test version
EquipableMC Jul 16, 2024
fee38ec
Update EffDetonate.sk
EquipableMC Jul 18, 2024
ffeb2c6
oops
EquipableMC Jul 18, 2024
9261185
Update EffDetonate.sk
EquipableMC Jul 18, 2024
80ce838
Update EffDetonate.sk
EquipableMC Jul 18, 2024
f19da02
Update EffDetonate.sk
EquipableMC Jul 18, 2024
d613c05
Merge branch 'dev/feature' into pop-firework-effect
EquipableMC Jul 19, 2024
d1b2ac3
Merge branch 'dev/feature' into pop-firework-effect
EquipableMC Jul 28, 2024
4e827ba
Update EffDetonate.java
EquipableMC Jul 28, 2024
3230528
check descrription
EquipableMC Aug 1, 2024
6748f04
bandaid fix
EquipableMC Aug 1, 2024
ec4a3a2
bandaid fix again (I am stupid)
EquipableMC Aug 1, 2024
7f3bd9c
Update EffDetonate.java
EquipableMC Aug 1, 2024
f96ccc7
Update EffDetonate.java
EquipableMC Aug 1, 2024
b458bb5
Update EffDetonate.java
EquipableMC Aug 1, 2024
c858d71
Update EffDetonate.java
EquipableMC Aug 1, 2024
208ffba
Merge branch 'dev/feature' into pop-firework-effect
EquipableMC Aug 9, 2024
ee5de15
Merge branch 'dev/feature' into pop-firework-effect
Moderocky Aug 15, 2024
3784078
Requested Changes
EquipableMC Aug 16, 2024
6682a25
Update EffDetonate.java
EquipableMC Aug 16, 2024
ed52142
unneeded spacing
EquipableMC Aug 16, 2024
ff736f0
grammatical fixes
EquipableMC Aug 16, 2024
d0aa302
Requested Changes
EquipableMC Aug 16, 2024
dce5c25
Create EffDetonate.java
EquipableMC Jul 13, 2024
d952f80
Update EffDetonate.java
EquipableMC Jul 13, 2024
d1e3342
adds support for windcharge and tnt minecart
EquipableMC Jul 13, 2024
aaf39c1
Update EffDetonate.java
EquipableMC Jul 13, 2024
1ee96fc
adds support for creeper
EquipableMC Jul 13, 2024
9a82bc3
adds tests
EquipableMC Jul 15, 2024
5f4520b
fixes test version
EquipableMC Jul 16, 2024
a4386d9
Update EffDetonate.sk
EquipableMC Jul 18, 2024
6fc1f4b
oops
EquipableMC Jul 18, 2024
b3a5f13
Update EffDetonate.sk
EquipableMC Jul 18, 2024
ae6bb4d
Update EffDetonate.sk
EquipableMC Jul 18, 2024
882b679
Update EffDetonate.sk
EquipableMC Jul 18, 2024
209b0aa
Update EffDetonate.java
EquipableMC Jul 28, 2024
da71973
check descrription
EquipableMC Aug 1, 2024
747f236
bandaid fix
EquipableMC Aug 1, 2024
0df526d
bandaid fix again (I am stupid)
EquipableMC Aug 1, 2024
fd3ed56
Update EffDetonate.java
EquipableMC Aug 1, 2024
f805b3b
Update EffDetonate.java
EquipableMC Aug 1, 2024
56f6a21
Update EffDetonate.java
EquipableMC Aug 1, 2024
0bf02ba
Update EffDetonate.java
EquipableMC Aug 1, 2024
df004ac
Requested Changes
EquipableMC Aug 16, 2024
37d57fb
Update EffDetonate.java
EquipableMC Aug 16, 2024
830fff3
unneeded spacing
EquipableMC Aug 16, 2024
71cce41
grammatical fixes
EquipableMC Aug 16, 2024
7c8f181
Requested Changes
EquipableMC Aug 16, 2024
e5906f2
Merge branch 'pop-firework-effect' of https://github.com/EquipableMC/…
EquipableMC Aug 21, 2024
b9df839
Merge branch 'dev/feature' into pop-firework-effect
EquipableMC Aug 30, 2024
b5e6525
Merge branch 'dev/feature' into pop-firework-effect
EquipableMC Sep 2, 2024
261eb1f
Merge branch 'dev/feature' into pop-firework-effect
EquipableMC Sep 3, 2024
01d90f9
Merge branch 'dev/feature' into pop-firework-effect
EquipableMC Sep 21, 2024
099c9dd
Merge branch 'dev/feature' into pop-firework-effect
EquipableMC Sep 27, 2024
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
62 changes: 62 additions & 0 deletions src/main/java/ch/njol/skript/effects/EffDetonate.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package ch.njol.skript.effects;

import org.bukkit.entity.*;
EquipableMC marked this conversation as resolved.
Show resolved Hide resolved
import org.bukkit.entity.minecart.ExplosiveMinecart;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;

import ch.njol.skript.Skript;
import ch.njol.skript.doc.Description;
import ch.njol.skript.doc.Examples;
import ch.njol.skript.doc.Name;
import ch.njol.skript.doc.Since;
import ch.njol.skript.lang.Effect;
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;

EquipableMC marked this conversation as resolved.
Show resolved Hide resolved

@Name("Detonate Entity")
@Description("Immediately detonates an entity. Accepted entities are fireworks, TNT minecarts, wind charges and creepers.")
@Examples("detonate last launched firework")
@Since("INSERT VERSION")
public class EffDetonate extends Effect {

static {
Skript.registerEffect(EffDetonate.class, "detonate %entities%");
}

private Expression<Entity> entities;

EquipableMC marked this conversation as resolved.
Show resolved Hide resolved
private static final boolean HAS_WINDCHARGE = Skript.classExists("org.bukkit.entity.WindCharge");
EquipableMC marked this conversation as resolved.
Show resolved Hide resolved

@Override
@SuppressWarnings("unchecked")
public boolean init(Expression<?>[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) {
this.entities = (Expression<Entity>) exprs[0];
return true;
}

@Override
protected void execute(Event event) {
for (Entity entity : entities.getArray(event)) {
if (entity instanceof Firework) {
((Firework) entity).detonate();
}
else if (HAS_WINDCHARGE && entity instanceof WindCharge) {
((WindCharge) entity).explode();
}
else if (entity instanceof ExplosiveMinecart) {
((ExplosiveMinecart) entity).explode();
}
else if (entity instanceof Creeper) {
((Creeper) entity).explode();
}
}
}

public String toString(@Nullable Event event, boolean debug) {
return "detonate " + entities.toString(event, debug);
}

}
17 changes: 17 additions & 0 deletions src/test/skript/tests/syntaxes/effects/EffDetonate.sk
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
test "detonate entity effect":
spawn a creeper at event-location
assert last spawned entity is valid with "creepers should not detonate when they are first spawned"
detonate last spawned entity
assert last spawned entity isn't valid with "creepers should instantly detonate when spawned"

test "detonate explosive minecart" when running minecraft "1.19":
spawn a minecart with tnt at event-location
assert last spawned entity is valid with "minecarts with tnt should not detonate when they are first spawned"
detonate last spawned entity
assert last spawned entity isn't valid with "minecarts with tnt should instantly detonate when they are first spawned"

test "detonate wind charge" when running minecraft "1.21":
spawn a wind charge at event-location
assert last spawned entity is valid with "wind charges should not detonate when they are first spawned"
detonate last spawned entity
assert last spawned entity isn't valid with "wind charges should instantly detonate when spawned"
EquipableMC marked this conversation as resolved.
Show resolved Hide resolved
Loading