Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Туториал Делаем кнопки "Зайти на сервер", "Обновить" и отображение кол-ва игроков в гл. меню.

Ну вот же например так!
Объявляем переменные
private static ServerData sd = new ServerData("Имя сервера", "ip");
private static GuiButton multiplayerButton;
Добавляем саму кнопку
this.buttonList.add(new GuiButton(2, this.width / 2 - 100, p_73969_1_ + p_73969_2_ * 1, I18n.format("menu.multiplayer", new Object[0])));
Добавляем код кнопки
if (p_146284_1_.id == 2) {
FMLClientHandler.instance().connectToServer(new GuiMultiplayer(this), this.sd);
}
 
Ну вот же например так!
Объявляем переменные

Добавляем саму кнопку

Добавляем код кнопки
Блин, ты людей вообще слушаешь?
Мне нужно подключение НАПРЯМУЮ, где только один IP. Кстати, так было в версиях по 1.7.3b
Я-то сделал, но прдключиться по указанному адресу или выйти назад не получается, при нажатии на кнопки ничего не происходит
 
Блин, ты людей вообще слушаешь?
Мне нужно подключение НАПРЯМУЮ, где только один IP. Кстати, так было в версиях по 1.7.3b
Я-то сделал, но прдключиться по указанному адресу или выйти назад не получается, при нажатии на кнопки ничего не происходит
В шапке код для подключения напрямую, никакие прокси или что-то подобное не используется, IP только один. Что не устраивает?
 
В шапке код для подключения напрямую, никакие прокси или что-то подобное не используется, IP только один. Что не устраивает?
Я ещё раз грю: НАПРЯМУЮ, как в сетевой игре: жмакаешь, ВВОДИШЬ айпи и нажимаешь подключиться. У игрока два варианта: либо подключаться из главного меню по кнопке из туториала, либо использовать клиент для подключения к другим серверам БЕЗ списка с добавлением/удалением
Дома сделаю скриншоты
 
Я ещё раз грю: НАПРЯМУЮ, как в сетевой игре: жмакаешь, ВВОДИШЬ айпи и нажимаешь подключиться. У игрока два варианта: либо подключаться из главного меню по кнопке из туториала, либо использовать клиент для подключения к другим серверам БЕЗ списка с добавлением/удалением
Дома сделаю скриншоты
Как всё запущено!
Сделайте на каждый серв по кнопке! Зачем каждый раз вводить ip??
 
Последнее редактирование:
Я ещё раз грю: НАПРЯМУЮ, как в сетевой игре: жмакаешь, ВВОДИШЬ айпи и нажимаешь подключиться. У игрока два варианта: либо подключаться из главного меню по кнопке из туториала, либо использовать клиент для подключения к другим серверам БЕЗ списка с добавлением/удалением
Дома сделаю скриншоты
Это называется не "напрямую", а "подключение с ручным вводом IP адреса".
 
@Artmoneyse, просто скажите что вы не умеете кодить и ничем не сможете помочь. Я хочу, чтобы через клиент иногда можно было заходить на небоевые (например, тестовые) наши сервера с моего клиента.

@gamerforEA, вот это как раз называется напрямую (мета-сообщение: каким "rусификатором" вы пользуетесь вообще?). А то что в теме, называется подключением из главного меню. Всё, вы итак поняли что я имел в виду, и если не можете помочь - так и скажите, а болтовнёй и спорами как правильно ничего не добьёшься
 
@Artmoneyse, просто скажите что вы не умеете кодить и ничем не сможете помочь. Я хочу, чтобы через клиент иногда можно было заходить на небоевые (например, тестовые) наши сервера с моего клиента.

@gamerforEA, вот это как раз называется напрямую (мета-сообщение: каким "rусификатором" вы пользуетесь вообще?). А то что в теме, называется подключением из главного меню. Всё, вы итак поняли что я имел в виду, и если не можете помочь - так и скажите, а болтовнёй и спорами как правильно ничего не добьёшься
  1. Помочь не могу.
  2. Какой дурак решил так обозвать подключение с ручным вводом адреса - не знаю, но с полной уверенностью могу сказать, что и то, что вам нужно, и то, что я описал в теме, можно считать подключением напрямую.
 
Не понял, а зачем создавать отдельный класс-файл для пингера? Почему не поместить его код в GuiMainMenu? Все же работает!
Не спорю, работает, но я не люблю делать "матрёшку" из классов (классы внутри классов).
 
Смысла нет, трейд создаст класс с доллором все равно.
-facepalm-, а я говорил, что компилятор его не создаст? Я просто говорю, что не вижу !особого! смысла делать все в разных классах. Кстати, что такое трейд? Трейд - как бы торговля. XD
 
