From efffb5a8b9077390a4fb2c4a1643b44a40788a70 Mon Sep 17 00:00:00 2001 From: Sam Beckmann Date: Sun, 21 Dec 2014 20:13:36 -0600 Subject: [PATCH] Initial commit --- build.gradle | 64 ++++++++++++ .../java/com/qkninja/clockhud/ClockHUD.java | 28 +++++ .../qkninja/clockhud/client/gui/GuiClock.java | 97 ++++++++++++++++++ .../qkninja/clockhud/proxy/ClientProxy.java | 20 ++++ .../qkninja/clockhud/proxy/CommonProxy.java | 9 ++ .../com/qkninja/clockhud/proxy/IProxy.java | 11 ++ .../qkninja/clockhud/proxy/ServerProxy.java | 9 ++ .../qkninja/clockhud/reference/Reference.java | 14 +++ .../qkninja/clockhud/reference/Textures.java | 18 ++++ .../qkninja/clockhud/utility/LogHelper.java | 32 ++++++ .../utility/ResourceLocationHelper.java | 20 ++++ .../clockhud/textures/gui/gui_clock.png | Bin 0 -> 4287 bytes 12 files changed, 322 insertions(+) create mode 100644 build.gradle create mode 100644 src/main/java/com/qkninja/clockhud/ClockHUD.java create mode 100644 src/main/java/com/qkninja/clockhud/client/gui/GuiClock.java create mode 100644 src/main/java/com/qkninja/clockhud/proxy/ClientProxy.java create mode 100644 src/main/java/com/qkninja/clockhud/proxy/CommonProxy.java create mode 100644 src/main/java/com/qkninja/clockhud/proxy/IProxy.java create mode 100644 src/main/java/com/qkninja/clockhud/proxy/ServerProxy.java create mode 100644 src/main/java/com/qkninja/clockhud/reference/Reference.java create mode 100644 src/main/java/com/qkninja/clockhud/reference/Textures.java create mode 100644 src/main/java/com/qkninja/clockhud/utility/LogHelper.java create mode 100644 src/main/java/com/qkninja/clockhud/utility/ResourceLocationHelper.java create mode 100644 src/main/resources/assets/clockhud/textures/gui/gui_clock.png diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..a7d7005 --- /dev/null +++ b/build.gradle @@ -0,0 +1,64 @@ +buildscript { + repositories { + mavenCentral() + maven { + name = "forge" + url = "http://files.minecraftforge.net/maven" + } + maven { + name = "sonatype" + url = "https://oss.sonatype.org/content/repositories/snapshots/" + } + } + dependencies { + classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT' + } +} + +apply plugin: 'forge' + +version = "1.7.10-1.0" +group= "com.qkninja.clockhud" // http://maven.apache.org/guides/mini/guide-naming-conventions.html +archivesBaseName = "ClockHUD" + +minecraft { + version = "1.7.10-10.13.2.1230" +} + +dependencies { + // you may put jars on which you depend on in ./libs + // or you may define them like so.. + //compile "some.group:artifact:version:classifier" + //compile "some.group:artifact:version" + + // real examples + //compile 'com.mod-buildcraft:buildcraft:6.0.8:dev' // adds buildcraft to the dev env + //compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env + + // for more info... + // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html + // http://www.gradle.org/docs/current/userguide/dependency_management.html + +} + +processResources +{ + // this will ensure that this task is redone when the versions change. + inputs.property "version", project.version + inputs.property "mcversion", project.minecraft.version + + // replace stuff in mcmod.info, nothing else + from(sourceSets.main.resources.srcDirs) { + include 'mcmod.info' + + // replace version and mcversion + expand 'version':project.version, 'mcversion':project.minecraft.version + } + + // copy everything else, thats not the mcmod.info + from(sourceSets.main.resources.srcDirs) { + exclude 'mcmod.info' + } +} + +sourceSets { main { output.resourcesDir = output.classesDir } } \ No newline at end of file diff --git a/src/main/java/com/qkninja/clockhud/ClockHUD.java b/src/main/java/com/qkninja/clockhud/ClockHUD.java new file mode 100644 index 0000000..9009595 --- /dev/null +++ b/src/main/java/com/qkninja/clockhud/ClockHUD.java @@ -0,0 +1,28 @@ +package com.qkninja.clockhud; + +import com.qkninja.clockhud.proxy.IProxy; +import com.qkninja.clockhud.reference.Reference; +import cpw.mods.fml.common.Mod; +import cpw.mods.fml.common.SidedProxy; +import cpw.mods.fml.common.event.FMLInitializationEvent; + +/** + * Created by Sam on 2014-12-20. + */ +@Mod(modid = Reference.MOD_ID, name = Reference.MOD_NAME, version = Reference.VERSION) +public class ClockHUD +{ + + @Mod.Instance(Reference.MOD_ID) + public static ClockHUD instance; + + @SidedProxy(clientSide = Reference.CLIENT_PROXY_CLASS, serverSide = Reference.SERVER_PROXY_CLASS) + public static IProxy proxy; + + @Mod.EventHandler + public void Init(FMLInitializationEvent event) + { + proxy.registerRenderers(); + } + +} \ No newline at end of file diff --git a/src/main/java/com/qkninja/clockhud/client/gui/GuiClock.java b/src/main/java/com/qkninja/clockhud/client/gui/GuiClock.java new file mode 100644 index 0000000..a2bf8c7 --- /dev/null +++ b/src/main/java/com/qkninja/clockhud/client/gui/GuiClock.java @@ -0,0 +1,97 @@ +package com.qkninja.clockhud.client.gui; + +import com.qkninja.clockhud.reference.Textures; +import cpw.mods.fml.common.eventhandler.EventPriority; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Gui; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent; +import org.lwjgl.opengl.GL11; + +/** + * Creates the Clock Gui. + */ +public class GuiClock extends Gui +{ + private Minecraft mc; + + public GuiClock(Minecraft mc) + { + super(); + + // Invokes the render engine, or something. + this.mc = mc; + } + + private static final int SUN_WIDTH = 24; // 48 + private static final int MOON_WIDTH = 16; // 31 + private static final int ICON_HEIGHT = 25; // 49 + private static final int BAR_LENGTH = 200; // 400 + private static final int BAR_HEIGHT = 5; // 10 + private static final int DOT = 5; // 10 + private static final float SCALE =.7F; + + private static final int DAY_TICKS = 24000; + private static final int NIGHT_TICK = 13000; + + @SubscribeEvent(priority = EventPriority.NORMAL) + public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) + { + + if(event.isCancelable() || event.type != RenderGameOverlayEvent.ElementType.EXPERIENCE) + { + return; + } + + int xPos = 2; + int yPos = 2; + + this.mc.getTextureManager().bindTexture(Textures.Gui.HUD); + + GL11.glEnable(GL11.GL_BLEND); + GL11.glDisable(GL11.GL_DEPTH_TEST); + GL11.glDepthMask(false); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glDisable(GL11.GL_ALPHA_TEST); + GL11.glScalef(SCALE, SCALE, SCALE); + + this.drawTexturedModalRect(xPos + SUN_WIDTH / 2 - (DOT / 2), yPos + ICON_HEIGHT / 2 - BAR_HEIGHT / 2, 0, 0, BAR_LENGTH, BAR_HEIGHT); + if (isDay()) + this.drawTexturedModalRect(xPos + getScaledTime(), yPos, 0, BAR_HEIGHT, SUN_WIDTH, ICON_HEIGHT); + else + this.drawTexturedModalRect(xPos + (SUN_WIDTH - MOON_WIDTH) / 2 + getScaledTime(), yPos, SUN_WIDTH, BAR_HEIGHT, MOON_WIDTH, ICON_HEIGHT); + + GL11.glScalef(1 / SCALE, 1 / SCALE, 1 / SCALE); + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_DEPTH_TEST); + GL11.glDepthMask(true); + + } + + private int getScaledTime() + { + World world = Minecraft.getMinecraft().theWorld; + long time = world.getWorldInfo().getWorldTime(); + int currentTime = (int) time % DAY_TICKS; + + if (currentTime >= 0 && currentTime <= NIGHT_TICK) + { + return currentTime * (BAR_LENGTH - DOT) / NIGHT_TICK; + } + else + { + return (currentTime - NIGHT_TICK) * (BAR_LENGTH - DOT) / (DAY_TICKS - NIGHT_TICK); + } + } + + private boolean isDay() + { + World world = Minecraft.getMinecraft().theWorld; + long time = world.getWorldInfo().getWorldTime(); + int currentTime = (int) time % DAY_TICKS; + + return (currentTime >= 0 && currentTime <= NIGHT_TICK); + } +} \ No newline at end of file diff --git a/src/main/java/com/qkninja/clockhud/proxy/ClientProxy.java b/src/main/java/com/qkninja/clockhud/proxy/ClientProxy.java new file mode 100644 index 0000000..26cbe1a --- /dev/null +++ b/src/main/java/com/qkninja/clockhud/proxy/ClientProxy.java @@ -0,0 +1,20 @@ +package com.qkninja.clockhud.proxy; + +import com.qkninja.clockhud.client.gui.GuiClock; +import net.minecraft.client.Minecraft; +import net.minecraftforge.common.MinecraftForge; + +/** + * Created by Sam on 2014-12-20. + */ +public class ClientProxy extends CommonProxy +{ + + private Minecraft mc = Minecraft.getMinecraft(); + + @Override + public void registerRenderers() + { + MinecraftForge.EVENT_BUS.register(new GuiClock(mc)); + } +} diff --git a/src/main/java/com/qkninja/clockhud/proxy/CommonProxy.java b/src/main/java/com/qkninja/clockhud/proxy/CommonProxy.java new file mode 100644 index 0000000..957c229 --- /dev/null +++ b/src/main/java/com/qkninja/clockhud/proxy/CommonProxy.java @@ -0,0 +1,9 @@ +package com.qkninja.clockhud.proxy; + +/** + * Created by Sam on 2014-12-20. + */ +public abstract class CommonProxy implements IProxy +{ + +} diff --git a/src/main/java/com/qkninja/clockhud/proxy/IProxy.java b/src/main/java/com/qkninja/clockhud/proxy/IProxy.java new file mode 100644 index 0000000..495b7a6 --- /dev/null +++ b/src/main/java/com/qkninja/clockhud/proxy/IProxy.java @@ -0,0 +1,11 @@ +package com.qkninja.clockhud.proxy; + +/** + * Created by Sam on 2014-12-20. + */ +public interface IProxy +{ + + public void registerRenderers(); + +} diff --git a/src/main/java/com/qkninja/clockhud/proxy/ServerProxy.java b/src/main/java/com/qkninja/clockhud/proxy/ServerProxy.java new file mode 100644 index 0000000..d541135 --- /dev/null +++ b/src/main/java/com/qkninja/clockhud/proxy/ServerProxy.java @@ -0,0 +1,9 @@ +package com.qkninja.clockhud.proxy; + +/** + * Created by Sam on 2014-12-20. + */ +public class ServerProxy extends CommonProxy +{ + public void registerRenderers() {} +} diff --git a/src/main/java/com/qkninja/clockhud/reference/Reference.java b/src/main/java/com/qkninja/clockhud/reference/Reference.java new file mode 100644 index 0000000..34d7e12 --- /dev/null +++ b/src/main/java/com/qkninja/clockhud/reference/Reference.java @@ -0,0 +1,14 @@ +package com.qkninja.clockhud.reference; + +/** + * Created by Sam on 2014-12-20. + */ +public class Reference +{ + public static final String MOD_ID = "ClockHUD"; + public static final String MOD_NAME = "ClockHUD"; + public static final String VERSION = "1.7.10-1.0"; + public static final String SERVER_PROXY_CLASS = "com.qkninja.clockhud.proxy.ServerProxy"; + public static final String CLIENT_PROXY_CLASS = "com.qkninja.clockhud.proxy.ClientProxy"; +// public static final String GUI_FACTORY_CLASS = "com.qkninja.clockhud.client.gui.GuiFactory"; +} diff --git a/src/main/java/com/qkninja/clockhud/reference/Textures.java b/src/main/java/com/qkninja/clockhud/reference/Textures.java new file mode 100644 index 0000000..c60c00d --- /dev/null +++ b/src/main/java/com/qkninja/clockhud/reference/Textures.java @@ -0,0 +1,18 @@ +package com.qkninja.clockhud.reference; + +import com.qkninja.clockhud.utility.ResourceLocationHelper; +import net.minecraft.util.ResourceLocation; + +/** + * Created by Sam on 2014-12-20. + */ +public class Textures +{ + public static final String RESOURCE_PREFIX = Reference.MOD_ID.toLowerCase() + ":"; + + public static final class Gui + { + private static final String GUI_SHEET_LOCATION = "textures/gui/"; + public static final ResourceLocation HUD = ResourceLocationHelper.getResourceLocation(GUI_SHEET_LOCATION + "gui_clock.png"); + } +} diff --git a/src/main/java/com/qkninja/clockhud/utility/LogHelper.java b/src/main/java/com/qkninja/clockhud/utility/LogHelper.java new file mode 100644 index 0000000..7ee35bd --- /dev/null +++ b/src/main/java/com/qkninja/clockhud/utility/LogHelper.java @@ -0,0 +1,32 @@ +package com.qkninja.clockhud.utility; + +import com.qkninja.clockhud.reference.Reference; +import cpw.mods.fml.common.FMLLog; +import org.apache.logging.log4j.Level; + +/** + * Created by Sam on 2014-12-20. + */ +public class LogHelper +{ + public static void log(Level logLevel, Object object) + { + FMLLog.log(Reference.MOD_NAME, logLevel, String.valueOf(object)); + } + + public static void all(Object object) { log(Level.ALL, object); } + + public static void debug(Object object) { log(Level.DEBUG, object); } + + public static void error(Object object) { log(Level.ERROR, object); } + + public static void fatal(Object object) { log(Level.FATAL, object); } + + public static void info(Object object) { log(Level.INFO, object); } + + public static void off(Object object) { log(Level.OFF, object); } + + public static void trace(Object object) { log(Level.TRACE, object); } + + public static void warn(Object object) { log(Level.WARN, object); } +} diff --git a/src/main/java/com/qkninja/clockhud/utility/ResourceLocationHelper.java b/src/main/java/com/qkninja/clockhud/utility/ResourceLocationHelper.java new file mode 100644 index 0000000..6be28e5 --- /dev/null +++ b/src/main/java/com/qkninja/clockhud/utility/ResourceLocationHelper.java @@ -0,0 +1,20 @@ +package com.qkninja.clockhud.utility; + +import com.qkninja.clockhud.reference.Reference; +import net.minecraft.util.ResourceLocation; + +/** + * Created by Sam on 2014-12-20. + */ +public class ResourceLocationHelper +{ + public static ResourceLocation getResourceLocation(String modId, String path) + { + return new ResourceLocation(modId, path); + } + + public static ResourceLocation getResourceLocation(String path) + { + return getResourceLocation(Reference.MOD_ID.toLowerCase(), path); + } +} diff --git a/src/main/resources/assets/clockhud/textures/gui/gui_clock.png b/src/main/resources/assets/clockhud/textures/gui/gui_clock.png new file mode 100644 index 0000000000000000000000000000000000000000..b1849947a95a4eb20d01747c6d27cc84d98ea471 GIT binary patch literal 4287 zcmc&&c~FyQ8h--_h$ys{3KEXNwRmv|atZ`nsb-6S%2{rZ080p<2qYYd;7v7bRX~FY zYoS0v2x0+2NRT612|8901UCg&#cNneuXS2zFApPmekmap&gs zo^_ud_4=#DZLbsRT4n78xSsWG1;nWQBn zWjN5(*;$#&h*aKo^IOR^K$%Hx^qm|W8uEHl?o)MMXl5*osB1{}5B@qYFRxXNs5!H4 zc~#6|2+gonX4uXQ342ArSZRu%jEkC|N}H$KF!;gpPbd)t{)&N^8m#5c!KMsvn4RaW zmNiRiBd%flX3oKu2``b9OExyej|OkzTS)JniL+&dJ1T^1V{ZuZA<{n8>&;^e`={%9spqYNApKL- zL({jMWD>e(`wYWomfbS%t3i+i%{B-ea=9UwX14S?0PBIeBe3#sQW^8J4r_|S{Q#AU zOm2j`zYz!o2who%1HKByAO07BLS^o9MkrmekZ}ge$B=0*4AR~G@(7TE)E53P^S-(F z{YPMqwYs`r+Bkrb8hW1|E1+tQN7Bf)>2{GInJN1Gy_;EMOPPH)c-0k42kdvunZ1xk z%2-8sh&_mJowEHzvr`ZRj1@4)AONTW;4B{kg~Ae_sv!E{GMCHkx;$-syWU98^^|7b z788QZcL>|IJ+O;UJH_1&aNxB~|E8bB_%E;UA&K`p!NshqtNf?%rYSUoW?6R2o&4;O zT4sVnp01e+P@+1W0d=wZ!l?b<>NKSZ};Z)3AtaT zi~8@;kETB;3x5>p4Q%|Ko9dmTn}g zI9&N^c4^tY7Z<)NhX7wlec!(QK^?oOWFBLsLOJbHyse2rBy^AMkg1+hz7Z#)Ld~=N zP3vFS`hbW8Ma7FhwpbvT8_KFu2hIIq+2U_~3w{*DF8(m2-LrIg3T349+%z+-kJ_v% zFKY!#tMK9U)Sa5u^Qzi?6v^F-xcRH~@Pzmw&5evEPtgAc9JU{DHc%7YVBgSj=;jfZIa(2bwK6**$nvp*gX9&hDf^~zNY zMoxOu^+SBxPdl~8UVr|*RGiyF5!Pp^sAuzRCSTfi#pS?irIn-GK*%;95a!G-zm+$5 z?WU9?tQ|c+5G3-tQ3xj!1Wz&>GW54zT7?t+)yC)4+ zjYt-nJAlIzEu4f(krIu&C$^(vDBNc6&`R-T{PyM@it9kFlYGI=iVg{L(T|9si()>l zAdpN8aeA#vu+9!p0kvW444=5m=21H3AVK$#$x^kNsPa6E$g_Ox?jsr9C3n$l3PuQX z0?U!xuXkb)?+v!&+Rnr<7`)`^q(efq= z5QGx0_=!WKVi*f<)wqDQm);>R&tI#bnPG;*@zLuUb}-bdS{~8~PfAS7l&%7#4=D0O zr^77=8A2{=5}!1GhODo|bjEmBC`ocESy~DcjFCm`4#Y@g0zp(rU^FnpMbJ7*x9NrY zpk_>hth-s_D|(EV8K4IMc_L|gdRovjT@=cp7b}hvw!xO5}ZtO5Wm>Wv3II% zx_kge5|KWu6BqLnifDepk(Dj=ud16T?SZ*B^oxPf!!_7oMRjWLT>wp1Z!q}j{N`6} zRB6L4NAvgwqnz9&HjP^vI_utt4%{U3Gf#^`?`dpzZDw$=9_q444RzVh#Ey10?b5G9 zGslj`i9IEg;VbCA5FPQ<(n!dIYq@?I5A4m~*uRA3j$f#5G^7u*_c`=7XRRihGd3F3 zzpPKuhv|_3AfOOioYixAd;5cER9Li*$8pV~*b5QRHd2YsQepky8t#^#q@+SEbCkyt z@2>_iGeov%#=>Sr1AZ(9Yhh?)1nZyuDqZ>t$||8`pJB)p$#e*LOV&_*ILSfni)GX z3fzWk`p8qAS8UR&-B${*R;kz11@~saDmDB_^(;Qj92V6u>^KuX+=A^fU)I=~Jcttx5~mZ%yyQHz1}oDqPid z5z_g?kyZ|S`D>9>z)xe{a5e)-^iAUqc-`rIdMC`=vAL`&V(CEe#KD6*%{!jjzSab_ zsC9+;vG}lVs3SRcM()wcg_`iE)>!TTF#nC}eZ2q1{4MZ%d4FsEZ}#-xvA@&%Tl2RmsIHab zW5CJ@%7*~Ijr@1L`r{P-q&ZF=-LHjqUL&a=1NKA8m6WsG^?$C8cgfysuyAX4?Eec(Jt=j^LBJl5 W)~+P45&16)0N^fe2P?k}$^0j68^_@Q literal 0 HcmV?d00001