From cbef6ef41b9faef43c8b02bd7ee0f4ae9b53709b Mon Sep 17 00:00:00 2001 From: Misode Date: Tue, 14 Jun 2022 17:27:59 +0200 Subject: [PATCH] Better handling of pack.mcmeta in projects --- src/app/components/generator/FileCreation.tsx | 4 ++-- src/app/components/generator/ProjectPanel.tsx | 3 ++- src/app/contexts/Project.tsx | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/app/components/generator/FileCreation.tsx b/src/app/components/generator/FileCreation.tsx index d7348d4e..91273b54 100644 --- a/src/app/components/generator/FileCreation.tsx +++ b/src/app/components/generator/FileCreation.tsx @@ -15,7 +15,7 @@ interface Props { export function FileCreation({ model, id, method, onClose }: Props) { const { locale } = useLocale() const { projects, project, updateFile } = useProject() - const [fileId, setFileId] = useState('') + const [fileId, setFileId] = useState(id === 'pack_mcmeta' ? 'pack' : '') const doSave = () => { Analytics.saveProjectFile(id, projects.length, project.files.length, method as any) @@ -25,7 +25,7 @@ export function FileCreation({ model, id, method, onClose }: Props) { return

{locale('project.save_current_file')}

- +
} diff --git a/src/app/components/generator/ProjectPanel.tsx b/src/app/components/generator/ProjectPanel.tsx index a78f6e0c..37b93741 100644 --- a/src/app/components/generator/ProjectPanel.tsx +++ b/src/app/components/generator/ProjectPanel.tsx @@ -33,7 +33,7 @@ export function ProjectPanel({ onRename, onCreate, onDeleteProject }: Props) { }, []) const disectEntry = useCallback((entry: string) => { - if (treeViewMode === 'resources') { + if (treeViewMode === 'resources' && entry !== 'pack.mcmeta') { const [type, id] = entry.split('/') return { type: type.replaceAll('\u2215', '/'), @@ -46,6 +46,7 @@ export function ProjectPanel({ onRename, onCreate, onDeleteProject }: Props) { const entries = useMemo(() => project.files.flatMap(f => { const path = getFilePath(f) if (!path) return [] + if (f.type === 'pack_mcmeta') return 'pack.mcmeta' if (treeViewMode === 'resources') { return [`${f.type.replaceAll('/', '\u2215')}/${f.id.replaceAll('/', '\u2215')}`] } diff --git a/src/app/contexts/Project.tsx b/src/app/contexts/Project.tsx index 1d7d7692..a73ce37a 100644 --- a/src/app/contexts/Project.tsx +++ b/src/app/contexts/Project.tsx @@ -101,7 +101,7 @@ export function ProjectProvider({ children }: { children: ComponentChildren }) { if (!edits.id) { // remove updateProject({ files: project.files.filter(f => f.type !== type || f.id !== id) }) } else { - const newId = edits.id.includes(':') ? edits.id : `${project.namespace ?? 'minecraft'}:${edits.id}` + const newId = type === 'pack_mcmeta' ? 'pack' : edits.id.includes(':') ? edits.id : `${project.namespace ?? 'minecraft'}:${edits.id}` const exists = project.files.some(f => f.type === type && f.id === newId) if (!id) { // create if (exists) return false