Skip to content

Commit 99d0271

Browse files
committed
Always inject player for player events
Prevent player events from firing for offline players in edge cases where players have just left the server.
1 parent b44b8b0 commit 99d0271

File tree

1 file changed

+47
-99
lines changed

1 file changed

+47
-99
lines changed

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

Lines changed: 47 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.laytonsmith.abstraction.events.MCFoodLevelChangeEvent;
2525
import com.laytonsmith.abstraction.events.MCGamemodeChangeEvent;
2626
import com.laytonsmith.abstraction.events.MCPlayerEnterBedEvent;
27+
import com.laytonsmith.abstraction.events.MCPlayerEvent;
2728
import com.laytonsmith.abstraction.events.MCPlayerLeaveBedEvent;
2829
import com.laytonsmith.abstraction.events.MCPlayerChatEvent;
2930
import com.laytonsmith.abstraction.events.MCPlayerCommandEvent;
@@ -115,8 +116,29 @@ public static String docs() {
115116
return "Contains events related to a player";
116117
}
117118

119+
public abstract static class AbstractPlayerEvent extends AbstractEvent {
120+
121+
@Override
122+
public void preExecution(Environment env, ActiveEvent activeEvent) {
123+
if(activeEvent.getUnderlyingEvent() instanceof MCPlayerEvent) {
124+
125+
// Static lookups of the player might not work here, but the player is passed in with the event.
126+
MCPlayer player = ((MCPlayerEvent) activeEvent.getUnderlyingEvent()).getPlayer();
127+
Static.InjectPlayer(player);
128+
}
129+
}
130+
131+
@Override
132+
public void postExecution(Environment env, ActiveEvent activeEvent) {
133+
if(activeEvent.getUnderlyingEvent() instanceof MCPlayerEvent) {
134+
MCPlayer player = ((MCPlayerEvent) activeEvent.getUnderlyingEvent()).getPlayer();
135+
Static.UninjectPlayer(player);
136+
}
137+
}
138+
}
139+
118140
@api
119-
public static class food_level_changed extends AbstractEvent {
141+
public static class food_level_changed extends AbstractPlayerEvent {
120142

121143
@Override
122144
public String getName() {
@@ -193,7 +215,7 @@ public MSVersion since() {
193215
}
194216

195217
@api
196-
public static class player_consume extends AbstractEvent {
218+
public static class player_consume extends AbstractPlayerEvent {
197219

198220
@Override
199221
public String getName() {
@@ -283,7 +305,7 @@ public MSVersion since() {
283305
}
284306

285307
@api
286-
public static class player_kick extends AbstractEvent {
308+
public static class player_kick extends AbstractPlayerEvent {
287309

288310
@Override
289311
public String getName() {
@@ -361,7 +383,7 @@ public MSVersion since() {
361383
}
362384

363385
@api
364-
public static class player_teleport extends AbstractEvent {
386+
public static class player_teleport extends AbstractPlayerEvent {
365387

366388
@Override
367389
public String getName() {
@@ -580,7 +602,7 @@ public MSVersion since() {
580602
}
581603

582604
@api
583-
public static class player_login extends AbstractEvent {
605+
public static class player_login extends AbstractPlayerEvent {
584606

585607
@Override
586608
public String getName() {
@@ -661,29 +683,10 @@ public boolean modifyEvent(String key, Mixed value, BindableEvent e) {
661683
public MSVersion since() {
662684
return MSVersion.V3_3_1;
663685
}
664-
665-
@Override
666-
public void preExecution(Environment env, ActiveEvent activeEvent) {
667-
if(activeEvent.getUnderlyingEvent() instanceof MCPlayerLoginEvent) {
668-
//Static lookups of the player don't seem to work here, but
669-
//the player is passed in with the event.
670-
MCPlayer player = ((MCPlayerLoginEvent) activeEvent.getUnderlyingEvent()).getPlayer();
671-
Static.InjectPlayer(player);
672-
}
673-
}
674-
675-
@Override
676-
public void postExecution(Environment env, ActiveEvent activeEvent) {
677-
if(activeEvent.getUnderlyingEvent() instanceof MCPlayerLoginEvent) {
678-
MCPlayer player = ((MCPlayerLoginEvent) activeEvent.getUnderlyingEvent()).getPlayer();
679-
Static.UninjectPlayer(player);
680-
}
681-
}
682-
683686
}
684687

685688
@api
686-
public static class player_join extends AbstractEvent {
689+
public static class player_join extends AbstractPlayerEvent {
687690

688691
@Override
689692
public String getName() {
@@ -769,29 +772,10 @@ public BindableEvent convert(CArray manual, Target t) {
769772
manual.get("join_message", Target.UNKNOWN).val());
770773
return e;
771774
}
772-
773-
@Override
774-
public void preExecution(Environment env, ActiveEvent activeEvent) {
775-
if(activeEvent.getUnderlyingEvent() instanceof MCPlayerJoinEvent) {
776-
//Static lookups of the player as entity don't seem to work here, but
777-
//the player is passed in with the event.
778-
MCPlayer player = ((MCPlayerJoinEvent) activeEvent.getUnderlyingEvent()).getPlayer();
779-
Static.InjectEntity(player);
780-
}
781-
}
782-
783-
@Override
784-
public void postExecution(Environment env, ActiveEvent activeEvent) {
785-
if(activeEvent.getUnderlyingEvent() instanceof MCPlayerJoinEvent) {
786-
MCPlayer player = ((MCPlayerJoinEvent) activeEvent.getUnderlyingEvent()).getPlayer();
787-
Static.UninjectEntity(player);
788-
}
789-
}
790-
791775
}
792776

793777
@api
794-
public static class player_interact extends AbstractEvent {
778+
public static class player_interact extends AbstractPlayerEvent {
795779

796780
@Override
797781
public String getName() {
@@ -961,7 +945,7 @@ public boolean modifyEvent(String key, Mixed value, BindableEvent event) {
961945
}
962946

963947
@api
964-
public static class player_enter_bed extends AbstractEvent {
948+
public static class player_enter_bed extends AbstractPlayerEvent {
965949

966950
@Override
967951
public String docs() {
@@ -1040,7 +1024,7 @@ public BindableEvent convert(CArray manual, Target t) {
10401024
}
10411025

10421026
@api
1043-
public static class player_leave_bed extends AbstractEvent {
1027+
public static class player_leave_bed extends AbstractPlayerEvent {
10441028

10451029
@Override
10461030
public String docs() {
@@ -1107,7 +1091,7 @@ public BindableEvent convert(CArray manual, Target t) {
11071091
}
11081092

11091093
@api
1110-
public static class pressure_plate_activated extends AbstractEvent {
1094+
public static class pressure_plate_activated extends AbstractPlayerEvent {
11111095

11121096
@Override
11131097
public String getName() {
@@ -1178,7 +1162,7 @@ public MSVersion since() {
11781162
}
11791163

11801164
@api
1181-
public static class player_spawn extends AbstractEvent {
1165+
public static class player_spawn extends AbstractPlayerEvent {
11821166

11831167
@Override
11841168
public String getName() {
@@ -1287,24 +1271,6 @@ public boolean modifyEvent(String key, Mixed value, BindableEvent event) {
12871271
}
12881272
return false;
12891273
}
1290-
1291-
@Override
1292-
public void preExecution(Environment env, ActiveEvent activeEvent) {
1293-
if(activeEvent.getUnderlyingEvent() instanceof MCPlayerRespawnEvent) {
1294-
//Static lookups of the player don't seem to work here, but
1295-
//the player is passed in with the event.
1296-
MCPlayer player = ((MCPlayerRespawnEvent) activeEvent.getUnderlyingEvent()).getPlayer();
1297-
Static.InjectPlayer(player);
1298-
}
1299-
}
1300-
1301-
@Override
1302-
public void postExecution(Environment env, ActiveEvent activeEvent) {
1303-
if(activeEvent.getUnderlyingEvent() instanceof MCPlayerRespawnEvent) {
1304-
MCPlayer player = ((MCPlayerRespawnEvent) activeEvent.getUnderlyingEvent()).getPlayer();
1305-
Static.UninjectPlayer(player);
1306-
}
1307-
}
13081274
}
13091275

13101276
@api
@@ -1432,7 +1398,7 @@ public boolean modifyEvent(String key, Mixed value, BindableEvent event) {
14321398
}
14331399

14341400
@api
1435-
public static class player_quit extends AbstractEvent {
1401+
public static class player_quit extends AbstractPlayerEvent {
14361402

14371403
@Override
14381404
public String getName() {
@@ -1499,28 +1465,10 @@ public boolean modifyEvent(String key, Mixed value, BindableEvent event) {
14991465
}
15001466
return false;
15011467
}
1502-
1503-
@Override
1504-
public void preExecution(Environment env, ActiveEvent activeEvent) {
1505-
if(activeEvent.getUnderlyingEvent() instanceof MCPlayerQuitEvent) {
1506-
//Static lookups of the player don't seem to work here, but
1507-
//the player is passed in with the event.
1508-
MCPlayer player = ((MCPlayerQuitEvent) activeEvent.getUnderlyingEvent()).getPlayer();
1509-
Static.InjectPlayer(player);
1510-
}
1511-
}
1512-
1513-
@Override
1514-
public void postExecution(Environment env, ActiveEvent activeEvent) {
1515-
if(activeEvent.getUnderlyingEvent() instanceof MCPlayerQuitEvent) {
1516-
MCPlayer player = ((MCPlayerQuitEvent) activeEvent.getUnderlyingEvent()).getPlayer();
1517-
Static.UninjectPlayer(player);
1518-
}
1519-
}
15201468
}
15211469

15221470
@api
1523-
public static class player_chat extends AbstractEvent {
1471+
public static class player_chat extends AbstractPlayerEvent {
15241472

15251473
@Override
15261474
public String getName() {
@@ -1659,7 +1607,7 @@ public boolean modifyEvent(String key, Mixed value, BindableEvent event) {
16591607

16601608
@api
16611609
@hide("Experimental until further notice")
1662-
public static class async_player_chat extends AbstractEvent {
1610+
public static class async_player_chat extends AbstractPlayerEvent {
16631611

16641612
@Override
16651613
public String getName() {
@@ -1779,7 +1727,7 @@ public boolean modifyEvent(String key, Mixed value, BindableEvent event) {
17791727
}
17801728

17811729
@api
1782-
public static class player_command extends AbstractEvent {
1730+
public static class player_command extends AbstractPlayerEvent {
17831731

17841732
@Override
17851733
public String getName() {
@@ -1892,7 +1840,7 @@ public void cancel(BindableEvent o, boolean state) {
18921840
}
18931841

18941842
@api
1895-
public static class world_changed extends AbstractEvent {
1843+
public static class world_changed extends AbstractPlayerEvent {
18961844

18971845
@Override
18981846
public String getName() {
@@ -1991,7 +1939,7 @@ public static Map<String, MCLocation> GetLastLocations(Integer i) {
19911939
}
19921940

19931941
@api
1994-
public static class player_move extends AbstractEvent {
1942+
public static class player_move extends AbstractPlayerEvent {
19951943

19961944
@Override
19971945
public String getName() {
@@ -2122,7 +2070,7 @@ public MSVersion since() {
21222070
}
21232071

21242072
@api
2125-
public static class player_fish extends AbstractEvent {
2073+
public static class player_fish extends AbstractPlayerEvent {
21262074

21272075
@Override
21282076
public String getName() {
@@ -2258,7 +2206,7 @@ public void postExecution(Environment env, ActiveEvent activeEvent) {
22582206
}
22592207

22602208
@api
2261-
public static class gamemode_change extends AbstractEvent {
2209+
public static class gamemode_change extends AbstractPlayerEvent {
22622210

22632211
@Override
22642212
public String getName() {
@@ -2327,7 +2275,7 @@ public Version since() {
23272275
}
23282276

23292277
@api
2330-
public static class exp_change extends AbstractEvent {
2278+
public static class exp_change extends AbstractPlayerEvent {
23312279

23322280
@Override
23332281
public String getName() {
@@ -2390,7 +2338,7 @@ public Version since() {
23902338
}
23912339

23922340
@api
2393-
public static class book_edited extends AbstractEvent {
2341+
public static class book_edited extends AbstractPlayerEvent {
23942342

23952343
@Override
23962344
public String getName() {
@@ -2536,7 +2484,7 @@ public boolean modifyEvent(String key, Mixed value, BindableEvent event) {
25362484
}
25372485

25382486
@api
2539-
public static class player_toggle_flight extends AbstractEvent {
2487+
public static class player_toggle_flight extends AbstractPlayerEvent {
25402488

25412489
@Override
25422490
public String getName() {
@@ -2607,7 +2555,7 @@ public boolean modifyEvent(String key, Mixed value, BindableEvent event) {
26072555
}
26082556

26092557
@api
2610-
public static class player_toggle_sneak extends AbstractEvent {
2558+
public static class player_toggle_sneak extends AbstractPlayerEvent {
26112559

26122560
@Override
26132561
public String getName() {
@@ -2679,7 +2627,7 @@ public boolean modifyEvent(String key, Mixed value, BindableEvent event) {
26792627
}
26802628

26812629
@api
2682-
public static class player_toggle_sprint extends AbstractEvent {
2630+
public static class player_toggle_sprint extends AbstractPlayerEvent {
26832631

26842632
@Override
26852633
public String getName() {
@@ -2750,7 +2698,7 @@ public boolean modifyEvent(String key, Mixed value, BindableEvent event) {
27502698
}
27512699

27522700
@api
2753-
public static class resource_pack_status extends AbstractEvent {
2701+
public static class resource_pack_status extends AbstractPlayerEvent {
27542702

27552703
@Override
27562704
public String getName() {

0 commit comments

Comments
 (0)