Клиент Прокси - что это такое и с чем его едят. [1.6.4]

100
0
Я слыша про Клиент Прокси  но с ним не работал 
- для чего он нужен 
- как с ним работать 
- как иницализировать


[font=Verdana, Helvetica, Arial, sans-serif]П.С. timaxa007 только не ругайся за глупую тему но я в этом деле новичок [/font]
 
271
2
0

svk

1,185
2
Хватит 100500 тем создавать. Ты будешь на каждом шагу на форум писать?
 
1,087
2
Добивайся, наблюдать за тем как равен пытается добиться бана ФанКара очень интересно.
 

svk

1,185
2
FanKar написал(а):
@Сам делает 100500 тем
@ОЙФУТЫЧОСТОПИЦОТТЕМДЕЛАЕШЬ
Ничего, что я постю темы, на которые форум не может сам дать ответы?
[merge_posts_bbcode]Добавлено: 25.02.2016 20:06:31[/merge_posts_bbcode]

И не надо тут приобщать все мои темы в истории, а то ща взлетишь.
 

timaxa007

Модератор
5,831
409
672
Не флудите. (Флудите, не по теме.)
 
100
0
Извините ну я новичок и то что в поиске не могу найти, создаю тему с более конкретным заголовком , чтобы также не мучился какой то новичок, в уроках очень мало тем , несколько тем можно было бы туда перенести
 
100
0
Ребят можете объяснить по подробней  как с ними правильно работать 

Подключаем Прокси и выполняем метод при включении (иницеализируем)
Код:
public class ModTest {

public static final String
MODID = "mod_test ",
MODNAME = "ModTest",
VERSION = "0.1"
;

@Mod.Instance(ModTest.MODID) public static ModTest instance;

@SidedProxy(clientSide = "ПУТЬ ДО КЛАСА.ClassProxyClient", serverSide = "ПУТЬ ДО КЛАССА.ClassProxyCommon") //подключаем
public static ProxyCommon proxy;

@Mod.EventHandler
public void init(FMLInitializationEvent event) {

    proxy.init(); //иницеализируем при влючении

}

[font=monospace, sans-serif] proxy[/font][font=monospace, sans-serif].[/font][font=monospace, sans-serif]init[/font][font=monospace, sans-serif](); [/font]иницеализируем  если нужно подключить его при запуске мода 
  но если я в каком то  методе  осуществляю к примеру установку блока через set  то  я могу в нем писать его ?
-----------------------------------
ProxyClient  - то что выполнятся только на клиенте
Код:
public class ProxyClient extends ProxyCommon {

    @Override
    public void init() {
        super.init();
     // тут пишем если надо выполнить метод или сделать какую то операцию на стороне клиента 
    }

}

ProxyCommon - то что выполняется на сервере
Код:
public class ProxyCommon {

    public void init() {
     // тут пишем если надо выполнить метод или сделать какую то операцию на стороне сервера
    }

}


я ПРАВИЛЬНО ПОНЯЛ КАК ЭТО РАБОТАЕТ ?
что выполняется первым Client или Common ? по логике Client

1) установка блока через set осуществляется на стороне сервера в ProxyCommon ? 
то бишь если я до этого в эвенте или методе использовал создание блока через set , то место него я буду писать [font=monospace, sans-serif] proxy[/font][font=monospace, sans-serif].[/font][font=monospace, sans-serif]init[/font][font=monospace, sans-serif](); [/font]
А в ProxyCommon сам set  ?




2) к примеру 
    1) мне надо погрузиться к базе SQLite на сервере  
    2) В определенном методе проверять данные с этой базы 
    3)  заносить какие то новые данные в таблицу  
как это правильно РЕАЛИЗОВАТЬ ?
 

svk

1,185
2
global-as написал(а):
Ребят можете объяснить по подробней  как с ними правильно работать 

Подключаем Прокси и выполняем метод при включении (иницеализируем)
Код:
public class ModTest {

public static final String
MODID = "mod_test ",
MODNAME = "ModTest",
VERSION = "0.1"
;

@Mod.Instance(ModTest.MODID) public static ModTest instance;

@SidedProxy(clientSide = "ПУТЬ ДО КЛАСА.ClassProxyClient", serverSide = "ПУТЬ ДО КЛАССА.ClassProxyCommon") //подключаем
public static ProxyCommon proxy;

@Mod.EventHandler
public void init(FMLInitializationEvent event) {

    proxy.init(); //иницеализируем при влючении

}

[font=monospace, sans-serif] proxy[/font][font=monospace, sans-serif].[/font][font=monospace, sans-serif]init[/font][font=monospace, sans-serif](); [/font]иницеализируем  если нужно подключить его при запуске мода 
  но если я в каком то  методе  осуществляю к примеру установку блока через set  то  я могу в нем писать его ?
-----------------------------------
ProxyClient  - то что выполнятся только на клиенте
Код:
public class ProxyClient extends ProxyCommon {

