ReputationPlugin class

Пакет: com.hypixel.hytale.builtin.adventure.reputation

Файл: com/hypixel/hytale/builtin/adventure/reputation/ReputationPlugin.java

extends: JavaPlugin

Поля (36)

МодификаторыТипИмя
static ReputationPlugin instance
instance
int var1
var1
int var10
ReputationRank var3
ReputationGroupComponent var3
World var3
World var3
ReputationRank var3
ReputationGameplayConfig var4
ReputationGroupComponent var4
World var4
ReputationGameplayConfig var4
ReputationGroupComponent var4
int var4
ReputationGameplayConfig var4
ReputationRank var4
ReputationGroupComponent var5
World var5
ReputationGroup var5
int var5
Player var5
ReputationGroup var5
String var5
int var5
ReputationGameplayConfig var6
ReputationDataResource var6
ReputationGameplayConfig var6
ReputationDataResource var6
ReputationGroup var7
ReputationGroup var7
Object2IntMap var7
PlayerConfigData var8
Object2IntMap var8
Object2IntOpenHashMap var9

Методы (22)

МодификаторыВозвратСигнатура
abstract throw new UnsupportedOperationExceptionthrow new UnsupportedOperationException("Not implemented!")
public int changeReputationint changeReputation(@Nonnull Player var1, @Nonnull Ref<EntityStore> var2, int var3, @Nonnull ComponentAccessor<EntityStore> var4)
public int changeReputationint changeReputation(@Nonnull Player var1, @Nonnull String var2, int var3, @Nonnull ComponentAccessor<EntityStore> var4)
public int changeReputationint changeReputation(@Nonnull World var1, @Nonnull String var2, int var3)
private int computeReputationint computeReputation(@Nonnull Object2IntMap<String> var1, @Nonnull ReputationGroup var2, int var3)
abstract for for(int var2 = 1; var2 < this.reputationRanks.size()
abstract for for(int var2 = 0; var2 < this.reputationRanks.size()
static ReputationPlugin getReputationPlugin get()
public ComponentType<EntityStore, ReputationGroupComponent> getReputationGroupComponentTypeComponentType<EntityStore, ReputationGroupComponent> getReputationGroupComponentType()
public int getReputationValueint getReputationValue(@Nonnull Store<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull Ref<EntityStore> var3)
public int getReputationValueint getReputationValue(@Nonnull Store<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull String var3)
public int getReputationValueint getReputationValue(@Nonnull Store<EntityStore> var1, @Nonnull Ref<EntityStore> var2)
public int getReputationValueint getReputationValue(@Nonnull Store<EntityStore> var1, @Nonnull String var2)
private int getReputationValueForGroupint getReputationValueForGroup(@Nonnull Object2IntMap<String> var1, @Nonnull ReputationGroup var2)
if if(var7 == null)
if if(var5 == null)
if if(var5 == null)
if if(var7 != null)
if if(var5 == null)
if if(var4 == null)
if if(var1 == Integer.MIN_VALUE)
abstract super super(var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.adventure.reputation;

class="kw">import com.hypixel.hytale.assetstore.AssetRegistry;
class="kw">import com.hypixel.hytale.assetstore.map.DefaultAssetMap;
class="kw">import com.hypixel.hytale.builtin.adventure.reputation.assets.ReputationGroup;
class="kw">import com.hypixel.hytale.builtin.adventure.reputation.assets.ReputationRank;
class="kw">import com.hypixel.hytale.builtin.adventure.reputation.choices.ReputationRequirement;
class="kw">import com.hypixel.hytale.builtin.adventure.reputation.command.ReputationCommand;
class="kw">import com.hypixel.hytale.builtin.adventure.reputation.store.ReputationDataResource;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.ResourceType;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.server.core.asset.HytaleAssetStore;
class="kw">import com.hypixel.hytale.server.core.asset.type.attitude.Attitude;
class="kw">import com.hypixel.hytale.server.core.asset.type.gameplay.GameplayConfig;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.entity.entities.player.data.PlayerConfigData;
class="kw">import com.hypixel.hytale.server.core.entity.entities.player.pages.choices.ChoiceRequirement;
class="kw">import com.hypixel.hytale.server.core.plugin.JavaPlugin;
class="kw">import com.hypixel.hytale.server.core.plugin.JavaPluginInit;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import it.unimi.dsi.fastutil.objects.Object2IntMap;
class="kw">import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.util.Comparator;
class="kw">import java.util.List;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class ReputationPlugin class="kw">extends JavaPlugin {
   class="kw">private class="kw">static ReputationPlugin instance;
   class="kw">private ComponentType<EntityStore, ReputationGroupComponent> reputationGroupComponentType;
   class="kw">private ResourceType<EntityStore, ReputationDataResource> reputationDataResourceType;
   class="kw">private List<ReputationRank> reputationRanks;
   class="kw">private int maxReputationValue = Integer.MIN_VALUE;
   class="kw">private int minReputationValue = Integer.MAX_VALUE;
   class="kw">public class="kw">static class="kw">final int NO_REPUTATION_GROUP = Integer.MIN_VALUE;

   class="kw">public class="kw">static ReputationPlugin get() {
      class="kw">return instance;
   }

   class="kw">public ReputationPlugin(@Nonnull JavaPluginInit var1) {
      super(var1);
   }

   class="kw">public ComponentType<EntityStore, ReputationGroupComponent> getReputationGroupComponentType() {
      class="kw">return this.reputationGroupComponentType;
   }

   @Override
   class="kw">protected void setup() {
      instance = this;
      AssetRegistry.register(
         ((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(ReputationRank.class, new DefaultAssetMap())
                     .setPath("NPC/Reputation/Ranks"))
                  .setCodec(ReputationRank.CODEC))
               .setKeyFunction(ReputationRank::getId))
            .build()
      );
      AssetRegistry.register(
         ((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(ReputationGroup.class, new DefaultAssetMap())
                     .setPath("NPC/Reputation/Groups"))
                  .setCodec(ReputationGroup.CODEC))
               .setKeyFunction(ReputationGroup::getId))
            .build()
      );
      this.getCommandRegistry().registerCommand(new ReputationCommand());
      ChoiceRequirement.CODEC.register("Reputation", ReputationRequirement.class, ReputationRequirement.CODEC);
      this.reputationDataResourceType = this.getEntityStoreRegistry()
         .registerResource(ReputationDataResource.class, "ReputationData", ReputationDataResource.CODEC);
      this.reputationGroupComponentType = this.getEntityStoreRegistry().registerComponent(ReputationGroupComponent.class, () -> {
         throw new UnsupportedOperationException("Not implemented!");
      });
      GameplayConfig.PLUGIN_CODEC.register(ReputationGameplayConfig.class, "Reputation", ReputationGameplayConfig.CODEC);
   }

   @Override
   class="kw">protected void start() {
      this.reputationRanks = new ObjectArrayList(ReputationRank.getAssetMap().getAssetMap().values());
      if (this.reputationRanks.size() > 1) {
         this.reputationRanks.sort(Comparator.comparingInt(ReputationRank::getMinValue));
         int var1 = this.reputationRanks.getFirst().getMaxValue();

         for (int var2 = 1; var2 < this.reputationRanks.size(); var2++) {
            ReputationRank var3 = this.reputationRanks.get(var2);
            if (var1 < var3.getMinValue()) {
               this.getLogger()
                  .at(Level.WARNING)
                  .log(
                     "There is a gap between the values of the ReputationRank %s and %s, please review the assets.",
                     var3.getId(),
                     this.reputationRanks.get(var2 - 1).getId()
                  );
            }

            if (var1 > var3.getMinValue()) {
               this.getLogger()
                  .at(Level.WARNING)
                  .log(
                     "Min value of rank %s is already contained in rank %s, please review the asset.", var3.getId(), this.reputationRanks.get(var2 - 1).getId()
                  );
            }

            var1 = var3.getMaxValue();
         }

         this.minReputationValue = this.reputationRanks.getFirst().getMinValue();
         this.maxReputationValue = this.reputationRanks.getLast().getMaxValue();
      }
   }

   class="kw">public int changeReputation(@Nonnull Player var1, @Nonnull Ref<EntityStore> var2, int var3, @Nonnull ComponentAccessor<EntityStore> var4) {
      ReputationGroupComponent var5 = var4.getComponent(var2, this.reputationGroupComponentType);
      class="kw">return var5 == null ? Integer.MIN_VALUE : this.changeReputation(var1, var5.getReputationGroupId(), var3, var4);
   }

   class="kw">public int changeReputation(@Nonnull Player var1, @Nonnull String var2, int var3, @Nonnull ComponentAccessor<EntityStore> var4) {
      World var5 = var4.getExternalData().getWorld();
      ReputationGameplayConfig var6 = ReputationGameplayConfig.getOrDefault(var5.getGameplayConfig());
      if (var6.getReputationStorageType() == ReputationGameplayConfig.ReputationStorageType.PerPlayer) {
         ReputationGroup var7 = ReputationGroup.getAssetMap().getAsset(var2);
         if (var7 == null) {
            class="kw">return Integer.MIN_VALUE;
         }

         PlayerConfigData var8 = var1.getPlayerConfigData();
         Object2IntOpenHashMap var9 = new Object2IntOpenHashMap(var8.getReputationData());
         int var10 = this.computeReputation(var9, var7, var3);
         var8.setReputationData(var9);
         class="kw">return var10;
      } else {
         class="kw">return this.changeReputation(var5, var2, var3);
      }
   }

   class="kw">public int changeReputation(@Nonnull World var1, @Nonnull String var2, int var3) {
      ReputationGameplayConfig var4 = ReputationGameplayConfig.getOrDefault(var1.getGameplayConfig());
      if (var4.getReputationStorageType() != ReputationGameplayConfig.ReputationStorageType.PerWorld) {
         class="kw">return -1;
      }

      ReputationGroup var5 = ReputationGroup.getAssetMap().getAsset(var2);
      if (var5 == null) {
         class="kw">return Integer.MIN_VALUE;
      }

      ReputationDataResource var6 = var1.getEntityStore().getStore().getResource(this.reputationDataResourceType);
      class="kw">return this.computeReputation(var6.getReputationStats(), var5, var3);
   }

   class="kw">private int computeReputation(@Nonnull Object2IntMap<String> var1, @Nonnull ReputationGroup var2, int var3) {
      class="kw">return (Integer)var1.compute(var2.getId(), (var3x, var4) -> {
         int var5 = var4 == null ? var2.getInitialReputationValue() + var3 : var4 + var3;
         class="kw">return MathUtil.clamp(var5, this.minReputationValue, this.maxReputationValue - 1);
      });
   }

   class="kw">public int getReputationValue(@Nonnull Store<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull Ref<EntityStore> var3) {
      ReputationGroupComponent var4 = var1.getComponent(var3, this.reputationGroupComponentType);
      class="kw">return var4 == null ? Integer.MIN_VALUE : this.getReputationValue(var1, var2, var4.getReputationGroupId());
   }

   class="kw">public int getReputationValue(@Nonnull Store<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull String var3) {
      World var4 = var1.getExternalData().getWorld();
      Player var5 = var1.getComponent(var2, Player.getComponentType());
      if (var5 == null) {
         class="kw">return Integer.MIN_VALUE;
      }

      ReputationGameplayConfig var6 = ReputationGameplayConfig.getOrDefault(var4.getGameplayConfig());
      if (var6.getReputationStorageType() == ReputationGameplayConfig.ReputationStorageType.PerPlayer) {
         ReputationGroup var7 = ReputationGroup.getAssetMap().getAsset(var3);
         if (var7 != null) {
            Object2IntMap var8 = var5.getPlayerConfigData().getReputationData();
            class="kw">return this.getReputationValueForGroup(var8, var7);
         } else {
            class="kw">return Integer.MIN_VALUE;
         }
      } else {
         class="kw">return this.getReputationValue(var1, var3);
      }
   }

   class="kw">public int getReputationValue(@Nonnull Store<EntityStore> var1, @Nonnull Ref<EntityStore> var2) {
      ReputationGroupComponent var3 = var1.getComponent(var2, this.reputationGroupComponentType);
      class="kw">return var3 == null ? Integer.MIN_VALUE : this.getReputationValue(var1, var3.getReputationGroupId());
   }

   class="kw">public int getReputationValue(@Nonnull Store<EntityStore> var1, @Nonnull String var2) {
      World var3 = var1.getExternalData().getWorld();
      ReputationGameplayConfig var4 = ReputationGameplayConfig.getOrDefault(var3.getGameplayConfig());
      if (var4.getReputationStorageType() != ReputationGameplayConfig.ReputationStorageType.PerWorld) {
         class="kw">return Integer.MIN_VALUE;
      }

      ReputationGroup var5 = ReputationGroup.getAssetMap().getAsset(var2);
      if (var5 == null) {
         class="kw">return Integer.MIN_VALUE;
      }

      ReputationDataResource var6 = var3.getEntityStore().getStore().getResource(this.reputationDataResourceType);
      Object2IntMap var7 = var6.getReputationStats();
      class="kw">return this.getReputationValueForGroup(var7, var5);
   }

   class="kw">private int getReputationValueForGroup(@Nonnull Object2IntMap<String> var1, @Nonnull ReputationGroup var2) {
      class="kw">return var1.getOrDefault(var2.getId(), var2.getInitialReputationValue());
   }

   @Nullable
   class="kw">public ReputationRank getReputationRank(@Nonnull Store<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull Ref<EntityStore> var3) {
      ReputationGroupComponent var4 = var1.getComponent(var3, this.reputationGroupComponentType);
      if (var4 == null) {
         class="kw">return null;
      }

      String var5 = var4.getReputationGroupId();
      class="kw">return this.getReputationRank(var1, var2, var5);
   }

   @Nullable
   class="kw">public ReputationRank getReputationRank(@Nonnull Store<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull String var3) {
      int var4 = this.getReputationValue(var1, var2, var3);
      class="kw">return this.getReputationRankFromValue(var4);
   }

   @Nullable
   class="kw">public ReputationRank getReputationRankFromValue(int var1) {
      if (var1 == Integer.MIN_VALUE) {
         class="kw">return null;
      }

      for (int var2 = 0; var2 < this.reputationRanks.size(); var2++) {
         if (this.reputationRanks.get(var2).containsValue(var1)) {
            class="kw">return this.reputationRanks.get(var2);
         }
      }

      class="kw">return null;
   }

   @Nullable
   class="kw">public ReputationRank getReputationRank(@Nonnull Store<EntityStore> var1, @Nonnull Ref<EntityStore> var2) {
      World var3 = var1.getExternalData().getWorld();
      ReputationGameplayConfig var4 = ReputationGameplayConfig.getOrDefault(var3.getGameplayConfig());
      if (var4.getReputationStorageType() != ReputationGameplayConfig.ReputationStorageType.PerWorld) {
         class="kw">return null;
      }

      int var5 = this.getReputationValue(var1, var2);
      class="kw">return this.getReputationRankFromValue(var5);
   }

   @Nullable
   class="kw">public Attitude getAttitude(@Nonnull Store<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull Ref<EntityStore> var3) {
      ReputationRank var4 = this.getReputationRank(var1, var2, var3);
      class="kw">return var4 != null ? var4.getAttitude() : null;
   }

   @Nullable
   class="kw">public Attitude getAttitude(@Nonnull Store<EntityStore> var1, @Nonnull Ref<EntityStore> var2) {
      ReputationRank var3 = this.getReputationRank(var1, var2);
      class="kw">return var3 != null ? var3.getAttitude() : null;
   }
}