blob: 6fec4aa52af9aaf75100784d55bb6a69125b4a72 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
package gregtech.api.gui;
import java.util.Objects;
import javax.annotation.Nonnull;
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
import com.gtnewhorizons.modularui.api.screen.ModularWindow.Builder;
import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
public abstract class GUIProvider<T extends GUIHost> {
@Nonnull
protected final T host;
public GUIProvider(@Nonnull T host) {
this.host = host;
}
@Nonnull
public ModularWindow openGUI(@Nonnull UIBuildContext uiContext) {
Builder builder = Objects.requireNonNull(ModularWindow.builder(host.getWidth(), host.getHeight()));
if (shouldBindPlayerInventory()) {
builder.bindPlayerInventory(uiContext.getPlayer());
}
attachSynchHandlers(builder, uiContext);
addWidgets(builder, uiContext);
return Objects.requireNonNull(builder.build());
}
protected abstract void attachSynchHandlers(@Nonnull Builder builder, @Nonnull UIBuildContext uiContext);
protected abstract void addWidgets(@Nonnull Builder builder, @Nonnull UIBuildContext uiContext);
protected boolean shouldBindPlayerInventory() {
return true;
}
}
|