    @Override
    public void init() {
        super.init();
     // тут пишем если надо выполнить метод или сделать какую то операцию на стороне клиента 
    }

}

ProxyCommon - то что выполняется на сервере
Код:
public class ProxyCommon {

    public void init() {
     // тут пишем если надо выполнить метод или сделать какую то операцию на стороне сервера
    }

}


я ПРАВИЛЬНО ПОНЯЛ КАК ЭТО РАБОТАЕТ ?
что выполняется первым Client или Common ? по логике Client

1) установка блока через set осуществляется на стороне сервера в ProxyCommon ? 
то бишь если я до этого в эвенте или методе использовал создание блока через set , то место него я буду писать [font=monospace, sans-serif] proxy[/font][font=monospace, sans-serif].[/font][font=monospace, sans-serif]init[/font][font=monospace, sans-serif](); [/font]
А в ProxyCommon сам set  ?




2) к примеру 
    1) мне надо погрузиться к базе SQLite на сервере  
    2) В определенном методе проверять данные с этой базы 
    3)  заносить какие то новые данные в таблицу  
как это правильно РЕАЛИЗОВАТЬ ?
Позгами пошевели! Ты вызываешь CommonProxy первым. И переведи в переводчике слово Common
 
100
0
и еще вопрос разве 
@SideOnly(Side.CLIENT) // метка выполнять класс только на клиенте 
public class test {
 }
не заменяет прокси
[merge_posts_bbcode]Добавлено: 26.02.2016 14:59:49[/merge_posts_bbcode]

как он может выполнятся первым , если класс ProxyClient расширяет класс ProxyCommon   и метод  с меткой  @Override  означает что мы по сути перезаписываем (делаем какието правки) основной метод  судя по урокам про ООП Java
 

timaxa007

Модератор
5,831
409
672
Наоборот - ProxyCommon дополняет класс ProxyClient, так как ProxyClient унаследовал от ProxyCommon.
Если в классе унаследовавший другой класс и в унаследованном классе есть метод(-ы) с таким-же именем и с тем-же аргументами или без аргуметов, что и родителя, то они могу замениться и без @Override. И чтобы этих методах работал метод от родителя, ну нужен super этого метода.
Как показала моя практика, то @SideOnly(Side.CLIENT) не всегда выполняет свою задачу.
SideProxy нужно для отделения контента, а @SideOnly(Side.CLIENT) использовать для отделении части кода.
 
100
0
стоп судя по уроку про ООП https://www.youtube.com/watch?v=hJSECKKIfP4  это ПЕРЕЗАПИСЬ и у нас выполняется первыйм 
Client который перекидывает с помощью (super)  на Common  там что то выполняется то что на сервере , а потом уже выполняет то что на клиенте 

вот к примеру та тема с ником над головой это тоже ПЕРЕЗАПИСЬ и там в условие значение (super)  если оно не выполняется то метод в родителе не будит выполнен и ник над головой не появится

Извините за Флуд но хочется разобраться как правильно все работает.
 

timaxa007

Модератор
5,831
409
672
Да, правельно.
 
1,087
2
Код:
//CommonProxy
public class CommonProxy {

}
Код:
//ClientProxy
public class ClientProxy {

}
Никаких инитов не надо.
Подробнее о прокси.
Прокси для сервера (Common) нужен для серверной стороны, в основном там добавляют обычные методы. В клиентском делают другие КЛИЕНТСКИЕ штучки. Партиклы к примеру.
Но и каждый метод инитить в главном классе не надо, инитят только то, что связано с инитиализацией, пример:
Партиклы или к примеру "spawnRF" (Типо спаун РФ энергии) инитиализировать не надо, так как это вещи, которые не загружаются при запуске. А registerRenderers (к Примеру) надо инитиализировать, так как это операция происходящая при запуске майна (Регистрируются рендеры).
Надеюсь нормально объяснил, не знаю как можно по-другому.
Override это обычная метка, которая показывает, что метод находящийся в нашем классе был использован из унаследованного/имплементируемого класса.
В главном классе нужно это, кстати:
Код:
@SidedProxy(clientSide = "path_to_your_client_proxy", serverSide = "path_to_server/common_proxy)
public static CommonProxy proxy;
Common - означает" Другое", так что разницы нету между Common & Server.
 
100
0
вопросик я распределяю части  кода на клиент и сервер и использовал раньше условие if(!world.isRemote)по сути оно уже не нужно ?
 
1,087
2
Нужно. В данном случае во-первых проверка не на твой мод, а на мир.
 
Сверху