Move datapack objects to the format package

This commit is contained in:
Andrew Miner
2025-10-16 15:41:24 -06:00
parent 2da1a38c69
commit 87b6362d12
36 changed files with 88 additions and 88 deletions
+49
View File
@@ -0,0 +1,49 @@
from collections.abc import Iterable
from mcpacker.format.datapack.moddata import ModData
# Class ############################################################################################
class DataPack:
"""
A collection of data used to configure a Minecraft instance.
see: https://minecraft.wiki/w/Data_pack
"""
def __init__(self, name:str, mods:Iterable[ModData]|None=None):
self.name = name
self._mods:dict[str,ModData] = {}
self._defaultMod:ModData|None = None
for mod in (mods or []):
self.add(mod)
def add(self, mod:ModData) -> "DataPack":
if not self._defaultMod:
self._defaultMod = mod
self._mods[mod.name] = mod
return self
def get(self, name:str) -> ModData:
result = self._mods.get(name, None)
if not result:
result = self._mods[name] = ModData(name)
return result
@property
def defaultMod(self) -> ModData|None:
return self._defaultMod
@defaultMod.setter
def defaultMod(self, mod:ModData):
if mod:
existingModData = self.get(mod.name)
if not existingModData:
self.add(mod)
elif existingModData != mod:
raise Exception(f"Datapack already has a mod named {mod.name}")
self._defaultMod = mod
@@ -1,4 +1,4 @@
import mcpacker.model.datapack
import mcpacker.format.datapack
# Tests ############################################################################################
@@ -1,4 +1,4 @@
from mcpacker.model.datapack.blockstate import BlockState
from mcpacker.format.datapack.blockstate import BlockState
from pytest import fixture
@@ -1,6 +1,6 @@
from mcpacker.json import JsonBlob
from mcpacker.model.datapack.blockstate import BlockState
from mcpacker.model.datapack.blockstateprovider import BlockStateProvider
from mcpacker.format.datapack.blockstate import BlockState
from mcpacker.format.datapack.blockstateprovider import BlockStateProvider
from typing import Any
@@ -1,5 +1,5 @@
from mcpacker.model.datapack.blockstate import BlockState
from mcpacker.model.datapack.blockstateprovider.simplestateprovider import SimpleStateProvider
from mcpacker.format.datapack.blockstate import BlockState
from mcpacker.format.datapack.blockstateprovider.simplestateprovider import SimpleStateProvider
from pytest import fixture
@@ -1,9 +1,9 @@
from mcpacker.model.datapack.configuredfeature import ConfiguredFeature
from mcpacker.format.datapack.configuredfeature import ConfiguredFeature
from typing import Any
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from mcpacker.model.datapack.placedfeature import PlacedFeature
from mcpacker.format.datapack.placedfeature import PlacedFeature
# Class ############################################################################################
@@ -1,6 +1,6 @@
from mcpacker.model.datapack.blockstate import BlockState
from mcpacker.model.datapack.blockstateprovider.simplestateprovider import SimpleStateProvider
from mcpacker.model.datapack.configuredfeature.simpleblock import SimpleBlock
from mcpacker.format.datapack.blockstate import BlockState
from mcpacker.format.datapack.blockstateprovider.simplestateprovider import SimpleStateProvider
from mcpacker.format.datapack.configuredfeature.simpleblock import SimpleBlock
from pytest import fixture
@@ -1,6 +1,6 @@
from mcpacker.json import JsonBlob
from mcpacker.model.datapack.blockstateprovider import BlockStateProvider
from mcpacker.model.datapack.configuredfeature import ConfiguredFeature
from mcpacker.format.datapack.blockstateprovider import BlockStateProvider
from mcpacker.format.datapack.configuredfeature import ConfiguredFeature
from typing import Any
@@ -1,6 +1,6 @@
from mcpacker.model.datapack.blockstate import BlockState
from mcpacker.model.datapack.blockstateprovider.simplestateprovider import SimpleStateProvider
from mcpacker.model.datapack.configuredfeature.simpleblock import SimpleBlock
from mcpacker.format.datapack.blockstate import BlockState
from mcpacker.format.datapack.blockstateprovider.simplestateprovider import SimpleStateProvider
from mcpacker.format.datapack.configuredfeature.simpleblock import SimpleBlock
from pytest import fixture
@@ -1,4 +1,4 @@
from mcpacker.model.datapack.heightmaptype import HeightMapType
from mcpacker.format.datapack.heightmaptype import HeightMapType
# Tests ############################################################################################
@@ -1,5 +1,5 @@
from mcpacker.model.datapack.configuredfeature import ConfiguredFeature
from mcpacker.model.datapack.placedfeature import PlacedFeature
from mcpacker.format.datapack.configuredfeature import ConfiguredFeature
from mcpacker.format.datapack.placedfeature import PlacedFeature
from typing import Any
@@ -1,4 +1,4 @@
import mcpacker.model.datapack.moddata
import mcpacker.format.datapack.moddata
# Tests ############################################################################################
@@ -1,4 +1,4 @@
from mcpacker.model.datapack.placement import Placement
from mcpacker.format.datapack.placement import Placement
# Class ############################################################################################
@@ -1,4 +1,4 @@
from mcpacker.model.datapack.placedfeature import PlacedFeature
from mcpacker.format.datapack.placedfeature import PlacedFeature
# Tests ############################################################################################
@@ -1,4 +1,4 @@
from mcpacker.model.datapack.placement import Placement
from mcpacker.format.datapack.placement import Placement
from typing import Any
# Class ############################################################################################
@@ -1,4 +1,4 @@
from mcpacker.model.datapack.placement.biome import Biome
from mcpacker.format.datapack.placement.biome import Biome
from pytest import fixture
@@ -1,5 +1,5 @@
from mcpacker.model.datapack.heightmaptype import HeightMapType
from mcpacker.model.datapack.placement import Placement
from mcpacker.format.datapack.heightmaptype import HeightMapType
from mcpacker.format.datapack.placement import Placement
from typing import Any
# Class ############################################################################################
@@ -1,5 +1,5 @@
from mcpacker.model.datapack.heightmaptype import WORLD_SURFACE
from mcpacker.model.datapack.placement.heightmap import HeightMap
from mcpacker.format.datapack.heightmaptype import WORLD_SURFACE
from mcpacker.format.datapack.placement.heightmap import HeightMap
from pytest import fixture
@@ -1,4 +1,4 @@
from mcpacker.model.datapack.placement import Placement
from mcpacker.format.datapack.placement import Placement
from typing import Any
# Class ############################################################################################
@@ -1,4 +1,4 @@
from mcpacker.model.datapack.placement.insquare import InSquare
from mcpacker.format.datapack.placement.insquare import InSquare
from pytest import fixture
@@ -1,4 +1,4 @@
from mcpacker.model.datapack.placement import Placement
from mcpacker.format.datapack.placement import Placement
from typing import Any
# Class ############################################################################################
@@ -1,4 +1,4 @@
from mcpacker.model.datapack.placement.rarityfilter import RarityFilter
from mcpacker.format.datapack.placement.rarityfilter import RarityFilter
from pytest import fixture
@@ -1,6 +1,6 @@
from collections.abc import Iterable
from collections.abc import Mapping
from mcpacker.model.datapack.recipe import Recipe
from mcpacker.format.datapack.recipe import Recipe
from mcpacker.model.core.resourceid import ResourceId
@@ -1,5 +1,5 @@
from pytest import fixture
from mcpacker.model.datapack.recipe.shapedrecipe import ShapedRecipe
from mcpacker.format.datapack.recipe.shapedrecipe import ShapedRecipe
# Fixtures #########################################################################################
@@ -1,7 +1,7 @@
from collections.abc import Iterable
from collections.abc import Mapping
from mcpacker.model.core.resourceid import ResourceId
from mcpacker.model.datapack.recipe import Recipe
from mcpacker.format.datapack.recipe import Recipe
# Class ############################################################################################
@@ -1,5 +1,5 @@
from pytest import fixture
from mcpacker.model.datapack.recipe.shapelessrecipe import ShapelessRecipe
from mcpacker.format.datapack.recipe.shapelessrecipe import ShapelessRecipe
# Fixtures #########################################################################################
+1 -1
View File
@@ -3,7 +3,7 @@ from mcpacker.model.resourcepack.variant import Variant
from mcpacker.model.resourcepack.model import Model
from mcpacker.model.modpack import ModPack
from mcpacker.model.core.resourceid import ResourceId
from mcpacker.model.datapack.recipe.shapedrecipe import ShapedRecipe
from mcpacker.format.datapack.recipe.shapedrecipe import ShapedRecipe
# Class ############################################################################################
-49
View File
@@ -1,49 +0,0 @@
from collections.abc import Iterable
from mcpacker.model.datapack.moddata import ModData
# Class ############################################################################################
class DataPack:
"""
A collection of data used to configure a Minecraft instance.
see: https://minecraft.wiki/w/Data_pack
"""
def __init__(self, name:str, mods:Iterable[ModData]|None=None):
self.name = name
self._mods:dict[str,ModData] = {}
self._defaultMod:ModData|None = None
for mod in (mods or []):
self.add(mod)
def add(self, mod:ModData) -> "DataPack":
if not self._defaultMod:
self._defaultMod = mod
self._mods[mod.name] = mod
return self
def get(self, name:str) -> ModData:
result = self._mods.get(name, None)
if not result:
result = self._mods[name] = ModData(name)
return result
@property
def defaultMod(self) -> ModData|None:
return self._defaultMod
@defaultMod.setter
def defaultMod(self, mod:ModData):
if mod:
existingModData = self.get(mod.name)
if not existingModData:
self.add(mod)
elif existingModData != mod:
raise Exception(f"Datapack already has a mod named {mod.name}")
self._defaultMod = mod
+1 -1
View File
@@ -1,6 +1,6 @@
from collections.abc import Iterable
from mcpacker.model.core.world import World
from mcpacker.model.datapack import DataPack
from mcpacker.format.datapack import DataPack
from mcpacker.model.mod import Mod
from mcpacker.model.resourcepack import ResourcePack
from typing import Callable
@@ -1,5 +1,5 @@
from mcpacker.model.modpack import ModPack
from mcpacker.model.datapack import DataPack
from mcpacker.format.datapack import DataPack
# Functions ########################################################################################