diff --git a/lib/Gaea-1.14.3.jar b/lib/Gaea-1.14.3.jar index 0fc0aa392..62c845824 100644 Binary files a/lib/Gaea-1.14.3.jar and b/lib/Gaea-1.14.3.jar differ diff --git a/src/main/java/com/dfsek/terra/Terra.java b/src/main/java/com/dfsek/terra/Terra.java index 7999adc6a..60a2efe05 100644 --- a/src/main/java/com/dfsek/terra/Terra.java +++ b/src/main/java/com/dfsek/terra/Terra.java @@ -6,7 +6,6 @@ import com.dfsek.terra.config.base.ConfigUtil; import com.dfsek.terra.config.base.WorldConfig; import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.generation.TerraChunkGenerator; -import com.dfsek.terra.util.PaperUtil; import org.bstats.bukkit.Metrics; import org.bukkit.Bukkit; import org.bukkit.command.PluginCommand; @@ -16,6 +15,7 @@ import org.jetbrains.annotations.Nullable; import org.polydev.gaea.GaeaPlugin; import org.polydev.gaea.generation.GaeaChunkGenerator; import org.polydev.gaea.lang.Language; +import org.polydev.gaea.util.PaperUtil; import java.util.HashMap; import java.util.Map; diff --git a/src/main/java/com/dfsek/terra/generation/TerraChunkGenerator.java b/src/main/java/com/dfsek/terra/generation/TerraChunkGenerator.java index 3cf6e68d3..8747335ab 100644 --- a/src/main/java/com/dfsek/terra/generation/TerraChunkGenerator.java +++ b/src/main/java/com/dfsek/terra/generation/TerraChunkGenerator.java @@ -44,6 +44,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Random; +import java.util.concurrent.CompletableFuture; import java.util.logging.Level; diff --git a/src/main/java/com/dfsek/terra/population/FloraPopulator.java b/src/main/java/com/dfsek/terra/population/FloraPopulator.java index ecfee13f8..b550e3c9b 100644 --- a/src/main/java/com/dfsek/terra/population/FloraPopulator.java +++ b/src/main/java/com/dfsek/terra/population/FloraPopulator.java @@ -25,6 +25,7 @@ import org.polydev.gaea.world.Flora; import java.util.List; import java.util.Random; +import java.util.concurrent.CompletableFuture; /** * Populates Flora and Trees @@ -62,22 +63,22 @@ public class FloraPopulator extends GaeaBlockPopulator { @SuppressWarnings("try") @Override - public void populate(@NotNull World world, @NotNull Random random, @NotNull Chunk chunk) { + public void populate(@NotNull World world, @NotNull Random random, @NotNull CompletableFuture futureChunk, int chunkX, int chunkZ) { try(ProfileFuture ignored = TerraProfiler.fromWorld(world).measure("FloraTime")) { TerraWorld tw = TerraWorld.getWorld(world); if(!tw.isSafe()) return; - int originX = chunk.getX() << 4; - int originZ = chunk.getZ() << 4; TerraBiomeGrid grid = tw.getGrid(); + int originX = chunkX << 4; + int originZ = chunkZ << 4; for(int x = 0; x < 16; x++) { for(int z = 0; z < 16; z++) { - UserDefinedBiome biome = (UserDefinedBiome) grid.getBiome((chunk.getX() << 4) + x, (chunk.getZ() << 4) + z, GenerationPhase.POPULATE); + UserDefinedBiome biome = (UserDefinedBiome) grid.getBiome((chunkX << 4) + x, (chunkZ << 4) + z, GenerationPhase.POPULATE); if((x & 1) == 0 && (z & 1) == 0) { int treeChance = biome.getDecorator().getTreeDensity(); if(random.nextInt(1000) < treeChance) { int xt = offset(random, x); int zt = offset(random, z); - if(doTrees(biome, tw, random, chunk, xt, zt)) continue; + if(doTrees(biome, tw, random, futureChunk.join(), xt, zt)) continue; } } if(biome.getDecorator().getFloraChance() <= 0) continue; @@ -89,7 +90,7 @@ public class FloraPopulator extends GaeaBlockPopulator { if(f.isFloraSimplex()) item = biome.getDecorator().getFlora().get(f.getFloraNoise(), originX + x, originZ + z); else item = biome.getDecorator().getFlora().get(random); - for(Block highest : item.getValidSpawnsAt(chunk, x, z, c.getFloraHeights(item))) { + for(Block highest : item.getValidSpawnsAt(futureChunk.join(), x, z, c.getFloraHeights(item))) { if(random.nextInt(100) < biome.getDecorator().getFloraChance()) item.plant(highest.getLocation()); } diff --git a/src/main/java/com/dfsek/terra/population/SnowPopulator.java b/src/main/java/com/dfsek/terra/population/SnowPopulator.java index 700a71894..75763851f 100644 --- a/src/main/java/com/dfsek/terra/population/SnowPopulator.java +++ b/src/main/java/com/dfsek/terra/population/SnowPopulator.java @@ -20,6 +20,7 @@ import org.polydev.gaea.profiler.ProfileFuture; import java.util.HashSet; import java.util.Random; import java.util.Set; +import java.util.concurrent.CompletableFuture; public class SnowPopulator extends GaeaBlockPopulator { private static final Set blacklistSpawn = new HashSet<>(); @@ -46,10 +47,10 @@ public class SnowPopulator extends GaeaBlockPopulator { @SuppressWarnings("try") @Override - public void populate(@NotNull World world, @NotNull Random random, @NotNull Chunk chunk) { + public void populate(@NotNull World world, @NotNull Random random, @NotNull CompletableFuture futureChunk, int chunkX, int chunkZ) { try(ProfileFuture ignored = TerraProfiler.fromWorld(world).measure("SnowTime")) { - int origX = chunk.getX() << 4; - int origZ = chunk.getZ() << 4; + int origX = chunkX << 4; + int origZ = chunkZ << 4; TerraWorld w = TerraWorld.getWorld(world); if(!w.isSafe()) return; TerraBiomeGrid g = w.getGrid(); @@ -60,13 +61,13 @@ public class SnowPopulator extends GaeaBlockPopulator { int y; Block b = null; for(y = 254; y > 0; y--) { - b = chunk.getBlock(x, y, z); + b = futureChunk.join().getBlock(x, y, z); if(!b.getType().isAir()) break; } if(random.nextInt(100) >= biome.getSnow().getSnowChance(y)) continue; if(blacklistSpawn.contains(b.getType()) || b.isPassable()) continue; - chunk.getBlock(x, ++y, z).setBlockData(DataUtil.SNOW, biome.getSnow().doPhysics()); + futureChunk.join().getBlock(x, ++y, z).setBlockData(DataUtil.SNOW, biome.getSnow().doPhysics()); } } } diff --git a/src/main/java/com/dfsek/terra/util/PaperUtil.java b/src/main/java/com/dfsek/terra/util/PaperUtil.java deleted file mode 100644 index aa8ed3197..000000000 --- a/src/main/java/com/dfsek/terra/util/PaperUtil.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.dfsek.terra.util; - -import com.dfsek.terra.config.lang.LangUtil; -import io.papermc.lib.PaperLib; -import org.bukkit.Bukkit; -import org.bukkit.plugin.java.JavaPlugin; - -import java.util.logging.Level; - -import static io.papermc.lib.PaperLib.suggestPaper; - -public final class PaperUtil { - public static void checkPaper(JavaPlugin main) { - Bukkit.getScheduler().scheduleSyncDelayedTask(main, () -> { - if(!PaperLib.isPaper()) { - suggestPaper(main); - } - }, 100L); - } -}