Как создать кнопку, поле для ввода и текст? ( При нажатии H )

Версия Minecraft
1.7.10
Здравствуйте я недавно разобрался как установить Eclipse но освоить еще не успел, помогите пожалуйста, ответьте на несколько вопросов.
1) Как создать кнопку при нажатии клавиши H ? ( В самой игре а не в меню ).
2) Как отправить пакет на сервер с нужными данными ?
 

timaxa007

Модератор
5,831
409
672
TTpu3paK написал(а):
Приветствую.

TTpu3paK написал(а):
1) Как создать кнопку при нажатии клавиши H ? ( В самой игре а не в меню ).
Код:
public class ProxyClient extends ProxyServer {

	public static final KeyBinding h = new KeyBinding("key.h.name", Keyboard.KEY_H, "category.control_button.name");

	@Override
	public void preInit() {
		ClientRegistry.registerKeyBinding(h);
	}

}
TTpu3paK написал(а):
2) Как отправить пакет на сервер с нужными данными ?
В учебнике написано.
 
timaxa007 написал(а):
TTpu3paK написал(а):
Приветствую.

TTpu3paK написал(а):
1) Как создать кнопку при нажатии клавиши H ? ( В самой игре а не в меню ).
Код:
public class ProxyClient extends ProxyServer {

 public static final KeyBinding h = new KeyBinding("key.h.name", Keyboard.KEY_H, "category.control_button.name");

 @Override
 public void preInit() {
 ClientRegistry.registerKeyBinding(h);
 }

}
TTpu3paK написал(а):
2) Как отправить пакет на сервер с нужными данными ?
В учебнике написано.
KHMg2IuETwyksw6fdV-Jhw.png

Что я сделал не так? 
Пожалуйста, потрать на меня немного своих нервов, я первый раз все таки этим занимаюсь, прошу.
 

timaxa007

Модератор
5,831
409
672
ProxyClient это отдельный класс, так-же как и ProxyServer, они должны быть твоими.
Код:
	@SidedProxy(modId = MODID, serverSide = "your.package.ProxyServer", clientSide = "your.package.ProxyClient")
	public static ProxyServer proxy;

	@Mod.EventHandler
	public void preInit(FMLPreInitializationEvent event) {
		proxy.preInit();
	}


Код:
public class ProxyServer {

public void preInit() {
}

}
 
timaxa007 написал(а):
ProxyClient это отдельный класс, так-же как и ProxyServer, они должны быть твоими.
Код:
 @SidedProxy(modId = MODID, serverSide = "your.package.ProxyServer", clientSide = "your.package.ProxyClient")
 public static ProxyServer proxy;

 @Mod.EventHandler
 public void preInit(FMLPreInitializationEvent event) {
 proxy.preInit();
 }


Код:
public class ProxyServer {

public void preInit() {
}

}




