This commit is contained in:
cyberpwn committed 2022-09-06 23:26:24 -04:00
1 parent 4f53b058fa
commit 5d6224db08
18 files changed
+322 -63

No files matched your search

@@ -1,6 +1,7 @@
package com.volmit.iris.platform.bukkit;
import art.arcane.amulet.io.IO;
import art.arcane.amulet.logging.LogListener;
import com.volmit.iris.engine.EngineConfiguration;
import com.volmit.iris.platform.IrisPlatform;
import com.volmit.iris.platform.PlatformBiome;
@@ -14,10 +15,13 @@ import com.volmit.iris.platform.bukkit.wrapper.BukkitWorld;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.Warning;
import org.bukkit.World;
import org.bukkit.WorldCreator;
import org.bukkit.block.Biome;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
import org.bukkit.generator.ChunkGenerator;
import org.bukkit.plugin.java.JavaPlugin;
@@ -29,11 +33,16 @@ import java.util.Arrays;
import java.util.UUID;
import java.util.stream.Stream;
public class IrisBukkit extends JavaPlugin implements IrisPlatform {
public class IrisBukkit extends JavaPlugin implements IrisPlatform, LogListener {
private static final String TAG = ChatColor.DARK_GRAY + "[" + ChatColor.GREEN + "Iris" + ChatColor.DARK_GREEN + "/";
private static final String TAG_STRIPPED = ChatColor.stripColor(TAG);
private static IrisBukkit instance;
private ConsoleCommandSender consoleSender;
public void onEnable() {
instance = this;
consoleSender = Bukkit.getConsoleSender();
LogListener.listener.set(this);
getServer().getScheduler().scheduleSyncDelayedTask(this, () -> {
World world = Bukkit.createWorld(new WorldCreator("iristests/" + UUID.randomUUID()).generator(new IrisBukkitChunkGenerator(this, EngineConfiguration.builder()
@@ -84,6 +93,36 @@ public class IrisBukkit extends JavaPlugin implements IrisPlatform {
return instance;
}
private void messageConsole(String color, String key, Object o) {
try {
consoleSender.sendMessage(TAG + key + ChatColor.DARK_GRAY + "]: " + color + o.toString());
}
catch(Throwable e) {
System.out.println(TAG_STRIPPED + key + "]: " + o.toString());
}
}
@Override
public void logError(String k, Object o) {
messageConsole(ChatColor.RED.toString(), k, o);
}
@Override
public void logInfo(String k, Object o) {
messageConsole(ChatColor.WHITE.toString(), k, o);
}
@Override
public void logWarning(String k, Object o) {
messageConsole(ChatColor.YELLOW.toString(), k, o);
}
@Override
public void logDebug(String k, Object o) {
messageConsole(ChatColor.GRAY.toString(), k, o);
}
@Override
public String getPlatformName() {
return "Bukkit";
@@ -155,4 +194,24 @@ public class IrisBukkit extends JavaPlugin implements IrisPlatform {
.timings(true)
.build());
}
@Override
public void i(String s, Object o) {
logInfo(s, o);
}
@Override
public void f(String s, Object o) {
logError(s, o);
}
@Override
public void w(String s, Object o) {
logWarning(s, o);
}
@Override
public void d(String s, Object o) {
logDebug(s, o);
}
}
@@ -10,11 +10,15 @@ import com.volmit.iris.engine.feature.FeatureTarget;
import com.volmit.iris.engine.pipeline.PipedHunkStack;
import com.volmit.iris.platform.IrisPlatform;
import com.volmit.iris.platform.block.PlatformBlock;
import com.volmit.iris.platform.bukkit.util.StaticBiomeProvider;
import com.volmit.iris.platform.bukkit.wrapper.BukkitWorld;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.block.Biome;
import org.bukkit.generator.BiomeProvider;
import org.bukkit.generator.ChunkGenerator;
import com.volmit.iris.platform.bukkit.util.ChunkDataHunkView;
import org.bukkit.generator.WorldInfo;
import java.io.Closeable;
import java.io.IOException;
@@ -31,13 +35,15 @@ public class IrisBukkitChunkGenerator extends ChunkGenerator implements Closeabl
private final AtomicInteger perSecond;
private final PrecisionStopwatch p = PrecisionStopwatch.start();
private final Average a = new Average(128);
private final StaticBiomeProvider staticBiomeProvider;
public IrisBukkitChunkGenerator(IrisPlatform platform, EngineConfiguration configuration) {
this.perSecond = new AtomicInteger(0);
this.platform = platform;
this.configuration = configuration;
engine = new AtomicReference<>();
engineLock = new ReentrantLock();
this.staticBiomeProvider = new StaticBiomeProvider(Biome.PLAINS);
this.engine = new AtomicReference<>();
this.engineLock = new ReentrantLock();
}
@Override
@@ -94,8 +100,48 @@ public class IrisBukkitChunkGenerator extends ChunkGenerator implements Closeabl
return false;
}
@Override
public BiomeProvider getDefaultBiomeProvider(WorldInfo worldInfo) {
return staticBiomeProvider;
}
@Override
public void close() throws IOException {
engine.get().close();
}
@Override
public boolean shouldGenerateNoise() {
return super.shouldGenerateNoise();
}
@Override
public boolean shouldGenerateSurface() {
return super.shouldGenerateSurface();
}
@Override
public boolean shouldGenerateBedrock() {
return super.shouldGenerateBedrock();
}
@Override
public boolean shouldGenerateCaves() {
return super.shouldGenerateCaves();
}
@Override
public boolean shouldGenerateDecorations() {
return super.shouldGenerateDecorations();
}
@Override
public boolean shouldGenerateMobs() {
return super.shouldGenerateMobs();
}
@Override
public boolean shouldGenerateStructures() {
return super.shouldGenerateStructures();
}
}
@@ -0,0 +1,27 @@
package com.volmit.iris.platform.bukkit.util;
import org.bukkit.block.Biome;
import org.bukkit.generator.BiomeProvider;
import org.bukkit.generator.WorldInfo;
import java.util.Arrays;
import java.util.List;
public class StaticBiomeProvider extends BiomeProvider {
private static final List<Biome> ALL_BIOMES = Arrays.stream(Biome.values()).without((i) -> i.equals(Biome.CUSTOM)).toList().unmodifiable();
private final Biome defaultBiome;
public StaticBiomeProvider(Biome defaultBiome) {
this.defaultBiome = defaultBiome;
}
@Override
public Biome getBiome(WorldInfo worldInfo, int x, int y, int z) {
return defaultBiome;
}
@Override
public List<Biome> getBiomes(WorldInfo worldInfo) {
return ALL_BIOMES;
}
}