Помогите Как работает радиус getNearbyEntities

-> - Java 8, сервер Java 7. Не затруднит ли Вас переделать под java7?
Stream API только начиная с Java 8.
-> - Java 8, сервер Java 7. Не затруднит ли Вас переделать под java7?

А можно ли загрузить чанк который как раз !chunk.isLoaded(); таким же способом?
луп через все чанки = фриз сервера (Причем большой фриз)
Только перед отгрузкой чанка придется УБИТЬ абсолютно всех ентити в этом чанке если он загружен, т.к. это не безопасно выгружать чанк, который используется
 
Stream API только начиная с Java 8.

луп через все чанки = фриз сервера (Причем большой фриз)
Только перед отгрузкой чанка придется УБИТЬ абсолютно всех ентити в этом чанке если он загружен, т.к. это не безопасно выгружать чанк, который используется
А что же делать, если в нём живность из customnps?
 
Stream API только начиная с Java 8. - это понятно, но каждому такому stream должна быть старая замена в виде for в данном случае она имеется?
 
Stream API только начиная с Java 8. - это понятно, но каждому такому stream должна быть старая замена в виде for в данном случае она имеется?
Ты видимо не понимаешь
stream(), filter(), и т.д. ТОЛЬКО начиная с Java 8.
В джаве 7 этого нет.
А вообще уже есть бета версии JDK 9, попробую - ка ее.
 
Ты видимо не понимаешь
stream(), filter(), и т.д. ТОЛЬКО начиная с Java 8.
В джаве 7 этого нет.
Да я понял)
Я имею ввиду, что если у нас java8, то существует подобный способ и для java7.
К примеру: //Если что это JavaFX приложение.
Java:
        //Java 7
        stage.setOnHidden(new EventHandler<WindowEvent>() {
            @Override
            public void handle(WindowEvent we) {
                if (FXMLController.getTimer() != null) {
                    FXMLController.getTimer().cancel();
                }
            }
        });
        //Java 8
//        stage.setOnHidden((WindowEvent we) -> {
//            if (FXMLController.getTimer() != null) {
//                FXMLController.getTimer().cancel();
//            }
//        });
Для всех новых stream есть ПОХОЖАЯ реализация на более старых версиях.
 
Да я понял)
Я имею ввиду, что если у нас java8, то существует подобный способ и для java7.
К примеру: //Если что это JavaFX приложение.
Java:
        //Java 7
        stage.setOnHidden(new EventHandler<WindowEvent>() {
            @Override
            public void handle(WindowEvent we) {
                if (FXMLController.getTimer() != null) {
                    FXMLController.getTimer().cancel();
                }
            }
        });
        //Java 8
//        stage.setOnHidden((WindowEvent we) -> {
//            if (FXMLController.getTimer() != null) {
//                FXMLController.getTimer().cancel();
//            }
//        });
Для всех новых stream есть ПОХОЖАЯ реализация на более старых версиях.
Comparator
 
Респавнить заново при загрузке чанка и убивать при отгрузке.
Если сервер сам при загрузке чанка (прогруженным игроком) спавнит живность в том чанке, то получается, когда чанк выгружается он так же так всю живность убивает? Это так работает?

Если я возьму не загруженный чанк, то как реализовать вашу подсказку? Как заспарвнить в нём живность сделать всё что мне нужно с ней, а далее правильно выгрузить без потерь данных но с удалённой живностью.
 
Если сервер сам при загрузке чанка (прогруженным игроком) спавнит живность в том чанке, то получается, когда чанк выгружается он так же так всю живность убивает? Это так работает?

Если я возьму не загруженный чанк, то как реализовать вашу подсказку?
chunk.load();
 
Если сервер сам при загрузке чанка (прогруженным игроком) спавнит живность в том чанке, то получается, когда чанк выгружается он так же так всю живность убивает? Это так работает?

Если я возьму не загруженный чанк, то как реализовать вашу подсказку? Как заспарвнить в нём живность сделать всё что мне нужно с ней, а далее правильно выгрузить без потерь данных но с удалённой живностью.
chunk.unload(true);
https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Chunk.html
 
