Вопрос по прокси

Версия Minecraft
1.6.4
Ребят, что такое в теории прокси для майна? Как оно работает?
Если есть гайд, то дайте ссылку, пожалуйста. Нужно на 1.6.4, если есть
 

timaxa007

Модератор
5,831
409
672
Типа с помощью аннотации SidedProxy, заменяет или даёт объект для поля, который за этой аннотацией на объект из этой-же аннотации, заменяться типа по условию, является-ли запуск мода на серверной или клиентской части.
Вот на 1.7.10 - Урок 8. Прокси и инстанция - но так-же работает и на 1.6.4.
 
1,159
38
544
Прокси позволяют разделить твой код на серверный и клиентский. И являются по сути инструментом разделения кода на исполняемые стороны. При помощи @SideProxy ты можешь пометить какой класс будет выступать в качестве прокси, если мод запущен на клиенте, и какой класс, если мод запущен на сервере.

Вот пример:
Java:
@Mod(modid = "mymod", version = "1.0.0")
public class MyMod {

    ...

    /** Класс, который сожержит код для той стороны, на которой запущен мод */
    @SidedProxy(clientSide = "com.mymod.ClientProxy", serverSide = "com.mymod.CommonProxy")
    public static CommonProxy proxy; // Не нужно вызывайть конструктор, т.к. Forge самостоятельно его взовет и присвоит переменной proxy соответствующее значение

    ...
}

Чаще всего, ClientProxy наследуют от CommonProxy (это не ванильные классы, а названия кастомных) и выглядят они примерно так:
Java:
public class CommonProxy {
    public void preInit(FMLPreInitializationEvent event) {}

    public void init(FMLInitializationEvent event) {}

    public void postInit(FMLPostInitializationEvent event) {}
}

А потом просто вызываешь методы прокси из класса мода:
Java:
@Mod(modid = "mymod", version = "1.0.0")
public class MyMod {
    
    @EventHandler
    public void preInit(FMLPreInitializationEvent event) {
        proxy.preInit(event);
    }
    
}

НО! Нужно сказать, что некоторые люди негативно относятся к существованию ComonProxy. Мол прокси нужн для разделения на стороны, а CommonProxy - общий прокси и для клиента, и для сервера (в случае, если ClientProxy наследуются от CommonProxy). Типа пишите общий код сразу в основном классе мода. ИМХО, не знаю насколько это верно, т.к. подход с сохданием CommonProxy широко прижился, так что выбор за тобой. Подробнее в бест практис моддинга. Так же советую изучить доки про прокси.

Так же отмечу что прокси удобно использоать для имплементации IGuiHandler'а и места для регистрации KeyBinding'ов
 
Сверху