mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-12-29 12:09:07 +00:00
Move NMS out of legacy
This commit is contained in:
70
src/main/java/com/volmit/iris/nms/INMS.java
Normal file
70
src/main/java/com/volmit/iris/nms/INMS.java
Normal file
@@ -0,0 +1,70 @@
|
||||
package com.volmit.iris.nms;
|
||||
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.IrisSettings;
|
||||
import com.volmit.iris.nms.v1X.NMSBinding1X;
|
||||
import com.volmit.iris.util.KMap;
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
public class INMS
|
||||
{
|
||||
//@builder
|
||||
private static final KMap<String, Class<? extends INMSBinding>> bindings = new KMap<String, Class<? extends INMSBinding>>()
|
||||
;//.qput("v1_16_R2", NMSBinding16_2.class);
|
||||
//@done
|
||||
private static final INMSBinding binding = bind();
|
||||
|
||||
public static INMSBinding get()
|
||||
{
|
||||
return binding;
|
||||
}
|
||||
|
||||
private static final String getNMSTag()
|
||||
{
|
||||
if(IrisSettings.get().disableNMS)
|
||||
{
|
||||
return "BUKKIT";
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
return Bukkit.getServer().getClass().getCanonicalName().split("\\Q.\\E")[3];
|
||||
}
|
||||
|
||||
catch(Throwable e)
|
||||
{
|
||||
Iris.error("Failed to determine server nms version!");
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return "BUKKIT";
|
||||
}
|
||||
|
||||
private static final INMSBinding bind()
|
||||
{
|
||||
String code = getNMSTag();
|
||||
Iris.info("Locating NMS Binding for " + code);
|
||||
|
||||
if(bindings.containsKey(code))
|
||||
{
|
||||
try
|
||||
{
|
||||
INMSBinding b = bindings.get(code).getConstructor().newInstance();
|
||||
Iris.info("Craftbukkit " + code + " <-> " + b.getClass().getSimpleName() + " Successfully Bound");
|
||||
|
||||
return b;
|
||||
}
|
||||
|
||||
catch(Throwable e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
Iris.info("Craftbukkit " + code + " <-> " + NMSBinding1X.class.getSimpleName() + " Successfully Bound");
|
||||
Iris.warn("Note: Some features of Iris may not work the same since you are on an unsupported version of Minecraft.");
|
||||
Iris.warn("Note: If this is a new version, expect an update soon.");
|
||||
|
||||
return new NMSBinding1X();
|
||||
}
|
||||
}
|
||||
19
src/main/java/com/volmit/iris/nms/INMSBinding.java
Normal file
19
src/main/java/com/volmit/iris/nms/INMSBinding.java
Normal file
@@ -0,0 +1,19 @@
|
||||
package com.volmit.iris.nms;
|
||||
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.WorldCreator;
|
||||
|
||||
public interface INMSBinding
|
||||
{
|
||||
public INMSCreator getCreator();
|
||||
|
||||
default World createWorld(WorldCreator creator)
|
||||
{
|
||||
return getCreator().createWorld(creator);
|
||||
}
|
||||
|
||||
default World createWorld(WorldCreator creator, boolean loadSpawn)
|
||||
{
|
||||
return getCreator().createWorld(creator, loadSpawn);
|
||||
}
|
||||
}
|
||||
14
src/main/java/com/volmit/iris/nms/INMSCreator.java
Normal file
14
src/main/java/com/volmit/iris/nms/INMSCreator.java
Normal file
@@ -0,0 +1,14 @@
|
||||
package com.volmit.iris.nms;
|
||||
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.WorldCreator;
|
||||
|
||||
public interface INMSCreator
|
||||
{
|
||||
default World createWorld(WorldCreator creator)
|
||||
{
|
||||
return createWorld(creator, false);
|
||||
}
|
||||
|
||||
public World createWorld(WorldCreator creator, boolean loadSpawn);
|
||||
}
|
||||
16
src/main/java/com/volmit/iris/nms/v1X/NMSBinding1X.java
Normal file
16
src/main/java/com/volmit/iris/nms/v1X/NMSBinding1X.java
Normal file
@@ -0,0 +1,16 @@
|
||||
package com.volmit.iris.nms.v1X;
|
||||
|
||||
import com.volmit.iris.generator.legacy.atomics.AtomicCache;
|
||||
import com.volmit.iris.nms.INMSBinding;
|
||||
import com.volmit.iris.nms.INMSCreator;
|
||||
|
||||
public class NMSBinding1X implements INMSBinding
|
||||
{
|
||||
private final AtomicCache<INMSCreator> creator = new AtomicCache<>();
|
||||
|
||||
@Override
|
||||
public INMSCreator getCreator()
|
||||
{
|
||||
return creator.aquire(NMSCreator1X::new);
|
||||
}
|
||||
}
|
||||
14
src/main/java/com/volmit/iris/nms/v1X/NMSCreator1X.java
Normal file
14
src/main/java/com/volmit/iris/nms/v1X/NMSCreator1X.java
Normal file
@@ -0,0 +1,14 @@
|
||||
package com.volmit.iris.nms.v1X;
|
||||
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.WorldCreator;
|
||||
|
||||
import com.volmit.iris.nms.INMSCreator;
|
||||
|
||||
class NMSCreator1X implements INMSCreator
|
||||
{
|
||||
public World createWorld(WorldCreator creator, boolean loadSpawn)
|
||||
{
|
||||
return creator.createWorld();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user