Skip to content
stefvanschie edited this page Jan 9, 2024 · 9 revisions

Talen: Engels (English)

Om te zien hoe een kist-gui werkt, zie de GUI pagina; die pagina is ook een goede introductie voor guis in het algemeen.

IF ondersteunt verschillende soorten guis die getoond kunnen worden aan spelers. Met deze werken is echter iets anders dan normale kist-guis. Kisten hebben al hun slots in een rooster waar we gebruik van maken, omdat de panelen die we plaatsen functioneren op dit rooster. Echter hebben niet alle soorten guis een roostervorm. Hierom is een component-systeem gemaakt om dit op te lossen. Een enkele gui is opgesplitst in meerde inventariscomponenten die een soort 'mini gui' vormen. Een inventariscomponent kan panelen en items hebben, net zoals een kistgui, maar representeert maar een klein gedeelte van de gehele gui. Verschillende inventariscomponenten functioneren ook onafhankelijk, dus panelen in verschillende inventariscomponenten kunnen bijvoorbeeld niet over elkaar heen vallen. Elk inventariscomponent kan opgeroepen worden in de gui. Verschillende guis hebben verschillende inventariscomponenten met verschillende groottes, dus hier beneden is een overzicht van de inventariscomponenten voor elk soort gui. Nadat je zo'n inventariscomponent hebt opgeroepen kan je hier panelen aan toevoegen net zoals met een gewone gui.

Er zijn echter soorten guis die, ondanks dat ze geen kisten zijn, nog steeds hun slots in een rooster hebben. Deze noemen we "samengevoegde guis". Deze guis zijn een gui en inventariscomponent in één en werken exact hetzelfde als een kist-gui. Ze voegen ook de spelerinventaris en gewone inventaris samen op dezelfde manier als kisten. De soorten guis waarvoor dit het geval is zijn vaten, enderkisten en shulkerdozen. Het enige verschil tussen dezen en de kist is dat je niet het aantal rijen kan specificeren; deze zullen altijd drie rijen boven hebben (gecombineerd met de spelerinventaris is dit zeven rijen in totaal). Dit betekent ook dat je de hoeveelheid rijen niet later kan aanpassen zoals bij de kist-gui.

Deze guis creëren is eenvoudig:

BarrelGui vatGui = new BarrelGui("Mijn vat");
EnderChestGui enderkistGui = new EnderChestGui("Mijn enderkist");
ShulkerBoxGui shulkerdoosGui = new ShulkerBoxGui("Mijn shulkerdoos");

Omdat dit het enige praktische verschil is tussen dezen en een kist-gui, worden dezen niet verder besproken.

Elk gui dat niet een samengevoegde gui isheeft een getPlayerInventoryComponent die een inventariscomponent geeft voor de spelerinventaris. Omdat dit hetzelfde is voor elk niet-samengevoegde gui, zullen we deze niet behandelen. Guis kunnen gemaakt worden door de constructor aan te roepen. Elk soort gui bevindt zich een een klasse genaamd SoortGui, waar Soort de (Engelse) naam is van het soort gui.

Aambeeld

Het aambeeld-gui heeft drie inventariscomponenten: eerste item, tweede item en resultaat die kunnen worden opgeroepen via getFirstItemComponent, getSecondItemComponent en getResultComponent. Al deze inventariscomponenten bevatten precies één slot.

De rode rand toont het eerste-itemcomponent; de blauwe rand toont het tweede-itemcomponent; de groene rand toont het resultaat-component

Het aambeeld-gui ondersteunt ook een getRenameText, die de tekst die op dit moment in het aambeeld is getypet retourneert. Als de invoer voor de naam wordt veranderd kan je dit detecteren doormiddel van setOnNameInputChanged.

AnvilGui gui = new AnvilGui("Aambeeld");
gui.setOnNameInputChanged(nieuweNaam -> {
  //codering om uit te voeren als de naaminvoer verandert
});

De indicator die aangeeft hoeveel de uitvoering kost kan worden aangepast met setCost. Houd er rekening mee dat dit alleen visueel is, er zal nooit ervaring van de speler worden weggenomen.

Baken

Het baken-gui heeft één inventariscomponent: betaalitem die kan worden opgeroepen via getPaymentItemComponent. Dit inventariscomponent bevat één slot.

De rode rand toont het betaalitem-component

In tegenstelling tot alle andere guis, baken-guis hebben geen naam en je kan ze dus ook geen naam geven. Om een bakengui te maken, roep de constructor aan zonder argumenten.

Hoogoven, oven en roker

De hoogoven-, oven- en roker-gui werekn identiek. Elke heeft drie inventariscomponenten: ingrediënt, brandstof en uitkomst die kunnen worden opgeroepen via getIngredientComponent, getFuelComponent en getOuputComponent. Al deze inventariscomponenten hebben één slot.

De rode rand toont het ingrediënt-component; de blauwe rand toont het brandstof-component; de groene rand toont het uitkomst-component

Brouwstandaard

De brouwstandaard heeft vijf invenatriscomponenten: eerste fles, tweede fles, derde fles, drankingrediënt en blazepoeder die kunnen worden opgeroepen via getFirstBottleComponent, getSecondBottleComponent, getThirdBottleComponent, getPotionIngredientComponent en getBlazePowderComponent. Al deze inventariscomponenten hebben één slot.

De rode rand toont het eerste-flescomponent; de blauwe rand toont het tweede-flescomponent; de groene rand toont het derde-flescomponent; de gele rand toont het drankingrediënt-component; de paarse rand toont het blazepoeder-component

Kartografietafel

