1.0.0 • Published 7 months ago

@niobrix/solidjs-skinview3d v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

solidjs-skinview3d

pnpm

SolidJS wrapper component for SkinView3D, which allows you to easily integrate 3D Minecraft skin preview into your SolidJS application.

Quick Start

Installation:

npm i solidjs-skinview3d
# or
yarn add solidjs-skinview3d
# or
pnpm add solidjs-skinview3d

Usage:

import { SolidSkinView3D } from 'solidjs-skinview3d';

function App() {
  return (
    <div style={{ width: '300px', height: '400px' }}>
      <SolidSkinView3D
        skinUrl="skin.png"
        capeUrl="cape.png"
        width={300}
        height={400}
        autoRotate={true}
      />
    </div>
  );
}

Component Properties

PropertyTypeDefaultDescription
widthnumber300Component width in pixels
heightnumber400Component height in pixels
skinUrlstring-Minecraft skin URL
capeUrlstring-Minecraft cape URL
classNamestring-Additional CSS class for canvas
backgroundstring \| THREE.Color \| THREE.Texture-Background for rendering
zoomnumber-Camera zoom level
fovnumber70Camera field of view in degrees
autoRotatebooleanfalseEnable automatic model rotation
rotateSpeednumber0.005Model rotation speed
autoResizebooleanfalseAuto-resize when parent element changes size
showLoaderbooleantrueShow loading indicator
onReady(viewer: SkinViewer) => void-Callback after component initialization
onSkinLoaded() => void-Callback after skin is loaded
onSkinError(error: Error) => void-Callback when skin loading fails
earsboolean \| { textureType: 'standalone' \| 'skin', source: string }falseEnable ears for model
backEquipment'cape' \| 'elytra''cape'Type of back equipment (cape or elytra)

Reactivity Example

import { createSignal } from 'solid-js';
import { SolidSkinView3D } from 'solidjs-skinview3d';

function App() {
  const [skinUrl, setSkinUrl] = createSignal('URL_to_skin');
  const [capeUrl, setCapeUrl] = createSignal('URL_to_cape');
  const [isElytra, setIsElytra] = createSignal(false);

  return (
    <div>
      <SolidSkinView3D
        skinUrl={skinUrl()}
        capeUrl={capeUrl()}
        backEquipment={isElytra() ? 'elytra' : 'cape'}
        width={300}
        height={400}
      />

      <button onClick={() => setIsElytra(!isElytra())}>
        {isElytra() ? 'Show Cape' : 'Show Elytra'}
      </button>
    </div>
  );
}

Access to skinview3d API

The component provides access to the native skinview3d API through the onReady callback:

import { SolidSkinView3D } from 'solidjs-skinview3d';
import { SkinViewer, WalkingAnimation } from 'skinview3d';

function App() {
  const handleReady = (viewer: SkinViewer) => {
    // Access to native skinview3d API
    viewer.animation = new WalkingAnimation();
    viewer.animation.speed = 0.8;

    // Adjust lighting
    viewer.globalLight.intensity = 0.7;
    viewer.cameraLight.intensity = 0.3;
  };

  return (
    <SolidSkinView3D
      skinUrl="URL_to_skin"
      onReady={handleReady}
    />
  );
}

License

MIT