• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Location wird nicht erkannt?

Mr_Redstone19

Schafhirte
Registriert
31 Januar 2018
Beiträge
103
Alter
49
Diamanten
0
Hallo.
Ich wollte gerade eine neue location erstellen mit:

Javascript:
Location loc = new Location(getServer().getWorld("world"), 1118, 60, 92);

Aber da wird das zweite Location, also das hinter dem new, immer rot unterstrichen und es ist ein Error.
Bei dem Error steht dann Folgendes:

Cannot instantiate the type DocumentationTool.Location

Wahrscheinlich ist es mein Fehler und ich bin zu dumm dafür, das zu beheben.
Wenn es mir trotzdem einer sagen könnte, wär das super! :)
 

Mr_Redstone19

Schafhirte
Registriert
31 Januar 2018
Beiträge
103
Alter
49
Diamanten
0
Javascript:
package at.me.main;

import java.util.ArrayList;
import org.bukkit.Location;


import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

import commands.join;

public class main extends JavaPlugin {
   
    public static ArrayList<Player> Ingame = new ArrayList<>();
    public static ArrayList<Player> Spectator = new ArrayList<>();
   
    public void onEnable() {
        Bukkit.getConsoleSender().sendMessage("Surf");
       
        loadConfig();
        ChangeMap();
        this.getServer().getPluginManager().registerEvents(new join(), this);
    }

    private void loadConfig() {
        FileConfiguration cfg = this.getConfig();
        cfg.options().copyDefaults(true);
       
       
       
Location areao = new Location(getServer().getWorld("world"), 123, 60, 789);
       
       
       
        saveConfig();
    }   
       
   
    public int mct = 120;
   
   
    public void ChangeMap() {
       
       
        Bukkit.getScheduler().runTaskTimerAsynchronously(this, new Runnable() {

            @Override
            public void run() {
               
                mct--;
               
               
                if(mct == 60) {
                    for(Player p : Ingame) {
                        p.sendMessage("§7[§3Surf§7] §7Neue Map in §a60 §7Sekunden!");
                    }
                }else                if(mct == 30) {
                    for(Player p : Ingame) {
                        p.sendMessage("§7[§3Surf§7] §7Neue Map in §a30 §7Sekunden!");
                    }
                }                if(mct == 20) {
                    for(Player p : Ingame) {
                        p.sendMessage("§7[§3Surf§7] §7Neue Map in §a20 §7Sekunden!");
                    }
                }                if(mct == 10) {
                    for(Player p : Ingame) {
                        p.sendMessage("§7[§3Surf§7] §7Neue Map in §a10 §7Sekunden!");
                    }
                }                if(mct == 5) {
                    for(Player p : Ingame) {
                        p.sendMessage("§7[§3Surf§7] §7Neue Map in §a5 §7Sekunden!");
                    }
                }                if(mct == 3) {
                    for(Player p : Ingame) {
                        p.sendMessage("§7[§3Surf§7] §7Neue Map in §a3 §7Sekunden!");
                    }
                }                if(mct == 2) {
                    for(Player p : Ingame) {
                        p.sendMessage("§7[§3Surf§7] §7Neue Map in §a2 §7Sekunde!");
                    }
                }                if(mct == 1) {
                    for(Player p : Ingame) {
                        p.sendMessage("§7[§3Surf§7] §7Neue Map in §a1 §7Sekunde!");
                    }
                }                if(mct == 0) {
                    for(Player p : Ingame) {
                        p.sendMessage("§7[§3Surf§7] §7Map wird gewechselt!");
                        p.teleport(areao);
                       

                    }
                    mct = 120;
                   
                }
               
               
               
               
            }
           
        }, 0, 20);
    }
}
Das ist der Code. Ja, ich habe die CodeTags gefunden! :)
 

UnityGaming

Workaholic
Registriert
25 Oktober 2015
Beiträge
527
Alter
25
Diamanten
262
Minecraft
FastFelix771
Ah. Du setzt die Variable "areao" in der Methode onEnable().
Die Variable ist damit innerhalb dieser Methode gültig.

