- 344
- 1
- 47
Решил, короче сделать такую вещицу..
Допустим любой предмет выкинул из инвентаря и навел на него курсор, он в свою очередь высвечивается с своим названием при наведении, сундуком почти аналогично.
Все вроде бы ничего, но текст не высвечивается, хоть вроде все норм сделано.
Рендер
JakovUtils
Допустим любой предмет выкинул из инвентаря и навел на него курсор, он в свою очередь высвечивается с своим названием при наведении, сундуком почти аналогично.
Все вроде бы ничего, но текст не высвечивается, хоть вроде все норм сделано.
Рендер
Код:
EntityPlayer player = mc.thePlayer;
if(JakovUtils.GetTargetEntity(player.worldObj, player, recordPlayingUpFor) instanceof EntityItem)
{
EntityItem ei = (EntityItem) JakovUtils.GetTargetEntity(player.worldObj, player, recordPlayingUpFor);
ItemStack renderItem = ei.getEntityItem();
if(!ei.isInvisible())
{
String giveitemloc = StatCollector.translateToLocal("micertes.giveitem");
String giveitem = giveitemloc + " " + renderItem + " [" + ei.getEntityItem().stackSize + "]";
// FMLClientHandler
// .instance().getClient().fontRenderer.drawString(giveitem, 5, 5, 16777215, true);
FMLClientHandler.instance().getClient().fontRenderer.drawString(EnumChatFormatting.WHITE + giveitem, event.resolution.getScaledWidth() - 5 - this.mc.fontRenderer.getStringWidth(giveitem), 5, 16777215, true);
GL11.glColor4f(1F, 1F, 1F, 1F);
GL11.glPopMatrix();
}
}
else if(JakovUtils.GetTargetBlock(player.worldObj, 1) != null && JakovUtils.GetTargetBlock(player.worldObj, 1) instanceof BlockChest)
{
String openchestloc = StatCollector.translateToLocal("micertes.openchest");
String openchest = openchestloc + " ";
// FMLClientHandler
// .instance().getClient().fontRenderer.drawString(openchest, 5, 5, 16777215, true);
FMLClientHandler.instance().getClient().fontRenderer.drawString(EnumChatFormatting.WHITE + openchest, event.resolution.getScaledWidth() - 5 - this.mc.fontRenderer.getStringWidth(openchest), 5, 16777215, true);
}
JakovUtils
Код:
package micertes.dayz;
import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class JakovUtils {
public static Entity GetTargetEntity(World world, EntityPlayer player, int scanRadius)
{
double targetDistance = Math.pow(scanRadius,2);
Entity target = null;
List lst = world.getEntitiesWithinAABBExcludingEntity(player, AxisAlignedBB.getBoundingBox(player.posX-scanRadius, player.posY-scanRadius, player.posZ-scanRadius, player.posX+scanRadius, player.posY+scanRadius, player.posZ+scanRadius));
for (int i = 0; i < lst.size(); i ++)
{
Entity ent = (Entity) lst.get(i);
if (ent instanceof Entity && ent!=null && ent.boundingBox != null)
{
float distance = player.getDistanceToEntity(ent) + 0.1f;
float angle = player.rotationYawHead;
float pitch = player.rotationPitch;
Vec3 look = player.getLookVec();
//Vec3 vec32 = vec3.addVector(vec31.xCoord * 2, vec31.yCoord * 2, vec31.zCoord * 2);
Vec3 targetVec = Vec3.createVectorHelper(player.posX + look.xCoord * distance, player.getEyeHeight() + player.posY + look.yCoord * distance, player.posZ + look.zCoord * distance);
if (ent.boundingBox.isVecInside(targetVec))
{
if (distance < targetDistance && distance > 0)
{
targetDistance = distance;
target = ent;
}
}
}
}
return target;
}
@SideOnly(Side.CLIENT)
public static Block GetTargetBlock(World world, int scan)
{
//double targetDistance = Math.pow(scanRadius,2);
Block target = null;
MovingObjectPosition pos = Minecraft.getMinecraft().objectMouseOver;
if(pos!=null)
{
double xB = Math.abs(pos.blockX);
double zB = Math.abs(pos.blockZ);
double xP = Math.abs(Minecraft.getMinecraft().thePlayer.posX);
double zP = Math.abs(Minecraft.getMinecraft().thePlayer.posZ);
int distance = (int)Math.sqrt(Math.pow(xP-xB, 2) + Math.pow(zP-zB, 2));
if(distance == 0)
distance = 1;
if(pos!= null && world.getTileEntity(pos.blockX, pos.blockY, pos.blockZ) != null && distance <= scan)
{
target = world.getTileEntity(pos.blockX, pos.blockY, pos.blockZ).getBlockType();
}
}
return target;
}
}