Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
World Edit API, кодом надоВставить с помощью //paste, а потом выделить новое место и заменить сундуки на воздух с помощью //replace chest air
Не по разделу отвечаешьВставить с помощью //paste, а потом выделить новое место и заменить сундуки на воздух с помощью //replace chest air
Опять... СорянНе по разделу отвечаешь
WorldEdit.getInstance().getEventBus().register(new MyEventHandler());
package Example;
import com.sk89q.worldedit.event.extent.EditSessionEvent;
import com.sk89q.worldedit.util.eventbus.Subscribe;
import com.sk89q.worldedit.EditSession;
public class MyEventHandler {
@Subscribe
public void onEditSessionChange(EditSessionEvent event) {
if (event.getStage() == EditSession.Stage.BEFORE_CHANGE) {
event.setExtent(new DelegateExtent(event.getExtent()));
}
}
}
package Example;
import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.extent.AbstractDelegateExtent;
import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.world.block.BlockStateHolder;
public class DelegateExtent extends AbstractDelegateExtent {
public DelegateExtent(Extent extent) {
super(extent);
}
@Override
public boolean setBlock(BlockVector3 location, BlockStateHolder block) throws WorldEditException {
BlockStateHolder oldBlock = getBlock(location);
if(block.getAsString().equals("minecraft:chest")) {
//TODO не знаю пока как поменять стату). Не искал, потому просто пропуск.
return true;
}
return super.setBlock(location, block);
}
}
Почему-то не работает, я проставил логи, там метод onEditSessionChange ещё вызывается,а setBlock уже не вызывается. Сундук остаётсяКод:WorldEdit.getInstance().getEventBus().register(new MyEventHandler());
Код:package Example; import com.sk89q.worldedit.event.extent.EditSessionEvent; import com.sk89q.worldedit.util.eventbus.Subscribe; import com.sk89q.worldedit.EditSession; public class MyEventHandler { @Subscribe public void onEditSessionChange(EditSessionEvent event) { if (event.getStage() == EditSession.Stage.BEFORE_CHANGE) { event.setExtent(new DelegateExtent(event.getExtent())); } } }
Код:package Example; import com.sk89q.worldedit.WorldEditException; import com.sk89q.worldedit.extent.AbstractDelegateExtent; import com.sk89q.worldedit.extent.Extent; import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.world.block.BlockStateHolder; public class DelegateExtent extends AbstractDelegateExtent { public DelegateExtent(Extent extent) { super(extent); } @Override public boolean setBlock(BlockVector3 location, BlockStateHolder block) throws WorldEditException { BlockStateHolder oldBlock = getBlock(location); if(oldBlock.getAsString().equals("minecraft:chest")) { //TODO не знаю пока как поменять стату). Не искал, потому просто пропуск. return true; } return super.setBlock(location, block); } }
Пошамань с EditSession.Stage, может тебе на другой стадии ловить надо.Почему-то не работает, я проставил логи, там метод onEditSessionChange ещё вызывается,а setBlock уже не вызывается. Сундук остаётся
Пошаманил, но сам метод setBlock не вызывается, хотяПошамань с EditSession.Stage, может тебе на другой стадии ловить надо.
event.getStage() == EditSession.Stage.BEFORE_CHANGE
Ну все значит работает, если только еще какой то плагин не подменяет Extent.Пошаманил, но сам метод setBlock не вызывается, хотявозвращает true два разаКод:event.getStage() == EditSession.Stage.BEFORE_CHANGE
public class DelegateExtent extends AbstractDelegateExtent {
public DelegateExtent(Extent extent) {
super(extent);
}
@Override
public boolean setBlock(BlockVector3 location, BlockStateHolder block) throws WorldEditException {
if (block.getAsString().contains("minecraft:chest")) {
return true;
}
return super.setBlock(location, block);
}
}
Ссылка почему-то не работает и сундуки всё равно вставляются xDВот собрал тебе, там нужно было вот так.
Код:public class DelegateExtent extends AbstractDelegateExtent { public DelegateExtent(Extent extent) { super(extent); } @Override public boolean setBlock(BlockVector3 location, BlockStateHolder block) throws WorldEditException { if (block.getAsString().contains("minecraft:chest")) { return true; } return super.setBlock(location, block); } }
if (block.getAsString().contains("minecraft:chest")) {
return super.setBlock(location, BukkitAdapter.adapt(Bukkit.createBlockData(Material.AIR)));
}
Он и юзается во время set и paste.Надеюсь, этот Extent используется до paste,а не после
Вы видимо в том плагине в ссылке забыли добавить либу, у меня всю консоль заспамило наллами 😁Все, нашел как сетнуть воздух. Обновил плаг. Ссылку поправил.
Код:if (block.getAsString().contains("minecraft:chest")) { return super.setBlock(location, BukkitAdapter.adapt(Bukkit.createBlockData(Material.AIR))); }
Какими либами? we и spigot, все.Вы видимо в том плагине в ссылке забыли добавить либу, у меня всю консоль заспамило наллами 😁