Codding 1.5.2
Приветствую, данный пост создан с целью популяризации программирования и профессии программиста
среди творческих личностей.
Перейду сразу к сути, без установки рабочей среды
Урок первый. Работа с GUI + инициализация
В этом уроке рассмотрим примитивный вывод никнейма, даты, времени и пинга в GUI
1. Создаем пакет и в нем первый класс вашего будущего проекта
package net.minecraft.fth;
public class Future {
}
2. Чтобы ваш класс "работал", инициализируем его в основном классе Minecraft
package net.minecraft.fth;
public class Future {
public static Minecraft mc; //объявляем статический класс переменной mc, который хранит в себе класс Minecraft. "Позволяет взаимодействовать с ним"
public Future() {
mc = Minecraft.getMinecraft(); // Инициализация mc
}
}
3. Открываем основной класс игры Minecraft и добавляем следующее
public abstract class Minecraft implements Runnable, IPlayerUsage
{
/** FTH */
public Future fth;
//Остальная часть кода
public Minecraft(Canvas par1Canvas, MinecraftApplet par2MinecraftApplet, int par3, int par4, boolean par5)
//код
this.fth = new Future();
//код
Таким образом, наш новый класс Future теперь может взаимодействовать с нашей игрой.
4. Добавление переменных.
package net.minecraft.fth;
public class Future {
public static Minecraft mc; // Объявляем статическую переменную mc, которая хранит в себе класс Minecraft. "Позволяет взаимодействовать с ним"
public int ping = 0; // Переменная для хранения значения пинга
private String pingTimeStr = "ping: 0 ms"; // Строка для отображения пинга
private static String dateTime = ""; // Строка для хранения текущей даты и времени
public static String timingInfo = ""; // Статическая строка для хранения информации о времени
public Future() {
mc = Minecraft.getMinecraft(); // Инициализация mc
}
}
5. Методы для обновления переменных
Теперь давайте добавим методы для обновления значений пинга и даты/времени. Эти методы будут вызываться в нужные моменты, например, при обновлении состояния игры.
public void updatePing(int newPing) {
this.ping = newPing; // Обновляем значение пинга
this.pingTimeStr = "ping: " + newPing + " ms"; // Обновляем строку для отображения пинга
}
public void updateDateTime() {
SimpleDateFormat sd = new SimpleDateFormat("dd.MM.yyyy HH:mm");
dateTime = sd.format(new Date()); // Обновляем строку с текущей датой и временем
}
6. Создание метода отрисовки информации в GUI
public void renderGUI(GuiIngame gui, int width, int height) {
GL11.glPushMatrix(); // Начало трансформации для масштабирования
GL11.glScalef(0.5F, 0.5F, 1.0F); // Масштабирование
// Начальные координаты для отрисовки
int startX = 44;
int startY = 13;
// Получение имени игрока
String playerName = mc.thePlayer.username;
mc.fontRenderer.drawStringWithShadow(playerName, startX + 20, startY - 10, 16777215); // Вывод никнейма
// Отображение времени пинга
mc.fontRenderer.drawStringWithShadow(this.pingTimeStr, 2 * width - 120, 2, 16777215); // Вывод пинга
// Обновление и отображение текущей даты и времени
SimpleDateFormat sd = new SimpleDateFormat("dd.MM.yyyy HH:mm");
String currentDateTime = sd.format(new Date()); // Получение текущей даты и времени
mc.fontRenderer.drawStringWithShadow(currentDateTime, 2 * width - 220, 2, 16777215); // Вывод даты и времени
GL11.glPopMatrix(); // Завершение трансформации
7. Полноценный код
package net.minecraft.fth;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.lwjgl.opengl.GL11;
import net.minecraft.client.Minecraft;
import net.minecraft.src.GuiIngame;
public class Future {
public static Minecraft mc; // Экземпляр Minecraft
private String pingTimeStr = "Ping: 0 ms"; // Строка для отображения пинга
private static String currentDateTime = ""; // Строка для хранения текущей даты и времени
private static int dateTimeCounter = 0; // Счетчик для обновления времени
public Future() {
mc = Minecraft.getMinecraft(); // Инициализация mc
}
// Метод для обновления пинга
public void updatePing(int newPing) {
this.pingTimeStr = "Ping: " + newPing + " ms"; // Обновление строки с пингом
}
// Метод для отрисовки информации в GUI
public void renderGUI(GuiIngame gui, int width, int height) {
GL11.glPushMatrix(); // Начало трансформации для масштабирования
GL11.glScalef(0.5F, 0.5F, 1.0F); // Масштабирование
// Начальные координаты для отрисовки
int startX = 44;
int startY = 13;
// Получение имени игрока
String playerName = mc.thePlayer.username;
mc.fontRenderer.drawStringWithShadow(playerName, startX + 20, startY - 10, 16777215); // Вывод никнейма
// Отображение времени пинга
mc.fontRenderer.drawStringWithShadow(this.pingTimeStr, 2 * width - 120, 2, 16777215); // Вывод пинга
// Обновление и отображение текущей даты и времени
if (dateTimeCounter == 0) {
SimpleDateFormat sd = new SimpleDateFormat("dd.MM.yyyy HH:mm");
currentDateTime = sd.format(new Date()); // Обновление строки с текущей датой и временем
dateTimeCounter = 1000; // Сброс счетчика
} else {
dateTimeCounter--;
}
mc.fontRenderer.drawStringWithShadow(currentDateTime, 2 * width - 220, 2, 16777215); // Вывод даты и времени
GL11.glPopMatrix(); // Завершение трансформации
}
}
Что Вы узнали в этом уроке:
1. Создание класса: Вы создали класс, который отвечает за отображение информации в GUI.
2. Инициализация Minecraft: Вы узнали, как получить доступ к экземпляру Minecraft для взаимодействия с игровым миром.
3. Обновление данных: Вы научились обновлять значения пинга и текущей даты/времени.
4. Отрисовка информации: Вы реализовали метод для отрисовки информации на экране с использованием OpenGL.
5. Интеграция с игрой: Вы узнали, как интегрировать ваш класс в основной цикл игры, чтобы информация обновлялась в реальном времени.
Урок второй. Создание логики разрушения и строительства блоков + вывод
Технические шоколадки
Если Вам понравилось, накидайте лайков. Данная тема будет обновляться.