Jump to content

Blöcke von 2 positionen speichern


cool_brick24
 Share

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 ^^.
Link to comment
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
Link to comment
Share on other sites

  • 1 month later...

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 to comment
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
 Share

×
×
  • Create New...
B