diff --git a/build.gradle b/build.gradle index d4ea18a..6451aae 100644 --- a/build.gradle +++ b/build.gradle @@ -11,12 +11,12 @@ buildscript { } } dependencies { - classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT' + classpath 'net.minecraftforge.gradle:ForgeGradle:2.2-SNAPSHOT' } } -apply plugin: 'forge' +apply plugin: 'net.minecraftforge.gradle.forge' version = "1.0.0" ext.build = "0" @@ -24,9 +24,11 @@ group = "fontbox" archivesBaseName = "fontbox" minecraft { - version = "1.7.10-10.13.0.1180" + version = "12.17.0.1969" replace "@VERSION@", project.version replace "@BUILD@", project.ext.build + mappings = "snapshot_20160609" + runDir = "run" } jar.version = "${minecraft.version}" @@ -40,8 +42,8 @@ processResources { include 'mcmod.info' expand 'version':project.version + '-' + project.ext.build, 'mcversion':project.minecraft.version } - - from(sourceSets.main.resources.srcDirs) { + + from(sourceSets.main.resources.srcDirs) { exclude 'mcmod.info' } } diff --git a/src/demo/java/net/afterlifelochie/demo/FontboxClient.java b/src/demo/java/net/afterlifelochie/demo/FontboxClient.java index 90deb6b..4e2f575 100644 --- a/src/demo/java/net/afterlifelochie/demo/FontboxClient.java +++ b/src/demo/java/net/afterlifelochie/demo/FontboxClient.java @@ -1,11 +1,13 @@ package net.afterlifelochie.demo; -import cpw.mods.fml.common.event.FMLInitializationEvent; import net.afterlifelochie.fontbox.Fontbox; import net.afterlifelochie.fontbox.api.PrintOutputTracer; import net.afterlifelochie.fontbox.font.FontException; import net.afterlifelochie.fontbox.font.GLFont; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.common.event.FMLInitializationEvent; public class FontboxClient extends FontboxServer { @@ -20,6 +22,8 @@ public void init(FMLInitializationEvent e) { } catch (FontException f0) { f0.printStackTrace(); } - } + + Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(FontboxServer.book, 0, new ModelResourceLocation("minecraft:book", "inventory")); + } } diff --git a/src/demo/java/net/afterlifelochie/demo/FontboxDemoMod.java b/src/demo/java/net/afterlifelochie/demo/FontboxDemoMod.java index 29f2388..41474bd 100644 --- a/src/demo/java/net/afterlifelochie/demo/FontboxDemoMod.java +++ b/src/demo/java/net/afterlifelochie/demo/FontboxDemoMod.java @@ -1,11 +1,10 @@ package net.afterlifelochie.demo; -import cpw.mods.fml.common.Mod; -import cpw.mods.fml.common.Mod.EventHandler; -import cpw.mods.fml.common.SidedProxy; -import cpw.mods.fml.common.event.FMLInitializationEvent; -import cpw.mods.fml.common.event.FMLPostInitializationEvent; -import cpw.mods.fml.common.event.FMLPreInitializationEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.common.SidedProxy; +import net.minecraftforge.fml.common.event.FMLInitializationEvent; +import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; +import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; @Mod(name = "fontbox-demo", modid = FontboxDemoMod.modid) public class FontboxDemoMod { @@ -15,17 +14,17 @@ public class FontboxDemoMod { @SidedProxy(clientSide = "net.afterlifelochie.demo.FontboxClient", serverSide = "net.afterlifelochie.demo.FontboxServer") public static FontboxServer proxy; - @EventHandler + @Mod.EventHandler public void preInit(FMLPreInitializationEvent e) { proxy.preInit(e); } - @EventHandler + @Mod.EventHandler public void init(FMLInitializationEvent e) { proxy.init(e); } - @EventHandler + @Mod.EventHandler public void postInit(FMLPostInitializationEvent e) { proxy.postInit(e); } diff --git a/src/demo/java/net/afterlifelochie/demo/FontboxServer.java b/src/demo/java/net/afterlifelochie/demo/FontboxServer.java index 9157c65..3995996 100644 --- a/src/demo/java/net/afterlifelochie/demo/FontboxServer.java +++ b/src/demo/java/net/afterlifelochie/demo/FontboxServer.java @@ -1,20 +1,20 @@ package net.afterlifelochie.demo; -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.minecraftforge.fml.common.event.FMLInitializationEvent; +import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; +import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; +import net.minecraftforge.fml.common.registry.GameRegistry; public class FontboxServer { - public ItemDemoBook book; + public static ItemDemoBook book; public void preInit(FMLPreInitializationEvent e) { } public void init(FMLInitializationEvent e) { book = new ItemDemoBook(); - GameRegistry.registerItem(book, "demo-book"); + GameRegistry.register(book); } public void postInit(FMLPostInitializationEvent e) { diff --git a/src/demo/java/net/afterlifelochie/demo/GuiDemoBook.java b/src/demo/java/net/afterlifelochie/demo/GuiDemoBook.java index 7b696f2..241e1f9 100644 --- a/src/demo/java/net/afterlifelochie/demo/GuiDemoBook.java +++ b/src/demo/java/net/afterlifelochie/demo/GuiDemoBook.java @@ -1,23 +1,9 @@ package net.afterlifelochie.demo; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.util.ArrayList; -import java.util.EnumSet; - -import org.lwjgl.opengl.GL11; - import net.afterlifelochie.fontbox.Fontbox; import net.afterlifelochie.fontbox.data.FormattedString; -import net.afterlifelochie.fontbox.document.CompilerHint; +import net.afterlifelochie.fontbox.document.*; import net.afterlifelochie.fontbox.document.CompilerHint.HintType; -import net.afterlifelochie.fontbox.document.Document; -import net.afterlifelochie.fontbox.document.Heading; -import net.afterlifelochie.fontbox.document.Image; -import net.afterlifelochie.fontbox.document.ImageItemStack; -import net.afterlifelochie.fontbox.document.Paragraph; import net.afterlifelochie.fontbox.document.formatting.ColorFormat; import net.afterlifelochie.fontbox.document.formatting.DecorationStyle; import net.afterlifelochie.fontbox.document.formatting.TextFormat; @@ -26,7 +12,6 @@ import net.afterlifelochie.fontbox.font.GLFont; import net.afterlifelochie.fontbox.layout.DocumentProcessor; import net.afterlifelochie.fontbox.layout.LayoutException; -import net.afterlifelochie.fontbox.layout.PageIndex; import net.afterlifelochie.fontbox.layout.PageWriter; import net.afterlifelochie.fontbox.layout.components.PageProperties; import net.afterlifelochie.fontbox.render.BookGUI; @@ -37,6 +22,14 @@ import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.EnumSet; public class GuiDemoBook extends BookGUI { @@ -76,7 +69,7 @@ public GuiDemoBook() { document.push(new Heading("author", new FormattedString("Written by Aesop"))); document.push(new CompilerHint(HintType.FLOATBREAK)); - document.push(new ImageItemStack(new ItemStack(Items.diamond, 1), 32, 32, AlignmentMode.CENTER)); + document.push(new ImageItemStack(new ItemStack(Items.DIAMOND, 1), 32, 32, AlignmentMode.CENTER)); document.push(new Paragraph(new FormattedString("The classic fable demonstration book thingy.") .applyFormat(new TextFormat(notethis, EnumSet.of(DecorationStyle.BOLD), new ColorFormat(128, 128, 255)), 0))); @@ -88,16 +81,16 @@ public GuiDemoBook() { if (para.trim().length() > 0) reallines.add(para.trim()); - document.push(new ImageItemStack(new ItemStack(Blocks.anvil, 1), 32, 32, FloatMode.LEFT)); + document.push(new ImageItemStack(new ItemStack(Blocks.ANVIL, 1), 32, 32, FloatMode.LEFT)); document.push(new Paragraph(new FormattedString(reallines.get(0)))); - document.push(new ImageItemStack(new ItemStack(Items.diamond, 1), 32, 32, AlignmentMode.CENTER)); - document.push(new ImageItemStack(new ItemStack(Items.apple, 1), 32, 32, FloatMode.LEFT)); + document.push(new ImageItemStack(new ItemStack(Items.DIAMOND, 1), 32, 32, AlignmentMode.CENTER)); + document.push(new ImageItemStack(new ItemStack(Items.APPLE, 1), 32, 32, FloatMode.LEFT)); document.push(new Paragraph(new FormattedString(reallines.get(1)))); document.push(new CompilerHint(HintType.PAGEBREAK)); document.push(new Heading("ending", new FormattedString("The Finish"))); - document.push(new ImageItemStack(new ItemStack(Items.diamond, 1), 32, 32, AlignmentMode.CENTER)); - document.push(new ImageItemStack(new ItemStack(Items.gold_ingot, 1), 32, 32, FloatMode.LEFT)); + document.push(new ImageItemStack(new ItemStack(Items.DIAMOND, 1), 32, 32, AlignmentMode.CENTER)); + document.push(new ImageItemStack(new ItemStack(Items.GOLD_INGOT, 1), 32, 32, FloatMode.LEFT)); document.push(new Paragraph(new FormattedString(reallines.get(2)))); /* Actually generate some pages */ diff --git a/src/demo/java/net/afterlifelochie/demo/ItemDemoBook.java b/src/demo/java/net/afterlifelochie/demo/ItemDemoBook.java index af084c4..e054c58 100644 --- a/src/demo/java/net/afterlifelochie/demo/ItemDemoBook.java +++ b/src/demo/java/net/afterlifelochie/demo/ItemDemoBook.java @@ -1,27 +1,31 @@ package net.afterlifelochie.demo; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.util.ActionResult; +import net.minecraft.util.EnumActionResult; +import net.minecraft.util.EnumHand; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; public class ItemDemoBook extends Item { public ItemDemoBook() { super(); - setTextureName("book_normal"); - setCreativeTab(CreativeTabs.tabMisc); - } + this.setUnlocalizedName("demobook"); + this.setRegistryName("demobook"); + this.setCreativeTab(CreativeTabs.MISC); + } @Override @SideOnly(Side.CLIENT) - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { - if (par2World.isRemote) + public ActionResult onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer, EnumHand hand) { + if (par2World.isRemote) Minecraft.getMinecraft().displayGuiScreen(new GuiDemoBook()); - return par1ItemStack; - } + return new ActionResult(EnumActionResult.PASS, par1ItemStack); + } } diff --git a/src/main/java/net/afterlifelochie/fontbox/document/ImageItemStack.java b/src/main/java/net/afterlifelochie/fontbox/document/ImageItemStack.java index 9817feb..bdc2c14 100644 --- a/src/main/java/net/afterlifelochie/fontbox/document/ImageItemStack.java +++ b/src/main/java/net/afterlifelochie/fontbox/document/ImageItemStack.java @@ -5,9 +5,8 @@ import net.afterlifelochie.fontbox.render.BookGUI; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.RenderHelper; -import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.client.renderer.RenderItem; import net.minecraft.item.ItemStack; - import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; @@ -19,7 +18,7 @@ */ public class ImageItemStack extends Image { - private static RenderItem renderer = new RenderItem(); + private static RenderItem renderer = Minecraft.getMinecraft().getRenderItem(); /** The item stack */ public ItemStack stack; @@ -101,8 +100,7 @@ public void render(BookGUI gui, int mx, int my, float frame) { GL11.glEnable(GL11.GL_LIGHTING); GL11.glTranslatef(bounds().x * 0.44f, bounds().y * 0.44f, 0); GL11.glScalef(bounds().width * 0.44f / 16.0f, bounds().height * 0.44f / 16.0f, 1.0f); - renderer.renderItemAndEffectIntoGUI(Minecraft.getMinecraft().fontRenderer, Minecraft.getMinecraft() - .getTextureManager(), stack, 0, 0); + renderer.renderItemAndEffectIntoGUI(stack, 0, 0); GL11.glDisable(GL12.GL_RESCALE_NORMAL); GL11.glDisable(GL11.GL_COLOR_MATERIAL); GL11.glDisable(GL11.GL_LIGHTING); diff --git a/src/main/java/net/afterlifelochie/fontbox/render/BookGUI.java b/src/main/java/net/afterlifelochie/fontbox/render/BookGUI.java index 1630577..ff79725 100644 --- a/src/main/java/net/afterlifelochie/fontbox/render/BookGUI.java +++ b/src/main/java/net/afterlifelochie/fontbox/render/BookGUI.java @@ -1,7 +1,5 @@ package net.afterlifelochie.fontbox.render; -import java.util.ArrayList; - import net.afterlifelochie.fontbox.Fontbox; import net.afterlifelochie.fontbox.document.Element; import net.afterlifelochie.fontbox.layout.DocumentProcessor; @@ -10,61 +8,20 @@ import net.afterlifelochie.fontbox.layout.PageIndex; import net.afterlifelochie.fontbox.layout.components.Page; import net.minecraft.client.gui.GuiScreen; - import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.OpenGLException; import org.lwjgl.opengl.Util; -public abstract class BookGUI extends GuiScreen { - - /** - * The page-up mode. - * - * @author AfterLifeLochie - */ - public static enum UpMode { - /** One-up (one page) mode */ - ONEUP(1), - /** Two-up (two page) mode */ - TWOUP(2); - - /** The number of pages in this mode */ - public final int pages; - - UpMode(int pages) { - this.pages = pages; - } - } +import java.io.IOException; +import java.util.ArrayList; - /** - * Page layout container - * - * @author AfterLifeLochie - * - */ - public static class Layout { - public int x, y; - - /** - * Create a new Layout container for rendering the page on screen. - * - * @param x - * The x-coordinate to render at - * @param y - * The y-coordinate to render at - */ - public Layout(int x, int y) { - this.x = x; - this.y = y; - } - } +public abstract class BookGUI extends GuiScreen { /** The renderer's UpMode */ protected final UpMode mode; /** The page layout grid */ protected final Layout[] layout; - /** The list of pages */ protected ArrayList pages; /** The list of cursors */ @@ -73,14 +30,12 @@ public Layout(int x, int y) { protected PageIndex index; /** The current page pointer */ protected int ptr = 0; - /** The current opengl display list state */ protected boolean useDisplayList = false; /** The current opengl buffer list */ protected int[] glDisplayLists; /** The current buffer dirty state */ protected boolean glBufferDirty[]; - /** *

* Create a new Book rendering context on top of the existing Minecraft GUI @@ -349,36 +304,39 @@ protected void previous() { } @Override - protected void keyTyped(char val, int code) { - super.keyTyped(val, code); - if (code == Keyboard.KEY_LEFT) + protected void keyTyped(char val, int code) throws IOException { + try { + super.keyTyped(val, code); + } catch (IOException exception) { + System.out.println(exception); + } + if (code == Keyboard.KEY_LEFT) previous(); if (code == Keyboard.KEY_RIGHT) next(); } @Override - protected void mouseClicked(int mx, int my, int button) { - super.mouseClicked(mx, my, button); - for (int i = 0; i < mode.pages; i++) { - Layout where = layout[i]; - int which = ptr + i; - if (pages.size() <= which) - break; - Page page = pages.get(ptr + i); - int mouseX = mx - where.x, mouseY = my - where.y; - if (mouseX >= 0 && mouseY >= 0 && mouseX <= page.width && mouseY <= page.height) { - Element elem = DocumentProcessor.getElementAt(page, mouseX, mouseY); - if (elem != null) - elem.clicked(this, mouseX, mouseY); - } - } - } - - @Override - protected void mouseMovedOrUp(int mx, int my, int button) { - super.mouseMovedOrUp(mx, my, button); - } + protected void mouseClicked(int mx, int my, int button) throws IOException { + try { + super.mouseClicked(mx, my, button); + } catch (IOException exception) { + System.out.println(exception); + } + for (int i = 0; i < mode.pages; i++) { + Layout where = layout[i]; + int which = ptr + i; + if (pages.size() <= which) + break; + Page page = pages.get(ptr + i); + int mouseX = mx - where.x, mouseY = my - where.y; + if (mouseX >= 0 && mouseY >= 0 && mouseX <= page.width && mouseY <= page.height) { + Element elem = DocumentProcessor.getElementAt(page, mouseX, mouseY); + if (elem != null) + elem.clicked(this, mouseX, mouseY); + } + } + } @Override protected void mouseClickMove(int mx, int my, int button, long ticks) { @@ -443,7 +401,54 @@ private void rendeElementGroupImmediate(ArrayList elements, int mx, int GL11.glEnable(GL11.GL_TEXTURE_2D); } } - } + } + } + + /** + * The page-up mode. + * + * @author AfterLifeLochie + */ + public static enum UpMode { + /** + * One-up (one page) mode + */ + ONEUP(1), + /** + * Two-up (two page) mode + */ + TWOUP(2); + + /** + * The number of pages in this mode + */ + public final int pages; + + UpMode(int pages) { + this.pages = pages; + } + } + + /** + * Page layout container + * + * @author AfterLifeLochie + */ + public static class Layout { + public int x, y; + + /** + * Create a new Layout container for rendering the page on screen. + * + * @param x + * The x-coordinate to render at + * @param y + * The y-coordinate to render at + */ + public Layout(int x, int y) { + this.x = x; + this.y = y; + } } }