Skip to content

Commit 3955a50

Browse files
committed
remove mineflayer-item-map-downloader from viewer
1 parent b3d932f commit 3955a50

File tree

2 files changed

+20
-18
lines changed

2 files changed

+20
-18
lines changed

prismarine-viewer/viewer/lib/entities.ts

+18-17
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@ import { getMesh } from './entity/EntityMesh'
2020
import { WalkingGeneralSwing } from './entity/animations'
2121
import { disposeObject } from './threeJsUtils'
2222
import { armorModels } from './entity/objModels'
23-
import { Viewer } from "./viewer";
24-
import { mapDownloader } from 'mineflayer-item-map-downloader/'
23+
import { Viewer } from './viewer'
2524
const { loadTexture } = globalThis.isElectron ? require('./utils.electron.js') : require('./utils')
2625

2726
export const TWEEN_DURATION = 120
@@ -214,6 +213,7 @@ export class Entities extends EventEmitter {
214213
clock = new THREE.Clock()
215214
rendering = true
216215
itemsTexture: THREE.Texture | null = null
216+
cachedMapsImages = {} as Record<string, string>
217217
getItemUv: undefined | ((idOrName: number | string) => {
218218
texture: THREE.Texture;
219219
u: number;
@@ -703,7 +703,7 @@ export class Entities extends EventEmitter {
703703
const mapNumber = item.nbtData?.value?.map?.value
704704
if (mapNumber) {
705705
// 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)
707707
e.children.find(c => c.name === 'item')?.removeFromParent()
708708
this.addMapModel(e, mapNumber, rotation)
709709
} else {
@@ -744,19 +744,21 @@ export class Entities extends EventEmitter {
744744
}
745745
}
746746

747-
updateMap(mapNumber, data) {
747+
updateMap (mapNumber, data) {
748748
let itemFrameMeshs = itemFrameMaps[mapNumber]
749749
if (!itemFrameMeshs) return
750750
itemFrameMeshs = itemFrameMeshs.filter(mesh => mesh.parent)
751751
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+
}
757759
}
758760

759-
addMapModel(entityMesh: THREE.Object3D, mapNumber: number, rotation: number) {
761+
addMapModel (entityMesh: THREE.Object3D, mapNumber: number, rotation: number) {
760762
const material = new THREE.MeshLambertMaterial({
761763
transparent: true,
762764
alphaTest: 0.1,
@@ -767,20 +769,20 @@ export class Entities extends EventEmitter {
767769
if (exitingMapMesh) {
768770
exitingMapMesh.material = material
769771
mapMesh = exitingMapMesh
770-
const existingMapNumber = parseInt(exitingMapMesh.name.split('_')[1])
772+
const existingMapNumber = Number(exitingMapMesh.name.split('_')[1])
771773
itemFrameMaps[existingMapNumber] = itemFrameMaps[existingMapNumber]?.filter(mesh => mesh !== exitingMapMesh)
772774
} else {
773775
mapMesh = new THREE.Mesh(new THREE.PlaneGeometry(1, 1), material)
774776

775777
mapMesh.rotation.set(0, Math.PI, 0)
776778
entityMesh.add(mapMesh)
777779
}
778-
let isInvisible = true;
780+
let isInvisible = true
779781
entityMesh.traverseVisible(c => {
780-
if (c.name == 'geometry_frame') {
782+
if (c.name === 'geometry_frame') {
781783
isInvisible = false
782784
}
783-
});
785+
})
784786
if (isInvisible) {
785787
mapMesh.position.set(0, 0, 0.499)
786788
} else {
@@ -789,8 +791,7 @@ export class Entities extends EventEmitter {
789791
mapMesh.rotateZ(rotation * Math.PI / 2)
790792
mapMesh.name = `map_${mapNumber}`
791793

792-
bot.loadPlugin(mapDownloader)
793-
const imageData = bot.mapDownloader.maps?.[mapNumber] as any as string
794+
const imageData = this.cachedMapsImages?.[mapNumber]
794795
if (imageData) {
795796
material.map = this.loadMap(imageData)
796797
} else {
@@ -803,7 +804,7 @@ export class Entities extends EventEmitter {
803804
itemFrameMaps[mapNumber].push(mapMesh)
804805
}
805806

806-
loadMap(data: any) {
807+
loadMap (data: any) {
807808
const texture = new THREE.TextureLoader().load(data)
808809
texture.magFilter = THREE.NearestFilter
809810
texture.minFilter = THREE.NearestFilter

src/react/HeldMapUi.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,10 @@ export default () => {
3434
updateHeldMap()
3535
})
3636

37-
bot.on('new_map', () => {
37+
bot.on('new_map', ({ id }) => {
3838
// total maps: Object.keys(bot.mapDownloader.maps).length
3939
updateHeldMap()
40+
viewer.entities.cachedMapsImages[id] = bot.mapDownloader.maps?.[id] as unknown as string
4041
})
4142
}, [])
4243

0 commit comments

Comments
 (0)