-facepalm-, а я говорил, что компилятор его не создаст? Я просто говорю, что не вижу !особого! смысла делать все в разных классах. Кстати, что такое трейд? Трейд - как бы торговля. XD
thread - поток! )
 
thread читается как "тред", а не "трейд"! Я английский, слава богу, знаю.
Не, может @alexandrage и имел ввиду поток, но почему поток? Ведь классы создает компилятор java!
Блин, постоянно забываю добавить проверку на null в туториал для 1.6.4. Спасибо, что напомнили. :)
В туториале для 1.7.10 тоже есть null ) Возможно это потому, что я использую код для 1.7.10 на 1.8, но все равно, null он и в 1.8 null
Не спорю, работает, но я не люблю делать "матрёшку" из классов (классы внутри классов).
Все, пардон за мнооооого ереси) Понял, когда столкнулся с проблемой XD. Оказывается, когда этот класс (если он в классе GuiMainMenu) при реобфускации сохраняется не как GuiMainMenu$Pinger.class, а просто Pinger.class. А так, как внутри класса нельзя вставлять 2 public - класса, он тупо становится невидимым для других классов)
@Artmoneyse, просто скажите что вы не умеете кодить и ничем не сможете помочь. Я хочу, чтобы через клиент иногда можно было заходить на небоевые (например, тестовые) наши сервера с моего клиента.

@gamerforEA, вот это как раз называется напрямую (мета-сообщение: каким "rусификатором" вы пользуетесь вообще?). А то что в теме, называется подключением из главного меню. Всё, вы итак поняли что я имел в виду, и если не можете помочь - так и скажите, а болтовнёй и спорами как правильно ничего не добьёшься
Сударь, как вы девелопером стали?) Это организовать проще простого! Вот тебе инструкция.

В классе GuiMainMenu добавляем следующие импорты:
Java:
import net.minecraft.client.multiplayer.GuiConnecting;
import net.minecraft.client.multiplayer.ServerData;

Далее в теле класса создаем следующие поля (хз как правильно называть):
Java:
  private ServerData selectedServer;
  private boolean directConnect;
  private ServerSelectionList serverListSelector;

Теперь создаем простую кнопку (такой код заменит кнопку риалмс):
Java:
 this.buttonList.add(new GuiButton(9999, this.width / 2 - 100, p_73969_1_ + p_73969_2_ * 2, I18n.format("Direct Connect", new Object[0])));

Создаем обработчик кнопки (в методе actionPerformed):
Java:
    if (button.id == 9999)
  {
  this.directConnect = true;
  this.mc.displayGuiScreen(new GuiScreenServerList(this, this.selectedServer = new ServerData(I18n.format("selectServer.defaultName", new Object[0]), "")));
  }
Делаем обработчик этого обработчика (в методе confirmClicked, всовываем код в конец тела метода):
Java:
else if (this.directConnect)
  {
  this.directConnect = false;

  if (result)
  {
  this.mc.displayGuiScreen(new GuiConnecting(this, this.mc, this.selectedServer));
  }
  else
  {
  this.mc.displayGuiScreen(this);
  }
  }

И все! Надо только удалить кнопку риалмс и рекомпилить.
 
В чём ошибка?
src\minecraft\net\minecraft\client\gui\GuiMainMenu.java:3: error: package cpw.mods.fml.client does not exist

import cpw.mods.fml.client.FMLClientHandler;

^

src\minecraft\net\minecraft\client\gui\GuiMainMenu.java:4: error: package cpw.mods.fml.client does not exist

import cpw.mods.fml.client.GuiModList;

^

src\minecraft\net\minecraft\client\gui\GuiMainMenu.java:5: error: package cpw.mods.fml.common does not exist

import cpw.mods.fml.common.FMLCommonHandler;

^

src\minecraft\net\minecraft\client\gui\GuiMainMenu.java:6: error: package cpw.mods.fml.relauncher does not exist

import cpw.mods.fml.relauncher.Side;

^

src\minecraft\net\minecraft\client\gui\GuiMainMenu.java:7: error: package cpw.mods.fml.relauncher does not exist

import cpw.mods.fml.relauncher.SideOnly;

^

src\minecraft\net\minecraft\client\gui\GuiMainMenu.java:33: error: package net.minecraftforge.client does not exist

import net.minecraftforge.client.ForgeHooksClient;

^

src\minecraft\net\minecraft\client\gui\GuiMainMenu.java:46: error: cannot find symbol

@SideOnly(Side.CLIENT)

^

symbol: class SideOnly

