mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2025-07-02 16:05:29 +00:00
Added NMSAddon override for BukkitAddon
This commit is contained in:
parent
afd2c81b19
commit
8df3a4dd02
@ -20,6 +20,9 @@ package com.dfsek.terra.bukkit;
|
|||||||
import com.dfsek.tectonic.api.TypeRegistry;
|
import com.dfsek.tectonic.api.TypeRegistry;
|
||||||
import com.dfsek.tectonic.api.depth.DepthTracker;
|
import com.dfsek.tectonic.api.depth.DepthTracker;
|
||||||
import com.dfsek.tectonic.api.exception.LoadException;
|
import com.dfsek.tectonic.api.exception.LoadException;
|
||||||
|
|
||||||
|
import com.dfsek.terra.bukkit.nms.Initializer;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@ -96,7 +99,7 @@ public class PlatformImpl extends AbstractPlatform {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Iterable<BaseAddon> platformAddon() {
|
protected Iterable<BaseAddon> platformAddon() {
|
||||||
return List.of(new BukkitAddon(this));
|
return List.of(Initializer.nmsAddon(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package com.dfsek.terra.bukkit.nms;
|
package com.dfsek.terra.bukkit.nms;
|
||||||
|
|
||||||
|
import com.dfsek.terra.bukkit.BukkitAddon;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@ -13,20 +15,11 @@ public interface Initializer {
|
|||||||
|
|
||||||
static boolean init(PlatformImpl platform) {
|
static boolean init(PlatformImpl platform) {
|
||||||
Logger logger = LoggerFactory.getLogger(Initializer.class);
|
Logger logger = LoggerFactory.getLogger(Initializer.class);
|
||||||
try {
|
|
||||||
String packageVersion = NMS;
|
|
||||||
if(NMS.equals("v1_21_3")) {
|
|
||||||
packageVersion = "v1_21"; // TODO: Refactor nms package to v1_21_3
|
|
||||||
}
|
|
||||||
|
|
||||||
Class<?> initializerClass = Class.forName(TERRA_PACKAGE + "." + packageVersion + ".NMSInitializer");
|
Initializer initializer = constructInitializer();
|
||||||
try {
|
if(initializer != null) {
|
||||||
Initializer initializer = (Initializer) initializerClass.getConstructor().newInstance();
|
initializer.initialize(platform);
|
||||||
initializer.initialize(platform);
|
} else {
|
||||||
} catch(ReflectiveOperationException e) {
|
|
||||||
throw new RuntimeException("Error initializing NMS bindings. Report this to Terra.", e);
|
|
||||||
}
|
|
||||||
} catch(ClassNotFoundException e) {
|
|
||||||
logger.error("NMS bindings for version {} do not exist. Support for this version is limited.", NMS);
|
logger.error("NMS bindings for version {} do not exist. Support for this version is limited.", NMS);
|
||||||
logger.error("This is usually due to running Terra on an unsupported Minecraft version.");
|
logger.error("This is usually due to running Terra on an unsupported Minecraft version.");
|
||||||
String bypassKey = "IKnowThereAreNoNMSBindingsFor" + NMS + "ButIWillProceedAnyway";
|
String bypassKey = "IKnowThereAreNoNMSBindingsFor" + NMS + "ButIWillProceedAnyway";
|
||||||
@ -49,8 +42,34 @@ public interface Initializer {
|
|||||||
logger.error("Since you enabled the \"{}\" flag, we won't disable Terra. But be warned.", bypassKey);
|
logger.error("Since you enabled the \"{}\" flag, we won't disable Terra. But be warned.", bypassKey);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static BukkitAddon nmsAddon(PlatformImpl platform) {
|
||||||
|
Initializer initializer = constructInitializer();
|
||||||
|
return initializer != null ? initializer.getNMSAddon(platform) : new BukkitAddon(platform);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Initializer constructInitializer() {
|
||||||
|
try {
|
||||||
|
String packageVersion = NMS;
|
||||||
|
if(NMS.equals("v1_21_3")) {
|
||||||
|
packageVersion = "v1_21"; // TODO: Refactor nms package to v1_21_3
|
||||||
|
}
|
||||||
|
|
||||||
|
Class<?> initializerClass = Class.forName(TERRA_PACKAGE + "." + packageVersion + ".NMSInitializer");
|
||||||
|
try {
|
||||||
|
return (Initializer) initializerClass.getConstructor().newInstance();
|
||||||
|
} catch(ReflectiveOperationException e) {
|
||||||
|
throw new RuntimeException("Error initializing NMS bindings. Report this to Terra.", e);
|
||||||
|
}
|
||||||
|
} catch(ClassNotFoundException e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void initialize(PlatformImpl plugin);
|
void initialize(PlatformImpl plugin);
|
||||||
|
|
||||||
|
BukkitAddon getNMSAddon(PlatformImpl plugin);
|
||||||
}
|
}
|
||||||
|
@ -10,8 +10,8 @@ import com.dfsek.terra.bukkit.nms.v1_21.config.VanillaBiomeProperties;
|
|||||||
|
|
||||||
public class NMSAddon extends BukkitAddon {
|
public class NMSAddon extends BukkitAddon {
|
||||||
|
|
||||||
public NMSAddon(PlatformImpl terraBukkitPlugin) {
|
public NMSAddon(PlatformImpl platform) {
|
||||||
super(terraBukkitPlugin);
|
super(platform);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package com.dfsek.terra.bukkit.nms.v1_21;
|
package com.dfsek.terra.bukkit.nms.v1_21;
|
||||||
|
|
||||||
|
import com.dfsek.terra.bukkit.BukkitAddon;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
import com.dfsek.terra.bukkit.PlatformImpl;
|
import com.dfsek.terra.bukkit.PlatformImpl;
|
||||||
@ -12,4 +14,9 @@ public class NMSInitializer implements Initializer {
|
|||||||
AwfulBukkitHacks.registerBiomes(platform.getRawConfigRegistry());
|
AwfulBukkitHacks.registerBiomes(platform.getRawConfigRegistry());
|
||||||
Bukkit.getPluginManager().registerEvents(new NMSInjectListener(), platform.getPlugin());
|
Bukkit.getPluginManager().registerEvents(new NMSInjectListener(), platform.getPlugin());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BukkitAddon getNMSAddon(PlatformImpl plugin) {
|
||||||
|
return new NMSAddon(plugin);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user