Как заполнить кадр блоков с помощью правого щелчка? Spigot JavaJAVA

Программисты JAVA общаются здесь
Anonymous
Как заполнить кадр блоков с помощью правого щелчка? Spigot Java

Сообщение Anonymous »

Недавно у меня была проблема, когда я не могу заполнить в древнем городском рамке /портале.
(1.21.1)
Проблема, с которой я столкнулся, заключается в том, что я должен разместить 2 блока подкрепленного DeepSlate, иначе она вообще не работает. Это можно увидеть более четко на этом изображении: < /p>
Проблема < /p>
Однако она все равно не будет работать до ожиданий, поскольку она смеет заполнение кадра одним блоком, как показано ниже ... < /p>
Другая проблема < /p>
Я покажу свой код ниже, извините, если я сделаю некоторую сильную ошибку: < /p>
Я покажу код ниже, извините, если я сделаю некоторую сильную ошибку: < /p>
.package poseidon.smp.customPortal;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.plugin.java.JavaPlugin;

import java.util.HashSet;
import java.util.Set;

public final class CustomPortal extends JavaPlugin implements Listener {

@Override
public void onEnable() {
Bukkit.getPluginManager().registerEvents(this, this);
}

@EventHandler
public void onRightClick(PlayerInteractEvent event) {
if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
Block clickedBlock = event.getClickedBlock();
if (clickedBlock != null && clickedBlock.getType() == Material.REINFORCED_DEEPSLATE) {
Set frameBlocks = new HashSet();
findFrame(clickedBlock, frameBlocks);
fillFrameWithIce(frameBlocks);
}
}
}

private void findFrame(Block start, Set frameBlocks) {
findFrameRecursive(start, frameBlocks);
int minX = frameBlocks.stream().mapToInt(b -> b.getX()).min().orElse(0);
int maxX = frameBlocks.stream().mapToInt(b -> b.getX()).max().orElse(0);
int minY = frameBlocks.stream().mapToInt(b -> b.getY()).min().orElse(0);
int maxY = frameBlocks.stream().mapToInt(b -> b.getY()).max().orElse(0);
int minZ = frameBlocks.stream().mapToInt(b -> b.getZ()).min().orElse(0);
int maxZ = frameBlocks.stream().mapToInt(b -> b.getZ()).max().orElse(0);

for (int x = minX; x

Подробнее здесь: https://stackoverflow.com/questions/795 ... pigot-java

Вернуться в «JAVA»