Обновление текста на табличках

xBeeegsone

Пользователь
Здравствуйте! Не могу разобраться с одной вещью, а именно обновлением текста на табличках. Например, на второй строке узнать количество игроков, находящихся в определённом мире.
Может кто-нибудь подскажет про то, как это реализовать?)
 

Attachments

fromgate

Administrator
В чём задача?
Считывать данные с таблички? Или узнать количество игроков в каком-то мире?
 

Pub4Game

Модератор всея Nukkit.ru
Moderator
Ну вот небольшой пример обновления онлайна на табличках во всех мирах, если на первой строке - [test]

Code:
this.getServer().getScheduler().scheduleRepeatingTask(new Runnable() {
			@Override
			public void run() {
				for (Level level : getServer().getLevels().values()) {
					for (BlockEntity blockEntity : level.getBlockEntities().values()) {
						if (blockEntity instanceof BlockEntitySign) {
							BlockEntitySign blockEntitySign = (BlockEntitySign) blockEntity;
							String[] lines = blockEntitySign.getText();
							if (lines[0].equals("[test]")) {
								blockEntitySign.setText("[test]", String.valueOf(getServer().getOnlinePlayers().size()));
							}
						}
					}
				}
			}
		}, 20);
 

Tee7even

Nukkit Coders Team
Ну а вот ещё лучше:
Code:
Set<BlockEntitySign> signs = new HashSet<>();

public void onEnable() {
	getServer().getScheduler().scheduleRepeatingTask(() -> {
		signs.forEach((sign) -> sign.setText("[Online]", String.valueOf(getServer().getOnlinePlayers().size())));
	}, 20);
}

@EventHandler
public void onSignChange(SignChangeEvent event) {
	if (event.getLine(0).toLowerCase().equals("[test]")) {
		signs.add((BlockEntitySign) event.getBlock().getLevel().getBlockEntity(event.getBlock()));
	}
}
Конечно, их нужно сохранять и загружать здесь, но по крайней мере мы не перебираем все сущности на уровне каждую секунду. ;)
 

Pub4Game

Модератор всея Nukkit.ru
Moderator
Только в твоем случае нужно проверять существует ли такой BlockEntity или нет
 

Tee7even

Nukkit Coders Team
Только в твоем случае нужно проверять существует ли такой BlockEntity или нет
Надо бы, конечно, но я исхожу из суждения, что если табличку меняли, то оно, собственно, есть.
 
Top