mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-04-06 15:56:27 +00:00
Initial
This commit is contained in:
@@ -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";
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user