Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using UnityEngine;
- using System.Collections.Generic;
- using System.IO;
- public class AdminSafezoneBuildMod : MonoBehaviour
- {
- private bool adminBuildMode = false;
- private Config config;
- void Start()
- {
- LoadConfig();
- ChatManager.RegisterCommand(config.adminBuildCommand, OnAdminBuildCommand);
- GameManager.Instance.OnBlockPlaced += OnBlockAction;
- GameManager.Instance.OnBlockDestroyed += OnBlockAction;
- }
- void LoadConfig()
- {
- string configPath = "Mods/AdminSafezoneBuild/Config/AdminSafezoneConfig.json";
- if (File.Exists(configPath))
- {
- string json = File.ReadAllText(configPath);
- config = JsonUtility.FromJson<Config>(json);
- }
- else
- {
- config = new Config();
- }
- }
- void OnAdminBuildCommand(Player player, string command, string[] args)
- {
- if (player.PermissionLevel < config.requiredPermissionLevel)
- {
- if (config.notifyAdmin)
- GameManager.Instance.ChatMessageToPlayer(player, "You do not have permission to toggle Admin Build Mode.");
- return;
- }
- adminBuildMode = !adminBuildMode;
- if (config.notifyAdmin)
- {
- string msg = adminBuildMode ? config.enableMessage : config.disableMessage;
- GameManager.Instance.ChatMessageToPlayer(player, msg);
- }
- }
- void OnBlockAction(Player player, Vector3 blockPos, BlockValue block, bool placing)
- {
- if (!IsInSafezone(blockPos)) return;
- if (player.PermissionLevel < config.requiredPermissionLevel) // block low-permission players
- {
- GameManager.Instance.ChatMessageToPlayer(player, "You cannot build or destroy blocks in safezones!");
- CancelBlockAction(player, blockPos, placing);
- }
- else if (!adminBuildMode) // block high-permission players if mode off
- {
- GameManager.Instance.ChatMessageToPlayer(player, "Safezone restrictions active. Toggle admin build mode to modify blocks.");
- CancelBlockAction(player, blockPos, placing);
- }
- // else: player can build/destroy freely
- }
- bool IsInSafezone(Vector3 position)
- {
- // Replace with your safezone check logic
- return SafezoneManager.IsPositionInSafezone(position);
- }
- void CancelBlockAction(Player player, Vector3 blockPos, bool placing)
- {
- if (placing)
- player.CancelBlockPlacement(blockPos);
- else
- player.CancelBlockDestruction(blockPos);
- }
- [Serializable]
- public class Config
- {
- public int requiredPermissionLevel = 100;
- public string adminBuildCommand = "#adminbuild";
- public bool notifyAdmin = true;
- public string enableMessage = "Admin Build Mode is now ENABLED. You can build in safezones.";
- public string disable
Advertisement