Updated Upstream (Bukkit/CraftBukkit/Spigot)
Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 42d5a714 SPIGOT-5899: Hoglins API similar to Piglins 2c1ee10e SPIGOT-5887: ClickType doesn't include off hand swaps 5ff7c7ce SPIGOT-5886: Missing BlockData CraftBukkit Changes: 7560f5f5 SPIGOT-5905: Fix hex colours not being allowed in MOTD d47c47ee SPIGOT-5889: Villager using composter should call EntityChangeBlockEvent 2fe6b4a3 SPIGOT-5899: Hoglins API similar to Piglins e09dbeca SPIGOT-5887: ClickType doesn't include off hand swaps 23aac2a5 SPIGOT-5903: EntityDismountEvent cannot be triggered asynchronously 92cbf656 SPIGOT-5884: Tab completions lost on reloadData / minecraft:reload fb4e54ad SPIGOT-5902: PlayerRespawnEvent places player at spawn before event is called aa8f3d5a SPIGOT-5901: Structures are generated in all worlds based on the setting for the main world a0c35937 SPIGOT-5895: PlayerChangedWorldEvent#getFrom is incorrect 89c0a5c3 SPIGOT-5886: Missing BlockData Spigot Changes: 0287a20d SPIGOT-5903: EntityDismountEvent cannot be triggered asynchronously
This commit is contained in:
@@ -1,42 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Aikar <aikar@aikar.co>
|
|
||||||
Date: Mon, 29 Jun 2020 04:00:07 -0400
|
|
||||||
Subject: [PATCH] Don't fire unleash/dismount events from worldgen threads
|
|
||||||
|
|
||||||
Mojang can trigger this during worldgen and tries to fire bukkit events.
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/Entity.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/Entity.java
|
|
||||||
@@ -0,0 +0,0 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
|
||||||
// CraftBukkit start
|
|
||||||
CraftEntity craft = (CraftEntity) entity.getBukkitEntity().getVehicle();
|
|
||||||
Entity orig = craft == null ? null : craft.getHandle();
|
|
||||||
- if (getBukkitEntity() instanceof Vehicle && entity.getBukkitEntity() instanceof LivingEntity) {
|
|
||||||
+ if (getBukkitEntity() instanceof Vehicle && entity.getBukkitEntity() instanceof LivingEntity && MCUtil.isMainThread()) { // Paper
|
|
||||||
VehicleExitEvent event = new VehicleExitEvent(
|
|
||||||
(Vehicle) getBukkitEntity(),
|
|
||||||
(LivingEntity) entity.getBukkitEntity(), !suppressCancellation // Paper
|
|
||||||
@@ -0,0 +0,0 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
|
||||||
// CraftBukkit end
|
|
||||||
// Spigot start
|
|
||||||
org.spigotmc.event.entity.EntityDismountEvent event = new org.spigotmc.event.entity.EntityDismountEvent(entity.getBukkitEntity(), this.getBukkitEntity(), !suppressCancellation); // Paper
|
|
||||||
- Bukkit.getPluginManager().callEvent(event);
|
|
||||||
+ if (MCUtil.isMainThread()) Bukkit.getPluginManager().callEvent(event); // Paper
|
|
||||||
if (event.isCancelled()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/EntityInsentient.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/EntityInsentient.java
|
|
||||||
@@ -0,0 +0,0 @@ public abstract class EntityInsentient extends EntityLiving {
|
|
||||||
boolean flag1 = super.a(entity, flag);
|
|
||||||
|
|
||||||
if (flag1 && this.isLeashed()) {
|
|
||||||
- this.world.getServer().getPluginManager().callEvent(new EntityUnleashEvent(this.getBukkitEntity(), UnleashReason.UNKNOWN)); // CraftBukkit
|
|
||||||
+ if (MCUtil.isMainThread()) this.world.getServer().getPluginManager().callEvent(new EntityUnleashEvent(this.getBukkitEntity(), UnleashReason.UNKNOWN)); // CraftBukkit // Paper
|
|
||||||
this.unleash(true, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -15,7 +15,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ setSneaking(false); // Paper - fix MC-10657
|
+ setSneaking(false); // Paper - fix MC-10657
|
||||||
+
|
+
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
PlayerChangedWorldEvent changeEvent = new PlayerChangedWorldEvent(this.getBukkitEntity(), worldserver.getWorld());
|
PlayerChangedWorldEvent changeEvent = new PlayerChangedWorldEvent(this.getBukkitEntity(), worldserver1.getWorld());
|
||||||
this.world.getServer().getPluginManager().callEvent(changeEvent);
|
this.world.getServer().getPluginManager().callEvent(changeEvent);
|
||||||
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
|
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
|||||||
@@ -279,19 +279,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
String s1 = ((INamable) t0).getName();
|
String s1 = ((INamable) t0).getName();
|
||||||
|
|
||||||
if (this.b.containsKey(s1)) {
|
if (this.b.containsKey(s1)) {
|
||||||
diff --git a/src/main/java/net/minecraft/server/ChunkStatus.java b/src/main/java/net/minecraft/server/ChunkStatus.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/ChunkStatus.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/ChunkStatus.java
|
|
||||||
@@ -0,0 +0,0 @@ public class ChunkStatus {
|
|
||||||
return (CompletableFuture) function.apply(ichunkaccess);
|
|
||||||
});
|
|
||||||
private static final List<ChunkStatus> q = ImmutableList.of(ChunkStatus.FULL, ChunkStatus.FEATURES, ChunkStatus.LIQUID_CARVERS, ChunkStatus.STRUCTURE_STARTS, ChunkStatus.STRUCTURE_STARTS, ChunkStatus.STRUCTURE_STARTS, ChunkStatus.STRUCTURE_STARTS, ChunkStatus.STRUCTURE_STARTS, ChunkStatus.STRUCTURE_STARTS, ChunkStatus.STRUCTURE_STARTS, ChunkStatus.STRUCTURE_STARTS);
|
|
||||||
- private static final IntList r = (IntList) SystemUtils.a((Object) (new IntArrayList(a().size())), (intarraylist) -> {
|
|
||||||
+ private static final IntList r = (IntList) SystemUtils.a((new IntArrayList(a().size())), (java.util.function.Consumer<IntArrayList>)(IntArrayList intarraylist) -> { // Paper - decompile fix
|
|
||||||
int i = 0;
|
|
||||||
|
|
||||||
for (int j = a().size() - 1; j >= 0; --j) {
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/CraftingManager.java b/src/main/java/net/minecraft/server/CraftingManager.java
|
diff --git a/src/main/java/net/minecraft/server/CraftingManager.java b/src/main/java/net/minecraft/server/CraftingManager.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/CraftingManager.java
|
--- a/src/main/java/net/minecraft/server/CraftingManager.java
|
||||||
|
|||||||
@@ -60,17 +60,17 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
- (LivingEntity) entity.getBukkitEntity()
|
- (LivingEntity) entity.getBukkitEntity()
|
||||||
+ (LivingEntity) entity.getBukkitEntity(), !suppressCancellation // Paper
|
+ (LivingEntity) entity.getBukkitEntity(), !suppressCancellation // Paper
|
||||||
);
|
);
|
||||||
Bukkit.getPluginManager().callEvent(event);
|
// Suppress during worldgen
|
||||||
CraftEntity craftn = (CraftEntity) entity.getBukkitEntity().getVehicle();
|
if (this.valid) {
|
||||||
@@ -0,0 +0,0 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
@@ -0,0 +0,0 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||||
}
|
}
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
// Spigot start
|
// Spigot start
|
||||||
- org.spigotmc.event.entity.EntityDismountEvent event = new org.spigotmc.event.entity.EntityDismountEvent(entity.getBukkitEntity(), this.getBukkitEntity());
|
- org.spigotmc.event.entity.EntityDismountEvent event = new org.spigotmc.event.entity.EntityDismountEvent(entity.getBukkitEntity(), this.getBukkitEntity());
|
||||||
+ org.spigotmc.event.entity.EntityDismountEvent event = new org.spigotmc.event.entity.EntityDismountEvent(entity.getBukkitEntity(), this.getBukkitEntity(), !suppressCancellation); // Paper
|
+ org.spigotmc.event.entity.EntityDismountEvent event = new org.spigotmc.event.entity.EntityDismountEvent(entity.getBukkitEntity(), this.getBukkitEntity(), !suppressCancellation); // Paper
|
||||||
|
// Suppress during worldgen
|
||||||
|
if (this.valid) {
|
||||||
Bukkit.getPluginManager().callEvent(event);
|
Bukkit.getPluginManager().callEvent(event);
|
||||||
if (event.isCancelled()) {
|
|
||||||
return false;
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java
|
diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/EntityHuman.java
|
--- a/src/main/java/net/minecraft/server/EntityHuman.java
|
||||||
|
|||||||
Submodule work/Bukkit updated: 3c844f351a...42d5a714f4
Submodule work/CraftBukkit updated: 32acc26217...7560f5f5a6
Submodule work/Spigot updated: ad703da04d...0287a20df3
Reference in New Issue
Block a user