Skip to content

Best Practice (лучше подходы)

Юрий edited this page Jun 14, 2019 · 3 revisions

Дайте другим моддерам возможность расширять ваши системы веса

Помните, что ваша система веса - не единственная доступная на сервере. Могут присутствовать другие. В том числе - наследники вашей. Старайтесь не использовать приватные поля и методы (лучше используйте protected) и конечно же не помечайте вашу систему веса как final класс. Именно через классы-наследники другие моддеры смогу расширять вашу систему веса.

Скорее всего вместе с вашей системой веса вы предоставляете и собственную обработку перегруза: замедление, неподвижность, периодический урон и пр. В этом случае эти алгоритмы должны работать и для наследников вашей системы веса. В этом случае проверка на активную систему веса должна выглядеть так:

@SubscribeEvent
public void onOverload(WeightChangedEvent event) {
        // Плохой способ (не будет работать для наследников YourWeightProvider)
        // WeightRegistry.getActiveWeightProvider() == yourWeightProviderInstance
	
        // Хороший способ
        if (WeightRegistry.getActiveWeightProvider() instanceof YourWeightProvider) {
            // your code here
        }	
}

Системы веса сами отвечают за синхронизацию с клиентом

При изменении системы веса на сервере, вы самостоятельно должны изменить ее и на клиентах. Делать это нужно как минимум в двух случаях: при подключении игрока и при срабатывании WeightProviderChangedEvent.

Пример уведомления клиентов о