diff --git a/src/main/java/WayofTime/bloodmagic/BloodMagic.java b/src/main/java/WayofTime/bloodmagic/BloodMagic.java index d6ea532b..c57c55a2 100644 --- a/src/main/java/WayofTime/bloodmagic/BloodMagic.java +++ b/src/main/java/WayofTime/bloodmagic/BloodMagic.java @@ -7,6 +7,7 @@ import WayofTime.bloodmagic.util.handler.IMCHandler; import lombok.Getter; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; +import net.minecraft.launchwrapper.Launch; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.SidedProxy; import net.minecraftforge.fml.common.event.FMLInitializationEvent; @@ -57,6 +58,9 @@ public class BloodMagic } }; + @Getter + private static boolean isDev = (Boolean) Launch.blackboard.get("fml.deobfuscatedEnvironment"); + private LogHelper logger = new LogHelper(Constants.Mod.MODID); private File configDir; diff --git a/src/main/java/WayofTime/bloodmagic/client/helper/MiscIcons.java b/src/main/java/WayofTime/bloodmagic/client/helper/MiscIcons.java deleted file mode 100644 index 45eda267..00000000 --- a/src/main/java/WayofTime/bloodmagic/client/helper/MiscIcons.java +++ /dev/null @@ -1,51 +0,0 @@ -package WayofTime.bloodmagic.client.helper; - -import WayofTime.bloodmagic.api.Constants; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.renderer.texture.TextureMap; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.event.TextureStitchEvent; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; - -/** - * Courtesy of williewillus - */ -public class MiscIcons -{ - public static final MiscIcons INSTANCE = new MiscIcons(); - - public TextureAtlasSprite - ritualStoneBlankIcon, - ritualStoneWaterIcon, - ritualStoneFireIcon, - ritualStoneEarthIcon, - ritualStoneAirIcon, - ritualStoneDawnIcon, - ritualStoneDuskIcon; - - private MiscIcons() {} - - @SubscribeEvent - public void onTextureStitch(TextureStitchEvent.Pre event) - { - final String BLOCKS = "blocks"; - - ritualStoneBlankIcon = forName(event.map, "RitualStone", BLOCKS); - ritualStoneWaterIcon = forName(event.map, "WaterRitualStone", BLOCKS); - ritualStoneFireIcon = forName(event.map, "FireRitualStone", BLOCKS); - ritualStoneEarthIcon = forName(event.map, "EarthRitualStone", BLOCKS); - ritualStoneAirIcon = forName(event.map, "AirRitualStone", BLOCKS); - ritualStoneDawnIcon = forName(event.map, "LightRitualStone", BLOCKS); - ritualStoneDuskIcon = forName(event.map, "DuskRitualStone", BLOCKS); - } - - public static TextureAtlasSprite forName(TextureMap textureMap, String name) - { - return textureMap.registerSprite(new ResourceLocation(Constants.Mod.DOMAIN + name)); - } - - public static TextureAtlasSprite forName(TextureMap textureMap, String name, String dir) - { - return textureMap.registerSprite(new ResourceLocation(Constants.Mod.DOMAIN + dir + "/" + name)); - } -} diff --git a/src/main/java/WayofTime/bloodmagic/client/helper/RenderFakeBlocks.java b/src/main/java/WayofTime/bloodmagic/client/render/RenderFakeBlocks.java similarity index 96% rename from src/main/java/WayofTime/bloodmagic/client/helper/RenderFakeBlocks.java rename to src/main/java/WayofTime/bloodmagic/client/render/RenderFakeBlocks.java index a3b97a90..86634a42 100644 --- a/src/main/java/WayofTime/bloodmagic/client/helper/RenderFakeBlocks.java +++ b/src/main/java/WayofTime/bloodmagic/client/render/RenderFakeBlocks.java @@ -1,4 +1,4 @@ -package WayofTime.bloodmagic.client.helper; +package WayofTime.bloodmagic.client.render; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.Tessellator; @@ -14,9 +14,7 @@ public class RenderFakeBlocks public static void drawFakeBlock(TextureAtlasSprite texture, double minX, double minY, double minZ, World world) { if (texture == null) - { return; - } double maxX = minX + 1; double maxY = minY + 1; @@ -26,7 +24,6 @@ public class RenderFakeBlocks Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationBlocksTexture); wr.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); -// wr.setColorRGBA(255, 255, 255, 200); float texMinU = texture.getMinU(); float texMinV = texture.getMinV(); diff --git a/src/main/java/WayofTime/bloodmagic/client/render/RenderRitualDiviner.java b/src/main/java/WayofTime/bloodmagic/client/render/RenderRitualDiviner.java deleted file mode 100644 index 378f6e73..00000000 --- a/src/main/java/WayofTime/bloodmagic/client/render/RenderRitualDiviner.java +++ /dev/null @@ -1,109 +0,0 @@ -package WayofTime.bloodmagic.client.render; - -import WayofTime.bloodmagic.api.registry.RitualRegistry; -import WayofTime.bloodmagic.api.ritual.IMasterRitualStone; -import WayofTime.bloodmagic.api.ritual.Ritual; -import WayofTime.bloodmagic.api.ritual.RitualComponent; -import WayofTime.bloodmagic.client.helper.MiscIcons; -import WayofTime.bloodmagic.client.helper.RenderFakeBlocks; -import WayofTime.bloodmagic.item.ItemRitualDiviner; -import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.EntityPlayerSP; -import net.minecraft.client.renderer.GlStateManager; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.BlockPos; -import net.minecraft.util.EnumFacing; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import net.minecraftforge.client.event.RenderWorldLastEvent; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; -import org.lwjgl.opengl.GL11; - -@SideOnly(Side.CLIENT) -public class RenderRitualDiviner -{ - @SubscribeEvent - public void render(RenderWorldLastEvent event) - { - Minecraft minecraft = Minecraft.getMinecraft(); - EntityPlayerSP player = minecraft.thePlayer; - World world = player.worldObj; - - if (minecraft.objectMouseOver == null || minecraft.objectMouseOver.typeOfHit != MovingObjectPosition.MovingObjectType.BLOCK) - { - return; - } - - TileEntity tileEntity = world.getTileEntity(minecraft.objectMouseOver.getBlockPos()); - - if (tileEntity instanceof IMasterRitualStone) - { - if (player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemRitualDiviner) - { - ItemRitualDiviner ritualDiviner = (ItemRitualDiviner) player.inventory.getCurrentItem().getItem(); - EnumFacing direction = ritualDiviner.getDirection(player.inventory.getCurrentItem()); - Ritual ritual = RitualRegistry.getRitualForId(ritualDiviner.getCurrentRitual(player.inventory.getCurrentItem())); - - if (ritual == null) - { - return; - } - - GlStateManager.pushMatrix(); - GlStateManager.enableBlend(); - GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - - Vec3 vec3 = new Vec3(minecraft.objectMouseOver.getBlockPos().getX(), minecraft.objectMouseOver.getBlockPos().getY(), minecraft.objectMouseOver.getBlockPos().getZ()); - double posX = player.lastTickPosX + (player.posX - player.lastTickPosX) * event.partialTicks; - double posY = player.lastTickPosY + (player.posY - player.lastTickPosY) * event.partialTicks; - double posZ = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * event.partialTicks; - - for (RitualComponent ritualComponent : ritual.getComponents()) - { - Vec3 vX = vec3.add(new Vec3(ritualComponent.getX(direction), ritualComponent.getY(), ritualComponent.getZ(direction))); - double minX = vX.xCoord - posX; - double minY = vX.yCoord - posY; - double minZ = vX.zCoord - posZ; - - if (!world.getBlockState(new BlockPos(vX.xCoord, vX.yCoord, vX.zCoord)).getBlock().isOpaqueCube()) - { - TextureAtlasSprite texture = null; - - switch (ritualComponent.getRuneType()) - { - case BLANK: - texture = MiscIcons.INSTANCE.ritualStoneBlankIcon; - break; - case WATER: - texture = MiscIcons.INSTANCE.ritualStoneWaterIcon; - break; - case FIRE: - texture = MiscIcons.INSTANCE.ritualStoneFireIcon; - break; - case EARTH: - texture = MiscIcons.INSTANCE.ritualStoneEarthIcon; - break; - case AIR: - texture = MiscIcons.INSTANCE.ritualStoneAirIcon; - break; - case DAWN: - texture = MiscIcons.INSTANCE.ritualStoneDawnIcon; - break; - case DUSK: - texture = MiscIcons.INSTANCE.ritualStoneDuskIcon; - break; - } - - RenderFakeBlocks.drawFakeBlock(texture, minX, minY, minZ, world); - } - } - - GlStateManager.popMatrix(); - } - } - } -} diff --git a/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java b/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java index 321778fd..f813e220 100644 --- a/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java +++ b/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java @@ -1,6 +1,5 @@ package WayofTime.bloodmagic.proxy; -import WayofTime.bloodmagic.client.helper.MiscIcons; import WayofTime.bloodmagic.client.render.*; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.client.model.obj.OBJLoader; @@ -54,7 +53,6 @@ public class ClientProxy extends CommonProxy OBJLoader.instance.addDomain(Constants.Mod.MODID); - MinecraftForge.EVENT_BUS.register(MiscIcons.INSTANCE); ModBlocks.initRenders(); ModItems.initRenders(); @@ -76,8 +74,6 @@ public class ClientProxy extends CommonProxy ModelLoader.setCustomMeshDefinition(ModItems.boundPickaxe, new CustomMeshDefinitionActivatable("ItemBoundPickaxe")); ModelLoader.setCustomMeshDefinition(ModItems.boundSword, new CustomMeshDefinitionActivatable("ItemBoundSword")); - MinecraftForge.EVENT_BUS.register(new RenderRitualDiviner()); - ShaderHelper.init(); } diff --git a/src/main/java/WayofTime/bloodmagic/util/handler/ClientEventHandler.java b/src/main/java/WayofTime/bloodmagic/util/handler/ClientEventHandler.java index d7bb982d..09df40cf 100644 --- a/src/main/java/WayofTime/bloodmagic/util/handler/ClientEventHandler.java +++ b/src/main/java/WayofTime/bloodmagic/util/handler/ClientEventHandler.java @@ -1,12 +1,43 @@ package WayofTime.bloodmagic.util.handler; +import WayofTime.bloodmagic.api.Constants; +import WayofTime.bloodmagic.api.registry.RitualRegistry; +import WayofTime.bloodmagic.api.ritual.IMasterRitualStone; +import WayofTime.bloodmagic.api.ritual.Ritual; +import WayofTime.bloodmagic.api.ritual.RitualComponent; +import WayofTime.bloodmagic.client.render.RenderFakeBlocks; +import WayofTime.bloodmagic.item.ItemRitualDiviner; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.EntityPlayerSP; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.*; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderWorldLastEvent; +import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.event.entity.player.ItemTooltipEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import WayofTime.bloodmagic.util.GhostItemHelper; +import org.lwjgl.opengl.GL11; + public class ClientEventHandler { + public static int currentLP = 0; + public static int capacity = 0; + + public TextureAtlasSprite + ritualStoneBlankIcon, + ritualStoneWaterIcon, + ritualStoneFireIcon, + ritualStoneEarthIcon, + ritualStoneAirIcon, + ritualStoneDawnIcon, + ritualStoneDuskIcon; + @SubscribeEvent public void onTooltipEvent(ItemTooltipEvent event) { @@ -28,4 +59,104 @@ public class ClientEventHandler } } } + + @SubscribeEvent + public void onTextureStitch(TextureStitchEvent.Pre event) + { + final String BLOCKS = "blocks"; + + ritualStoneBlankIcon = forName(event.map, "RitualStone", BLOCKS); + ritualStoneWaterIcon = forName(event.map, "WaterRitualStone", BLOCKS); + ritualStoneFireIcon = forName(event.map, "FireRitualStone", BLOCKS); + ritualStoneEarthIcon = forName(event.map, "EarthRitualStone", BLOCKS); + ritualStoneAirIcon = forName(event.map, "AirRitualStone", BLOCKS); + ritualStoneDawnIcon = forName(event.map, "LightRitualStone", BLOCKS); + ritualStoneDuskIcon = forName(event.map, "DuskRitualStone", BLOCKS); + } + + @SubscribeEvent + public void render(RenderWorldLastEvent event) + { + Minecraft minecraft = Minecraft.getMinecraft(); + EntityPlayerSP player = minecraft.thePlayer; + World world = player.worldObj; + + if (minecraft.objectMouseOver == null || minecraft.objectMouseOver.typeOfHit != MovingObjectPosition.MovingObjectType.BLOCK) + { + return; + } + + TileEntity tileEntity = world.getTileEntity(minecraft.objectMouseOver.getBlockPos()); + + if (tileEntity instanceof IMasterRitualStone) + { + if (player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemRitualDiviner) + { + ItemRitualDiviner ritualDiviner = (ItemRitualDiviner) player.inventory.getCurrentItem().getItem(); + EnumFacing direction = ritualDiviner.getDirection(player.inventory.getCurrentItem()); + Ritual ritual = RitualRegistry.getRitualForId(ritualDiviner.getCurrentRitual(player.inventory.getCurrentItem())); + + if (ritual == null) + { + return; + } + + GlStateManager.pushMatrix(); + GlStateManager.enableBlend(); + GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + + Vec3 vec3 = new Vec3(minecraft.objectMouseOver.getBlockPos().getX(), minecraft.objectMouseOver.getBlockPos().getY(), minecraft.objectMouseOver.getBlockPos().getZ()); + double posX = player.lastTickPosX + (player.posX - player.lastTickPosX) * event.partialTicks; + double posY = player.lastTickPosY + (player.posY - player.lastTickPosY) * event.partialTicks; + double posZ = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * event.partialTicks; + + for (RitualComponent ritualComponent : ritual.getComponents()) + { + Vec3 vX = vec3.add(new Vec3(ritualComponent.getX(direction), ritualComponent.getY(), ritualComponent.getZ(direction))); + double minX = vX.xCoord - posX; + double minY = vX.yCoord - posY; + double minZ = vX.zCoord - posZ; + + if (!world.getBlockState(new BlockPos(vX.xCoord, vX.yCoord, vX.zCoord)).getBlock().isOpaqueCube()) + { + TextureAtlasSprite texture = null; + + switch (ritualComponent.getRuneType()) + { + case BLANK: + texture = ritualStoneBlankIcon; + break; + case WATER: + texture = ritualStoneWaterIcon; + break; + case FIRE: + texture = ritualStoneFireIcon; + break; + case EARTH: + texture = ritualStoneEarthIcon; + break; + case AIR: + texture = ritualStoneAirIcon; + break; + case DAWN: + texture = ritualStoneDawnIcon; + break; + case DUSK: + texture = ritualStoneDuskIcon; + break; + } + + RenderFakeBlocks.drawFakeBlock(texture, minX, minY, minZ, world); + } + } + + GlStateManager.popMatrix(); + } + } + } + + private static TextureAtlasSprite forName(TextureMap textureMap, String name, String dir) + { + return textureMap.registerSprite(new ResourceLocation(Constants.Mod.DOMAIN + dir + "/" + name)); + } }