Вверх ↑
Этот топик читают: Гость
Выберите свой возраст
1)
(3/24)
2)
(0/24)
3)
(21/24)

Ответов: 466
#1: 2025-01-27 18:29:12 ЛС | профиль | цитата
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. Интеграция с игрой: Вы узнали, как интегрировать ваш класс в основной цикл игры, чтобы информация обновлялась в реальном времени.


Урок второй. Создание логики разрушения и строительства блоков + вывод
Технические шоколадки

Если Вам понравилось, накидайте лайков. Данная тема будет обновляться.
карма: 49
4
Голосовали:Strife, Shmel, NePalevo, Alamartlt
Ответов: 103
Alliance
0xffffff
#2: 2025-01-27 18:31:25 ЛС | профиль | цитата
Burs писал(а):
популяризации программирования и профессии программиста

Куда больше...
карма: -11
2
Голосовали:Burs, lbvtynjh
Ответов: 336
Silence
Безмолвие
#3: 2025-01-27 18:39:30 ЛС | профиль | цитата
Было бы круто увидеть уроки по созданию плагинов. Вот это для меня было бы полезным.
карма: -20
Я пример отблеска высшей гармонии
0
Ответов: 20
rakuzan
rakuzan
#4: 2025-01-27 21:34:27 ЛС | профиль | цитата
Круг замкнулся. Сначала программисты учились играть в майн, теперь игроки учатся программировать
карма: 0
helos
0
Ответов: 3018
Monte Carlo
Твинки КМ
#5: 2025-01-28 01:55:18 ЛС | профиль | цитата
А что, в программировании еще остались творческие личности?
карма: -39
В гулэг, товарищи
0
Модератор форума
Ответов: 4636
Noir Villar
Дионис
#6: 2025-01-28 09:24:01 ЛС | профиль | цитата
Burs писал(а):
Выберите свой возраст

а где?
карма: 75
0
Ответов: 1053
TRoN
Платит за КМ
#7: 2025-01-28 22:30:08 ЛС | профиль | цитата
а что 28+, мы шутка какая ...?((((


Хотелось бы не только текстовый формат но и видосик с объяснением, не воспринимаю текст....((
карма: 125
0
7
Сообщение
...