🛠️Installation
Database
CREATE TABLE IF NOT EXISTS `court_applications` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `player_identifier` varchar(50) NOT NULL,
  `exam_type` varchar(50) NOT NULL,
  `status` enum('pending','approved','denied') DEFAULT 'pending',
  `exam_score` int(11) DEFAULT NULL,
  `votes` int(11) DEFAULT 0,
  `license_number` varchar(50) DEFAULT NULL,
  `date_issued` datetime DEFAULT NULL,
  `date_expired` datetime DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `notes` text DEFAULT NULL,
  `approved_by` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
CREATE TABLE IF NOT EXISTS `court_appointments` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `player_identifier` varchar(50) NOT NULL,
  `staff_identifier` varchar(50) DEFAULT NULL,
  `staff_name` varchar(50) DEFAULT NULL,
  `appointment_type` enum('license','name_change','court_case','consultation','filing','hearing') NOT NULL,
  `scheduled_at` datetime NOT NULL,
  `status` enum('pending','approved','rejected','completed') DEFAULT 'pending',
  `case_ref` varchar(255) DEFAULT NULL,
  `reason` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
CREATE TABLE IF NOT EXISTS `court_attorneys` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `player_identifier` varchar(50) NOT NULL,
  `name` varchar(100) NOT NULL,
  `hourly_rate` decimal(10,2) DEFAULT 100.00,
  `specialization` varchar(100) DEFAULT NULL,
  `status` enum('available','busy') DEFAULT 'busy',
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  UNIQUE KEY `player_identifier` (`player_identifier`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
CREATE TABLE IF NOT EXISTS `court_attorney_appointments` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `player_identifier` varchar(50) NOT NULL,
  `attorney_identifier` varchar(50) NOT NULL,
  `scheduled_at` datetime NOT NULL,
  `status` enum('pending','confirmed','denied','completed') DEFAULT 'pending',
  `reason` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `attorney_identifier` (`attorney_identifier`),
  CONSTRAINT `court_attorney_appointments_ibfk_1` FOREIGN KEY (`attorney_identifier`) REFERENCES `court_attorneys` (`player_identifier`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
CREATE TABLE IF NOT EXISTS `court_businesses` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL,
  `owner_identifier` varchar(60) NOT NULL,
  `owner_name` varchar(100) DEFAULT NULL,
  `approved` tinyint(1) DEFAULT 0,
  `tax_rate` decimal(5,2) DEFAULT 0.00,
  `total_tax_collected` decimal(10,2) DEFAULT 0.00,
  `last_tax_pay` datetime DEFAULT NULL,
  `date_created` timestamp NULL DEFAULT current_timestamp(),
  `date_updated` timestamp NULL DEFAULT NULL ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
CREATE TABLE IF NOT EXISTS `court_cases` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `case_name` varchar(255) NOT NULL,
  `judge_identifier` varchar(50) DEFAULT NULL,
  `defendant_identifier` varchar(50) DEFAULT NULL,
  `defence_identifier` varchar(50) DEFAULT NULL,
  `jury_members` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`jury_members`)),
  `lawyers` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`lawyers`)),
  `evidence` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`evidence`)),
  `date_time` datetime NOT NULL,
  `settlement_fee` decimal(10,2) DEFAULT NULL,
  `status` enum('private','public','closed') DEFAULT 'private',
  `verdict` varchar(255) DEFAULT NULL,
  `appeal_requested` tinyint(1) DEFAULT 0,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
CREATE TABLE IF NOT EXISTS `court_case_evidence` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `court_case_id` int(11) NOT NULL,
  `uploader_identifier` varchar(50) DEFAULT NULL,
  `evidence_type` enum('image','video','document','audio') NOT NULL,
  `url` text NOT NULL,
  `description` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `court_case_id` (`court_case_id`),
  CONSTRAINT `court_case_evidence_ibfk_1` FOREIGN KEY (`court_case_id`) REFERENCES `court_cases` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
CREATE TABLE IF NOT EXISTS `court_criminal_records` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `player_identifier` varchar(50) NOT NULL,
  `case_id` int(11) DEFAULT NULL,
  `reason` text NOT NULL,
  `points` int(11) DEFAULT 0,
  `date_created` datetime DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `case_id` (`case_id`),
  CONSTRAINT `court_criminal_records_ibfk_1` FOREIGN KEY (`case_id`) REFERENCES `court_cases` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
