mirror of
				https://github.com/haselkern/Minecraft-ArmorStand.git
				synced 2025-11-04 05:14:06 +00:00 
			
		
		
		
	Add slot locking grid
This commit is contained in:
		
							parent
							
								
									50c9566df7
								
							
						
					
					
						commit
						4851d583bf
					
				
					 11 changed files with 66 additions and 9 deletions
				
			
		| 
						 | 
				
			
			@ -5,7 +5,7 @@ This project is currently being rewritten. This document should be changed to in
 | 
			
		|||
## TODO
 | 
			
		||||
The following things still have to be done.
 | 
			
		||||
- [X] Equipment
 | 
			
		||||
- [ ] Equipment locking
 | 
			
		||||
- [X] Equipment locking
 | 
			
		||||
  - [ ] Can we scrape the MC wiki for a searchable dropdown list? https://minecraft.fandom.com/api.php ?
 | 
			
		||||
    * Only items that are available in a given minecraft version should show up
 | 
			
		||||
  - [ ] Colors for leather pieces
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										
											BIN
										
									
								
								public/slot_chestplate.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/slot_chestplate.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 272 B  | 
							
								
								
									
										
											BIN
										
									
								
								public/slot_helmet.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/slot_helmet.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 236 B  | 
							
								
								
									
										
											BIN
										
									
								
								public/slot_leggings.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/slot_leggings.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 214 B  | 
							
								
								
									
										
											BIN
										
									
								
								public/slot_shield.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/slot_shield.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 473 B  | 
							
								
								
									
										
											BIN
										
									
								
								public/slot_shoes.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/slot_shoes.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 248 B  | 
							
								
								
									
										
											BIN
										
									
								
								public/slot_sword.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/slot_sword.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 291 B  | 
							
								
								
									
										48
									
								
								src/App.vue
									
										
									
									
									
								
							
							
						
						
									
										48
									
								
								src/App.vue
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -69,6 +69,48 @@
 | 
			
		|||
 | 
			
		||||
                <hr>
 | 
			
		||||
 | 
			
		||||
                <label><input v-model="armorstand.lockSlots" type="checkbox">Lock Slot Interaction</label>
 | 
			
		||||
                <table v-if="armorstand.lockSlots">
 | 
			
		||||
                    <tr>
 | 
			
		||||
                        <td></td>
 | 
			
		||||
                        <td><img src="slot_helmet.png" alt="Helmet" /></td>
 | 
			
		||||
                        <td><img src="slot_chestplate.png" alt="Chestplate" /></td>
 | 
			
		||||
                        <td><img src="slot_leggings.png" alt="Leggings" /></td>
 | 
			
		||||
                        <td><img src="slot_shoes.png" alt="Shoes" /></td>
 | 
			
		||||
                        <td><img src="slot_sword.png" alt="Right Hand" /></td>
 | 
			
		||||
                        <td><img src="slot_shield.png" alt="Left Hand" /></td>
 | 
			
		||||
                    </tr>
 | 
			
		||||
                    <tr>
 | 
			
		||||
                        <td>Remove</td>
 | 
			
		||||
                        <td><LockSlotCheckBox :armorstand="armorstand" :value="1 << 4"/></td>
 | 
			
		||||
                        <td><LockSlotCheckBox :armorstand="armorstand" :value="1 << 3"/></td>
 | 
			
		||||
                        <td><LockSlotCheckBox :armorstand="armorstand" :value="1 << 2"/></td>
 | 
			
		||||
                        <td><LockSlotCheckBox :armorstand="armorstand" :value="1 << 1"/></td>
 | 
			
		||||
                        <td><LockSlotCheckBox :armorstand="armorstand" :value="1 << 0"/></td>
 | 
			
		||||
                        <td><LockSlotCheckBox :armorstand="armorstand" :value="1 << 5"/></td>
 | 
			
		||||
                    </tr>
 | 
			
		||||
                    <tr>
 | 
			
		||||
                        <td>Replace</td>
 | 
			
		||||
                        <td><LockSlotCheckBox :armorstand="armorstand" :value="1 << (4 + 8)"/></td>
 | 
			
		||||
                        <td><LockSlotCheckBox :armorstand="armorstand" :value="1 << (3 + 8)"/></td>
 | 
			
		||||
                        <td><LockSlotCheckBox :armorstand="armorstand" :value="1 << (2 + 8)"/></td>
 | 
			
		||||
                        <td><LockSlotCheckBox :armorstand="armorstand" :value="1 << (1 + 8)"/></td>
 | 
			
		||||
                        <td><LockSlotCheckBox :armorstand="armorstand" :value="1 << (0 + 8)"/></td>
 | 
			
		||||
                        <td><LockSlotCheckBox :armorstand="armorstand" :value="1 << (5 + 8)"/></td>
 | 
			
		||||
                    </tr>
 | 
			
		||||
                    <tr>
 | 
			
		||||
                        <td>Place</td>
 | 
			
		||||
                        <td><LockSlotCheckBox :armorstand="armorstand" :value="1 << (4 + 16)"/></td>
 | 
			
		||||
                        <td><LockSlotCheckBox :armorstand="armorstand" :value="1 << (3 + 16)"/></td>
 | 
			
		||||
                        <td><LockSlotCheckBox :armorstand="armorstand" :value="1 << (2 + 16)"/></td>
 | 
			
		||||
                        <td><LockSlotCheckBox :armorstand="armorstand" :value="1 << (1 + 16)"/></td>
 | 
			
		||||
                        <td><LockSlotCheckBox :armorstand="armorstand" :value="1 << (0 + 16)"/></td>
 | 
			
		||||
                        <td><LockSlotCheckBox :armorstand="armorstand" :value="1 << (5 + 16)"/></td>
 | 
			
		||||
                    </tr>
 | 
			
		||||
                </table>
 | 
			
		||||
 | 
			
		||||
                <hr>
 | 
			
		||||
 | 
			
		||||
                <input v-model="armorstand.customName" :placeholder="t('customName')"/>
 | 
			
		||||
                <label><input v-model="armorstand.showCustomName" type="checkbox">{{t("cnShow")}}</label>
 | 
			
		||||
                <div v-if="armorstand.showCustomName">
 | 
			
		||||
