const CURRENT_SPEED = 'arrzenhanced.speed';
const MAX_SPEED = 'arrzenhanced.maxSpeed';
const SPEED_COLOR = 'arrzenhanced.speedColor';
const SPEED_EXP = 'arrzenhanced.speedExp';
const TACHYON_BOOST = 'arrzenhanced.tachyonBoost';
const VELOCITY_BOOST = 'arrzenhanced.velocityBoost';
const OLD_SPEED_COLOR = 'arrzenhanced.oldSpeedColor';

const WARPWAVE_COLOR = 'arrzenhanced.warpwave.color';
const WARPWAVE_OLD_COLOR = 'arrzenhanced.warpwave.color.old';
const WARPWAVE_STRENGTH = 'arrzenhanced.warpwave.strength';

const BREACH_X = 'arrzenhanced.warpwave.x';
const BREACH_Y = 'arrzenhanced.warpwave.y';
const BREACH_Z = 'arrzenhanced.warpwave.z';

const BREACH_TIMER = 'arrzenhanced.warpwave.lifetime';
const BREACH_IDLE_FRAME = 'arrzenhanced.warpwave.idle_frame';
const BREACH_OPEN_FRAME = 'arrzenhanced.warpwave.open_frame';

// Firstly, register the property in the entity
PalladiumEvents.registerPropertiesClientSided((event) => {
    // Only register for players
    if (event.getEntityType() === "minecraft:player") {
        // Arguments: Key of the property, type of the property, default/starting value
        event.registerProperty(CURRENT_SPEED, 'integer', 0);
        event.registerProperty(MAX_SPEED, 'integer', 0);
        event.registerProperty(SPEED_COLOR, 'integer', 0);
        event.registerProperty(SPEED_EXP, 'integer', 0);
        event.registerProperty(TACHYON_BOOST, 'integer', 0);
        event.registerProperty(VELOCITY_BOOST, 'integer', 0);
        event.registerProperty(OLD_SPEED_COLOR, 'integer', 0);

        event.registerProperty(WARPWAVE_COLOR, 'integer', 0);
        event.registerProperty(WARPWAVE_OLD_COLOR, 'integer', 0);
        event.registerProperty(WARPWAVE_STRENGTH, 'integer', 1);
        event.registerProperty(BREACH_X, 'integer', 0);
        event.registerProperty(BREACH_Y, 'integer', 0);
        event.registerProperty(BREACH_Z, 'integer', 0);
    }
    if (event.getEntityType() === "minecraft:armor_stand") {
        event.registerProperty(WARPWAVE_COLOR, 'integer', 0);
        event.registerProperty(BREACH_TIMER, 'integer', 0);
        event.registerProperty(BREACH_IDLE_FRAME, 'integer', 0);
        event.registerProperty(BREACH_OPEN_FRAME, 'integer', 0);
    }
});