De kartografietafel heeft drie inventariscomponenten: kaart, papier en uitkomst die kunnen worden opgeroepen via getMapComponent, getPaperComponent en getOuputComponent. Al deze inventariscomponenten hebben één slot.

De rode rand toont het kaartcomponent; de blauwe rand toont het papiercomponent; de groene rand toont het uitkomstcomponent

Werkbank

De werkbank heeft twee inventariscomponenten: invoer en uitkomst die kunnen worden opgeroepen via getInputComponent en getOuputComponent. De invoer heeft een drie-bij-drie gebied van slots en de uitkomst heeft één slot.

De rode rand toont het invoercomponent; de blauwe rand toont het uitkomstcomponent

Dispenser en dropper

De dispenser en dropper werken identiek. Elk heeft één inventariscomponent: inhoud die kan worden opgeroepen via getContentsComponent. Deze heeft een drie-bij-drie gebied van slots.

De rode rand toont het inhoud-component

Betoveringstafel

De betoveringstafel heeft één inventariscomponent: invoer die kan worden opgeroepen via getInputComponent. Deze heeft één slot.

De rode rand toont het invoercomponent

Slijpsteen

De slijpsteen heeft twee inventariscomponenten: items en resultaat die kunnen worden opegroepen via getItemsComponent en getResultComponent. De eerste heeft een één-bij-twee gebied van slots en de tweede heeft één slot.

De rode rand toont het items-component; de blauwe rand toont het resultaatcomponent

Trechter

De trechter heeft één inventariscomponent: slots die kan worden opgeroepen via getSlotsComponent. Deze heeft een vijf-bij-één gebied van slots.

De rode rand toont het slots-component

Handelaar

De handelaar heeft één inventariscomponent: input die kan worden opgeroepen via getInputComponent. Deze heeft een twee-bij-één gebied van slots.

De rode rand toont het input-component

Je kan ook ruilen aan de handelaar toevoegen via addTrade. Deze ruil kan eventueel ook een korting hebben door aan te geven hoeveel korting deze ruil heeft. Bijvoorbeeld, als een item van vijf naar twee stuks is afgeprijsd, is de korting drie. Je kan ook de ervaring en niveau van een handelaar aanpassen, via setExperience en setLevel. De ervaring wordt getoond in een balk aan de bovenkant. Houd er rekening mee dat de hoeveelheid ervaring een handelaar kan hebben verschilt afhankelijk van het niveau van de handelaar. Als een handelaar geen ruilen heeft, zal de ervaringsbalk niet worden getoond. Het niveau wordt tekstueel getoond aan het einde van de titel van de gui en bepaalt hoeveel ervaring kan worden gespecificeerd.

Moderne smeedstafel

De moderne smeedstafel is alleen beschikbaar vanaf Minecraft versie 1.19.4.

De moderne smeedstafel heeft twee inventariscomponenten: de invoer en het resultaat die kunnen worden opgeroepen via getInputComponent en getResultComponent. Het invoercomponent bestaat uit een gebied van drie-bij-één slots. Het resultaatcomponent bestaat uit één slot.

Klassieke smeedstafel

De klassieke smeedstafel is alleen beschikbaar vanaf Minecraft versie 1.16 tot en met 1.19.4. Voor hogere versies, gebruik de moderne smeedstafel.

De klassieke smeedstafel heeft drie inventariscomponenten: eerste item, tweede item en resultaat die kunnen worden opgeroepen via getFirstItemComponent, getSecondItemComponent en getResultComponent. Deze hebben allemaal één slot.

De rode rand toont het eerste-item-component; de blauwe rand toont het tweede-item-component; de groene rand toont het resultaatcomponent

Steenzaag

De steenzaag heeft twee inventariscomponenten: invoer en resultaat die kunnen worden opgeroepen via getInputComponent en getResultComponent. Deze hebben beiden één slot.

De rode rand toont het invoercomponent; de blauwe rand toont het resultaatcomponent

Vervaardigingsmachine

De vervaardigingsmachine is alleen beschikbaar in Minecraft versie 1.20.3 en hoger.

De vervaardigingsmachine heeft één inventariscomponent: invoer, die kan worden aangeroepen via getInputComponent. De invoer bestaat uit een gebied van drie-bij-drie slots.

XML

Er zijn twee manieren om de soort gui te veranderen wanneer je met XML werkt. De eerste optie is om niet het soort gui te specificeren in het XML-bestand, maar dit te specificeren wanneer je het XML-bestand laadt. In dit geval wordt het soort gui waarmee je het XML-bestand laadt het soort gui dat wordt gebruikt. Bijvoorbeeld, een XML-bestand laden via CraftingTableGui.load zal een gui van een werkbank maken. De tweede optie is om het soort gui in het XML-bestand te specificeren. Dit kan gedaan worden door het type-attribuut toe te voegen aan de XML-tag. Dit bepaald welk soort gui het XML-bestand representeert.

<gui title="Mijn kartografietafel" type="cartography-table" />

Zowel het soort in het XML-bestand als in de codering specificeren is ook toegestaan, maar je kan geen XML-bestand zonder type inladen via Gui.load: tenminste één van de opties moet aanwezig zijn.

Om een specific inventariscomponent te gebruiken in een XML-bestand moet je een nieuwe tag aan het gui-element toevoegen. Deze tag moet component heten en moet een naam-attribuut hebben die de naam van het inventariscomponent specificeert. De componentnamen zijn op dezelfde manier geschreven als op deze pagina met streepjes in plaats van spaties.

<gui title="Mijn betoveringstafel" type="enchanting-table">
  <component name="input">
    <staticpane x="0" y="0" length="2" height="1" />
  </component>
</gui>
Clone this wiki locally