Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

MikeyJY

Members
  • Joined

  • Last visited

  1. Some mods create a folder in %appdata%/.minecraft. How to create a folder there and how to write a txt file there?
  2. Hi. Does anyone know how to compile a string and get the output as a string? I'm trying to make an programming mod for in-game java programming. An gui that acts as a "IDE": But I need to compile the code written by player. I have this string made by user in-game: String code = "class JavaMod{ public static void main(String args[]){ System.out.println(\"Text\"); } }"; I need to compile the string, get the output in a "String output", (in this case the value should be "Text"), and show in-game GUI; Of course for the player to play this mod will require JDK configured with bin path in control panel enviorment variables, because I need the actual Java Virtual Machine on player's PC for the code to be compiled, no?
  3. I'm trying to make a coding game, for players to start learning Java. I created a post yesterday about the multi-row textfield(I need it for the actual in-game Java IDE). Since then I started to work on a multi-row text filed. I added the basics: https://streamable.com/buse32 As you can see from the video it works, but there are some things missing(cursor, navigating trough code with arrow keys, CTRL+A, select, CTRL+C, CTRL+V, etc). I have no idea how to imlement theese things. Here is may code(GUI class): Console console = new Console(); @Override public void drawScreen(int x, int y, float ticks) { returns[0] = 0; int guiX = (width - guiWidth) / 2; int guiY = (height - guiHeight) / 2; //GL11.glColor4f(1, 1, 1, 1); mc.renderEngine.bindTexture(new ResourceLocation("jp", "textures/gui/java_final.png")); drawTexturedModalRect(guiX, guiY, 0, 0, guiWidth, guiHeight); for(int j = 1; j <= rows; j++) { String row = "nothing yet"; int i; for(i = 1, row = ""; i <= letterCount; i++) { if(returns[j] != 0) { if(i < returns[j] && i >= returns[j-1]) { row += Keys[i]; fontRendererObj.drawString(row, guiX + 10, guiY + 40 + (j - 1) * 10, 0x5e757d); } } if(returns[j] == 0) { if(i >= returns[j-1]) { row += Keys[i]; fontRendererObj.drawString(row, guiX + 10, guiY + 40 + (j - 1) * 10, 0x5e757d); } } } } super.drawScreen(x, y, ticks); } @Override protected void keyTyped(char c, int key) { //change the "fontRendererObj.drawString("String before any key", guiX + 10, guiY + 40, 0x5e757d);" text to the key tapped switch(key) { case Keyboard.KEY_BACK: if(letterCount >= 1) { Keys[letterCount] = null; letterCount--; if(returns[returnCount] == letterCount + 1) { returns[returnCount] = 0; returnCount--; rows--; } } console.log("Returns: "); for(int cnt = 1;cnt <= returnCount; cnt++) { console.log(returns[cnt] + " "); } console.newline(); console.log("Keys: "); for(int cnt = 1;cnt <= letterCount; cnt++) { console.log(Keys[cnt] + " "); } console.newline(); console.log("Retrun Count: " + returnCount); console.newline(); console.log("Rows: " + rows); console.newline(); console.log("Letter Count: " + letterCount); console.newline(); break; case Keyboard.KEY_ESCAPE: mc.displayGuiScreen(null); break; case Keyboard.KEY_RETURN: rows++; returnCount++; returns[returnCount]=letterCount + 1; console.log("Returns: "); for(int cnt = 1;cnt <= returnCount; cnt++) { console.log(returns[cnt] + " "); } console.newline(); console.log("Keys: "); for(int cnt = 1;cnt <= letterCount; cnt++) { console.log(Keys[cnt] + " "); } console.newline(); console.log("Retrun Count: " + returnCount); console.newline(); console.log("Rows: " + rows); console.newline(); console.log("Letter Count: " + letterCount); console.newline(); break; default: if(c >= 32 && c <= 127) { letterCount++; Keys[letterCount] = c + ""; console.log("Returns: "); for(int cnt = 1;cnt <= returnCount; cnt++) { console.log(returns[cnt] + " "); } console.newline(); console.log("Keys: "); for(int cnt = 1;cnt <= letterCount; cnt++) { console.log(Keys[cnt] + " "); } console.newline(); console.log("Retrun Count: " + returnCount); console.newline(); console.log("Rows: " + rows); console.newline(); console.log("Letter Count: " + letterCount); console.newline(); } break; } } The console class is just a class I made to avoid writing "System.out.println" every time I want to print in console something: package com.mikeyjy.methods; public class Console { public void log(Object obj) { System.out.print(obj); } public void newline() { System.out.println(); } }
  4. I want to get the ascii code(transform to string) the int representing the minecraft key code: protected void keyTyped(char c, int key) { //change the "fontRendererObj.drawString("String before any key", guiX + 10, guiY + 40, 0x5e757d);" text to the key tapped KeyTapped = (char) key + ""; System.out.println(key); } If I press b, in console I get 48 which is not the corresponding in ascii. I want to get the key I pressed in KeyTapped
  5. I have this code: @Override public void drawScreen(int x, int y, float ticks) { int guiX = (width - guiWidth) / 2; int guiY = (height - guiHeight) / 2; //GL11.glColor4f(1, 1, 1, 1); mc.renderEngine.bindTexture(new ResourceLocation("jp", "textures/gui/java_final.png")); drawTexturedModalRect(guiX, guiY, 0, 0, guiWidth, guiHeight); fontRendererObj.drawString("String before any key", guiX + 10, guiY + 40, 0x5e757d); super.drawScreen(x, y, ticks); } @Override protected void keyTyped(char c, int key) { //change the "fontRendererObj.drawString("String before any key", guiX + 10, guiY + 40, 0x5e757d);" text to the key tapped } I commented in the code what I need to do. I want to change the string text to the key.
  6. I need to create a text field with multiple lines, but I have no idea. Please help. I am new to forge modding.
  7. When I place @Override above the method it sais: The method doesGuiPauseMenu() of type GUI must override or implement a supertype method Remove @Override annotation I tried to remove it, but the game still is pausing in gui. I have this method in the main gui class that extends GuiScreen. How to stop the gui to pause the game. By pausing I mean stop the time, the animals, the furnace.
  8. I'm trying to make a laptop in minecraft. I created an obj in blender, I created an texture atlas(.png), I can't figure out the rendering in minecraft. It is my first mod: Mod name "JavaProgrammingMod"(It adds java in minecraft) JavaProgrammingMod.java: package com.mikeyjy.JavaProgramming; import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @Mod(modid = "jp", name = "JavaProgramming", version = "0.27b") public class JavaProgrammingMod { public static Block blockPC; public static Item itemJavaSoft; @EventHandler public void preInit(FMLPreInitializationEvent event) { blockPC = new BlockPC(Material.anvil).setBlockName("BlockPC").setCreativeTab(tabJavaProgrammingMod); GameRegistry.registerBlock(blockPC, blockPC.getUnlocalizedName().substring(5)); itemJavaSoft = new ItemJavaSoft().setUnlocalizedName("ItemJavaSoft").setTextureName("jp:itemjavasoft").setCreativeTab(tabJavaProgrammingMod); GameRegistry.registerItem(itemJavaSoft, itemJavaSoft.getUnlocalizedName().substring(5)); GameRegistry.registerTileEntity(TileEntityBlockPC.class, "tileBlockPC"); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBlockPC.class, new RenderTileEntityBlockPC()); } @EventHandler public void preInit(FMLInitializationEvent event) { } @EventHandler public void preInit(FMLPostInitializationEvent event) { } public static CreativeTabs tabJavaProgrammingMod = new CreativeTabs("tabJavaProgrammingMod") { @Override public Item getTabIconItem() { return new ItemStack(blockPC).getItem(); } }; } BlockPC.java: package com.mikeyjy.JavaProgramming; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; public class BlockPC extends BlockContainer{ public BlockPC(Material material) { super(material); this.setBlockName("Computer"); } @Override public boolean renderAsNormalBlock(){ return false; } @Override public int getRenderType(){ return -1; } @Override public boolean isOpaqueCube(){ return false; } @Override public TileEntity createNewTileEntity(World world, int par2) { return new TileEntityBlockPC(); } } RenderTileEntityBlockPC: package com.mikeyjy.JavaProgramming; import org.lwjgl.opengl.GL11; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.AdvancedModelLoader; import net.minecraftforge.client.model.IModelCustom; public class RenderTileEntityBlockPC extends TileEntitySpecialRenderer { ResourceLocation texture; ResourceLocation objModelLocation; IModelCustom model; public RenderTileEntityBlockPC(){ texture = new ResourceLocation("jp", "models/BlockPCTexture.png"); objModelLocation = new ResourceLocation("jp", "models/BlockPC.obj"); model = AdvancedModelLoader.loadModel(objModelLocation); } @Override public void renderTileEntityAt(TileEntity te, double posX, double posY, double posZ, float timeSinceLastTick) { TileEntityBlockPC te2 = (TileEntityBlockPC) te; bindTexture(texture); GL11.glPushMatrix(); GL11.glTranslated(posX + 0.5, posY + 0.5, posZ + 0.5); GL11.glPushMatrix(); model.renderAll(); GL11.glPopMatrix(); GL11.glPopMatrix(); } } I have these errors: BlockPC.java line 34: TileEntityBlockPC cannot be resolved to a type RenderTileEntityBlockPC line 23: TileEntityBlockPC cannot be resolved to a type JavaProgrammingMod line 28: The method registerTileEntity(Class<? extends TileEntity>, String) in the type GameRegistry is not applicable for the arguments (Class<TileEntityBlockPC>, String) JavaProgrammingMod line 29: The method bindTileEntitySpecialRenderer(Class<? extends TileEntity>, TileEntitySpecialRenderer) in the type ClientRegistry is not applicable for the arguments (Class<TileEntityBlockPC>, RenderTileEntityBlockPC) I followed this tutorial: https://forums.minecraftforge.net/topic/29600-1710-rendering-obj-models-as-blocks/ Please help

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.