Chargement biome
-
@‘BrokenSwing’:
Tu ne plante pas quand le programme s’exécute ?
EDit:
Enfaite oui depuis peu car avant que je change je crashé plus
-
De toute façon il n’y a aucune raison que mc.thePlayer soit autre chose que null car ta variable mc n’est pas initialisée
-
@‘BrokenSwing’:
De toute façon il n’y a aucune raison que mc.thePlayer soit autre chose que null car ta variable mc n’est pas initialisée
C’est u pourquoi sa crash a se niveau la ? if (mc.thePlayer != null){
-
Bah oui … remplace mc par Minecraft.getMinecraft(), cela m’étonnait aussi que tu ne crash pas
-
@‘BrokenSwing’:
Bah oui … remplace mc par Minecraft.getMinecraft(), cela m’étonnait aussi que tu ne crash pas
Merci sa crash plus mais je revient a la casse départ mon chargement est la des que je créer mon monde donc je voie rien a part mon image
-
Bah c’est simple, me semble-t-il, l’event est appelé lors du rendu :
Tu vérifie si Minecraft.thePlayer != null or c’est pratiquement toujours vrai (il y a sûrement des cas spéciaux mais c’est même pas certains) donc personnelement je ne mettrai même pas cette condition.
Ensuite if (event.type == RenderGameOverlayEvent.ElementType.PORTAL) tu vérifie si c’est bien l’overlay du portail, j’espère que c’est bien celui-ci que tu veux remplacer (c’est le violet du portail il me semble) parce que d’après ce que tu a montré tu veux changer l’écran de chargement entre 2 mondes (c’est là que me questionne sur la pertinance du titre du sujet). Et l’affichage de l’overlay du portail et tout le temps appelé juste il n’est pas rendu d’où le message de robin que tu n’as pas pris en compte “tu ne vérifies pas que le joueur est dans un portail”
L’écran de chargement entre les mondes est un Gui pas un overlay -
@‘BrokenSwing’:
Bah c’est simple, me semble-t-il, l’event est appelé lors du rendu :
Tu vérifie si Minecraft.thePlayer != null or c’est pratiquement toujours vrai (il y a sûrement des cas spéciaux mais c’est même pas certains) donc personnelement je ne mettrai même pas cette condition.
Ensuite if (event.type == RenderGameOverlayEvent.ElementType.PORTAL) tu vérifie si c’est bien l’overlay du portail, j’espère que c’est bien celui-ci que tu veux remplacer (c’est le violet du portail il me semble) parce que d’après ce que tu a montré tu veux changer l’écran de chargement entre 2 mondes (c’est là que me questionne sur la pertinance du titre du sujet). Et l’affichage de l’overlay du portail et tout le temps appelé juste il n’est pas rendu d’où le message de robin que tu n’as pas pris en compte “tu ne vérifies pas que le joueur est dans un portail”
L’écran de chargement entre les mondes est un Gui pas un overlayJ’avais mis sa pour le message de robin [font=Ubuntu, sans-serifMinecraft.thePlayer != null, j’avais pensé qu’il voulais que je fasse sa en fait. Et oui je voudrai juste changer le chargement pas le portail violet]
-
L’event serai celui-ci GuiScreenEvent.DrawScreenEvent.Pre mais je ne connai pas le nom du gui de chargement du coup je cherche mais il te suffira de remplacer event.gui par ton GuiScreen
-
@‘BrokenSwing’:
L’event serai celui-ci GuiScreenEvent.DrawScreenEvent.Pre mais je ne connai pas le nom du gui de chargement du coup je cherche mais il te suffira de remplacer event.gui par ton GuiScreen
GuiDownloadTerrain lui peut etre
-
Oui c’est celui-là
-
@‘BrokenSwing’:
Oui c’est celui-là
Faire un truc comme sa du coup
@SubscribeEvent public void loadingOverlay(GuiScreenEvent.DrawScreenEvent.Pre event) { if (event.gui == GuiDownloadTerrain) { -
Bah ça risque de ne pas marcher, une variable peut pas être égale à une classe et perso (en 1.9) je n’ai pas accès à la variable gui donc je doit faire plutôt un truc comme ça
public void onGuiScreen(GuiScreenEvent.DrawScreenEvent.Pre e) { if(e.getGui() instanceof GuiDownloadTerrain) { e.setCanceled(true); Minecraft.getMinecraft().displayGuiScreen(new GuiScreenDemo()); //remplace GuiScreenDemo par ton propre GuiScreen }Dans ton GuiScreen il va peut-être falloir que tu envoie des packets car Minecraft le fait lui, regarde la classe GuiDownloadTerrain il envoie des packets KeepAlive
-
@‘BrokenSwing’:
Bah ça risque de ne pas marcher, une variable peut pas être égale à une classe et perso (en 1.9) je n’ai pas accès à la variable gui donc je doit faire plutôt un truc comme ça
public void onGuiScreen(GuiScreenEvent.DrawScreenEvent.Pre e) { if(e.getGui() instanceof GuiDownloadTerrain) { e.setCanceled(true); Minecraft.getMinecraft().displayGuiScreen(new GuiScreenDemo()); //remplace GuiScreenDemo par ton propre GuiScreen }Dans ton GuiScreen il va peut-être falloir que tu envoie des packets car Minecraft le fait lui, regarde la classe GuiDownloadTerrain il envoie des packets KeepAlive
En gros je fait comme si je modifier mon menu in game
-
Presque, en gros tu cancel l’affichage du GuiScreen GuiDownloadTerrain et tu le remplace par le tien
-
@‘BrokenSwing’:
Presque, en gros tu cancel l’affichage du GuiScreen GuiDownloadTerrain et tu le remplace par le tien
Voilà se que sa donne a la fin
package fr.darkvince.facrpg.menu; import com.mojang.realmsclient.gui.ChatFormatting; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiDownloadTerrain; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.event.GuiScreenEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; import org.lwjgl.opengl.GL11; import scala.util.Random; public class ClientEventHandler extends GuiScreen { public void onGuiScreen(GuiScreenEvent.DrawScreenEvent.Pre e) { if(e.gui instanceof GuiDownloadTerrain) { e.setCanceled(true); Minecraft.getMinecraft().displayGuiScreen(new GuiChargement(null)); } } }package fr.darkvince.facrpg.menu; import org.lwjgl.opengl.GL11; import com.mojang.realmsclient.gui.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.network.NetHandlerPlayClient; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.resources.I18n; import net.minecraft.network.play.client.C00PacketKeepAlive; import net.minecraft.util.ResourceLocation; import scala.util.Random; public class GuiChargement extends GuiScreen { public ResourceLocation loadingscreen = new ResourceLocation("facrpg", "textures/gui/LoadingScreen.png"); public String[] quotes = { "Test 1", "Test 12"}; public int selector = 280; private NetHandlerPlayClient field_146594_a; public boolean doneDraw = false; public GuiChargement(NetHandlerPlayClient p_i45023_1_) { this.field_146594_a = p_i45023_1_; } public void drawTexturedRect(int x, int y, int u, int v, int width, int height, int textureWidth, int textureHeight) { float f = 1.0F / textureWidth; float f1 = 1.0F / textureHeight; Tessellator tessellator = Tessellator.instance; tessellator.startDrawingQuads(); tessellator.addVertexWithUV(x, y + height, 0.0D, u * f, (v + height) * f1); tessellator.addVertexWithUV(x + width, y + height, 0.0D, (u + width) * f, (v + height) * f1); tessellator.addVertexWithUV(x + width, y, 0.0D, (u + width) * f, v * f1); tessellator.addVertexWithUV(x, y, 0.0D, u * f, v * f1); tessellator.draw(); } /** * Draws the screen and all the components in it. */ public void drawScreen(int p_73863_1_, int p_73863_2_, float p_73863_3_) { ScaledResolution res = new ScaledResolution(Minecraft.getMinecraft(), Minecraft.getMinecraft().displayWidth, Minecraft.getMinecraft().displayHeight); int posX = res.getScaledWidth(); int posY = res.getScaledHeight(); Minecraft.getMinecraft().renderEngine.bindTexture(this.loadingscreen); drawTexturedRect(0, 0, 0, 0, posX, posY, posX, posY); if (!this.doneDraw) { this.selector = new Random().nextInt(this.quotes.length); this.doneDraw = true; } GL11.glPushMatrix(); GL11.glScalef(0.5F, 0.5F, 0.5F); drawCenteredString(Minecraft.getMinecraft().fontRenderer, ChatFormatting.WHITE + this.quotes[this.selector], posX, posY, 0); GL11.glPopMatrix(); drawCenteredString(Minecraft.getMinecraft().fontRenderer, ChatFormatting.DARK_RED + "Chargment…", posX / 2, posY / 2 + 90, 0); } /** * Returns true if this GUI should pause the game when it is displayed in single-player */ public boolean doesGuiPauseGame() { return false; } }Mais sa marche pas la class original du GuiDownloadTerrain
package net.minecraft.client.gui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.network.NetHandlerPlayClient; import net.minecraft.client.resources.I18n; import net.minecraft.network.play.client.C00PacketKeepAlive; @SideOnly(Side.CLIENT) public class GuiDownloadTerrain extends GuiScreen { private NetHandlerPlayClient field_146594_a; private int field_146593_f; private static final String __OBFID = "CL_00000708"; public GuiDownloadTerrain(NetHandlerPlayClient p_i45023_1_) { this.field_146594_a = p_i45023_1_; } /** * Fired when a key is typed. This is the equivalent of KeyListener.keyTyped(KeyEvent e). */ protected void keyTyped(char p_73869_1_, int p_73869_2_) {} /** * Adds the buttons (and other controls) to the screen in question. */ public void initGui() { this.buttonList.clear(); } /** * Called from the main game loop to update the screen. */ public void updateScreen() { ++this.field_146593_f; if (this.field_146593_f % 20 == 0) { this.field_146594_a.addToSendQueue(new C00PacketKeepAlive()); } if (this.field_146594_a != null) { this.field_146594_a.onNetworkTick(); } } /** * Draws the screen and all the components in it. */ public void drawScreen(int p_73863_1_, int p_73863_2_, float p_73863_3_) { this.drawBackground(0); this.drawCenteredString(this.fontRendererObj, I18n.format("multiplayer.downloadingTerrain", new Object[0]), this.width / 2, this.height / 2 - 50, 16777215); super.drawScreen(p_73863_1_, p_73863_2_, p_73863_3_); } /** * Returns true if this GUI should pause the game when it is displayed in single-player */ public boolean doesGuiPauseGame() { return false; } } -
Le @SubscriveEvent …
L’extends GuiScreen tu peux l’enlever
Le null en paramètre tu va sûrement crash
EDIT : Ah bah non tu l’utilise même pas, tu va pas crash -
@‘BrokenSwing’:
Le @SubscriveEvent …
L’extends GuiScreen tu peux l’enlever
Le null en paramètre tu va sûrement crash
EDIT : Ah bah non tu l’utilise même pas, tu va pas crashMerci sa marche, je voudrai savoir si je peut aussi le faire quand je créer un monde quand je me tp dedans sa fait l’animation. Et si je peut augmenté le temps de chargement
-
Quand tu créer un monde -> Oui, de la même manière
Quand tu te tp dedans ça fait l’animation ? Pas compris
Augmenter le temps de chargement -> Pourquoi ? Ok tu veux qu’on puisse lire ce qu’il y a marqué sur ton image mais tes joueurs vont pas apprécier mais je sais pas fat voir tu dois sûrement pouvoir -
@‘BrokenSwing’:
Quand tu créer un monde -> Oui, de la même manière
Quand tu te tp dedans ça fait l’animation ? Pas compris
Augmenter le temps de chargement -> Pourquoi ? Ok tu veux qu’on puisse lire ce qu’il y a marqué sur ton image mais tes joueurs vont pas apprécier mais je sais pas fat voir tu dois sûrement pouvoirQuand tu te tp dedans ça fait l’animation ? Pas compris. Mettre l’image
Car le chargement dur meme pas 1 secondes je voudrai le faire passer a 5secondes pour voir mieu l’image
Quand tu créer un monde -> Oui, de la même manière. Je vais essayé de trouver le Gui alors
-
Quant tu te tp c’est instantané donc bon … Au mieux tu a le chargement des chunks si le tp est vraiment lointain