WorldEventInspectorPage class
Пакет: com.hypixel.hytale.builtin.adventure.worldevents.ui
Файл: com/hypixel/hytale/builtin/adventure/worldevents/ui/WorldEventInspectorPage.java
extends: WorldEventPanelPage
Поля (99)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
String |
KIND_EVENT |
|
yield |
false |
|
yield |
false |
|
|
return |
|
yield |
true |
|
yield |
true |
|
yield |
true |
|
int |
var1 |
|
String |
var1 |
|
String |
var1 |
|
String |
var10 |
|
String |
var10 |
|
EventCondition[] |
var10 |
|
String |
var10 |
|
EventCondition |
var10 |
|
boolean |
var11 |
|
EventCondition[] |
var11 |
|
boolean[] |
var11 |
|
boolean |
var11 |
|
ContextKey |
var11 |
|
boolean |
var12 |
|
boolean[] |
var12 |
|
boolean |
var12 |
|
Context |
var12 |
|
String |
var13 |
|
int |
var13 |
|
String |
var13 |
|
String |
var13 |
|
Fork[] |
var14 |
|
boolean |
var14 |
|
String |
var14 |
|
String |
var14 |
|
String |
var15 |
|
String |
var15 |
|
int |
var15 |
|
|
var15 |
|
|
var15 |
|
int |
var16 |
|
|
var16 |
|
Stage |
var17 |
|
EventCondition |
var17 |
|
boolean |
var18 |
|
String |
var18 |
|
Stage |
var19 |
|
WorldEvent |
var2 |
|
WorldEvent[] |
var2 |
|
BsonValue |
var2 |
|
boolean[] |
var2 |
|
EventAction[] |
var20 |
|
EventAction |
var22 |
|
|
var3 |
|
|
var3 |
|
|
var3 |
|
|
var3 |
|
|
var3 |
|
|
var3 |
|
EventCondition[] |
var3 |
|
WorldEvent |
var4 |
|
Integer |
var4 |
|
boolean[] |
var4 |
|
int |
var5 |
|
WorldEventStorage |
var5 |
|
Stage |
var5 |
|
WorldEventStorage |
var5 |
|
boolean |
var5 |
|
Fork[] |
var5 |
|
ContextEntry[] |
var5 |
|
WorldEvent |
var6 |
|
int |
var6 |
|
WorldEventAsset |
var6 |
|
int |
var6 |
|
|
var6 |
|
|
var6 |
|
int |
var6 |
|
boolean |
var7 |
|
String |
var7 |
|
String |
var7 |
|
int |
var7 |
|
|
var7 |
|
|
var7 |
|
|
var7 |
|
|
var7 |
|
|
var7 |
|
|
var7 |
|
|
var7 |
|
|
var7 |
|
|
var7 |
|
|
var7 |
|
|
var7 |
|
|
var7 |
|
|
var7 |
|
Fork[] |
var7 |
|
EventCondition[] |
var7 |
|
int |
var8 |
|
boolean[] |
var8 |
|
Stage |
var9 |
|
|
var9 |
|
|
var9 |
|
Fork |
var9 |
Методы (59)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
private |
int |
appendDetailItemint appendDetailItem(@Nonnull UICommandBuilder var1,
@Nonnull UIEventBuilder var2,
@Nonnull String var3,
int var4,
@Nonnull String var5,
@Nonnull String var6,
@Nonnull String var7,
boolean var8,
@Nonnull Supplier<BsonValue> var9) |
private |
int |
appendFieldsint appendFields(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, @Nonnull String var3, int var4, @Nullable BsonValue var5) |
private |
int |
appendFieldsint appendFields(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, @Nonnull String var3, int var4, @Nullable BsonValue var5, int var6) |
private |
int |
appendItemint appendItem(@Nonnull UICommandBuilder var1, @Nonnull String var2, int var3, @Nonnull String var4, @Nullable Message var5, @Nonnull String var6) |
private |
int |
appendItemint appendItem(@Nonnull UICommandBuilder var1, @Nonnull String var2, int var3, @Nonnull Message var4, @Nullable Message var5, @Nonnull String var6) |
private |
void |
appendItemBasevoid appendItemBase(@Nonnull UICommandBuilder var1, @Nonnull String var2, @Nonnull String var3, @Nonnull String var4, @Nullable Message var5) |
private |
void |
appendItemFieldsvoid appendItemFields(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, @Nonnull String var3, @Nullable BsonValue var4) |
private |
int |
appendSpineint appendSpine(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, @Nonnull String var3, int var4, @Nonnull WorldEvent var5, @Nonnull Stage var6, int var7) |
private |
int |
buildConditionDetailsint buildConditionDetails(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull WorldEvent var4) |
private |
void |
buildContextDetailsvoid buildContextDetails(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull WorldEvent var4) |
private |
void |
buildDetailsvoid buildDetails(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, @Nonnull Store<EntityStore> var3, @Nonnull WorldEvent var4) |
private |
void |
buildEventDetailsvoid buildEventDetails(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, @Nonnull Store<EntityStore> var3, @Nonnull WorldEvent var4) |
private |
void |
buildStageDetailsvoid buildStageDetails(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, @Nonnull WorldEvent var3, @Nonnull Stage var4) |
private |
void |
buildTimelinevoid buildTimeline(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull WorldEvent var4) |
static |
int |
countMetint countMet(@Nonnull boolean[] var0) |
|
|
for for(int var16 = 0; var16 < var14.length && this.graphBudget > 0; var16++) |
|
|
for for(int var17 = 0; var17 < var11.length && this.graphBudget > 0; var17++) |
|
|
for for(int var8 = 0; var8 < var7.length; var8++) |
|
|
for for(int var16 = 0; var16 < var10.length; var16++) |
|
|
for for(int var21 = 0; var21 < var20.length; var21++) |
|
|
for for(int var6 = 0; var6 < var5.length; var6++) |
|
|
for for(int var9 = 0; var9 < var7.length; var9++) |
|
|
for for(ContextEntry var10 : var5) |
|
|
for for(int var5 = 0; var5 < var3.length; var5++) |
|
|
for for(boolean var5 : var0) |
|
|
if if(var4 == null) |
|
|
if if(var3.action == null) |
|
|
if if(!var7) |
|
|
if if(var6 != null) |
|
|
if if(var4 == null) |
|
|
if if(var0 == null) |
|
|
if if(var5 == Stage.EMPTY) |
|
|
if if(this.graphBudget <= 0) |
|
|
if if(var12) |
|
|
if if(var14.length == 1) |
|
|
if if(this.graphBudget <= 0) |
|
|
if if(var19 == null) |
|
|
if if(!this.showFullTimeline) |
|
|
if if(var9) |
|
|
if if(var5 != null) |
|
|
if if(this.resolvedStage != null) |
|
|
if if(var7.length == 0) |
|
|
if if(var11) |
|
|
if if(var4 == null) |
|
|
if if(var5.length == 0) |
|
|
if if(var5.length == 0) |
|
|
if if(var11 != null && var12 != null) |
|
|
if if(var6 >= 400) |
|
|
if if(var4 >= var6) |
|
|
if if(var2 instanceof BsonDocument var3) |
|
|
if if(var2 != null) |
|
|
if if(var5) |
|
|
if if(var1.root == Stage.EMPTY) |
|
|
if if(this.walkRoot != var1.root) |
static |
boolean |
safeTestboolean safeTest(@Nonnull EventCondition var0) |
abstract |
|
super super(var1) |
|
return |
switchreturn switch(var3.action) |
private |
void |
updateStageWalkvoid updateStageWalk(@Nonnull WorldEvent var1) |
|
|
while while(var9 != null && this.graphBudget > 0 && var7 <= 32) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.adventure.worldevents.ui;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.WorldEventManager;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.WorldEventStorage;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.action.EventAction;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.action.EventStopAction;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.condition.EventCondition;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.context.Context;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.context.ContextEntry;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.context.ContextKey;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.event.Fork;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.event.Stage;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.event.WorldEvent;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.event.WorldEventAsset;
class="kw">import com.hypixel.hytale.codec.lookup.CodecMapCodec;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.CustomUIEventBindingType;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.ui.Value;
class="kw">import com.hypixel.hytale.server.core.ui.builder.EventData;
class="kw">import com.hypixel.hytale.server.core.ui.builder.UICommandBuilder;
class="kw">import com.hypixel.hytale.server.core.ui.builder.UIEventBuilder;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import it.unimi.dsi.fastutil.objects.Reference2ObjectMap;
class="kw">import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap;
class="kw">import java.util.HashSet;
class="kw">import java.util.Set;
class="kw">import java.util.UUID;
class="kw">import java.util.function.Supplier;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.bson.BsonDocument;
class="kw">import org.bson.BsonValue;
class="kw">public class WorldEventInspectorPage class="kw">extends WorldEventPanelPage {
class="kw">private class="kw">static class="kw">final String KIND_EVENT = "event";
class="kw">private class="kw">static class="kw">final String KIND_STAGE = "stage";
class="kw">private class="kw">static class="kw">final String KIND_FIELD = "field";
class="kw">private class="kw">static class="kw">final String GRAPH_STAGE = "Pages/WorldEvent/WorldEventGraphStage.ui";
class="kw">private class="kw">static class="kw">final String GRAPH_COLUMN = "Pages/WorldEvent/WorldEventGraphColumn.ui";
class="kw">private class="kw">static class="kw">final String GRAPH_FORK = "Pages/WorldEvent/WorldEventGraphFork.ui";
class="kw">private class="kw">static class="kw">final String GRAPH_ITEM = "Pages/WorldEvent/WorldEventGraphItem.ui";
class="kw">private class="kw">static class="kw">final String DETAIL_FORK = "Pages/WorldEvent/WorldEventDetailFork.ui";
class="kw">private class="kw">static class="kw">final String DETAIL_ITEM = "Pages/WorldEvent/WorldEventDetailItem.ui";
class="kw">private class="kw">static class="kw">final Value<String> STAGE_STYLE = Value.ref("Pages/WorldEvent/WorldEventGraphStage.ui", "HeaderStyle");
class="kw">private class="kw">static class="kw">final Value<String> STAGE_SELECTED_STYLE = Value.ref("Pages/WorldEvent/WorldEventGraphStage.ui", "SelectedHeaderStyle");
class="kw">private class="kw">static class="kw">final int MAX_GRAPH_DEPTH = 32;
class="kw">private class="kw">static class="kw">final String TYPE_KEY = "Type";
@Nonnull
class="kw">private class="kw">final UUID uuid;
@Nonnull
class="kw">private class="kw">final Reference2ObjectMap<Fork, boolean[]> results = new Reference2ObjectOpenHashMap();
class="kw">private boolean showFullTimeline = false;
@Nullable
class="kw">private Integer selectedStageId = null;
@Nullable
class="kw">private Stage resolvedStage = null;
@Nullable
class="kw">private StageProgress.Walk stageWalk = null;
@Nullable
class="kw">private Stage walkRoot = null;
@Nonnull
class="kw">private class="kw">final Set<String> toggledItems = new HashSet<>();
class="kw">private int graphBudget = 400;
class="kw">public WorldEventInspectorPage(@Nonnull PlayerRef var1, @Nonnull UUID var2) {
super(var1);
this.uuid = var2;
}
@Nullable
@Override
class="kw">protected WorldEventPanelPage.Tab tab() {
class="kw">return null;
}
@Nonnull
@Override
class="kw">protected String titleKey() {
class="kw">return "server.customUI.worldEventPanel.inspector.title";
}
@Nonnull
@Override
class="kw">protected String descriptionKey() {
class="kw">return "server.customUI.worldEventPanel.inspector.desc";
}
@Override
class="kw">protected boolean supportsFilter() {
class="kw">return false;
}
@Override
class="kw">protected boolean supportsBack() {
class="kw">return true;
}
@Nullable
@Override
class="kw">protected Message toggleLabel() {
class="kw">return Message.translation(
this.showFullTimeline ? "server.customUI.worldEventPanel.inspector.showCurrentStage" : "server.customUI.worldEventPanel.inspector.showTimeline"
);
}
@Override
class="kw">protected boolean onToggle() {
this.showFullTimeline = !this.showFullTimeline;
class="kw">return true;
}
@Override
class="kw">protected void buildContent(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, @Nonnull Store<EntityStore> var3) {
this.results.clear();
this.resolvedStage = null;
WorldEvent var4 = this.find(var3);
if (var4 == null) {
var1.set("#SideContainer.Visible", false);
var1.set("#SideSpacer.Visible", false);
this.appendText(
var1, "#ListContainer", 0, Message.translation("server.customUI.worldEventPanel.inspector.notFound").param("uuid", this.uuid.toString())
);
} else {
var1.set("#SideContainer.Visible", true);
var1.set("#SideSpacer.Visible", true);
var1.set("#PageTitle.Text", var4.asset);
this.updateStageWalk(var4);
int var5 = this.appendRow(
var1,
var2,
0,
new WorldEventPanelPage.Row("event", var4.uuid.toString())
.label(var4.asset)
.sub(var4.uuid.toString())
.status(var4.failCount > 0 ? "#b04a4a" : (var4.init ? "#c08a3a" : "#4f9e63"))
.badge(this.positionLabel(var4.stage, stageBadgeKey(var4)))
.primary(Message.translation("server.customUI.worldEventPanel.action.cancel"), WorldEventPanelPage.Action.RowPrimary)
);
this.buildTimeline(var1, var2, var5, var4);
this.buildDetails(var1, var2, var3, var4);
}
}
@Override
class="kw">protected boolean handleAction(@Nonnull Ref<EntityStore> var1, @Nonnull Store<EntityStore> var2, @Nonnull WorldEventPanelPage.PageData var3) {
if (var3.action == null) {
class="kw">return false;
}
class="kw">return class="kw">switch (var3.action) {
case RowPrimary -> {
boolean var7 = var2.getResource(WorldEventManager.getResourceType()).get(this.uuid) != null;
EventStopAction.stopEvent(var2, this.uuid, (var0, var1x) -> var0.uuid.equals(var1x));
if (!var7) {
WorldEventStorage var5 = var2.getResource(WorldEventStorage.getResourceType());
WorldEvent var6 = this.findStored(var5);
if (var6 != null) {
var5.remove(var6);
}
}
yield true;
}
case RowSelect -> {
if ("stage".equals(var3.kind)) {
Integer var4 = parseStageId(var3.id);
if (var4 == null) {
yield false;
} else {
this.selectedStageId = var4.equals(this.selectedStageId) ? null : var4;
this.toggledItems.clear();
yield true;
}
} else if ("field".equals(var3.kind) && var3.id != null) {
if (!this.toggledItems.remove(var3.id)) {
this.toggledItems.add(var3.id);
}
yield true;
} else {
yield false;
}
}
class="kw">default -> false;
};
}
@Nullable
class="kw">private class="kw">static Integer parseStageId(@Nullable String var0) {
if (var0 == null) {
class="kw">return null;
}
try {
class="kw">return Integer.valueOf(var0);
} catch (NumberFormatException var2) {
class="kw">return null;
}
}
@Nullable
class="kw">private WorldEvent find(@Nonnull Store<EntityStore> var1) {
WorldEvent var2 = var1.getResource(WorldEventManager.getResourceType()).get(this.uuid);
class="kw">return var2 != null ? var2 : this.findStored(var1.getResource(WorldEventStorage.getResourceType()));
}
@Nullable
class="kw">private WorldEvent findStored(@Nonnull WorldEventStorage var1) {
WorldEvent[] var2 = new WorldEvent[1];
var1.forEach(var2, (var1x, var2x) -> {
if (var1x.uuid.equals(this.uuid)) {
var2x[0] = var1x;
}
});
class="kw">return var2[0];
}
class="kw">private void buildTimeline(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull WorldEvent var4) {
var3 = this.appendSection(
var1,
"#ListContainer",
var3,
Message.translation(
this.showFullTimeline ? "server.customUI.worldEventPanel.section.timeline" : "server.customUI.worldEventPanel.section.currentStage"
)
);
Stage var5 = this.showFullTimeline ? StageProgress.rootOf(var4) : var4.stage;
this.graphBudget = 400;
if (var5 == Stage.EMPTY) {
this.appendText(var1, "#ListContainer", var3, Message.translation("server.customUI.worldEventPanel.inspector.noStages"));
} else {
int var6 = this.appendSpine(var1, var2, "#ListContainer", var3, var4, var5, 0);
if (this.graphBudget <= 0) {
this.appendText(var1, "#ListContainer", var6, Message.translation("server.customUI.worldEventPanel.inspector.truncated"));
}
}
}
class="kw">private int appendSpine(
@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, @Nonnull String var3, int var4, @Nonnull WorldEvent var5, @Nonnull Stage var6, int var7
) {
int var8 = var4;
Stage var9 = var6;
while (var9 != null && this.graphBudget > 0 && var7 <= 32) {
this.trackAppend(var3, "Pages/WorldEvent/WorldEventGraphStage.ui");
var1.append(var3, "Pages/WorldEvent/WorldEventGraphStage.ui");
this.graphBudget--;
String var10 = var3 + "[" + var8 + "]";
boolean var11 = var9 == var5.stage;
boolean var12 = this.selectedStageId != null && this.selectedStageId == var9.id();
if (var12) {
this.resolvedStage = var9;
}
var1.set(var10 + " #Header #Label.Text", this.positionLabel(var9, "server.customUI.worldEventPanel.inspector.stage"));
var1.set(
var10 + " #Header #Badge.Text",
var11 ? Message.translation("server.customUI.worldEventPanel.state.current") : Message.translation("server.customUI.worldEventPanel.state.pending")
);
var1.setObject(var10 + " #Header #Rail.Background", colorPatch(var11 ? "#4f9e63" : "#4a5a6a"));
var1.set(var10 + " #Header.Style", var12 ? STAGE_SELECTED_STYLE : STAGE_STYLE);
String var13 = String.valueOf(var9.id());
this.trackBinding(var13);
var2.addEventBinding(
CustomUIEventBindingType.Activating,
var10 + " #Header",
new EventData().append("Action", WorldEventPanelPage.Action.RowSelect.name()).append("Kind", "stage").append("Id", var13)
);
Fork[] var14 = var9.forks();
var8++;
if (var14.length == 1) {
Stage var17 = this.appendFork(var1, var2, var10 + " #Body", 0, var5, var14[0], var11, var7, true);
var9 = this.showFullTimeline ? var17 : null;
} else {
String var15 = var10 + " #Branches";
for (int var16 = 0; var16 < var14.length && this.graphBudget > 0; var16++) {
this.trackAppend(var15, "Pages/WorldEvent/WorldEventGraphColumn.ui");
var1.append(var15, "Pages/WorldEvent/WorldEventGraphColumn.ui");
this.graphBudget--;
this.appendFork(var1, var2, var15 + "[" + var16 + "]", 0, var5, var14[var16], var11, var7, false);
}
var9 = null;
}
}
class="kw">return var8;
}
@Nullable
class="kw">private Stage appendFork(
@Nonnull UICommandBuilder var1,
@Nonnull UIEventBuilder var2,
@Nonnull String var3,
int var4,
@Nonnull WorldEvent var5,
@Nonnull Fork var6,
boolean var7,
int var8,
boolean var9
) {
if (this.graphBudget <= 0) {
class="kw">return null;
}
this.trackAppend(var3, "Pages/WorldEvent/WorldEventGraphFork.ui");
var1.append(var3, "Pages/WorldEvent/WorldEventGraphFork.ui");
this.graphBudget--;
String var10 = var3 + "[" + var4 + "]";
EventCondition[] var11 = var6.conditions();
boolean[] var12 = this.testAll(var6);
int var13 = countMet(var12);
boolean var14 = var7 && var11.length > 0 && var13 == var11.length;
var1.set(var10 + " #Header #Label.Text", label("server.customUI.worldEventPanel.inspector.fork", var4));
var1.set(
var10 + " #Header #Badge.Text",
Message.translation("server.customUI.worldEventPanel.inspector.forkProgress").param("met", var13).param("total", var11.length)
);
var1.setObject(var10 + " #Header #Rail.Background", colorPatch(var14 ? "#4f9e63" : (var7 ? "#4274a5" : "#4a5a6a")));
String var15 = var10 + " #Items";
int var16 = 0;
for (int var17 = 0; var17 < var11.length && this.graphBudget > 0; var17++) {
boolean var18 = var12[var17];
var16 = this.appendItem(
var1,
var15,
var16,
conditionId(var11[var17]),
var7
? Message.translation(var18 ? "server.customUI.worldEventPanel.state.met" : "server.customUI.worldEventPanel.state.waiting")
: Message.translation("server.customUI.worldEventPanel.state.inactive"),
var7 ? (var18 ? "#4f9e63" : "#c08a3a") : "#4a5a6a"
);
}
Stage var19 = var6.next();
if (var19 == null) {
class="kw">return null;
}
if (!this.showFullTimeline) {
this.appendItem(var1, var10 + " #Next", 0, this.positionLabel(var19, "server.customUI.worldEventPanel.inspector.nextStage"), null, "#4a5a6a");
class="kw">return null;
}
if (var9) {
class="kw">return var19;
}
this.appendSpine(var1, var2, var10 + " #Next", 0, var5, var19, var8 + 1);
class="kw">return null;
}
class="kw">private int appendItem(@Nonnull UICommandBuilder var1, @Nonnull String var2, int var3, @Nonnull String var4, @Nullable Message var5, @Nonnull String var6) {
String var7 = var2 + "[" + var3 + "]";
this.appendItemBase(var1, var2, var7, var6, var5);
var1.set(var7 + " #Label.Text", var4);
var1.set(var7 + " #Label.TooltipText", var4);
class="kw">return var3 + 1;
}
class="kw">private int appendItem(@Nonnull UICommandBuilder var1, @Nonnull String var2, int var3, @Nonnull Message var4, @Nullable Message var5, @Nonnull String var6) {
String var7 = var2 + "[" + var3 + "]";
this.appendItemBase(var1, var2, var7, var6, var5);
var1.set(var7 + " #Label.Text", var4);
var1.set(var7 + " #Label.TooltipText", var4);
class="kw">return var3 + 1;
}
class="kw">private void appendItemBase(@Nonnull UICommandBuilder var1, @Nonnull String var2, @Nonnull String var3, @Nonnull String var4, @Nullable Message var5) {
this.trackAppend(var2, "Pages/WorldEvent/WorldEventGraphItem.ui");
var1.append(var2, "Pages/WorldEvent/WorldEventGraphItem.ui");
this.graphBudget--;
var1.setObject(var3 + " #Rail.Background", colorPatch(var4));
if (var5 != null) {
var1.set(var3 + " #Badge.Text", var5);
}
}
class="kw">private void buildDetails(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, @Nonnull Store<EntityStore> var3, @Nonnull WorldEvent var4) {
if (this.resolvedStage != null) {
this.buildStageDetails(var1, var2, var4, this.resolvedStage);
} else {
this.buildEventDetails(var1, var2, var3, var4);
}
}
class="kw">private void buildEventDetails(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, @Nonnull Store<EntityStore> var3, @Nonnull WorldEvent var4) {
WorldEventStorage var5 = var3.getResource(WorldEventStorage.getResourceType());
WorldEventAsset var6 = WorldEventAsset.getAssetOrUnknown(var4.asset);
int var7 = 0;
var7 = this.appendSection(var1, "#SideContainer", var7, Message.translation("server.customUI.worldEventPanel.section.event"));
var7 = this.appendProperty(var1, "#SideContainer", var7, Message.translation("server.customUI.worldEventPanel.field.uuid"), var4.uuid.toString());
var7 = this.appendProperty(var1, "#SideContainer", var7, Message.translation("server.customUI.worldEventPanel.field.asset"), var4.asset);
var7 = this.appendProperty(
var1,
"#SideContainer",
var7,
Message.translation("server.customUI.worldEventPanel.field.stage"),
this.positionLabel(var4.stage, "server.customUI.worldEventPanel.value.stageProgress")
);
var7 = this.appendProperty(
var1, "#SideContainer", var7, Message.translation("server.customUI.worldEventPanel.field.class="kw">transient"), boolLabel(var4.isTransient)
);
var7 = this.appendProperty(var1, "#SideContainer", var7, Message.translation("server.customUI.worldEventPanel.field.initializing"), boolLabel(var4.init));
var7 = this.appendCount(var1, "#SideContainer", var7, Message.translation("server.customUI.worldEventPanel.field.repeatCount"), var4.repeatCount, -1);
var7 = this.appendProperty(
var1, "#SideContainer", var7, Message.translation("server.customUI.worldEventPanel.field.requiredPlayers"), String.valueOf(var4.requiredPlayerCount)
);
var7 = this.appendProperty(var1, "#SideContainer", var7, Message.translation("server.customUI.worldEventPanel.field.failCount"), var4.failCount + " / 5");
var7 = this.appendProperty(
var1, "#SideContainer", var7, Message.translation("server.customUI.worldEventPanel.field.persisted"), boolLabel(var5.contains(var4))
);
var7 = this.appendProperty(
var1, "#SideContainer", var7, Message.translation("server.customUI.worldEventPanel.field.completed"), boolLabel(var5.isComplete(var4.uuid))
);
var7 = this.appendProperty(
var1,
"#SideContainer",
var7,
Message.translation("server.customUI.worldEventPanel.field.assetValid"),
boolLabel(var6 != WorldEventAsset.UNKNOWN && var6.valid())
);
var7 = this.buildConditionDetails(var1, var2, var7, var4);
this.buildContextDetails(var1, var2, var7, var4);
}
class="kw">private void buildStageDetails(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, @Nonnull WorldEvent var3, @Nonnull Stage var4) {
boolean var5 = var4 == var3.stage;
int var6 = 0;
var6 = this.appendSection(var1, "#SideContainer", var6, this.positionLabel(var4, "server.customUI.worldEventPanel.inspector.stage"));
Fork[] var7 = var4.forks();
if (var7.length == 0) {
var6 = this.appendText(var1, "#SideContainer", var6, Message.translation("server.customUI.worldEventPanel.inspector.noConditions"));
}
for (int var8 = 0; var8 < var7.length; var8++) {
Fork var9 = var7[var8];
EventCondition[] var10 = var9.conditions();
boolean[] var11 = var5 ? this.testAll(var9) : null;
boolean var12 = var5 && var10.length > 0 && countMet(var11) == var10.length;
this.trackAppend("#SideContainer", "Pages/WorldEvent/WorldEventDetailFork.ui");
var1.append("#SideContainer", "Pages/WorldEvent/WorldEventDetailFork.ui");
String var13 = "#SideContainer[" + var6 + "]";
var6++;
var1.set(var13 + " #Header #Label.Text", label("server.customUI.worldEventPanel.inspector.fork", var8));
var1.set(
var13 + " #Header #Badge.Text",
Message.translation("server.customUI.worldEventPanel.inspector.forkProgress")
.param("met", var11 != null ? countMet(var11) : 0)
.param("total", var10.length)
);
var1.setObject(var13 + " #Header #Rail.Background", colorPatch(var12 ? "#4f9e63" : (var5 ? "#4274a5" : "#4a5a6a")));
String var14 = var13 + " #Items";
int var15 = 0;
for (int var16 = 0; var16 < var10.length; var16++) {
EventCondition var17 = var10[var16];
String var18 = var5 ? (var11[var16] ? "#4f9e63" : "#c08a3a") : "#4a5a6a";
var15 = this.appendDetailItem(
var1, var2, var14, var15, "c" + var8 + "_" + var16, conditionId(var17), var18, true, () -> encodedFields(EventCondition.TYPE_CODEC, var17)
);
}
EventAction[] var20 = var9.actions();
for (int var21 = 0; var21 < var20.length; var21++) {
EventAction var22 = var20[var21];
var15 = this.appendDetailItem(
var1, var2, var14, var15, "a" + var8 + "_" + var21, actionId(var22), "#4a5a6a", false, () -> encodedFields(EventAction.TYPE_CODEC, var22)
);
}
}
this.buildContextDetails(var1, var2, var6, var3);
}
class="kw">private int appendDetailItem(
@Nonnull UICommandBuilder var1,
@Nonnull UIEventBuilder var2,
@Nonnull String var3,
int var4,
@Nonnull String var5,
@Nonnull String var6,
@Nonnull String var7,
boolean var8,
@Nonnull Supplier<BsonValue> var9
) {
this.trackAppend(var3, "Pages/WorldEvent/WorldEventDetailItem.ui");
var1.append(var3, "Pages/WorldEvent/WorldEventDetailItem.ui");
String var10 = var3 + "[" + var4 + "]";
boolean var11 = var8 != this.toggledItems.contains(var5);
var1.set(var10 + " #Head #Label.Text", var6);
var1.setObject(var10 + " #Head #Rail.Background", colorPatch(var7));
this.trackBinding(var5);
var2.addEventBinding(
CustomUIEventBindingType.Activating,
var10 + " #Head",
new EventData().append("Action", WorldEventPanelPage.Action.RowSelect.name()).append("Kind", "field").append("Id", var5)
);
if (var11) {
this.appendItemFields(var1, var2, var10 + " #Fields", var9.get());
}
class="kw">return var4 + 1;
}
class="kw">private void appendItemFields(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, @Nonnull String var3, @Nullable BsonValue var4) {
if (var4 == null) {
this.appendText(var1, var3, 0, Message.translation("server.customUI.worldEventPanel.inspector.encodeFailed"));
} else if (!(var4 class="kw">instanceof BsonDocument var5 && var5.isEmpty())) {
this.appendEncoded(var1, var2, var3, 0, "", var4, 0);
}
}
class="kw">private int buildConditionDetails(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull WorldEvent var4) {
var3 = this.appendSection(var1, "#SideContainer", var3, Message.translation("server.customUI.worldEventPanel.section.conditions"));
Fork[] var5 = var4.stage.forks();
if (var5.length == 0) {
class="kw">return this.appendText(var1, "#SideContainer", var3, Message.translation("server.customUI.worldEventPanel.inspector.noConditions"));
}
for (int var6 = 0; var6 < var5.length; var6++) {
EventCondition[] var7 = var5[var6].conditions();
boolean[] var8 = this.testAll(var5[var6]);
var3 = this.appendProperty(
var1,
"#SideContainer",
var3,
label("server.customUI.worldEventPanel.inspector.fork", var6),
Message.translation("server.customUI.worldEventPanel.inspector.forkProgress").param("met", countMet(var8)).param("total", var7.length)
);
for (int var9 = 0; var9 < var7.length; var9++) {
EventCondition var10 = var7[var9];
var3 = this.appendProperty(
var1,
"#SideContainer",
var3,
conditionId(var10),
Message.translation(var8[var9] ? "server.customUI.worldEventPanel.state.met" : "server.customUI.worldEventPanel.state.waiting")
);
var3 = this.appendFields(var1, var2, "#SideContainer", var3, encodedFields(EventCondition.TYPE_CODEC, var10));
}
}
class="kw">return var3;
}
class="kw">private void buildContextDetails(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull WorldEvent var4) {
var3 = this.appendSection(var1, "#SideContainer", var3, Message.translation("server.customUI.worldEventPanel.section.context"));
ContextEntry[] var5 = var4.context.toEntries();
if (var5.length == 0) {
this.appendText(var1, "#SideContainer", var3, Message.translation("server.customUI.worldEventPanel.inspector.noContext"));
} else {
int var6 = 0;
for (ContextEntry var10 : var5) {
ContextKey var11 = var10.key();
Context var12 = var10.context();
if (var11 != null && var12 != null) {
if (var6 >= 400) {
this.appendText(var1, "#SideContainer", var3, Message.translation("server.customUI.worldEventPanel.inspector.truncated"));
class="kw">return;
}
this.trackAppend("#SideContainer", "Pages/WorldEvent/WorldEventDetailFork.ui");
var1.append("#SideContainer", "Pages/WorldEvent/WorldEventDetailFork.ui");
String var13 = "#SideContainer[" + var3 + "]";
var3++;
var6++;
String var14 = Context.TYPE_CODEC.getIdFor((Class<? class="kw">extends Context>)var12.getClass());
var1.set(var13 + " #Header #Label.Text", var11.getName());
var1.set(var13 + " #Header #Badge.Text", var14 != null ? var14 : var12.getClass().getSimpleName());
var6 += this.appendFields(var1, var2, var13 + " #Items", 0, encodedFields(Context.TYPE_CODEC, var12), 400 - var6);
}
}
}
}
class="kw">private int appendFields(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, @Nonnull String var3, int var4, @Nullable BsonValue var5) {
class="kw">return this.appendFields(var1, var2, var3, var4, var5, 400);
}
class="kw">private int appendFields(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, @Nonnull String var3, int var4, @Nullable BsonValue var5, int var6) {
if (var4 >= var6) {
class="kw">return var4;
} else if (var5 == null) {
class="kw">return this.appendText(var1, var3, var4, Message.translation("server.customUI.worldEventPanel.inspector.encodeFailed"));
} else {
class="kw">return var5 class="kw">instanceof BsonDocument var7 && var7.isEmpty() ? var4 : this.appendEncoded(var1, var2, var3, var4, "", var5, 0, var6);
}
}
@Nullable
class="kw">private class="kw">static <T> BsonValue encodedFields(@Nonnull CodecMapCodec<T> var0, @Nonnull T var1) {
BsonValue var2 = tryEncode(var0, var1);
if (var2 class="kw">instanceof BsonDocument var3) {
var3.remove("Type");
}
class="kw">return var2;
}
@Nonnull
class="kw">private boolean[] testAll(@Nonnull Fork var1) {
boolean[] var2 = (boolean[])this.results.get(var1);
if (var2 != null) {
class="kw">return var2;
}
EventCondition[] var3 = var1.conditions();
boolean[] var4 = new boolean[var3.length];
for (int var5 = 0; var5 < var3.length; var5++) {
var4[var5] = safeTest(var3[var5]);
}
this.results.put(var1, var4);
class="kw">return var4;
}
class="kw">private class="kw">static int countMet(@Nonnull boolean[] var0) {
int var1 = 0;
for (boolean var5 : var0) {
if (var5) {
var1++;
}
}
class="kw">return var1;
}
class="kw">private class="kw">static boolean safeTest(@Nonnull EventCondition var0) {
try {
class="kw">return var0.test();
} catch (Exception var2) {
((HytaleLogger.Api)((HytaleLogger.Api)LOGGER.atWarning()).withCause(var2))
.log("World-event condition %s failed during inspection", var0.getClass().getName());
class="kw">return false;
}
}
@Nonnull
class="kw">private class="kw">static String conditionId(@Nonnull EventCondition var0) {
String var1 = EventCondition.TYPE_CODEC.getIdFor((Class<? class="kw">extends EventCondition>)var0.getClass());
class="kw">return var1 != null ? var1 : var0.getClass().getSimpleName();
}
@Nonnull
class="kw">private class="kw">static String actionId(@Nonnull EventAction var0) {
String var1 = EventAction.TYPE_CODEC.getIdFor((Class<? class="kw">extends EventAction>)var0.getClass());
class="kw">return var1 != null ? var1 : var0.getClass().getSimpleName();
}
@Nonnull
class="kw">private class="kw">static Message label(@Nonnull String var0, int var1) {
class="kw">return Message.translation(var0).param("index", var1);
}
class="kw">private void updateStageWalk(@Nonnull WorldEvent var1) {
if (var1.root == Stage.EMPTY) {
this.stageWalk = null;
this.walkRoot = null;
} else {
if (this.walkRoot != var1.root) {
this.stageWalk = new StageProgress.Walk(var1.root);
this.walkRoot = var1.root;
}
}
}
@Nonnull
class="kw">private Message positionLabel(@Nonnull Stage var1, @Nonnull String var2) {
class="kw">return stageLabelFrom(this.stageWalk != null ? this.stageWalk.progressOf(var1) : null, var1, var2);
}
}