package com.hypixel.hytale.builtin.adventure.camera.asset.viewbobbing;
import com.hypixel.hytale.assetstore.AssetMap;
import com.hypixel.hytale.protocol.CachedPacket;
import com.hypixel.hytale.protocol.MovementType;
import com.hypixel.hytale.protocol.Packet;
import com.hypixel.hytale.protocol.UpdateType;
import com.hypixel.hytale.protocol.packets.assets.UpdateViewBobbing;
import com.hypixel.hytale.server.core.asset.packet.SimpleAssetPacketGenerator;
import java.util.EnumMap;
import java.util.Map;
import java.util.Set;
import javax.annotation.Nonnull;
public class ViewBobbingPacketGenerator extends SimpleAssetPacketGenerator<MovementType, ViewBobbing, AssetMap<MovementType, ViewBobbing>> {
public ViewBobbingPacketGenerator() {
}
@Nonnull
public Packet generateInitPacket(AssetMap<MovementType, ViewBobbing> assetMap, @Nonnull Map<MovementType, ViewBobbing> assets) {
return toCachedPacket(UpdateType.Init, assets);
}
@Nonnull
protected Packet generateUpdatePacket(AssetMap<MovementType, ViewBobbing> assetMap, @Nonnull Map<MovementType, ViewBobbing> loadedAssets) {
return toCachedPacket(UpdateType.AddOrUpdate, loadedAssets);
}
@Nonnull
protected Packet generateRemovePacket(AssetMap<MovementType, ViewBobbing> assetMap, @Nonnull Set<MovementType> removed) {
UpdateViewBobbing packet = new UpdateViewBobbing();
packet.type = UpdateType.Remove;
packet.profiles = new EnumMap(MovementType.class);
for(MovementType type : removed) {
packet.profiles.put(type, (Object)null);
}
return CachedPacket.cache(packet);
}
@Nonnull
protected static Packet toCachedPacket(UpdateType type, @Nonnull Map<MovementType, ViewBobbing> assets) {
UpdateViewBobbing packet = new UpdateViewBobbing();
packet.type = type;
packet.profiles = new EnumMap(MovementType.class);
for(Map.Entry<MovementType, ViewBobbing> entry : assets.entrySet()) {
packet.profiles.put((MovementType)entry.getKey(), ((ViewBobbing)entry.getValue()).toPacket());
}
return CachedPacket.cache(packet);
}
}