SPIGOT-6535: PlayerGameModeChangeEvent event incorrectly reports old gamemode
By: Parker Hawke <hawkeboyz2@hotmail.com>
This commit is contained in:
@@ -538,14 +538,14 @@
|
||||
+ // CraftBukkit start
|
||||
+ ResourceKey<World> maindimensionkey = CraftDimensionUtil.getMainDimensionKey(worldserver);
|
||||
+ ResourceKey<World> maindimensionkey1 = CraftDimensionUtil.getMainDimensionKey(this.level);
|
||||
+
|
||||
|
||||
- CriterionTriggers.CHANGED_DIMENSION.a(this, resourcekey, resourcekey1);
|
||||
- if (resourcekey == World.NETHER && resourcekey1 == World.OVERWORLD && this.enteredNetherPosition != null) {
|
||||
+ CriterionTriggers.CHANGED_DIMENSION.a(this, maindimensionkey, maindimensionkey1);
|
||||
+ if (maindimensionkey != resourcekey || maindimensionkey1 != resourcekey1) {
|
||||
+ CriterionTriggers.CHANGED_DIMENSION.a(this, resourcekey, resourcekey1);
|
||||
+ }
|
||||
|
||||
- CriterionTriggers.CHANGED_DIMENSION.a(this, resourcekey, resourcekey1);
|
||||
- if (resourcekey == World.NETHER && resourcekey1 == World.OVERWORLD && this.enteredNetherPosition != null) {
|
||||
+
|
||||
+ if (maindimensionkey == World.NETHER && maindimensionkey1 == World.OVERWORLD && this.enteredNetherPosition != null) {
|
||||
+ // CraftBukkit end
|
||||
CriterionTriggers.NETHER_TRAVEL.a(this, this.enteredNetherPosition);
|
||||
@@ -786,21 +786,7 @@
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1289,6 +1648,13 @@
|
||||
if (!this.gameMode.setGameMode(enumgamemode)) {
|
||||
return false;
|
||||
} else {
|
||||
+ // CraftBukkit start
|
||||
+ PlayerGameModeChangeEvent event = new PlayerGameModeChangeEvent(getBukkitEntity(), GameMode.getByValue(enumgamemode.getId()));
|
||||
+ level.getCraftServer().getPluginManager().callEvent(event);
|
||||
+ if (event.isCancelled()) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ // CraftBukkit end
|
||||
this.connection.sendPacket(new PacketPlayOutGameStateChange(PacketPlayOutGameStateChange.CHANGE_GAME_MODE, (float) enumgamemode.getId()));
|
||||
if (enumgamemode == EnumGamemode.SPECTATOR) {
|
||||
this.releaseShoulderEntities();
|
||||
@@ -1341,7 +1707,20 @@
|
||||
@@ -1341,7 +1700,20 @@
|
||||
return s;
|
||||
}
|
||||
|
||||
@@ -821,7 +807,7 @@
|
||||
this.chatVisibility = packetplayinsettings.d();
|
||||
this.canChatColor = packetplayinsettings.e();
|
||||
this.textFilteringEnabled = packetplayinsettings.h();
|
||||
@@ -1411,7 +1790,7 @@
|
||||
@@ -1411,7 +1783,7 @@
|
||||
this.camera = (Entity) (entity == null ? this : entity);
|
||||
if (entity1 != this.camera) {
|
||||
this.connection.sendPacket(new PacketPlayOutCamera(this.camera));
|
||||
@@ -830,7 +816,7 @@
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1440,7 +1819,7 @@
|
||||
@@ -1440,7 +1812,7 @@
|
||||
|
||||
@Nullable
|
||||
public IChatBaseComponent getPlayerListName() {
|
||||
@@ -839,7 +825,7 @@
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1461,9 +1840,16 @@
|
||||
@@ -1461,9 +1833,16 @@
|
||||
return this.advancements;
|
||||
}
|
||||
|
||||
@@ -856,7 +842,7 @@
|
||||
if (worldserver == this.level) {
|
||||
this.connection.b(d0, d1, d2, f, f1);
|
||||
} else {
|
||||
@@ -1483,6 +1869,9 @@
|
||||
@@ -1483,6 +1862,9 @@
|
||||
this.server.getPlayerList().a(this, worldserver);
|
||||
this.server.getPlayerList().updateClient(this);
|
||||
}
|
||||
@@ -866,7 +852,7 @@
|
||||
|
||||
}
|
||||
|
||||
@@ -1628,4 +2017,144 @@
|
||||
@@ -1628,4 +2010,144 @@
|
||||
CriterionTriggers.USING_ITEM.a(this, itemstack);
|
||||
super.a(itemstack);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user