public class UI {
public Minecraft mc;
RenderItem itemRenderer = new RenderItem();
public UI(Minecraft mc) {
this.mc = mc;
}
@SubscribeEvent(
priority = EventPriority.HIGHEST,
receiveCanceled = true
)
public void onKeyInput(KeyInputEvent e) {
if(ClientProxy.PickUp.isPressed()) {
if (mc.theWorld.isRemote && mc.objectMouseOver != null && mc.objectMouseOver.hitVec != null) {
Vec3 hitVec = mc.objectMouseOver.hitVec;
EntityClientPlayerMP player = mc.thePlayer;
double playerX = player.posX;
double playerY = player.posY;
double segLen = 0.25;
double segLend2 = 0.125;
double playerZ = player.posZ;
double dx = hitVec.xCoord - playerX;
double dy = hitVec.yCoord - playerY;
double dz = hitVec.zCoord - playerZ;
double lineLen = Math.sqrt(Math.pow(dx, 2.0) + Math.pow(dy, 2.0) + Math.pow(dz, 2.0));
double segNumDouble = lineLen / segLen;
int segNum = (int)segNumDouble;
World world = player.getEntityWorld();
ArrayList<EntityItem> items = null;
int index = 0;
while (++index <= segNum) {
double cenX = playerX + dx / segNumDouble * (double)index;
double cenY = playerY + dy / segNumDouble * (double)index;
double cenZ = playerZ + dz / segNumDouble * (double)index;
AxisAlignedBB curAABB = AxisAlignedBB.getBoundingBox((double)(cenX - segLend2), (double)(cenY - segLend2), (double)(cenZ - segLend2), (double)(cenX + segLend2), (double)(cenY + segLend2), (double)(cenZ + segLend2));
items = (ArrayList)world.getEntitiesWithinAABB(EntityItem.class, curAABB);
if (items == null || items.isEmpty()) continue;
index = segNum + 1;
}
if (items != null && !items.isEmpty()) {
EntityItem closeItem = (EntityItem)items.get(0);
double closeDist = 100.0;
for (EntityItem item : items) {
double itemDist = Math.pow(item.posX - playerX, 2.0) + Math.pow(item.posY - playerY, 2.0) + Math.pow(item.posZ - playerZ, 2.0);
if (itemDist >= closeDist) continue;
closeDist = itemDist;
closeItem = item;
}
Core.netHandler.sendToServer(new Message_CloseItems(closeItem.getEntityId(), player.getEntityId()));
}
}
}
}
@SubscribeEvent(
receiveCanceled = true,
priority = EventPriority.HIGHEST
)
public void onInGameUI(RenderGameOverlayEvent e) {
if(e.type == ElementType.ALL) {
RenderHelper.disableStandardItemLighting();
drawItems(e);
RenderHelper.disableStandardItemLighting();
}
}
private void drawItems(RenderGameOverlayEvent e) {
if(e.type == ElementType.ALL) {
if (Minecraft.getMinecraft().objectMouseOver != null && Minecraft.getMinecraft().objectMouseOver.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) {
Vec3 hitVec = mc.objectMouseOver.hitVec;
EntityClientPlayerMP player = mc.thePlayer;
double playerX = player.posX;
double playerY = player.posY;
double playerZ = player.posZ;
WorldClient world = mc.theWorld;
double segLen = 0.25;
double segLend2 = 0.125;
double dx = hitVec.xCoord - playerX;
double dy = hitVec.yCoord - playerY;
double dz = hitVec.zCoord - playerZ;
double lineLen = Math.sqrt(Math.pow(dx, 2.0) + Math.pow(dy, 2.0) + Math.pow(dz, 2.0));
double segNumDouble = lineLen / segLen;
int segNum = (int)segNumDouble;
ArrayList<EntityItem> items = null;
int index = 0;
while (++index <= segNum) {
double cenX = playerX + dx / segNumDouble * (double)index;
double cenY = playerY + dy / segNumDouble * (double)index;
double cenZ = playerZ + dz / segNumDouble * (double)index;
AxisAlignedBB curAABB = AxisAlignedBB.getBoundingBox((double)(cenX - segLend2), (double)(cenY - segLend2), (double)(cenZ - segLend2), (double)(cenX + segLend2), (double)(cenY + segLend2), (double)(cenZ + segLend2));
items = (ArrayList)world.getEntitiesWithinAABB(EntityItem.class, curAABB);
if (items == null || items.isEmpty()) continue;
index = segNum + 1;
}
if (items != null && !items.isEmpty()) {
EntityItem closeItem = (EntityItem)items.get(0);
double closeDist = 100.0;
for (EntityItem item : items) {
double itemDist = Math.pow(item.posX - playerX, 2.0) + Math.pow(item.posY - playerY, 2.0) + Math.pow(item.posZ - playerZ, 2.0);
if (itemDist >= closeDist) continue;
closeDist = itemDist;
closeItem = item;
}
String text =
// closeItem.getEntityItem().stackSize > 1 ? closeItem.getEntityItem().getDisplayName() + " (" + closeItem.getEntityItem().stackSize + ")" :
closeItem.getEntityItem().getDisplayName();
String text2 = Keyboard.getKeyName(ClientProxy.PickUp.getKeyCode());
Minecraft.getMinecraft().fontRenderer.drawString("", e.resolution.getScaledWidth() / 2 + 5, e.resolution.getScaledHeight() / 2 + 14, 0xFFFFFF);
Minecraft.getMinecraft().fontRenderer.drawString("Подобрать [F]", e.resolution.getScaledWidth() / 2 + 5, e.resolution.getScaledHeight() / 2 + 24, 0xFFFFFF);
// Minecraft.getMinecraft().fontRenderer.drawString("[ " + text2 + " ]" , e.resolution.getScaledWidth() / 2 + 5, e.resolution.getScaledHeight() / 2 + 24, 0xFFFFFF);
Minecraft.getMinecraft().fontRenderer.drawString(text, (e.resolution.getScaledWidth()) / 2 + 64 - Minecraft.getMinecraft().fontRenderer.getStringWidth(text) - 1, e.resolution.getScaledHeight() / 2 + 13, 0xFFFFFF);
//renderInventorySlot(closeItem.getEntityItem(), e.resolution.getScaledWidth() / 2 - 18, e.resolution.getScaledHeight() / 2 + 4, 0f);
}
}
}
}
protected void renderInventorySlot(ItemStack p_73832_1_, double d, int p_73832_3_, float p_73832_4_) {
if(p_73832_1_ != null) {
float f1 = (float)p_73832_1_.animationsToGo - p_73832_4_;
if(f1 > 0.0F) {
GL11.glPushMatrix();
float f2 = 1.0F + f1 / 5.0F;
GL11.glTranslatef((float)(d + 8), (float)(p_73832_3_ + 12), 0.0F);
GL11.glScalef(1.0F / f2, (f2 + 1.0F) / 2.0F, 1.0F);
GL11.glTranslatef((float)(-(d + 8)), (float)(-(p_73832_3_ + 12)), 0.0F);
}
itemRenderer.renderItemIntoGUI(this.mc.fontRenderer, this.mc.getTextureManager(), p_73832_1_, (int) d, p_73832_3_);
if(f1 > 0.0F) {
GL11.glPopMatrix();
}
itemRenderer.renderItemOverlayIntoGUI(this.mc.fontRenderer, this.mc.getTextureManager(), p_73832_1_, (int) d, p_73832_3_);
}
StatCollector.translateToLocal("onInGameUI");
}
}
что то я не вижу у тебя такой строчкиХм... ничего почему-то не помогло, я знал этот способ, попробовал, но не помогло.
StatCollector.translateToLocal("book.text.1")
типа на:Minecraft.getMinecraft().fontRenderer.drawString("Подобрать [F]", e.resolution.getScaledWidth() / 2 + 5, e.resolution.getScaledHeight() / 2 + 24, 0xFFFFFF);
Minecraft.getMinecraft().fontRenderer.drawString(StatCollector.translateToLocal("text.take_f"), e.resolution.getScaledWidth() / 2 + 5, e.resolution.getScaledHeight() / 2 + 24, 0xFFFFFF);
text.take_f=Подобрать [F]
Сам бы написал, а не чужой код юзалМожет я что-нибудь не так делаю?
Java:public class UI { public Minecraft mc; RenderItem itemRenderer = new RenderItem(); public UI(Minecraft mc) { this.mc = mc; } @SubscribeEvent( priority = EventPriority.HIGHEST, receiveCanceled = true ) public void onKeyInput(KeyInputEvent e) { if(ClientProxy.PickUp.isPressed()) { if (mc.theWorld.isRemote && mc.objectMouseOver != null && mc.objectMouseOver.hitVec != null) { Vec3 hitVec = mc.objectMouseOver.hitVec; EntityClientPlayerMP player = mc.thePlayer; double playerX = player.posX; double playerY = player.posY; double segLen = 0.25; double segLend2 = 0.125; double playerZ = player.posZ; double dx = hitVec.xCoord - playerX; double dy = hitVec.yCoord - playerY; double dz = hitVec.zCoord - playerZ; double lineLen = Math.sqrt(Math.pow(dx, 2.0) + Math.pow(dy, 2.0) + Math.pow(dz, 2.0)); double segNumDouble = lineLen / segLen; int segNum = (int)segNumDouble; World world = player.getEntityWorld(); ArrayList<EntityItem> items = null; int index = 0; while (++index <= segNum) { double cenX = playerX + dx / segNumDouble * (double)index; double cenY = playerY + dy / segNumDouble * (double)index; double cenZ = playerZ + dz / segNumDouble * (double)index; AxisAlignedBB curAABB = AxisAlignedBB.getBoundingBox((double)(cenX - segLend2), (double)(cenY - segLend2), (double)(cenZ - segLend2), (double)(cenX + segLend2), (double)(cenY + segLend2), (double)(cenZ + segLend2)); items = (ArrayList)world.getEntitiesWithinAABB(EntityItem.class, curAABB); if (items == null || items.isEmpty()) continue; index = segNum + 1; } if (items != null && !items.isEmpty()) { EntityItem closeItem = (EntityItem)items.get(0); double closeDist = 100.0; for (EntityItem item : items) { double itemDist = Math.pow(item.posX - playerX, 2.0) + Math.pow(item.posY - playerY, 2.0) + Math.pow(item.posZ - playerZ, 2.0); if (itemDist >= closeDist) continue; closeDist = itemDist; closeItem = item; } Core.netHandler.sendToServer(new Message_CloseItems(closeItem.getEntityId(), player.getEntityId())); } } } } @SubscribeEvent( receiveCanceled = true, priority = EventPriority.HIGHEST ) public void onInGameUI(RenderGameOverlayEvent e) { if(e.type == ElementType.ALL) { RenderHelper.disableStandardItemLighting(); drawItems(e); RenderHelper.disableStandardItemLighting(); } } private void drawItems(RenderGameOverlayEvent e) { if(e.type == ElementType.ALL) { if (Minecraft.getMinecraft().objectMouseOver != null && Minecraft.getMinecraft().objectMouseOver.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) { Vec3 hitVec = mc.objectMouseOver.hitVec; EntityClientPlayerMP player = mc.thePlayer; double playerX = player.posX; double playerY = player.posY; double playerZ = player.posZ; WorldClient world = mc.theWorld; double segLen = 0.25; double segLend2 = 0.125; double dx = hitVec.xCoord - playerX; double dy = hitVec.yCoord - playerY; double dz = hitVec.zCoord - playerZ; double lineLen = Math.sqrt(Math.pow(dx, 2.0) + Math.pow(dy, 2.0) + Math.pow(dz, 2.0)); double segNumDouble = lineLen / segLen; int segNum = (int)segNumDouble; ArrayList<EntityItem> items = null; int index = 0; while (++index <= segNum) { double cenX = playerX + dx / segNumDouble * (double)index; double cenY = playerY + dy / segNumDouble * (double)index; double cenZ = playerZ + dz / segNumDouble * (double)index; AxisAlignedBB curAABB = AxisAlignedBB.getBoundingBox((double)(cenX - segLend2), (double)(cenY - segLend2), (double)(cenZ - segLend2), (double)(cenX + segLend2), (double)(cenY + segLend2), (double)(cenZ + segLend2)); items = (ArrayList)world.getEntitiesWithinAABB(EntityItem.class, curAABB); if (items == null || items.isEmpty()) continue; index = segNum + 1; } if (items != null && !items.isEmpty()) { EntityItem closeItem = (EntityItem)items.get(0); double closeDist = 100.0; for (EntityItem item : items) { double itemDist = Math.pow(item.posX - playerX, 2.0) + Math.pow(item.posY - playerY, 2.0) + Math.pow(item.posZ - playerZ, 2.0); if (itemDist >= closeDist) continue; closeDist = itemDist; closeItem = item; } String text = // closeItem.getEntityItem().stackSize > 1 ? closeItem.getEntityItem().getDisplayName() + " (" + closeItem.getEntityItem().stackSize + ")" : closeItem.getEntityItem().getDisplayName(); String text2 = Keyboard.getKeyName(ClientProxy.PickUp.getKeyCode()); Minecraft.getMinecraft().fontRenderer.drawString("", e.resolution.getScaledWidth() / 2 + 5, e.resolution.getScaledHeight() / 2 + 14, 0xFFFFFF); Minecraft.getMinecraft().fontRenderer.drawString("Подобрать [F]", e.resolution.getScaledWidth() / 2 + 5, e.resolution.getScaledHeight() / 2 + 24, 0xFFFFFF); // Minecraft.getMinecraft().fontRenderer.drawString("[ " + text2 + " ]" , e.resolution.getScaledWidth() / 2 + 5, e.resolution.getScaledHeight() / 2 + 24, 0xFFFFFF); Minecraft.getMinecraft().fontRenderer.drawString(text, (e.resolution.getScaledWidth()) / 2 + 64 - Minecraft.getMinecraft().fontRenderer.getStringWidth(text) - 1, e.resolution.getScaledHeight() / 2 + 13, 0xFFFFFF); //renderInventorySlot(closeItem.getEntityItem(), e.resolution.getScaledWidth() / 2 - 18, e.resolution.getScaledHeight() / 2 + 4, 0f); } } } } protected void renderInventorySlot(ItemStack p_73832_1_, double d, int p_73832_3_, float p_73832_4_) { if(p_73832_1_ != null) { float f1 = (float)p_73832_1_.animationsToGo - p_73832_4_; if(f1 > 0.0F) { GL11.glPushMatrix(); float f2 = 1.0F + f1 / 5.0F; GL11.glTranslatef((float)(d + 8), (float)(p_73832_3_ + 12), 0.0F); GL11.glScalef(1.0F / f2, (f2 + 1.0F) / 2.0F, 1.0F); GL11.glTranslatef((float)(-(d + 8)), (float)(-(p_73832_3_ + 12)), 0.0F); } itemRenderer.renderItemIntoGUI(this.mc.fontRenderer, this.mc.getTextureManager(), p_73832_1_, (int) d, p_73832_3_); if(f1 > 0.0F) { GL11.glPopMatrix(); } itemRenderer.renderItemOverlayIntoGUI(this.mc.fontRenderer, this.mc.getTextureManager(), p_73832_1_, (int) d, p_73832_3_); } StatCollector.translateToLocal("onInGameUI"); } }