// 
// Decompiled by Procyon v0.6.0
// 

package com.hypixel.hytale.builtin.path.commands;

import com.hypixel.hytale.server.core.asset.type.model.config.Model;
import com.hypixel.hytale.math.vector.Vector3f;
import com.hypixel.hytale.math.vector.Vector3d;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.entity.nameplate.Nameplate;
import com.hypixel.hytale.server.core.modules.entity.component.DisplayNameComponent;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.modules.entity.component.ModelComponent;
import com.hypixel.hytale.builtin.path.PathPlugin;
import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
import com.hypixel.hytale.component.ComponentAccessor;
import com.hypixel.hytale.builtin.path.entities.PatrolPathMarkerEntity;
import java.util.UUID;
import com.hypixel.hytale.component.Ref;
import javax.annotation.Nonnull;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import com.hypixel.hytale.component.Store;

public final class PrefabPathHelper
{
    private PrefabPathHelper() {
    }
    
    public static void addMarker(@Nonnull final Store<EntityStore> store, @Nonnull final Ref<EntityStore> playerRef, @Nonnull final UUID pathId, @Nonnull final String pathName, final double pauseTime, final float obsvAngleDegrees, final short targetIndex, final int worldgenId) {
        final World world = store.getExternalData().getWorld();
        final PatrolPathMarkerEntity waypoint = new PatrolPathMarkerEntity(world);
        waypoint.initialise(pathId, pathName, targetIndex, pauseTime, obsvAngleDegrees * 0.017453292f, worldgenId, store);
        final TransformComponent transformComponent = store.getComponent(playerRef, TransformComponent.getComponentType());
        assert transformComponent != null;
        final Vector3d playerPosition = transformComponent.getPosition().clone();
        final Vector3f playerBodyRotation = transformComponent.getRotation().clone();
        final PatrolPathMarkerEntity waypointEntity = world.spawnEntity(waypoint, playerPosition, playerBodyRotation);
        if (waypointEntity == null) {
            return;
        }
        final Ref<EntityStore> waypointRef = waypointEntity.getReference();
        if (waypointRef == null || !waypointRef.isValid()) {
            return;
        }
        final TransformComponent waypointTransformComponent = store.getComponent(waypointRef, TransformComponent.getComponentType());
        final Vector3f waypointRotation = waypointTransformComponent.getRotation();
        waypointRotation.assign(playerBodyRotation);
        final Model model = PathPlugin.get().getPathMarkerModel();
        store.putComponent(waypointRef, ModelComponent.getComponentType(), new ModelComponent(model));
        final String displayName = PatrolPathMarkerEntity.generateDisplayName(worldgenId, waypointEntity);
        final Message displayNameMessage = Message.raw(displayName);
        store.putComponent(waypointRef, DisplayNameComponent.getComponentType(), new DisplayNameComponent(displayNameMessage));
        store.putComponent(waypointRef, Nameplate.getComponentType(), new Nameplate(displayName));
    }
}
