Помогите сделать gui

Версия Minecraft
1.7.10
43
0
Всем привет, у меня одна проблема я немногую сделать gui, даже самое простое, я хочу чтоб я нажал на предмет ПКМ и умения открылся gui просто картинка.Если здесь есть знатные люди сможете написать этот код, а я по этому образцу буде делать другие gui и если вам несоставит труда то пожалуйста напишите куда само gui регистрировать. Заранее спасибо
 
7,099
324
1,510
Туторов много от разных авторов, даже на русском видел где-то


Например: http://forum.mcmodding.ru/%D0%A2%D0%B5%D0%BC%D0%B0-GUI-%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BF%D1%80%D0%BE%D1%81%D1%82%D0%BE%D0%B3%D0%BE-%D0%93%D0%9F%D0%98?highlight=gui
 
7,099
324
1,510
Они все правильные.


Ну хотя бы тутор из раздела учебник - правильный
 

timaxa007

Модератор
5,831
409
672
Код:
public class ItemBook extends Item {

	@SideOnly(Side.CLIENT)
	@Override
	public ItemStack onItemRightClick(ItemStack is, World world, EntityPlayer player) {
		Minecraft mc = Minecraft.getMinecraft();
		mc.displayGuiScreen(new BookGui(player));
		return super.onItemRightClick(is, world, player);
	}

}

Код:
public class BookGui extends GuiScreen {

	EntityPlayer player;

	private int xSize = 176;
	private int ySize = 166;

	private static final ResourceLocation texture = new ResourceLocation("modID", "textures/gui/gui_test.png");

	public BookGui(EntityPlayer player) {
		this.player = player;
	}

	@Override
	public void keyTyped(char character, int key) {
		if (key == mc.gameSettings.keyBindInventory.getKeyCode()) {//E
			mc.displayGuiScreen((GuiScreen)null);
			mc.setIngameFocus();
		} else {
			super.keyTyped(character, key);
		}
	}

	@Override
	public void drawScreen(int mouseX, int mouseY, float parTick) {
		drawDefaultBackground();

		GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
		mc.getTextureManager().bindTexture(texture);
		int posX = (width - xSize) / 2;
		int posY = (height - ySize) / 2;
		drawTexturedModalRect(posX, posY, 0, 0, xSize, ySize);

		super.drawScreen(mouseX, mouseY, parTick);
	}

	@Override
	public boolean doesGuiPauseGame() {
		return false;
	}

}
 
43
0
Спасибо тебе огромное получилось, но только как теперь добавлять на это gui иконки (другие картинки ?)

Код:
public class ItemBook extends Item {

 @SideOnly(Side.CLIENT)
 @Override
 public ItemStack onItemRightClick(ItemStack is, World world, EntityPlayer player) {
 Minecraft mc = Minecraft.getMinecraft();
 mc.displayGuiScreen(new BookGui(player));
 return super.onItemRightClick(is, world, player);
 }

}

Код:
public class BookGui extends GuiScreen {

 EntityPlayer player;

 private int xSize = 176;
 private int ySize = 166;

 private static final ResourceLocation texture = new ResourceLocation("modID", "textures/gui/gui_test.png");

 public BookGui(EntityPlayer player) {
 this.player = player;
 }

 @Override
 public void keyTyped(char character, int key) {
 if (key == mc.gameSettings.keyBindInventory.getKeyCode()) {//E
 mc.displayGuiScreen((GuiScreen)null);
 mc.setIngameFocus();
 } else {
 super.keyTyped(character, key);
 }
 }

 @Override
 public void drawScreen(int mouseX, int mouseY, float parTick) {
 drawDefaultBackground();

 GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
 mc.getTextureManager().bindTexture(texture);
 int posX = (width - xSize) / 2;
 int posY = (height - ySize) / 2;
 drawTexturedModalRect(posX, posY, 0, 0, xSize, ySize);

 super.drawScreen(mouseX, mouseY, parTick);
 }

 @Override
 public boolean doesGuiPauseGame() {
 return false;
 }

}
 

timaxa007

Модератор
5,831
409
672
Добавить элементы на текстуре и после:
Код:
drawTexturedModalRect(posX, posY, 0, 0, xSize, ySize);
добавить, что-то подобное:
Код:
drawTexturedModalRect(posX + 56, posY + 48, 176, 0, 14, 14);
 

timaxa007

Модератор
5,831
409
672
В твоём Gui переменная "texture" в методе "drawScreen" есть строчка:
Код:
mc.getTextureManager().bindTexture(texture);
После этой строчки присваивается эта текстура для всяких drawTexturedModalRect и т.п. действий.
 
43
0
timaxa007 написал(а):
В твоём Gui переменная "texture" в методе "drawScreen" есть строчка:
Код:
mc.getTextureManager().bindTexture(texture);
После этой строчки присваивается эта текстура для всяких drawTexturedModalRect и т.п. действий.

Спасибо тебе огромное, щяс знаю намного больше, смотрел эти туториалы не черта не помогли, а ты объяснил сейчас понял как делать эти Gui, но у меня ещё один вопрос я во ты например хочу чтоб у меня в gui была картинка и я на неё нажал и у меня прозвучал звук и открылась другая gui
 

timaxa007

Модератор
5,831
409
672
Mathios написал(а):
я во ты например хочу чтоб у меня в gui была картинка и я на неё нажал и у меня прозвучал звук и открылась другая gui
Смотри как сделана кнопка.
По определённым координатам, то что был сделан клик, за тем воспроизводиться звук и выполняться какое-то действие.
 
43
0
timaxa007 написал(а):
Mathios написал(а):
я во ты например хочу чтоб у меня в gui была картинка и я на неё нажал и у меня прозвучал звук и открылась другая gui
Смотри как сделана кнопка.
По определённым координатам, то что был сделан клик, за тем воспроизводиться звук и выполняться какое-то действие.

А как следить за координатами ?
 
43
0
etimaxa007 написал(а):
К примеру можно использовать метод drawScreen два первых аргументы - это координаты стрелки мышки.

Понятно, слушай смотри когда заходишь в инвентарь там можно увидеть себя ну игрока короч, а можно его перенести и в gui если можно то как называется метод ?
 
43
0
timaxa007 написал(а):
Код:
net.minecraft.client.gui.inventory.GuiInventory#func_147046_a(int, int, int, float, float , EntityLivingBase);

Большое спасибо ! И у меня последний вопрос вот я сделал надпись на Gui name: и мне надо чтоб после : стояло имя игрока что это за метод
 

timaxa007

Модератор
5,831
409
672
Mathios написал(а):
Большое спасибо !
Пожалуйста.

Mathios написал(а):
вот я сделал надпись на Gui name: и мне надо чтоб после : стояло имя игрока что это за метод
Я не очень о чём ты.


Тебе это нужно?
Код:
Minecraft.getMinecraft().thePlayer.getCommandSenderName();
 

timaxa007

Модератор
5,831
409
672
Какого определённого игрока или игрока который на клиенте? Если первое, то это нужно откуда-то брать. Если второе, то ответ выше.


Код:
"Name: " + player.getCommandSenderName();
 
Сверху