package com.hypixel.hytale.builtin.adventure.camera; import com.hypixel.hytale.assetstore.map.DefaultAssetMap; import com.hypixel.hytale.assetstore.map.IndexedAssetMap; import com.hypixel.hytale.builtin.adventure.camera.asset.cameraeffect.CameraShakeEffect; import com.hypixel.hytale.builtin.adventure.camera.asset.camerashake.CameraShake; import com.hypixel.hytale.builtin.adventure.camera.asset.camerashake.CameraShakePacketGenerator; import com.hypixel.hytale.builtin.adventure.camera.asset.viewbobbing.ViewBobbing; import com.hypixel.hytale.builtin.adventure.camera.asset.viewbobbing.ViewBobbingPacketGenerator; import com.hypixel.hytale.builtin.adventure.camera.command.CameraEffectCommand; import com.hypixel.hytale.builtin.adventure.camera.interaction.CameraShakeInteraction; import com.hypixel.hytale.builtin.adventure.camera.system.CameraEffectSystem; import com.hypixel.hytale.protocol.MovementType; import com.hypixel.hytale.server.core.asset.HytaleAssetStore; import com.hypixel.hytale.server.core.asset.type.camera.CameraEffect; import com.hypixel.hytale.server.core.modules.interaction.interaction.config.Interaction; import com.hypixel.hytale.server.core.plugin.JavaPlugin; import com.hypixel.hytale.server.core.plugin.JavaPluginInit; import com.hypixel.hytale.server.core.plugin.registry.AssetRegistry; import javax.annotation.Nonnull; public class CameraPlugin extends JavaPlugin { private static final String CODEC_CAMERA_SHAKE = "CameraShake"; public CameraPlugin(@Nonnull JavaPluginInit init) { super(init); } @Override protected void setup() { AssetRegistry assetRegistry = this.getAssetRegistry(); this.getCodecRegistry(CameraEffect.CODEC).register("CameraShake", CameraShakeEffect.class, CameraShakeEffect.CODEC); this.getCodecRegistry(Interaction.CODEC).register("CameraShake", CameraShakeInteraction.class, CameraShakeInteraction.CODEC); assetRegistry.register( ((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder( String.class, CameraShake.class, new IndexedAssetMap() ) .loadsBefore(CameraEffect.class)) .setCodec(CameraShake.CODEC)) .setPath("Camera/CameraShake")) .setKeyFunction(CameraShake::getId)) .setReplaceOnRemove(CameraShake::new)) .setPacketGenerator(new CameraShakePacketGenerator()) .build() ); assetRegistry.register( ((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder( MovementType.class, ViewBobbing.class, new DefaultAssetMap() ) .setCodec(ViewBobbing.CODEC)) .setPath("Camera/ViewBobbing")) .setKeyFunction(ViewBobbing::getId)) .setPacketGenerator(new ViewBobbingPacketGenerator()) .build() ); this.getCommandRegistry().registerCommand(new CameraEffectCommand()); this.getEntityStoreRegistry().registerSystem(new CameraEffectSystem()); } }