Move datapack objects to the format package
This commit is contained in:
@@ -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
-1
@@ -1,4 +1,4 @@
|
|||||||
import mcpacker.model.datapack
|
import mcpacker.format.datapack
|
||||||
|
|
||||||
|
|
||||||
# Tests ############################################################################################
|
# Tests ############################################################################################
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
from mcpacker.model.datapack.blockstate import BlockState
|
from mcpacker.format.datapack.blockstate import BlockState
|
||||||
from pytest import fixture
|
from pytest import fixture
|
||||||
|
|
||||||
|
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
from mcpacker.json import JsonBlob
|
from mcpacker.json import JsonBlob
|
||||||
from mcpacker.model.datapack.blockstate import BlockState
|
from mcpacker.format.datapack.blockstate import BlockState
|
||||||
from mcpacker.model.datapack.blockstateprovider import BlockStateProvider
|
from mcpacker.format.datapack.blockstateprovider import BlockStateProvider
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
|
|
||||||
+2
-2
@@ -1,5 +1,5 @@
|
|||||||
from mcpacker.model.datapack.blockstate import BlockState
|
from mcpacker.format.datapack.blockstate import BlockState
|
||||||
from mcpacker.model.datapack.blockstateprovider.simplestateprovider import SimpleStateProvider
|
from mcpacker.format.datapack.blockstateprovider.simplestateprovider import SimpleStateProvider
|
||||||
from pytest import fixture
|
from pytest import fixture
|
||||||
|
|
||||||
|
|
||||||
+2
-2
@@ -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 Any
|
||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from mcpacker.model.datapack.placedfeature import PlacedFeature
|
from mcpacker.format.datapack.placedfeature import PlacedFeature
|
||||||
|
|
||||||
|
|
||||||
# Class ############################################################################################
|
# Class ############################################################################################
|
||||||
+3
-3
@@ -1,6 +1,6 @@
|
|||||||
from mcpacker.model.datapack.blockstate import BlockState
|
from mcpacker.format.datapack.blockstate import BlockState
|
||||||
from mcpacker.model.datapack.blockstateprovider.simplestateprovider import SimpleStateProvider
|
from mcpacker.format.datapack.blockstateprovider.simplestateprovider import SimpleStateProvider
|
||||||
from mcpacker.model.datapack.configuredfeature.simpleblock import SimpleBlock
|
from mcpacker.format.datapack.configuredfeature.simpleblock import SimpleBlock
|
||||||
from pytest import fixture
|
from pytest import fixture
|
||||||
|
|
||||||
|
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
from mcpacker.json import JsonBlob
|
from mcpacker.json import JsonBlob
|
||||||
from mcpacker.model.datapack.blockstateprovider import BlockStateProvider
|
from mcpacker.format.datapack.blockstateprovider import BlockStateProvider
|
||||||
from mcpacker.model.datapack.configuredfeature import ConfiguredFeature
|
from mcpacker.format.datapack.configuredfeature import ConfiguredFeature
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
|
|
||||||
+3
-3
@@ -1,6 +1,6 @@
|
|||||||
from mcpacker.model.datapack.blockstate import BlockState
|
from mcpacker.format.datapack.blockstate import BlockState
|
||||||
from mcpacker.model.datapack.blockstateprovider.simplestateprovider import SimpleStateProvider
|
from mcpacker.format.datapack.blockstateprovider.simplestateprovider import SimpleStateProvider
|
||||||
from mcpacker.model.datapack.configuredfeature.simpleblock import SimpleBlock
|
from mcpacker.format.datapack.configuredfeature.simpleblock import SimpleBlock
|
||||||
from pytest import fixture
|
from pytest import fixture
|
||||||
|
|
||||||
|
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
from mcpacker.model.datapack.heightmaptype import HeightMapType
|
from mcpacker.format.datapack.heightmaptype import HeightMapType
|
||||||
|
|
||||||
|
|
||||||
# Tests ############################################################################################
|
# Tests ############################################################################################
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
from mcpacker.model.datapack.configuredfeature import ConfiguredFeature
|
from mcpacker.format.datapack.configuredfeature import ConfiguredFeature
|
||||||
from mcpacker.model.datapack.placedfeature import PlacedFeature
|
from mcpacker.format.datapack.placedfeature import PlacedFeature
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import mcpacker.model.datapack.moddata
|
import mcpacker.format.datapack.moddata
|
||||||
|
|
||||||
|
|
||||||
# Tests ############################################################################################
|
# Tests ############################################################################################
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
from mcpacker.model.datapack.placement import Placement
|
from mcpacker.format.datapack.placement import Placement
|
||||||
|
|
||||||
|
|
||||||
# Class ############################################################################################
|
# Class ############################################################################################
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
from mcpacker.model.datapack.placedfeature import PlacedFeature
|
from mcpacker.format.datapack.placedfeature import PlacedFeature
|
||||||
|
|
||||||
|
|
||||||
# Tests ############################################################################################
|
# Tests ############################################################################################
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
from mcpacker.model.datapack.placement import Placement
|
from mcpacker.format.datapack.placement import Placement
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
# Class ############################################################################################
|
# Class ############################################################################################
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
from mcpacker.model.datapack.placement.biome import Biome
|
from mcpacker.format.datapack.placement.biome import Biome
|
||||||
from pytest import fixture
|
from pytest import fixture
|
||||||
|
|
||||||
|
|
||||||
+2
-2
@@ -1,5 +1,5 @@
|
|||||||
from mcpacker.model.datapack.heightmaptype import HeightMapType
|
from mcpacker.format.datapack.heightmaptype import HeightMapType
|
||||||
from mcpacker.model.datapack.placement import Placement
|
from mcpacker.format.datapack.placement import Placement
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
# Class ############################################################################################
|
# Class ############################################################################################
|
||||||
+2
-2
@@ -1,5 +1,5 @@
|
|||||||
from mcpacker.model.datapack.heightmaptype import WORLD_SURFACE
|
from mcpacker.format.datapack.heightmaptype import WORLD_SURFACE
|
||||||
from mcpacker.model.datapack.placement.heightmap import HeightMap
|
from mcpacker.format.datapack.placement.heightmap import HeightMap
|
||||||
from pytest import fixture
|
from pytest import fixture
|
||||||
|
|
||||||
|
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
from mcpacker.model.datapack.placement import Placement
|
from mcpacker.format.datapack.placement import Placement
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
# Class ############################################################################################
|
# Class ############################################################################################
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
from mcpacker.model.datapack.placement.insquare import InSquare
|
from mcpacker.format.datapack.placement.insquare import InSquare
|
||||||
from pytest import fixture
|
from pytest import fixture
|
||||||
|
|
||||||
|
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
from mcpacker.model.datapack.placement import Placement
|
from mcpacker.format.datapack.placement import Placement
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
# Class ############################################################################################
|
# Class ############################################################################################
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
from mcpacker.model.datapack.placement.rarityfilter import RarityFilter
|
from mcpacker.format.datapack.placement.rarityfilter import RarityFilter
|
||||||
from pytest import fixture
|
from pytest import fixture
|
||||||
|
|
||||||
|
|
||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
from collections.abc import Iterable
|
from collections.abc import Iterable
|
||||||
from collections.abc import Mapping
|
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
|
from mcpacker.model.core.resourceid import ResourceId
|
||||||
|
|
||||||
|
|
||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
from pytest import fixture
|
from pytest import fixture
|
||||||
from mcpacker.model.datapack.recipe.shapedrecipe import ShapedRecipe
|
from mcpacker.format.datapack.recipe.shapedrecipe import ShapedRecipe
|
||||||
|
|
||||||
|
|
||||||
# Fixtures #########################################################################################
|
# Fixtures #########################################################################################
|
||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
from collections.abc import Iterable
|
from collections.abc import Iterable
|
||||||
from collections.abc import Mapping
|
from collections.abc import Mapping
|
||||||
from mcpacker.model.core.resourceid import ResourceId
|
from mcpacker.model.core.resourceid import ResourceId
|
||||||
from mcpacker.model.datapack.recipe import Recipe
|
from mcpacker.format.datapack.recipe import Recipe
|
||||||
|
|
||||||
|
|
||||||
# Class ############################################################################################
|
# Class ############################################################################################
|
||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
from pytest import fixture
|
from pytest import fixture
|
||||||
from mcpacker.model.datapack.recipe.shapelessrecipe import ShapelessRecipe
|
from mcpacker.format.datapack.recipe.shapelessrecipe import ShapelessRecipe
|
||||||
|
|
||||||
|
|
||||||
# Fixtures #########################################################################################
|
# Fixtures #########################################################################################
|
||||||
@@ -3,7 +3,7 @@ from mcpacker.model.resourcepack.variant import Variant
|
|||||||
from mcpacker.model.resourcepack.model import Model
|
from mcpacker.model.resourcepack.model import Model
|
||||||
from mcpacker.model.modpack import ModPack
|
from mcpacker.model.modpack import ModPack
|
||||||
from mcpacker.model.core.resourceid import ResourceId
|
from mcpacker.model.core.resourceid import ResourceId
|
||||||
from mcpacker.model.datapack.recipe.shapedrecipe import ShapedRecipe
|
from mcpacker.format.datapack.recipe.shapedrecipe import ShapedRecipe
|
||||||
|
|
||||||
|
|
||||||
# Class ############################################################################################
|
# Class ############################################################################################
|
||||||
|
|||||||
@@ -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,6 +1,6 @@
|
|||||||
from collections.abc import Iterable
|
from collections.abc import Iterable
|
||||||
from mcpacker.model.core.world import World
|
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.mod import Mod
|
||||||
from mcpacker.model.resourcepack import ResourcePack
|
from mcpacker.model.resourcepack import ResourcePack
|
||||||
from typing import Callable
|
from typing import Callable
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
from mcpacker.model.modpack import ModPack
|
from mcpacker.model.modpack import ModPack
|
||||||
from mcpacker.model.datapack import DataPack
|
from mcpacker.format.datapack import DataPack
|
||||||
|
|
||||||
|
|
||||||
# Functions ########################################################################################
|
# Functions ########################################################################################
|
||||||
|
|||||||
Reference in New Issue
Block a user