mirror of
https://github.com/PaperMC/Paper.git
synced 2025-08-01 12:42:05 -07:00
Updated Upstream (Bukkit/CraftBukkit/Spigot) (#9188)
* Updated Upstream (Bukkit/CraftBukkit/Spigot) Upstream has released updates that appear 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: 2fcba9b2 SPIGOT-7347: Add missing documentation and details to ShapedRecipe c278419d PR-854: Move getHighestBlockYAt methods from World to RegionAccessor 201399fb PR-853: Add API for directly setting Display transformation matrices ecfa559a PR-849: Add InventoryView#setTitle 653d7edb SPIGOT-519: Add TNTPrimeEvent 22fccc09 PR-846: Add method to get chunk load level a070a52c PR-844: Add methods to convert Vector to and from JOML vectors cc7111fe PR-276: Add accessors to Wither's invulnerability ticks 777d24e9 SPIGOT-7209: Accessors and events for player's exp cooldown ccb2d01b SPIGOT-6308: Deprecate the location name property of map items cd04a31b PR-780: Add PlayerSpawnChangeEvent 7d1f5b64 SPIGOT-6780: Improve documentation for World#spawnFallingBlock 5696668a SPIGOT-6885: Add test and easier to debug code for reference in yaml configuration comments 2e13cff7 PR-589: Expand the FishHook API 2c7d3da5 PR-279: Minor edits to various Javadocs CraftBukkit Changes: 01b2e1af4 SPIGOT-7346: Disallow players from executing commands after disconnecting 7fe5ee022 PR-1186: Move getHighestBlockYAt methods from World to RegionAccessor bcc85ef67 PR-1185: Add API for directly setting Display transformation matrices a7cfc778f PR-1176: Add InventoryView#setTitle 563d42226 SPIGOT-519: Add TNTPrimeEvent ccbc6abca Add test for Chunk.LoadLevel mirroring 2926e0513 PR-1171: Add method to get chunk load level 63cad7f84 PR-375: Add accessors to Wither's invulnerability ticks bfd8b1ac8 SPIGOT-7209: Accessors and events for player's exp cooldown f92a41c39 PR-1181: Consolidate Location conversion code 10f866759 SPIGOT-6308: Deprecate the location name property of map items 82f7b658a PR-1095: Add PlayerSpawnChangeEvent b421af7e4 PR-808: Expand the FishHook API 598ad7b3f Increase outdated build delay Spigot Changes: d1bd3bd2 Rebuild patches e4265cc8 SPIGOT-7297: Entity Tracking Range option for Display entities * Work around javac bug * Call PlayerSpawnChangeEvent * Updated Upstream (Bukkit/CraftBukkit/Spigot) Upstream has released updates that appear 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: 2fcba9b2 SPIGOT-7347: Add missing documentation and details to ShapedRecipe c278419d PR-854: Move getHighestBlockYAt methods from World to RegionAccessor 201399fb PR-853: Add API for directly setting Display transformation matrices CraftBukkit Changes: 01b2e1af4 SPIGOT-7346: Disallow players from executing commands after disconnecting 7fe5ee022 PR-1186: Move getHighestBlockYAt methods from World to RegionAccessor bcc85ef67 PR-1185: Add API for directly setting Display transformation matrices Spigot Changes: 7da74dae Rebuild patches
This commit is contained in:
@@ -27,6 +27,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ giveExp(amount, false);
|
+ giveExp(amount, false);
|
||||||
+ }
|
+ }
|
||||||
/**
|
/**
|
||||||
|
* Gets the player's cooldown between picking up experience orbs.
|
||||||
|
*
|
||||||
|
@@ -0,0 +0,0 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||||
* Gives the player the amount of experience specified.
|
* Gives the player the amount of experience specified.
|
||||||
*
|
*
|
||||||
* @param amount Exp amount to give
|
* @param amount Exp amount to give
|
||||||
|
@@ -192,5 +192,5 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ // Paper end
|
+ // Paper end
|
||||||
+
|
+
|
||||||
/**
|
/**
|
||||||
* Gets the highest coordinate corresponding to the {@link HeightMap} at the
|
* Gets the highest block corresponding to the {@link HeightMap} at the
|
||||||
* given coordinates.
|
* given coordinates.
|
||||||
|
@@ -185,3 +185,18 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ UNKNOWN,
|
+ UNKNOWN,
|
||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
|
diff --git a/src/main/java/org/bukkit/event/player/PlayerSpawnChangeEvent.java b/src/main/java/org/bukkit/event/player/PlayerSpawnChangeEvent.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/org/bukkit/event/player/PlayerSpawnChangeEvent.java
|
||||||
|
+++ b/src/main/java/org/bukkit/event/player/PlayerSpawnChangeEvent.java
|
||||||
|
@@ -0,0 +0,0 @@ import org.jetbrains.annotations.Nullable;
|
||||||
|
/**
|
||||||
|
* This event is fired when the spawn point of the player is changed.
|
||||||
|
* @apiNote draft API
|
||||||
|
+ * @deprecated use {@link com.destroystokyo.paper.event.player.PlayerSetSpawnEvent}
|
||||||
|
*/
|
||||||
|
@ApiStatus.Experimental
|
||||||
|
+@Deprecated(forRemoval = true) // Paper
|
||||||
|
public class PlayerSpawnChangeEvent extends PlayerEvent implements Cancellable {
|
||||||
|
|
||||||
|
private static final HandlerList handlers = new HandlerList();
|
||||||
|
@@ -27,7 +27,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ * the TNT block as-is
|
+ * the TNT block as-is
|
||||||
+ *
|
+ *
|
||||||
+ * @author Mark Vainomaa
|
+ * @author Mark Vainomaa
|
||||||
|
+ * @deprecated use {@link org.bukkit.event.block.TNTPrimeEvent}
|
||||||
+ */
|
+ */
|
||||||
|
+@Deprecated(forRemoval = true)
|
||||||
+public class TNTPrimeEvent extends BlockEvent implements Cancellable {
|
+public class TNTPrimeEvent extends BlockEvent implements Cancellable {
|
||||||
+ private static final HandlerList handlers = new HandlerList();
|
+ private static final HandlerList handlers = new HandlerList();
|
||||||
+ private boolean cancelled;
|
+ private boolean cancelled;
|
||||||
|
@@ -51,9 +51,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
--- a/src/main/java/org/bukkit/RegionAccessor.java
|
--- a/src/main/java/org/bukkit/RegionAccessor.java
|
||||||
+++ b/src/main/java/org/bukkit/RegionAccessor.java
|
+++ b/src/main/java/org/bukkit/RegionAccessor.java
|
||||||
@@ -0,0 +0,0 @@ public interface RegionAccessor {
|
@@ -0,0 +0,0 @@ public interface RegionAccessor {
|
||||||
|
* {@link HeightMap}
|
||||||
*/
|
*/
|
||||||
@NotNull
|
public int getHighestBlockYAt(@NotNull Location location, @NotNull HeightMap heightMap);
|
||||||
public <T extends Entity> T spawn(@NotNull Location location, @NotNull Class<T> clazz, boolean randomizeData, @Nullable Consumer<T> function) throws IllegalArgumentException;
|
|
||||||
+
|
+
|
||||||
+ // Paper start
|
+ // Paper start
|
||||||
+ /**
|
+ /**
|
||||||
|
@@ -1007,7 +1007,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
--- a/src/main/java/org/bukkit/Nameable.java
|
--- a/src/main/java/org/bukkit/Nameable.java
|
||||||
+++ b/src/main/java/org/bukkit/Nameable.java
|
+++ b/src/main/java/org/bukkit/Nameable.java
|
||||||
@@ -0,0 +0,0 @@ import org.jetbrains.annotations.Nullable;
|
@@ -0,0 +0,0 @@ import org.jetbrains.annotations.Nullable;
|
||||||
|
*/
|
||||||
public interface Nameable {
|
public interface Nameable {
|
||||||
|
|
||||||
+ // Paper start
|
+ // Paper start
|
||||||
@@ -3802,7 +3802,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ @Deprecated // Paper
|
+ @Deprecated // Paper
|
||||||
+ @NotNull
|
+ @NotNull
|
||||||
public abstract String getTitle();
|
public abstract String getTitle();
|
||||||
}
|
|
||||||
|
/**
|
||||||
diff --git a/src/main/java/org/bukkit/inventory/ItemFactory.java b/src/main/java/org/bukkit/inventory/ItemFactory.java
|
diff --git a/src/main/java/org/bukkit/inventory/ItemFactory.java b/src/main/java/org/bukkit/inventory/ItemFactory.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/bukkit/inventory/ItemFactory.java
|
--- a/src/main/java/org/bukkit/inventory/ItemFactory.java
|
||||||
|
@@ -92,8 +92,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ // Paper end
|
+ // Paper end
|
||||||
+
|
+
|
||||||
/**
|
/**
|
||||||
* Gets the highest non-empty (impassable) coordinate at the given
|
* Gets the highest non-empty (impassable) block at the given coordinates.
|
||||||
* coordinates.
|
*
|
||||||
diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java
|
diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/bukkit/block/Block.java
|
--- a/src/main/java/org/bukkit/block/Block.java
|
||||||
|
@@ -743,9 +743,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
--- a/src/main/java/org/bukkit/inventory/ShapedRecipe.java
|
--- a/src/main/java/org/bukkit/inventory/ShapedRecipe.java
|
||||||
+++ b/src/main/java/org/bukkit/inventory/ShapedRecipe.java
|
+++ b/src/main/java/org/bukkit/inventory/ShapedRecipe.java
|
||||||
@@ -0,0 +0,0 @@ public class ShapedRecipe implements Recipe, Keyed {
|
@@ -0,0 +0,0 @@ public class ShapedRecipe implements Recipe, Keyed {
|
||||||
* @param key The character that represents the ingredient in the shape.
|
|
||||||
* @param ingredient The ingredient.
|
* @param ingredient The ingredient.
|
||||||
* @return The changed recipe, so you can chain calls.
|
* @return The changed recipe, so you can chain calls.
|
||||||
|
* @throws IllegalArgumentException if the {@code key} does not appear in the shape.
|
||||||
+ * @deprecated use {@link #setIngredient(char, RecipeChoice)}
|
+ * @deprecated use {@link #setIngredient(char, RecipeChoice)}
|
||||||
*/
|
*/
|
||||||
@NotNull
|
@NotNull
|
||||||
|
@@ -173,19 +173,6 @@ diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/Worl
|
|||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/bukkit/World.java
|
--- a/src/main/java/org/bukkit/World.java
|
||||||
+++ b/src/main/java/org/bukkit/World.java
|
+++ b/src/main/java/org/bukkit/World.java
|
||||||
@@ -0,0 +0,0 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Spawn a {@link FallingBlock} entity at the given {@link Location} of
|
|
||||||
- * the specified {@link Material}. The material dictates what is falling.
|
|
||||||
+ * the specified {@link BlockData}. The block data dictates what is falling.
|
|
||||||
* When the FallingBlock hits the ground, it will place that block.
|
|
||||||
- * <p>
|
|
||||||
- * The Material must be a block type, check with {@link Material#isBlock()
|
|
||||||
- * material.isBlock()}. The Material may not be air.
|
|
||||||
*
|
|
||||||
* @param location The {@link Location} to spawn the FallingBlock
|
|
||||||
* @param data The block data
|
|
||||||
@@ -0,0 +0,0 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
|
@@ -0,0 +0,0 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
|
||||||
/**
|
/**
|
||||||
* Find the closest nearby structure of a given {@link StructureType}.
|
* Find the closest nearby structure of a given {@link StructureType}.
|
||||||
@@ -1044,10 +1031,18 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
* @see ShapedRecipe#setIngredient(char, Material)
|
* @see ShapedRecipe#setIngredient(char, Material)
|
||||||
- * @see ShapedRecipe#setIngredient(char, Material, int)
|
- * @see ShapedRecipe#setIngredient(char, Material, int)
|
||||||
- * @see ShapedRecipe#setIngredient(char, MaterialData)
|
- * @see ShapedRecipe#setIngredient(char, MaterialData)
|
||||||
+ * @see ShapedRecipe#setIngredient(char, RecipeChoice)
|
* @see ShapedRecipe#setIngredient(char, RecipeChoice)
|
||||||
|
* @deprecated Recipes must have keys. Use {@link #ShapedRecipe(NamespacedKey, ItemStack)}
|
||||||
|
* instead.
|
||||||
|
@@ -0,0 +0,0 @@ public class ShapedRecipe implements Recipe, Keyed {
|
||||||
|
* @param result The item you want the recipe to create.
|
||||||
|
* @see ShapedRecipe#shape(String...)
|
||||||
|
* @see ShapedRecipe#setIngredient(char, Material)
|
||||||
|
- * @see ShapedRecipe#setIngredient(char, Material, int)
|
||||||
|
- * @see ShapedRecipe#setIngredient(char, MaterialData)
|
||||||
|
* @see ShapedRecipe#setIngredient(char, RecipeChoice)
|
||||||
*/
|
*/
|
||||||
public ShapedRecipe(@NotNull NamespacedKey key, @NotNull ItemStack result) {
|
public ShapedRecipe(@NotNull NamespacedKey key, @NotNull ItemStack result) {
|
||||||
Preconditions.checkArgument(key != null, "key");
|
|
||||||
diff --git a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java b/src/main/java/org/bukkit/inventory/ShapelessRecipe.java
|
diff --git a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java b/src/main/java/org/bukkit/inventory/ShapelessRecipe.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java
|
--- a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java
|
||||||
|
@@ -1,20 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: CDFN <codefun@protonmail.com>
|
|
||||||
Date: Tue, 7 Jul 2020 17:53:23 +0200
|
|
||||||
Subject: [PATCH] Return chat component with empty text instead of throwing
|
|
||||||
exception
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/org/bukkit/inventory/InventoryView.java b/src/main/java/org/bukkit/inventory/InventoryView.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/org/bukkit/inventory/InventoryView.java
|
|
||||||
+++ b/src/main/java/org/bukkit/inventory/InventoryView.java
|
|
||||||
@@ -0,0 +0,0 @@ public abstract class InventoryView {
|
|
||||||
/**
|
|
||||||
* Get the title of this inventory window.
|
|
||||||
*
|
|
||||||
- * @return The title.
|
|
||||||
+ * @return The title or empty string when title is {@code null}. <!-- Paper -->
|
|
||||||
*/
|
|
||||||
@NotNull
|
|
||||||
public /*abstract*/ net.kyori.adventure.text.Component title() {
|
|
@@ -9,7 +9,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||||
@@ -0,0 +0,0 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
@@ -0,0 +0,0 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
||||||
return this.getHighestBlockYAt(x, z, org.bukkit.HeightMap.MOTION_BLOCKING);
|
return CraftBlock.at(world, new BlockPos(x, y, z));
|
||||||
}
|
}
|
||||||
|
|
||||||
+ // Paper start - Implement heightmap api
|
+ // Paper start - Implement heightmap api
|
||||||
|
@@ -9,15 +9,17 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
--- a/src/main/java/net/minecraft/server/commands/SetSpawnCommand.java
|
--- a/src/main/java/net/minecraft/server/commands/SetSpawnCommand.java
|
||||||
+++ b/src/main/java/net/minecraft/server/commands/SetSpawnCommand.java
|
+++ b/src/main/java/net/minecraft/server/commands/SetSpawnCommand.java
|
||||||
@@ -0,0 +0,0 @@ public class SetSpawnCommand {
|
@@ -0,0 +0,0 @@ public class SetSpawnCommand {
|
||||||
private static int setSpawn(CommandSourceStack source, Collection<ServerPlayer> targets, BlockPos pos, float angle) {
|
ResourceKey<Level> resourcekey = source.getLevel().dimension();
|
||||||
ResourceKey<Level> resourceKey = source.getLevel().dimension();
|
Iterator iterator = targets.iterator();
|
||||||
|
|
||||||
+ final Collection<ServerPlayer> actualTargets = new java.util.ArrayList<>(); // Paper
|
+ final Collection<ServerPlayer> actualTargets = new java.util.ArrayList<>(); // Paper
|
||||||
for(ServerPlayer serverPlayer : targets) {
|
while (iterator.hasNext()) {
|
||||||
- serverPlayer.setRespawnPosition(resourceKey, pos, angle, true, false);
|
ServerPlayer entityplayer = (ServerPlayer) iterator.next();
|
||||||
|
|
||||||
|
- entityplayer.setRespawnPosition(resourcekey, pos, angle, true, false, org.bukkit.event.player.PlayerSpawnChangeEvent.Cause.COMMAND); // CraftBukkit
|
||||||
+ // Paper start - PlayerSetSpawnEvent
|
+ // Paper start - PlayerSetSpawnEvent
|
||||||
+ if (serverPlayer.setRespawnPosition(resourceKey, pos, angle, true, false, com.destroystokyo.paper.event.player.PlayerSetSpawnEvent.Cause.COMMAND)) {
|
+ if (entityplayer.setRespawnPosition(resourcekey, pos, angle, true, false, com.destroystokyo.paper.event.player.PlayerSetSpawnEvent.Cause.COMMAND)) {
|
||||||
+ actualTargets.add(serverPlayer);
|
+ actualTargets.add(entityplayer);
|
||||||
+ }
|
+ }
|
||||||
+ // Paper end
|
+ // Paper end
|
||||||
}
|
}
|
||||||
@@ -29,8 +31,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ }
|
+ }
|
||||||
+ // Paper end
|
+ // Paper end
|
||||||
|
|
||||||
String string = resourceKey.location().toString();
|
String s = resourcekey.location().toString();
|
||||||
if (targets.size() == 1) {
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
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
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
@@ -39,7 +41,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
} else if (this.bedBlocked(blockposition, enumdirection)) {
|
} else if (this.bedBlocked(blockposition, enumdirection)) {
|
||||||
return Either.left(Player.BedSleepingProblem.OBSTRUCTED);
|
return Either.left(Player.BedSleepingProblem.OBSTRUCTED);
|
||||||
} else {
|
} else {
|
||||||
- this.setRespawnPosition(this.level.dimension(), blockposition, this.getYRot(), false, true);
|
- this.setRespawnPosition(this.level.dimension(), blockposition, this.getYRot(), false, true, PlayerSpawnChangeEvent.Cause.BED); // CraftBukkit
|
||||||
+ this.setRespawnPosition(this.level.dimension(), blockposition, this.getYRot(), false, true, com.destroystokyo.paper.event.player.PlayerSetSpawnEvent.Cause.BED); // Paper - PlayerSetSpawnEvent
|
+ this.setRespawnPosition(this.level.dimension(), blockposition, this.getYRot(), false, true, com.destroystokyo.paper.event.player.PlayerSetSpawnEvent.Cause.BED); // Paper - PlayerSetSpawnEvent
|
||||||
if (this.level.isDay()) {
|
if (this.level.isDay()) {
|
||||||
return Either.left(Player.BedSleepingProblem.NOT_POSSIBLE_NOW);
|
return Either.left(Player.BedSleepingProblem.NOT_POSSIBLE_NOW);
|
||||||
@@ -50,36 +52,84 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
|
|
||||||
+ @Deprecated // Paper
|
+ @Deprecated // Paper
|
||||||
public void setRespawnPosition(ResourceKey<Level> dimension, @Nullable BlockPos pos, float angle, boolean forced, boolean sendMessage) {
|
public void setRespawnPosition(ResourceKey<Level> dimension, @Nullable BlockPos pos, float angle, boolean forced, boolean sendMessage) {
|
||||||
|
- // CraftBukkit start
|
||||||
|
- this.setRespawnPosition(dimension, pos, angle, forced, sendMessage, PlayerSpawnChangeEvent.Cause.UNKNOWN);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- public void setRespawnPosition(ResourceKey<Level> resourcekey, @Nullable BlockPos blockposition, float f, boolean flag, boolean flag1, PlayerSpawnChangeEvent.Cause cause) {
|
||||||
|
- ServerLevel newWorld = this.server.getLevel(resourcekey);
|
||||||
|
- Location newSpawn = (blockposition != null) ? CraftLocation.toBukkit(blockposition, newWorld.getWorld(), f, 0) : null;
|
||||||
|
-
|
||||||
|
- PlayerSpawnChangeEvent event = new PlayerSpawnChangeEvent(this.getBukkitEntity(), newSpawn, flag, cause);
|
||||||
|
- Bukkit.getServer().getPluginManager().callEvent(event);
|
||||||
|
- if (event.isCancelled()) {
|
||||||
|
- return;
|
||||||
|
- }
|
||||||
|
- newSpawn = event.getNewSpawn();
|
||||||
|
- flag = event.isForced();
|
||||||
|
-
|
||||||
|
- if (newSpawn != null) {
|
||||||
|
- resourcekey = ((CraftWorld) newSpawn.getWorld()).getHandle().dimension();
|
||||||
|
- blockposition = BlockPos.containing(newSpawn.getX(), newSpawn.getY(), newSpawn.getZ());
|
||||||
|
- f = newSpawn.getYaw();
|
||||||
|
- } else {
|
||||||
|
- resourcekey = Level.OVERWORLD;
|
||||||
|
- blockposition = null;
|
||||||
|
- f = 0.0F;
|
||||||
+ // Paper start
|
+ // Paper start
|
||||||
+ this.setRespawnPosition(dimension, pos, angle, forced, sendMessage, com.destroystokyo.paper.event.player.PlayerSetSpawnEvent.Cause.UNKNOWN);
|
+ this.setRespawnPosition(dimension, pos, angle, forced, sendMessage, com.destroystokyo.paper.event.player.PlayerSetSpawnEvent.Cause.UNKNOWN);
|
||||||
+ }
|
+ }
|
||||||
|
+ @Deprecated
|
||||||
|
+ public boolean setRespawnPosition(ResourceKey<Level> dimension, @Nullable BlockPos pos, float angle, boolean forced, boolean sendMessage, PlayerSpawnChangeEvent.Cause cause) {
|
||||||
|
+ return this.setRespawnPosition(dimension, pos, angle, forced, sendMessage, cause == PlayerSpawnChangeEvent.Cause.RESET ?
|
||||||
|
+ com.destroystokyo.paper.event.player.PlayerSetSpawnEvent.Cause.PLAYER_RESPAWN : com.destroystokyo.paper.event.player.PlayerSetSpawnEvent.Cause.valueOf(cause.name()));
|
||||||
|
+ }
|
||||||
+ public boolean setRespawnPosition(ResourceKey<Level> dimension, @Nullable BlockPos pos, float angle, boolean forced, boolean sendMessage, com.destroystokyo.paper.event.player.PlayerSetSpawnEvent.Cause cause) {
|
+ public boolean setRespawnPosition(ResourceKey<Level> dimension, @Nullable BlockPos pos, float angle, boolean forced, boolean sendMessage, com.destroystokyo.paper.event.player.PlayerSetSpawnEvent.Cause cause) {
|
||||||
+ Location spawnLoc = null;
|
+ Location spawnLoc = null;
|
||||||
+ boolean willNotify = false;
|
+ boolean willNotify = false;
|
||||||
if (pos != null) {
|
+ if (pos != null) {
|
||||||
boolean flag2 = pos.equals(this.respawnPosition) && dimension.equals(this.respawnDimension);
|
+ boolean flag2 = pos.equals(this.respawnPosition) && dimension.equals(this.respawnDimension);
|
||||||
+ spawnLoc = io.papermc.paper.util.MCUtil.toLocation(this.getServer().getLevel(dimension), pos);
|
+ spawnLoc = io.papermc.paper.util.MCUtil.toLocation(this.getServer().getLevel(dimension), pos);
|
||||||
+ spawnLoc.setYaw(angle);
|
+ spawnLoc.setYaw(angle);
|
||||||
+ willNotify = sendMessage && !flag2;
|
+ willNotify = sendMessage && !flag2;
|
||||||
+ }
|
+ }
|
||||||
+ com.destroystokyo.paper.event.player.PlayerSetSpawnEvent event = new com.destroystokyo.paper.event.player.PlayerSetSpawnEvent(this.getBukkitEntity(), cause, spawnLoc, forced, willNotify, willNotify ? net.kyori.adventure.text.Component.translatable("block.minecraft.set_spawn") : null);
|
+
|
||||||
|
+ PlayerSpawnChangeEvent dumbEvent = new PlayerSpawnChangeEvent(this.getBukkitEntity(), spawnLoc, forced,
|
||||||
|
+ cause == com.destroystokyo.paper.event.player.PlayerSetSpawnEvent.Cause.PLAYER_RESPAWN ? PlayerSpawnChangeEvent.Cause.RESET : PlayerSpawnChangeEvent.Cause.valueOf(cause.name()));
|
||||||
|
+ dumbEvent.callEvent();
|
||||||
|
+
|
||||||
|
+ com.destroystokyo.paper.event.player.PlayerSetSpawnEvent event = new com.destroystokyo.paper.event.player.PlayerSetSpawnEvent(this.getBukkitEntity(), cause, dumbEvent.getNewSpawn(), dumbEvent.isForced(), willNotify, willNotify ? net.kyori.adventure.text.Component.translatable("block.minecraft.set_spawn") : null);
|
||||||
|
+ event.setCancelled(dumbEvent.isCancelled());
|
||||||
+ if (!event.callEvent()) {
|
+ if (!event.callEvent()) {
|
||||||
+ return false;
|
+ return false;
|
||||||
+ }
|
}
|
||||||
|
- // CraftBukkit end
|
||||||
|
- if (blockposition != null) {
|
||||||
|
- boolean flag2 = blockposition.equals(this.respawnPosition) && resourcekey.equals(this.respawnDimension);
|
||||||
+ if (event.getLocation() != null) {
|
+ if (event.getLocation() != null) {
|
||||||
+ dimension = event.getLocation().getWorld() != null ? ((CraftWorld) event.getLocation().getWorld()).getHandle().dimension() : dimension;
|
+ dimension = event.getLocation().getWorld() != null ? ((CraftWorld) event.getLocation().getWorld()).getHandle().dimension() : dimension;
|
||||||
+ pos = io.papermc.paper.util.MCUtil.toBlockPosition(event.getLocation());
|
+ pos = io.papermc.paper.util.MCUtil.toBlockPosition(event.getLocation());
|
||||||
+ angle = (float) event.getLocation().getYaw();
|
+ angle = event.getLocation().getYaw();
|
||||||
+ forced = event.isForced();
|
+ forced = event.isForced();
|
||||||
+ // Paper end
|
+ // Paper end
|
||||||
|
|
||||||
- if (sendMessage && !flag2) {
|
- if (flag1 && !flag2) {
|
||||||
- this.sendSystemMessage(Component.translatable("block.minecraft.set_spawn"));
|
- this.sendSystemMessage(Component.translatable("block.minecraft.set_spawn"));
|
||||||
+ if (event.willNotifyPlayer() && event.getNotification() != null) { // Paper
|
+ if (event.willNotifyPlayer() && event.getNotification() != null) { // Paper
|
||||||
+ this.sendSystemMessage(PaperAdventure.asVanilla(event.getNotification())); // Paper
|
+ this.sendSystemMessage(PaperAdventure.asVanilla(event.getNotification())); // Paper
|
||||||
}
|
}
|
||||||
|
|
||||||
this.respawnPosition = pos;
|
- this.respawnPosition = blockposition;
|
||||||
|
- this.respawnDimension = resourcekey;
|
||||||
|
- this.respawnAngle = f;
|
||||||
|
- this.respawnForced = flag;
|
||||||
|
+ this.respawnPosition = pos;
|
||||||
|
+ this.respawnDimension = dimension;
|
||||||
|
+ this.respawnAngle = angle;
|
||||||
|
+ this.respawnForced = forced;
|
||||||
|
} else {
|
||||||
|
this.respawnPosition = null;
|
||||||
|
this.respawnDimension = Level.OVERWORLD;
|
||||||
@@ -0,0 +0,0 @@ public class ServerPlayer extends Player {
|
@@ -0,0 +0,0 @@ public class ServerPlayer extends Player {
|
||||||
this.respawnForced = false;
|
this.respawnForced = false;
|
||||||
}
|
}
|
||||||
@@ -93,17 +143,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||||
+++ b/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 {
|
@@ -0,0 +0,0 @@ public abstract class PlayerList {
|
||||||
f1 = (float) Mth.wrapDegrees(Mth.atan2(vec3d1.z, vec3d1.x) * 57.2957763671875D - 90.0D);
|
location = CraftLocation.toBukkit(vec3d, worldserver1.getWorld(), f1, 0.0F);
|
||||||
}
|
|
||||||
|
|
||||||
- entityplayer1.setRespawnPosition(worldserver1.dimension(), blockposition, f, flag1, false);
|
|
||||||
+ entityplayer1.setRespawnPosition(worldserver1.dimension(), blockposition, f, flag1, false, com.destroystokyo.paper.event.player.PlayerSetSpawnEvent.Cause.PLAYER_RESPAWN); // Paper - PlayerSetSpawnEvent
|
|
||||||
flag2 = !flag && flag3;
|
|
||||||
isBedSpawn = true;
|
|
||||||
location = new Location(worldserver1.getWorld(), vec3d.x, vec3d.y, vec3d.z, f1, 0.0F);
|
|
||||||
} else if (blockposition != null) {
|
} else if (blockposition != null) {
|
||||||
entityplayer1.connection.send(new ClientboundGameEventPacket(ClientboundGameEventPacket.NO_RESPAWN_BLOCK_AVAILABLE, 0.0F));
|
entityplayer1.connection.send(new ClientboundGameEventPacket(ClientboundGameEventPacket.NO_RESPAWN_BLOCK_AVAILABLE, 0.0F));
|
||||||
- entityplayer1.setRespawnPosition(null, null, 0f, false, false); // CraftBukkit - SPIGOT-5988: Clear respawn location when obstructed
|
- entityplayer1.setRespawnPosition(null, null, 0f, false, false, PlayerSpawnChangeEvent.Cause.RESET); // CraftBukkit - SPIGOT-5988: Clear respawn location when obstructed
|
||||||
+ entityplayer1.setRespawnPosition(null, null, 0f, false, false, com.destroystokyo.paper.event.player.PlayerSetSpawnEvent.Cause.PLAYER_RESPAWN); // CraftBukkit - SPIGOT-5988: Clear respawn location when obstructed // Paper - PlayerSetSpawnEvent
|
+ entityplayer1.setRespawnPosition(null, null, 0f, false, false, com.destroystokyo.paper.event.player.PlayerSetSpawnEvent.Cause.PLAYER_RESPAWN); // CraftBukkit - SPIGOT-5988: Clear respawn location when obstructed // Paper - PlayerSetSpawnEvent
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -113,12 +156,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
--- a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java
|
--- a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java
|
||||||
+++ b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java
|
+++ b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java
|
||||||
@@ -0,0 +0,0 @@ public class RespawnAnchorBlock extends Block {
|
@@ -0,0 +0,0 @@ public class RespawnAnchorBlock extends Block {
|
||||||
if (!world.isClientSide) {
|
ServerPlayer entityplayer = (ServerPlayer) player;
|
||||||
ServerPlayer serverPlayer = (ServerPlayer)player;
|
|
||||||
if (serverPlayer.getRespawnDimension() != world.dimension() || !pos.equals(serverPlayer.getRespawnPosition())) {
|
if (entityplayer.getRespawnDimension() != world.dimension() || !pos.equals(entityplayer.getRespawnPosition())) {
|
||||||
- serverPlayer.setRespawnPosition(world.dimension(), pos, 0.0F, false, true);
|
- entityplayer.setRespawnPosition(world.dimension(), pos, 0.0F, false, true, org.bukkit.event.player.PlayerSpawnChangeEvent.Cause.RESPAWN_ANCHOR); // CraftBukkit
|
||||||
+ if (serverPlayer.setRespawnPosition(world.dimension(), pos, 0.0F, false, true, com.destroystokyo.paper.event.player.PlayerSetSpawnEvent.Cause.RESPAWN_ANCHOR)) { // Paper - PlayerSetSpawnEvent
|
+ if (entityplayer.setRespawnPosition(world.dimension(), pos, 0.0F, false, true, com.destroystokyo.paper.event.player.PlayerSetSpawnEvent.Cause.RESPAWN_ANCHOR)) { // Paper - PlayerSetSpawnEvent
|
||||||
world.playSound((Player)null, (double)pos.getX() + 0.5D, (double)pos.getY() + 0.5D, (double)pos.getZ() + 0.5D, SoundEvents.RESPAWN_ANCHOR_SET_SPAWN, SoundSource.BLOCKS, 1.0F, 1.0F);
|
world.playSound((Player) null, (double) pos.getX() + 0.5D, (double) pos.getY() + 0.5D, (double) pos.getZ() + 0.5D, SoundEvents.RESPAWN_ANCHOR_SET_SPAWN, SoundSource.BLOCKS, 1.0F, 1.0F);
|
||||||
return InteractionResult.SUCCESS;
|
return InteractionResult.SUCCESS;
|
||||||
+ // Paper start - handle failed set spawn
|
+ // Paper start - handle failed set spawn
|
||||||
+ } else {
|
+ } else {
|
||||||
@@ -136,11 +179,11 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
@Override
|
@Override
|
||||||
public void setBedSpawnLocation(Location location, boolean override) {
|
public void setBedSpawnLocation(Location location, boolean override) {
|
||||||
if (location == null) {
|
if (location == null) {
|
||||||
- this.getHandle().setRespawnPosition(null, null, 0.0F, override, false);
|
- this.getHandle().setRespawnPosition(null, null, 0.0F, override, false, PlayerSpawnChangeEvent.Cause.PLUGIN);
|
||||||
+ this.getHandle().setRespawnPosition(null, null, 0.0F, override, false, com.destroystokyo.paper.event.player.PlayerSetSpawnEvent.Cause.PLUGIN); // Paper - PlayerSetSpawnEvent
|
+ this.getHandle().setRespawnPosition(null, null, 0.0F, override, false, com.destroystokyo.paper.event.player.PlayerSetSpawnEvent.Cause.PLUGIN); // Paper - PlayerSetSpawnEvent
|
||||||
} else {
|
} else {
|
||||||
- this.getHandle().setRespawnPosition(((CraftWorld) location.getWorld()).getHandle().dimension(), new BlockPos(location.getBlockX(), location.getBlockY(), location.getBlockZ()), location.getYaw(), override, false);
|
- this.getHandle().setRespawnPosition(((CraftWorld) location.getWorld()).getHandle().dimension(), CraftLocation.toBlockPosition(location), location.getYaw(), override, false, PlayerSpawnChangeEvent.Cause.PLUGIN);
|
||||||
+ this.getHandle().setRespawnPosition(((CraftWorld) location.getWorld()).getHandle().dimension(), new BlockPos(location.getBlockX(), location.getBlockY(), location.getBlockZ()), location.getYaw(), override, false, com.destroystokyo.paper.event.player.PlayerSetSpawnEvent.Cause.PLUGIN); // Paper - PlayerSetSpawnEvent
|
+ this.getHandle().setRespawnPosition(((CraftWorld) location.getWorld()).getHandle().dimension(), CraftLocation.toBlockPosition(location), location.getYaw(), override, false, com.destroystokyo.paper.event.player.PlayerSetSpawnEvent.Cause.PLUGIN); // Paper - PlayerSetSpawnEvent
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -52,11 +52,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
@@ -0,0 +0,0 @@ public class TntBlock extends Block {
|
@@ -0,0 +0,0 @@ public class TntBlock extends Block {
|
||||||
public void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldState, boolean notify) {
|
public void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldState, boolean notify) {
|
||||||
if (!oldState.is(state.getBlock())) {
|
if (!oldState.is(state.getBlock())) {
|
||||||
if (world.hasNeighborSignal(pos)) {
|
if (world.hasNeighborSignal(pos) && CraftEventFactory.callTNTPrimeEvent(world, pos, PrimeCause.REDSTONE, null, null)) { // CraftBukkit - TNTPrimeEvent
|
||||||
+ // Paper start - TNTPrimeEvent
|
+ // Paper start - TNTPrimeEvent
|
||||||
+ org.bukkit.block.Block tntBlock = io.papermc.paper.util.MCUtil.toBukkitBlock(world, pos);;
|
+ org.bukkit.block.Block tntBlock = io.papermc.paper.util.MCUtil.toBukkitBlock(world, pos);
|
||||||
+ if(!new com.destroystokyo.paper.event.block.TNTPrimeEvent(tntBlock, com.destroystokyo.paper.event.block.TNTPrimeEvent.PrimeReason.REDSTONE, null).callEvent())
|
+ if (!new com.destroystokyo.paper.event.block.TNTPrimeEvent(tntBlock, com.destroystokyo.paper.event.block.TNTPrimeEvent.PrimeReason.REDSTONE, null).callEvent()) {
|
||||||
+ return;
|
+ return;
|
||||||
|
+ }
|
||||||
+ // Paper end
|
+ // Paper end
|
||||||
TntBlock.explode(world, pos);
|
TntBlock.explode(world, pos);
|
||||||
world.removeBlock(pos, false);
|
world.removeBlock(pos, false);
|
||||||
@@ -64,11 +65,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
@@ -0,0 +0,0 @@ public class TntBlock extends Block {
|
@@ -0,0 +0,0 @@ public class TntBlock extends Block {
|
||||||
@Override
|
@Override
|
||||||
public void neighborChanged(BlockState state, Level world, BlockPos pos, Block sourceBlock, BlockPos sourcePos, boolean notify) {
|
public void neighborChanged(BlockState state, Level world, BlockPos pos, Block sourceBlock, BlockPos sourcePos, boolean notify) {
|
||||||
if (world.hasNeighborSignal(pos)) {
|
if (world.hasNeighborSignal(pos) && CraftEventFactory.callTNTPrimeEvent(world, pos, PrimeCause.REDSTONE, null, sourcePos)) { // CraftBukkit - TNTPrimeEvent
|
||||||
+ // Paper start - TNTPrimeEvent
|
+ // Paper start - TNTPrimeEvent
|
||||||
+ org.bukkit.block.Block tntBlock = io.papermc.paper.util.MCUtil.toBukkitBlock(world, pos);;
|
+ org.bukkit.block.Block tntBlock = io.papermc.paper.util.MCUtil.toBukkitBlock(world, pos);
|
||||||
+ if(!new com.destroystokyo.paper.event.block.TNTPrimeEvent(tntBlock, com.destroystokyo.paper.event.block.TNTPrimeEvent.PrimeReason.REDSTONE, null).callEvent())
|
+ if (!new com.destroystokyo.paper.event.block.TNTPrimeEvent(tntBlock, com.destroystokyo.paper.event.block.TNTPrimeEvent.PrimeReason.REDSTONE, null).callEvent()) {
|
||||||
+ return;
|
+ return;
|
||||||
|
+ }
|
||||||
+ // Paper end
|
+ // Paper end
|
||||||
TntBlock.explode(world, pos);
|
TntBlock.explode(world, pos);
|
||||||
world.removeBlock(pos, false);
|
world.removeBlock(pos, false);
|
||||||
@@ -80,20 +82,22 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ // Paper start - TNTPrimeEvent
|
+ // Paper start - TNTPrimeEvent
|
||||||
+ org.bukkit.block.Block tntBlock = io.papermc.paper.util.MCUtil.toBukkitBlock(world, pos);
|
+ org.bukkit.block.Block tntBlock = io.papermc.paper.util.MCUtil.toBukkitBlock(world, pos);
|
||||||
+ org.bukkit.entity.Entity source = explosion.source != null ? explosion.source.getBukkitEntity() : null;
|
+ org.bukkit.entity.Entity source = explosion.source != null ? explosion.source.getBukkitEntity() : null;
|
||||||
+ if(!new com.destroystokyo.paper.event.block.TNTPrimeEvent(tntBlock, com.destroystokyo.paper.event.block.TNTPrimeEvent.PrimeReason.EXPLOSION, source).callEvent())
|
+ if (!new com.destroystokyo.paper.event.block.TNTPrimeEvent(tntBlock, com.destroystokyo.paper.event.block.TNTPrimeEvent.PrimeReason.EXPLOSION, source).callEvent()) {
|
||||||
+ return;
|
+ return;
|
||||||
|
+ }
|
||||||
+ // Paper end
|
+ // Paper end
|
||||||
PrimedTnt entitytntprimed = new PrimedTnt(world, (double) pos.getX() + 0.5D, (double) pos.getY(), (double) pos.getZ() + 0.5D, explosion.getIndirectSourceEntity());
|
PrimedTnt entitytntprimed = new PrimedTnt(world, (double) pos.getX() + 0.5D, (double) pos.getY(), (double) pos.getZ() + 0.5D, explosion.getIndirectSourceEntity());
|
||||||
int i = entitytntprimed.getFuse();
|
int i = entitytntprimed.getFuse();
|
||||||
|
|
||||||
@@ -0,0 +0,0 @@ public class TntBlock extends Block {
|
@@ -0,0 +0,0 @@ public class TntBlock extends Block {
|
||||||
if (!itemstack.is(Items.FLINT_AND_STEEL) && !itemstack.is(Items.FIRE_CHARGE)) {
|
return InteractionResult.CONSUME;
|
||||||
return super.use(state, world, pos, player, hand, hit);
|
}
|
||||||
} else {
|
// CraftBukkit end
|
||||||
+ // Paper start - TNTPrimeEvent
|
+ // Paper start - TNTPrimeEvent
|
||||||
+ org.bukkit.block.Block tntBlock = io.papermc.paper.util.MCUtil.toBukkitBlock(world, pos);
|
+ org.bukkit.block.Block tntBlock = io.papermc.paper.util.MCUtil.toBukkitBlock(world, pos);
|
||||||
+ if(!new com.destroystokyo.paper.event.block.TNTPrimeEvent(tntBlock, com.destroystokyo.paper.event.block.TNTPrimeEvent.PrimeReason.ITEM, player.getBukkitEntity()).callEvent())
|
+ if (!new com.destroystokyo.paper.event.block.TNTPrimeEvent(tntBlock, com.destroystokyo.paper.event.block.TNTPrimeEvent.PrimeReason.ITEM, player.getBukkitEntity()).callEvent()) {
|
||||||
+ return InteractionResult.FAIL;
|
+ return InteractionResult.FAIL;
|
||||||
|
+ }
|
||||||
+ // Paper end
|
+ // Paper end
|
||||||
TntBlock.explode(world, pos, player);
|
TntBlock.explode(world, pos, player);
|
||||||
world.setBlock(pos, Blocks.AIR.defaultBlockState(), 11);
|
world.setBlock(pos, Blocks.AIR.defaultBlockState(), 11);
|
||||||
|
@@ -99,14 +99,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
private void explode(BlockState state, Level world, final BlockPos explodedPos) {
|
private void explode(BlockState state, Level world, final BlockPos explodedPos) {
|
||||||
+ final org.bukkit.block.BlockState explodedBlockState = org.bukkit.craftbukkit.block.CraftBlockStates.getBlockState(explodedPos, state, null); // Paper - exploded block state
|
+ final org.bukkit.block.BlockState explodedBlockState = org.bukkit.craftbukkit.block.CraftBlockStates.getBlockState(explodedPos, state, null); // Paper - exploded block state
|
||||||
world.removeBlock(explodedPos, false);
|
world.removeBlock(explodedPos, false);
|
||||||
boolean bl = Direction.Plane.HORIZONTAL.stream().map(explodedPos::relative).anyMatch((pos) -> {
|
Stream<Direction> stream = Direction.Plane.HORIZONTAL.stream(); // CraftBukkit - decompile error
|
||||||
return isWaterThatWouldFlow(pos, world);
|
|
||||||
@@ -0,0 +0,0 @@ public class RespawnAnchorBlock extends Block {
|
@@ -0,0 +0,0 @@ public class RespawnAnchorBlock extends Block {
|
||||||
}
|
|
||||||
};
|
};
|
||||||
Vec3 vec3 = explodedPos.getCenter();
|
Vec3 vec3d = explodedPos.getCenter();
|
||||||
- world.explode((Entity)null, world.damageSources().badRespawnPointExplosion(vec3), explosionDamageCalculator, vec3, 5.0F, true, Level.ExplosionInteraction.BLOCK);
|
|
||||||
+ world.explode((Entity)null, world.damageSources().badRespawnPointExplosion(vec3, explodedBlockState), explosionDamageCalculator, vec3, 5.0F, true, Level.ExplosionInteraction.BLOCK);
|
- world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d), explosiondamagecalculator, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK);
|
||||||
|
+ world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, explodedBlockState), explosiondamagecalculator, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK); // Paper
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean canSetSpawn(Level world) {
|
public static boolean canSetSpawn(Level world) {
|
||||||
|
@@ -3612,17 +3612,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ Component[] components = CraftSign.sanitizeLines(lines);
|
+ Component[] components = CraftSign.sanitizeLines(lines);
|
||||||
+ this.sendSignChange0(components, loc, dyeColor, hasGlowingText);
|
+ this.sendSignChange0(components, loc, dyeColor, hasGlowingText);
|
||||||
+ }
|
+ }
|
||||||
+
|
|
||||||
+ private void sendSignChange0(Component[] components, Location loc, DyeColor dyeColor, boolean hasGlowingText) {
|
|
||||||
+ SignBlockEntity sign = new SignBlockEntity(new BlockPos(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()), Blocks.OAK_SIGN.defaultBlockState());
|
|
||||||
+ sign.setColor(net.minecraft.world.item.DyeColor.byId(dyeColor.getWoolData()));
|
|
||||||
+ sign.setHasGlowingText(hasGlowingText);
|
|
||||||
+ for (int i = 0; i < components.length; i++) {
|
|
||||||
+ sign.setMessage(i, components[i]);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ getHandle().connection.send(sign.getUpdatePacket());
|
|
||||||
+ }
|
|
||||||
+ // Paper end
|
+ // Paper end
|
||||||
@Override
|
@Override
|
||||||
public void sendSignChange(Location loc, String[] lines) {
|
public void sendSignChange(Location loc, String[] lines) {
|
||||||
@@ -3631,17 +3620,21 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
}
|
}
|
||||||
|
|
||||||
Component[] components = CraftSign.sanitizeLines(lines);
|
Component[] components = CraftSign.sanitizeLines(lines);
|
||||||
- SignBlockEntity sign = new SignBlockEntity(new BlockPos(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()), Blocks.OAK_SIGN.defaultBlockState());
|
+ // Paper start - adventure
|
||||||
+ /*SignBlockEntity sign = new SignBlockEntity(new BlockPos(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()), Blocks.OAK_SIGN.defaultBlockState());
|
+ this.sendSignChange0(components, loc, dyeColor, hasGlowingText);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ private void sendSignChange0(Component[] components, Location loc, DyeColor dyeColor, boolean hasGlowingText) {
|
||||||
|
SignBlockEntity sign = new SignBlockEntity(CraftLocation.toBlockPosition(loc), Blocks.OAK_SIGN.defaultBlockState());
|
||||||
sign.setColor(net.minecraft.world.item.DyeColor.byId(dyeColor.getWoolData()));
|
sign.setColor(net.minecraft.world.item.DyeColor.byId(dyeColor.getWoolData()));
|
||||||
sign.setHasGlowingText(hasGlowingText);
|
sign.setHasGlowingText(hasGlowingText);
|
||||||
for (int i = 0; i < components.length; i++) {
|
@@ -0,0 +0,0 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||||
sign.setMessage(i, components[i]);
|
sign.setMessage(i, components[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
- this.getHandle().connection.send(sign.getUpdatePacket());
|
- this.getHandle().connection.send(sign.getUpdatePacket());
|
||||||
+ this.getHandle().connection.send(sign.getUpdatePacket());*/ // Paper
|
+ getHandle().connection.send(sign.getUpdatePacket());
|
||||||
+ this.sendSignChange0(components, loc, dyeColor, hasGlowingText); // Paper
|
+ // Paper end
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -4017,7 +4010,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+
|
+
|
||||||
@Override
|
@Override
|
||||||
public String getTitle() {
|
public String getTitle() {
|
||||||
return inventory instanceof CraftInventoryCustom ? ((CraftInventoryCustom.MinecraftInventory) ((CraftInventory) inventory).getInventory()).getTitle() : inventory.getType().getDefaultTitle();
|
return title;
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCustom.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCustom.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCustom.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCustom.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCustom.java
|
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCustom.java
|
||||||
@@ -4121,7 +4114,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+
|
+
|
||||||
@Override
|
@Override
|
||||||
public String getTitle() {
|
public String getTitle() {
|
||||||
return CraftChatMessage.fromComponent(this.container.getTitle());
|
return this.title;
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
|
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
|
||||||
|
@@ -78,7 +78,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ Date buildDate = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z").parse(Main.class.getPackage().getImplementationVendor()); // Paper
|
+ Date buildDate = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z").parse(Main.class.getPackage().getImplementationVendor()); // Paper
|
||||||
|
|
||||||
Calendar deadline = Calendar.getInstance();
|
Calendar deadline = Calendar.getInstance();
|
||||||
deadline.add(Calendar.DAY_OF_YEAR, -7);
|
deadline.add(Calendar.DAY_OF_YEAR, -21);
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
|
--- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
|
||||||
|
@@ -47,8 +47,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ public void setTargetLocation(Location location, boolean update) {
|
+ public void setTargetLocation(Location location, boolean update) {
|
||||||
+ // Paper end
|
+ // Paper end
|
||||||
Preconditions.checkArgument(getWorld().equals(location.getWorld()), "Cannot target EnderSignal across worlds");
|
Preconditions.checkArgument(getWorld().equals(location.getWorld()), "Cannot target EnderSignal across worlds");
|
||||||
- this.getHandle().signalTo(BlockPos.containing(location.getX(), location.getY(), location.getZ()));
|
- this.getHandle().signalTo(CraftLocation.toBlockPosition(location));
|
||||||
+ this.getHandle().signalTo(BlockPos.containing(location.getX(), location.getY(), location.getZ()), update); // Paper
|
+ this.getHandle().signalTo(CraftLocation.toBlockPosition(location), update); // Paper
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -26,10 +26,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
this.cachedSingleHashSet = new com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet<>(this); // Paper
|
this.cachedSingleHashSet = new com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet<>(this); // Paper
|
||||||
|
|
||||||
@@ -0,0 +0,0 @@ public class ServerPlayer extends Player {
|
@@ -0,0 +0,0 @@ public class ServerPlayer extends Player {
|
||||||
position = Vec3.atCenterOf(((ServerLevel) world).getSharedSpawnPos());
|
position = Vec3.atCenterOf(world.getSharedSpawnPos());
|
||||||
}
|
}
|
||||||
this.level = world;
|
this.level = world;
|
||||||
- this.setPos(position.x(), position.y(), position.z());
|
- this.setPos(position);
|
||||||
+ this.setPosRaw(position.x(), position.y(), position.z()); // Paper - don't register to chunks yet
|
+ this.setPosRaw(position.x(), position.y(), position.z()); // Paper - don't register to chunks yet
|
||||||
}
|
}
|
||||||
this.gameMode.setLevel((ServerLevel) world);
|
this.gameMode.setLevel((ServerLevel) world);
|
||||||
|
@@ -12,8 +12,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
if (location == null) {
|
if (location == null) {
|
||||||
worldserver1 = this.server.getLevel(Level.OVERWORLD);
|
worldserver1 = this.server.getLevel(Level.OVERWORLD);
|
||||||
blockposition = entityplayer1.getSpawnPoint(worldserver1);
|
blockposition = entityplayer1.getSpawnPoint(worldserver1);
|
||||||
- location = new Location(worldserver1.getWorld(), (double) ((float) blockposition.getX() + 0.5F), (double) ((float) blockposition.getY() + 0.1F), (double) ((float) blockposition.getZ() + 0.5F));
|
- location = CraftLocation.toBukkit(blockposition, worldserver1.getWorld()).add(0.5F, 0.1F, 0.5F);
|
||||||
+ location = new Location(worldserver1.getWorld(), (double) ((float) blockposition.getX() + 0.5F), (double) ((float) blockposition.getY() + 0.1F), (double) ((float) blockposition.getZ() + 0.5F), worldserver1.levelData.getSpawnAngle(), 0.0F); // Paper - use world spawn angle
|
+ location = CraftLocation.toBukkit(blockposition, worldserver1.getWorld(), worldserver1.levelData.getSpawnAngle(), 0.0F).add(0.5F, 0.1F, 0.5F); // Paper - use world spawn angle
|
||||||
}
|
}
|
||||||
|
|
||||||
Player respawnPlayer = entityplayer1.getBukkitEntity();
|
Player respawnPlayer = entityplayer1.getBukkitEntity();
|
||||||
|
@@ -11,7 +11,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
@@ -0,0 +0,0 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
@@ -0,0 +0,0 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||||
|
|
||||||
// If there isn't an enchant table we can force create one, won't be very useful though.
|
// If there isn't an enchant table we can force create one, won't be very useful though.
|
||||||
BlockPos pos = new BlockPos(location.getBlockX(), location.getBlockY(), location.getBlockZ());
|
BlockPos pos = CraftLocation.toBlockPosition(location);
|
||||||
- this.getHandle().openMenu(((EnchantmentTableBlock) Blocks.ENCHANTING_TABLE).getMenuProvider(null, this.getHandle().level, pos));
|
- this.getHandle().openMenu(((EnchantmentTableBlock) Blocks.ENCHANTING_TABLE).getMenuProvider(null, this.getHandle().level, pos));
|
||||||
+ // Paper start
|
+ // Paper start
|
||||||
+ MenuProvider menuProvider = ((EnchantmentTableBlock) Blocks.ENCHANTING_TABLE).getMenuProvider(null, this.getHandle().level, pos);
|
+ MenuProvider menuProvider = ((EnchantmentTableBlock) Blocks.ENCHANTING_TABLE).getMenuProvider(null, this.getHandle().level, pos);
|
||||||
|
@@ -36,7 +36,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||||
@@ -0,0 +0,0 @@ public class Main {
|
@@ -0,0 +0,0 @@ public class Main {
|
||||||
Calendar deadline = Calendar.getInstance();
|
Calendar deadline = Calendar.getInstance();
|
||||||
deadline.add(Calendar.DAY_OF_YEAR, -7);
|
deadline.add(Calendar.DAY_OF_YEAR, -21);
|
||||||
if (buildDate.before(deadline.getTime())) {
|
if (buildDate.before(deadline.getTime())) {
|
||||||
- System.err.println("*** Error, this build is outdated ***");
|
- System.err.println("*** Error, this build is outdated ***");
|
||||||
+ // Paper start - This is some stupid bullshit
|
+ // Paper start - This is some stupid bullshit
|
||||||
|
@@ -14,7 +14,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
+ // Paper start - EntityTeleportEndGatewayEvent - replicated from above
|
+ // Paper start - EntityTeleportEndGatewayEvent - replicated from above
|
||||||
+ org.bukkit.craftbukkit.entity.CraftEntity bukkitEntity = entity.getBukkitEntity();
|
+ org.bukkit.craftbukkit.entity.CraftEntity bukkitEntity = entity.getBukkitEntity();
|
||||||
+ org.bukkit.Location location = new Location(world.getWorld(), (double) blockposition1.getX() + 0.5D, (double) blockposition1.getY() + 0.5D, (double) blockposition1.getZ() + 0.5D);
|
+ org.bukkit.Location location = new org.bukkit.Location(world.getWorld(), (double) blockposition1.getX() + 0.5D, (double) blockposition1.getY() + 0.5D, (double) blockposition1.getZ() + 0.5D);
|
||||||
+ location.setPitch(bukkitEntity.getLocation().getPitch());
|
+ location.setPitch(bukkitEntity.getLocation().getPitch());
|
||||||
+ location.setYaw(bukkitEntity.getLocation().getYaw());
|
+ location.setYaw(bukkitEntity.getLocation().getYaw());
|
||||||
+
|
+
|
||||||
|
@@ -36,8 +36,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||||
+++ b/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 {
|
@@ -0,0 +0,0 @@ public class CraftEventFactory {
|
||||||
EntitiesUnloadEvent event = new EntitiesUnloadEvent(new CraftChunk((ServerLevel) world, coords.x, coords.z), bukkitEntities);
|
|
||||||
Bukkit.getPluginManager().callEvent(event);
|
return !event.isCancelled();
|
||||||
}
|
}
|
||||||
+
|
+
|
||||||
+ // Paper start
|
+ // Paper start
|
||||||
|
@@ -10,7 +10,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+++ b/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 Nameable, EntityAccess, CommandSource {
|
@@ -0,0 +0,0 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
||||||
Location enter = bukkitEntity.getLocation();
|
Location enter = bukkitEntity.getLocation();
|
||||||
Location exit = new Location(exitWorldServer.getWorld(), exitPosition.x(), exitPosition.y(), exitPosition.z());
|
Location exit = CraftLocation.toBukkit(exitPosition, exitWorldServer.getWorld());
|
||||||
|
|
||||||
- EntityPortalEvent event = new EntityPortalEvent(bukkitEntity, enter, exit, searchRadius);
|
- EntityPortalEvent event = new EntityPortalEvent(bukkitEntity, enter, exit, searchRadius);
|
||||||
+ // Paper start
|
+ // Paper start
|
||||||
|
@@ -30,12 +30,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
} else {
|
} else {
|
||||||
Optional<LastSeenMessages> optional = this.tryHandleChat(packet.command(), packet.timeStamp(), packet.lastSeenMessages());
|
Optional<LastSeenMessages> optional = this.tryHandleChat(packet.command(), packet.timeStamp(), packet.lastSeenMessages());
|
||||||
|
|
||||||
if (optional.isPresent()) {
|
|
||||||
this.server.submit(() -> {
|
|
||||||
+ if (player.hasDisconnected()) return; // Paper
|
|
||||||
this.performChatCommand(packet, (LastSeenMessages) optional.get());
|
|
||||||
this.detectRateSpam("/" + packet.command()); // Spigot
|
|
||||||
});
|
|
||||||
@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
|
@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
|
||||||
private Optional<LastSeenMessages> tryHandleChat(String message, Instant timestamp, LastSeenMessages.Update acknowledgment) {
|
private Optional<LastSeenMessages> tryHandleChat(String message, Instant timestamp, LastSeenMessages.Update acknowledgment) {
|
||||||
if (!this.updateChatOrder(timestamp)) {
|
if (!this.updateChatOrder(timestamp)) {
|
||||||
|
@@ -1208,8 +1208,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java
|
||||||
@@ -0,0 +0,0 @@ public class CraftWither extends CraftMonster implements Wither, com.destroystok
|
@@ -0,0 +0,0 @@ public class CraftWither extends CraftMonster implements Wither, com.destroystok
|
||||||
Entity target = this.getHandle().getLevel().getEntity(entityId);
|
|
||||||
return (target != null) ? (LivingEntity) target.getBukkitEntity() : null;
|
this.getHandle().setInvulnerableTicks(ticks);
|
||||||
}
|
}
|
||||||
+
|
+
|
||||||
+ // Paper start
|
+ // Paper start
|
||||||
|
@@ -9,7 +9,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||||
@@ -0,0 +0,0 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
@@ -0,0 +0,0 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
||||||
return new CraftStructureSearchResult(CraftStructure.minecraftToBukkit(found.getSecond().value(), this.getHandle().registryAccess()), new Location(this, found.getFirst().getX(), found.getFirst().getY(), found.getFirst().getZ()));
|
return new CraftStructureSearchResult(CraftStructure.minecraftToBukkit(found.getSecond().value(), this.getHandle().registryAccess()), CraftLocation.toBukkit(found.getFirst(), this));
|
||||||
}
|
}
|
||||||
|
|
||||||
+ // Paper start
|
+ // Paper start
|
||||||
|
@@ -15,6 +15,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
if (!this.level.isClientSide) {
|
if (!this.level.isClientSide) {
|
||||||
- if (player.takeXpDelay == 0) {
|
- if (player.takeXpDelay == 0) {
|
||||||
+ if (player.takeXpDelay == 0 && new com.destroystokyo.paper.event.player.PlayerPickupExperienceEvent(((net.minecraft.server.level.ServerPlayer) player).getBukkitEntity(), (org.bukkit.entity.ExperienceOrb) this.getBukkitEntity()).callEvent()) { // Paper
|
+ if (player.takeXpDelay == 0 && new com.destroystokyo.paper.event.player.PlayerPickupExperienceEvent(((net.minecraft.server.level.ServerPlayer) player).getBukkitEntity(), (org.bukkit.entity.ExperienceOrb) this.getBukkitEntity()).callEvent()) { // Paper
|
||||||
player.takeXpDelay = 2;
|
player.takeXpDelay = CraftEventFactory.callPlayerXpCooldownEvent(player, 2, PlayerExpCooldownChangeEvent.ChangeReason.PICKUP_ORB).getNewCooldown(); // CraftBukkit - entityhuman.takeXpDelay = 2;
|
||||||
player.take(this, 1);
|
player.take(this, 1);
|
||||||
int i = this.repairPlayerItems(player, this.value);
|
int i = this.repairPlayerItems(player, this.value);
|
||||||
|
@@ -25,8 +25,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
|
|
||||||
if (!this.level.isInWorldBounds(blockposition)) {
|
if (!this.level.isInWorldBounds(blockposition)) {
|
||||||
@@ -0,0 +0,0 @@ public class Explosion {
|
@@ -0,0 +0,0 @@ public class Explosion {
|
||||||
BlockState iblockdata = this.level.getBlockState(blockposition);
|
}
|
||||||
Block block = iblockdata.getBlock();
|
// CraftBukkit end
|
||||||
|
|
||||||
- if (!iblockdata.isAir()) {
|
- if (!iblockdata.isAir()) {
|
||||||
+ if (!iblockdata.isAir() && iblockdata.isDestroyable()) { // Paper
|
+ if (!iblockdata.isAir() && iblockdata.isDestroyable()) { // Paper
|
||||||
|
@@ -164,6 +164,15 @@ diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
|
|||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
|
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
|
||||||
|
@@ -0,0 +0,0 @@ public class CraftContainer extends AbstractContainerMenu {
|
||||||
|
public CraftContainer(final Inventory inventory, final Player player, int id) {
|
||||||
|
this(new InventoryView() {
|
||||||
|
|
||||||
|
- private final String originalTitle = (inventory instanceof CraftInventoryCustom) ? ((CraftInventoryCustom.MinecraftInventory) ((CraftInventory) inventory).getInventory()).getTitle() : inventory.getType().getDefaultTitle();
|
||||||
|
+ private final String originalTitle = inventory instanceof CraftInventoryCustom ? ((CraftInventoryCustom) inventory).getTitle() : inventory.getType().getDefaultTitle(); // Paper
|
||||||
|
private String title = this.originalTitle;
|
||||||
|
|
||||||
|
@Override
|
||||||
@@ -0,0 +0,0 @@ public class CraftContainer extends AbstractContainerMenu {
|
@@ -0,0 +0,0 @@ public class CraftContainer extends AbstractContainerMenu {
|
||||||
// Paper start
|
// Paper start
|
||||||
@Override
|
@Override
|
||||||
@@ -173,13 +182,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
}
|
}
|
||||||
// Paper end
|
// Paper end
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getTitle() {
|
|
||||||
- return inventory instanceof CraftInventoryCustom ? ((CraftInventoryCustom.MinecraftInventory) ((CraftInventory) inventory).getInventory()).getTitle() : inventory.getType().getDefaultTitle();
|
|
||||||
+ return inventory instanceof CraftInventoryCustom custom ? custom.getTitle() : inventory.getType().getDefaultTitle(); // Paper
|
|
||||||
}
|
|
||||||
}, player, id);
|
|
||||||
}
|
|
||||||
@@ -0,0 +0,0 @@ public class CraftContainer extends AbstractContainerMenu {
|
@@ -0,0 +0,0 @@ public class CraftContainer extends AbstractContainerMenu {
|
||||||
this.lastSlots = delegate.lastSlots;
|
this.lastSlots = delegate.lastSlots;
|
||||||
this.slots = delegate.slots;
|
this.slots = delegate.slots;
|
||||||
|
@@ -15955,7 +15955,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ entityplayer1.connection.send(new ClientboundSetSimulationDistancePacket(worldserver1.getChunkSource().chunkMap.playerChunkManager.getTargetTickViewDistance())); // Spigot // Paper - replace old player chunk management
|
+ entityplayer1.connection.send(new ClientboundSetSimulationDistancePacket(worldserver1.getChunkSource().chunkMap.playerChunkManager.getTargetTickViewDistance())); // Spigot // Paper - replace old player chunk management
|
||||||
entityplayer1.spawnIn(worldserver1);
|
entityplayer1.spawnIn(worldserver1);
|
||||||
entityplayer1.unsetRemoved();
|
entityplayer1.unsetRemoved();
|
||||||
entityplayer1.connection.teleport(new Location(worldserver1.getWorld(), entityplayer1.getX(), entityplayer1.getY(), entityplayer1.getZ(), entityplayer1.getYRot(), entityplayer1.getXRot()));
|
entityplayer1.connection.teleport(CraftLocation.toBukkit(entityplayer1.position(), worldserver1.getWorld(), entityplayer1.getYRot(), entityplayer1.getXRot()));
|
||||||
@@ -0,0 +0,0 @@ public abstract class PlayerList {
|
@@ -0,0 +0,0 @@ public abstract class PlayerList {
|
||||||
|
|
||||||
public void setViewDistance(int viewDistance) {
|
public void setViewDistance(int viewDistance) {
|
||||||
|
@@ -36,7 +36,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
|
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||||
@@ -0,0 +0,0 @@ public class Main {
|
@@ -0,0 +0,0 @@ public class Main {
|
||||||
deadline.add(Calendar.DAY_OF_YEAR, -7);
|
deadline.add(Calendar.DAY_OF_YEAR, -21);
|
||||||
if (buildDate.before(deadline.getTime())) {
|
if (buildDate.before(deadline.getTime())) {
|
||||||
System.err.println("*** Error, this build is outdated ***");
|
System.err.println("*** Error, this build is outdated ***");
|
||||||
- System.err.println("*** Please download a new build as per instructions from https://www.spigotmc.org/go/outdated-spigot ***");
|
- System.err.println("*** Please download a new build as per instructions from https://www.spigotmc.org/go/outdated-spigot ***");
|
||||||
|
@@ -67,6 +67,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ // Paper end
|
+ // Paper end
|
||||||
{
|
{
|
||||||
return config.miscTrackingRange;
|
return config.miscTrackingRange;
|
||||||
|
} else if ( entity instanceof Display )
|
||||||
|
@@ -0,0 +0,0 @@ public class TrackingRange
|
||||||
|
return config.displayTrackingRange;
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
+ if (entity instanceof net.minecraft.world.entity.boss.enderdragon.EnderDragon) return ((net.minecraft.server.level.ServerLevel)(entity.getCommandSenderWorld())).getChunkSource().chunkMap.getEffectiveViewDistance(); // Paper - enderdragon is exempt
|
+ if (entity instanceof net.minecraft.world.entity.boss.enderdragon.EnderDragon) return ((net.minecraft.server.level.ServerLevel)(entity.getCommandSenderWorld())).getChunkSource().chunkMap.getEffectiveViewDistance(); // Paper - enderdragon is exempt
|
||||||
|
@@ -350,7 +350,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
if ( entity instanceof ServerPlayer )
|
if ( entity instanceof ServerPlayer )
|
||||||
{
|
{
|
||||||
@@ -0,0 +0,0 @@ public class TrackingRange
|
@@ -0,0 +0,0 @@ public class TrackingRange
|
||||||
return config.miscTrackingRange;
|
return config.displayTrackingRange;
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
- if (entity instanceof net.minecraft.world.entity.boss.enderdragon.EnderDragon) return ((net.minecraft.server.level.ServerLevel)(entity.getCommandSenderWorld())).getChunkSource().chunkMap.getEffectiveViewDistance(); // Paper - enderdragon is exempt
|
- if (entity instanceof net.minecraft.world.entity.boss.enderdragon.EnderDragon) return ((net.minecraft.server.level.ServerLevel)(entity.getCommandSenderWorld())).getChunkSource().chunkMap.getEffectiveViewDistance(); // Paper - enderdragon is exempt
|
||||||
|
Submodule work/Bukkit updated: 465c496472...2fcba9b271
Submodule work/CraftBukkit updated: 818582f409...01b2e1af41
Submodule work/Spigot updated: 514cf03ae9...7da74dae7f
Reference in New Issue
Block a user