NO longer generate the class dynamicly, just 2 different classes for 2 supported versions will be enough
This commit is contained in:
@@ -1,49 +0,0 @@
|
||||
package com.cnaude.chairs.vehiclearrow;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Vehicle;
|
||||
|
||||
import javassist.CannotCompileException;
|
||||
import javassist.ClassClassPath;
|
||||
import javassist.ClassPool;
|
||||
import javassist.CtClass;
|
||||
import javassist.CtNewConstructor;
|
||||
import javassist.CtNewMethod;
|
||||
import javassist.NotFoundException;
|
||||
|
||||
public class GenVehicleArrowClass {
|
||||
|
||||
public Class<?> genAndLoadClass(String arrowclass, Class<?> entityarrow, Class<?> craftserver) throws IOException, ClassNotFoundException, NotFoundException, CannotCompileException
|
||||
{
|
||||
ClassPool pool = ClassPool.getDefault();
|
||||
pool.insertClassPath
|
||||
(
|
||||
new ClassClassPath(Bukkit.class)
|
||||
);
|
||||
CtClass vehiclearrow = pool.makeClass("com.cnaude.chairs.VehicleArrow");
|
||||
vehiclearrow.setSuperclass(pool.getCtClass(arrowclass));
|
||||
vehiclearrow.setInterfaces
|
||||
(
|
||||
new CtClass[]
|
||||
{
|
||||
pool.get(Vehicle.class.getName())
|
||||
}
|
||||
);
|
||||
String counstructorsource = "public VehicleArrow("+craftserver.getName()+" server, "+entityarrow.getName()+" entity)\n{\nsuper(server, entity);\n}";
|
||||
vehiclearrow.addConstructor
|
||||
(
|
||||
CtNewConstructor.make(counstructorsource, vehiclearrow)
|
||||
);
|
||||
String removemethodsource = "public void remove()\n{\nif (this.getPassenger() == null)\n{\nsuper.remove();\n}\n}";
|
||||
vehiclearrow.addMethod
|
||||
(
|
||||
CtNewMethod.make(removemethodsource, vehiclearrow)
|
||||
);
|
||||
return vehiclearrow.toClass();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
25
src/com/cnaude/chairs/vehiclearrow/GetVehicleArrowClass.java
Normal file
25
src/com/cnaude/chairs/vehiclearrow/GetVehicleArrowClass.java
Normal file
@@ -0,0 +1,25 @@
|
||||
package com.cnaude.chairs.vehiclearrow;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
public class GetVehicleArrowClass {
|
||||
|
||||
private String pkgname = this.getClass().getPackage().getName();
|
||||
private String vehiclearrowclassname = "VehicleArrow";
|
||||
public Class<?> getVehicleArrowClass(String arrowclass, Class<?> entityarrow, Class<?> craftserver) throws Exception
|
||||
{
|
||||
String packageName = Bukkit.getServer().getClass().getPackage().getName();
|
||||
String nmspackageversion = packageName.substring(packageName.lastIndexOf('.') + 1);
|
||||
if (nmspackageversion.equals("v1_7_R1"))
|
||||
{
|
||||
return Class.forName(pkgname+"."+"nms172"+"."+vehiclearrowclassname);
|
||||
} else if (nmspackageversion.equals("v1_6_R3"))
|
||||
{
|
||||
return Class.forName(pkgname+"."+"nms164"+"."+vehiclearrowclassname);
|
||||
}
|
||||
throw new Exception("ChiarsReloaded is not compatible with your server version");
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,5 @@
|
||||
package com.cnaude.chairs.vehiclearrow.nms164;
|
||||
|
||||
public class VehicleArrow {
|
||||
|
||||
}
|
25
src/com/cnaude/chairs/vehiclearrow/nms172/VehicleArrow.java
Normal file
25
src/com/cnaude/chairs/vehiclearrow/nms172/VehicleArrow.java
Normal file
@@ -0,0 +1,25 @@
|
||||
package com.cnaude.chairs.vehiclearrow.nms172;
|
||||
|
||||
import net.minecraft.server.v1_7_R1.EntityArrow;
|
||||
|
||||
import org.bukkit.craftbukkit.v1_7_R1.CraftServer;
|
||||
import org.bukkit.craftbukkit.v1_7_R1.entity.CraftArrow;
|
||||
import org.bukkit.entity.Vehicle;
|
||||
|
||||
public class VehicleArrow extends CraftArrow implements Vehicle {
|
||||
|
||||
public VehicleArrow(CraftServer server, EntityArrow entity)
|
||||
{
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove()
|
||||
{
|
||||
if (this.getPassenger() == null)
|
||||
{
|
||||
super.remove();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user