diff --git a/src/pack.py b/src/pack.py
new file mode 100644
index 0000000..4b780eb
--- /dev/null
+++ b/src/pack.py
@@ -0,0 +1,60 @@
+import os
+import re
+import shutil
+import zipfile
+import hashlib
+from dotenv import load_dotenv
+
+class Pack:
+    def __init__(self):
+        load_dotenv()
+        self.repourl = os.environ.get("RESOURCE_PACK_URL")
+        command = "git clone git@github.com:" + self.repourl
+        self.dir =  re.split("/|\.", self.repourl)[1]
+        status = os.system(command)
+        print(status)        
+
+    def __del__(self):
+        shutil.rmtree(self.dir)
+
+    def pull(self) -> None:
+        
+        os.system("git -C {} pull origin master".format(self.dir))
+
+    def collate(self) -> None:
+        if os.path.exists("pack"):
+            shutil.rmtree("pack")
+        os.mkdir("pack")
+        shutil.copytree(self.dir+"/assets", "pack/assets")
+        shutil.copy("ResourcePack/pack.mcmeta", "pack/pack.mcmeta")
+        shutil.copy("ResourcePack/pack.png", "pack/pack.png")
+
+    
+    def compress(self) -> None:
+        if not os.path.exists("files"):
+            os.mkdir("files")
+        os.system("zip -r  files/pack.zip pack")
+        shutil.rmtree("pack")
+
+    def hash(self):
+        sha1sum = hashlib.sha1()
+        with open("files/pack.zip", "rb") as pack:
+            block = pack.read(2**16)
+            while len(block) != 0:
+                sha1sum.update(block)
+                block = pack.read(2**16)
+        self.hash = sha1sum.hexdigest()
+        with open("files/hash", 'w') as hashfile:
+            hashfile.write(self.hash)
+
+
+
+if __name__ == "__main__":
+   from dotenv import load_dotenv
+   load_dotenv()
+   pack = Pack()
+   pack.pull()
+   pack.collate()
+   pack.compress()
+   pack.hash()
+   #pack = None
\ No newline at end of file