diff --git a/scripts/add_pragma_once.py b/scripts/add_pragma_once.py deleted file mode 100644 index 42ea37e18..000000000 --- a/scripts/add_pragma_once.py +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env python3 -"""Add #pragma once to headers that lack any include guard.""" -import os -import re - -ROOTS = [ - 'Minecraft.World', - 'Minecraft.Client', - '4J.Render', - '4J.Input', - '4J.Profile', - '4J.Storage', -] - -GUARD_RE = re.compile(r'^\s*#\s*(pragma\s+once|ifndef\s+\w)', re.MULTILINE) - -BASE = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) -patched = 0 - -for root in ROOTS: - for dirpath, _, files in os.walk(os.path.join(BASE, root)): - for f in files: - if not f.endswith('.h'): - continue - path = os.path.join(dirpath, f) - try: - content = open(path, 'r', encoding='utf-8', errors='replace').read() - except Exception: - continue - if not GUARD_RE.search(content): - open(path, 'w', encoding='utf-8').write('#pragma once\n' + content) - patched += 1 - -print(f'Patched {patched} headers with #pragma once') diff --git a/scripts/move_script.py b/scripts/move_script.py deleted file mode 100644 index dfa47f6ec..000000000 --- a/scripts/move_script.py +++ /dev/null @@ -1,515 +0,0 @@ -#!/usr/bin/env python3 -""" -move_and_fix_includes.py - -Moves C/C++ files/folders and updates every #include "..." and CMake path -that breaks as a result. Config lives in move_config.json next to this script. - -Usage: - python move_and_fix_includes.py - python move_and_fix_includes.py --dry-run - python move_and_fix_includes.py --config path/to/other.json - -Move formats: - { "from": "Foo.cpp", "to": "Util/" } - { "from": "Foo.*", "to": "Util/" } - { "from": "Foo.**", "to": "Util/" } - { "from": "*Packet.*", "to": "Network/Packets/" } - { "from": "OldName.*", "to": "Util/", "rename": "NewName.*" } - { "from": "mydir/", "to": "Build/", "folder": "move" } - { "from": "mydir/", "to": "Build/", "folder": "contents" } -""" - -import argparse -import fnmatch -import json -import os -import re -import shutil -from pathlib import Path - - -INCLUDE_RE = re.compile(r'(#\s*include\s*")([^"]+)(")') -CMAKE_STRING_RE = re.compile(r'(")([^"\n]+)(")') - -SOURCE_EXTS = {".c", ".cpp", ".cc", ".cxx", ".h", ".hpp", ".hh", ".hxx", ".inl"} -CMAKE_NAMES = {"CMakeLists.txt"} -CMAKE_EXTS = {".cmake"} - - -def load_config(config_path: Path) -> dict: - if not config_path.exists(): - print(f"ERROR: config file not found: {config_path}") - raise SystemExit(1) - - with config_path.open(encoding="utf-8") as f: - try: - cfg = json.load(f) - except json.JSONDecodeError as e: - print(f"ERROR: bad JSON in {config_path}: {e}") - raise SystemExit(1) - - cfg.setdefault("project_root", ".") - cfg.setdefault("moves", []) - cfg.setdefault("include_search_paths", []) - cfg.setdefault("extra_scan_paths", []) - return cfg - - -def expand_dir_globs(raw: list[str], root: Path) -> list[Path]: - """ - Resolves a list of path strings into real directories, expanding globs. - Splits each entry at the first glob character, uses Path.glob() on the - fixed prefix, and keeps only directories from the results. - Deduplicates while preserving order. - """ - result = [] - - for entry in raw: - if "*" not in entry and "?" not in entry: - p = Path(entry) - result.append((p if p.is_absolute() else root / p).resolve()) - continue - - parts = Path(entry).parts - base_parts, pattern_parts, hit_glob = [], [], False - for part in parts: - if not hit_glob and "*" not in part and "?" not in part: - base_parts.append(part) - else: - hit_glob = True - pattern_parts.append(part) - - base = Path(*base_parts) if base_parts else Path("") - base = base if base.is_absolute() else (root / base).resolve() - pattern = str(Path(*pattern_parts)) if pattern_parts else "*" - - for match in sorted(base.glob(pattern)): - if match.is_dir(): - result.append(match.resolve()) - - seen, deduped = set(), [] - for p in result: - if p not in seen: - seen.add(p) - deduped.append(p) - return deduped - - -def expand_entry(entry: dict, root: Path) -> list[tuple[Path, Path]]: - """ - Turns one entry from the moves list into concrete (src, dst) path pairs. - - Folder mode resolves the source as a directory. "move" keeps the folder - intact at the destination; "contents" flattens its files into dst directly. - - Wildcard mode matches files in the source directory by name pattern: - "Foo.**" matches by name prefix (any number of dot-separated extensions) - "Foo.*" matches by stem only (single extension) - anything else is passed through fnmatch for general glob matching - - The optional "rename" field swaps the destination stem. The matched - file's extension(s) are kept as-is. - """ - src_rel = entry["from"] - dst_rel = entry["to"] - rename_to = entry.get("rename") - folder_mode = entry.get("folder") - - # "/" and "./" both mean project root — avoids resolving to filesystem root - if dst_rel in ("/", "./"): - dst_rel = "" - - if folder_mode: - src_dir = (root / src_rel.rstrip("/")).resolve() - dst_dir = (root / dst_rel.rstrip("/")).resolve() - - if not src_dir.exists() or not src_dir.is_dir(): - print(f" WARNING: folder not found, skipping: {src_dir}") - return [] - - if folder_mode == "move": - folder_name = rename_to.rstrip("/") if rename_to else src_dir.name - return [(src_dir, dst_dir / folder_name)] - - if folder_mode == "contents": - pairs = [] - for f in sorted(src_dir.rglob("*")): - if f.is_file(): - pairs.append((f.resolve(), (dst_dir / f.relative_to(src_dir)).resolve())) - if not pairs: - print(f" WARNING: folder is empty, skipping: {src_dir}") - return pairs - - print(f" WARNING: unknown folder mode '{folder_mode}', skipping") - return [] - - src_name = Path(src_rel).name - src_dir = Path(src_rel).parent - - if "*" in src_name or "?" in src_name: - parent = (root / src_dir).resolve() - if not parent.exists(): - print(f" WARNING: directory not found for '{src_rel}', skipping") - return [] - - if src_name.endswith(".**"): - stem = src_name[:-3] - matches = sorted(f for f in parent.iterdir() - if f.name.startswith(stem + ".") and f.is_file()) - elif src_name.endswith(".*") and "*" not in src_name[:-2]: - stem = src_name[:-2] - matches = sorted(f for f in parent.iterdir() - if f.stem == stem and f.is_file()) - else: - stem = None - matches = sorted(f for f in parent.iterdir() - if fnmatch.fnmatch(f.name, src_name) and f.is_file()) - - if not matches: - print(f" WARNING: no files matched '{src_rel}', skipping") - return [] - - rename_stem = None - if rename_to: - rename_base = ( - rename_to[:-3] if rename_to.endswith(".**") else - rename_to[:-2] if rename_to.endswith(".*") else - rename_to - ) - rename_stem = Path(rename_base).name - - pairs = [] - for match in matches: - if rename_stem: - suffix = match.name[len(stem):] if (stem and src_name.endswith(".**")) else match.suffix - new_name = rename_stem + suffix - else: - new_name = match.name - - dst_abs = (root / dst_rel.rstrip("/") / new_name).resolve() - pairs.append((match.resolve(), dst_abs)) - print(f" Wildcard matched: {match.relative_to(root)} -> {dst_abs.relative_to(root)}") - - return pairs - - src_abs = (root / src_rel).resolve() - dst_abs = (root / dst_rel).resolve() - - if dst_rel.endswith("/") or (dst_abs.exists() and dst_abs.is_dir()): - name = (rename_to if rename_to and ".*" not in rename_to else None) or src_abs.name - dst_abs = dst_abs / name - elif rename_to and ".*" not in rename_to: - dst_abs = dst_abs.parent / rename_to - - return [(src_abs, dst_abs)] - - -def collect_source_files(root: Path) -> list[Path]: - files = [] - for ext in SOURCE_EXTS: - files.extend(root.rglob(f"*{ext}")) - return files - - -def collect_cmake_files(root: Path) -> list[Path]: - return [ - f for f in root.rglob("*") - if f.is_file() and (f.name in CMAKE_NAMES or f.suffix in CMAKE_EXTS) - ] - - -def find_file(inc_str: str, relative_to: Path, search_paths: list[Path]) -> Path | None: - """ - Resolves an include string to an absolute path by checking relative to the - including file first, then each directory in search_paths in order. - """ - candidate = (relative_to / inc_str).resolve() - if candidate.exists(): - return candidate - for sp in search_paths: - candidate = (sp / inc_str).resolve() - if candidate.exists(): - return candidate - return None - - -def rel_path(target: Path, relative_to: Path) -> str: - try: - return os.path.relpath(target, start=relative_to).replace("\\", "/") - except ValueError: - return str(target) - - -def print_change(filepath: Path, old_val: str, new_val: str, label: str, root: Path, dry_run: bool): - outside = not filepath.is_relative_to(root) - display = filepath if outside else filepath.relative_to(root) - tag = "[DRY RUN] " if dry_run else "" - tag += "[OUTSIDE-ROOT] " if outside else "" - print(f" {tag}{label} in {display}\n - \"{old_val}\"\n + \"{new_val}\"") - - -def rewrite_includes( - filepath: Path, - old_loc: Path | None, - new_loc: Path | None, - moved_map: dict[Path, Path], - search_paths: list[Path], - root: Path, - dry_run: bool, -) -> int: - """ - Rewrites #include "..." lines in a source file. - - old_loc / new_loc are the file's old and new absolute paths — only set - when the file itself is being moved. When set, any include that can't be - resolved via moved_map is recalculated relative to new_loc so it still - points at the same file from the new location. - - Returns the number of lines changed. - """ - try: - text = filepath.read_text(encoding="utf-8", errors="replace") - except OSError as e: - print(f" ⚠ Could not read {filepath}: {e}") - return 0 - - lines, new_lines, changes = text.splitlines(keepends=True), [], 0 - - for line in lines: - m = INCLUDE_RE.search(line) - if not m: - new_lines.append(line) - continue - - inc_str = m.group(2) - base_dir = old_loc.parent if old_loc else filepath.parent - resolved = find_file(inc_str, base_dir, search_paths) - new_inc = inc_str - - if resolved in moved_map: - ref = new_loc.parent if new_loc else filepath.parent - new_inc = rel_path(moved_map[resolved], ref) - elif old_loc and new_loc and resolved: - new_inc = rel_path(resolved, new_loc.parent) - - if new_inc != inc_str: - new_lines.append(line[:m.start(2)] + new_inc + line[m.end(2):]) - changes += 1 - print_change(filepath, inc_str, new_inc, "Updated include", root, dry_run) - else: - new_lines.append(line) - - if changes and not dry_run: - filepath.write_text("".join(new_lines), encoding="utf-8") - - return changes - - -def rewrite_cmake_paths( - filepath: Path, - moved_map: dict[Path, Path], - search_paths: list[Path], - root: Path, - dry_run: bool, - old_loc: Path | None = None, - new_loc: Path | None = None, -) -> int: - """ - Scans a CMake file for quoted strings that resolve to files being moved - and updates them to the new relative path. Skips comment lines and any - string that doesn't look like a file path (no dot or slash, or has spaces). - - old_loc / new_loc work the same as in rewrite_includes — set when this - CMake file is itself being moved, so paths are calculated from new_loc. - - Returns the number of values changed. - """ - try: - text = filepath.read_text(encoding="utf-8", errors="replace") - except OSError as e: - print(f" ⚠ Could not read {filepath}: {e}") - return 0 - - lines, new_lines, changes = text.splitlines(keepends=True), [], 0 - - for line in lines: - if line.lstrip().startswith("#"): - new_lines.append(line) - continue - - new_line = line - for m in list(CMAKE_STRING_RE.finditer(line)): - val = m.group(2) - if " " in val or ("." not in val and "/" not in val): - continue - base_dir = old_loc.parent if old_loc else filepath.parent - resolved = find_file(val, base_dir, search_paths) - if resolved not in moved_map and not (old_loc and new_loc and resolved): - continue - ref = new_loc.parent if new_loc else filepath.parent - if resolved in moved_map: - new_val = rel_path(moved_map[resolved], ref) - else: - new_val = rel_path(resolved, ref) - if new_val == val: - continue - new_line = new_line[:m.start(2)] + new_val + new_line[m.end(2):] - changes += 1 - print_change(filepath, val, new_val, "Updated CMake path", root, dry_run) - - new_lines.append(new_line) - - if changes and not dry_run: - filepath.write_text("".join(new_lines), encoding="utf-8") - - return changes - - -def main(config_path: Path, dry_run: bool) -> None: - cfg = load_config(config_path) - root = Path(cfg["project_root"]).resolve() - search_paths = expand_dir_globs(cfg["include_search_paths"], root) - extra_dirs = expand_dir_globs(cfg["extra_scan_paths"], root) - - if not root.exists(): - print(f"ERROR: project_root does not exist: {root}") - raise SystemExit(1) - - if not cfg["moves"]: - print("No moves listed in config.") - return - - print("\nResolving moves…") - all_pairs: list[tuple[Path, Path]] = [] - for entry in cfg["moves"]: - all_pairs.extend(expand_entry(entry, root)) - - resolved: list[tuple[Path, Path]] = [] - seen_srcs: set[Path] = set() - - for src, dst in all_pairs: - if src in seen_srcs: - rel = src.relative_to(root) if src.is_relative_to(root) else src - print(f" WARNING: duplicate move for {rel}, skipping duplicate") - continue - seen_srcs.add(src) - - if src.is_dir(): - rel_src = src.relative_to(root) if src.is_relative_to(root) else src - rel_dst = dst.relative_to(root) if dst.is_relative_to(root) else dst - resolved.append((src, dst)) - print(f" Planned (folder): {rel_src}/ → {rel_dst}/") - continue - - if not src.exists(): - print(f" WARNING: source not found, skipping: {src}") - continue - if dst.exists() and dst != src: - print(f" WARNING: destination already exists, skipping: {dst}") - continue - - rel_src = src.relative_to(root) if src.is_relative_to(root) else src - rel_dst = dst.relative_to(root) if dst.is_relative_to(root) else dst - resolved.append((src, dst)) - print(f" Planned: {rel_src} → {rel_dst}") - - if not resolved: - print("Nothing to do.") - return - - # build old->new map for every file being moved, including files inside moved folders - moved_map: dict[Path, Path] = {} - for src, dst in resolved: - if src.is_dir(): - for f in src.rglob("*"): - if f.is_file(): - moved_map[f.resolve()] = (dst / f.relative_to(src)).resolve() - else: - moved_map[src] = dst - - source_files = collect_source_files(root) - extra_files: list[Path] = [] - for d in extra_dirs: - if not d.is_relative_to(root): - extra_files.extend(collect_source_files(d)) - all_files = source_files + extra_files - - print(f"\nScanning {len(all_files)} source file(s)" - f" ({len(extra_files)} outside project root)…\n") - - total_changes = 0 - moved_set = set(moved_map.keys()) - - # rewrite includes inside files that are being moved - for src, dst in resolved: - if src.is_dir(): - for f in src.rglob("*"): - if f.is_file() and f.suffix in SOURCE_EXTS: - total_changes += rewrite_includes( - f, f, dst / f.relative_to(src), moved_map, search_paths, root, dry_run - ) - elif src.suffix in SOURCE_EXTS: - total_changes += rewrite_includes( - src, src, dst, moved_map, search_paths, root, dry_run - ) - - # rewrite includes in files that stay put but reference something being moved - for f in all_files: - if f.resolve() not in moved_set: - total_changes += rewrite_includes( - f, None, None, moved_map, search_paths, root, dry_run - ) - - cmake_files = collect_cmake_files(root) - for d in extra_dirs: - if not d.is_relative_to(root): - cmake_files.extend(collect_cmake_files(d)) - print(f"\nScanning {len(cmake_files)} CMake file(s)…\n") - - # build a lookup so we can pass old/new loc when a cmake file is itself moving - cmake_move_map = {src: dst for src, dst in resolved if not src.is_dir()} - - for f in cmake_files: - old_loc = f if f in cmake_move_map else None - new_loc = cmake_move_map[f] if old_loc else None - total_changes += rewrite_cmake_paths( - f, moved_map, search_paths, root, dry_run, old_loc, new_loc - ) - - print(f"\n{'[DRY RUN] ' if dry_run else ''}Moving files…") - for src, dst in resolved: - rel_src = src.relative_to(root) if src.is_relative_to(root) else src - rel_dst = dst.relative_to(root) if dst.is_relative_to(root) else dst - if dry_run: - print(f" [DRY RUN] {rel_src} → {rel_dst}") - else: - dst.parent.mkdir(parents=True, exist_ok=True) - shutil.move(str(src), str(dst)) - print(f" {rel_src} → {rel_dst}") - - print(f"\n{'[DRY RUN] ' if dry_run else ''}Done. " - f"{len(resolved)} item(s) moved, {total_changes} path(s) updated.") - - if dry_run: - print("Re-run without --dry-run to apply changes.") - - -if __name__ == "__main__": - script_dir = Path(__file__).parent - parser = argparse.ArgumentParser( - description="Move C/C++ files/folders and update #include paths." - ) - parser.add_argument( - "--config", - type=Path, - default=script_dir / "move_config.json", - help="Path to JSON config (default: move_config.json next to this script)", - ) - parser.add_argument( - "--dry-run", - action="store_true", - help="Preview changes without touching the disk.", - ) - args = parser.parse_args() - main(args.config, args.dry_run) \ No newline at end of file diff --git a/scripts/mv_mc_client.json b/scripts/mv_mc_client.json deleted file mode 100644 index 6a9a00e9d..000000000 --- a/scripts/mv_mc_client.json +++ /dev/null @@ -1,323 +0,0 @@ -{ - "project_root": "/home/ella/CProjects/4jcraft/Minecraft.Client", - - "include_search_paths": [ - "/home/ella/CProjects/4jcraft/Minecraft.Client/**" - ], - "extra_scan_paths": [ - "/home/ella/CProjects/4jcraft/Minecraft.World/**" - ], - - "moves": [ - { "from": "Minecraft.Client.**", "to": "Build/" }, - { "from": "CMakeLists.txt", "to": "Build/" }, - { "from": "stdafx.*", "to": "Build/" }, - { "from": "stubs.*", "to": "Build/" }, - { "from": "Extrax64Stubs.cpp", "to": "Build/" }, - { "from": "extraX64client.h", "to": "Build/" }, - { "from": "ClassDiagram.cd", "to": "Build/" }, - { "from": "Common/", "to": "Build/", "folder": "move" }, - { "from": "redist64/", "to": "Build/", "folder": "move" }, - { "from": "CMakeFiles/", "to": "Build/", "folder": "move" }, - - { "from": "Durango/", "to": "Platform/", "folder": "move" }, - { "from": "DurangoMedia/", "to": "Platform/", "folder": "move" }, - { "from": "Xbox/", "to": "Platform/", "folder": "move" }, - { "from": "Windows64/", "to": "Platform/", "folder": "move" }, - { "from": "Windows64Media/", "to": "Platform/", "folder": "move" }, - { "from": "Linux/", "to": "Platform/", "folder": "move" }, - { "from": "PS3/", "to": "Platform/", "folder": "move" }, - { "from": "PS3_GAME/", "to": "Platform/", "folder": "move" }, - { "from": "PS3Media/", "to": "Platform/", "folder": "move" }, - { "from": "PSVita/", "to": "Platform/", "folder": "move" }, - { "from": "PSVitaMedia/", "to": "Platform/", "folder": "move" }, - { "from": "Orbis/", "to": "Platform/", "folder": "move" }, - { "from": "OrbisMedia/", "to": "Platform/", "folder": "move" }, - { "from": "PS4_GAME/", "to": "Platform/", "folder": "move" }, - { "from": "sce_sys/", "to": "Platform/", "folder": "move" }, - { "from": "TROPDIR/", "to": "Platform/", "folder": "move" }, - - { "from": "Settings.*", "to": "GameState/" }, - { "from": "Options.*", "to": "GameState/" }, - { "from": "GameMode.*", "to": "GameState/" }, - { "from": "CreativeMode.*", "to": "GameState/" }, - { "from": "SurvivalMode.*", "to": "GameState/" }, - { "from": "DemoMode.*", "to": "GameState/" }, - { "from": "DemoUser.*", "to": "GameState/" }, - { "from": "StatsCounter.*", "to": "GameState/" }, - { "from": "StatsSyncher.*", "to": "GameState/", "rename": "StatsSyncer.*" }, - - { "from": "Timer.*", "to": "Utils/" }, - { "from": "MemoryTracker.*", "to": "Utils/" }, - { "from": "WstringLookup.*", "to": "Utils/" }, - { "from": "ArchiveFile.*", "to": "Utils/" }, - { "from": "StringTable.*", "to": "Utils/" }, - - { "from": "Input.*", "to": "Input/" }, - { "from": "KeyMapping.*", "to": "Input/" }, - { "from": "ConsoleInput.*", "to": "Input/" }, - { "from": "ConsoleInputSource.*", "to": "Input/" }, - - { "from": "MultiPlayerChunkCache.*", "to": "Network/" }, - { "from": "ServerChunkCache.*", "to": "Network/" }, - { "from": "ServerConnection.*", "to": "Network/" }, - { "from": "ClientConnection.*", "to": "Network/" }, - { "from": "PlayerConnection.*", "to": "Network/" }, - { "from": "PendingConnection.*", "to": "Network/" }, - { "from": "PlayerChunkMap.*", "to": "Network/" }, - { "from": "PlayerList.*", "to": "Network/" }, - { "from": "PlayerInfo.*", "to": "Network/" }, - { "from": "ServerInterface.*", "to": "Network/" }, - { "from": "ServerCommandDispatcher.*", "to": "Network/" }, - - { "from": "LocalPlayer.*", "to": "Player/" }, - { "from": "RemotePlayer.*", "to": "Player/" }, - { "from": "ServerPlayer.*", "to": "Player/" }, - { "from": "MultiPlayerLocalPlayer.*", "to": "Player/" }, - { "from": "User.*", "to": "Player/" }, - { "from": "EntityTracker.*", "to": "Player/" }, - { "from": "TrackedEntity.*", "to": "Player/" }, - { "from": "MultiPlayerGameMode.*", "to": "Player/" }, - { "from": "ServerPlayerGameMode.*", "to": "Player/" }, - - { "from": "TeleportCommand.*", "to": "Commands/" }, - - { "from": "ServerLevel.*", "to": "Level/" }, - { "from": "DerivedServerLevel.*", "to": "Level/" }, - { "from": "MultiPlayerLevel.*", "to": "Level/" }, - { "from": "DemoLevel.*", "to": "Level/" }, - { "from": "ServerLevelListener.*", "to": "Level/" }, - - { "from": "Gui.*", "to": "UI/" }, - { "from": "GuiComponent.*", "to": "UI/" }, - { "from": "GuiMessage.*", "to": "UI/" }, - { "from": "Screen.*", "to": "UI/" }, - { "from": "Font.*", "to": "UI/" }, - { "from": "Button.*", "to": "UI/" }, - { "from": "SmallButton.*", "to": "UI/" }, - { "from": "SlideButton.*", "to": "UI/" }, - { "from": "EditBox.*", "to": "UI/" }, - { "from": "SimpleIcon.*", "to": "UI/" }, - { "from": "Rect2i.*", "to": "UI/" }, - { "from": "ScrolledSelectionList.*", "to": "UI/" }, - { "from": "ScreenSizeCalculator.*", "to": "UI/" }, - - { "from": "AbstractContainerScreen.*", "to": "UI/Screens/" }, - { "from": "AchievementPopup.*", "to": "UI/Screens/" }, - { "from": "AchievementScreen.*", "to": "UI/Screens/" }, - { "from": "ChatScreen.*", "to": "UI/Screens/" }, - { "from": "InBedChatScreen.*", "to": "UI/Screens/" }, - { "from": "ConfirmScreen.*", "to": "UI/Screens/" }, - { "from": "ConnectScreen.*", "to": "UI/Screens/" }, - { "from": "ContainerScreen.*", "to": "UI/Screens/" }, - { "from": "ControlsScreen.*", "to": "UI/Screens/" }, - { "from": "CraftingScreen.*", "to": "UI/Screens/" }, - { "from": "CreateWorldScreen.*", "to": "UI/Screens/" }, - { "from": "DeathScreen.*", "to": "UI/Screens/" }, - { "from": "DisconnectedScreen.*", "to": "UI/Screens/" }, - { "from": "ErrorScreen.*", "to": "UI/Screens/" }, - { "from": "FurnaceScreen.*", "to": "UI/Screens/" }, - { "from": "InventoryScreen.*", "to": "UI/Screens/" }, - { "from": "JoinMultiplayerScreen.*", "to": "UI/Screens/" }, - { "from": "NameEntryScreen.*", "to": "UI/Screens/" }, - { "from": "OptionsScreen.*", "to": "UI/Screens/" }, - { "from": "PauseScreen.*", "to": "UI/Screens/" }, - { "from": "ReceivingLevelScreen.*", "to": "UI/Screens/" }, - { "from": "RenameWorldScreen.*", "to": "UI/Screens/" }, - { "from": "SelectWorldScreen.*", "to": "UI/Screens/" }, - { "from": "StatsScreen.*", "to": "UI/Screens/" }, - { "from": "TextEditScreen.*", "to": "UI/Screens/" }, - { "from": "TitleScreen.*", "to": "UI/Screens/" }, - { "from": "TrapScreen.*", "to": "UI/Screens/" }, - { "from": "VideoSettingsScreen.*", "to": "UI/Screens/" }, - - { "from": "Polygon.*", "to": "Rendering/" }, - { "from": "Vertex.*", "to": "Rendering/" }, - { "from": "Chunk.*", "to": "Rendering/" }, - { "from": "LevelRenderer.*", "to": "Rendering/" }, - { "from": "TexOffs.*", "to": "Rendering/" }, - { "from": "Tesselator.*", "to": "Rendering/" }, - { "from": "Camera.*", "to": "Rendering/" }, - { "from": "FrustumCuller.*", "to": "Rendering/" }, - { "from": "FrustumData.*", "to": "Rendering/" }, - { "from": "Frustum.*", "to": "Rendering/" }, - { "from": "Minimap.*", "to": "Rendering/" }, - { "from": "GameRenderer.*", "to": "Rendering/" }, - { "from": "Lighting.*", "to": "Rendering/" }, - { "from": "Cube.*", "to": "Rendering/" }, - { "from": "OffsettedRenderList.*", "to": "Rendering/" }, - { "from": "glWrapper.*", "to": "Rendering/" }, - - { "from": "DirtyChunkSorter.*", "to": "Rendering/Culling/" }, - { "from": "DistanceChunkSorter.*", "to": "Rendering/Culling/" }, - { "from": "ViewportCuller.*", "to": "Rendering/Culling/" }, - { "from": "AllowAllCuller.*", "to": "Rendering/Culling/" }, - { "from": "Culler.*", "to": "Rendering/Culling/" }, - - { "from": "ZombieModel.*", "to": "Rendering/Models/" }, - { "from": "SkeletonHeadModel.*", "to": "Rendering/Models/" }, - { "from": "QuadrupedModel.*", "to": "Rendering/Models/" }, - { "from": "BookModel.*", "to": "Rendering/Models/" }, - { "from": "DragonModel.*", "to": "Rendering/Models/" }, - { "from": "BoatModel.*", "to": "Rendering/Models/" }, - { "from": "SpiderModel.*", "to": "Rendering/Models/" }, - { "from": "EndermanModel.*", "to": "Rendering/Models/", "rename": "EnderManModel.*" }, - { "from": "VillagerModel.*", "to": "Rendering/Models/" }, - { "from": "LavaSlimeModel.*", "to": "Rendering/Models/" }, - { "from": "BlazeModel.*", "to": "Rendering/Models/" }, - { "from": "VillagerZombieModel.*", "to": "Rendering/Models/" }, - { "from": "WolfModel.*", "to": "Rendering/Models/" }, - { "from": "SilverfishModel.*", "to": "Rendering/Models/" }, - { "from": "CowModel.*", "to": "Rendering/Models/" }, - { "from": "SheepModel.*", "to": "Rendering/Models/" }, - { "from": "VillagerGolemModel.*", "to": "Rendering/Models/" }, - { "from": "ChickenModel.*", "to": "Rendering/Models/" }, - { "from": "SquidModel.*", "to": "Rendering/Models/" }, - { "from": "Model.*", "to": "Rendering/Models/" }, - { "from": "GhastModel.*", "to": "Rendering/Models/" }, - { "from": "SkinBox.*", "to": "Rendering/Models/" }, - { "from": "OzelotModel.*", "to": "Rendering/Models/", "rename": "OcelotModel.*" }, - { "from": "LargeChestModel.*", "to": "Rendering/Models/" }, - { "from": "ChestModel.*", "to": "Rendering/Models/" }, - { "from": "EnderCrystalModel.*", "to": "Rendering/Models/" }, - { "from": "CreeperModel.*", "to": "Rendering/Models/" }, - { "from": "SkeletonModel.*", "to": "Rendering/Models/" }, - { "from": "SlimeModel.*", "to": "Rendering/Models/" }, - { "from": "SnowManModel.*", "to": "Rendering/Models/" }, - { "from": "SheepFurModel.*", "to": "Rendering/Models/" }, - { "from": "HumanoidModel.*", "to": "Rendering/Models/" }, - { "from": "SignModel.*", "to": "Rendering/Models/" }, - { "from": "PigModel.*", "to": "Rendering/Models/" }, - { "from": "ModelPart.*", "to": "Rendering/Models/" }, - { "from": "MinecartModel.*", "to": "Rendering/Models/" }, - - { "from": "SplashParticle.*", "to": "Rendering/Particles/" }, - { "from": "SnowShovelParticle.*", "to": "Rendering/Particles/" }, - { "from": "WaterDropParticle.*", "to": "Rendering/Particles/" }, - { "from": "SpellParticle.*", "to": "Rendering/Particles/" }, - { "from": "Particle.*", "to": "Rendering/Particles/" }, - { "from": "CritParticle.*", "to": "Rendering/Particles/" }, - { "from": "CritParticle2.*", "to": "Rendering/Particles/" }, - { "from": "FootstepParticle.*", "to": "Rendering/Particles/" }, - { "from": "PlayerCloudParticle.*", "to": "Rendering/Particles/" }, - { "from": "BubbleParticle.*", "to": "Rendering/Particles/" }, - { "from": "NetherPortalParticle.*", "to": "Rendering/Particles/" }, - { "from": "ExplodeParticle.*", "to": "Rendering/Particles/" }, - { "from": "SuspendedParticle.*", "to": "Rendering/Particles/" }, - { "from": "EnderParticle.*", "to": "Rendering/Particles/" }, - { "from": "NoteParticle.*", "to": "Rendering/Particles/" }, - { "from": "SuspendedTownParticle.*", "to": "Rendering/Particles/" }, - { "from": "HeartParticle.*", "to": "Rendering/Particles/" }, - { "from": "HugeExplosionSeedParticle.*","to": "Rendering/Particles/" }, - { "from": "HugeExplosionParticle.*", "to": "Rendering/Particles/" }, - { "from": "FlameParticle.*", "to": "Rendering/Particles/" }, - { "from": "EchantmentTableParticle.*", "to": "Rendering/Particles/", "rename": "EnchantmentTableParticle.*" }, - { "from": "ParticleEngine.*", "to": "Rendering/Particles/" }, - { "from": "DripParticle.*", "to": "Rendering/Particles/" }, - { "from": "RedDustParticle.*", "to": "Rendering/Particles/" }, - { "from": "TakeAnimationParticle.*", "to": "Rendering/Particles/" }, - { "from": "LavaParticle.*", "to": "Rendering/Particles/" }, - { "from": "GuiParticle.*", "to": "Rendering/Particles/" }, - { "from": "GuiParticles.*", "to": "Rendering/Particles/" }, - { "from": "BreakingItemParticle.*", "to": "Rendering/Particles/" }, - { "from": "DragonBreathParticle.*", "to": "Rendering/Particles/" }, - { "from": "TerrainParticle.*", "to": "Rendering/Particles/" }, - { "from": "SmokeParticle.*", "to": "Rendering/Particles/" }, - - { "from": "BoatRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "MinecartRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "ItemSpriteRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "SkullTileRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "SpiderRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "TheEndPortalRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "EntityRenderDispatcher.*", "to": "Rendering/EntityRenderers/" }, - { "from": "ItemFrameRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "EntityRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "EnderDragonRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "EntityTileRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "PlayerRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "ItemRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "SilverfishRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "SignRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "MushroomCowRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "EnderChestRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "EndermanRenderer.*", "to": "Rendering/EntityRenderers/", "rename": "EnderManRenderer.*" }, - { "from": "ProgressRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "PistonPieceRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "CreeperRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "VillagerGolemRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "EnderCrystalRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "ZombieRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "ChickenRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "ArrowRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "SheepRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "ExperienceOrbRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "TileEntityRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "LightningBoltRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "CowRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "TntRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "FallingTileRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "TileEntityRenderDispatcher.*","to": "Rendering/EntityRenderers/" }, - { "from": "SlimeRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "ChestRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "GhastRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "VillagerRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "PigRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "FishingHookRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "BlazeRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "TileRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "HumanoidMobRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "LavaSlimeRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "SquidRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "ItemInHandRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "EnchantTableRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "MobRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "WolfRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "DefaultRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "OzelotRenderer.*", "to": "Rendering/EntityRenderers/", "rename": "OcelotRenderer.*" }, - { "from": "FireballRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "PaintingRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "SnowManRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "MobSpawnerRenderer.*", "to": "Rendering/EntityRenderers/" }, - { "from": "GiantMobRenderer.*", "to": "Rendering/EntityRenderers/" }, - - { "from": "Textures.*", "to": "Textures/" }, - { "from": "Texture.*", "to": "Textures/" }, - { "from": "TextureManager.*", "to": "Textures/" }, - { "from": "TextureHolder.*", "to": "Textures/" }, - { "from": "BufferedImage.*", "to": "Textures/" }, - { "from": "CompassTexture.*", "to": "Textures/" }, - { "from": "ClockTexture.*", "to": "Textures/" }, - { "from": "HttpTexture.*", "to": "Textures/" }, - { "from": "MemTexture.*", "to": "Textures/" }, - { "from": "MemTextureProcessor.*", "to": "Textures/" }, - { "from": "HttpTextureProcessor.*", "to": "Textures/" }, - { "from": "MobSkinTextureProcessor.*", "to": "Textures/" }, - { "from": "MobSkinMemTextureProcessor.*","to": "Textures/" }, - - { "from": "PreStitchedTextureMap.*", "to": "Textures/Stitching/" }, - { "from": "Stitcher.*", "to": "Textures/Stitching/" }, - { "from": "StitchedTexture.*", "to": "Textures/Stitching/" }, - { "from": "TextureMap.*", "to": "Textures/Stitching/" }, - { "from": "StitchSlot.*", "to": "Textures/Stitching/" }, - - { "from": "TexturePackRepository.*", "to": "Textures/Packs/" }, - { "from": "FolderTexturePack.*", "to": "Textures/Packs/" }, - { "from": "DefaultTexturePack.*", "to": "Textures/Packs/" }, - { "from": "TexturePack.*", "to": "Textures/Packs/" }, - { "from": "FileTexturePack.*", "to": "Textures/Packs/" }, - { "from": "DLCTexturePack.*", "to": "Textures/Packs/" }, - { "from": "AbstractTexturePack.*", "to": "Textures/Packs/" }, - - {"from": "*.msscmp", "to": "Audio/"}, - {"from": "music", "to": "Audio/", "folder": "move", "rename": "Music/"}, - - {"from": "Minecraft.*", "to": "/"}, - {"from": "MinecraftServer.*", "to": "/"}, - {"from": "ClientConstants.*", "to": "/"}, - {"from": "Network Implementation Notes.txt", "to": "/"}, - {"from": "ReadMe.txt", "to": "/"}, - - {"from": "*.png", "to": "Assets/"} - ] -} \ No newline at end of file diff --git a/scripts/mv_mc_world.json b/scripts/mv_mc_world.json deleted file mode 100644 index 91b82b3b1..000000000 --- a/scripts/mv_mc_world.json +++ /dev/null @@ -1,509 +0,0 @@ -{ - "project_root": "/home/ella/CProjects/4jcraft/Minecraft.World", - - "include_search_paths": [ - "/home/ella/CProjects/4jcraft/Minecraft.World/**" - ], - "extra_scan_paths": [ - "/home/ella/CProjects/4jcraft/Minecraft.Client/**" - ], - - "moves": [ - { "from": "BodyControl.*", "to": "AI/Control/" }, - { "from": "Control.*", "to": "AI/Control/" }, - { "from": "JumpControl.*", "to": "AI/Control/" }, - { "from": "LookControl.*", "to": "AI/Control/" }, - { "from": "MoveControl.*", "to": "AI/Control/" }, - { "from": "Sensing.*", "to": "AI/Control/" }, - - { "from": "GoalSelector.*", "to": "AI/Goals/" }, - { "from": "OzelotAttackGoal.*", "to": "AI/Goals/", "rename": "OcelotAttackGoal.*" }, - { "from": "*Goal.*", "to": "AI/Goals/" }, - - { "from": "Node.*", "to": "AI/Navigation/" }, - { "from": "Path.*", "to": "AI/Navigation/" }, - { "from": "PathFinder.*", "to": "AI/Navigation/" }, - { "from": "PathNavigation.*", "to": "AI/Navigation/" }, - { "from": "RandomPos.*", "to": "AI/Navigation/" }, - - { "from": "*TileEntity.*", "to": "Blocks/TileEntities/" }, - { "from": "EnchantmentTableEntity.*", "to": "Blocks/TileEntities/", "rename": "EnchantmentTableTileEntity.*" }, - { "from": "EntityTile.*", "to": "Blocks/TileEntities/" }, - { "from": "PistonPieceEntity.*", "to": "Blocks/TileEntities/", "rename": "PistonPieceTileEntity.*" }, - { "from": "PotionBrewing.*", "to": "Blocks/TileEntities/" }, - - { "from": "Bush.*", "to": "Blocks/", "rename": "PlantTile.*" }, - { "from": "DecorationMaterial.*", "to": "Blocks/" }, - { "from": "GasMaterial.*", "to": "Blocks/" }, - { "from": "LiquidMaterial.*", "to": "Blocks/" }, - { "from": "LiquidTileDynamic.*", "to": "Blocks/" }, - { "from": "LiquidTileStatic.*", "to": "Blocks/" }, - { "from": "Material.*", "to": "Blocks/" }, - { "from": "MaterialColor.*", "to": "Blocks/" }, - { "from": "MobSpawner.*", "to": "Blocks/" }, - { "from": "Mushroom.*", "to": "Blocks/", "rename": "MushroomPlantTile.*" }, - { "from": "PistonMovingPiece.*", "to": "Blocks/", "rename": "PistonMovingTileEntity.*" }, - { "from": "PortalMaterial.*", "to": "Blocks/" }, - { "from": "RedlightTile.*", "to": "Blocks/", "rename": "RedLightTile.*" }, - { "from": "Sapling.*", "to": "Blocks/", "rename": "SaplingPlantTile.*" }, - { "from": "Sponge.*", "to": "Blocks/", "rename": "SpongeTile.*" }, - { "from": "TallGrass.*", "to": "Blocks/", "rename": "TallGrassPlantTile.*" }, - { "from": "TheEndPortal.*", "to": "Blocks/", "rename": "TheEndPortalTile.*" }, - { "from": "WebMaterial.*", "to": "Blocks/" }, - { "from": "*Tile.*", "to": "Blocks/" }, - - { "from": "x64headers/", "to": "Build/", "folder": "move" }, - { "from": "Minecraft.World.**", "to": "Build/" }, - { "from": "System.h", "to": "Build/" }, - { "from": "system.cpp", "to": "Build/", "rename": "System.cpp" }, - { "from": "CMakeLists.txt", "to": "Build/" }, - { "from": "stdafx.*", "to": "Build/" }, - - { "from": "AdminLogCommand.*", "to": "Commands/" }, - { "from": "Command.*", "to": "Commands/" }, - { "from": "CommandDispatcher.*", "to": "Commands/" }, - { "from": "CommandSender.*", "to": "Commands/" }, - { "from": "CommandsEnum.*", "to": "Commands/" }, - { "from": "DefaultGameModeCommand.*", "to": "Commands/" }, - { "from": "EnchantItemCommand.*", "to": "Commands/" }, - { "from": "ExperienceCommand.*", "to": "Commands/" }, - { "from": "GameModeCommand.*", "to": "Commands/" }, - { "from": "GiveItemCommand.*", "to": "Commands/" }, - { "from": "KillCommand.*", "to": "Commands/" }, - { "from": "TimeCommand.*", "to": "Commands/" }, - { "from": "ToggleDownfallCommand.*", "to": "Commands/" }, - - { "from": "AbstractContainerMenu.*", "to": "Containers/" }, - { "from": "ArmorSlot.*", "to": "Containers/" }, - { "from": "BrewingStandMenu.*", "to": "Containers/" }, - { "from": "ClientSideMerchant.*", "to": "Containers/" }, - { "from": "CompoundContainer.*", "to": "Containers/" }, - { "from": "Container.*", "to": "Containers/" }, - { "from": "ContainerMenu.*", "to": "Containers/" }, - { "from": "CraftingContainer.*", "to": "Containers/" }, - { "from": "CraftingMenu.*", "to": "Containers/" }, - { "from": "EnchantmentContainer.*", "to": "Containers/" }, - { "from": "EnchantmentMenu.*", "to": "Containers/" }, - { "from": "EnchantmentSlot.*", "to": "Containers/" }, - { "from": "FurnaceMenu.*", "to": "Containers/" }, - { "from": "FurnaceResultSlot.*", "to": "Containers/" }, - { "from": "Inventory.*", "to": "Containers/" }, - { "from": "InventoryMenu.*", "to": "Containers/" }, - { "from": "MenuBackup.*", "to": "Containers/" }, - { "from": "Merchant.*", "to": "Containers/" }, - { "from": "MerchantContainer.*", "to": "Containers/" }, - { "from": "MerchantMenu.*", "to": "Containers/" }, - { "from": "MerchantRecipe.*", "to": "Containers/" }, - { "from": "MerchantRecipeList.*", "to": "Containers/" }, - { "from": "MerchantRecipeSlot.*", "to": "Containers/" }, - { "from": "MerchantResultSlot.*", "to": "Containers/" }, - { "from": "MouseInventoryClickHandler.*","to": "Containers/" }, - { "from": "RepairContainer.*", "to": "Containers/" }, - { "from": "RepairMenu.*", "to": "Containers/" }, - { "from": "RepairResultSlot.*", "to": "Containers/" }, - { "from": "ResultContainer.*", "to": "Containers/" }, - { "from": "ResultSlot.*", "to": "Containers/" }, - { "from": "SimpleContainer.*", "to": "Containers/" }, - { "from": "Slot.*", "to": "Containers/" }, - { "from": "TrapMenu.*", "to": "Containers/" }, - - { "from": "*Enchantment.*", "to": "Enchantments/" }, - { "from": "EnchantmentCategory.*", "to": "Enchantments/" }, - { "from": "*EnchantmentHelper.*", "to": "Enchantments/" }, - { "from": "EnchantmentInstance.*", "to": "Enchantments/" }, - - { "from": "BossMobPart.*", "to": "Entities/" }, - { "from": "DoorInfo.*", "to": "Entities/" }, - { "from": "Enemy.*", "to": "Entities/" }, - { "from": "Entity.*", "to": "Entities/" }, - { "from": "EntityDamageSource.*", "to": "Entities/" }, - { "from": "EntityEvent.*", "to": "Entities/" }, - { "from": "EntityPos.*", "to": "Entities/" }, - { "from": "EntitySelector.*", "to": "Entities/" }, - { "from": "FlyingMob.*", "to": "Entities/" }, - { "from": "GlobalEntity.*", "to": "Entities/" }, - { "from": "HangingEntity.*", "to": "Entities/" }, - { "from": "IndirectEntityDamageSource.*","to": "Entities/" }, - { "from": "InstantenousMobEffect.*", "to": "Entities/", "rename": "InstantaneousMobEffect.*" }, - { "from": "ItemEntity.*", "to": "Entities/" }, - { "from": "Mob.*", "to": "Entities/" }, - { "from": "MobCategory.*", "to": "Entities/" }, - { "from": "MobEffect.*", "to": "Entities/" }, - { "from": "MobEffectInstance.*", "to": "Entities/" }, - { "from": "MobType.*", "to": "Entities/" }, - { "from": "Monster.*", "to": "Entities/" }, - { "from": "PathfinderMob.*", "to": "Entities/" }, - { "from": "SynchedEntityData.*", "to": "Entities/", "rename": "SyncedEntityData.*" }, - { "from": "TamableAnimal.*", "to": "Entities/" }, - { "from": "Throwable.*", "to": "Entities/" }, - { "from": "WaterAnimal.*", "to": "Entities/" }, - - { "from": "AgableMob.*", "to": "Entities/Mobs/", "rename": "AgeableMob.*" }, - { "from": "Animal.*", "to": "Entities/Mobs/" }, - { "from": "Arrow.*", "to": "Entities/Mobs/" }, - { "from": "Blaze.*", "to": "Entities/Mobs/" }, - { "from": "Boat.*", "to": "Entities/Mobs/" }, - { "from": "BossMob.*", "to": "Entities/Mobs/" }, - { "from": "CaveSpider.*", "to": "Entities/Mobs/" }, - { "from": "Chicken.*", "to": "Entities/Mobs/" }, - { "from": "Cow.*", "to": "Entities/Mobs/" }, - { "from": "Creature.*", "to": "Entities/Mobs/" }, - { "from": "Creeper.*", "to": "Entities/Mobs/" }, - { "from": "DragonFireball.*", "to": "Entities/Mobs/" }, - { "from": "EnderCrystal.*", "to": "Entities/Mobs/" }, - { "from": "EnderDragon.*", "to": "Entities/Mobs/" }, - { "from": "EnderMan.*", "to": "Entities/Mobs/" }, - { "from": "ExperienceOrb.*", "to": "Entities/Mobs/" }, - { "from": "EyeOfEnderSignal.*", "to": "Entities/Mobs/" }, - { "from": "Fireball.*", "to": "Entities/Mobs/" }, - { "from": "FishingHook.*", "to": "Entities/Mobs/" }, - { "from": "Ghast.*", "to": "Entities/Mobs/" }, - { "from": "Giant.*", "to": "Entities/Mobs/" }, - { "from": "Golem.*", "to": "Entities/Mobs/" }, - { "from": "ItemFrame.*", "to": "Entities/Mobs/" }, - { "from": "LavaSlime.*", "to": "Entities/Mobs/" }, - { "from": "LightningBolt.*", "to": "Entities/Mobs/" }, - { "from": "Minecart.*", "to": "Entities/Mobs/" }, - { "from": "MushroomCow.*", "to": "Entities/Mobs/" }, - { "from": "Npc.*", "to": "Entities/Mobs/" }, - { "from": "Ozelot.*", "to": "Entities/Mobs/", "rename": "Ocelot.*" }, - { "from": "Painting.*", "to": "Entities/Mobs/" }, - { "from": "Pig.*", "to": "Entities/Mobs/" }, - { "from": "PigZombie.*", "to": "Entities/Mobs/" }, - { "from": "PrimedTnt.*", "to": "Entities/Mobs/" }, - { "from": "Sheep.*", "to": "Entities/Mobs/" }, - { "from": "Silverfish.*", "to": "Entities/Mobs/" }, - { "from": "Skeleton.*", "to": "Entities/Mobs/" }, - { "from": "Slime.*", "to": "Entities/Mobs/" }, - { "from": "SmallFireball.*", "to": "Entities/Mobs/" }, - { "from": "Snowball.*", "to": "Entities/Mobs/" }, - { "from": "SnowMan.*", "to": "Entities/Mobs/" }, - { "from": "Spider.*", "to": "Entities/Mobs/" }, - { "from": "Squid.*", "to": "Entities/Mobs/" }, - { "from": "ThrownEgg.*", "to": "Entities/Mobs/" }, - { "from": "ThrownEnderpearl.*", "to": "Entities/Mobs/", "rename": "ThrownEnderPearl.*" }, - { "from": "ThrownExpBottle.*", "to": "Entities/Mobs/" }, - { "from": "ThrownPotion.*", "to": "Entities/Mobs/" }, - { "from": "Villager.*", "to": "Entities/Mobs/" }, - { "from": "VillagerGolem.*", "to": "Entities/Mobs/" }, - { "from": "Wolf.*", "to": "Entities/Mobs/" }, - { "from": "Zombie.*", "to": "Entities/Mobs/" }, - - { "from": "net.minecraft.**", "to": "Headers/" }, - { "from": "com.mojang.**", "to": "Headers/" }, - - { "from": "ConsoleSaveFile.*", "to": "IO/Files/" }, - { "from": "ConsoleSaveFileConverter.*", "to": "IO/Files/" }, - { "from": "ConsoleSaveFileInputStream.*","to": "IO/Files/" }, - { "from": "ConsoleSaveFileIO.*", "to": "IO/Files/" }, - { "from": "ConsoleSaveFileOriginal.*", "to": "IO/Files/" }, - { "from": "ConsoleSaveFileOutputStream.*","to": "IO/Files/" }, - { "from": "ConsoleSaveFileSplit.*", "to": "IO/Files/" }, - { "from": "ConsoleSavePath.*", "to": "IO/Files/" }, - { "from": "File.*", "to": "IO/Files/" }, - { "from": "FileFilter.*", "to": "IO/Files/" }, - { "from": "FileHeader.*", "to": "IO/Files/" }, - { "from": "FileInputStream.*", "to": "IO/Files/" }, - { "from": "FilenameFilter.*", "to": "IO/Files/" }, - { "from": "FileOutputStream.*", "to": "IO/Files/" }, - - { "from": "ByteArrayTag.*", "to": "IO/NBT/" }, - { "from": "ByteTag.*", "to": "IO/NBT/" }, - { "from": "CompoundTag.*", "to": "IO/NBT/" }, - { "from": "DoubleTag.*", "to": "IO/NBT/" }, - { "from": "EndTag.*", "to": "IO/NBT/" }, - { "from": "FloatTag.*", "to": "IO/NBT/" }, - { "from": "IntArrayTag.*", "to": "IO/NBT/" }, - { "from": "IntTag.*", "to": "IO/NBT/" }, - { "from": "ListTag.*", "to": "IO/NBT/" }, - { "from": "LongTag.*", "to": "IO/NBT/" }, - { "from": "NbtIo.*", "to": "IO/NBT/", "rename": "NbtIO.*" }, - { "from": "NbtSlotFile.*", "to": "IO/NBT/" }, - { "from": "ShortTag.*", "to": "IO/NBT/" }, - { "from": "StringTag.*", "to": "IO/NBT/" }, - { "from": "Tag.*", "to": "IO/NBT/" }, - - { "from": "Buffer.*", "to": "IO/Streams/" }, - { "from": "BufferedOutputStream.*", "to": "IO/Streams/" }, - { "from": "BufferedReader.*", "to": "IO/Streams/" }, - { "from": "ByteArrayInputStream.*", "to": "IO/Streams/" }, - { "from": "ByteArrayOutputStream.*", "to": "IO/Streams/" }, - { "from": "ByteBuffer.*", "to": "IO/Streams/" }, - { "from": "compression.*", "to": "IO/Streams/", "rename": "Compression.*" }, - { "from": "DataInput.*", "to": "IO/Streams/" }, - { "from": "DataInputStream.*", "to": "IO/Streams/" }, - { "from": "DataOutput.*", "to": "IO/Streams/" }, - { "from": "DataOutputStream.*", "to": "IO/Streams/" }, - { "from": "FloatBuffer.*", "to": "IO/Streams/" }, - { "from": "GZIPInputStream.*", "to": "IO/Streams/" }, - { "from": "GZIPOutputStream.*", "to": "IO/Streams/" }, - { "from": "InputOutputStream.*", "to": "IO/Streams/" }, - { "from": "InputStream.*", "to": "IO/Streams/" }, - { "from": "InputStreamReader.*", "to": "IO/Streams/" }, - { "from": "IntBuffer.*", "to": "IO/Streams/" }, - { "from": "OutputStream.*", "to": "IO/Streams/" }, - { "from": "Reader.*", "to": "IO/Streams/" }, - - { "from": "ArmorItem.*", "to": "Items/" }, - { "from": "BedItem.*", "to": "Items/" }, - { "from": "BoatItem.*", "to": "Items/" }, - { "from": "BookItem.*", "to": "Items/" }, - { "from": "BottleItem.*", "to": "Items/" }, - { "from": "BowItem.*", "to": "Items/" }, - { "from": "BowlFoodItem.*", "to": "Items/" }, - { "from": "BucketItem.*", "to": "Items/" }, - { "from": "CarrotOnAStickItem.*", "to": "Items/" }, - { "from": "ClockItem.*", "to": "Items/" }, - { "from": "CoalItem.*", "to": "Items/" }, - { "from": "CompassItem.*", "to": "Items/" }, - { "from": "ComplexItem.*", "to": "Items/" }, - { "from": "DiggerItem.*", "to": "Items/" }, - { "from": "DoorItem.*", "to": "Items/" }, - { "from": "DyePowderItem.*", "to": "Items/" }, - { "from": "EggItem.*", "to": "Items/" }, - { "from": "EnchantedBookItem.*", "to": "Items/" }, - { "from": "EnderEyeItem.*", "to": "Items/" }, - { "from": "EnderpearlItem.*", "to": "Items/", "rename": "EnderPearlItem.*" }, - { "from": "ExperienceItem.*", "to": "Items/" }, - { "from": "FireChargeItem.*", "to": "Items/" }, - { "from": "FishingRodItem.*", "to": "Items/" }, - { "from": "FlintAndSteelItem.*", "to": "Items/" }, - { "from": "FoodItem.*", "to": "Items/" }, - { "from": "GoldenAppleItem.*", "to": "Items/" }, - { "from": "HangingEntityItem.*", "to": "Items/" }, - { "from": "HatchetItem.*", "to": "Items/" }, - { "from": "HoeItem.*", "to": "Items/" }, - { "from": "Item.*", "to": "Items/" }, - { "from": "ItemInstance.*", "to": "Items/" }, - { "from": "MapItem.*", "to": "Items/" }, - { "from": "MilkBucketItem.*", "to": "Items/" }, - { "from": "MinecartItem.*", "to": "Items/" }, - { "from": "MonsterPlacerItem.*", "to": "Items/" }, - { "from": "PickaxeItem.*", "to": "Items/" }, - { "from": "PotionItem.*", "to": "Items/" }, - { "from": "RecordingItem.*", "to": "Items/" }, - { "from": "RedStoneItem.*", "to": "Items/", "rename": "RedstoneItem.*" }, - { "from": "SaddleItem.*", "to": "Items/" }, - { "from": "SeedFoodItem.*", "to": "Items/" }, - { "from": "SeedItem.*", "to": "Items/" }, - { "from": "ShearsItem.*", "to": "Items/" }, - { "from": "ShovelItem.*", "to": "Items/" }, - { "from": "SignItem.*", "to": "Items/" }, - { "from": "SnowballItem.*", "to": "Items/" }, - { "from": "WeaponItem.*", "to": "Items/" }, - - { "from": "AnvilTileItem.*", "to": "Items/TileItems/" }, - { "from": "AuxDataTileItem.*", "to": "Items/TileItems/" }, - { "from": "ClothTileItem.*", "to": "Items/TileItems/" }, - { "from": "ColoredTileItem.*", "to": "Items/TileItems/" }, - { "from": "LeafTileItem.*", "to": "Items/TileItems/" }, - { "from": "MultiTextureTileItem.*", "to": "Items/TileItems/" }, - { "from": "PistonTileItem.*", "to": "Items/TileItems/" }, - { "from": "SaplingTileItem.*", "to": "Items/TileItems/" }, - { "from": "SkullItem.*", "to": "Items/TileItems/" }, - { "from": "SmoothStoneBrickTileItem.*","to": "Items/TileItems/" }, - { "from": "StoneMonsterTileItem.*", "to": "Items/TileItems/" }, - { "from": "StoneSlabTileItem.*", "to": "Items/TileItems/" }, - { "from": "TileItem.*", "to": "Items/TileItems/" }, - { "from": "TilePlanterItem.*", "to": "Items/TileItems/", "rename": "PlanterTileItem.*" }, - { "from": "TreeTileItem.*", "to": "Items/TileItems/" }, - { "from": "WaterLilyTileItem.*", "to": "Items/TileItems/" }, - - { "from": "BlockDestructionProgress.*","to": "Level/" }, - { "from": "BlockGenMethods.*", "to": "Level/" }, - { "from": "BlockReplacements.*", "to": "Level/" }, - { "from": "ChunkPos.*", "to": "Level/" }, - { "from": "ChunkSource.*", "to": "Level/" }, - { "from": "CustomLevelSource.*", "to": "Level/" }, - { "from": "DerivedLevelData.*", "to": "Level/" }, - { "from": "EmptyLevelChunk.*", "to": "Level/" }, - { "from": "Explosion.*", "to": "Level/" }, - { "from": "Level.*", "to": "Level/" }, - { "from": "LevelChunk.*", "to": "Level/" }, - { "from": "LevelConflictException.*", "to": "Level/" }, - { "from": "LevelData.*", "to": "Level/" }, - { "from": "RandomLevelSource.*", "to": "Level/" }, - { "from": "TickNextTickData.*", "to": "Level/" }, - { "from": "TileEventData.*", "to": "Level/" }, - { "from": "TilePos.*", "to": "Level/" }, - { "from": "WaterLevelChunk.*", "to": "Level/" }, - - { "from": "Dimension.*", "to": "Level/Dimensions" }, - { "from": "HellDimension.*", "to": "Level/Dimensions/" }, - { "from": "NormalDimension.*", "to": "Level/Dimensions/" }, - { "from": "SkyIslandDimension.*", "to": "Level/Dimensions/" }, - { "from": "TheEndDimension.*", "to": "Level/Dimensions/" }, - - { "from": "LevelEvent.*", "to": "Level/Events/" }, - { "from": "LevelListener.*", "to": "Level/Events/" }, - { "from": "LevelObjectInputStream.*", "to": "Level/Events/" }, - { "from": "VillageSiege.*", "to": "Level/Events/" }, - - { "from": "ChunkStorage.*", "to": "Level/Storage/" }, - { "from": "ChunkStorageProfileDecorator.*","to": "Level/Storage/" }, - { "from": "CompressedTileStorage.*", "to": "Level/Storage/" }, - { "from": "DataLayer.*", "to": "Level/Storage/" }, - { "from": "DirectoryLevelStorage.*", "to": "Level/Storage/" }, - { "from": "DirectoryLevelStorageSource.*","to": "Level/Storage/" }, - { "from": "EntityIO.*", "to": "Level/Storage/" }, - { "from": "LevelSettings.*", "to": "Level/Storage/" }, - { "from": "LevelSource.*", "to": "Level/Storage/" }, - { "from": "LevelStorage.*", "to": "Level/Storage/" }, - { "from": "LevelStorageProfilerDecorator.*","to": "Level/Storage/" }, - { "from": "LevelStorageSource.*", "to": "Level/Storage/" }, - { "from": "LevelSummary.*", "to": "Level/Storage/" }, - { "from": "LevelType.*", "to": "Level/Storage/" }, - { "from": "MapItemSavedData.*", "to": "Level/Storage/" }, - { "from": "McRegionChunkStorage.*", "to": "Level/Storage/" }, - { "from": "McRegionLevelStorage.*", "to": "Level/Storage/" }, - { "from": "McRegionLevelStorageSource.*","to": "Level/Storage/" }, - { "from": "MemoryChunkStorage.*", "to": "Level/Storage/" }, - { "from": "MemoryLevelStorage.*", "to": "Level/Storage/" }, - { "from": "MemoryLevelStorageSource.*","to": "Level/Storage/" }, - { "from": "MockedLevelStorage.*", "to": "Level/Storage/" }, - { "from": "OldChunkStorage.*", "to": "Level/Storage/" }, - { "from": "PlayerIO.*", "to": "Level/Storage/" }, - { "from": "PortalForcer.*", "to": "Level/Storage/" }, - { "from": "ReadOnlyChunkCache.*", "to": "Level/Storage/" }, - { "from": "Region.*", "to": "Level/Storage/" }, - { "from": "RegionFile.*", "to": "Level/Storage/" }, - { "from": "RegionFileCache.*", "to": "Level/Storage/" }, - { "from": "SavedData.*", "to": "Level/Storage/" }, - { "from": "SavedDataStorage.*", "to": "Level/Storage/" }, - { "from": "SparseDataStorage.*", "to": "Level/Storage/" }, - { "from": "SparseLightStorage.*", "to": "Level/Storage/" }, - { "from": "ZonedChunkStorage.*", "to": "Level/Storage/" }, - { "from": "ZoneFile.*", "to": "Level/Storage/" }, - { "from": "ZoneIo.*", "to": "Level/Storage/", "rename": "ZoneIO.*" }, - - { "from": "Connection.*", "to": "Network/" }, - { "from": "Socket.*", "to": "Network/" }, - { "from": "SocketAddress.*", "to": "Network/" }, - - { "from": "*Packet.*", "to": "Network/Packets/" }, - { "from": "MoveEntityPacketSmall.*", "to": "Network/Packets/" }, - { "from": "PacketListener.*", "to": "Network/Packets/" }, - - { "from": "Abilities.*", "to": "Player/" }, - { "from": "FoodData.*", "to": "Player/" }, - { "from": "Player.*", "to": "Player/" }, - { "from": "PlayerEnderChestContainer.*","to": "Player/" }, - - { "from": "ArmorDyeRecipe.*", "to": "Recipes/" }, - { "from": "ArmorRecipes.*", "to": "Recipes/" }, - { "from": "ClothDyeRecipes.*", "to": "Recipes/" }, - { "from": "FoodRecipies.*", "to": "Recipes/", "rename": "FoodRecipes.*" }, - { "from": "FurnaceRecipes.*", "to": "Recipes/" }, - { "from": "OreRecipies.*", "to": "Recipes/", "rename": "OreRecipes.*" }, - { "from": "Recipes.*", "to": "Recipes/" }, - { "from": "Recipy.*", "to": "Recipes/" }, - { "from": "ShapedRecipy.*", "to": "Recipes/" }, - { "from": "ShapelessRecipy.*", "to": "Recipes/" }, - { "from": "StructureRecipies.*", "to": "Recipes/", "rename": "StructureRecipes.*" }, - { "from": "ToolRecipies.*", "to": "Recipes/", "rename": "ToolRecipes.*" }, - { "from": "WeaponRecipies.*", "to": "Recipes/", "rename": "WeaponRecipes.*" }, - - { "from": "Achievement.*", "to": "Stats/" }, - { "from": "Achievements.*", "to": "Stats/" }, - { "from": "CommonStat.*", "to": "Stats/" }, - { "from": "CommonStats.*", "to": "Stats/" }, - { "from": "DurangoStats.*", "to": "Stats/" }, - { "from": "GeneralStat.*", "to": "Stats/" }, - { "from": "GenericStats.*", "to": "Stats/" }, - { "from": "ItemStat.*", "to": "Stats/" }, - { "from": "Stat.*", "to": "Stats/" }, - { "from": "StatFormatter.*", "to": "Stats/" }, - { "from": "Stats.*", "to": "Stats/" }, - - { "from": "AABB.*", "to": "Util/" }, - { "from": "Arrays.*", "to": "Util/" }, - { "from": "ArrayWithLength.*", "to": "Util/" }, - { "from": "BasicTypeContainers.*", "to": "Util/" }, - { "from": "BinaryHeap.*", "to": "Util/" }, - { "from": "BoundingBox.*", "to": "Util/" }, - { "from": "C4JThread.*", "to": "Util/" }, - { "from": "Class.*", "to": "Util/" }, - { "from": "Color.*", "to": "Util/" }, - { "from": "Coord.*", "to": "Util/" }, - { "from": "DamageSource.*", "to": "Util/" }, - { "from": "Definitions.*", "to": "Util/" }, - { "from": "DelayedRelease.*", "to": "Util/" }, - { "from": "DescFormatter.*", "to": "Util/" }, - { "from": "Difficulty.*", "to": "Util/" }, - { "from": "Direction.*", "to": "Util/" }, - { "from": "Distort.*", "to": "Util/" }, - { "from": "Emboss.*", "to": "Util/" }, - { "from": "Exceptions.*", "to": "Util/" }, - { "from": "Facing.*", "to": "Util/" }, - { "from": "FlippedIcon.*", "to": "Util/" }, - { "from": "FoliageColor.*", "to": "Util/" }, - { "from": "FoodConstants.*", "to": "Util/" }, - { "from": "GrassColor.*", "to": "Util/" }, - { "from": "HashExtension.*", "to": "Util/" }, - { "from": "Hasher.*", "to": "Util/" }, - { "from": "HitResult.*", "to": "Util/" }, - { "from": "I18n.*", "to": "Util/" }, - { "from": "Icon.*", "to": "Util/" }, - { "from": "IconRegister.*", "to": "Util/" }, - { "from": "IntCache.*", "to": "Util/" }, - { "from": "JavaIntHash.*", "to": "Util/" }, - { "from": "JavaMath.*", "to": "Util/" }, - { "from": "Language.*", "to": "Util/" }, - { "from": "LightLayer.*", "to": "Util/" }, - { "from": "Mth.*", "to": "Util/" }, - { "from": "NumberFormaters.*", "to": "Util/", "rename": "NumberFormatters" }, - { "from": "ParticleTypes.*", "to": "Util/" }, - { "from": "PerformanceTimer.*", "to": "Util/" }, - { "from": "Pos.*", "to": "Util/" }, - { "from": "ProgressListener.*", "to": "Util/" }, - { "from": "Random.*", "to": "Util/" }, - { "from": "Rarity.*", "to": "Util/" }, - { "from": "Reference.*", "to": "Util/" }, - { "from": "Rotate.*", "to": "Util/" }, - { "from": "Scale.*", "to": "Util/" }, - { "from": "SharedConstants.*", "to": "Util/" }, - { "from": "SmoothFloat.*", "to": "Util/" }, - { "from": "SoundTypes.*", "to": "Util/" }, - { "from": "StringHelpers.*", "to": "Util/" }, - { "from": "ThreadName.*", "to": "Util/" }, - { "from": "UseAnim.*", "to": "Util/" }, - { "from": "Vec3.*", "to": "Util/" }, - { "from": "WaterColor.*", "to": "Util/" }, - { "from": "WeighedRandom.*", "to": "Util/" }, - { "from": "WeighedTreasure.*", "to": "Util/" }, - - { "from": "*Biome.*", "to": "WorldGen/Biomes/" }, - { "from": "BiomeCache.*", "to": "WorldGen/Biomes/" }, - { "from": "BiomeDecorator.*", "to": "WorldGen/Biomes/" }, - { "from": "BiomeSource.*", "to": "WorldGen/Biomes/" }, - { "from": "FixedBiomeSource.*", "to": "WorldGen/Biomes/" }, - - { "from": "*ChunkGenerator.*", "to": "WorldGen/ChunkGenerators/" }, - - { "from": "BasicTree.*", "to": "WorldGen/Features/", "rename": "BasicTreeFeature.*" }, - { "from": "*Feature.*", "to": "WorldGen/Features/" }, - { "from": "NetherSphere.*", "to": "WorldGen/Features/", "rename": "NetherSphereFeature.*" }, - - { "from": "*Layer.*", "to": "WorldGen/Layers/" }, - { "from": "VoronoiZoom.*", "to": "WorldGen/Layers/" }, - - { "from": "*Noise.*", "to": "WorldGen/Noise/" }, - { "from": "Synth.*", "to": "WorldGen/Noise/" }, - - { "from": "*LevelSource.*", "to": "WorldGen/Sources/" }, - - { "from": "MineShaftPieces.*", "to": "WorldGen/Structures/" }, - { "from": "MineShaftStart.*", "to": "WorldGen/Structures/" }, - { "from": "NetherBridgePieces.*", "to": "WorldGen/Structures/" }, - { "from": "ScatteredFeaturePieces.*", "to": "WorldGen/Structures/" }, - { "from": "StrongholdPieces.*", "to": "WorldGen/Structures/" }, - { "from": "StructurePiece.*", "to": "WorldGen/Structures/" }, - { "from": "StructureStart.*", "to": "WorldGen/Structures/" }, - { "from": "TheEndBiomeDecorator.*", "to": "WorldGen/Structures/" }, - { "from": "Village.*", "to": "WorldGen/Structures/" }, - { "from": "VillagePieces.*", "to": "WorldGen/Structures/" }, - { "from": "Villages.*", "to": "WorldGen/Structures/" }, - - {"from": "ReadMe.txt", "to": "/"} - ] -} \ No newline at end of file