UNPKG

@minecraft/creator-tools

Version:

Minecraft Creator Tools command line and libraries.

1 lines 4.04 kB
"use strict";(self.webpackChunkmctools_app=self.webpackChunkmctools_app||[]).push([[867],{78867:(e,t,s)=>{s.d(t,{default:()=>l});var i=s(74848),n=s(96540),a=s(90904),r=s(76033),o=s(14466),d=s(74239);class h extends n.Component{_entityIds=[];constructor(e){super(e),this.state={isLoaded:!1,currentMobIndex:0,currentEntityTypeId:""},this._handleNextMob=this._handleNextMob.bind(this),this._handlePrevMob=this._handlePrevMob.bind(this),this._handleMobSelect=this._handleMobSelect.bind(this)}async componentDidMount(){await this._loadMobList()}_getMobFromUrl(){return new URLSearchParams(window.location.search).get("mob")||void 0}_isHeadlessMode(){return"true"===new URLSearchParams(window.location.search).get("headless")}async _loadMobList(){try{this._entityIds=await r.A.getVanillaEntityTypeIds(),0===this._entityIds.length&&(this._entityIds=["pig","cow","sheep","chicken","zombie","skeleton","creeper","spider","enderman","villager","wolf","cat","horse","rabbit","bat","squid","bee","fox","panda","parrot"]);const e=this._getMobFromUrl()||this.props.mobId;let t=0;if(e){const s=this._entityIds.findIndex(t=>t===e);s>=0&&(t=s)}else{const e=["pig","cow","sheep","chicken","zombie"];for(const s of e){const e=this._entityIds.findIndex(e=>e===s);if(e>=0){t=e;break}}}const s=this._entityIds[t]||"";this.setState({isLoaded:!0,currentMobIndex:t,currentEntityTypeId:s?`minecraft:${s}`:""})}catch(e){o.Ay.verbose("Failed to load mob list: "+e),this._entityIds=["pig","cow","sheep","chicken","zombie","skeleton"],this._entityIds.sort(),this.setState({isLoaded:!0,currentMobIndex:0,currentEntityTypeId:"minecraft:pig",errorMessage:`Using fallback mob list: ${e}`})}}_handleNextMob(){const{currentMobIndex:e}=this.state;if(e<this._entityIds.length-1){const t=e+1,s=this._entityIds[t];this.setState({currentMobIndex:t,currentEntityTypeId:`minecraft:${s}`,errorMessage:void 0})}}_handlePrevMob(){const{currentMobIndex:e}=this.state;if(e>0){const t=e-1,s=this._entityIds[t];this.setState({currentMobIndex:t,currentEntityTypeId:`minecraft:${s}`,errorMessage:void 0})}}_handleMobSelect(e){const t=parseInt(e.target.value,10),s=this._entityIds[t];this.setState({currentMobIndex:t,currentEntityTypeId:`minecraft:${s}`,errorMessage:void 0})}_getMobDisplayName(e){return e?e.split("_").filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "):""}render(){const{heightOffset:e}=this.props,{isLoaded:t,currentMobIndex:s,currentEntityTypeId:n,errorMessage:r}=this.state;return this._isHeadlessMode()?(0,i.jsx)("div",{className:"mv-container mv-headless",style:{height:"100vh",width:"100vw"},children:n&&(0,i.jsx)(a.default,{heightOffset:0,entityTypeId:n,readOnly:!0})}):(0,i.jsxs)("div",{className:"mv-container",style:{height:`calc(100vh - ${e}px)`},children:[(0,i.jsxs)("div",{className:"mv-toolbar",children:[(0,i.jsx)("button",{className:"mv-button",onClick:this._handlePrevMob,disabled:s<=0,children:this.props.intl.formatMessage({id:"viewer.prev"})}),(0,i.jsx)("select",{className:"mv-select",value:s,onChange:this._handleMobSelect,disabled:!t,"aria-label":"Select mob",children:this._entityIds.map((e,t)=>(0,i.jsx)("option",{value:t,children:e},e))}),(0,i.jsx)("button",{className:"mv-button",onClick:this._handleNextMob,disabled:s>=this._entityIds.length-1,children:this.props.intl.formatMessage({id:"viewer.next"})}),(0,i.jsx)("span",{className:"mv-info",children:this.props.intl.formatMessage({id:"viewer.mob.info"},{current:s+1,total:this._entityIds.length})})]}),(0,i.jsxs)("div",{className:"mv-mob-info",children:[(0,i.jsx)("h2",{children:this._getMobDisplayName(this._entityIds[s])||"Loading..."}),(0,i.jsx)("div",{className:"mv-mob-details",children:(0,i.jsx)("span",{children:this.props.intl.formatMessage({id:"viewer.mob.type_id"},{id:n})})})]}),r&&(0,i.jsx)("div",{className:"mv-error",children:r}),n&&(0,i.jsx)(a.default,{heightOffset:e+120,entityTypeId:n,readOnly:!0}),(0,i.jsx)("div",{className:"mv-footer",children:(0,i.jsx)("p",{children:this.props.intl.formatMessage({id:"viewer.rotate_hint"})})})]})}}const l=(0,d.g)(h)}}]);