Jump to content

Hast du schon das Minecraftforum.de-Gütesiegel gesehen? Hier kommst du dorthin!

Melde dich an, um diesem Inhalt zu folgen  
cool_brick24

Blöcke von 2 positionen speichern

Empfohlene Beiträge

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 von cool_brick24
Ist etwas schief gelaufen ^^.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

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 von Joey

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

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.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

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

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

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 erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
Melde dich an, um diesem Inhalt zu folgen  

×