src\minecraft\net\minecraft\client\gui\GuiMainMenu.java:241: error: cannot find symbol

this.field_92021_u = ((GuiButton)this.buttonList.get(0)).yPosition - 24;

^

symbol: variable yPosition

location: class GuiButton

src\minecraft\net\minecraft\client\gui\GuiMainMenu.java:265: error: cannot find symbol

updateButton.width = 49;

^

symbol: variable width

location: variable updateButton of type GuiButton

src\minecraft\net\minecraft\client\gui\GuiMainMenu.java:269: error: cannot find symbol

multiplayerButton.width = 149;

^

symbol: variable width

location: variable multiplayerButton of type GuiButton

src\minecraft\net\minecraft\client\gui\GuiMainMenu.java:325: error: cannot find symbol

FMLClientHandler.instance().connectToServer(new GuiMultiplayer(this), this.sd);

^

symbol: variable FMLClientHandler

location: class GuiMainMenu

src\minecraft\net\minecraft\client\gui\GuiMainMenu.java:346: error: cannot find symbol

this.mc.displayGuiScreen(new GuiModList(this));

^

symbol: class GuiModList

location: class GuiMainMenu

src\minecraft\net\minecraft\client\gui\GuiMainMenu.java:613: error: cannot find symbol

ForgeHooksClient.renderMainMenu(this, fontRendererObj, width, height);

^

symbol: variable ForgeHooksClient

location: class GuiMainMenu

src\minecraft\net\minecraft\client\gui\GuiMainMenu.java:621: error: cannot find symbol

this.drawString(this.fontRendererObj, this.field_146972_A, (this.width - this.field_92024_r) / 2, ((GuiButton)this.buttonList.get(0)).yPosition - 12, -1);

^

symbol: variable yPosition

location: class GuiButton

Note: Some input files use unchecked or unsafe operations.

Note: Recompile with -Xlint:unchecked for details.

14 errors./spoiler]
 
thread читается как "тред", а не "трейд"! Я английский, слава богу, знаю.

Не, может @alexandrage и имел ввиду поток, но почему поток? Ведь классы создает компилятор java!

В туториале для 1.7.10 тоже есть null ) Возможно это потому, что я использую код для 1.7.10 на 1.8, но все равно, null он и в 1.8 null

Все, пардон за мнооооого ереси) Понял, когда столкнулся с проблемой XD. Оказывается, когда этот класс (если он в классе GuiMainMenu) при реобфускации сохраняется не как GuiMainMenu$Pinger.class, а просто Pinger.class. А так, как внутри класса нельзя вставлять 2 public - класса, он тупо становится невидимым для других классов)

Сударь, как вы девелопером стали?) Это организовать проще простого! Вот тебе инструкция.

В классе GuiMainMenu добавляем следующие импорты:
Java:
import net.minecraft.client.multiplayer.GuiConnecting;
import net.minecraft.client.multiplayer.ServerData;

Далее в теле класса создаем следующие поля (хз как правильно называть):
Java:
  private ServerData selectedServer;
  private boolean directConnect;
  private ServerSelectionList serverListSelector;

Теперь создаем простую кнопку (такой код заменит кнопку риалмс):
Java:
 this.buttonList.add(new GuiButton(9999, this.width / 2 - 100, p_73969_1_ + p_73969_2_ * 2, I18n.format("Direct Connect", new Object[0])));

Создаем обработчик кнопки (в методе actionPerformed):
Java:
    if (button.id == 9999)
  {
  this.directConnect = true;
  this.mc.displayGuiScreen(new GuiScreenServerList(this, this.selectedServer = new ServerData(I18n.format("selectServer.defaultName", new Object[0]), "")));
  }
Делаем обработчик этого обработчика (в методе confirmClicked, всовываем код в конец тела метода):
Java:
else if (this.directConnect)
  {
  this.directConnect = false;

  if (result)
  {
  this.mc.displayGuiScreen(new GuiConnecting(this, this.mc, this.selectedServer));
  }
  else
  {
  this.mc.displayGuiScreen(this);
  }
  }

И все! Надо только удалить кнопку риалмс и рекомпилить.
Ты только сейчас понял что многие получали плашку девел просто так... В то время как многие реальные кодеры без плашки все.
Привыкай, ведро уже давно в говно скатилось.
 
Ты только сейчас понял что многие получали плашку девел просто так... В то время как многие реальные кодеры без плашки все.
Привыкай, ведро уже давно в говно скатилось.
:cry::creeper:
В чём ошибка?
src\minecraft\net\minecraft\client\gui\GuiMainMenu.java:3: error: package cpw.mods.fml.client does not exist

