Skip to content

Commit c97a853

Browse files
authored
Add vscode presetting and entity toggle swim event (#1399)
* Add vscode presetting and entity toggle swim event * Replace matches to prefilter builder * Fix doc
1 parent 2a530d5 commit c97a853

File tree

11 files changed

+632
-3
lines changed

11 files changed

+632
-3
lines changed

.gitignore

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ ClientBin/
229229
*.publishsettings
230230
orleans.codegen.cs
231231

232-
# Including strong name files can present a security risk
232+
# Including strong name files can present a security risk
233233
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
234234
#*.snk
235235

@@ -324,7 +324,7 @@ __pycache__/
324324
# OpenCover UI analysis results
325325
OpenCover/
326326

327-
# Azure Stream Analytics local run output
327+
# Azure Stream Analytics local run output
328328
ASALocalRun/
329329

330330
# MSBuild Binary and Structured Log
@@ -343,4 +343,4 @@ persistence.json
343343
src/main/resources/apps.methodscript.com/tsp-output
344344

345345
# VSCode
346-
.vscode
346+
.vscode/*

.vscode/extensions.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"recommendations": [
3+
"redhat.java",
4+
"shengchen.vscode-checkstyle",
5+
"vscjava.vscode-java-debug",
6+
"vscjava.vscode-java-dependency",
7+
"vscjava.vscode-java-pack",
8+
"vscjava.vscode-java-test",
9+
"vscjava.vscode-maven",
10+
],
11+
"unwantedRecommendations": [
12+
13+
]
14+
}

.vscode/java-formatter.xml

Lines changed: 382 additions & 0 deletions
Large diffs are not rendered by default.

.vscode/settings.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"java.compile.nullAnalysis.mode": "automatic",
3+
"java.checkstyle.configuration": "${workspaceFolder}/checkstyle.xml",
4+
"java.checkstyle.properties": {
5+
"config_loc": "${workspaceFolder}",
6+
},
7+
"java.checkstyle.autocheck": true,
8+
"java.format.settings.url": ".vscode/java-formatter.xml",
9+
"[java]": {
10+
"editor.insertSpaces": false
11+
},
12+
"files.trimTrailingWhitespace": true,
13+
}

src/main/java/com/laytonsmith/abstraction/bukkit/events/BukkitEntityEvents.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
import com.laytonsmith.abstraction.events.MCEntityRegainHealthEvent;
6363
import com.laytonsmith.abstraction.events.MCEntityTargetEvent;
6464
import com.laytonsmith.abstraction.events.MCEntityToggleGlideEvent;
65+
import com.laytonsmith.abstraction.events.MCEntityToggleSwimEvent;
6566
import com.laytonsmith.abstraction.events.MCEntityUnleashEvent;
6667
import com.laytonsmith.abstraction.events.MCEntityPotionEffectEvent;
6768
import com.laytonsmith.abstraction.events.MCFireworkExplodeEvent;
@@ -102,6 +103,7 @@
102103
import org.bukkit.event.entity.EntityRegainHealthEvent;
103104
import org.bukkit.event.entity.EntityTargetEvent;
104105
import org.bukkit.event.entity.EntityToggleGlideEvent;
106+
import org.bukkit.event.entity.EntityToggleSwimEvent;
105107
import org.bukkit.event.entity.EntityPotionEffectEvent;
106108
import org.bukkit.event.entity.FireworkExplodeEvent;
107109
import org.bukkit.event.entity.ItemDespawnEvent;
@@ -917,6 +919,36 @@ public MCEntityType getEntityType() {
917919
}
918920
}
919921

922+
@abstraction(type = Implementation.Type.BUKKIT)
923+
public static class BukkitMCEntityToggleSwimEvent implements MCEntityToggleSwimEvent {
924+
925+
EntityToggleSwimEvent e;
926+
927+
public BukkitMCEntityToggleSwimEvent(Event e) {
928+
this.e = (EntityToggleSwimEvent) e;
929+
}
930+
931+
@Override
932+
public Object _GetObject() {
933+
return e;
934+
}
935+
936+
@Override
937+
public boolean isSwimming() {
938+
return e.isSwimming();
939+
}
940+
941+
@Override
942+
public MCEntity getEntity() {
943+
return BukkitConvertor.BukkitGetCorrectEntity(e.getEntity());
944+
}
945+
946+
@Override
947+
public MCEntityType getEntityType() {
948+
return BukkitConvertor.BukkitGetCorrectEntity(e.getEntity()).getType();
949+
}
950+
}
951+
920952
@abstraction(type = Implementation.Type.BUKKIT)
921953
public static class BukkitMCFireworkExplodeEvent implements MCFireworkExplodeEvent {
922954

src/main/java/com/laytonsmith/abstraction/bukkit/events/drivers/BukkitEntityListener.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import com.laytonsmith.abstraction.bukkit.events.BukkitEntityEvents.BukkitMCEntityPortalEvent;
1313
import com.laytonsmith.abstraction.bukkit.events.BukkitEntityEvents.BukkitMCEntityRegainHealthEvent;
1414
import com.laytonsmith.abstraction.bukkit.events.BukkitEntityEvents.BukkitMCEntityToggleGlideEvent;
15+
import com.laytonsmith.abstraction.bukkit.events.BukkitEntityEvents.BukkitMCEntityToggleSwimEvent;
1516
import com.laytonsmith.abstraction.bukkit.events.BukkitEntityEvents.BukkitMCEntityUnleashEvent;
1617
import com.laytonsmith.abstraction.bukkit.events.BukkitEntityEvents.BukkitMCFireworkExplodeEvent;
1718
import com.laytonsmith.abstraction.bukkit.events.BukkitEntityEvents.BukkitMCHangingBreakEvent;
@@ -48,6 +49,7 @@
4849
import org.bukkit.event.entity.EntityRegainHealthEvent;
4950
import org.bukkit.event.entity.EntityTargetEvent;
5051
import org.bukkit.event.entity.EntityToggleGlideEvent;
52+
import org.bukkit.event.entity.EntityToggleSwimEvent;
5153
import org.bukkit.event.entity.EntityUnleashEvent;
5254
import org.bukkit.event.entity.EntityPotionEffectEvent;
5355
import org.bukkit.event.entity.FireworkExplodeEvent;
@@ -200,6 +202,12 @@ public void onEntityToggleGlide(EntityToggleGlideEvent event) {
200202
EventUtils.TriggerListener(Driver.ENTITY_TOGGLE_GLIDE, "entity_toggle_glide", etge);
201203
}
202204

205+
@EventHandler(priority = EventPriority.LOWEST)
206+
public void onEntityToggleSwim(EntityToggleSwimEvent event) {
207+
BukkitMCEntityToggleSwimEvent etse = new BukkitMCEntityToggleSwimEvent(event);
208+
EventUtils.TriggerListener(Driver.ENTITY_TOGGLE_SWIM, "entity_toggle_swim", etse);
209+
}
210+
203211
@EventHandler(priority = EventPriority.LOWEST)
204212
public void onFireworkExplode(FireworkExplodeEvent event) {
205213
BukkitMCFireworkExplodeEvent fee = new BukkitMCFireworkExplodeEvent(event);
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.laytonsmith.abstraction.events;
2+
3+
import com.laytonsmith.abstraction.MCEntity;
4+
import com.laytonsmith.abstraction.enums.MCEntityType;
5+
import com.laytonsmith.core.events.BindableEvent;
6+
7+
public interface MCEntityEvent extends BindableEvent {
8+
9+
MCEntity getEntity();
10+
11+
MCEntityType getEntityType();
12+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.laytonsmith.abstraction.events;
2+
3+
4+
public interface MCEntityToggleSwimEvent extends MCEntityEvent {
5+
6+
boolean isSwimming();
7+
}

src/main/java/com/laytonsmith/core/events/Driver.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ public enum Driver {
5454
PROJECTILE_LAUNCH,
5555
TARGET_ENTITY,
5656
ENTITY_TOGGLE_GLIDE,
57+
ENTITY_TOGGLE_SWIM,
5758
FIREWORK_EXPLODE,
5859
/**
5960
* Inventory events

src/main/java/com/laytonsmith/core/events/drivers/EntityEvents.java

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import com.laytonsmith.abstraction.events.MCEntityRegainHealthEvent;
4040
import com.laytonsmith.abstraction.events.MCEntityTargetEvent;
4141
import com.laytonsmith.abstraction.events.MCEntityToggleGlideEvent;
42+
import com.laytonsmith.abstraction.events.MCEntityToggleSwimEvent;
4243
import com.laytonsmith.abstraction.events.MCEntityUnleashEvent;
4344
import com.laytonsmith.abstraction.events.MCEntityPotionEffectEvent;
4445
import com.laytonsmith.abstraction.events.MCFireworkExplodeEvent;
@@ -68,13 +69,17 @@
6869
import com.laytonsmith.core.constructs.Target;
6970
import com.laytonsmith.core.environments.Environment;
7071
import com.laytonsmith.core.events.AbstractEvent;
72+
import com.laytonsmith.core.events.AbstractGenericEvent;
7173
import com.laytonsmith.core.events.BindableEvent;
7274
import com.laytonsmith.core.events.BoundEvent;
7375
import com.laytonsmith.core.events.BoundEvent.ActiveEvent;
7476
import com.laytonsmith.core.events.Driver;
7577
import com.laytonsmith.core.events.EventBuilder;
7678
import com.laytonsmith.core.events.Prefilters;
7779
import com.laytonsmith.core.events.Prefilters.PrefilterType;
80+
import com.laytonsmith.core.events.prefilters.OptionalPlayerPrefilterMatcher;
81+
import com.laytonsmith.core.events.prefilters.PrefilterBuilder;
82+
import com.laytonsmith.core.events.prefilters.StringICPrefilterMatcher;
7883
import com.laytonsmith.core.exceptions.CRE.CREBadEntityException;
7984
import com.laytonsmith.core.exceptions.CRE.CREBindException;
8085
import com.laytonsmith.core.exceptions.CRE.CRECastException;
@@ -2053,6 +2058,99 @@ public Driver driver() {
20532058
}
20542059
}
20552060

2061+
@api
2062+
public static class entity_toggle_swim extends AbstractGenericEvent<MCEntityToggleSwimEvent> {
2063+
2064+
@Override
2065+
public String getName() {
2066+
return "entity_toggle_swim";
2067+
}
2068+
2069+
@Override
2070+
public String docs() {
2071+
return "{type: <macro> The entity type of the entity | id: <macro> The entity id of the entity"
2072+
+ " | player: <macro> The player triggering the event}"
2073+
+ " This event is called when an entity's swimming status is toggled"
2074+
+ " {id: The entityID of the entity | type: The entity type of the entity |"
2075+
+ " swimming: true if the entity is entering swimming mode, false if the entity is leaving it |"
2076+
+ " player: If the entity is a player, this will contain their name, otherwise null}" + " {}"
2077+
+ " {}";
2078+
}
2079+
2080+
2081+
@Override
2082+
protected PrefilterBuilder getPrefilterBuilder() {
2083+
return new PrefilterBuilder<MCEntityToggleSwimEvent>()
2084+
.set("player", "The player that toggled swimming", new OptionalPlayerPrefilterMatcher<>())
2085+
.set("type", "The entity type of the entity that toggled swimming", new StringICPrefilterMatcher<>() {
2086+
@Override
2087+
protected String getProperty(MCEntityToggleSwimEvent event) {
2088+
return event.getEntityType().name();
2089+
}
2090+
})
2091+
.set("id", "The ID of the entity that toggled swimming", new StringICPrefilterMatcher<>() {
2092+
@Override
2093+
protected String getProperty(MCEntityToggleSwimEvent event) {
2094+
return event.getEntity().getUniqueId().toString();
2095+
}
2096+
});
2097+
}
2098+
2099+
@Override
2100+
public MCEntityToggleSwimEvent convert(CArray manualObject, Target t) {
2101+
return null;
2102+
}
2103+
2104+
@Override
2105+
public Map<String, Mixed> evaluate(MCEntityToggleSwimEvent e) throws EventException {
2106+
Map<String, Mixed> ret = evaluate_helper(e);
2107+
Target t = Target.UNKNOWN;
2108+
2109+
ret.put("swimming", CBoolean.GenerateCBoolean(e.isSwimming(), t));
2110+
ret.put("id", new CString(e.getEntity().getUniqueId().toString(), t));
2111+
ret.put("type", new CString(e.getEntityType().name(), t));
2112+
2113+
if(e.getEntity() instanceof MCPlayer) {
2114+
ret.put("player", new CString(((MCPlayer) e.getEntity()).getName(), t));
2115+
} else {
2116+
ret.put("player", CNull.NULL);
2117+
}
2118+
2119+
return ret;
2120+
}
2121+
2122+
@Override
2123+
public boolean modifyEvent(String key, Mixed value, MCEntityToggleSwimEvent event) throws ConfigRuntimeException {
2124+
return false;
2125+
}
2126+
2127+
@Override
2128+
public Version since() {
2129+
return MSVersion.V3_3_5;
2130+
}
2131+
2132+
@Override
2133+
public Driver driver() {
2134+
return Driver.ENTITY_TOGGLE_SWIM;
2135+
}
2136+
2137+
@Override
2138+
public void cancel(MCEntityToggleSwimEvent o, boolean state) {
2139+
}
2140+
2141+
@Override
2142+
public boolean isCancellable(MCEntityToggleSwimEvent o) {
2143+
// Deprecated
2144+
// https://jd.papermc.io/paper/1.21.5/org/bukkit/event/entity/EntityToggleSwimEvent.html#setCancelled(boolean)
2145+
return false;
2146+
}
2147+
2148+
@Override
2149+
public boolean isCancelled(MCEntityToggleSwimEvent o) {
2150+
return false;
2151+
}
2152+
}
2153+
20562154
@api
20572155
public static class firework_explode extends AbstractEvent {
20582156

0 commit comments

Comments
 (0)