JDA: Wie kann man einen Command aus einer anderen Klasse in die Main-Klasse einprogrammieren?

Hallo Leute,

ich möchte mit Java und der JDA einen Discord-Bot programmieren.

Nur weiß ich nicht, wie man einen Command aus einer anderen Klasse in die Main-Klasse einprogrammiert.

Code der Main-Klasse:

package de.AkenoSan.MeineTochter;

import de.AkenoSan.MeineTochter.Commands;
import javax.security.auth.login.LoginException;
import net.dv8tion.jda.api.OnlineStatus;
import net.dv8tion.jda.api.entities.Activity;
import net.dv8tion.jda.api.sharding.DefaultShardManagerBuilder;

public class Main {
  public static void main(String[] args) throws LoginException, IllegalArgumentException {
    DefaultShardManagerBuilder builder = new DefaultShardManagerBuilder();
    builder.setToken("blablabla halt der Token");
    builder.setActivity(Activity.playing("NICHT FORTNITE"));
    builder.setStatus(OnlineStatus.ONLINE);
    builder.build();
  }
}

Code meiner Klasse, wo die Commands sind:

package de.AkenoSan.MeineTochter;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Commands {
  public void say() {
    new Thread(() -> {
      String line = "";
      BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

      try {
        while ((line = reader.readLine()) != null) {
          if (line.contains("#")) {
            if (line.startsWith("#")) {
              if (line.endsWith("say")) {
              }
            }
          }
        }
      }
      catch(IOException e) {
        e.printStackTrace();
      }
    }).start();
  }
}

Ich habe schon meine Commands-Klasse in die Main importiert, aber was muss ich jetzt machen?

Computer, Java, Bot, discord
1 Antwort
Minecraft bester Economy Manager Plugin?

Hey Community,

Ich bin gerade dabei, einen Survival Server zu machen und habe als Kit Plugin bisher Ultimate Kits benutzt (Hier).

Bei dem Plugin kann man unter anderem auch Blöcken Kits zuweisen, was Ich super cool finde, weil man so eine Art "Ausstellung" machen kann.

Ich habe auch Godkits, welche 5 Millionen kosten.

Als Ich dann testen wollte, ob man die Kits von den Blöcken kaufen kann, ist mir aufgefallen, das man zwar das Kit kriegt, das Geld aber nicht abgezogen wird.

Natürlich kann man einfach den Command "/eco take * 5000000" zu dem Kit hinzufügen, aber das Problem dabei ist, das dieser dann zwar beim Kauf des Kits ausgeführt wird, aber was ist, wenn der Spieler nicht genug Geld hat?

Dann bekommt der Spieler das Kit und es wird die Nachricht angezeigt, das der Command gefailed ist.

Eigentlich müsste man das ganze dann halt so machen, dass der Command zuerst ausgeführt wird, und wenn er nicht ausgeführt werden kann die ganze Aktion danach geblockt wird.

Bestimmt kann man so was programmieren, aber das kann Ich leider nicht 😒.

Deshalb habe Ich auf der Wiki Seite des Plugins vorbeigeschaut (Hier), und bei den Dependencies schreiben sie, dass man Vault (Habe Ich), HolographicDisplays (Habe Ich) und einen "Economy Manager" braucht.

Da Ich keine Ahnung habe was das ist und da es scheinbar sehr viele davon gibt, wollte Ich fragen, welchen ihr mir für die Version 1.14.4 empfehlen würdet.

Bitte bedenkt, dass Ich ein Jobsystem, ein Chestshop und ein Villagershop bereits habe.

Danke im Vorraus ❤.

Computer, Technik, Programmieren, Java, Minecraft, Manager, Minecraft Server, Technologie, minecraftserver, Minecraft plugin, BukkitSpigot, Spigot Server, Spiele und Gaming
1 Antwort
Java: Minecraft Plugin Code fehler?

Ich habe jezt für meinen Bukkit server ein kleines clear chat Plugin geschrieben. Aber es funktioniert nicht. Wenn ich auf meinem Server(1.15.2) /clearchat schreibe, dann wird immer der String aus der plugin.yml Datei, bei usage: angezeigt. Was ist falsch? Hier ist der Code:

package package1;

import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerKickEvent;
import org.bukkit.plugin.java.JavaPlugin;

import com.mojang.brigadier.Command;

public class HauptKlasse extends JavaPlugin {
    private String pluginName=this.getDescription().getName();
    private String pluginVers=this.getDescription().getVersion();
    private int timer=100;
    
    @Override
    public void onEnable() {
        System.out.println(" ");
        System.out.println("["+pluginName+"] §aPlugin gestartet! Version: "+pluginVers);
        System.out.println(" ");
    }
    
    @Override
    public void onDisable() {
        System.out.println(" ");
        System.out.println("["+pluginName+"] §aPlugin ausgeschaltet! Version: "+pluginVers);
        System.out.println(" ");
    }

    @SuppressWarnings("rawtypes")
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
        
        Player player=null;
        if(sender instanceof Player) {
           player=(Player) sender;
        }
        
        if(((CommandSender) cmd).getName().equalsIgnoreCase("clearchat")) {
            if(sender.hasPermission("system.clearchat")) {
                while(timer>0) {
                    timer--;
                    Bukkit.broadcastMessage(" \n");
                }
                Bukkit.broadcastMessage("§9[Server]§cDer Chat wurde von "+sender+" geleert.");
                timer=100;
                return true;
            } else {
                player.sendMessage("§9[Server]§cDas darfst du nicht.");
            }
        }
        
        return false;
        
    }
}

Danke schonmal!

LG

PC, Computer, Schule, Programmieren, Java, Minecraft, developer, development, Eclipse, EDV, EDV-Kenntnisse, Informatik, Informatiker, Plug-in, Technologie, Minecraft plugin, Spiele und Gaming, eclipse java
3 Antworten
Android Studio Java-Fehler: Can not resolve symbol 'sendMessage'?
package com.example.strassenlaternenapp;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import androidx.appcompat.app.AppCompatActivity;

public class Main extends AppCompatActivity {
    Client client = new Client("192.168.178.45", 8000);
    client.sendMessage("Hallo");

    private Button lightButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        lightButton = (Button) findViewById(R.id.lightButton);
        lightButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
               
            }
        });
    }
}

Main-Datei

package com.example.strassenlaternenapp;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.util.Scanner;

public class Client {

    private InetSocketAddress adress;

    public Client(String hostname, int port) {
        adress = new InetSocketAddress(hostname, port);
    }

    public void sendMessage(String msg) {

        try {
            System.out.println("[Client] Verbinde zu Server...");
            Socket socket = new Socket();
            socket.connect(adress, 5000);
            System.out.println("[Client] Verbunden...");



            System.out.println("[Client] Sende Nachricht...");
            PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
            pw.println(msg);
            pw.flush();                            //schickt die "msg" ab
            System.out.println("[Client] Nachricht gesendet...");

            Scanner s = new Scanner(new BufferedReader(new InputStreamReader(socket.getInputStream())));
            if(s.hasNextLine()) {
                System.out.println("[Client] Neue Nachricht von Server: " + s.nextLine());
            }

            //Verbindung schließen
            pw.close();
            s.close();
            socket.close();

        } catch(Exception e) {
            e.printStackTrace();
        }

    }
}

Client-Datei

Wer findet meinen Fehler? Ich habe im Internet schon viel dazu gefunden, aber nichts hat funktioniert.

LG

LBr03

Programmieren, Java, Android Studio
2 Antworten

Meistgelesene Fragen zum Thema Java