From 70c1354a4a96698758a88c032866288f79de6f5a Mon Sep 17 00:00:00 2001 From: Benjamin Culkin Date: Sat, 24 Aug 2024 08:16:37 -0400 Subject: Initial commit --- .../plusplus/fbs/render/RendererGameOverlay.java | 159 +++++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 src/main/java/jp/plusplus/fbs/render/RendererGameOverlay.java (limited to 'src/main/java/jp/plusplus/fbs/render/RendererGameOverlay.java') diff --git a/src/main/java/jp/plusplus/fbs/render/RendererGameOverlay.java b/src/main/java/jp/plusplus/fbs/render/RendererGameOverlay.java new file mode 100644 index 0000000..b5a731c --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/render/RendererGameOverlay.java @@ -0,0 +1,159 @@ +package jp.plusplus.fbs.render; + +import com.mojang.realmsclient.gui.ChatFormatting; +import cpw.mods.fml.client.FMLClientHandler; +import cpw.mods.fml.common.eventhandler.EventPriority; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.RecipeBladeSpice; +import jp.plusplus.fbs.Registry; +import jp.plusplus.fbs.alchemy.characteristic.CharacteristicBase; +import jp.plusplus.fbs.exprop.FBSEntityProperties; +import jp.plusplus.fbs.item.ItemBookSorcery; +import jp.plusplus.fbs.spirit.ISpiritTool; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemSword; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.StatCollector; +import net.minecraftforge.client.GuiIngameForge; +import net.minecraftforge.client.event.RenderGameOverlayEvent; +import net.minecraftforge.event.entity.player.ItemTooltipEvent; + +import java.util.ArrayList; +import java.util.List; + +/** + * Createdby pluslus_Fon 2015/06/05. + */ +public class RendererGameOverlay { + public static final ResourceLocation icons = new ResourceLocation(FBS.MODID+":textures/gui/san.png"); + public static Minecraft mc = FMLClientHandler.instance().getClient(); + + @SideOnly(Side.CLIENT) + private static int Count = 0; + @SideOnly(Side.CLIENT) + public static boolean renderHUD = false; + @SideOnly(Side.CLIENT) + public static boolean renderAria=false; + + @SideOnly(Side.CLIENT) + @SubscribeEvent(priority = EventPriority.LOWEST) + public void onRenderGameOverlayEvent(RenderGameOverlayEvent.Pre event) { + if (event.type == RenderGameOverlayEvent.ElementType.FOOD && mc.playerController.shouldDrawHUD()) { + renderHUD = true; + } + if(event.type==RenderGameOverlayEvent.ElementType.HOTBAR) renderAria=true; + } + + @SideOnly(Side.CLIENT) + @SubscribeEvent(priority = EventPriority.LOWEST) + public void onRenderGameOverlayEvent(RenderGameOverlayEvent.Post event) { + int width = event.resolution.getScaledWidth(); + int height = event.resolution.getScaledHeight(); + + if (renderHUD) { + renderHUD = false; + + mc.mcProfiler.startSection(FBS.MODID+"-san"); + FMLClientHandler.instance().getClient().getTextureManager().bindTexture(icons); + + int x=width/2-91; + int y=height - GuiIngameForge.left_height; + GuiIngameForge.left_height += 10; + + //san + drawTexturedModalRect(x, y, 0, 0, 24, 8); + if(mc.thePlayer!=null){ + FBSEntityProperties fbsep=FBSEntityProperties.get(mc.thePlayer); + int s=fbsep.getSanity(); + int ms=fbsep.get(mc.thePlayer).getMaxSanity(); + + for(int i=0;i==0 || s>0;i++){ + drawTexturedModalRect(x+24+8*(2-i), y, 8 * (s%10), 8, 8, 8); + s/=10; + } + drawTexturedModalRect(x+24+8*3, y, 24, 0, 8, 8); + for(int i=0;i==0 || ms>0;i++){ + drawTexturedModalRect(x+24+8*(5-i), y, 8 * (ms%10), 8, 8, 8); + ms/=10; + } + } + mc.mcProfiler.endSection(); + FMLClientHandler.instance().getClient().getTextureManager().bindTexture(Gui.icons); + } + + if(renderAria){ + renderAria = false; + + mc.mcProfiler.startSection(FBS.MODID+"-aria"); + FMLClientHandler.instance().getClient().getTextureManager().bindTexture(icons); + + //詠唱時間の描画 + if(mc.thePlayer.isUsingItem()){ + ItemStack itemStack=mc.thePlayer.getCurrentEquippedItem(); + if(itemStack!=null && itemStack.getItem() instanceof ItemBookSorcery){ + int baseX=width/2-33; + int baseY=height/2+9; + int w=64-(int)(64.f*mc.thePlayer.getItemInUseCount()/itemStack.getMaxItemUseDuration()); + + drawTexturedModalRect(baseX, baseY, 88, 0, 66, 4); + if(w>0) drawTexturedModalRect(baseX+1, baseY+1, 89, 4, w, 2); + } + } + mc.mcProfiler.endSection(); + FMLClientHandler.instance().getClient().getTextureManager().bindTexture(Gui.icons); + } + } + + + @SubscribeEvent + public void onItemTooltipEvent(ItemTooltipEvent event) { + ItemStack itemStack = event.itemStack; + List toolTip = event.toolTip; + + //使用することでSAN値が増減するアイテム + Registry.ItemSanity isan=Registry.GetItemSanity(event.itemStack); + if(isan!=null){ + if(isan.max>0) toolTip.add(ChatFormatting.BLUE+StatCollector.translateToLocalFormatted("info.fbs.sanity.add", isan.trial, isan.max)); + else if(isan.max<0) toolTip.add(ChatFormatting.RED+StatCollector.translateToLocalFormatted("info.fbs.sanity.lose", isan.trial, -isan.max)); + } + + //精霊武器 + if(itemStack.getItem() instanceof ISpiritTool){ + + } + + //剣と刃薬 + if(itemStack.getItem() instanceof ItemSword){ + NBTTagCompound nbt=itemStack.getTagCompound(); + if(nbt!=null && nbt.hasKey(RecipeBladeSpice.AMOUNT)){ + toolTip.add("[Blade Spice "+nbt.getInteger(RecipeBladeSpice.AMOUNT)+"]"); + + ArrayList cbs=RecipeBladeSpice.getCharacteristics(itemStack); + for(CharacteristicBase cb : cbs){ + toolTip.add(cb.getNameColor()+"-"+cb.getLocalizedName()+":"+cb.getLocalizedEffectValue()); + } + } + } + } + + public static void drawTexturedModalRect(int par1, int par2, int par3, int par4, int par5, int par6){ + float zLevel = -90.0F; + + float f = 0.00390625F; + float f1 = 0.00390625F; + Tessellator tessellator = Tessellator.instance; + tessellator.startDrawingQuads(); + tessellator.addVertexWithUV((par1 + 0), (par2 + par6), zLevel, ((par3 + 0) * f), ((par4 + par6) * f1)); + tessellator.addVertexWithUV((par1 + par5), (par2 + par6), zLevel, ((par3 + par5) * f), ((par4 + par6) * f1)); + tessellator.addVertexWithUV((par1 + par5), (par2 + 0), zLevel, ((par3 + par5) * f), ((par4 + 0) * f1)); + tessellator.addVertexWithUV((par1 + 0), (par2 + 0), zLevel, ((par3 + 0) * f), ((par4 + 0) * f1)); + tessellator.draw(); + } +} -- cgit v1.2.3