Jump to content

Weird Question


Lua

Recommended Posts

Ive made a gui w/ a textfield and when you enter the unlocalizedname of an item or a block, you receive it. However, it currently does not have metadata or amount support.  Ive got an idea on how to do this but ive faced some problems. Id like to get the first 2 digit number then pass that into an int then I can just pass that into the sending of the item and then the next two digit number, id pass that as the metadata. But Im not sure how to get the get two numbers, then ensure theres a space before collecting the other two.  So I guess the question is, how can I add some sort of syntax to the textbox, like it has to be in this order or it wont work(name:amount:metadata) and how can I pull the numbers from it?

 

Im sorry if that sounds a bit confusing, dont know how to word it aha.

 

Heres my code:

 

package simplecamping;

import java.util.ArrayList;

import net.minecraft.block.Block;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.GuiTextField;
import net.minecraft.item.Item;
import net.minecraft.network.packet.Packet250CustomPayload;
import net.minecraft.util.ResourceLocation;
import cpw.mods.fml.client.FMLClientHandler;
import cpw.mods.fml.common.network.PacketDispatcher;

public class GuiScribblenauts extends GuiScreen
{

private GuiTextField textfield;
public static Block getBlockToSend;
public static Item getItemToSend;
public static String thingToSend = "NAME:AMOUNT:DATAVALUE";
static String name = thingToSend.split("\\:")[0];
static String amount = thingToSend.split("\\:")[1];
static String datavalue = thingToSend.split("\\:")[2];

@Override
public void initGui()
{
	buttonList = new ArrayList();
	buttonList.add(new GuiButton(1, width / 2 - 49, height / 2 + 40, 70, 20, "Enter"));
	textfield = new GuiTextField(fontRenderer, width / 2 - 87, height / 2 - 10, 200, 20);
	//textfield.setText("NAME:AMOUNT:METADATA/DAMAGEVALUE");
	//so, we'd check the stuff up to the first : then apply that as the name and do the stuff w/ the others 
}

@Override
public void actionPerformed(GuiButton button)
{
	if(button.id == 1)
	{
		for(final Block b : Block.blocksList)
		{
			if(b == null)
			{
				continue;
			}

			String s = b.getLocalizedName().replaceAll(" ", "").toLowerCase();
			if(textfield.getText().toLowerCase().contains(s.toLowerCase()))
			{

				getBlockToSend = b;
				System.out.println("Spawning Block: " + s + " Block id: " + (b.blockID));
			}
		}
	}
	for(final Item i : Item.itemsList)
	{
		if(i == null)
		{
			continue;
		}

		String s1 = i.getUnlocalizedName().replace("item.", "").replace("_", "").toLowerCase();
		if(textfield.getText().toLowerCase().contains(s1.toLowerCase()))
		{
			getItemToSend = i;
			System.out.println("Spawning: " + s1 + "Item id: " + (i.itemID - 256));
		}

	}
	PacketDispatcher.sendPacketToServer(new Packet250CustomPayload(Reference.SEND_ITEM_PACKET, new byte[] {1}));
}


protected void keyTyped(char c, int i)
{
	super.keyTyped(c, i);
	textfield.textboxKeyTyped(c, i);
}

protected void mouseClicked(int i, int j, int k)
{
	super.mouseClicked(i, j, k);
	textfield.mouseClicked(i, j, k);
}

public void drawScreen(int i, int j, float f)
{

	//	drawDefaultBackground();
	int x = width / 2 - 125;
	int y = height / 2 - 100;

	FMLClientHandler.instance().getClient().renderEngine.func_110577_a(new ResourceLocation(Reference.MOD_ID, "/textures/gui/deftuasd.png"));
	drawTexturedModalRect(x, y, 0, 0, 256, 256);
	textfield.drawTextBox();
	super.drawScreen(i, j, f);
}

}

Link to comment
Share on other sites

The easy solution would be to have three boxes for text, then you'll only have to Integer.parseInt(String) on the boxes.

 

If you keep one box,

Pattern pat = Pattern.compile("\\d+");//positive digit pattern
Matcher mat = pat.matcher(string);//give your text
while (mat.find()) {
  //mat.group() would give the current matching digit
}

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.