好吧,我(尝试)制作一个对象系统,我可以在其中加载类或文件夹中的 .java 文件,可能称为“插件”,它们将添加到名为“base”的数组列表中,base 将控制对象和循环它们,别担心,我有所有的例子。
但我先解释一下它是如何工作的。
这些插件将从 (BaseHack) 扩展的基类,所有扩展 BaseHack 的对象都将添加到数组列表中。我编写了自己的类并将它们手动添加到数组列表中,但我在想是否人们可以在那里创建自己的类并将它们加载到插件目录中而不是我手动执行。
代码示例: 扩展对象基础的东西:
package crow.ingame.hacks;
import java.awt.AWTException;
import java.awt.MouseInfo;
import java.awt.Robot;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.List;
import net.minecraft.src.Entity;
import net.minecraft.src.EntityLiving;
import net.minecraft.src.EntityPlayer;
import net.minecraft.src.MouseHelper;
import net.minecraft.src.Packet19EntityAction;
import org.lwjgl.input.Keyboard;
import crow.controller.BaseHack;
import crow.controller.BaseHackController;
import crow.main.Crow;
public class BunnyHop extends BaseHack{
public float clickDelay = 0;
public BunnyHop()
{
super(true,false,false,"BunnyHop", "-hop", "Auto Hops for pvping", 0xFF75ffaf , Keyboard.KEY_J,Keyboard.KEY_J);
}
@Override
public void onGameTick()
{
if(enabled)
{
if(Crow.mc.inGameHasFocus && Crow.mc.theWorld != null && !(BaseHackController.getBaseByCMD("-nofall").enabled))
{
Robot robot;
try {
robot = new Robot();
robot.keyPress(KeyEvent.VK_SPACE);
} catch (AWTException e) {
e.printStackTrace();
}
}
}
}
@Override
public void onDisable()
{
Robot robot;
try {
robot = new Robot();
robot.keyPress(KeyEvent.VK_SPACE);
robot.keyRelease(KeyEvent.VK_SPACE);
} catch (AWTException e) {
e.printStackTrace();
}
}
}
我如何添加黑客:
public static void AddHacks()
{
//Hacks
Fly fly = new Fly();
Sprint sprint = new Sprint();
Aimbot aimbot = new Aimbot();
KillAura killaura = new KillAura();
AutoBlock autoblock = new AutoBlock();
NoFall nofall = new NoFall();
Freecam freecam = new Freecam();
Xray xray = new Xray();
Step step = new Step();
FullBright fullbright = new FullBright();
BunnyHop hop = new BunnyHop();
base.add(hop);
base.add(fullbright);
base.add(step);
base.add(xray);
base.add(freecam);
base.add(nofall);
base.add(autoblock);
base.add(aimbot);
base.add(sprint);
base.add(killaura);
base.add(fly);
//CMD
Friends friends = new Friends();
CMDController cmdcontroller = new CMDController();
crow.ingame.cmd.Settings settings = new crow.ingame.cmd.Settings();
base.add(settings);
base.add(cmdcontroller);
base.add(friends);
}
有人可以告诉我如何加载像我的 bunny hop 这样的类,然后将它添加到数组列表中吗? 谢谢!<3
最佳答案
如果我对您的问题的理解正确,您希望创建各种类的实例而不将类名硬编码到您的源代码中。 This can be done via reflection如下:
String className = "crow.ingame.hacks.BunnyHop";
try {
Class myClass = Class.forName(className);
BaseHack object = (BaseHack)myClass.getConstructor().newInstance();
base.add(object);
} catch (Exception e) {
e.printStackTrace();
//TODO - Proper Exception handling
}
只要包含您尝试加载的类的 .class
文件的文件夹在您的类路径中,这就会起作用;如果只有 .java
文件放在文件夹中,这将不起作用。换句话说,确保将 plunins
文件夹添加到类路径中。
关于java - 加载预先编写的对象而不是将它们全部写入[插件系统],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13043955/