Jump to content

cmchenry

Members
  • Posts

    48
  • Joined

  • Last visited

Posts posted by cmchenry

  1. I need to add, the name is not null on the server. The stackTagCompound is not null either. But when the player hovers over addInformation the stackTagCompound is null. This makes no since as to why the stackTagCompound is not null on server and null on client if they sync automatically as you say. I've been coding forge for around 6 years now, I know a lot more than you'd probably be lead to believe. This is an odd issue that I can't seem to figure out. So if the stackTagCompound is null on the client then trying to obtain the uuid from the client for the nameFetcher will not work as it will not have the uuid. Not to mention I already store the player_uuid on the server stackTagCompound along with the name.

  2. The callback is meant to give a response from the thread to the main thread, that's why I did it. It is in the main thread, but good point I need to check to make sure the itemstack is not null at that point. I know you can only interact from the main thread. I also don't want to cache on client because if they restart or something it could pose issues for them, and i'm not storing it in a file or something that's not a good way to do it. Also I'm not sure what you mean by a threadpool, I'll have to look that one up. But as far as the client not sycing with the server is the issue at hand here. If the server has the info for the nbtTagCompound so should the client at any given moment. There must be some way to sync them.

  3. I set player_name right here

     

    stack.stackTagCompound.setString("player_name", player_name);

     

    in the callback method. Also that's a good point, I will make sure it can't be reused if it's already been used. I can't do it on the client because that will cause them to have too many requests error from Mojang, I do it on the server and store the names and uuids in a hashmap, so it's relatively quick. But if you do the NameFetcher without a separate thread it will hang-up either the client or server due to it waiting on the response from Mojang, so it must be threaded. 

  4. My addInformation class seems to not have a stackTagCompound for the ItemStack, so there is no lore for my item. I first grab and set all the information on the server, which I figured once I set it, it would sync it with the client, but it does not. I have tried restarting the server and rejoining the server, the server has all the values even after a restart but the client has none. I won't use packets because then I would have to send a packet to each client all the time and that could get laggy. Any solutions anyone?

     

    public class ItemDrugTest extends Item implements Callback {
    
        public static final DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    
        public ItemDrugTest() {
            setUnlocalizedName("drug_test");
            setTextureName(Minelife.MOD_ID + ":drug_test");
            setCreativeTab(ModDrugs.tab_drugs);
        }
    
        @Override
        public boolean itemInteractionForEntity(ItemStack item_stack, EntityPlayer player, EntityLivingBase entity_clicked) {
            if (!(entity_clicked instanceof EntityPlayer)) return false;
            if (player.worldObj.isRemote) return true;
    
            if (ModDrugs.check_for_cocaine((EntityPlayer) entity_clicked, 7)) {
                player.addChatComponentMessage(new ChatComponentText(EnumChatFormatting.RED + "Cocaine detected!"));
            } else {
                player.addChatComponentMessage(new ChatComponentText(EnumChatFormatting.GREEN + "Cocaine not detected."));
            }
    
            if (ModDrugs.check_for_marijuana((EntityPlayer) entity_clicked, 7)) {
                player.addChatComponentMessage(new ChatComponentText(EnumChatFormatting.RED + "Marijuana detected!"));
            } else {
                player.addChatComponentMessage(new ChatComponentText(EnumChatFormatting.GREEN + "Marijuana not detected."));
            }
    
            add_drug_test_results(item_stack, (EntityPlayer) entity_clicked);
            player.inventoryContainer.detectAndSendChanges();
            ((EntityPlayerMP) player).sendContainerToPlayer(player.inventoryContainer);
            return true;
        }
    
        @Override
        public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) {
            if (stack.hasTagCompound() && stack.stackTagCompound.hasKey("player") && stack.stackTagCompound.hasKey("player_name")) {
                try {
                    list.add("Player: " + stack.stackTagCompound.getString("player_name"));
                    Date now = Calendar.getInstance().getTime();
    
                    if (stack.stackTagCompound.hasKey("marijuana")) {
                        list.add(EnumChatFormatting.RED + "Tested POSITIVE for marijuana " + ModDrugs.convert_to_mc_days(now, df.parse(stack.stackTagCompound.getString("marijuana"))) + " days ago.");
                    } else {
                        list.add(EnumChatFormatting.GREEN + "Tested NEGATIVE for marijuana.");
                    }
    
                    if (stack.stackTagCompound.hasKey("cocaine")) {
                        list.add(EnumChatFormatting.RED + "Tested POSITIVE for cocaine " + ModDrugs.convert_to_mc_days(now, df.parse(stack.stackTagCompound.getString("cocaine"))) + " days ago.");
                    } else {
                        list.add(EnumChatFormatting.GREEN + "Tested NEGATIVE for cocaine.");
                    }
                } catch (ParseException e) {
                    e.printStackTrace();
                }
    
            }
        }
    
        private void add_drug_test_results(ItemStack item_stack, EntityPlayer player) {
            NBTTagCompound tag_compound = item_stack.hasTagCompound() ? item_stack.stackTagCompound : new NBTTagCompound();
    
            tag_compound.setString("player", player.getUniqueID().toString());
    
            if (ModDrugs.check_for_marijuana(player, 7)) {
                tag_compound.setString("marijuana", df.format(Calendar.getInstance().getTime()));
            }
    
            if (ModDrugs.check_for_cocaine(player, 7)) {
                tag_compound.setString("cocaine", df.format(Calendar.getInstance().getTime()));
            }
    
            item_stack.stackTagCompound = tag_compound;
    
            // thread the NameFetcher class so that it doesn't cause lag
            new Thread(new FetchName(this, item_stack, player.getUniqueID())).start();
        }
    
    
        @Override
        public void callback(Object... objects) {
            ItemStack stack = (ItemStack) objects[0];
            UUID player_uuid = (UUID) objects[1];
            String player_name = (String) objects[2];
            stack.stackTagCompound.setString("player_name", player_name);
            System.out.println(stack.stackTagCompound.getString("player") + stack.stackTagCompound.getString("player_name"));
        }
    
        class FetchName implements Runnable {
    
            Callback callback;
            ItemStack stack;
            UUID player;
            String name;
    
            public FetchName(Callback callback, ItemStack stack, UUID player) {
                this.callback = callback;
                this.stack = stack;
                this.player = player;
            }
    
            @Override
            public void run() {
                name = NameFetcher.get(player);
                callback.callback(stack, player, name);
            }
        }
    }

     

  5. For some reason my model on top is darker than the normal minecraft iron block, how can I manipulate this to have the same brightness? This is also an OBJ model made using blender.

    Capture.PNG

  6. I am trying to use one of my mods as a core mod, an API to my other mods if you will. Now I coded both, the core mod and the one trying to use it as an API. I am trying to make a notification system, here is the code

     

    [embed=425,349] @SubscribeEvent

    public void onGuiOverlay(RenderGameOverlayEvent event) {

    if (Minecraft.getMinecraft().currentScreen == null || !(Minecraft.getMinecraft().currentScreen instanceof GuiViewNotifications)) {

    for (Object not : mod.getNotifications().toArray()) {

    ((Notification) not).draw(Minecraft.getMinecraft(), event.resolution.getScaledWidth(),

    event.resolution.getScaledHeight(), event.mouseX, event.mouseY);

    }

    }

    }[/embed]

     

    Which I can PROMISE you is only loaded client side. But when I use it as an API I get an error at the Minecraft.getMinecraft().currentScreen, which is "NoSuchMethodException". So what is the issue? Also this is when I run the mod in eclipse, the main mod with the core mod being in the libs folder. It only calls this error on the method when I am using it in the other mod as a dependency in the libs, it works fine when I run Minecraft with eclipse for just the core mod alone.

  7. Okay I finally got it to work, the only issue now is that the button does not go where the mouse is, it just goes up and down relative to the location in the list. I need it to stick with the mouse when the player drags the mouse.

     

    package us.minelife.core.client.gui;
    
    import java.util.ArrayList;
    
    import net.minecraft.client.Minecraft;
    import net.minecraft.client.gui.Gui;
    import net.minecraft.client.gui.GuiButton;
    import net.minecraft.client.gui.GuiScreen;
    import net.minecraft.client.renderer.Tessellator;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.util.ResourceLocation;
    
    import org.lwjgl.input.Mouse;
    import org.lwjgl.opengl.GL11;
    
    import cpw.mods.fml.client.GuiScrollingList;
    import us.minelife.core.Constants;
    import us.minelife.core.client.gui.custom.CustomGuiTextField;
    import us.minelife.core.client.gui.custom.CustomScrollingList;
    
    public class GuiFriends extends GuiScreen
    {
    
    private EntityPlayer player;
    private int xSizeOfTexture = 256, ySizeOfTexture = 168, scrollButtonY = 0,
    		top, bottom, mouseX, mouseY, slotHeight, topScrollBar,
    		bottomScrollBar;
    private CustomGuiTextField transferName, transferAmount;
    private float scrollDistance, initialMouseClickY = -2.0F, scrollFactor;
    private ArrayList<String> list;
    private int lastMouseY;
    
    public GuiFriends(EntityPlayer player)
    {
    	this.player = player;
    	this.scrollDistance = 0;
    	this.initialMouseClickY = 0;
    	list = new ArrayList<String>();
    	lastMouseY = 0;
    	for (int i = 0; i < 41; i++)
    	{
    		list.add("Friend " + i);
    	}
    	this.slotHeight = 30;
    }
    
    @Override
    public void initGui()
    {
    	this.buttonList.clear();
    
    	int posX = (this.width - xSizeOfTexture) / 2;
    	int posY = (this.height - ySizeOfTexture) / 2;
    
    	this.buttonList.add(new GuiButton(0, posX + 7, posY + 135, 100, 20,
    			"Transfer"));
    
    	this.transferName = new CustomGuiTextField(
    			Minecraft.getMinecraft().fontRenderer,
    			this.width / 2 - 126 / 2, posY + 65, 126, 20);
    	this.transferName.setMaxStringLength(19);
    	this.transferName.setFocused(false);
    
    	this.transferAmount = new CustomGuiTextField(
    			Minecraft.getMinecraft().fontRenderer,
    			this.width / 2 - 126 / 2, posY + 105, 126, 20);
    	this.transferAmount.setMaxStringLength(19);
    	this.transferAmount.setFocused(false);
    }
    
    private int getContentHeight()
    {
    	return list.size() * this.slotHeight;
    }
    
    private int getSize()
    {
    	return list.size();
    }
    
    @Override
    public void drawScreen(int x, int y, float f)
    {
    	drawDefaultBackground();
    
    	GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
    	this.mc.renderEngine.bindTexture(new ResourceLocation(Constants.MOD_ID,
    			"textures/gui/GuiFriends.png"));
    
    	int posX = (this.width - xSizeOfTexture) / 2;
    	int posY = (this.height - ySizeOfTexture) / 2;
    
    	drawTexturedModalRect(posX, posY, 0, 0, xSizeOfTexture, ySizeOfTexture);
    	this.mouseX = x;
    	this.mouseY = y;
    	int bottomOffset = 140;
    	int topOffset = 35;
    	this.top = posY + 45;
    	this.bottom = posY + 140;
    	this.topScrollBar = posY + 10;
    	this.bottomScrollBar = posY + 170;
    	int listLength = this.getSize();
    	int scrollBarXStart = posX + 235;
    	int scrollBarXEnd = scrollBarXStart + 12;
    	int boxLeft = posX + 50;
    	int boxRight = scrollBarXStart - 1;
    	int var10;
    	int var11;
    	int var13;
    	int var19;
    
    	if (Mouse.isButtonDown(0))
    	{
    		if (this.initialMouseClickY == -1.0F)
    		{
    			boolean var7 = true;
    			if (mouseX >= scrollBarXStart && mouseX <= scrollBarXEnd)
    			{
    				int function = -(posY - y) - 16;
    				if (function < 0) {
    					this.scrollButtonY = 0;
    					return;
    				} else if (function > 132) {
    					this.scrollButtonY = 133;
    					return;
    				}
    				this.scrollButtonY = function;
    				int dir = Mouse.getDY();
    				System.out.println("HEYO!");
    				if (dir > 0)
    				{
    					this.scrollDistance -= (float) (this.slotHeight * 2 / 3);
    					this.initialMouseClickY = -2.0F;
    					this.applyScrollLimits();
    				} else if (dir < 0)
    				{
    					this.scrollDistance += (float) (this.slotHeight * 2 / 3);
    					this.initialMouseClickY = -2.0F;
    					this.applyScrollLimits();
    				}
    			}
    			if (mouseY >= this.topScrollBar
    					&& mouseY <= this.bottomScrollBar)
    			{
    				var10 = mouseY - this.top - 0 + (int) this.scrollDistance
    						- 4;
    				var11 = var10 / this.slotHeight;
    
    				if (mouseX >= boxLeft && mouseX <= boxRight && var11 >= 0
    						&& var10 >= 0 && var11 < listLength)
    				{
    				} else if (mouseX >= boxLeft && mouseX <= boxRight
    						&& var10 < 0)
    				{
    					var7 = false;
    				}
    
    				if (mouseX >= scrollBarXStart && mouseX <= scrollBarXEnd)
    				{
    					this.scrollFactor = -1.0F;
    					var19 = this.getContentHeight()
    							- (this.bottom - this.top - 4);
    
    					if (var19 < 1)
    					{
    						var19 = 1;
    					}
    
    					var13 = (int) ((float) ((this.bottom - this.top) * (this.bottom - this.top)) / (float) this
    							.getContentHeight());
    
    					if (var13 < 32)
    					{
    						var13 = 32;
    					}
    
    					if (var13 > this.bottom - this.top - 
    					{
    						var13 = this.bottom - this.top - 8;
    					}
    
    					this.scrollFactor /= (float) (this.bottom - this.top - var13)
    							/ (float) var19;
    				} else
    				{
    					this.scrollFactor = 1.0F;
    				}
    
    				if (var7)
    				{
    					this.initialMouseClickY = (float) mouseY;
    				} else
    				{
    					this.initialMouseClickY = -2.0F;
    				}
    			} else
    			{
    				this.initialMouseClickY = -2.0F;
    			}
    		} else if (this.initialMouseClickY >= 0.0F)
    		{
    			this.scrollDistance -= ((float) mouseY - this.initialMouseClickY)
    					* this.scrollFactor;
    			this.initialMouseClickY = (float) mouseY;
    		}
    	} else
    	{
    		while (Mouse.next())
    		{
    			int var16 = Mouse.getEventDWheel();
    
    			if (var16 != 0)
    			{
    				if (var16 > 0)
    				{
    					var16 = -1;
    				} else if (var16 < 0)
    				{
    					var16 = 1;
    				}
    
    				this.scrollDistance += (float) (var16 * this.slotHeight / 2);
    			}
    		}
    
    		this.initialMouseClickY = -1.0F;
    	}
    	this.applyScrollLimits();
    	var10 = this.top + 4 - (int) this.scrollDistance;
    
    	int var14;
    
    	for (var11 = 0; var11 < listLength; ++var11)
    	{
    		var19 = var10 + var11 * this.slotHeight + 0;
    		var13 = this.slotHeight - 4;
    
    		if (var19 <= this.bottom && var19 + var13 >= this.top)
    		{
    			this.drawCenteredString(this.fontRendererObj, list.get(var11),
    					posX + 145, var19, 0xFFFFFF);
    		}
    	}
    
    	var19 = this.getContentHeight()
    			- (this.bottomScrollBar - this.topScrollBar - 4);
    
    	if (var19 > 0)
    	{
    		var13 = (this.bottomScrollBar - this.topScrollBar)
    				* (this.bottomScrollBar - this.topScrollBar)
    				/ this.getContentHeight();
    
    		if (var13 < 32)
    		{
    			var13 = 32;
    		}
    
    		if (var13 > this.bottomScrollBar - this.topScrollBar - 
    		{
    			var13 = this.bottomScrollBar - this.topScrollBar - 8;
    		}
    
    		var14 = (int) this.scrollDistance
    				* (this.bottomScrollBar - this.topScrollBar - var13)
    				/ var19 + this.topScrollBar;
    
    		if (var14 < this.topScrollBar)
    		{
    			var14 = this.topScrollBar;
    		}
    		this.mc.renderEngine.bindTexture(new ResourceLocation(
    				Constants.MOD_ID, "textures/gui/GuiFriends.png"));
    		this.drawTexturedModalRect(scrollBarXStart, var14,
    				xSizeOfTexture - 25, ySizeOfTexture, 12, 16);
    	}
    
    	GL11.glEnable(GL11.GL_TEXTURE_2D);
    	GL11.glShadeModel(GL11.GL_FLAT);
    	GL11.glEnable(GL11.GL_ALPHA_TEST);
    	GL11.glDisable(GL11.GL_BLEND);
    	super.drawScreen(x, y, f);
    }
    
    private void applyScrollLimits()
    {
    	int posX = (this.width - xSizeOfTexture) / 2;
    	int posY = (this.height - ySizeOfTexture) / 2;
    	int top = posY + 25;
    	int bottom = posY + 140;
    	int var1 = getSize() * this.slotHeight - (bottom - top - 4);
    
    	if (var1 < 0)
    	{
    		var1 /= 2;
    	}
    
    	if (this.scrollDistance < 0.0F)
    	{
    		this.scrollDistance = 0.0F;
    	}
    
    	if (this.scrollDistance > (float) var1)
    	{
    		this.scrollDistance = (float) var1;
    	}
    }
    
    @Override
    public void mouseMovedOrUp(int x, int y, int z)
    {
    	if (mousePressed(this.transferAmount, Minecraft.getMinecraft(), x, y))
    	{
    		this.transferAmount.setFocused(true);
    		this.transferName.setFocused(false);
    	} else if (mousePressed(this.transferName, Minecraft.getMinecraft(), x,
    			y))
    	{
    		this.transferAmount.setFocused(false);
    		this.transferName.setFocused(true);
    	} else
    	{
    		this.transferName.setFocused(false);
    		this.transferAmount.setFocused(false);
    	}
    
    	super.mouseMovedOrUp(x, y, z);
    }
    
    public boolean mousePressed(CustomGuiTextField field,
    		Minecraft p_146116_1_, int p_146116_2_, int p_146116_3_)
    {
    	return p_146116_2_ >= field.xPosition && p_146116_3_ >= field.yPosition
    			&& p_146116_2_ < field.xPosition + field.width
    			&& p_146116_3_ < field.yPosition + field.height;
    }
    }
    

  8. package us.minelife.core.client.gui;
    
    import java.util.ArrayList;
    
    import net.minecraft.client.Minecraft;
    import net.minecraft.client.gui.GuiButton;
    import net.minecraft.client.gui.GuiScreen;
    import net.minecraft.client.renderer.Tessellator;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.util.ResourceLocation;
    
    import org.lwjgl.opengl.GL11;
    
    import cpw.mods.fml.client.GuiScrollingList;
    import us.minelife.core.Constants;
    import us.minelife.core.client.gui.custom.CustomGuiTextField;
    import us.minelife.core.client.gui.custom.CustomScrollingList;
    
    public class GuiFriends extends GuiScreen {
    
    private EntityPlayer player;
    private int xSizeOfTexture = 256, ySizeOfTexture = 168;
    private CustomGuiTextField transferName, transferAmount;
    private int scrollButtonY;
    private ArrayList<String> list;
    
    public GuiFriends(EntityPlayer player) {
    	this.player = player;
    	this.scrollButtonY = 0;
    	list = new ArrayList<String>();
    	for (int i = 0; i < 101; i++) {
    		list.add("ADADADAD" + i);
    	}
    }
    
    @Override
    public void initGui() {
    	this.buttonList.clear();
    
    	int posX = (this.width - xSizeOfTexture) / 2;
    	int posY = (this.height - ySizeOfTexture) / 2;
    
    	this.buttonList.add(new GuiButton(0, posX + 7, posY + 135, 100, 20,
    			"Transfer"));
    
    	this.transferName = new CustomGuiTextField(
    			Minecraft.getMinecraft().fontRenderer,
    			this.width / 2 - 126 / 2, posY + 65, 126, 20);
    	this.transferName.setMaxStringLength(19);
    	this.transferName.setFocused(false);
    
    	this.transferAmount = new CustomGuiTextField(
    			Minecraft.getMinecraft().fontRenderer,
    			this.width / 2 - 126 / 2, posY + 105, 126, 20);
    	this.transferAmount.setMaxStringLength(19);
    	this.transferAmount.setFocused(false);
    }
    
    @Override
    public void drawScreen(int x, int y, float f) {
    	drawDefaultBackground();
    
    	GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
    	this.mc.renderEngine.bindTexture(new ResourceLocation(Constants.MOD_ID,
    			"textures/gui/GuiFriends.png"));
    
    	int posX = (this.width - xSizeOfTexture) / 2;
    	int posY = (this.height - ySizeOfTexture) / 2;
    
    	drawTexturedModalRect(posX, posY, 0, 0, xSizeOfTexture, ySizeOfTexture);
    	drawTexturedModalRect(posX + 235, posY + 10 + this.scrollButtonY, 231,
    			168, 12, 16);
    	int size = 30;
    	int top = posY + 25;
    	int bottom = posY + 140;
    	int contentHeight = list.size() * size;
    	int position = 0;
    	int totalSpace = bottom - top;
    	int toDisplay = (list.size() * size) / totalSpace;
    	System.out.println(toDisplay);
    	for (int i = 0; i < toDisplay; i++) {
    		position = (top + 1 + (size * i) - (this.scrollButtonY));
    		if (position > top && position < bottom) {
    			this.drawCenteredString(this.fontRendererObj, list.get(i),
    					posX + 150, position, 0xFFFFFF);
    		}
    	}
    	super.drawScreen(x, y, f);
    }
    
    @Override
    public void mouseClickMove(int x, int y, int z, long par4) {
    	int posY = (this.height - ySizeOfTexture) / 2;
    	int function = -(posY - y) - 16;
    	if (function < 0) {
    		this.scrollButtonY = 0;
    		return;
    	} else if (function > 132) {
    		this.scrollButtonY = 133;
    		return;
    	}
    	this.scrollButtonY = function;
    
    	int size = 30;
    	int top = posY + 25;
    	int bottom = posY + 140;
    	int contentHeight = list.size() * size;
    	System.out.println("Scroll Button Y: " + this.scrollButtonY);
    	System.out.println("Top: " + top);
    	System.out.println("Bottom: " + bottom);
    	System.out.println("Content Height: " + contentHeight);
    }
    
    @Override
    protected void actionPerformed(GuiButton button) {
    	int id = button.id;
    
    	if (id == 0) {
    
    	}
    
    	super.actionPerformed(button);
    }
    
    @Override
    public void mouseMovedOrUp(int x, int y, int z) {
    	if (mousePressed(this.transferAmount, Minecraft.getMinecraft(), x, y)) {
    		this.transferAmount.setFocused(true);
    		this.transferName.setFocused(false);
    	} else if (mousePressed(this.transferName, Minecraft.getMinecraft(), x,
    			y)) {
    		this.transferAmount.setFocused(false);
    		this.transferName.setFocused(true);
    	} else {
    		this.transferName.setFocused(false);
    		this.transferAmount.setFocused(false);
    	}
    
    	super.mouseMovedOrUp(x, y, z);
    }
    
    public boolean mousePressed(CustomGuiTextField field,
    		Minecraft p_146116_1_, int p_146116_2_, int p_146116_3_) {
    	return p_146116_2_ >= field.xPosition && p_146116_3_ >= field.yPosition
    			&& p_146116_2_ < field.xPosition + field.width
    			&& p_146116_3_ < field.yPosition + field.height;
    
    	}
    }
    

  9. I'm not a fan of the way they look, not to mention they don't resize very well at all when the window is resized; and there is that pesky background. Which I have gotten rid of all of them, but I still like using my own scroll button and methods of code. Can't believe this is that hard... lol

  10. I have the scroll part working, I can scroll the text up and down, the only issue is it does not show all of the objects in the ArrayList<String>. Any ideas on how to get it to show all of the objects? I scroll down and then it just stops about half-way, I believe the rest of the text are getting drawn way down the screen that the player cannot see.

     

    	@Override
    public void drawScreen(int x, int y, float f)
    {
    	drawDefaultBackground();
    
    	GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
    	this.mc.renderEngine.bindTexture(new ResourceLocation(Constants.MOD_ID, "textures/gui/GuiFriends.png"));
    
    	int posX = (this.width - xSizeOfTexture) / 2;
    	int posY = (this.height - ySizeOfTexture) / 2;
    
    	drawTexturedModalRect(posX, posY, 0, 0, xSizeOfTexture, ySizeOfTexture);
    
    	drawTexturedModalRect(posX + 235, posY + 10 + this.scrollButtonY, 231, 168, 12, 16);
    
    	int size = 30;
    	int top = posY + 20;
    	int devideFactor = 3;
    	int bottom = posY + 150;
    	int contentHeight = list.size() * size;
    	for(int i = 0; i < list.size(); i++)
    	{
    		System.out.println(- (this.scrollButtonY - -((size * i))));
    		this.drawCenteredString(this.fontRendererObj, list.get(i), posX + 150, (top + (size * i) - (this.scrollButtonY + 500)), 0xFFFFFF);
    	}
    	super.drawScreen(x, y, f);
    }

×
×
  • Create New...

Important Information

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