Окей. Идём дальше.
1. Как загружать и выгружать в ручную чанки я понял. Так же понял, как это делать безопасно.
2. "луп через все чанки = фриз сервера (Причем большой фриз)" - я имел ввиду, что если при получении всех чанков я найду с помощью
Код:
chunk.isLoaded();
не загруженный чанк и именно его занесу куда то в лист и потом вручную загружу. Ваше сообщение про фриз "луп" - что это значит?
3.
Код:
ArrayList<Chunk> chunks = Bukkit.getWorld("kek").getChunks().stream()
.filter((chunk) -> {
return !chunk.isLoaded();
}).map((chunk) -> {
return (Chunk) chunk;
}).collect(Collectors.toCollection(ArrayList::new));
Что вы хотели донести до меня этим кодом? Занести в лист загруженные или не загруженные чанки?
Если не трудно, то объясните пожалуйста.
Я просто не особо понимаю систему stream().
4. Подобную операцию планируется делать раз в неделю для удаления баганых entity в мире (пули и пару предметов из flans и customnps), но если это сделать в отдельном потоке, чтобы из этого потока можно было так же взаимодействовать с чанками, то как лучше это реализовать?
5. API увидел, ознакомлюсь. Спасибо.
 
3. Что вы хотели донести до меня этим кодом? Занести в лист загруженные или не загруженные чанки?
Если не трудно, то объясните пожалуйста.
Я просто не особо понимаю систему stream().
4. Подобную операцию планируется делать раз в неделю для удаления баганых entity в мире (пули и пару предметов из flans и customnps), но если это сделать в отдельном потоке, чтобы из этого потока можно было так же взаимодействовать с чанками, то как лучше это реализовать?
5. API увидел, ознакомлюсь. Спасибо.
Это - список, который "создается" не через луп, тем самым, нагрузка меньше
И в этом листе будут только не загруженные чанки.
 
Это - список, который "создается" не через луп, тем самым, нагрузка меньше
И в этом листе будут только не загруженные чанки.
Хорошо, тогда план действий:
1. Получаю все чанки.
2. НЕ загруженные чанки сохраняю в отдельном листе, с загруженными делаю сразу всё что нужно.
3. Все не загруженные чанки ПО очереди гружу, делаю всё что мне нужно с entity внутри, после чего безопасно с сохранением выгружаю.
Я ничего не забыл? Что скажите про отдельный поток? Как лучше реализовать?
 
Хорошо, тогда план действий:
1. Получаю все чанки.
2. НЕ загруженные чанки сохраняю в отдельном листе, с загруженными делаю сразу всё что нужно.
3. Все не загруженные чанки ПО очереди гружу, делаю всё что мне нужно с entity внутри, после чего безопасно с сохранением выгружаю.
Я ничего не забыл? Что скажите про отдельный поток? Как лучше реализовать?
Executor
 
Да просто загружай чанки
Если сервер сам при загрузке чанка (прогруженным игроком) спавнит живность в том чанке, то получается, когда чанк выгружается он так же так всю живность убивает? Это так работает?

Если я возьму не загруженный чанк, то как реализовать вашу подсказку? Как заспарвнить в нём живность сделать всё что мне нужно с ней, а далее правильно выгрузить без потерь данных но с удалённой живностью.
Ничего подобного, ентити и тайлы пишутся в чанк.
 
С "Executor" я имел дело только разве что команды правильно направлять (на нужные классы), а как Executor относится к потоком. Я этого не знаю. Или вы это не для потоков написали?

Нашёл вот такой метод https://hub.spigotmc.org/javadocs/spigot/org/bukkit/World.html#getEntitiesByClass(java.lang.Class)
В нём сказано, что можно получить с мира всех указанных entity. И там и другие методы были, которые получали всю живность, но они ведь получают её только с прогруженных чанков ?

Я правда ещё не успел посмотреть, но есть ли похожий метод в Chunk классе, но было бы здорово получить сразу всех нужных мне entity, а не проверять каждого на нужный мне тип.
 
Нашёл вот такой метод https://hub.spigotmc.org/javadocs/spigot/org/bukkit/World.html#getEntitiesByClass(java.lang.Class)

ArrayList<Chunk> chunks = Bukkit.getWorld("kek").getChunks()
А чего то я не наблюдаю метода getChunks(); Эм.
Так всё же, как получить все чанки в мире?
 
Назад
Верх