add repository layout, updateAdjacentComparators api
This commit is contained in:
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
*.iml
|
||||
.idea/
|
||||
out/
|
||||
target/
|
||||
49
Nms-v1_12_R1/pom.xml
Normal file
49
Nms-v1_12_R1/pom.xml
Normal file
@@ -0,0 +1,49 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>com.redstoner.nms</groupId>
|
||||
<artifactId>Nms-v1_12_R1</artifactId>
|
||||
<version>0.1</version>
|
||||
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>1.8</maven.compiler.source>
|
||||
<maven.compiler.target>1.8</maven.compiler.target>
|
||||
</properties>
|
||||
|
||||
<build>
|
||||
<sourceDirectory>src</sourceDirectory>
|
||||
<testSourceDirectory>test</testSourceDirectory>
|
||||
</build>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>spigot-repo</id>
|
||||
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<!--Spigot API and NMS-->
|
||||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot</artifactId>
|
||||
<version>1.12.2-R0.1-SNAPSHOT</version>
|
||||
<scope>system</scope>
|
||||
<systemPath>D:/Resources/Java/minecraft/spigot-1.12.2.jar</systemPath>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.redstoner.nms</groupId>
|
||||
<artifactId>NmsApi</artifactId>
|
||||
<version>0.1</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
||||
</project>
|
||||
29
Nms-v1_12_R1/src/com/redstoner/nms/v1_12_R1/NmsDriver.java
Normal file
29
Nms-v1_12_R1/src/com/redstoner/nms/v1_12_R1/NmsDriver.java
Normal file
@@ -0,0 +1,29 @@
|
||||
package com.redstoner.nms.v1_12_R1;
|
||||
|
||||
import com.redstoner.nms.INmsDriver;
|
||||
import net.minecraft.server.v1_12_R1.BlockPosition;
|
||||
import net.minecraft.server.v1_12_R1.IBlockData;
|
||||
import net.minecraft.server.v1_12_R1.WorldServer;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.craftbukkit.v1_12_R1.CraftWorld;
|
||||
|
||||
final class NmsDriver implements INmsDriver
|
||||
{
|
||||
|
||||
@Override
|
||||
public void updateAdjacentComparators(Block block)
|
||||
{
|
||||
updateAdjacentComparators(block.getWorld(), block.getX(), block.getY(), block.getZ());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateAdjacentComparators(World world, int blockX, int blockY, int blockZ)
|
||||
{
|
||||
WorldServer handle = ((CraftWorld) world).getHandle();
|
||||
BlockPosition bp = new BlockPosition(blockX, blockY, blockZ);
|
||||
IBlockData type = handle.c(bp);
|
||||
handle.updateAdjacentComparators(bp, type.getBlock());
|
||||
}
|
||||
|
||||
}
|
||||
49
pom.xml
Normal file
49
pom.xml
Normal file
@@ -0,0 +1,49 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>com.redstoner.nms</groupId>
|
||||
<artifactId>NmsApi</artifactId>
|
||||
<version>0.1</version>
|
||||
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>1.8</maven.compiler.source>
|
||||
<maven.compiler.target>1.8</maven.compiler.target>
|
||||
</properties>
|
||||
|
||||
<build>
|
||||
<sourceDirectory>src</sourceDirectory>
|
||||
<testSourceDirectory>test</testSourceDirectory>
|
||||
</build>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>spigot-repo</id>
|
||||
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<!--Bukkit API-->
|
||||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot-api</artifactId>
|
||||
<version>1.8.8-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.bukkit</groupId>
|
||||
<artifactId>bukkit</artifactId>
|
||||
<version>1.8.6-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
||||
</project>
|
||||
26
src/com/redstoner/nms/INmsDriver.java
Normal file
26
src/com/redstoner/nms/INmsDriver.java
Normal file
@@ -0,0 +1,26 @@
|
||||
package com.redstoner.nms;
|
||||
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
|
||||
public interface INmsDriver
|
||||
{
|
||||
|
||||
/**
|
||||
* Update comparators adjacent to the given block
|
||||
*
|
||||
* @param block the block
|
||||
*/
|
||||
void updateAdjacentComparators(Block block);
|
||||
|
||||
/**
|
||||
* Update comparators adjacent to the given coordinates
|
||||
*
|
||||
* @param world the world
|
||||
* @param blockX x coord
|
||||
* @param blockY y coord
|
||||
* @param blockZ z coord
|
||||
*/
|
||||
void updateAdjacentComparators(World world, int blockX, int blockY, int blockZ);
|
||||
|
||||
}
|
||||
55
src/com/redstoner/nms/NmsFactory.java
Normal file
55
src/com/redstoner/nms/NmsFactory.java
Normal file
@@ -0,0 +1,55 @@
|
||||
package com.redstoner.nms;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
|
||||
public class NmsFactory
|
||||
{
|
||||
private static final String NMS_DRIVER_CLASS = "com.redstoner.nms.%s.NmsDriver";
|
||||
private static final INmsDriver driver;
|
||||
private static final String nmsPackage;
|
||||
|
||||
private static void logError(String description, Throwable error) {
|
||||
Bukkit.getLogger().severe("[Nms API] " + description);
|
||||
error.printStackTrace();
|
||||
}
|
||||
|
||||
static {
|
||||
/*
|
||||
Static initialization should never throw an error
|
||||
This would cause the error to propagate to the code that first uses the driver,
|
||||
causing arbitrary parts of the server code to fail and other's to get null.
|
||||
If an exception occurs during initialization, this is instead printed to the console.
|
||||
*/
|
||||
// get the nms package from the server
|
||||
String[] split = Bukkit.getServer().getClass().getPackage().getName().split("\\.");
|
||||
nmsPackage = split[split.length - 1];
|
||||
|
||||
// instantiate the driver
|
||||
INmsDriver localDriver;
|
||||
try {
|
||||
String driverClassName = String.format(NMS_DRIVER_CLASS, nmsPackage);
|
||||
Class<?> driverClass = Class.forName(driverClassName);
|
||||
// get no-arg constructor explicitly, because direct newInstance() requires the driver to be public
|
||||
Constructor<?> constructor = driverClass.getConstructor();
|
||||
constructor.setAccessible(true);
|
||||
localDriver = (INmsDriver) constructor.newInstance();
|
||||
} catch (Exception ex) {
|
||||
// could use a mock implementation here to avoid NPE
|
||||
localDriver = null;
|
||||
logError("reflectively instantiating the Nms Driver for version " + nmsPackage, ex);
|
||||
}
|
||||
|
||||
driver = localDriver;
|
||||
}
|
||||
|
||||
public static INmsDriver getDriver() {
|
||||
return driver;
|
||||
}
|
||||
|
||||
public static String getNmsPackage() {
|
||||
return nmsPackage;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user