2021-06-15 04:59:31 +02:00
|
|
|
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
|
2023-05-12 13:10:08 +02:00
|
|
|
index 0e9b81e16e1da8e72b7871fb6c6563b8e181fea4..4e73e38dcec36b4ab0a03c6bd1b70811233f9a0a 100644
|
2021-06-15 04:59:31 +02:00
|
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
2023-05-12 13:10:08 +02:00
|
|
|
@@ -2046,6 +2046,69 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
|
|
|
return new CraftStructureSearchResult(CraftStructure.minecraftToBukkit(found.getSecond().value(), this.getHandle().registryAccess()), CraftLocation.toBukkit(found.getFirst(), this));
|
2021-06-15 04:59:31 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
+ // 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) {
|
2023-03-15 00:10:18 +01:00
|
|
|
+ BlockPos originPos = io.papermc.paper.util.MCUtil.toBlockPos(origin);
|
2022-12-13 16:01:54 +01:00
|
|
|
+ Pair<BlockPos, Holder<net.minecraft.world.level.biome.Biome>> pair = getHandle().findClosestBiome3d(holder -> holder.is(CraftNamespacedKey.toMinecraft(biome.getKey())), originPos, radius, step, step);
|
|
|
|
+ if (pair == null) {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ BlockPos nearest = pair.getFirst();
|
|
|
|
+ return new Location(this, nearest.getX(), nearest.getY(), nearest.getZ());
|
2021-06-15 04:59:31 +02:00
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @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() {
|
2022-12-08 04:24:00 +01:00
|
|
|
+ return com.google.common.collect.Sets.newHashSet(com.google.common.collect.Iterators.transform(net.minecraft.core.registries.BuiltInRegistries.BLOCK.getTagOrEmpty(this.getHandle().dimensionType().infiniburn()).iterator(), blockHolder -> CraftMagicNumbers.getMaterial(blockHolder.value())));
|
2021-06-15 04:59:31 +02:00
|
|
|
+ }
|
2021-08-21 16:26:42 +02:00
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void sendGameEvent(Entity sourceEntity, org.bukkit.GameEvent gameEvent, Vector position) {
|
2022-12-08 04:24:00 +01:00
|
|
|
+ getHandle().gameEvent(sourceEntity != null ? ((CraftEntity) sourceEntity).getHandle(): null, net.minecraft.core.registries.BuiltInRegistries.GAME_EVENT.get(org.bukkit.craftbukkit.util.CraftNamespacedKey.toMinecraft(gameEvent.getKey())), org.bukkit.craftbukkit.util.CraftVector.toBlockPos(position));
|
2021-08-21 16:26:42 +02:00
|
|
|
+ }
|
2021-06-15 04:59:31 +02:00
|
|
|
+ // Paper end
|
|
|
|
+
|
|
|
|
@Override
|
|
|
|
public Raid locateNearestRaid(Location location, int radius) {
|
|
|
|
Validate.notNull(location, "Location cannot be null");
|
2021-08-21 16:26:42 +02:00
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftVector.java b/src/main/java/org/bukkit/craftbukkit/util/CraftVector.java
|
2023-03-15 00:10:18 +01:00
|
|
|
index 3071ac1ac0e733d73dade49597a39f7d156bbc04..967445b2eb158454100a27369a1f463d69f54f27 100644
|
2021-08-21 16:26:42 +02:00
|
|
|
--- 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) {
|
2023-03-15 00:10:18 +01:00
|
|
|
+ return net.minecraft.core.BlockPos.containing(bukkit.getX(), bukkit.getY(), bukkit.getZ());
|
2021-08-21 16:26:42 +02:00
|
|
|
+ }
|
|
|
|
+ // Paper end
|
|
|
|
}
|