generate method
Widget
generate(
- Context context
)
Implementation
@override
Widget generate(Context context) {
assert(pages.isNotEmpty);
var target = targetEntity;
var dOffset = offset;
final main = <Widget>[];
if (triggerGui != null) {
target ??=
Entity(type: Entities.chest_minecart, tags: ['objd_gui_container']);
dOffset ??= (minecartAlwaysActive
? Location.local(z: 3)
: Location.rel(y: -0.69));
main.addAll([
Execute.as(
Entity.All(
nbt: {'SelectedItem': triggerGui!.getMap()},
verticalRotation: minecartAlwaysActive ? null : Range.from(80),
),
children: [
Tag('objd_has_gui_item'),
],
),
Execute.asat(
target,
children: [
If(
Condition.not(
Entity(tags: ['objd_has_gui_item'], distance: Range.to(8)),
),
then: [
File.execute(
'$path/removecart',
child: For.of([
Teleport(Entity.Self(), to: Location('~ -500 ~')),
Data.merge(Entity.Self(), nbt: {'Items': []}),
Kill(),
]),
)
]),
],
),
Execute.as(
Entity(tags: ['objd_had_gui_item']).not(tags: ['objd_has_gui_item']),
children: [
Tag('objd_had_gui_item').remove(),
],
),
Execute.asat(
Entity.All(tags: ['objd_has_gui_item'])
.not(tags: ['objd_had_gui_item']),
children: [
File.execute(
'$path/summoncart',
child: Summon(
Entities.chest_minecart,
location: dOffset,
name: minecartName,
tags: ['objd_gui_container'],
nbt: {
'CustomDisplayTile': 1,
'DisplayState': {'Name': 'air'},
'DisplayOffset': 1
},
),
),
],
).anchored(Facing.eyes),
Execute.asat(
Entity.All(tags: ['objd_has_gui_item']),
children: [
Teleport(
target.copyWith(distance: Range.to(8)).sort(Sort.nearest),
to: dOffset,
),
Tag('objd_had_gui_item'),
Tag('objd_has_gui_item').remove(),
],
).anchored(Facing.eyes),
]);
}
main.add(_mainContent(target));
return For.of(main);
}