InteractionEntry class

Пакет: com.hypixel.hytale.server.core.entity

Файл: com/hypixel/hytale/server/core/entity/InteractionEntry.java

Поля (14)

МодификаторыТипИмя
final HytaleLogger LOGGER
InteractionSyncData var1
boolean var1
boolean var1
float var2
HytaleLogger.Api var2
long var3
int var3
RootInteraction var3
Operation var4
long var5
String var5
var5
var5

Методы (22)

МодификаторыВозвратСигнатура
public boolean consumeDesyncFlagboolean consumeDesyncFlag()
public boolean consumeSendInitialboolean consumeSendInitial()
public void flagDesyncvoid flagDesync()
public int getIndexint getIndex()
public int getNextForkIdint getNextForkId()
public int getServerDataHashCodeint getServerDataHashCode()
public float getTimeInSecondsfloat getTimeInSeconds(long var1)
public long getTimestamplong getTimestamp()
public long getWaitingForClientFinishedlong getWaitingForClientFinished()
public long getWaitingForServerFinishedlong getWaitingForServerFinished()
public long getWaitingForSyncDatalong getWaitingForSyncData()
if if(var3 == 0L)
if if(this.useSimulationState)
if if(this.simulationState == null)
public boolean isUseSimulationStateboolean isUseSimulationState()
public int nextForkIdint nextForkId()
public boolean setClientStateboolean setClientState(@Nullable InteractionSyncData var1)
public void setTimestampvoid setTimestamp(long var1, float var3)
public void setUseSimulationStatevoid setUseSimulationState(boolean var1)
public void setWaitingForClientFinishedvoid setWaitingForClientFinished(long var1)
public void setWaitingForServerFinishedvoid setWaitingForServerFinished(long var1)
public void setWaitingForSyncDatavoid setWaitingForSyncData(long var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.entity;

class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.protocol.InteractionState;
class="kw">import com.hypixel.hytale.protocol.InteractionSyncData;
class="kw">import com.hypixel.hytale.server.core.meta.DynamicMetaStore;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.Interaction;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.RootInteraction;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.operation.Operation;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class InteractionEntry {
   class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
   class="kw">private class="kw">final int index;
   @Nonnull
   class="kw">private class="kw">final DynamicMetaStore<Interaction> metaStore;
   class="kw">private long timestamp;
   class="kw">private long simulationTimestamp;
   class="kw">private class="kw">final InteractionSyncData serverState = new InteractionSyncData();
   class="kw">private InteractionSyncData simulationState;
   @Nullable
   class="kw">private InteractionSyncData clientState;
   class="kw">private long waitingForSyncData;
   class="kw">private long waitingForServerFinished;
   class="kw">private long waitingForClientFinished;
   class="kw">private boolean useSimulationState;
   class="kw">private boolean desynced;
   class="kw">private boolean shouldSendInitial = true;

   class="kw">public InteractionEntry(int var1, int var2, int var3) {
      this.index = var1;
      this.metaStore = new DynamicMetaStore<>(null, Interaction.META_REGISTRY);
      this.serverState.operationCounter = var2;
      this.serverState.rootInteraction = var3;
      this.serverState.state = InteractionState.NotFinished;
   }

   class="kw">public int getIndex() {
      class="kw">return this.index;
   }

   class="kw">public int nextForkId() {
      class="kw">return this.serverState.totalForks++;
   }

   class="kw">public int getNextForkId() {
      class="kw">return this.serverState.totalForks;
   }

   @Nonnull
   class="kw">public InteractionSyncData getState() {
      class="kw">return this.useSimulationState ? this.getSimulationState() : this.getServerState();
   }

   class="kw">public void setUseSimulationState(boolean var1) {
      this.useSimulationState = var1;
   }

   class="kw">public float getTimeInSeconds(long var1) {
      long var3 = this.getTimestamp();
      if (var3 == 0L) {
         class="kw">return 0.0F;
      }

      long var5 = var1 - var3;
      class="kw">return (float)var5 / 1.0E9F;
   }

   class="kw">public void setTimestamp(long var1, float var3) {
      var1 -= (long)(var3 * 1.0E9F);
      if (this.useSimulationState) {
         this.simulationTimestamp = var1;
      } else {
         this.timestamp = var1;
      }
   }

   class="kw">public long getTimestamp() {
      class="kw">return this.useSimulationState ? this.simulationTimestamp : this.timestamp;
   }

   class="kw">public boolean isUseSimulationState() {
      class="kw">return this.useSimulationState;
   }

   @Nullable
   class="kw">public InteractionSyncData getClientState() {
      class="kw">return this.clientState;
   }

   @Nonnull
   class="kw">public DynamicMetaStore<Interaction> getMetaStore() {
      class="kw">return this.metaStore;
   }

   class="kw">public int getServerDataHashCode() {
      InteractionSyncData var1 = this.getState();
      float var2 = var1.progress;
      var1.progress = (int)var2;
      int var3 = var1.hashCode();
      var1.progress = var2;
      class="kw">return var3;
   }

   @Nonnull
   class="kw">public InteractionSyncData getServerState() {
      class="kw">return this.serverState;
   }

   @Nonnull
   class="kw">public InteractionSyncData getSimulationState() {
      if (this.simulationState == null) {
         this.simulationState = new InteractionSyncData();
         this.simulationState.operationCounter = this.serverState.operationCounter;
         this.simulationState.rootInteraction = this.serverState.rootInteraction;
         this.simulationState.state = InteractionState.NotFinished;
      }

      class="kw">return this.simulationState;
   }

   class="kw">public boolean setClientState(@Nullable InteractionSyncData var1) {
      if (var1 != null && (var1.operationCounter != this.serverState.operationCounter || var1.rootInteraction != this.serverState.rootInteraction)) {
         HytaleLogger.Api var2 = LOGGER.at(Level.FINE);
         if (var2.isEnabled()) {
            RootInteraction var3 = RootInteraction.getAssetMap().getAsset(this.serverState.rootInteraction);
            Operation var4 = var3.getOperation(this.serverState.operationCounter);
            String var5;
            if (var4.getInnerOperation() class="kw">instanceof Interaction var7) {
               var5 = var7.getId() + " (" + var7.getClass().getSimpleName() + ")";
            } else {
               var5 = var4 + " (" + var4.getClass().getSimpleName() + ")";
            }

            var2.log(
               "%d: Client/Server desync %d != %d, %d != %d (for %s)",
               this.index,
               this.serverState.operationCounter,
               var1.operationCounter,
               this.serverState.rootInteraction,
               var1.rootInteraction,
               var5
            );
         }

         class="kw">return false;
      } else {
         this.clientState = var1;
         class="kw">return true;
      }
   }

   class="kw">public long getWaitingForSyncData() {
      class="kw">return this.waitingForSyncData;
   }

   class="kw">public void setWaitingForSyncData(long var1) {
      this.waitingForSyncData = var1;
   }

   class="kw">public long getWaitingForServerFinished() {
      class="kw">return this.waitingForServerFinished;
   }

   class="kw">public void setWaitingForServerFinished(long var1) {
      this.waitingForServerFinished = var1;
   }

   class="kw">public long getWaitingForClientFinished() {
      class="kw">return this.waitingForClientFinished;
   }

   class="kw">public void setWaitingForClientFinished(long var1) {
      this.waitingForClientFinished = var1;
   }

   class="kw">public boolean consumeDesyncFlag() {
      boolean var1 = this.desynced;
      this.desynced = false;
      class="kw">return var1;
   }

   class="kw">public void flagDesync() {
      this.desynced = true;
   }

   class="kw">public boolean consumeSendInitial() {
      boolean var1 = this.shouldSendInitial;
      this.shouldSendInitial = false;
      class="kw">return var1;
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "InteractionEntry{index="
         + this.index
         + ", metaStore="
         + this.metaStore
         + ", timestamp="
         + this.timestamp
         + ", getTimeInSeconds()="
         + this.getTimeInSeconds(System.nanoTime())
         + ", simulationTimestamp="
         + this.simulationTimestamp
         + ", serverState="
         + this.serverState
         + ", simulationState="
         + this.simulationState
         + ", clientState="
         + this.clientState
         + ", waitingForSyncData="
         + this.waitingForSyncData
         + ", waitingForServerFinished="
         + this.waitingForServerFinished
         + ", waitingForClientFinished="
         + this.waitingForClientFinished
         + ", useSimulationState="
         + this.useSimulationState
         + ", desynced="
         + this.desynced
         + "}";
   }
}