CREATE TABLE IF NOT EXISTS `court_fines` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `player_identifier` varchar(50) NOT NULL,
  `issued_by` varchar(50) DEFAULT NULL,
  `amount` decimal(10,2) NOT NULL,
  `reason` text NOT NULL,
  `paid` tinyint(1) DEFAULT 0,
  `date_issued` datetime DEFAULT current_timestamp(),
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
CREATE TABLE IF NOT EXISTS `court_jail` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `player_identifier` varchar(60) NOT NULL,
  `player_name` varchar(100) DEFAULT NULL,
  `jail_time` int(11) NOT NULL,
  `jail_reason` varchar(255) DEFAULT NULL,
  `jailed_by` varchar(60) DEFAULT NULL,
  `jailed_at` datetime DEFAULT current_timestamp(),
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
CREATE TABLE IF NOT EXISTS `court_taxes` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `type` varchar(50) NOT NULL,
  `rate` decimal(5,2) NOT NULL,
  `description` text DEFAULT NULL,
  `date_updated` datetime NOT NULL DEFAULT current_timestamp(),
  `updated_by` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
CREATE TABLE IF NOT EXISTS `court_votes` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `voter_identifier` varchar(50) NOT NULL,
  `candidate_identifier` varchar(50) NOT NULL,
  `vote_date` datetime DEFAULT current_timestamp(),
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
CREATE TABLE IF NOT EXISTS `court_witnesses` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `court_case_id` int(11) NOT NULL,
  `player_identifier` varchar(50) NOT NULL,
  `witness_type` enum('observer','witness') DEFAULT 'observer',
  `notes` text DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `court_case_id` (`court_case_id`),
  CONSTRAINT `court_witnesses_ibfk_1` FOREIGN KEY (`court_case_id`) REFERENCES `court_cases` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
CREATE TABLE IF NOT EXISTS `court_organization` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL,
  `owner_identifier` varchar(64) DEFAULT NULL,
  `balance` decimal(15,2) NOT NULL DEFAULT 0.00,
  `employees` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`employees`)),
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;Items Installation
bar_license = { name = 'bar_license', label = 'Bar License', weight = 100, type = 'item', image = 'bar_license.png', unique = true, useable = false, shouldClose = true, description = 'Allows you to legally operate a bar' },
mechanic_license = { name = 'mechanic_license', label = 'Mechanic License', weight = 100, type = 'item', image = 'mechanic_license.png', unique = true, useable = false, shouldClose = true, description = 'Allows you to legally operate a mechanic shop' },
attorney_license = { name = 'attorney_license', label = 'Attorney License', weight = 100, type = 'item', image = 'attorney_license.png', unique = true, useable = false, shouldClose = true, description = 'Allows you to legally operate as an attorney' },
judge_license = { name = 'judge_license', label = 'Judge License', weight = 100, type = 'item', image = 'judge_license.png', unique = true, useable = false, shouldClose = true, description = 'Allows you to legally operate as a judge' },["bar_license"] = {label = "Bar License", weight = 0, stack = false, close = true, description = "A license for your bar.", client = {image = "bar_license.png"}},
["mechanic_license"] = {label = "Mechanic License", weight = 0, stack = false, close = true, description = "A license for your mechanic shop.", client = {image = "mechanic_license.png"}},
["attorney_license"] = {label = "Attorney License", weight = 0, stack = false, close = true, description = "A license for your attorney services.", client = {image = "attorney_license.png"}},
["judge_license"] = {label = "Judge License", weight = 0, stack = false, close = true, description = "A license for your judge services.", client = {image = "judge_license.png"}},Job Installation
['court'] = {
    label = 'Court House',
    defaultDuty = true,
    offDutyPay = false,
    grades = {
        [0] = {
            name = 'Employee',
            payment = 100
        },
        [1] = {
            name = 'Attorney',
            payment = 150
        },
        [2] = {
            name = 'Judge',
            isboss = true,
            bankAuth = true,
            payment = 200
        },
    },
},INSERT INTO `jobs` (`name`, `label`, `whitelisted`)
VALUES ('court', 'Court House', 0)
ON DUPLICATE KEY UPDATE `label` = VALUES(`label`), `whitelisted` = VALUES(`whitelisted`);
INSERT INTO `job_grades` (`job_name`, `grade`, `name`, `label`, `salary`, `skin_male`, `skin_female`)
VALUES
('court', 0, 'Employee', 'Employee', 100, '{}', '{}'),
('court', 1, 'Attorney', 'Attorney', 150, '{}', '{}'),
('court', 2, 'Judge', 'Judge', 200, '{}', '{}')
ON DUPLICATE KEY UPDATE 
`name` = VALUES(`name`),
`label` = VALUES(`label`),
`salary` = VALUES(`salary`),
`skin_male` = VALUES(`skin_male`),
`skin_female` = VALUES(`skin_female`);
Last updated
