This commit is contained in:
cyberpwn
2022-06-26 05:45:20 -04:00
parent 80dff702fc
commit ed89e7c845
24 changed files with 889 additions and 0 deletions

View File

@@ -0,0 +1,56 @@
package com.volmit.iris.platform.bukkit;
import art.arcane.amulet.MagicalSugar;
import art.arcane.amulet.logging.LogListener;
import com.volmit.iris.engine.EngineConfiguration;
import com.volmit.iris.engine.IrisEngine;
import com.volmit.iris.engine.object.NSKey;
import com.volmit.iris.engine.object.biome.NativeBiome;
import com.volmit.iris.engine.object.block.IrisBlock;
import com.volmit.iris.platform.IrisPlatform;
import com.volmit.iris.platform.PlatformDataTransformer;
import com.volmit.iris.platform.PlatformTransformer;
import com.volmit.iris.platform.bukkit.transformers.BukkitBiomeTransformer;
import com.volmit.iris.platform.bukkit.transformers.BukkitBlockDataTransformer;
import com.volmit.iris.platform.bukkit.transformers.BukkitNamespaceTransformer;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.block.Biome;
import org.bukkit.block.data.BlockData;
import org.bukkit.material.MaterialData;
import org.bukkit.plugin.java.JavaPlugin;
@Data
@EqualsAndHashCode(callSuper = false)
public class IrisBukkit extends JavaPlugin implements IrisPlatform<NamespacedKey, BlockData, Biome> {
private static IrisBukkit instance;
private PlatformTransformer<NamespacedKey, NSKey> namespaceTransformer;
private PlatformDataTransformer<BlockData, IrisBlock> blockDataTransformer;
private PlatformDataTransformer<Biome, NativeBiome> biomeTransformer;
public void onEnable()
{
instance = this;
namespaceTransformer = new BukkitNamespaceTransformer();
blockDataTransformer = new BukkitBlockDataTransformer();
biomeTransformer = new BukkitBiomeTransformer();
}
public void onDisable()
{
}
public static IrisBukkit getInstance()
{
return instance;
}
@Override
public String getPlatformName() {
return "Bukkit";
}
}

View File

@@ -0,0 +1,42 @@
package com.volmit.iris.platform.bukkit.transformers;
import com.volmit.iris.engine.object.NSKey;
import com.volmit.iris.engine.object.biome.NativeBiome;
import com.volmit.iris.platform.PlatformDataTransformer;
import com.volmit.iris.platform.PlatformTransformer;
import com.volmit.iris.platform.bukkit.IrisBukkit;
import org.bukkit.NamespacedKey;
import org.bukkit.WorldType;
import org.bukkit.block.Biome;
import java.util.Arrays;
import java.util.stream.Stream;
public class BukkitBiomeTransformer implements PlatformDataTransformer<Biome, NativeBiome> {
@Override
public Stream<Biome> getRegistry() {
return Arrays.stream(Biome.values()).parallel().filter((i) -> i != Biome.CUSTOM);
}
@Override
public NSKey getKey(Biome nativeType) {
return IrisBukkit.getInstance().getNamespaceTransformer().toIris(nativeType.getKey());
}
@Override
public String getTypeName() {
return "Block";
}
@Override
public NativeBiome toIris(Biome biome) {
PlatformTransformer<NamespacedKey, NSKey> transformer = IrisBukkit.getInstance().getNamespaceTransformer();
return new NativeBiome(transformer.toIris(biome.getKey()));
}
@Override
public Biome toNative(NativeBiome nativeBiome) {
PlatformTransformer<NamespacedKey, NSKey> transformer = IrisBukkit.getInstance().getNamespaceTransformer();
return Biome.values().stream().filter((i) -> transformer.toIris(i.getKey()).equals(nativeBiome.getKey())).findFirst().get();
}
}

View File

@@ -0,0 +1,73 @@
package com.volmit.iris.platform.bukkit.transformers;
import art.arcane.amulet.util.Platform;
import com.volmit.iris.engine.object.NSKey;
import com.volmit.iris.engine.object.block.IrisBlock;
import com.volmit.iris.platform.PlatformDataTransformer;
import com.volmit.iris.platform.PlatformTransformer;
import com.volmit.iris.platform.bukkit.IrisBukkit;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.block.Biome;
import org.bukkit.block.data.BlockData;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Stream;
public class BukkitBlockDataTransformer implements PlatformDataTransformer<BlockData, IrisBlock> {
@Override
public Stream<BlockData> getRegistry() {
return Arrays.stream(Material.values()).parallel().filter(Material::isBlock).map(Material::createBlockData);
}
@Override
public NSKey getKey(BlockData nativeType) {
return IrisBukkit.getInstance().getNamespaceTransformer().toIris(nativeType.getMaterial().getKey());
}
@Override
public String getTypeName() {
return "Biome";
}
@Override
public IrisBlock toIris(BlockData blockData) {
PlatformTransformer<NamespacedKey, NSKey> transformer = IrisBukkit.getInstance().getNamespaceTransformer();
String s = blockData.getAsString(true);
if(s.contains("["))
{
Map<String, String> properties = new HashMap<>();
String[] props = new String[]{s.split("\\Q[\\E")[1].split("\\Q]\\E")[0]};
String[] p;
if(props[0].contains(","))
{
for(String i : props[0].split("\\Q,\\E"))
{
p = i.split("\\Q=\\E");
properties.put(p[0], p[1]);
}
}
else {
p = props[0].split("\\Q=\\E");
properties.put(p[0], p[1]);
}
return new IrisBlock(transformer.toIris(blockData.getMaterial().getKey()), properties);
}
else {
return new IrisBlock(transformer.toIris(blockData.getMaterial().getKey()));
}
}
@Override
public BlockData toNative(IrisBlock irisBlock) {
return Bukkit.createBlockData(irisBlock.toString());
}
}

View File

@@ -0,0 +1,17 @@
package com.volmit.iris.platform.bukkit.transformers;
import com.volmit.iris.engine.object.NSKey;
import com.volmit.iris.platform.PlatformTransformer;
import org.bukkit.NamespacedKey;
public class BukkitNamespaceTransformer implements PlatformTransformer<NamespacedKey, NSKey> {
@Override
public NSKey toIris(NamespacedKey namespacedKey) {
return new NSKey(namespacedKey.toString());
}
@Override
public NamespacedKey toNative(NSKey nsKey) {
return new NamespacedKey(nsKey.getNamespace(), nsKey.getKey());
}
}