| 
						 | 
				
			
			@ -111,7 +153,8 @@
 | 
			
		|||
<script>
 | 
			
		||||
import { useI18n } from "vue-i18n"
 | 
			
		||||
import Scene from "./Scene.vue"
 | 
			
		||||
import RotationSliderRow from "./RotationSliderRow.vue"
 | 
			
		||||
import RotationSliderRow from "./components/RotationSliderRow.vue"
 | 
			
		||||
import LockSlotCheckBox from "./components/LockSlotCheckBox.vue"
 | 
			
		||||
import { Armorstand } from "./armorstand.js"
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
| 
						 | 
				
			
			@ -127,6 +170,7 @@ export default {
 | 
			
		|||
        return {
 | 
			
		||||
            armorstand: new Armorstand(),
 | 
			
		||||
            mcVersion: "1.16",
 | 
			
		||||
            dings: "10",
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    computed: {
 | 
			
		||||
| 
						 | 
				
			
			@ -135,6 +179,6 @@ export default {
 | 
			
		|||
            return this.armorstand.getCode(this.mcVersion)
 | 
			
		||||
        },
 | 
			
		||||
    },
 | 
			
		||||
    components: { Scene, RotationSliderRow },
 | 
			
		||||
    components: { Scene, RotationSliderRow, LockSlotCheckBox },
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,6 @@
 | 
			
		|||
import {generateIntArray, generateUUID, isXYZZero, xyzToTextArray} from "./util.js"
 | 
			
		||||
 | 
			
		||||
// The Armorstand will hold all attributes for an armor stand.
 | 
			
		||||
// TODO Move this to a different file
 | 
			
		||||
export class Armorstand {
 | 
			
		||||
    constructor() {
 | 
			
		||||
        // Rotation values for the body parts
 | 
			
		||||
| 
						 | 
				
			
			@ -45,6 +44,9 @@ export class Armorstand {
 | 
			
		|||
        this.customNameObfuscated = false
 | 
			
		||||
        this.customNameStrikethrough = false
 | 
			
		||||
 | 
			
		||||
        // Slot interaction
 | 
			
		||||
        this.lockSlots = false
 | 
			
		||||
        this.lockFlags = 0
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    getScale() {
 | 
			
		||||
| 
						 | 
				
			
			@ -179,10 +181,10 @@ export class Armorstand {
 | 
			
		|||
            tags.push("CustomNameVisible:1b")
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // DisabledSlots // TODO
 | 
			
		||||
        // if(useDisabledSlots){
 | 
			
		||||
        //     tags.push("DisabledSlots:"+calculateDisabledSlotsFlag())
 | 
			
		||||
        // }
 | 
			
		||||
        // DisabledSlots
 | 
			
		||||
        if(this.lockSlots){
 | 
			
		||||
            tags.push("DisabledSlots:"+this.lockFlags)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Now the pose
 | 
			
		||||
        let pose = []
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										11
									
								
								src/components/LockSlotCheckBox.vue
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								src/components/LockSlotCheckBox.vue
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,11 @@
 | 
			
		|||
<template>
 | 
			
		||||
    <input type="checkbox" @click="armorstand.lockFlags ^= value" :checked="Boolean(armorstand.lockFlags & value)" />
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
// This checkbox is a helper for toggling the binary flag "value" in "armorstand.lockFlags"
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
    props: ["armorstand", "value"],
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue