Локализейшн

Версия Minecraft
1.7.10
25
0
Собсна у меня есть проблемы. Как мне локализировать рендерный текст? Minecraft.getMinecraft().fontRenderer.drawString("Подобрать[F]", e.resolution.getScaledWidth() / 2 + 8, e.resolution.getScaledHeight() / 2 + 3, 0xFFFFFF);
 
25
0
Может я что-нибудь не так делаю?
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");
}
}
 
1,038
57
229
Хм... ничего почему-то не помогло, я знал этот способ, попробовал, но не помогло.
что то я не вижу у тебя такой строчки
StatCollector.translateToLocal("book.text.1")
вот тут
52074d34db.jpg
 

timaxa007

Модератор
5,831
409
672
Minecraft.getMinecraft().fontRenderer.drawString("Подобрать [F]", e.resolution.getScaledWidth() / 2 + 5, e.resolution.getScaledHeight() / 2 + 24, 0xFFFFFF);
типа на:
Java:
Minecraft.getMinecraft().fontRenderer.drawString(StatCollector.translateToLocal("text.take_f"), e.resolution.getScaledWidth() / 2 + 5, e.resolution.getScaledHeight() / 2 + 24, 0xFFFFFF);
А в своём lang файле:
text.take_f=Подобрать [F]
 
1,038
57
229
Вместо "Подобрать [F]" у тебя должен быть метод типо StatCollector.translateToLocal("pickup") который найдет в конфигурационном файле слово pickup и получит его русский вариант.

Примеры тебе дали, ты написал что пробовал, но видимо ждешь почему то готовый код.
Пиши какая именно часть кода тебе не понятна, так будет проще всем.
 
Последнее редактирование:
212
8
29
Может я что-нибудь не так делаю?
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");
}
}
Сам бы написал, а не чужой код юзал
 
Сверху