Latest reviews

One of the best minigames plugins out there! Had this plugin for over 7 years now, decided to repurchase here to support the author. Players love the destroyable areas and we were able to connect 15 servers spinning up CoreArena and it integrated surprisingly well. Never had any issues, the author is extremely helpful and the plugin is well performing even under heavy load. Recommended!
kangarko
kangarko
Wow that's a long time! Thank you so much, happy to hear it's working smoothly for you!
I think the developer is no longer interested in the plugin.
This is my 2nd negative review for this setup its bad do not buy this trash.

Seller disputes everything you say and always blames you for using the setup incorrectly even tho its as simple as a drag and drop the ragebait is insane. I would personally start a dispute but its not worth the time for $15 but thats exactly what these cheap trashy setups pray on people who don't care or want to waste time disputing.

I've spoken with the developer multiple times about the setup which he refuses to change or acknowledge all the broken and explotive mods/plugins his setup uses with 8 of them being outdated and abandoned since the launch of hytale. Update 4 is a load of crap and doesn't fix any of the problems with the setup.
Frozen_Studio
Frozen_Studio
Everything works. If any new buyer wants to test the server, you can write to me
the owner tortured me cut off my access to the world and beat me to a pulp

the bliss plugin was worth it though

5/10
Nice plugin great working
This license was given for free. What's this?
The setup process is simple, payment integration works smoothly, and automatic rank/package delivery is very reliable.
malitha22
malitha22
thank you!
10/10 Plugin
Worth of buying
The main issue that The features we resuest barely got added
Other than that It's just must have plugin with so much customization
tuff plugin very accurate and stuff for an SMP
Excelente service, 10/10. The developer is always helpful and responds quickly. I highly recommend it.
incredible setup with incredible support
OriginStudios
OriginStudios
Thanks Bletzzi! Enjoy it!
I am a really picky person when it comes to buying premade setup. However, when it comes to Hyronic’s setups, there is nothing that needed to worry about. I love the features that it brings, including a new version of mcmmo gui, clean ui design and a plug&play setup.

The setup is still in beta, yes, and other facilities are being made to implement into the setup. But the existed one is already playable for now. Im really excited for the next update, as the road-map sayin

Regarding support, the experienced dev solved the issue instantly, even come with a custom plugin just to solve the annoying bug that the currently using have.

I would totally recommended this setup for newcomers, as well as experienced, since it was truly a gift in this market!
DustinDinh
DustinDinh
Thanks for your review.
Best auction plugin ever. Owner is online always for support and suggestions. Replicate of the donutsmp auction. 10/10
Clanify
Clanify
Thank you so much for your review!
This license was given for free. What's this?
Top-quality content that’s simple to use and quick to set up. I opened a Discord ticket and got outstanding support very fast.
brevth
brevth
Thank you!
Plugin has many issues/bugs
This license was given for free. What's this?
This pack is amazing, easy installation and quick support. A very well done job!
brevth
brevth
Thank you!
Perfect, everything worked correctly. I’m setting up my dedicated Hytale server, and this plugin was a huge help. Thank you, and please bring more plugins to the community!!!
---------------------------------------------
Original Review (Before Conversation)
---------------------------------------------
After looking through the configuration, I want to start by acknowledging the amount of work that clearly went into it. This setup isn’t simple, and I do appreciate the effort behind it.

However, there are a few serious concerns that need to be addressed.

The biggest issue is the use of a plugin that isn’t publicly available and isn’t listed anywhere in the Dependencies section or out on the web.

Requiring a hidden, privately distributed plugin for almost the entire configuration to function is extremely misleading. Buyers shouldn’t discover after purchasing that the configuration depends almost entirely on a custom plugin they can’t access anywhere else to ensure its a legitimate and safe plugin.

Because of that, I’m having the included “QuestColors” dependency reviewed by someone else before I even consider running it. Any undisclosed, privately distributed plugin raises valid security concerns.

