use of gregtech.api.util.GregFakePlayer in project GregTech by GregTechCEu.
the class FakeGuiPluginBehavior method createFakeGui.
public void createFakeGui() {
if (this.holder == null || this.screen == null || !this.screen.isValid())
return;
try {
fakePlayer = new GregFakePlayer(this.screen.getWorld());
MetaTileEntity mte = getRealMTE();
if (mte == null || (this.partIndex > 0 && this.holder.getMetaTileEntity() == mte)) {
fakeModularUIContainer = null;
if (this.screen.getWorld().isRemote) {
fakeModularGui = null;
}
return;
}
ModularUI ui = (ModularUI) methodCreateUI.invoke(mte, fakePlayer);
if (ui == null) {
fakeModularUIContainer = null;
if (this.screen.getWorld().isRemote) {
fakeModularGui = null;
}
return;
}
List<Widget> widgets = new ArrayList<>();
boolean hasPlayerInventory = false;
for (Widget widget : ui.guiWidgets.values()) {
if (widget instanceof SlotWidget) {
IInventory handler = ((SlotWidget) widget).getHandle().inventory;
if (handler instanceof PlayerMainInvWrapper || handler instanceof InventoryPlayer) {
hasPlayerInventory = true;
continue;
}
}
widgets.add(widget);
}
ModularUI.Builder builder = new ModularUI.Builder(ui.backgroundPath, ui.getWidth(), ui.getHeight() - (hasPlayerInventory ? 80 : 0));
for (Widget widget : widgets) {
builder.widget(widget);
}
ui = builder.build(ui.holder, ui.entityPlayer);
fakeModularUIContainer = new FakeModularUIPluginContainer(ui, this);
if (this.screen.getWorld().isRemote) {
fakeModularGui = new FakeModularGui(ui, fakeModularUIContainer);
writePluginAction(GregtechDataCodes.ACTION_PLUGIN_CONFIG, buffer -> {
});
}
} catch (Exception e) {
GTLog.logger.error(e);
}
}
use of gregtech.api.util.GregFakePlayer in project GregTech by GregTechCEu.
the class MetaTileEntityClipboard method createUI.
@Override
public ModularUI createUI(EntityPlayer entityPlayer) {
if (getClipboard().isItemEqual(CLIPBOARD.getStackForm())) {
List<IItemBehaviour> behaviours = ((MetaItem<?>) getClipboard().getItem()).getBehaviours(getClipboard());
Optional<IItemBehaviour> clipboardBehaviour = behaviours.stream().filter((x) -> x instanceof ClipboardBehavior).findFirst();
if (!clipboardBehaviour.isPresent())
return null;
if (clipboardBehaviour.get() instanceof ClipboardBehavior) {
// We can't have this actually set the player's hand
PlayerInventoryHolder holder = new PlayerInventoryHolder(new GregFakePlayer(entityPlayer.world), EnumHand.MAIN_HAND);
holder.setCustomValidityCheck(this::isValid).setCurrentItem(this.getClipboard());
if (entityPlayer instanceof GregFakePlayer) {
// This is how to tell if this is being called in-world or not
return ((ClipboardBehavior) clipboardBehaviour.get()).createMTEUI(holder, entityPlayer);
} else {
return ((ClipboardBehavior) clipboardBehaviour.get()).createUI(holder, entityPlayer);
}
}
}
return null;
}
use of gregtech.api.util.GregFakePlayer in project GregTech by GregTechCEu.
the class MetaTileEntityClipboard method createFakeGui.
public void createFakeGui() {
// Basically just the original function from the PluginBehavior, but with a lot of now useless stuff stripped out.
try {
GregFakePlayer fakePlayer = new GregFakePlayer(this.getWorld());
fakePlayer.setHeldItem(EnumHand.MAIN_HAND, this.getClipboard());
ModularUI ui = this.createUI(fakePlayer);
ModularUI.Builder builder = new ModularUI.Builder(ui.backgroundPath, ui.getWidth(), ui.getHeight());
builder.shouldColor(false);
List<Widget> widgets = new ArrayList<>(ui.guiWidgets.values());
for (Widget widget : widgets) {
builder.widget(widget);
}
ui = builder.build(ui.holder, ui.entityPlayer);
FakeModularUIContainerClipboard fakeModularUIContainer = new FakeModularUIContainerClipboard(ui, this);
this.guiContainerCache = fakeModularUIContainer;
if (getWorld().isRemote)
this.guiCache = new FakeModularGui(ui, fakeModularUIContainer);
this.writeCustomData(CREATE_FAKE_UI, buffer -> {
});
} catch (Exception e) {
GTLog.logger.error(e);
}
}
Aggregations