@@ -20,8 +20,7 @@ import { getMesh } from './entity/EntityMesh'
20
20
import { WalkingGeneralSwing } from './entity/animations'
21
21
import { disposeObject } from './threeJsUtils'
22
22
import { armorModels } from './entity/objModels'
23
- import { Viewer } from "./viewer" ;
24
- import { mapDownloader } from 'mineflayer-item-map-downloader/'
23
+ import { Viewer } from './viewer'
25
24
const { loadTexture } = globalThis . isElectron ? require ( './utils.electron.js' ) : require ( './utils' )
26
25
27
26
export const TWEEN_DURATION = 120
@@ -214,6 +213,7 @@ export class Entities extends EventEmitter {
214
213
clock = new THREE . Clock ( )
215
214
rendering = true
216
215
itemsTexture : THREE . Texture | null = null
216
+ cachedMapsImages = { } as Record < string , string >
217
217
getItemUv : undefined | ( ( idOrName : number | string ) => {
218
218
texture : THREE . Texture ;
219
219
u : number ;
@@ -703,7 +703,7 @@ export class Entities extends EventEmitter {
703
703
const mapNumber = item . nbtData ?. value ?. map ?. value
704
704
if ( mapNumber ) {
705
705
// TODO: Use proper larger item frame model when a map exists
706
- mesh . scale . set ( 16 / 12 , 16 / 12 , 1 )
706
+ mesh . scale . set ( 16 / 12 , 16 / 12 , 1 )
707
707
e . children . find ( c => c . name === 'item' ) ?. removeFromParent ( )
708
708
this . addMapModel ( e , mapNumber , rotation )
709
709
} else {
@@ -744,19 +744,21 @@ export class Entities extends EventEmitter {
744
744
}
745
745
}
746
746
747
- updateMap ( mapNumber , data ) {
747
+ updateMap ( mapNumber , data ) {
748
748
let itemFrameMeshs = itemFrameMaps [ mapNumber ]
749
749
if ( ! itemFrameMeshs ) return
750
750
itemFrameMeshs = itemFrameMeshs . filter ( mesh => mesh . parent )
751
751
itemFrameMaps [ mapNumber ] = itemFrameMeshs
752
- itemFrameMeshs ?. forEach ( mesh => {
753
- mesh . material . map = this . loadMap ( data )
754
- mesh . material . needsUpdate = true
755
- mesh . visible = true
756
- } )
752
+ if ( itemFrameMeshs ) {
753
+ for ( const mesh of itemFrameMeshs ) {
754
+ mesh . material . map = this . loadMap ( data )
755
+ mesh . material . needsUpdate = true
756
+ mesh . visible = true
757
+ }
758
+ }
757
759
}
758
760
759
- addMapModel ( entityMesh : THREE . Object3D , mapNumber : number , rotation : number ) {
761
+ addMapModel ( entityMesh : THREE . Object3D , mapNumber : number , rotation : number ) {
760
762
const material = new THREE . MeshLambertMaterial ( {
761
763
transparent : true ,
762
764
alphaTest : 0.1 ,
@@ -767,20 +769,20 @@ export class Entities extends EventEmitter {
767
769
if ( exitingMapMesh ) {
768
770
exitingMapMesh . material = material
769
771
mapMesh = exitingMapMesh
770
- const existingMapNumber = parseInt ( exitingMapMesh . name . split ( '_' ) [ 1 ] )
772
+ const existingMapNumber = Number ( exitingMapMesh . name . split ( '_' ) [ 1 ] )
771
773
itemFrameMaps [ existingMapNumber ] = itemFrameMaps [ existingMapNumber ] ?. filter ( mesh => mesh !== exitingMapMesh )
772
774
} else {
773
775
mapMesh = new THREE . Mesh ( new THREE . PlaneGeometry ( 1 , 1 ) , material )
774
776
775
777
mapMesh . rotation . set ( 0 , Math . PI , 0 )
776
778
entityMesh . add ( mapMesh )
777
779
}
778
- let isInvisible = true ;
780
+ let isInvisible = true
779
781
entityMesh . traverseVisible ( c => {
780
- if ( c . name == 'geometry_frame' ) {
782
+ if ( c . name === 'geometry_frame' ) {
781
783
isInvisible = false
782
784
}
783
- } ) ;
785
+ } )
784
786
if ( isInvisible ) {
785
787
mapMesh . position . set ( 0 , 0 , 0.499 )
786
788
} else {
@@ -789,8 +791,7 @@ export class Entities extends EventEmitter {
789
791
mapMesh . rotateZ ( rotation * Math . PI / 2 )
790
792
mapMesh . name = `map_${ mapNumber } `
791
793
792
- bot . loadPlugin ( mapDownloader )
793
- const imageData = bot . mapDownloader . maps ?. [ mapNumber ] as any as string
794
+ const imageData = this . cachedMapsImages ?. [ mapNumber ]
794
795
if ( imageData ) {
795
796
material . map = this . loadMap ( imageData )
796
797
} else {
@@ -803,7 +804,7 @@ export class Entities extends EventEmitter {
803
804
itemFrameMaps [ mapNumber ] . push ( mapMesh )
804
805
}
805
806
806
- loadMap ( data : any ) {
807
+ loadMap ( data : any ) {
807
808
const texture = new THREE . TextureLoader ( ) . load ( data )
808
809
texture . magFilter = THREE . NearestFilter
809
810
texture . minFilter = THREE . NearestFilter
0 commit comments