Jump to content

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

Sign in to follow this  
cool_brick24

Blöcke von 2 positionen speichern

Recommended Posts

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×