cool_brick24 Geschrieben 20. September 2018 Share Geschrieben 20. September 2018 (bearbeitet) Hallo liebe Plugin Programmierer: Ich bin noch nicht lange in der Java-Plugin Scene, also etwas unerfahren. So meine Frage: Ich habe mir eine Aufgabe gestellt, also ein Wettrennen Plugin. Die Startlinie soll von einem Spieler festgelegt werden, sowie auch die End-Linie. Der Timer wird am ende programmiert. Nun, ich hab schonmal 2 Positions abfragen erstellt. Nun will ich von diesen 2 Positionen die Blöcke die dazwischen sind, speichern und darauf später zugreifen können. Mein Code: package de.coolbrick.race.eu; import org.bukkit.Location; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; public class Startlinie extends JavaPlugin implements CommandExecutor{ @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { Player p = (Player)sender; if(cmd.getName().equalsIgnoreCase("start1")) { Location start1pos = p.getLocation(); if(cmd.getName().equalsIgnoreCase("start2")) { Location start2pos = p.getLocation(); } } return false; } } Nun, ich hoffe ihr könnt mir weiterhelfen. MFG cool_brick24 bearbeitet 20. September 2018 von cool_brick24 Ist etwas schief gelaufen ^^. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Joey Geschrieben 20. September 2018 Share Geschrieben 20. September 2018 (bearbeitet) Du könntest eine Geradengleichung zwischen den beiden Positionen aufstellen und den Vektor dann solange um 1 verlängern bis du am Ziel angekommen bist, wobei du dir jedes mal den aktuellen Block nimmst, wenn du den Vektor um 1 verlängerst. Darf man fragen warum du die Blöcke zwischen den Punkten speichern möchtest? bearbeitet 20. September 2018 von Joey Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
cool_brick24 Geschrieben 22. September 2018 Autor Share Geschrieben 22. September 2018 Eisenminer, ich programmiere ja eine Startlinie. Kannst du mir das über den Vector erklären? Ich habe nur von dem gehört. Trozdem weiß ich nicht, wie ich den benutzen kann. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Fabi1309 Geschrieben 6. November 2018 Share Geschrieben 6. November 2018 Hey, ein bisschen spät, aber habe das gesehen und dachte ich antworte noch. package io.github.fabi1309.first.commands; import java.util.HashMap; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.util.Vector; import io.github.fabi1309.first.Main; public class Test implements CommandExecutor{ private final Main plugin; public Test(Main plugin) { this.plugin = plugin; } public static HashMap<Integer, Location> locations = new HashMap<Integer, Location>(); public boolean onCommand(CommandSender sender, Command cmd, String cmdLable, String[] args) { if(cmd.getName().equalsIgnoreCase("test")) { Location loc1 = new Location(sender.getServer().getWorld("world"), 0, 0, 0); Location loc2 = new Location(sender.getServer().getWorld("world"), 0, 0, 0); if(args.length == 0) { Player p = (Player) sender; p.sendMessage("Test"); return true; } if(args.length == 1 && args[0].equalsIgnoreCase("1")) { Player p = (Player) sender; loc1 = p.getLocation(); loc1.add(new Vector(0, -1, 0)); p.sendMessage(loc1.toString()); locations.put(1, loc1); return true; } if(args.length == 1 && args[0].equalsIgnoreCase("2")) { Player p = (Player) sender; loc2 = p.getLocation(); loc2.add(new Vector(0, -1, 0)); p.sendMessage(""); locations.put(2, loc2); return true; } if(args.length == 1 && args[0].equalsIgnoreCase("3")) { Vector vec = new Vector(locations.get(2).getBlockX() - locations.get(1).getBlockX(),locations.get(2).getBlockY() - locations.get(1).getBlockY(),locations.get(2).getBlockZ() - locations.get(1).getBlockZ()); double vecl = vec.length(); Vector vecU = vec.multiply(0.5/vecl); for(double i=0; i <= vecl;i=i+0.5) { Location USE = locations.get(1).add(vecU); USE.getBlock().setType(Material.DIAMOND_BLOCK); locations.put(1, USE); //Add to array but check if loc already in there } return true; } return false; } return false; } } Bei Fragen kannst du mir gerne n PN schreiben oder einfach hier antworten. Fabi1309 Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden