ConnectedBlocksModule class

Пакет: com.hypixel.hytale.server.core.universe.world.connectedblocks

Файл: com/hypixel/hytale/server/core/universe/world/connectedblocks/ConnectedBlocksModule.java

extends: JavaPlugin

Поля (3)

МодификаторыТипИмя
final PluginManifest MANIFEST
instance
ConnectedBlockRuleSet var3

Методы (4)

МодификаторыВозвратСигнатура
static ConnectedBlocksModule getConnectedBlocksModule get()
if if(var3 != null)
static void onBlockTypesChangedvoid onBlockTypesChanged(@Nonnull LoadedAssetsEvent<String, BlockType, BlockTypeAssetMap<String, BlockType>> var0)
abstract super super(var1)

Исходный код

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

class="kw">import com.hypixel.hytale.assetstore.AssetRegistry;
class="kw">import com.hypixel.hytale.assetstore.event.LoadedAssetsEvent;
class="kw">import com.hypixel.hytale.assetstore.map.BlockTypeAssetMap;
class="kw">import com.hypixel.hytale.assetstore.map.DefaultAssetMap;
class="kw">import com.hypixel.hytale.common.plugin.PluginManifest;
class="kw">import com.hypixel.hytale.server.core.asset.HytaleAssetStore;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.asset.type.tagpattern.config.TagPattern;
class="kw">import com.hypixel.hytale.server.core.modules.entity.EntityModule;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.InteractionModule;
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.connectedblocks.builtin.RoofConnectedBlockRuleSet;
class="kw">import com.hypixel.hytale.server.core.universe.world.connectedblocks.builtin.StairConnectedBlockRuleSet;
class="kw">import com.hypixel.hytale.server.core.universe.world.connectedblocks.config.ConnectedBlockRuleSetPacketGenerator;
class="kw">import com.hypixel.hytale.server.core.universe.world.connectedblocks.config.PatternedConnectedBlockRuleSet;
class="kw">import com.hypixel.hytale.server.core.universe.world.connectedblocks.config.PatternedConnectedBlockRuleSetAsset;
class="kw">import com.hypixel.hytale.server.core.universe.world.connectedblocks.config.rule.ConnectedBlockAndRule;
class="kw">import com.hypixel.hytale.server.core.universe.world.connectedblocks.config.rule.ConnectedBlockFaceTagRule;
class="kw">import com.hypixel.hytale.server.core.universe.world.connectedblocks.config.rule.ConnectedBlockNotRule;
class="kw">import com.hypixel.hytale.server.core.universe.world.connectedblocks.config.rule.ConnectedBlockOrRule;
class="kw">import com.hypixel.hytale.server.core.universe.world.connectedblocks.config.rule.ConnectedBlockRule;
class="kw">import com.hypixel.hytale.server.core.universe.world.connectedblocks.config.rule.ConnectedBlockShapeRule;
class="kw">import com.hypixel.hytale.server.core.universe.world.connectedblocks.config.shape.ConnectedBlockBlockTypeShape;
class="kw">import com.hypixel.hytale.server.core.universe.world.connectedblocks.config.shape.ConnectedBlockShapeConfig;
class="kw">import com.hypixel.hytale.server.core.universe.world.connectedblocks.config.shape.ConnectedBlockTagShape;
class="kw">import com.hypixel.hytale.server.core.universe.world.connectedblocks.config.shape.ConnectedBlockTemplatedShape;
class="kw">import javax.annotation.Nonnull;

class="kw">public class ConnectedBlocksModule class="kw">extends JavaPlugin {
   class="kw">public class="kw">static class="kw">final PluginManifest MANIFEST = PluginManifest.corePlugin(ConnectedBlocksModule.class)
      .depends(EntityModule.class)
      .depends(InteractionModule.class)
      .build();
   class="kw">private class="kw">static ConnectedBlocksModule instance;

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

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

   @Override
   class="kw">protected void setup() {
      AssetRegistry.register(
         ((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
                              PatternedConnectedBlockRuleSetAsset.class, new DefaultAssetMap()
                           )
                           .setPath("Item/ConnectedBlockRuleSets"))
                        .setKeyFunction(PatternedConnectedBlockRuleSetAsset::getId))
                     .setCodec(PatternedConnectedBlockRuleSetAsset.CODEC))
                  .setPacketGenerator(new ConnectedBlockRuleSetPacketGenerator())
                  .loadsAfter(TagPattern.class))
               .loadsBefore(BlockType.class))
            .build()
      );
      AssetRegistry.register(
         ((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
                        CustomConnectedBlockTemplateAsset.class, new DefaultAssetMap()
                     )
                     .setPath("Item/CustomConnectedBlockTemplates"))
                  .setKeyFunction(CustomConnectedBlockTemplateAsset::getId))
               .setCodec(CustomConnectedBlockTemplateAsset.CODEC))
            .build()
      );
      this.getEventRegistry().register(LoadedAssetsEvent.class, BlockType.class, ConnectedBlocksModule::onBlockTypesChanged);
      CustomTemplateConnectedBlockPattern.CODEC.register("Custom", CustomConnectedBlockPattern.class, CustomConnectedBlockPattern.CODEC);
      ConnectedBlockRuleSet.CODEC.register("CustomTemplate", CustomTemplateConnectedBlockRuleSet.class, CustomTemplateConnectedBlockRuleSet.CODEC);
      ConnectedBlockRuleSet.CODEC.register("Patterned", PatternedConnectedBlockRuleSet.class, PatternedConnectedBlockRuleSet.CODEC);
      ConnectedBlockRuleSet.CODEC.register("Stair", StairConnectedBlockRuleSet.class, StairConnectedBlockRuleSet.CODEC);
      ConnectedBlockRuleSet.CODEC.register("Roof", RoofConnectedBlockRuleSet.class, RoofConnectedBlockRuleSet.CODEC);
      ConnectedBlockShapeConfig.CODEC.register("TagPattern", ConnectedBlockTagShape.class, ConnectedBlockTagShape.CODEC);
      ConnectedBlockShapeConfig.CODEC.register("Templated", ConnectedBlockTemplatedShape.class, ConnectedBlockTemplatedShape.CODEC);
      ConnectedBlockShapeConfig.CODEC.register("Block", ConnectedBlockBlockTypeShape.class, ConnectedBlockBlockTypeShape.CODEC);
      ConnectedBlockRule.CODEC.register("FaceTag", ConnectedBlockFaceTagRule.class, ConnectedBlockFaceTagRule.CODEC);
      ConnectedBlockRule.CODEC.register("Not", ConnectedBlockNotRule.class, ConnectedBlockNotRule.CODEC);
      ConnectedBlockRule.CODEC.register("And", ConnectedBlockAndRule.class, ConnectedBlockAndRule.CODEC);
      ConnectedBlockRule.CODEC.register("Or", ConnectedBlockOrRule.class, ConnectedBlockOrRule.CODEC);
      ConnectedBlockRule.CODEC.register("Shape", ConnectedBlockShapeRule.class, ConnectedBlockShapeRule.CODEC);
   }

   class="kw">private class="kw">static void onBlockTypesChanged(@Nonnull LoadedAssetsEvent<String, BlockType, BlockTypeAssetMap<String, BlockType>> var0) {
      for (BlockType var2 : var0.getLoadedAssets().values()) {
         ConnectedBlockRuleSet var3 = var2.getConnectedBlockRuleSet();
         if (var3 != null) {
            var3.updateCachedBlockTypes(var2, (BlockTypeAssetMap<String, BlockType>)var0.getAssetMap());
         }
      }
   }
}