import cpw.mods.fml.client.FMLClientHandler;

^

src\minecraft\net\minecraft\client\gui\GuiMainMenu.java:4: error: package cpw.mods.fml.client does not exist

import cpw.mods.fml.client.GuiModList;

^

src\minecraft\net\minecraft\client\gui\GuiMainMenu.java:5: error: package cpw.mods.fml.common does not exist

import cpw.mods.fml.common.FMLCommonHandler;

^

src\minecraft\net\minecraft\client\gui\GuiMainMenu.java:6: error: package cpw.mods.fml.relauncher does not exist

import cpw.mods.fml.relauncher.Side;

^

src\minecraft\net\minecraft\client\gui\GuiMainMenu.java:7: error: package cpw.mods.fml.relauncher does not exist

import cpw.mods.fml.relauncher.SideOnly;

^

src\minecraft\net\minecraft\client\gui\GuiMainMenu.java:33: error: package net.minecraftforge.client does not exist

import net.minecraftforge.client.ForgeHooksClient;

^

src\minecraft\net\minecraft\client\gui\GuiMainMenu.java:46: error: cannot find symbol

@SideOnly(Side.CLIENT)

^

symbol: class SideOnly

src\minecraft\net\minecraft\client\gui\GuiMainMenu.java:241: error: cannot find symbol

this.field_92021_u = ((GuiButton)this.buttonList.get(0)).yPosition - 24;

^

symbol: variable yPosition

location: class GuiButton

src\minecraft\net\minecraft\client\gui\GuiMainMenu.java:265: error: cannot find symbol

updateButton.width = 49;

^

symbol: variable width

location: variable updateButton of type GuiButton

src\minecraft\net\minecraft\client\gui\GuiMainMenu.java:269: error: cannot find symbol

multiplayerButton.width = 149;

^

symbol: variable width

location: variable multiplayerButton of type GuiButton

src\minecraft\net\minecraft\client\gui\GuiMainMenu.java:325: error: cannot find symbol

FMLClientHandler.instance().connectToServer(new GuiMultiplayer(this), this.sd);

^

symbol: variable FMLClientHandler

location: class GuiMainMenu

src\minecraft\net\minecraft\client\gui\GuiMainMenu.java:346: error: cannot find symbol

this.mc.displayGuiScreen(new GuiModList(this));

^

symbol: class GuiModList

location: class GuiMainMenu

src\minecraft\net\minecraft\client\gui\GuiMainMenu.java:613: error: cannot find symbol

ForgeHooksClient.renderMainMenu(this, fontRendererObj, width, height);

^

symbol: variable ForgeHooksClient

location: class GuiMainMenu

src\minecraft\net\minecraft\client\gui\GuiMainMenu.java:621: error: cannot find symbol

this.drawString(this.fontRendererObj, this.field_146972_A, (this.width - this.field_92024_r) / 2, ((GuiButton)this.buttonList.get(0)).yPosition - 12, -1);

^

symbol: variable yPosition

location: class GuiButton

Note: Some input files use unchecked or unsafe operations.

Note: Recompile with -Xlint:unchecked for details.

14 errors./spoiler]
Ты делаешь forge мод в MCP, вот в чем ошибка)
 
Ты только сейчас понял что многие получали плашку девел просто так... В то время как многие реальные кодеры без плашки все.
Привыкай, ведро уже давно в говно скатилось.
Да, конечно, я тоже в своё время ныл по этому поводу, в этом ты копия меня. А нужно всего то было написать админу (я, чтоб уж наверняка, ещё перечислял свои заслуги перед сообществом), ибо он не будет и не должен парсить тысячи сообщений чтобы разобрать, а кому же это ему дать плашку, типа он только об этом и думает. Это не его работа. И что–то я тут не вижу плашек девелопера априори — их не так уж много, как ты тут раздуваешь. А я ещё за тебя хотел тогда ратовать, но подумал что «лучше пускай он сам напишет админу, а то тот мне ещё скажет что он [субъект ратования] не инвалид, сам напишет», и сочёл это безсмысленным
 
Да, конечно, я тоже в своё время ныл по этому поводу, в этом ты копия меня. А нужно всего то было написать админу (я, чтоб уж наверняка, ещё перечислял свои заслуги перед сообществом), ибо он не будет и не должен парсить тысячи сообщений чтобы разобрать, а кому же это ему дать плашку, типа он только об этом и думает. Это не его работа. И что–то я тут не вижу плашек девелопера априори — их не так уж много, как ты тут раздуваешь. А я ещё за тебя хотел ратовать
Я тебе помог, умник XD?
 

Поделиться этой страницей

Назад
Верх