HyGuard - Claims / Regions

HyGuard - Claims / Regions

A plugin that manage player claims and/or configurable admin regions

110.0 загрузок
Обновлён 7 дней назад

Описание

Плагин, который управляет претензиями игроков и / или областями администратора. Мы надеемся, что это поможет.

 


Конфигурировать файл - V1.1.1

  • MapRefreshTick: 100 Как часто обновлять карту мира (выражено после обновления клеща)
  • PlayerMaxChunks = 4; Max Player
  • PlayerChunksCanDetach = ложный В кусках в регионе игрока могут быть отключены друг от друга
  • PlayerChunksDecay = ложный Если куски автоматически удаляются, если игрок не входит в систему в течение времени
  • WorkbenchChestRadius = 14; Radius of workbench детектирование предметов в сундуках

Текущие команды

  • /g Откройте претензию GUI (Все еще работает)
  • /g претензия Заявите свои куски
  • /hg unclaim Невостребованные куски
  • /hg Trust (играющий) Доверьтесь игроку, чтобы редактировать свой кусок
  • /hg untrust (недоверие) Не доверяйте игроку редактировать свой кусок
  • /hg ban (игрок) Запретить игроку входить в ваш кусок
  • /hg unban[править править код] Запретить игроку входить в ваш кусок
  • /hg funclaim {регион} [Админ команда] Сила не требует кусок
  • /hg fclaim {регион} [Админ команда] Сила требует кусок
  • /hg fclaim {регион} [Админ команда] Сила требует кусок
  • /hg регион tp {регион} [Админ команда] Телепортация в регион

Можно создавать админ-регионы! Они полностью настраиваемы!
Ведь претензии - это заказная предустановка этих регионов!

  • Регион /hg создает регион
  • /hg регион исключить {регион}
  • /hg-группа создает {регион} {группа}
  • /hg региональная группа исключить {регион} {группа}
  • /hg region group add {регион} {группа} {игрок}
  • /hg региональная группа удалить {регион} {группа} {игрок}
  • /hg региональная группа удалить {регион} {группа} {игрок}
  • /hg региональное разрешение добавить {регион} {группа} {разрешение} {ДЕНЬЯ/ОТВЕТ}
  • /hg региональное разрешение удалить {регион} {группа} {разрешение}

Текущие события

  • event.movement
  • event.breakblock
  • event.place-блок
  • event.interact

Добавлена поддержка API - V1.1.1

ИМПЛЕМЕНТАЦИЯ МАВЕНА

Добавить файл в конфигурацию lib в основной каталог проекта

<зависимость>
<groupId>it.hytale</groupId>
<artifactId>HyGuard</artifact Id>
<version>1.1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/HyGuard-1.1.0.jar</systemPath>
</зависимость>

API методы

 

 