Сложна(
 

timaxa007

Модератор
5,831
409
672
TTpu3paK написал(а):
Как создать кнопку, поле для ввода и текст?
Код:
public class GuiModelView extends GuiScreen {

	GuiTextField inputField;
	GuiButton buttonDefault;

	@Override
	public void initGui() {
		Keyboard.enableRepeatEvents(true);

		if (inputField == null) {
			inputField = new GuiTextField(fontRendererObj, width - 70, 14 * 1, 68, 12);
			inputField.setMaxStringLength(10);
			inputField.setText("");
		} else
			inputField.xPosition = width - 70;

		buttonList.clear();
		buttonList.add(buttonDefault = new GuiButton(0, width - 70, 170, 60, 20, "Default"));
	}

	@Override
	public void onGuiClosed() {
		Keyboard.enableRepeatEvents(false);
	}

	@Override
	public void updateScreen() {
		inputField.updateCursorCounter();
	}

	@Override
	public void actionPerformed(GuiButton btn) {
		if (btn.enabled) {
			switch(btn.id) {
			case 0:
				break;
			}
		}
	}

	@Override
	public void keyTyped(char character, int key) {
		switch(key) {
		case Keyboard.KEY_ESCAPE:
			mc.displayGuiScreen((GuiScreen)null);
			mc.setIngameFocus();
			break;
		default:
			break;
		}
	}

	@Override
	public void mouseClicked(int mouseX, int mouseY, int state) {
		inputField.mouseClicked(mouseX, mouseY, state);
		super.mouseClicked(mouseX, mouseY, state);
	}

	@Override
	public void drawScreen(int mouseX, int mouseY, float parTick) {
		inputField.drawTextBox();

		mc.fontRenderer.drawStringWithShadow("x", width - 70 - 10, 1 + 14 * 1, 0xFFFFFF);

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

}


TTpu3paK написал(а):
Не очень.
 
timaxa007 написал(а):
TTpu3paK написал(а):
Как создать кнопку, поле для ввода и текст?
Код:
public class GuiModelView extends GuiScreen {

 GuiTextField inputField;
 GuiButton buttonDefault;

 @Override
 public void initGui() {
 Keyboard.enableRepeatEvents(true);

 if (inputField == null) {
 inputField = new GuiTextField(fontRendererObj, width - 70, 14 * 1, 68, 12);
 inputField.setMaxStringLength(10);
 inputField.setText("");
 } else
 inputField.xPosition = width - 70;

 buttonList.clear();
 buttonList.add(buttonDefault = new GuiButton(0, width - 70, 170, 60, 20, "Default"));
 }

 @Override
 public void onGuiClosed() {
 Keyboard.enableRepeatEvents(false);
 }

 @Override
 public void updateScreen() {
 inputField.updateCursorCounter();
 }

 @Override
 public void actionPerformed(GuiButton btn) {
 if (btn.enabled) {
 switch(btn.id) {
 case 0:
 break;
 }
 }
 }

 @Override
 public void keyTyped(char character, int key) {
 switch(key) {
 case Keyboard.KEY_ESCAPE:
 mc.displayGuiScreen((GuiScreen)null);
 mc.setIngameFocus();
 break;
 default:
 break;
 }
 }

 @Override
 public void mouseClicked(int mouseX, int mouseY, int state) {
 inputField.mouseClicked(mouseX, mouseY, state);
 super.mouseClicked(mouseX, mouseY, state);
 }

 @Override
 public void drawScreen(int mouseX, int mouseY, float parTick) {
 inputField.drawTextBox();

 mc.fontRenderer.drawStringWithShadow("x", width - 70 - 10, 1 + 14 * 1, 0xFFFFFF);

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

}


TTpu3paK написал(а):
Не очень.



Я все равно не понимаю что я не так делаю, пожалуйста можете проверить, вот код :
Код:
package com.example.examplemod;

import net.minecraft.init.Blocks;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.event.FMLInitializationEvent;

@Mod(modid="Test",name="Test",version="0.1")
public class ExampleMod
{
    public static final String MODID = "Test";
    public static final String VERSION = "0.1";
    
    @EventHandler
    public void init(FMLInitializationEvent event)
    {
     
    }


    @Override
    public void actionPerformed(GuiButton btn) {
        if (btn.enabled) {
            switch(btn.id) {
            case 0:
                break;
            }
        }
    }

    @Override
    public void keyTyped(char character, int key) {
        switch(key) {
        case Keyboard.KEY_ESCAPE:
            mc.displayGuiScreen((GuiScreen)null);
            mc.setIngameFocus();
            break;
        default:
            break;
        }
    }

    @Override
    public void mouseClicked(int mouseX, int mouseY, int state) {
        inputField.mouseClicked(mouseX, mouseY, state);
        super.mouseClicked(mouseX, mouseY, state);
    }

    @Override
    public void drawScreen(int mouseX, int mouseY, float parTick) {
        inputField.drawTextBox();

        mc.fontRenderer.drawStringWithShadow("x", width - 70 - 10, 1 + 14 * 1, 0xFFFFFF);

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

}
}
 

timaxa007

Модератор
5,831
409
672
GuiModelView - это опять-же отдельный метод.

Код:
@Mod(modid="Test",name="Test",version="0.1")
public class ExampleMod
{
   public static final String MODID = "Test";
   public static final String VERSION = "0.1";
   
 @SidedProxy(modId = MODID, serverSide = "your.package.ProxyServer", clientSide = "your.package.ProxyClient")
    public static ProxyServer proxy;

    @Mod.EventHandler
    public void preInit(FMLPreInitializationEvent event) {
        proxy.preInit();
    }

}
 
5,021
47
784
То неловкое чувство когда еще даже не написал главный класс, но уже хранишь секретность, закрашивая ExampleMod :)
 
2,505
81
397
Maxik001 написал(а):
То неловкое чувство когда еще даже не написал главный класс
Аннотации Mod вполне достаточно для главного класса.


Garik1303 написал(а):
Ору!!! Видно намечается глобальный проект!
Вообще-то это тот самый чит к ТС
 
691
1
5
Dahaka написал(а):
Maxik001 написал(а):
То неловкое чувство когда еще даже не написал главный класс
Аннотации Mod вполне достаточно для главного класса.


Garik1303 написал(а):
Ору!!! Видно намечается глобальный проект!
Вообще-то это тот самый чит к ТС


Ну так чем не глобальный?
 
5,021
47
784
Те уже обьяснили. Почитай  Посмотри основы.
https://www.youtube.com/playlist?list=PLEvI1OiL1F3ctezdKwvJnQK2f_H8U0HqK
 
Я так понял, мне нужно было создать еще один класс и вставить туда этот код :
package com.example.examplemod;

public class GuiModelView extends GuiScreen {

GuiTextField inputField;
GuiButton buttonDefault;

@Override
public void initGui() {
Keyboard.enableRepeatEvents(true);

if (inputField == null) {
inputField = new GuiTextField(fontRendererObj, width - 70, 14 * 1, 68, 12);
inputField.setMaxStringLength(10);
inputField.setText("");
} else
inputField.xPosition = width - 70;

buttonList.clear();
buttonList.add(buttonDefault = new GuiButton(0, width - 70, 170, 60, 20, "Default"));
}

@Override
public void onGuiClosed() {
Keyboard.enableRepeatEvents(false);
}

@Override
public void updateScreen() {
inputField.updateCursorCounter();
}

@Override
public void actionPerformed(GuiButton btn) {
if (btn.enabled) {
switch(btn.id) {
case 0:
break;
}
}
}

@Override
public void keyTyped(char character, int key) {
switch(key) {
case Keyboard.KEY_ESCAPE:
mc.displayGuiScreen((GuiScreen)null);
mc.setIngameFocus();
break;
default:
break;
}
}

@Override
public void mouseClicked(int mouseX, int mouseY, int state) {
inputField.mouseClicked(mouseX, mouseY, state);
super.mouseClicked(mouseX, mouseY, state);
}

@Override
public void drawScreen(int mouseX, int mouseY, float parTick) {
inputField.drawTextBox();

mc.fontRenderer.drawStringWithShadow("x", width - 70 - 10, 1 + 14 * 1, 0xFFFFFF);

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

}
Класс я назвал GuiModelView, что мне нужно делать дальше? Его надо как то подключать или что?
 
5,021
47
784
Нет дальше тебе нужно учить Java, а не создавать класс и вставлять туда этот код!!
 
Сверху