Even though the configuration itself seems to rely heavily on QuestCode placeholders, the overall setup feels unnecessarily unclear. Without transparency about the required plugin, the whole package ends up feeling unreliable and difficult to trust.
---------------------------------------------
Rewritten Review (After conversation)
---------------------------------------------
I purchased this resource under the impression that it was a standard configuration pack that I could edit and adapt to my server’s style. After installing it, I discovered that the configuration relies heavily on a separate plugin, QuestColors, which was not disclosed anywhere in the listing, the dependency section, or the README.

Because of that, the product initially felt misleading, and it raised security concerns since I had no prior knowledge of the plugin.

Once I had the jar properly checked and tested(At the time I didn't know that per the TOS "No decompiling, or editing of products is allowed unless permission is granted by the ownership team." in his discord server), the configuration worked as intended. But it still left me choosing between using an undisclosed plugin or manually reworking thousands of files.

The configuration itself is clearly well‑made and took a significant amount of time to build, and I respect the effort behind it. My concern was strictly about transparency.

After speaking with the creator of the configuration, they were receptive to the feedback and agreed that the undisclosed plugin should have been disclosed, he then further explained that he would provide a blank white version of it, but I explained that there is no need for it, as I will take the initiative to reconfigure all 15.000k file. He further stated that " i will make my advertisement different and will provide a white one for everyone that wants to change the files manual" I explained that "if you wanna implement the white variant version into your actual product, you definitely can" I appreciate that response and the willingness to improve clarity for future buyers.

My re-review reflects the experience: the product is solid and trust worthy, but full disclosure of all dependencies is essential so customers know exactly what they’re purchasing.
Not a Low Quality map by Any means, There are Some Bad meshes, I believe its likely a bad mesh collision hull Where the player Stands Knee Deep in some areas of the Map. You should Be able to Fix this with this Command in Command prompt: -- ZC_FULL_MAP_COLLISION_REPAIR_V1.command.lua
-- Run in Roblox Studio Command Bar while NOT in Play mode.
--
-- Purpose:
-- Full repair pass for imported city/map meshes where players stand inside / through the visible ground.
--
-- What it does:
-- 1. Targets likely walkable MeshParts and UnionOperations by name.
-- 2. Sets collision settings safely over time.
-- 3. Uses PreciseConvexDecomposition where possible.
-- 4. Creates invisible collision filler plates for flat walkable map pieces.
-- 5. Shows ETA/progress in Output and a viewport BillboardGui marker.
--
-- IMPORTANT:
-- If your map is inside a specific folder/model, set ROOT below to that model.
-- Example:
-- local ROOT = workspace:WaitForChild("Streetz")
--
-- Default scans workspace.

local Workspace = game:GetService("Workspace")
local RunService = game:GetService("RunService")

if RunService:IsRunning() then
warn("[ZC Collision Repair] Stop Play Mode first. Run this from Studio Command Bar in Edit Mode.")
return
end

--====================================================
-- SETTINGS
--====================================================

local ROOT = Workspace

local REPAIR_TAG_ATTRIBUTE = "ZC_CollisionRepaired"
local FILLER_TAG_ATTRIBUTE = "ZC_GeneratedCollisionFiller"

local AUTO_CREATE_FILLERS = true

-- If true, existing generated filler folder is deleted first.
local CLEAR_OLD_FILLERS_FIRST = true

-- Keep this true. Forcing RenderFidelity Precise on thousands of meshes can freeze Studio.
local KEEP_RENDER_FIDELITY_AUTOMATIC = true

-- Smaller batch = safer/slower.
-- Bigger batch = faster/more likely to lag.
local BATCH_SIZE = 10
local WAIT_BETWEEN_BATCHES = 0.07

-- Filler generation rules.
local MIN_FILLER_AREA = 18
local MIN_FILLER_XZ = 3
local MAX_FLATNESS_RATIO = 0.42

-- Slightly above mesh top.
local FILLER_Y_OFFSET = 0.12
local FILLER_THICKNESS = 0.35

-- Make generated plates visible for debugging?
-- false = invisible final collision.
-- true = green transparent plates so you can inspect them.
local DEBUG_SHOW_FILLERS = false

local WALKABLE_NAME_PATTERNS = {
"ground",
"grd",
"road",
"street",
"sidewalk",
"walk",
"alley",
"yard",
"backyard",
"frontyard",
"floor",
"landscape",
"grass",
"path",
"pavement",
"drive",
"driveway",
"asphalt",
"land",
"terrain",
"parking",
"lot",
"curb",
"plaza",
"concrete",
"slab",
"base",
"block",
"tile",
}

local EXCLUDE_NAME_PATTERNS = {
"wall",
"fence",
"door",
"window",
"roof",
"tree",
"leaf",
"leaves",
"bush",
"plant",
"lamp",
"light",
"pole",
"wire",
"sign",
"bench",
"chair",
"table",
"trash",
"bin",
"mail",
"post",
"rail",
"railing",
"car",
"vehicle",
"wheel",
"tire",
"prop",
"decor",
}

--====================================================
-- FOLDERS
--====================================================

local repairFolder = Workspace:FindFirstChild("ZC_Map_Collision_Repair")
if not repairFolder then
repairFolder = Instance.new("Folder")
repairFolder.Name = "ZC_Map_Collision_Repair"
repairFolder.Parent = Workspace
end

local fillerFolder = repairFolder:FindFirstChild("Invisible_Walk_Collision_Fillers")
if CLEAR_OLD_FILLERS_FIRST and fillerFolder then
fillerFolder:Destroy()
fillerFolder = nil
end

if not fillerFolder then
fillerFolder = Instance.new("Folder")
fillerFolder.Name = "Invisible_Walk_Collision_Fillers"
fillerFolder.Parent = repairFolder
end

--====================================================
-- HELPERS
--====================================================

local function lowerName(obj)
return string.lower(obj.Name or "")
end

local function containsAny(text, patterns)
for _, pattern in ipairs(patterns) do
if string.find(text, pattern, 1, true) then
return true
end
end

return false
end

local function isCollisionTarget(obj)
if not obj:IsA("MeshPart") and not obj:IsA("UnionOperation") then
return false
end

local n = lowerName(obj)

if containsAny(n, EXCLUDE_NAME_PATTERNS) then
return false
end

if containsAny(n, WALKABLE_NAME_PATTERNS) then
return true
end

return false
end

local function isFlatWalkableShape(obj)
local size = obj.Size
local x = math.abs(size.X)
local y = math.abs(size.Y)
local z = math.abs(size.Z)

if x < MIN_FILLER_XZ or z < MIN_FILLER_XZ then
return false
end

local area = x * z
if area < MIN_FILLER_AREA then
return false
end

local largestXZ = math.max(x, z)
if largestXZ <= 0 then
return false
end

local flatnessRatio = y / largestXZ
if flatnessRatio > MAX_FLATNESS_RATIO then
return false
end

-- Avoid vertical walls/rotated upright objects.
local upDot = math.abs(obj.CFrame.UpVector:Dot(Vector3.new(0, 1, 0)))
if upDot < 0.5 then
return false
end

return true
end

local function safeSetAttribute(obj, name, value)
pcall(function()
obj:SetAttribute(name, value)
end)
end

local function formatTime(seconds)
seconds = math.max(0, math.floor(seconds))

local mins = math.floor(seconds / 60)
local secs = seconds % 60

if mins > 0 then
return string.format("%dm %02ds", mins, secs)
end

return string.format("%ds", secs)
end

local function getApproxCenter(parts)
if #parts == 0 then
return Vector3.new(0, 25, 0)
end

local total = Vector3.new(0, 0, 0)

for _, part in ipairs(parts) do
total += part.Position
end

return total / #parts
end

--====================================================
-- PROGRESS MARKER
--====================================================

local progressMarker = repairFolder:FindFirstChild("ZC_CollisionRepair_ProgressMarker")
if progressMarker then
progressMarker:Destroy()
end

progressMarker = Instance.new("Part")
progressMarker.Name = "ZC_CollisionRepair_ProgressMarker"
progressMarker.Anchored = true
progressMarker.CanCollide = false
progressMarker.CanQuery = false
progressMarker.CanTouch = false
progressMarker.Transparency = 1
progressMarker.Size = Vector3.new(4, 4, 4)
progressMarker.Parent = repairFolder

local billboard = Instance.new("BillboardGui")
billboard.Name = "ProgressBillboard"
billboard.Size = UDim2.fromOffset(460, 130)
billboard.StudsOffset = Vector3.new(0, 8, 0)
billboard.AlwaysOnTop = true
billboard.Parent = progressMarker

local label = Instance.new("TextLabel")
label.Name = "ProgressText"
label.Size = UDim2.fromScale(1, 1)
label.BackgroundTransparency = 0.15
label.BackgroundColor3 = Color3.fromRGB(15, 15, 18)
label.BorderSizePixel = 0
label.TextColor3 = Color3.fromRGB(220, 255, 220)
label.TextScaled = true
label.Font = Enum.Font.GothamBold
label.Text = "ZC Collision Repair\nStarting..."
label.Parent = billboard

local function updateProgressText(text)
label.Text = text
print(text:gsub("\n", " | "))
end

--====================================================
-- SCAN
--====================================================

local collisionTargets = {}
local fillerTargets = {}

updateProgressText("[ZC Collision Repair]\nScanning map...")

for _, obj in ipairs(ROOT:GetDescendants()) do
if isCollisionTarget(obj) then
table.insert(collisionTargets, obj)

if AUTO_CREATE_FILLERS and isFlatWalkableShape(obj) then
table.insert(fillerTargets, obj)
end
end
end

local center = getApproxCenter(collisionTargets)
progressMarker.Position = center + Vector3.new(0, 35, 0)

local totalCollisionTargets = #collisionTargets
local totalFillerTargets = #fillerTargets

print("======================================")
print("[ZC Collision Repair] Scan complete.")
print("Collision targets:", totalCollisionTargets)
print("Filler targets:", totalFillerTargets)
print("Auto create fillers:", AUTO_CREATE_FILLERS)
print("======================================")

if totalCollisionTargets == 0 then
updateProgressText("[ZC Collision Repair]\nNo matching walkable meshes found.\nRename ROOT or adjust patterns.")
warn("[ZC Collision Repair] No collision targets found.")
return
end

--====================================================
-- PASS 1: REPAIR COLLISION SETTINGS
--====================================================

local startTime = os.clock()
local fixed = 0
local failed = 0

for i, obj in ipairs(collisionTargets) do
local ok, err = pcall(function()
safeSetAttribute(obj, "ZC_OriginalCanCollide", obj.CanCollide)
safeSetAttribute(obj, "ZC_OriginalCanTouch", obj.CanTouch)
safeSetAttribute(obj, "ZC_OriginalCanQuery", obj.CanQuery)

if obj:IsA("MeshPart") then
safeSetAttribute(obj, "ZC_OriginalCollisionFidelity", obj.CollisionFidelity.Name)
safeSetAttribute(obj, "ZC_OriginalRenderFidelity", obj.RenderFidelity.Name)
end

obj.Anchored = true
obj.CanCollide = true
obj.CanQuery = true

-- Static floor/map pieces should not fire touch events.
-- This saves performance.
obj.CanTouch = false

if obj:IsA("MeshPart") then
obj.CollisionFidelity = Enum.CollisionFidelity.PreciseConvexDecomposition

if KEEP_RENDER_FIDELITY_AUTOMATIC then
obj.RenderFidelity = Enum.RenderFidelity.Automatic
end
end

safeSetAttribute(obj, REPAIR_TAG_ATTRIBUTE, true)
end)

if ok then
fixed += 1
else
failed += 1
warn("[ZC Collision Repair] Failed collision repair:", obj:GetFullName(), err)
end

if i % BATCH_SIZE == 0 or i == totalCollisionTargets then
local elapsed = os.clock() - startTime
local progress = i / math.max(totalCollisionTargets, 1)
local estimatedTotal = elapsed / math.max(progress, 0.001)
local remaining = estimatedTotal - elapsed

updateProgressText(string.format(
"ZC Collision Repair\nPass 1/2: Mesh Settings\n%d/%d %d%%\nETA: %s",
i,
totalCollisionTargets,
math.floor(progress * 100),
formatTime(remaining)
))

task.wait(WAIT_BETWEEN_BATCHES)
end
end

--====================================================
-- PASS 2: CREATE INVISIBLE FILLERS
--====================================================

local fillersCreated = 0
local fillersFailed = 0

if AUTO_CREATE_FILLERS then
local fillerStart = os.clock()

for i, obj in ipairs(fillerTargets) do
local ok, err = pcall(function()
local plate = Instance.new("Part")
plate.Name = "COLLISION_FILLER_" .. obj.Name
plate.Anchored = true
plate.CanCollide = true
plate.CanQuery = true
plate.CanTouch = false
plate.CastShadow = false
plate.Material = Enum.Material.SmoothPlastic
plate.Color = Color3.fromRGB(0, 255, 120)

if DEBUG_SHOW_FILLERS then
plate.Transparency = 0.55
else
plate.Transparency = 1
end

-- Keep filler simple and stable.
-- It uses the mesh's X/Z footprint and sits just above the visible top.
plate.Size = Vector3.new(
math.max(obj.Size.X, MIN_FILLER_XZ),
FILLER_THICKNESS,
math.max(obj.Size.Z, MIN_FILLER_XZ)
)

plate.CFrame = obj.CFrame * CFrame.new(0, obj.Size.Y / 2 + FILLER_Y_OFFSET, 0)

safeSetAttribute(plate, FILLER_TAG_ATTRIBUTE, true)
safeSetAttribute(plate, "SourceObjectName", obj.Name)
safeSetAttribute(plate, "SourceObjectPath", obj:GetFullName())

plate.Parent = fillerFolder

fillersCreated += 1
end)

if not ok then
fillersFailed += 1
warn("[ZC Collision Repair] Failed filler creation:", obj:GetFullName(), err)
end

if i % BATCH_SIZE == 0 or i == totalFillerTargets then
local elapsed = os.clock() - fillerStart
local progress = i / math.max(totalFillerTargets, 1)
local estimatedTotal = elapsed / math.max(progress, 0.001)
local remaining = estimatedTotal - elapsed

updateProgressText(string.format(
"ZC Collision Repair\nPass 2/2: Collision Fillers\n%d/%d %d%%\nETA: %s",
i,
totalFillerTargets,
math.floor(progress * 100),
formatTime(remaining)
))

task.wait(WAIT_BETWEEN_BATCHES)
end
end
end

--====================================================
-- FINAL
--====================================================

local totalElapsed = os.clock() - startTime

updateProgressText(string.format(
"ZC Collision Repair COMPLETE\nMeshes fixed: %d\nMesh failures: %d\nFillers made: %d\nTime: %s",
fixed,
failed,
fillersCreated,
formatTime(totalElapsed)
))

print("======================================")
print("[ZC Collision Repair] COMPLETE")
print("Meshes fixed:", fixed)
print("Mesh failures:", failed)
print("Fillers created:", fillersCreated)
print("Filler failures:", fillersFailed)
print("Total time:", formatTime(totalElapsed))
print("Generated folder:", fillerFolder:GetFullName())
print("======================================")

And then You can Also Undo that With this Script in the Command Bar:-- ZC_CLEAN_GENERATED_COLLISION_FILLERS.command.lua
-- Run in Command Bar if you want to remove the generated invisible collision plates.

local folder = workspace:FindFirstChild("ZC_Map_Collision_Repair")

if folder then
local fillers = folder:FindFirstChild("Invisible_Walk_Collision_Fillers")

if fillers then
fillers:Destroy()
print("[ZC Cleanup] Removed generated collision fillers.")
else
print("[ZC Cleanup] No filler folder found.")
end
else
print("[ZC Cleanup] No ZC_Map_Collision_Repair folder found.")
end

the Second script Removes the Plates Added. After this, the Players Shouldnt Encounter Many Mesh Roads that Allow the player to Sink into them.
They provide quick feedback even for the smallest mistakes. It’s a plugin you might choose simply for the support it offers.
LinsaFTW
LinsaFTW
Thank you so much! You are amazing!
how do i add it to the plugin
Top