mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-30 16:19:03 +01:00
531/1053
This commit is contained in:
parent
29e69c49da
commit
02d989b548
45 changed files with 183 additions and 220 deletions
|
@ -24,13 +24,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
@@ -0,0 +0,0 @@ public class CampfireBlockEntity extends BlockEntity implements Clearable {
|
@@ -0,0 +0,0 @@ public class CampfireBlockEntity extends BlockEntity implements Clearable {
|
||||||
|
|
||||||
if (campfire.cookingProgress[i] >= campfire.cookingTime[i]) {
|
if (campfire.cookingProgress[i] >= campfire.cookingTime[i]) {
|
||||||
SimpleContainer inventorysubcontainer = new SimpleContainer(new ItemStack[]{itemstack});
|
SingleRecipeInput singlerecipeinput = new SingleRecipeInput(itemstack);
|
||||||
- ItemStack itemstack1 = (ItemStack) campfire.quickCheck.getRecipeFor(inventorysubcontainer, world).map((recipeholder) -> {
|
- ItemStack itemstack1 = (ItemStack) campfire.quickCheck.getRecipeFor(singlerecipeinput, world).map((recipeholder) -> {
|
||||||
+ // Paper start - Add recipe to cook events; re-use recipeHolderOptional below
|
+ // Paper start - add recipe to cook events
|
||||||
+ Optional<RecipeHolder<CampfireCookingRecipe>> recipeHolderOptional = campfire.quickCheck.getRecipeFor(inventorysubcontainer, world);
|
+ Optional<RecipeHolder<CampfireCookingRecipe>> recipeHolderOptional = campfire.quickCheck.getRecipeFor(singlerecipeinput, world);
|
||||||
+ ItemStack itemstack1 = (ItemStack) recipeHolderOptional.map((recipeholder) -> {
|
+ ItemStack itemstack1 = recipeHolderOptional.map((recipeholder) -> {
|
||||||
+ // Paper end - Add recipe to cook events
|
+ // Paper end - Add recipe to cook events
|
||||||
return ((CampfireCookingRecipe) recipeholder.value()).assemble(inventorysubcontainer, world.registryAccess());
|
return ((CampfireCookingRecipe) recipeholder.value()).assemble(singlerecipeinput, world.registryAccess());
|
||||||
}).orElse(itemstack);
|
}).orElse(itemstack);
|
||||||
|
|
||||||
@@ -0,0 +0,0 @@ public class CampfireBlockEntity extends BlockEntity implements Clearable {
|
@@ -0,0 +0,0 @@ public class CampfireBlockEntity extends BlockEntity implements Clearable {
|
139
patches/server/Expand-EntityUnleashEvent.patch
Normal file
139
patches/server/Expand-EntityUnleashEvent.patch
Normal file
|
@ -0,0 +1,139 @@
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Nassim Jahnke <nassim@njahnke.dev>
|
||||||
|
Date: Fri, 29 Jan 2021 15:13:11 +0100
|
||||||
|
Subject: [PATCH] Expand EntityUnleashEvent
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
|
@@ -0,0 +0,0 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||||
|
if (leashable.getLeashHolder() == player) {
|
||||||
|
if (!this.level().isClientSide()) {
|
||||||
|
// CraftBukkit start - fire PlayerUnleashEntityEvent
|
||||||
|
- if (CraftEventFactory.callPlayerUnleashEntityEvent(this, player, hand).isCancelled()) {
|
||||||
|
+ // Paper start - Expand EntityUnleashEvent
|
||||||
|
+ org.bukkit.event.player.PlayerUnleashEntityEvent event = CraftEventFactory.callPlayerUnleashEntityEvent(this, player, hand, !player.hasInfiniteMaterials());
|
||||||
|
+ if (event.isCancelled()) {
|
||||||
|
+ // Paper end - Expand EntityUnleashEvent
|
||||||
|
((ServerPlayer) player).connection.send(new ClientboundSetEntityLinkPacket(this, leashable.getLeashHolder()));
|
||||||
|
return InteractionResult.PASS;
|
||||||
|
}
|
||||||
|
// CraftBukkit end
|
||||||
|
- leashable.dropLeash(true, !player.hasInfiniteMaterials());
|
||||||
|
+ leashable.dropLeash(true, event.isDropLeash()); // Paper - Expand EntityUnleashEvent
|
||||||
|
this.gameEvent(GameEvent.ENTITY_INTERACT, player);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -0,0 +0,0 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||||
|
protected void removeAfterChangingDimensions() {
|
||||||
|
this.setRemoved(Entity.RemovalReason.CHANGED_DIMENSION, null); // CraftBukkit - add Bukkit remove cause
|
||||||
|
if (this instanceof Leashable leashable) {
|
||||||
|
- this.level().getCraftServer().getPluginManager().callEvent(new EntityUnleashEvent(this.getBukkitEntity(), UnleashReason.UNKNOWN)); // CraftBukkit
|
||||||
|
- leashable.dropLeash(true, false);
|
||||||
|
+ // Paper start - Expand EntityUnleashEvent
|
||||||
|
+ final EntityUnleashEvent event = new EntityUnleashEvent(this.getBukkitEntity(), UnleashReason.UNKNOWN, false); // CraftBukkit
|
||||||
|
+ event.callEvent();
|
||||||
|
+ leashable.dropLeash(true, event.isDropLeash());
|
||||||
|
+ // Paper end - Expand EntityUnleashEvent
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/entity/Leashable.java b/src/main/java/net/minecraft/world/entity/Leashable.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/Leashable.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/Leashable.java
|
||||||
|
@@ -0,0 +0,0 @@ public interface Leashable {
|
||||||
|
|
||||||
|
if (leashable_a != null && leashable_a.leashHolder != null) {
|
||||||
|
if (!entity.isAlive() || !leashable_a.leashHolder.isAlive()) {
|
||||||
|
- entity.level().getCraftServer().getPluginManager().callEvent(new EntityUnleashEvent(entity.getBukkitEntity(), (!entity.isAlive()) ? UnleashReason.PLAYER_UNLEASH : UnleashReason.HOLDER_GONE)); // CraftBukkit
|
||||||
|
- Leashable.dropLeash(entity, true, !entity.pluginRemoved); // CraftBukkit - SPIGOT-7487: Don't drop leash, when the holder was removed by a plugin
|
||||||
|
+ // Paper start - Expand EntityUnleashEvent
|
||||||
|
+ final EntityUnleashEvent event = new EntityUnleashEvent(entity.getBukkitEntity(), (!entity.isAlive()) ? UnleashReason.PLAYER_UNLEASH : UnleashReason.HOLDER_GONE, !entity.pluginRemoved);
|
||||||
|
+ event.callEvent();
|
||||||
|
+ Leashable.dropLeash(entity, true, event.isDropLeash()); // CraftBukkit - SPIGOT-7487: Don't drop leash, when the holder was removed by a plugin
|
||||||
|
+ // Paper end - Expand EntityUnleashEvent
|
||||||
|
}
|
||||||
|
|
||||||
|
Entity entity1 = ((Leashable) entity).getLeashHolder();
|
||||||
|
@@ -0,0 +0,0 @@ public interface Leashable {
|
||||||
|
|
||||||
|
default void leashTooFarBehaviour() {
|
||||||
|
// CraftBukkit start
|
||||||
|
+ boolean dropLeash = true; // Paper
|
||||||
|
if (this instanceof Entity entity) {
|
||||||
|
- entity.level().getCraftServer().getPluginManager().callEvent(new EntityUnleashEvent(entity.getBukkitEntity(), EntityUnleashEvent.UnleashReason.DISTANCE));
|
||||||
|
+ // Paper start - Expand EntityUnleashEvent
|
||||||
|
+ final EntityUnleashEvent event = new EntityUnleashEvent(entity.getBukkitEntity(), EntityUnleashEvent.UnleashReason.DISTANCE, true);
|
||||||
|
+ dropLeash = event.isDropLeash();
|
||||||
|
+ event.callEvent();
|
||||||
|
+ // Paper end - Expand EntityUnleashEvent
|
||||||
|
}
|
||||||
|
// CraftBukkit end
|
||||||
|
- this.dropLeash(true, true);
|
||||||
|
+ this.dropLeash(true, dropLeash); // Paper
|
||||||
|
}
|
||||||
|
|
||||||
|
default void closeRangeLeashBehaviour(Entity entity) {}
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/Mob.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||||
|
@@ -0,0 +0,0 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
|
||||||
|
boolean flag1 = super.startRiding(entity, force);
|
||||||
|
|
||||||
|
if (flag1 && this.isLeashed()) {
|
||||||
|
- this.level().getCraftServer().getPluginManager().callEvent(new EntityUnleashEvent(this.getBukkitEntity(), UnleashReason.UNKNOWN)); // CraftBukkit
|
||||||
|
- this.dropLeash(true, true);
|
||||||
|
+ // Paper start - Expand EntityUnleashEvent
|
||||||
|
+ EntityUnleashEvent event = new EntityUnleashEvent(this.getBukkitEntity(), EntityUnleashEvent.UnleashReason.UNKNOWN, true);
|
||||||
|
+ if (!event.callEvent()) { return flag1; }
|
||||||
|
+ this.dropLeash(true, event.isDropLeash());
|
||||||
|
+ // Paper end - Expand EntityUnleashEvent
|
||||||
|
}
|
||||||
|
|
||||||
|
return flag1;
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/entity/decoration/LeashFenceKnotEntity.java b/src/main/java/net/minecraft/world/entity/decoration/LeashFenceKnotEntity.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/decoration/LeashFenceKnotEntity.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/decoration/LeashFenceKnotEntity.java
|
||||||
|
@@ -0,0 +0,0 @@ public class LeashFenceKnotEntity extends BlockAttachedEntity {
|
||||||
|
|
||||||
|
if (leashable1.isLeashed() && leashable1.getLeashHolder() == this) {
|
||||||
|
// CraftBukkit start
|
||||||
|
+ boolean dropLeash = !player.hasInfiniteMaterials();
|
||||||
|
if (leashable1 instanceof Entity leashed) {
|
||||||
|
- if (CraftEventFactory.callPlayerUnleashEntityEvent(leashed, player, hand).isCancelled()) {
|
||||||
|
+ // Paper start - Expand EntityUnleashEvent
|
||||||
|
+ org.bukkit.event.player.PlayerUnleashEntityEvent event = CraftEventFactory.callPlayerUnleashEntityEvent(leashed, player, hand, dropLeash);
|
||||||
|
+ dropLeash = event.isDropLeash();
|
||||||
|
+ if (event.isCancelled()) {
|
||||||
|
+ // Paper end - Expand EntityUnleashEvent
|
||||||
|
die = false;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
- leashable1.dropLeash(true, !player.getAbilities().instabuild); // false -> survival mode boolean
|
||||||
|
+ leashable1.dropLeash(true, dropLeash); // false -> survival mode boolean // Paper - Expand EntityUnleashEvent
|
||||||
|
// CraftBukkit end
|
||||||
|
flag1 = true;
|
||||||
|
}
|
||||||
|
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||||
|
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||||
|
@@ -0,0 +0,0 @@ public class CraftEventFactory {
|
||||||
|
Bukkit.getPluginManager().callEvent(new PlayerRecipeBookSettingsChangeEvent(player.getBukkitEntity(), bukkitType, open, filter));
|
||||||
|
}
|
||||||
|
|
||||||
|
- public static PlayerUnleashEntityEvent callPlayerUnleashEntityEvent(Entity entity, net.minecraft.world.entity.player.Player player, InteractionHand enumhand) {
|
||||||
|
- PlayerUnleashEntityEvent event = new PlayerUnleashEntityEvent(entity.getBukkitEntity(), (Player) player.getBukkitEntity(), CraftEquipmentSlot.getHand(enumhand));
|
||||||
|
+ // Paper start - Expand EntityUnleashEvent
|
||||||
|
+ public static PlayerUnleashEntityEvent callPlayerUnleashEntityEvent(Entity entity, net.minecraft.world.entity.player.Player player, InteractionHand enumhand, boolean dropLeash) {
|
||||||
|
+ PlayerUnleashEntityEvent event = new PlayerUnleashEntityEvent(entity.getBukkitEntity(), (Player) player.getBukkitEntity(), CraftEquipmentSlot.getHand(enumhand), dropLeash);
|
||||||
|
+ // Paper end - Expand EntityUnleashEvent
|
||||||
|
entity.level().getCraftServer().getPluginManager().callEvent(event);
|
||||||
|
return event;
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: HexedHero <6012891+HexedHero@users.noreply.github.com>
|
||||||
|
Date: Fri, 23 Apr 2021 22:42:42 +0100
|
||||||
|
Subject: [PATCH] Expand PlayerRespawnEvent, fix passed parameter issues
|
||||||
|
|
||||||
|
Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
|
@@ -0,0 +0,0 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player {
|
||||||
|
Player respawnPlayer = this.getBukkitEntity();
|
||||||
|
Location location = CraftLocation.toBukkit(dimensionTransition.pos(), dimensionTransition.newLevel().getWorld(), dimensionTransition.yRot(), dimensionTransition.xRot());
|
||||||
|
|
||||||
|
- PlayerRespawnEvent respawnEvent = new PlayerRespawnEvent(respawnPlayer, location, isBedSpawn, isAnchorSpawn, reason);
|
||||||
|
+ // Paper start - respawn flags
|
||||||
|
+ com.google.common.collect.ImmutableSet.Builder<org.bukkit.event.player.PlayerRespawnEvent.RespawnFlag> builder = com.google.common.collect.ImmutableSet.builder();
|
||||||
|
+ if (reason == org.bukkit.event.player.PlayerRespawnEvent.RespawnReason.END_PORTAL) {
|
||||||
|
+ builder.add(org.bukkit.event.player.PlayerRespawnEvent.RespawnFlag.END_PORTAL);
|
||||||
|
+ }
|
||||||
|
+ PlayerRespawnEvent respawnEvent = new PlayerRespawnEvent(respawnPlayer, location, isBedSpawn, isAnchorSpawn, reason, builder);
|
||||||
|
+ // Paper end - respawn flags
|
||||||
|
this.level().getCraftServer().getPluginManager().callEvent(respawnEvent);
|
||||||
|
// Spigot Start
|
||||||
|
if (this.connection.isDisconnected()) {
|
|
@ -45,8 +45,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
} else if (name.equals(levelName + "_the_end")) {
|
} else if (name.equals(levelName + "_the_end")) {
|
||||||
worldKey = net.minecraft.world.level.Level.END;
|
worldKey = net.minecraft.world.level.Level.END;
|
||||||
} else {
|
} else {
|
||||||
- worldKey = ResourceKey.create(Registries.DIMENSION, new ResourceLocation(name.toLowerCase(Locale.ROOT)));
|
- worldKey = ResourceKey.create(Registries.DIMENSION, ResourceLocation.withDefaultNamespace(name.toLowerCase(Locale.ROOT)));
|
||||||
+ worldKey = ResourceKey.create(Registries.DIMENSION, new net.minecraft.resources.ResourceLocation(creator.key().getNamespace().toLowerCase(java.util.Locale.ROOT), creator.key().getKey().toLowerCase(java.util.Locale.ROOT))); // Paper
|
+ worldKey = ResourceKey.create(Registries.DIMENSION, ResourceLocation.fromNamespaceAndPath(creator.key().namespace(), creator.key().value()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// If set to not keep spawn in memory (changed from default) then adjust rule accordingly
|
// If set to not keep spawn in memory (changed from default) then adjust rule accordingly
|
|
@ -8,15 +8,15 @@ diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/ma
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
@@ -0,0 +0,0 @@ public class ServerPlayer extends Player {
|
@@ -0,0 +0,0 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player {
|
||||||
|
PlayerChangedWorldEvent changeEvent = new PlayerChangedWorldEvent(this.getBukkitEntity(), worldserver1.getWorld());
|
||||||
this.level().getCraftServer().getPluginManager().callEvent(changeEvent);
|
this.level().getCraftServer().getPluginManager().callEvent(changeEvent);
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
}
|
|
||||||
+ // Paper start - Reset shield blocking on dimension change
|
+ // Paper start - Reset shield blocking on dimension change
|
||||||
+ if (this.isBlocking()) {
|
+ if (this.isBlocking()) {
|
||||||
+ this.stopUsingItem();
|
+ this.stopUsingItem();
|
||||||
+ }
|
+ }
|
||||||
+ // Paper end - Reset shield blocking on dimension change
|
+ // Paper end - Reset shield blocking on dimension change
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
}
|
|
@ -12,8 +12,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
ServerPlayer entityplayer = (ServerPlayer) iterator.next();
|
ServerPlayer entityplayer = (ServerPlayer) iterator.next();
|
||||||
|
|
||||||
if (!whitelist.isWhiteListed(entityplayer.getGameProfile()) && !this.getPlayerList().isOp(entityplayer.getGameProfile())) { // Paper - Fix kicking ops when whitelist is reloaded (MC-171420)
|
if (!whitelist.isWhiteListed(entityplayer.getGameProfile()) && !this.getPlayerList().isOp(entityplayer.getGameProfile())) { // Paper - Fix kicking ops when whitelist is reloaded (MC-171420)
|
||||||
- entityplayer.connection.disconnect(Component.translatable("multiplayer.disconnect.not_whitelisted"));
|
- entityplayer.connection.disconnect((Component) Component.translatable("multiplayer.disconnect.not_whitelisted"));
|
||||||
+ entityplayer.connection.disconnect(org.spigotmc.SpigotConfig.whitelistMessage); // Paper - use configurable message
|
+ entityplayer.connection.disconnect(net.kyori.adventure.text.Component.text(org.spigotmc.SpigotConfig.whitelistMessage));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,140 +0,0 @@
|
||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Nassim Jahnke <nassim@njahnke.dev>
|
|
||||||
Date: Fri, 29 Jan 2021 15:13:11 +0100
|
|
||||||
Subject: [PATCH] Expand EntityUnleashEvent
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/entity/Mob.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
|
|
||||||
@@ -0,0 +0,0 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti
|
|
||||||
return InteractionResult.PASS;
|
|
||||||
} else if (this.getLeashHolder() == player) {
|
|
||||||
// CraftBukkit start - fire PlayerUnleashEntityEvent
|
|
||||||
- if (CraftEventFactory.callPlayerUnleashEntityEvent(this, player, hand).isCancelled()) {
|
|
||||||
+ // Paper start - Expand EntityUnleashEvent
|
|
||||||
+ org.bukkit.event.player.PlayerUnleashEntityEvent event = CraftEventFactory.callPlayerUnleashEntityEvent(this, player, hand, !player.hasInfiniteMaterials());
|
|
||||||
+ if (event.isCancelled()) {
|
|
||||||
+ // Paper end - Expand EntityUnleashEvent
|
|
||||||
((ServerPlayer) player).connection.send(new ClientboundSetEntityLinkPacket(this, this.getLeashHolder()));
|
|
||||||
return InteractionResult.PASS;
|
|
||||||
}
|
|
||||||
// CraftBukkit end
|
|
||||||
- this.dropLeash(true, !player.hasInfiniteMaterials());
|
|
||||||
+ this.dropLeash(true, event.isDropLeash()); // Paper - Expand EntityUnleashEvent
|
|
||||||
this.gameEvent(GameEvent.ENTITY_INTERACT, player);
|
|
||||||
return InteractionResult.sidedSuccess(this.level().isClientSide);
|
|
||||||
} else {
|
|
||||||
@@ -0,0 +0,0 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti
|
|
||||||
|
|
||||||
if (this.leashHolder != null) {
|
|
||||||
if (!this.isAlive() || !this.leashHolder.isAlive()) {
|
|
||||||
- this.level().getCraftServer().getPluginManager().callEvent(new EntityUnleashEvent(this.getBukkitEntity(), (!this.isAlive()) ? UnleashReason.PLAYER_UNLEASH : UnleashReason.HOLDER_GONE)); // CraftBukkit
|
|
||||||
- this.dropLeash(true, !this.leashHolder.pluginRemoved);// CraftBukkit - SPIGOT-7487: Don't drop leash, when the holder was removed by a plugin
|
|
||||||
+ // Paper start - Expand EntityUnleashEvent
|
|
||||||
+ EntityUnleashEvent event = new EntityUnleashEvent(this.getBukkitEntity(), (!this.isAlive()) ? EntityUnleashEvent.UnleashReason.PLAYER_UNLEASH : EntityUnleashEvent.UnleashReason.HOLDER_GONE, !this.leashHolder.pluginRemoved);
|
|
||||||
+ this.level().getCraftServer().getPluginManager().callEvent(event); // CraftBukkit
|
|
||||||
+ this.dropLeash(true, event.isDropLeash());
|
|
||||||
+ // Paper end - Expand EntityUnleashEvent
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -0,0 +0,0 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti
|
|
||||||
boolean flag1 = super.startRiding(entity, force);
|
|
||||||
|
|
||||||
if (flag1 && this.isLeashed()) {
|
|
||||||
- this.level().getCraftServer().getPluginManager().callEvent(new EntityUnleashEvent(this.getBukkitEntity(), UnleashReason.UNKNOWN)); // CraftBukkit
|
|
||||||
- this.dropLeash(true, true);
|
|
||||||
+ // Paper start - Expand EntityUnleashEvent
|
|
||||||
+ EntityUnleashEvent event = new EntityUnleashEvent(this.getBukkitEntity(), EntityUnleashEvent.UnleashReason.UNKNOWN, true);
|
|
||||||
+ if (!event.callEvent()) { return flag1; }
|
|
||||||
+ this.dropLeash(true, event.isDropLeash());
|
|
||||||
+ // Paper end - Expand EntityUnleashEvent
|
|
||||||
}
|
|
||||||
|
|
||||||
return flag1;
|
|
||||||
@@ -0,0 +0,0 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti
|
|
||||||
@Override
|
|
||||||
protected void removeAfterChangingDimensions() {
|
|
||||||
super.removeAfterChangingDimensions();
|
|
||||||
- this.level().getCraftServer().getPluginManager().callEvent(new EntityUnleashEvent(this.getBukkitEntity(), UnleashReason.UNKNOWN)); // CraftBukkit
|
|
||||||
- this.dropLeash(true, false);
|
|
||||||
+ // Paper start - Expand EntityUnleashEvent
|
|
||||||
+ EntityUnleashEvent event = new EntityUnleashEvent(this.getBukkitEntity(), EntityUnleashEvent.UnleashReason.UNKNOWN, false);
|
|
||||||
+ this.level().getCraftServer().getPluginManager().callEvent(event); // CraftBukkit
|
|
||||||
+ this.dropLeash(true, event.isDropLeash());
|
|
||||||
+ // Paper end - Expand EntityUnleashEvent
|
|
||||||
this.getAllSlots().forEach((itemstack) -> {
|
|
||||||
if (!itemstack.isEmpty()) {
|
|
||||||
itemstack.setCount(0);
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/PathfinderMob.java b/src/main/java/net/minecraft/world/entity/PathfinderMob.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/entity/PathfinderMob.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/PathfinderMob.java
|
|
||||||
@@ -0,0 +0,0 @@ public abstract class PathfinderMob extends Mob {
|
|
||||||
|
|
||||||
if (this instanceof TamableAnimal && ((TamableAnimal) this).isInSittingPose()) {
|
|
||||||
if (f > entity.level().paperConfig().misc.maxLeashDistance) { // Paper - Configurable max leash distance
|
|
||||||
- this.level().getCraftServer().getPluginManager().callEvent(new EntityUnleashEvent(this.getBukkitEntity(), EntityUnleashEvent.UnleashReason.DISTANCE)); // CraftBukkit
|
|
||||||
- this.dropLeash(true, true);
|
|
||||||
+ // Paper start - Expand EntityUnleashEvent
|
|
||||||
+ EntityUnleashEvent event = new EntityUnleashEvent(this.getBukkitEntity(), EntityUnleashEvent.UnleashReason.DISTANCE, true);
|
|
||||||
+ if (!event.callEvent()) return;
|
|
||||||
+ this.dropLeash(true, event.isDropLeash());
|
|
||||||
+ // Paper end - Expand EntityUnleashEvent
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
@@ -0,0 +0,0 @@ public abstract class PathfinderMob extends Mob {
|
|
||||||
|
|
||||||
this.onLeashDistance(f);
|
|
||||||
if (f > entity.level().paperConfig().misc.maxLeashDistance) { // Paper - Configurable max leash distance
|
|
||||||
- this.level().getCraftServer().getPluginManager().callEvent(new EntityUnleashEvent(this.getBukkitEntity(), EntityUnleashEvent.UnleashReason.DISTANCE)); // CraftBukkit
|
|
||||||
- this.dropLeash(true, true);
|
|
||||||
+ // Paper start - Expand EntityUnleashEvent
|
|
||||||
+ EntityUnleashEvent event = new EntityUnleashEvent(this.getBukkitEntity(), EntityUnleashEvent.UnleashReason.DISTANCE, true);
|
|
||||||
+ if (!event.callEvent()) return;
|
|
||||||
+ this.dropLeash(true, event.isDropLeash());
|
|
||||||
+ // Paper end - Expand EntityUnleashEvent
|
|
||||||
this.goalSelector.disableControlFlag(Goal.Flag.MOVE);
|
|
||||||
} else if (f > 6.0F) {
|
|
||||||
double d0 = (entity.getX() - this.getX()) / (double) f;
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/decoration/LeashFenceKnotEntity.java b/src/main/java/net/minecraft/world/entity/decoration/LeashFenceKnotEntity.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/entity/decoration/LeashFenceKnotEntity.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/decoration/LeashFenceKnotEntity.java
|
|
||||||
@@ -0,0 +0,0 @@ public class LeashFenceKnotEntity extends HangingEntity {
|
|
||||||
|
|
||||||
if (entityinsentient1.isLeashed() && entityinsentient1.getLeashHolder() == this) {
|
|
||||||
// CraftBukkit start
|
|
||||||
- if (CraftEventFactory.callPlayerUnleashEntityEvent(entityinsentient1, player, hand).isCancelled()) {
|
|
||||||
+ // Paper start - Expand EntityUnleashEvent
|
|
||||||
+ org.bukkit.event.player.PlayerUnleashEntityEvent event = CraftEventFactory.callPlayerUnleashEntityEvent(entityinsentient1, player, hand, !player.getAbilities().instabuild);
|
|
||||||
+ if (event.isCancelled()) {
|
|
||||||
+ // Paper end - Expand EntityUnleashEvent
|
|
||||||
die = false;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
- entityinsentient1.dropLeash(true, !player.getAbilities().instabuild); // false -> survival mode boolean
|
|
||||||
+ entityinsentient1.dropLeash(true, event.isDropLeash()); // false -> survival mode boolean // Paper - Expand EntityUnleashEvent
|
|
||||||
// CraftBukkit end
|
|
||||||
flag1 = true;
|
|
||||||
}
|
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
|
||||||
@@ -0,0 +0,0 @@ public class CraftEventFactory {
|
|
||||||
Bukkit.getPluginManager().callEvent(new PlayerRecipeBookSettingsChangeEvent(player.getBukkitEntity(), bukkitType, open, filter));
|
|
||||||
}
|
|
||||||
|
|
||||||
- public static PlayerUnleashEntityEvent callPlayerUnleashEntityEvent(Mob entity, net.minecraft.world.entity.player.Player player, InteractionHand enumhand) {
|
|
||||||
- PlayerUnleashEntityEvent event = new PlayerUnleashEntityEvent(entity.getBukkitEntity(), (Player) player.getBukkitEntity(), CraftEquipmentSlot.getHand(enumhand));
|
|
||||||
+ // Paper start - Expand EntityUnleashEvent
|
|
||||||
+ public static PlayerUnleashEntityEvent callPlayerUnleashEntityEvent(Mob entity, net.minecraft.world.entity.player.Player player, InteractionHand enumhand, boolean dropLeash) {
|
|
||||||
+ PlayerUnleashEntityEvent event = new PlayerUnleashEntityEvent(entity.getBukkitEntity(), (Player) player.getBukkitEntity(), CraftEquipmentSlot.getHand(enumhand), dropLeash);
|
|
||||||
+ // Paper end - Expand EntityUnleashEvent
|
|
||||||
entity.level().getCraftServer().getPluginManager().callEvent(event);
|
|
||||||
return event;
|
|
||||||
}
|
|
|
@ -1,62 +0,0 @@
|
||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: HexedHero <6012891+HexedHero@users.noreply.github.com>
|
|
||||||
Date: Fri, 23 Apr 2021 22:42:42 +0100
|
|
||||||
Subject: [PATCH] Expand PlayerRespawnEvent, fix passed parameter issues
|
|
||||||
|
|
||||||
Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
||||||
@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
|
||||||
case PERFORM_RESPAWN:
|
|
||||||
if (this.player.wonGame) {
|
|
||||||
this.player.wonGame = false;
|
|
||||||
- this.player = this.server.getPlayerList().respawn(this.player, true, RespawnReason.END_PORTAL);
|
|
||||||
+ this.player = this.server.getPlayerList().respawn(this.player, this.server.getLevel(this.player.getRespawnDimension()), true, null, true, RespawnReason.END_PORTAL, org.bukkit.event.player.PlayerRespawnEvent.RespawnFlag.END_PORTAL); // Paper - Expand PlayerRespawnEvent
|
|
||||||
CriteriaTriggers.CHANGED_DIMENSION.trigger(this.player, Level.END, Level.OVERWORLD);
|
|
||||||
} else {
|
|
||||||
if (this.player.getHealth() > 0.0F) {
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
||||||
@@ -0,0 +0,0 @@ public abstract class PlayerList {
|
|
||||||
}
|
|
||||||
|
|
||||||
public ServerPlayer respawn(ServerPlayer entityplayer, ServerLevel worldserver, boolean flag, Location location, boolean avoidSuffocation, RespawnReason reason) {
|
|
||||||
+ // Paper start - Expand PlayerRespawnEvent
|
|
||||||
+ return respawn(entityplayer, worldserver, flag, location, avoidSuffocation, reason, new org.bukkit.event.player.PlayerRespawnEvent.RespawnFlag[0]);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public ServerPlayer respawn(ServerPlayer entityplayer, ServerLevel worldserver, boolean flag, Location location, boolean avoidSuffocation, RespawnReason reason, org.bukkit.event.player.PlayerRespawnEvent.RespawnFlag...respawnFlags) {
|
|
||||||
+ // Paper end - Expand PlayerRespawnEvent
|
|
||||||
entityplayer.stopRiding(); // CraftBukkit
|
|
||||||
this.players.remove(entityplayer);
|
|
||||||
this.playersByName.remove(entityplayer.getScoreboardName().toLowerCase(java.util.Locale.ROOT)); // Spigot
|
|
||||||
@@ -0,0 +0,0 @@ public abstract class PlayerList {
|
|
||||||
|
|
||||||
// Paper start - Add PlayerPostRespawnEvent
|
|
||||||
boolean isBedSpawn = false;
|
|
||||||
+ boolean isAnchorSpawn = false; // Paper - Fix PlayerRespawnEvent
|
|
||||||
boolean isRespawn = false;
|
|
||||||
boolean isLocAltered = false; // Paper - Fix SPIGOT-5989
|
|
||||||
// Paper end - Add PlayerPostRespawnEvent
|
|
||||||
@@ -0,0 +0,0 @@ public abstract class PlayerList {
|
|
||||||
if (optional.isPresent()) {
|
|
||||||
BlockState iblockdata = worldserver1.getBlockState(blockposition);
|
|
||||||
boolean flag3 = iblockdata.is(Blocks.RESPAWN_ANCHOR);
|
|
||||||
+ isAnchorSpawn = flag3; // Paper - Fix PlayerRespawnEvent
|
|
||||||
Vec3 vec3d = (Vec3) optional.get();
|
|
||||||
float f1;
|
|
||||||
|
|
||||||
@@ -0,0 +0,0 @@ public abstract class PlayerList {
|
|
||||||
}
|
|
||||||
|
|
||||||
Player respawnPlayer = entityplayer1.getBukkitEntity();
|
|
||||||
- PlayerRespawnEvent respawnEvent = new PlayerRespawnEvent(respawnPlayer, location, isBedSpawn && !flag2, flag2, reason);
|
|
||||||
+ PlayerRespawnEvent respawnEvent = new PlayerRespawnEvent(respawnPlayer, location, isBedSpawn && !isAnchorSpawn, isAnchorSpawn, reason, com.google.common.collect.ImmutableSet.<org.bukkit.event.player.PlayerRespawnEvent.RespawnFlag>builder().add(respawnFlags)); // Paper - PlayerRespawnEvent changes
|
|
||||||
this.cserver.getPluginManager().callEvent(respawnEvent);
|
|
||||||
// Spigot Start
|
|
||||||
if (entityplayer.connection.isDisconnected()) {
|
|
Loading…
Reference in a new issue