geforkt von Mirrors/Paper
Updated Upstream (Bukkit/CraftBukkit) (#7776)
Dieser Commit ist enthalten in:
Ursprung
8d72e2dfb2
Commit
655a3cf961
@ -8,20 +8,12 @@ diff --git a/src/main/java/org/bukkit/entity/Vex.java b/src/main/java/org/bukkit
|
|||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/bukkit/entity/Vex.java
|
--- a/src/main/java/org/bukkit/entity/Vex.java
|
||||||
+++ b/src/main/java/org/bukkit/entity/Vex.java
|
+++ b/src/main/java/org/bukkit/entity/Vex.java
|
||||||
@@ -0,0 +0,0 @@
|
|
||||||
package org.bukkit.entity;
|
|
||||||
|
|
||||||
+import org.jetbrains.annotations.Nullable;
|
|
||||||
+
|
|
||||||
/**
|
|
||||||
* Represents a Vex.
|
|
||||||
*/
|
|
||||||
@@ -0,0 +0,0 @@ public interface Vex extends Monster {
|
@@ -0,0 +0,0 @@ public interface Vex extends Monster {
|
||||||
* @param charging new state
|
* @return true if the entity has limited life
|
||||||
*/
|
*/
|
||||||
void setCharging(boolean charging);
|
boolean hasLimitedLife();
|
||||||
+
|
|
||||||
+ // Paper start
|
+ // Paper start
|
||||||
|
+
|
||||||
+ /**
|
+ /**
|
||||||
+ * Get the Mob that summoned this vex
|
+ * Get the Mob that summoned this vex
|
||||||
+ *
|
+ *
|
||||||
|
@ -565,6 +565,37 @@ diff --git a/src/main/java/org/bukkit/entity/Vex.java b/src/main/java/org/bukkit
|
|||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/bukkit/entity/Vex.java
|
--- a/src/main/java/org/bukkit/entity/Vex.java
|
||||||
+++ b/src/main/java/org/bukkit/entity/Vex.java
|
+++ b/src/main/java/org/bukkit/entity/Vex.java
|
||||||
|
@@ -0,0 +0,0 @@ public interface Vex extends Monster {
|
||||||
|
* Gets the remaining lifespan of this entity.
|
||||||
|
*
|
||||||
|
* @return life in ticks
|
||||||
|
+ * @deprecated This API duplicates existing API which uses the more
|
||||||
|
+ * preferable name due to mirroring internals better
|
||||||
|
*/
|
||||||
|
+ @Deprecated
|
||||||
|
int getLifeTicks();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the remaining lifespan of this entity.
|
||||||
|
*
|
||||||
|
* @param lifeTicks life in ticks, or negative for unlimited lifepan
|
||||||
|
+ * @deprecated This API duplicates existing API which uses the more
|
||||||
|
+ * preferable name due to mirroring internals better
|
||||||
|
*/
|
||||||
|
+ @Deprecated
|
||||||
|
void setLifeTicks(int lifeTicks);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets if the entity has a limited life.
|
||||||
|
*
|
||||||
|
* @return true if the entity has limited life
|
||||||
|
+ * @deprecated This API duplicates existing API which uses the more
|
||||||
|
+ * preferable name due to mirroring internals better
|
||||||
|
*/
|
||||||
|
+ @Deprecated
|
||||||
|
boolean hasLimitedLife();
|
||||||
|
// Paper start
|
||||||
|
|
||||||
@@ -0,0 +0,0 @@ public interface Vex extends Monster {
|
@@ -0,0 +0,0 @@ public interface Vex extends Monster {
|
||||||
* @param summoner New summoner
|
* @param summoner New summoner
|
||||||
*/
|
*/
|
||||||
|
@ -22,30 +22,3 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
|
|
||||||
protected FileConfigurationOptions(@NotNull MemoryConfiguration configuration) {
|
protected FileConfigurationOptions(@NotNull MemoryConfiguration configuration) {
|
||||||
super(configuration);
|
super(configuration);
|
||||||
diff --git a/src/main/java/org/bukkit/configuration/file/YamlRepresenter.java b/src/main/java/org/bukkit/configuration/file/YamlRepresenter.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/org/bukkit/configuration/file/YamlRepresenter.java
|
|
||||||
+++ b/src/main/java/org/bukkit/configuration/file/YamlRepresenter.java
|
|
||||||
@@ -0,0 +0,0 @@ import org.yaml.snakeyaml.representer.Representer;
|
|
||||||
public class YamlRepresenter extends Representer {
|
|
||||||
|
|
||||||
public YamlRepresenter() {
|
|
||||||
+ this.multiRepresenters.put(org.bukkit.configuration.ConfigurationSection.class, new RepresentConfigurationSection()); // Paper - restore old yaml config section representer
|
|
||||||
this.multiRepresenters.put(ConfigurationSerializable.class, new RepresentConfigurationSerializable());
|
|
||||||
// SPIGOT-6234: We could just switch YamlConstructor to extend Constructor rather than SafeConstructor, however there is a very small risk of issues with plugins treating config as untrusted input
|
|
||||||
// So instead we will just allow future plugins to have their enums extend ConfigurationSerializable
|
|
||||||
this.multiRepresenters.remove(Enum.class);
|
|
||||||
}
|
|
||||||
+ // Paper start - restore old yaml config section representer
|
|
||||||
+ private class RepresentConfigurationSection extends RepresentMap {
|
|
||||||
+
|
|
||||||
+ @NotNull
|
|
||||||
+ @Override
|
|
||||||
+ public Node representData(@NotNull Object data) {
|
|
||||||
+ return super.representData(((org.bukkit.configuration.ConfigurationSection) data).getValues(false));
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ // Paper end
|
|
||||||
|
|
||||||
private class RepresentConfigurationSerializable extends RepresentMap {
|
|
||||||
|
|
||||||
|
@ -65,9 +65,9 @@ diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java b/sr
|
|||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java
|
||||||
@@ -0,0 +0,0 @@ import org.bukkit.entity.EntityType;
|
@@ -0,0 +0,0 @@ import org.bukkit.entity.Villager;
|
||||||
import org.bukkit.entity.Villager;
|
|
||||||
import org.bukkit.entity.ZombieVillager;
|
import org.bukkit.entity.ZombieVillager;
|
||||||
|
import org.bukkit.event.entity.CreatureSpawnEvent;
|
||||||
|
|
||||||
+// Paper start
|
+// Paper start
|
||||||
+import com.destroystokyo.paper.entity.villager.Reputation;
|
+import com.destroystokyo.paper.entity.villager.Reputation;
|
||||||
|
@ -21,7 +21,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ // Paper start - Don't suggest if the requirement isn't met
|
+ // Paper start - Don't suggest if the requirement isn't met
|
||||||
+ if (parent != this.root || node.canUse(context.getSource())) {
|
+ if (parent != this.root || node.canUse(context.getSource())) {
|
||||||
try {
|
try {
|
||||||
future = node.listSuggestions(context.build(truncatedInput), new SuggestionsBuilder(truncatedInput, truncatedInputLowerCase, start));
|
- if (node.canUse(parse.getContext().getSource())) future = node.listSuggestions(context.build(truncatedInput), new SuggestionsBuilder(truncatedInput, truncatedInputLowerCase, start)); // CraftBukkit
|
||||||
|
+ future = node.listSuggestions(context.build(truncatedInput), new SuggestionsBuilder(truncatedInput, truncatedInputLowerCase, start)); // CraftBukkit
|
||||||
} catch (final CommandSyntaxException ignored) {
|
} catch (final CommandSyntaxException ignored) {
|
||||||
}
|
}
|
||||||
+ }
|
+ }
|
||||||
|
@ -14,7 +14,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
public class DefaultDispenseItemBehavior implements DispenseItemBehavior {
|
public class DefaultDispenseItemBehavior implements DispenseItemBehavior {
|
||||||
+ private Direction enumdirection; // Paper
|
+ private Direction enumdirection; // Paper
|
||||||
|
|
||||||
public DefaultDispenseItemBehavior() {}
|
// CraftBukkit start
|
||||||
|
private boolean dropper;
|
||||||
|
@@ -0,0 +0,0 @@ public class DefaultDispenseItemBehavior implements DispenseItemBehavior {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final ItemStack dispense(BlockSource pointer, ItemStack stack) {
|
public final ItemStack dispense(BlockSource pointer, ItemStack stack) {
|
||||||
|
@ -3,6 +3,9 @@ From: Nassim Jahnke <nassim@njahnke.dev>
|
|||||||
Date: Fri, 4 Mar 2022 20:35:19 +0100
|
Date: Fri, 4 Mar 2022 20:35:19 +0100
|
||||||
Subject: [PATCH] Fix falling block spawn methods
|
Subject: [PATCH] Fix falling block spawn methods
|
||||||
|
|
||||||
|
Restores the API behavior from previous versions of the server
|
||||||
|
- Do not call API events
|
||||||
|
- Do not replace the existing block in the world
|
||||||
|
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java b/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java b/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
@ -25,17 +28,27 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
Validate.notNull(material, "Material cannot be null");
|
Validate.notNull(material, "Material cannot be null");
|
||||||
Validate.isTrue(material.isBlock(), "Material must be a block");
|
Validate.isTrue(material.isBlock(), "Material must be a block");
|
||||||
|
|
||||||
- FallingBlockEntity entity = FallingBlockEntity.fall(world, new BlockPos(location.getX(), location.getY(), location.getZ()), CraftMagicNumbers.getBlock(material).defaultBlockState());
|
- FallingBlockEntity entity = FallingBlockEntity.fall(world, new BlockPos(location.getX(), location.getY(), location.getZ()), CraftMagicNumbers.getBlock(material).defaultBlockState(), SpawnReason.CUSTOM);
|
||||||
|
+ // Paper start - restore API behavior for spawning falling blocks
|
||||||
+ FallingBlockEntity entity = new FallingBlockEntity(this.world, location.getX(), location.getY(), location.getZ(), CraftMagicNumbers.getBlock(material).defaultBlockState()); // Paper
|
+ FallingBlockEntity entity = new FallingBlockEntity(this.world, location.getX(), location.getY(), location.getZ(), CraftMagicNumbers.getBlock(material).defaultBlockState()); // Paper
|
||||||
entity.time = 1;
|
+ entity.time = 1;
|
||||||
|
+
|
||||||
|
+ this.world.addFreshEntity(entity, SpawnReason.CUSTOM);
|
||||||
|
+ // Paper end
|
||||||
|
return (FallingBlock) entity.getBukkitEntity();
|
||||||
|
}
|
||||||
|
|
||||||
this.world.addFreshEntity(entity, SpawnReason.CUSTOM);
|
|
||||||
@@ -0,0 +0,0 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
@@ -0,0 +0,0 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
||||||
Validate.notNull(location, "Location cannot be null");
|
Validate.notNull(location, "Location cannot be null");
|
||||||
Validate.notNull(data, "Material cannot be null");
|
Validate.notNull(data, "BlockData cannot be null");
|
||||||
|
|
||||||
- FallingBlockEntity entity = FallingBlockEntity.fall(world, new BlockPos(location.getX(), location.getY(), location.getZ()), ((CraftBlockData) data).getState());
|
- FallingBlockEntity entity = FallingBlockEntity.fall(world, new BlockPos(location.getX(), location.getY(), location.getZ()), ((CraftBlockData) data).getState(), SpawnReason.CUSTOM);
|
||||||
+ FallingBlockEntity entity = new FallingBlockEntity(this.world, location.getX(), location.getY(), location.getZ(), ((CraftBlockData) data).getState()); // Paper
|
+ // Paper start - restore API behavior for spawning falling blocks
|
||||||
entity.time = 1;
|
+ FallingBlockEntity entity = new FallingBlockEntity(this.world, location.getX(), location.getY(), location.getZ(), ((CraftBlockData) data).getState());
|
||||||
|
+ entity.time = 1;
|
||||||
|
+
|
||||||
|
+ this.world.addFreshEntity(entity, SpawnReason.CUSTOM);
|
||||||
|
+ // Paper end
|
||||||
|
return (FallingBlock) entity.getBukkitEntity();
|
||||||
|
}
|
||||||
|
|
||||||
this.world.addFreshEntity(entity, SpawnReason.CUSTOM);
|
|
||||||
|
@ -8,20 +8,20 @@ diff --git a/src/main/java/com/mojang/brigadier/tree/CommandNode.java b/src/main
|
|||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/com/mojang/brigadier/tree/CommandNode.java
|
--- a/src/main/java/com/mojang/brigadier/tree/CommandNode.java
|
||||||
+++ b/src/main/java/com/mojang/brigadier/tree/CommandNode.java
|
+++ b/src/main/java/com/mojang/brigadier/tree/CommandNode.java
|
||||||
@@ -0,0 +0,0 @@ import java.util.stream.Collectors;
|
@@ -0,0 +0,0 @@ import java.util.function.Predicate;
|
||||||
import net.minecraft.commands.CommandSourceStack;
|
import net.minecraft.commands.CommandSourceStack;
|
||||||
|
|
||||||
public abstract class CommandNode<S> implements Comparable<CommandNode<S>> {
|
public abstract class CommandNode<S> implements Comparable<CommandNode<S>> {
|
||||||
- private Map<String, CommandNode<S>> children = Maps.newLinkedHashMap();
|
- private final Map<String, CommandNode<S>> children = new LinkedHashMap<>();
|
||||||
+ private Map<String, CommandNode<S>> children = Maps.newTreeMap(); // Paper - Switch to tree map for automatic sorting
|
+ private Map<String, CommandNode<S>> children = com.google.common.collect.Maps.newTreeMap(); // Paper - Switch to tree map for automatic sorting
|
||||||
private Map<String, LiteralCommandNode<S>> literals = Maps.newLinkedHashMap();
|
private final Map<String, LiteralCommandNode<S>> literals = new LinkedHashMap<>();
|
||||||
private Map<String, ArgumentCommandNode<S, ?>> arguments = Maps.newLinkedHashMap();
|
private final Map<String, ArgumentCommandNode<S, ?>> arguments = new LinkedHashMap<>();
|
||||||
public Predicate<S> requirement;
|
public Predicate<S> requirement;
|
||||||
@@ -0,0 +0,0 @@ public abstract class CommandNode<S> implements Comparable<CommandNode<S>> {
|
@@ -0,0 +0,0 @@ public abstract class CommandNode<S> implements Comparable<CommandNode<S>> {
|
||||||
|
this.arguments.put(node.getName(), (ArgumentCommandNode<S, ?>) node);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
+
|
||||||
- this.children = this.children.entrySet().stream().sorted(Map.Entry.comparingByValue()).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e1, LinkedHashMap::new));
|
|
||||||
+ // Paper - Remove manual sorting, it is no longer needed
|
+ // Paper - Remove manual sorting, it is no longer needed
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit fc460d1bb8d5f2bc9ff07dad1b7b402eed06d7c4
|
Subproject commit 31514774479a17c4a8cfb2d44f392a590a2b282c
|
@ -1 +1 @@
|
|||||||
Subproject commit a459f4d4f5f89e6266be8db2e7facea1cb00b5d0
|
Subproject commit 9cc7d766dc36bf5f565381f0d1be885911895c1a
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren