cool_brick24 Posted September 20, 2018 Posted September 20, 2018 (edited) 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 Edited September 20, 2018 by cool_brick24 Ist etwas schief gelaufen ^^.
Joey Posted September 20, 2018 Posted September 20, 2018 (edited) 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? Edited September 20, 2018 by Joey
cool_brick24 Posted September 22, 2018 Author Posted September 22, 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.
Fabi1309 Posted November 6, 2018 Posted November 6, 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
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now