mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-01 12:41:50 +01:00
1358d1e914
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: 881e06e5 PR-725: Add Item Unlimited Lifetime APIs CraftBukkit Changes: 74c08312 SPIGOT-6962: Call EntityChangeBlockEvent when when FallingBlockEntity starts to fall 64db5126 SPIGOT-6959: Make /loot command ignore empty items for spawn 2d760831 Increase outdated build delay 9ed7e4fb SPIGOT-6138, SPIGOT-6415: Don't call CreatureSpawnEvent after cross-dimensional travel fc4ad813 SPIGOT-6895: Trees grown with applyBoneMeal() don't fire the StructureGrowthEvent 59733a2e SPIGOT-6961: Actually return a copy of the ItemMeta Spigot Changes: ffceeae3 SPIGOT-6956: Drop unload queue patch as attempt at fixing stop issue e19ddabd PR-1011: Add Item Unlimited Lifetime APIs 34d40b0e SPIGOT-2942: give command fires PlayerDropItemEvent, cancelling it causes Item Duplication
94 lines
4.2 KiB
Diff
94 lines
4.2 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
Date: Tue, 7 Jul 2020 10:52:34 -0700
|
|
Subject: [PATCH] More World API
|
|
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
index 65b15946fbac36c4b767127aa1fa8ef59c0aefc0..e57f5dfb86e4692455f8876f2183f6f520bc4b5e 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
@@ -1966,6 +1966,65 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
|
return (nearest == null) ? null : new Location(this, nearest.getX(), nearest.getY(), nearest.getZ());
|
|
}
|
|
|
|
+ // Paper start
|
|
+ @Override
|
|
+ public Location locateNearestBiome(Location origin, Biome biome, int radius) {
|
|
+ return this.locateNearestBiome(origin, biome, radius, 8);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public Location locateNearestBiome(Location origin, Biome biome, int radius, int step) {
|
|
+ BlockPos originPos = new BlockPos(origin.getX(), origin.getY(), origin.getZ());
|
|
+ BlockPos nearest = getHandle().findNearestBiome( holder -> holder.is(CraftNamespacedKey.toMinecraft(biome.getKey())), originPos, radius, step).getFirst();
|
|
+ return (nearest == null) ? null : new Location(this, nearest.getX(), nearest.getY(), nearest.getZ());
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public boolean isUltrawarm() {
|
|
+ return getHandle().dimensionType().ultraWarm();
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public double getCoordinateScale() {
|
|
+ return getHandle().dimensionType().coordinateScale();
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public boolean hasSkylight() {
|
|
+ return getHandle().dimensionType().hasSkyLight();
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public boolean hasBedrockCeiling() {
|
|
+ return getHandle().dimensionType().hasSkyLight();
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public boolean doesBedWork() {
|
|
+ return getHandle().dimensionType().bedWorks();
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public boolean doesRespawnAnchorWork() {
|
|
+ return getHandle().dimensionType().respawnAnchorWorks();
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public boolean isFixedTime() {
|
|
+ return getHandle().dimensionType().hasFixedTime();
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public Collection<org.bukkit.Material> getInfiniburn() {
|
|
+ return com.google.common.collect.Sets.newHashSet(com.google.common.collect.Iterators.transform(net.minecraft.core.Registry.BLOCK.getTagOrEmpty(this.getHandle().dimensionType().infiniburn()).iterator(), blockHolder -> CraftMagicNumbers.getMaterial(blockHolder.value())));
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void sendGameEvent(Entity sourceEntity, org.bukkit.GameEvent gameEvent, Vector position) {
|
|
+ getHandle().gameEvent(sourceEntity != null ? ((CraftEntity) sourceEntity).getHandle(): null, net.minecraft.core.Registry.GAME_EVENT.get(org.bukkit.craftbukkit.util.CraftNamespacedKey.toMinecraft(gameEvent.getKey())), org.bukkit.craftbukkit.util.CraftVector.toBlockPos(position));
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
@Override
|
|
public Raid locateNearestRaid(Location location, int radius) {
|
|
Validate.notNull(location, "Location cannot be null");
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftVector.java b/src/main/java/org/bukkit/craftbukkit/util/CraftVector.java
|
|
index 3071ac1ac0e733d73dade49597a39f7d156bbc04..60c4afd5cad66ffb0cfb5c1fa9857def593813ae 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftVector.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftVector.java
|
|
@@ -12,4 +12,13 @@ public final class CraftVector {
|
|
public static net.minecraft.world.phys.Vec3 toNMS(org.bukkit.util.Vector bukkit) {
|
|
return new net.minecraft.world.phys.Vec3(bukkit.getX(), bukkit.getY(), bukkit.getZ());
|
|
}
|
|
+ // Paper start
|
|
+ public static org.bukkit.util.Vector toBukkit(net.minecraft.core.BlockPos blockPosition) {
|
|
+ return new org.bukkit.util.Vector(blockPosition.getX(), blockPosition.getY(), blockPosition.getZ());
|
|
+ }
|
|
+
|
|
+ public static net.minecraft.core.BlockPos toBlockPos(org.bukkit.util.Vector bukkit) {
|
|
+ return new net.minecraft.core.BlockPos(bukkit.getX(), bukkit.getY(), bukkit.getZ());
|
|
+ }
|
|
+ // Paper end
|
|
}
|