1.12.2 Scroll bar



  • Salut , alors je voudrais faire une scroll bar j'ai fait une classe mere extends de drawScreen , et une class extends de GuiScrollingList seulement j'arrive pas a comprendre le fonctionnement et l'utilitée des methodes si quelqu'un peut m'aider , voici mon code

    public class GuiScrolls extends GuiScreen {
    
        private GuiScroll scroll;
        private ArrayList invList;
    
        public GuiScrolls(){
            this.allowUserInput = true;
        }
        @Override
        public void initGui() {
    
            scroll = new GuiScroll(this,Minecraft.getMinecraft(),100,200,100,50,50,20);
            this.scroll.registerScrollButtons(invList, 12, 13);
            super.initGui();
        }
    
        @Override
        public void drawScreen(int mouseX, int mouseY, float partialTicks) {
            this.drawDefaultBackground();
            this.mc.getTextureManager().bindTexture(new ResourceLocation(References.MODID, "textures/gui/menugui.png"));
            Gui.drawScaledCustomSizeModalRect(100, 100, 0, 0, 100, 100, 100 , 100 ,100, 100);
            if(scroll != null) {
                scroll.drawScreen(20, 20, 20);
                super.drawScreen(mouseX, mouseY, partialTicks);
            }
        }
    
        @Override
        public boolean doesGuiPauseGame() {
            return false;
        }
    }
    

    et voici mon autre classe

    public class GuiScroll extends GuiScrollingList{
    
        private GuiScrolls parent;
        private GuiScrollingList scroll;
    
        public GuiScroll(GuiScrolls parent,Minecraft client, int width, int height, int top, int bottom, int left, int entryHeight) {
            super(client, width, height, top, bottom, left, entryHeight);
            this.parent = parent;
        }
    
    
        @Override
        public void drawScreen(int mouseX, int mouseY, float partialTicks) {
            super.drawScreen(mouseX, mouseY, partialTicks);
        }
    
    
        @Override
        protected int getSize() {
            return 10;
        }
    
    
    
        @Override
        protected void elementClicked(int index, boolean doubleClick) {
    
        }
    
        @Override
        protected boolean isSelected(int index) {
            return false;
        }
    
        @Override
        protected void drawBackground() {
    
        }
    
        @Override
        protected void drawSlot(int slotIdx, int entryRight, int slotTop, int slotBuffer, Tessellator tess) {
            parent.drawScreen(50,50,50);
            this.parent.drawString(Minecraft.getMinecraft().fontRenderer,"Wesh ca va ou quoi",50,50, Color.WHITE.getRGB());
        }
    
    }
    

    rien ne s'affiche , enfin pas ma scrolllist , j'ai debug sur le drawSlot il est bel et bien appelé


  • Moddeurs confirmés Rédacteurs Administrateurs

    Bonsoir,

    J'ai déplacé dans la bonne section, merci de poster dans la bonne section à l'avenir.
    Discussion générale n'est pas la section appropriée pour les demandes d'aides.

    Aussi, quelle est ta version de Minecraft ?



  • @robin4002 a dit dans Scroll bar :

    Discussion générale n'est pas la section appropriée pour les demandes d'aides.

    Ah je suis désolé pour ca , c'est mon premier post je suis en 1.12.2



  • Bonjour, si tu met un size supérieur à 10, est-ce que la bar de défilement s'affiche ? Ensuite, dans drawSlot il faut utiliser les coordonnées entryRight, slotTop pour placer les éléments. Ce que est dessiné en dehors de la scralling n'est pas affiché.
    Ensuite, tu as clairement créé une boucle récursive sans condition d’arrêt entre drawScreen et drawSlot donc normal que ça marche pas.

    Pour ce qui est de l'utilité des méthodes :

    • getSize permet de contrôler le nombre d'éléments à afficher dans la liste.
    • elementClicked est appelé quand l'utilisateur clique sur un élément de la liste (où index est l'indice de l'élément cliqué)
    • isSelected est appelé pour savoir si un élément est sélectionné ou non. Si tu retourne true, un cadre est dessiné autour autour de l'élément. Donc tu peux le combiner avec elementClicked pour enregistré le dernier élément cliquer et mettre un cadre autour
    • drawBackground est appelé pour afficher un fond à ta scrolllist tu peux par exemple dessiner un rectangle noir
    • drawSlot est appelé pour chaque élément avec slotIdx l'indice de l'élément à affiché dans la liste. (entryRight, slotTop sont les coordonnées de l'élément sur l'écran)


  • @LeBossMax2
    D'accord merci , mais faut faire quoi dans la classe parent ducoup faut appeller la classe fille nan ? tu pourrais me dire comment plz ? car meme si je l'appelle le contenu du DrawSlot ne s'affiche pas et meme si je met le size a 100 la scroll bar ne s'affiche tjr pas



  • Resolu , j'ai reussi


Log in to reply