3

さて、おそらく「プラグイン」と呼ばれるフォルダーからクラスまたは.javaファイルをロードできるオブジェクトシステムを作成しようとしています。それらは「ベース」と呼ばれる配列リストに追加され、ベースはオブジェクトを制御してループします。心配しないでください。すべての例があります。

しかし、それが最初にどのように機能するかをうまく説明できません。

これらのプラグインが拡張する基本クラス (BaseHack)、BaseHack を拡張するすべてのオブジェクトが追加される arraylist があります。私は独自のクラスを作成し、手動で配列リストに追加しますが、手動で行う代わりに、独自のクラスを作成してプラグインディレクトリにロードできるかどうかを考えていました。

コード例: オブジェクトベースを拡張するもの:

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);
}

バニーホップのようなクラスをロードして、それをアレイリストに追加する方法を教えてもらえますか? ありがとう!<3

4

1 に答える 1

0

私があなたの問題を正しく理解していれば、クラス名をソースにハードコーディングせずに、さまざまなクラスのインスタンスを作成したいと思うでしょう。 これは、次のようにリフレクションを介して行うことができます。

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フォルダをクラスパスに追加してください。

于 2012-10-24T07:23:04.240 に答える