Публичный интерфейс IRegionManager {

CompletableFuture<Void> create (Ref<EntityStore> ref, String regionName)

CompletableFuture<Void> delete (Ref<EntityStore> ref, String regionName)

CompletableFuture<Void> teleport (Ref<EntityStore> ref, Игрок, название региона струн;

распад пустоты (название струнной области);

?

публичный интерфейс IPermissionManager {

CompletableFuture<Void> remove (Ref<EntityStore> ref, String region) Имя, название группы Струны, разрешение Струны;

CompletableFuture<Void> add (Ref<EntityStore> ref, String region) Имя, название группы Струны, разрешение Струны, государство;

?
 
Публичный интерфейс IGroupManager {

CompletableFuture<Void> create (Ref<EntityStore> ref, String regionName, String groupName)

CompletableFuture<Void> delete(Ref<EntityStore> ref, String regionName, String groupName)

CompletableFuture<Void> add (Ref<EntityStore> ref, String regionName, String groupName, UUID targetUuid);

CompletableFuture<Void> remove (Ref<EntityStore> ref, String regionName, String groupName, UUID targetUuid);

?

Если вы используете SimpleClaim Я хочу использовать этот плагин, который я сделал. python конвертер из конфигурационных областей, вы можете запустить это в Google.colab Если хотите, вот код:

 

Импорт Джонсона

Импортный дефолт

input_path = "/content/Claims.json"

output_path = "/content/Regions.json"

с открытым (input_path, "r", кодирование = "utf-8") как f:

Данные = json.load(f)

Regions_map = defaultdict(lambda): {

"UUID": Нет.

"Регион": Нет.

"Куски": [],

"Группы": [],

"IsFullChunkOnly": Правда.

"Непревзойденный": Правда.

"Опровержение": ложное,

"Разрушимый": Ложная,

"Приоритет": 0,

"МапКолор": 16092226,

Оригинальное название: None

)

для dim in data.get("Dimensions", []):

dimension_name = dim.get ("Измерение", "по умолчанию")

Для кусочка в dim.get("ChunkInfo", []):

owner_uuid = chunk.get ("CreatedTracker", {}).get("UserUUID")

chunk_x = chunk.get("ChunkX")

chunk_z = chunk.get("Чанки")

Имя пользователя = chunk.get("CreatedTracker", {}).get("UserName", "Unknown")

Название = f"{имя пользователя} Претензия"

region_name = title.replace("", ", "")

Если Regions_map[owner_uuid][UUID] не является:

Regions_map[owner_uuid]["UUID"] = owner_uuid

Regions_map[owner_uuid][«Регион»] = region_name

Regions_map[owner_uuid]["Title"] = title

Regions_map[owner_uuid][«Группы»] =[

{

"Разрешения": [

{"Государство": "ДЕНЬЯ", "Разрешение": "событие.breakblock"},

{"Государство": "ДЕНЬЯ", "Разрешение": "событие.placeblock"},

{"Государство": "ДЕНЬИ", "Разрешение": "событие.взаимодействие"}

]

"Игроки": [],

"Группа": "Неудовлетворительно",

«Приоритет»: 0

?

{

"Разрешения": [

{"Государство": "АЛЛОУ", "Разрешение": "событие.breakblock"},

{"Государство": "АЛЛОУ", "Разрешение": "событие.placeblock"},

{"Государство": "АЛЛОУ", "Разрешение": "событие.взаимодействие"}

]

"Игроки": [{"UUID: owner_uuid}],

"Группа": "доверие",

«Приоритет»: 10

?

{

"Разрешения": [

{"Государство": "ДЕНЬЯ", "Разрешение": "событие.движение"}

]

"Игроки": [],

"Группа": "бан",

«Приоритет»: 10

?

]

Regions_map[owner_uuid]["Чашки"].append({)

"X": chunk_x,

"Z": chunk_z,

«Мир»: dimension_name

"Оффсеты":

)

Регионы = список (regions_map.values())

выход = {"Регионы": регионы}

с открытым (output_path, "w", кодирование = "utf-8") как f:

json.dump(выход, f, indent=2, ensure_ascii=False)

 


 

Для BUG, который игрок может украсть из заявленной груди с помощью workbench, рассмотрите возможность установки AntiWorkBenchДетектив Грудь Это временная контрмера!

Показать оригинальное описание (English)

A plugin that manage player claims and/or admin regions. We hope it may help.

 


Config File - V1.1.1

  • MapRefreshTick: 100                        How often to refresh the world map (expressed in after tot tick refresh)
  • PlayerMaxChunks = 4;                      Max player claim limit
  • PlayerChunksCanDetach = false;      In the chunks in the player region can be disconnected to one another
  • PlayerChunksDecay = false;              If the chunks auto-delete if player dont log in for a tot time
  • WorkbenchChestRadius = 14;           Radius of workbench detecting items in chests 

Current Commands

  •  /hg                                                  Open the claim GUI (Still work in progress)
  •  /hg claim                                         Claim your chunks
  •  /hg unclaim                                     Unclaim your chunks
  •  /hg trust {player}                             Trust a player to edit your chunk
  •  /hg untrust {player}                         Untrust a player to edit your chunk
  •  /hg ban {player}                               Ban a player from entering your chunk
  •  /hg unban {player}                           Unban a player from entering your chunk
  •  /hg funclaim {region}                       [ADMIN COMMAND] Force unclaim a chunk
  •  /hg fclaim {region}                           [ADMIN COMMAND] Force claim a chunk
  •  /hg fclaim {region}                            [ADMIN COMMAND] Force claim a chunk
  •  /hg region tp {region}                       [ADMIN COMMAND] Teleport to a region

You can create admin-regions! Those are totally configurable! 
After all the claims are a custom preset of this regions!

  • /hg region create {region}
  • /hg region delete {region}
  • /hg region group create {region} {group}
  • /hg region group delete {region} {group}
  • /hg region group add {region} {group} {player}
  • /hg region group remove {region} {group} {player}
  • /hg region group remove {region} {group} {player}
  • /hg region group permission add {region} {group} {permission} {DENY/ALLOW}
  • /hg region group permission remove {region} {group} {permission}

Current Events

  • event.movement
  • event.breakblock
  • event.placeblock
  • event.interact

Added API Support - V1.1.1

MAVEN IMPLEMENTATION

Add the file in the lib config in the main project directory

<dependency>
    <groupId>it.hytale</groupId>
    <artifactId>HyGuard</artifactId>
    <version>1.1.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/HyGuard-1.1.0.jar</systemPath>
</dependency>

API METHODS

 

 

public interface IRegionManager {

  CompletableFuture<Void> create(Ref<EntityStore> ref, String regionName);

  CompletableFuture<Void> delete(Ref<EntityStore> ref, String regionName);

  CompletableFuture<Void> teleport(Ref<EntityStore> ref, Player player, String regionName);

  void decay(String regionName);

}

public interface IPermissionManager {

  CompletableFuture<Void> remove(Ref<EntityStore> ref, String regionName, String groupName, String permission);

  CompletableFuture<Void> add(Ref<EntityStore> ref, String regionName, String groupName, String permission, State state);

}
 
public interface IGroupManager {

  CompletableFuture<Void> create(Ref<EntityStore> ref, String regionName, String groupName);

  CompletableFuture<Void> delete(Ref<EntityStore> ref, String regionName, String groupName);

  CompletableFuture<Void> add(Ref<EntityStore> ref, String regionName, String groupName, UUID targetUuid);

  CompletableFuture<Void> remove(Ref<EntityStore> ref, String regionName, String groupName, UUID targetUuid);

}

If you are using SimpleClaim and want to use this plugin i made a python converter of the config regions, you can run this in google.colab if you want, here the code:

 

import json

from collections import defaultdict

input_path = "/content/Claims.json"

output_path = "/content/Regions.json"

with open(input_path, "r", encoding="utf-8") as f:

    data = json.load(f)

regions_map = defaultdict(lambda: {

    "UUID": None,

    "Region": None,

    "Chunks": [],

    "Groups": [],

    "IsFullChunkOnly": True,

    "IsOverlapable": True,

    "IsOverlapping": False,

    "IsDecayable": False,

    "Priority": 0,

    "MapColor": 16092226,

    "Title": None

})

for dim in data.get("Dimensions", []):

    dimension_name = dim.get("Dimension", "default")

    for chunk in dim.get("ChunkInfo", []):

        owner_uuid = chunk.get("CreatedTracker", {}).get("UserUUID")

        chunk_x = chunk.get("ChunkX")

        chunk_z = chunk.get("ChunkY")

        username = chunk.get("CreatedTracker", {}).get("UserName", "Unknown")

        title = f"{username} Claim"

        region_name = title.replace(" ", "")

        if regions_map[owner_uuid]["UUID"] is None:

            regions_map[owner_uuid]["UUID"] = owner_uuid

            regions_map[owner_uuid]["Region"] = region_name

            regions_map[owner_uuid]["Title"] = title

            regions_map[owner_uuid]["Groups"] = [

                {

                    "Permissions": [

                        {"State": "DENY", "Permission": "event.breakblock"},

                        {"State": "DENY", "Permission": "event.placeblock"},

                        {"State": "DENY", "Permission": "event.interact"}

                    ],

                    "Players": [],

                    "Group": "DEFAULT",

                    "Priority": 0

                },

                {

                    "Permissions": [

                        {"State": "ALLOW", "Permission": "event.breakblock"},

                        {"State": "ALLOW", "Permission": "event.placeblock"},

                        {"State": "ALLOW", "Permission": "event.interact"}

                    ],

                    "Players": [{"UUID": owner_uuid}],

                    "Group": "trust",

                    "Priority": 10

                },

                {

                    "Permissions": [

                        {"State": "DENY", "Permission": "event.movement"}

                    ],

                    "Players": [],

                    "Group": "ban",

                    "Priority": 10

                }

            ]

        regions_map[owner_uuid]["Chunks"].append({

            "X": chunk_x,

            "Z": chunk_z,

            "World": dimension_name,

            "Offsets": []

        })

regions = list(regions_map.values())

output = {"Regions": regions}

with open(output_path, "w", encoding="utf-8") as f:

    json.dump(output, f, indent=2, ensure_ascii=False)

 


 

For the BUG that player can steal from claimed chest using workbench consider installing AntiWorkBenchDetectChest as a temporary countermeasure! 

Последние версии

HyGuard-1.1.1.jar

Early Access 27.01.2026 14.7 МБ

HyGuard-1.1.0.jar

Early Access 24.01.2026 14.7 МБ

HyGuard-1.0.0.jar

Early Access 24.01.2026 14.7 МБ

HyGuard 1.0.0 Demo.jar

Early Access 19.01.2026 2.0 МБ