In der Methode ChangeMap() tust du das nicht - daher der Fehler.
Du könntest zb. die Location als Field setzen um dem zu entgehen, gibt aber auch zig andere Möglichkeiten.

  • Bukkit.getScheduler().runTaskTimerAsynchronously(this, new Runnable() {
  • @Override
  • public void run() {
Der Scheduler wird sich vermutlich auch noch darüber aufregen, da die Variable bzw. das Field dann, als final (unveränderbar) markiert werden muss.

Hoffe ich konnte es recht simpel darbringen.
 

Mr_Redstone19

Schafhirte
Registriert
31 Januar 2018
Beiträge
103
Alter
49
Diamanten
0
Super Danke!
Es fiunktioniert nun!
Achso. Doch nochmal eine Frage :D
Wie mach ich das jz nochmal, dass sich das PlugIn eine bestimmte location raussucht und man immer random zu einer teleportiert wird?
Und, wo muss ich das dann eintragen?
Danke
 

Mr_Redstone19

Schafhirte
Registriert
31 Januar 2018
Beiträge
103
Alter
49
Diamanten
0
Ja, aber ich hab das da nicht so ganz verstanden. Wär nett, wenn du mir das nochmal sagen kannst und auch sagen kannst, wo ich das einfügen muss xD
Sry.
Und wo wir schon bei mehreren Arenen sind. Wie macht man das, dass der dann beim Mapteleport auch noch die aktuelle Arena anzeigt, in die man teleportiert wird? :D
Dankeeeeee
 

UnityGaming

Workaholic
Registriert
25 Oktober 2015
Beiträge
527
Alter
25
Diamanten
262
Minecraft
FastFelix771
Und wo wir schon bei mehreren Arenen sind. Wie macht man das, dass der dann beim Mapteleport auch noch die aktuelle Arena anzeigt, in die man teleportiert wird? :D
Was hast du denn schon für Arenen entwickelt? Wie sehen die entsprechenden Objekte aus?
Du kannst dem Spieler (oder allen Spielern) ja einfach den Namen der Arena per Chat-Nachricht senden, sofern du Zugriff auf den Namen hast, z.B. durch entsprechende Getter. (get-Methoden)

Ich schätze mal du hast noch gar keine wirklich Struktur für Arenen fertig, oder?
 

Mr_Redstone19

Schafhirte
Registriert
31 Januar 2018
Beiträge
103
Alter
49
Diamanten
0
Naja. Ich mach es halt so.
Habe einen kleinen Testserver (local). Ich erstelle erstmal alle Arenen, die ich haben will, bzw. die Anzahl. Dann teste ich, ob es funktioniert, dann löse ich Probleme und am Ende lade ich es auf meinem Server hoch.

Gut egal. Habe nochmal eine kleine andere Frage, die ich auch wahrscheinlich selbst lösen kann, aber wieder zu doof dafür bin...
Folgender Code bereitet mir Probleme:

Javascript:
    Location areao = new Location(getServer().getWorld("Surf"), 485, 48, -1315);
    @EventHandler
    public void onPlayerKill(PlayerDeathEvent event) {
        Player killer = event.getEntity().getKiller();
        Player victim = event.getEntity().getPlayer();
        if(victim.getLevel() == 0){
            victim.sendMessage("§cDu wurdest von §e" + killer.getDisplayName() + " §cgetötet.");
            victim.teleport(areao);
            victim.playSound(victim.getLocation(), Sound.VILLAGER_DEATH, 1, 1);
        }
        killer.setLevel(killer.getLevel() +1 );
        victim.setLevel(0);
        killer.sendMessage("§aDu hast §e" + victim.getDisplayName() + " §agetötet!");
        killer.playSound(killer.getLocation(), Sound.LEVEL_UP, 1, 1);
        }

Wenn ich das PlugIn auf den Server lade, passiert einfach garnichts.
In Eclipse jedoch wird nichts rot unterstrichen und es steht nichts an der Seite. Also ein Error oder ähnliches...
Was soll ich tun, damit es funktioniert? :D
 

BloodSKreaper

Vorarbeiter
Registriert
12 Oktober 2014
Beiträge
249
Diamanten
266
Minecraft
BloodSKreaper
Wenn ich das PlugIn auf den Server lade, passiert einfach garnichts.
In Eclipse jedoch wird nichts rot unterstrichen und es steht nichts an der Seite. Also ein Error oder ähnliches...
Das heißt, dass du einen logischen Fehler drinne hast.
Zuerst das, was für mich der wahrscheinlichste Fehler wäre:
hast du den Listener registriert? Wie bei
Code:
this.getServer().getPluginManager().registerEvents(new join(), this);
Was mir außerdem auffällt:
Player killer = event.getEntity().getKiller();
Wenn der Spieler nicht durch nen anderen Spieler starb, dann bekommst du hier nen Fehler. Du musst also abfragen, ob der Spieler durch die Hand eines anderen Spielers starb. https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/LivingEntity.html#getKiller--
Code:
if(event.getEntity().getKiller() != null)

Freundliche Grüße
BloodSKreaper
 

UnityGaming

Workaholic
Registriert
25 Oktober 2015
Beiträge
527
Alter
25
Diamanten
262
Minecraft
FastFelix771
:gusta:

Das bezog sich auf das EntityDeathEvent.
Da gibt es die Methode setDroppedExp(int exp).

Da gibst du die Menge an XP (als int) an, die gedroppt werden soll... wie der klare Menschenverstand schlussfolgern würde. In deinem Fall wäre 0 ratsam, um den gewünschten Effekt zu erzielen.
 
Zuletzt bearbeitet:

Mr_Redstone19

Schafhirte
Registriert
31 Januar 2018
Beiträge
103
Alter
49
Diamanten
0
Doch wieder eine Frage.
Bis jetzt funktioniert alles auf dem PlugIn. Das ist schonmal gut.
Doch nun wollte ich das Blöckeabbauen sperren xD.
Aber es funktioniert nicht so richtig, wie ich das will :D

Folgender Code:
Javascript:
    @EventHandler
    public void onNewPlayerBreak(BlockBreakEvent event){
        Player p  = event.getPlayer();
        if(p.hasPermission("Block.Deny") == false){
                event.setCancelled(false);
                event.getPlayer().sendMessage("§cDu darfst hier nichts abbauen!");
           
        }
    }
   
    @EventHandler
    public void onNewPlayerPlace(BlockPlaceEvent event){
        Player p  = event.getPlayer();
        if(p.hasPermission("Block.Deny") == false){
            event.setBuild(false);
            event.getPlayer().sendMessage("§cDu darfst hier nichts platzieren!");
        }
    }

Es kommen die messages und man kann keine Blöcke platzieren. Aber abbauen kann man sie schon. Auch beim abbauen kommt die Message. Aber es geht trotzdem.
Das ist doch alles gleich, außer dem BlockBreakEvent, oder?
 
Oben