Skip to content
LegendOnline edited this page Sep 7, 2017 · 2 revisions

The ModelLayout:

You are sick of having to write every single inventory slot into the ExactLayout? Well the ModelLayout is for you!
Generally the ModelLayout is just a advanced version of the ExactLayout with a small own specification language.
This language can always be looked up here or in the docs of the class. To create a ModelLayout object we instatiate as followed:

ModelLayout layout = new ModelLayout("1:1-9=i,1:2|3=d,*=g");
layout.set('i', new GUILabel("Test", Material.IRON_BLOCK));
layout.set('d', new GUILabel("Test", Material.DIAMOND_BLOCK));
layout.set('g', new GUILabel("Test", Material.GOLD_BLOCK));

The Definition String:

The ModelLayout can take different, multiple operations trough the String parameter. Each operation is seperated by a , and resolved from left to right, so the left operation will be executed first.

Operations:

Operations always take in some sort of coordinate related to the gui (start at 1:1 at the top left corner) and a char as a variable that defines the Element that should be placed at that position. In the following, x:y will be reffered as the choosed coordinate and i as the defined item

Operation Description Example
x:y=i The exact operations will place i at x:y 1:3=i
x:y-x1=i Will draw a horizontal line from x:y to x1 with i 1:3-9=i
x:y|y1=i Will draw a vertical line from x:y to y1 with i 5:1|4=i
x:y#x1:y1=i Will draw a rect from x:y (top left) to x1:y1 (bottom right) 3:2#4:3=i
*=i Will fill all empty slots with i *=i

Since operations are executed from left to right, operations can override previously executed operations: 3:3=i,1:3-9=d -> i would be placed at 3:3 but afterwards a line of d is drawn from 1:3 to 9:3 and i would be overriden. The hight of the gui is automatically calculated by the highest y value found in the definition string.

Clone this wiki locally