Skocz do zawartości
  • 0

Prostokątny WorldBorder (?)


GoblicPL

Pytanie

1 odpowiedź na to pytanie

Rekomendowane odpowiedzi

  • 0

To zależy od jakiego bloku chcesz go tworzyć (środka, krańca, środka ściany etc.).

Załóżmy, że chcesz stworzyć prostopadłościan "do okoła" danego bloku o krawędziach podstawy 21 i 31 oraz wysokości od Y = 0 do Y = 200.
Będzie to wyglądać mniej więcej tak
 

Block block; //Twój wyjściowy blok.
Location location = block.getLocation();

//Na początek musimy wyznaczyć dwa krańce po przekątnych (pamiętajmy o wymiarach 31, 21), uwzględniając wysokość (0 - 200). 
Location upper = location.add(10, 0, 15);
Location lower = location.subtract(10, 0, 15)
upper.setY(200);
lower.setY(0);

//Teraz które koordynaty są większe, a które mniejsze.
int lowerX, lowerY, lowerZ, upperX, upperY, upperZ;

//Tutaj warto napisać sobie jakąś metodę/klasę, aby nie powtarzać kodu, ja tego nie zrobie.
if (upper.getBlockX() > lower.getBlockX()) {
	lowerX = lower.getBlockX();
  	upperX = upper.getBlockX();
} else {
	upperX = lower.getBlockX();
  	lowerX = upper.getBlockX();
}

if (upper.getBlockY() > lower.getBlockY()) {
	lowerY = lower.getBlockY();
  	upperY = upper.getBlockY();
} else {
	upperY = lower.getBlockY();
  	lowerY = upper.getBlockY();
}

if (upper.getBlockZ() > lower.getBlockZ()) {
	lowerZ = lower.getBlockZ();
  	upperZ = upper.getBlockZ();
} else {
	upperZ = lower.getBlockZ();
  	lowerZ = upper.getBlockZ();
}

//Teraz tworzymy sobie liste lokalizacj.
List<Location> locations = new ArrayList<>();

//I wreszcie zapętlamy bloki
for (int x = lowerX; x <= upperX; x++) {
	for (int y = lowerY; y <= upperY; y++) {
		for (int z = lowerZ; z <= upperZ; z++) {
			locations.add(new Location(location.getWorld(), x, y, z));
		}
	}
}

Wszystkie lokalizacje w obszarze masz w locations, możesz sobie je zamienić na bloki, czy co tam chcesz.

Pisane na szybko, mam nadzieję, że się nie pomyliłem i pomogłem ;)

 

Odnośnik do komentarza
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...