SAwww / features.html
SAyyeedd's picture
Upload 30 files
309ec79 verified
Raw
History Blame Contribute Delete
40.7 kB
<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>🎯 إدارة الميزات — Sayed Bot v23</title>
<style>
*{box-sizing:border-box;margin:0;padding:0}
:root{--bg:#0d1117;--surface:rgba(22,27,34,.72);--surface2:rgba(30,39,50,.75);--surface3:rgba(40,50,65,.8);--border:rgba(255,255,255,.06);--border2:rgba(255,255,255,.03);--text:#e6edf3;--text2:#8b949e;--text3:#6e7681;--green:#3fb950;--green2:#56d364;--green-bg:rgba(63,185,80,.1);--blue:#58a6ff;--blue-bg:rgba(88,166,255,.1);--purple:#bc8cff;--purple-bg:rgba(188,140,255,.1);--amber:#d29922;--amber-bg:rgba(210,153,34,.1);--red:#f85149;--red-bg:rgba(248,81,73,.1);--cyan:#39d0d8;--radius:12px;--radius-sm:8px;--font:system-ui,'Segoe UI',Roboto,sans-serif;--mono:Consolas,'Courier New',monospace;--glass:rgba(22,27,34,.65);--glass-blur:20px}
html,body{min-height:100vh}
body{background:var(--bg);background-image:radial-gradient(ellipse 80% 50% at 20% 0%,rgba(63,185,80,.06) 0%,transparent 50%),radial-gradient(ellipse 60% 40% at 80% 100%,rgba(88,166,255,.04) 0%,transparent 50%);color:var(--text);font-family:var(--font);font-size:14px;direction:rtl;padding:20px 24px}
::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:rgba(63,185,80,.25);border-radius:10px}
.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid var(--border);flex-wrap:wrap;gap:12px}
.page-title{font-size:20px;font-weight:900;display:flex;align-items:center;gap:8px}
.page-title span{background:linear-gradient(135deg,var(--green),var(--blue));-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.header-actions{display:flex;gap:8px;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;gap:5px;padding:7px 14px;border-radius:var(--radius-sm);font-size:12px;font-weight:700;font-family:var(--font);cursor:pointer;border:1px solid rgba(255,255,255,.08);background:var(--glass);backdrop-filter:blur(10px);color:var(--text2);transition:all .2s;white-space:nowrap;text-decoration:none}
.btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,0,0,.25)}.btn:active{transform:scale(.97)}
.btn-green{border-color:rgba(63,185,80,.25);color:var(--green);background:var(--green-bg)}.btn-green:hover{background:rgba(63,185,80,.18)}
.btn-red{border-color:rgba(248,81,73,.25);color:var(--red);background:var(--red-bg)}.btn-red:hover{background:rgba(248,81,73,.18)}
.btn-blue{border-color:rgba(88,166,255,.25);color:var(--blue);background:var(--blue-bg)}.btn-blue:hover{background:rgba(88,166,255,.18)}
.btn-purple{border-color:rgba(188,140,255,.25);color:var(--purple);background:var(--purple-bg)}.btn-purple:hover{background:rgba(188,140,255,.18)}
.btn-amber{border-color:rgba(210,153,34,.25);color:var(--amber);background:var(--amber-bg)}.btn-amber:hover{background:rgba(210,153,34,.18)}
.controls{display:flex;gap:10px;margin-bottom:20px;flex-wrap:wrap;align-items:center}
.search-box{flex:1;min-width:200px;background:var(--glass);border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-sm);padding:9px 14px;color:var(--text);font-family:var(--font);font-size:13px;outline:none;transition:all .2s}
.search-box:focus{border-color:var(--green);box-shadow:0 0 0 2px rgba(63,185,80,.1)}
.filter-tabs{display:flex;gap:4px;flex-wrap:wrap}
.filter-tab{padding:6px 12px;border-radius:var(--radius-sm);font-size:11px;font-weight:700;cursor:pointer;border:1px solid rgba(255,255,255,.06);background:var(--glass);color:var(--text3);transition:all .2s;font-family:var(--font)}
.filter-tab:hover{border-color:rgba(255,255,255,.1);color:var(--text2)}
.filter-tab.active{background:var(--green-bg);border-color:rgba(63,185,80,.25);color:var(--green)}
.stats-bar{display:flex;gap:12px;margin-bottom:20px;flex-wrap:wrap}
.stat-pill{background:var(--glass);border:1px solid rgba(255,255,255,.06);border-radius:20px;padding:6px 14px;font-size:11px;font-weight:700;display:flex;align-items:center;gap:6px}
.stat-pill .num{font-family:var(--mono);font-weight:900}
.cat-section{margin-bottom:20px}
.cat-header{display:flex;align-items:center;gap:10px;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--border)}
.cat-icon{font-size:18px}.cat-name{font-size:15px;font-weight:800;flex:1}
.cat-count{font-size:11px;color:var(--text3);font-family:var(--mono);background:rgba(255,255,255,.05);padding:2px 8px;border-radius:10px}
.cat-toggle{font-size:11px;color:var(--green);cursor:pointer;font-weight:700;transition:color .2s;background:none;border:none;font-family:var(--font)}
.cat-toggle:hover{color:var(--green2)}
.features-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px}
.feature-card{background:var(--glass);border:1px solid rgba(255,255,255,.06);border-radius:var(--radius-sm);padding:12px 14px;display:flex;align-items:center;gap:12px;transition:all .2s}
.feature-card:hover{border-color:rgba(255,255,255,.1);background:var(--surface2)}
.feature-card.disabled{opacity:.5}
.feature-info{flex:1;min-width:0}
.feature-name{font-size:12px;font-weight:700;margin-bottom:2px}
.feature-desc{font-size:10px;color:var(--text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.toggle{position:relative;width:36px;height:20px;flex-shrink:0;display:inline-block}
.toggle input{opacity:0;width:0;height:0;position:absolute}
.toggle-slider{position:absolute;inset:0;background:rgba(255,255,255,.08);border:1px solid var(--border);border-radius:20px;cursor:pointer;transition:all .3s}
.toggle-slider::before{content:'';position:absolute;top:2px;right:2px;width:14px;height:14px;border-radius:50%;background:var(--text3);transition:all .3s}
.toggle input:checked+.toggle-slider{background:var(--green);border-color:var(--green)}
.toggle input:checked+.toggle-slider::before{transform:translateX(-16px);background:#fff}
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%) translateY(12px);background:var(--glass);backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.1);border-radius:var(--radius);padding:10px 20px;font-size:12px;font-weight:700;opacity:0;transition:all .3s;pointer-events:none;z-index:9999;box-shadow:0 8px 30px rgba(0,0,0,.4)}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.toast.ok{border-color:rgba(63,185,80,.4);color:var(--green)}.toast.err{border-color:rgba(248,81,73,.4);color:var(--red)}
.empty{text-align:center;color:var(--text3);padding:40px;font-size:14px}
@media(max-width:768px){.features-grid{grid-template-columns:1fr}.page-header{flex-direction:column;align-items:flex-start}}
</style>
</head>
<body>
<div class="page-header">
<h1 class="page-title">🎯 <span>إدارة الميزات</span></h1>
<div class="header-actions">
<a href="/" class="btn btn-blue">📊 لوحة التحكم</a>
<button class="btn btn-green" onclick="saveAll()">💾 حفظ</button>
<button class="btn btn-purple" onclick="exportFeatures()">📤 تصدير</button>
<button class="btn btn-amber" onclick="document.getElementById('importFile').click()">📥 استيراد</button>
<input type="file" id="importFile" accept=".json" style="display:none" onchange="importFeatures(event)">
</div>
</div>
<div class="controls">
<input type="text" class="search-box" id="searchBox" placeholder="🔍 بحث بالاسم..." oninput="filterFeatures()">
<div class="filter-tabs" id="filterTabs"></div>
</div>
<div class="stats-bar" id="statsBar"></div>
<div id="featuresContainer"></div>
<div class="toast" id="toast"></div>
<script>
const CATS=[
{id:'protection',name:'الحماية',icon:'🛡️',color:'#3b82f6'},
{id:'performance',name:'الأداء',icon:'⚡',color:'#10b981'},
{id:'economy',name:'الاقتصاد',icon:'💰',color:'#f59e0b'},
{id:'player',name:'اللاعبين',icon:'👥',color:'#8b5cf6'},
{id:'world',name:'العوالم',icon:'🌍',color:'#06b6d4'},
{id:'fun',name:'الترفيه',icon:'🎮',color:'#ec4899'},
{id:'admin',name:'الإدارة',icon:'⚙️',color:'#ef4444'},
{id:'bots',name:'البوتات',icon:'🤖',color:'#10b981'}
];
const ALL_FEATURES=[
{id:'worldguard',name:'WorldGuard',cat:'protection',desc:'حماية المناطق من التخريب',on:true},{id:'worldedit',name:'WorldEdit',cat:'protection',desc:'أداة تعديل الخريطة',on:true},{id:'coreprotect',name:'CoreProtect',cat:'protection',desc:'تسجيل و التراجع',on:true},{id:'griefprevention',name:'GriefPrevention',cat:'protection',desc:'حماية الأراضي بالفأس',on:true},{id:'anticheat',name:'AntiCheat',cat:'protection',desc:'كشف الغش و hacks',on:true},{id:'combatlog',name:'CombatLog',cat:'protection',desc:'منع الفرار من القتال',on:true},{id:'spawnprotection',name:'SpawnProtection',cat:'protection',desc:'حماية الـ Spawn',on:true},{id:'lwc',name:'LWC Lock',cat:'protection',desc:'قفل الصناديق والأبواب',on:false},{id:'redprotect',name:'RedProtect',cat:'protection',desc:'حماية مناطق متقدمة',on:false},{id:'towny',name:'Towny',cat:'protection',desc:'نظام مدن وأراضي',on:false},{id:'factions',name:'Factions',cat:'protection',desc:'نظام فصائل وحروب',on:false},{id:'lands',name:'Lands',cat:'protection',desc:'نظام أراضي مبسط',on:false},{id:'playerwarps',name:'PlayerWarps',cat:'protection',desc:'نقاط teleport خاصة',on:false},{id:'antiexplosion',name:'AntiExplosion',cat:'protection',desc:'منع الانفجارات',on:false},{id:'antispam',name:'AntiSpam',cat:'protection',desc:'منع السبام في الشات',on:false},{id:'antifirewall',name:'FireWall',cat:'protection',desc:'جدار حماية متقدم',on:false},{id:'authme',name:'AuthMe',cat:'protection',desc:'تسجيل دخول أمان',on:false},{id:'badlion',name:'BadLion',cat:'protection',desc:'حماية Badlion',on:false},{id:'nokick',name:'NoKick',cat:'protection',desc:'منع الطرد التعسفي',on:false},{id:'sfprotect',name:'SkyFilter',cat:'protection',desc:'فلتر SkyBlock',on:false},{id:'worldbackup',name:'WorldBackup',cat:'protection',desc:'نسخ احتياطي للعوالم',on:false},{id:'itemprotect',name:'ItemProtect',cat:'protection',desc:'حماية الأغراض الملقاة',on:false},{id:'lockdoors',name:'LockDoors',cat:'protection',desc:'قفل الأبواب',on:false},{id:'regionprotect',name:'RegionProtect',cat:'protection',desc:'حماية المناطق التلقائية',on:false},{id:'pvplogger',name:'PvPLogger',cat:'protection',desc:'مراقبة PvP',on:false},{id:'sleepignore',name:'SleepIgnore',cat:'protection',desc:'تجاهل النوم القري',on:false},{id:'claimchunk',name:'ClaimChunk',cat:'protection',desc:'مطالعة بالـ chunks',on:false},{id:'simpleflags',name:'SimpleFlags',cat:'protection',desc:'علامات بسيطة للمناطق',on:false},{id:'blocklogging',name:'BlockLogging',cat:'protection',desc:'تسجيل تعديلات الكتل',on:false},{id:'antigrief',name:'AntiGrief',cat:'protection',desc:'كشف ومنع التخريب',on:false},{id:'areaoverlap',name:'AreaOverlap',cat:'protection',desc:'منع تداخل المناطق',on:false},{id:'safeexit',name:'SafeExit',cat:'protection',desc:'خروج آمن',on:false},{id:'worldguardex',name:'WG-Extended',cat:'protection',desc:'إضافات WorldGuard',on:false},{id:'pvpbalance',name:'PvPBalance',cat:'protection',desc:'توازن PvP',on:false},{id:'chestlock',name:'ChestLock',cat:'protection',desc:'قفل الصناديق المتقدم',on:false},{id:'entryprotect',name:'EntryProtect',cat:'protection',desc:'حماية المداخل',on:false},{id:'antiportal',name:'AntiPortal',cat:'protection',desc:'منع البوابات التعسفية',on:false},{id:'trapped',name:'Trapped',cat:'protection',desc:'مناطق الأسر',on:false},{id:'claimextend',name:'ClaimExtend',cat:'protection',desc:'توسيع المطالبات',on:false},{id:'spawnflags',name:'SpawnFlags',cat:'protection',desc:'علامات Spawning',on:false},{id:'blockregen',name:'BlockRegen',cat:'protection',desc:'تجديد الكتل تلقائياً',on:false},{id:'firecontrol',name:'FireControl',cat:'protection',desc:'تحكم بالنار',on:false},{id:'lavacontrol',name:'LavaControl',cat:'protection',desc:'تحكم في الحمم',on:false},{id:'watercontrol',name:'WaterControl',cat:'protection',desc:'تحكم في الماء',on:false},{id:'tntcontrol',name:'TNTControl',cat:'protection',desc:'تحكم في الـ TNT',on:false},{id:'creepercontrol',name:'CreeperControl',cat:'protection',desc:'تحكم في الـ Creeper',on:false},{id:'endermancontrol',name:'EndermanControl',cat:'protection',desc:'تحكم في Enderman',on:false},{id:'slimecontrol',name:'SlimeControl',cat:'protection',desc:'تحكم في Slime',on:false},{id:'mobcontrol',name:'MobControl',cat:'protection',desc:'تحكم عام في المخلوقات',on:false},{id:'griefalert',name:'GriefAlert',cat:'protection',desc:'تنبيهات التخريب',on:false},
{id:'clearlag',name:'ClearLag',cat:'performance',desc:'تنظيف entities الزائدة',on:true},{id:'spark',name:'Spark',cat:'performance',desc:'مراقبة TPS و RAM',on:true},{id:'chunky',name:'Chunky',cat:'performance',desc:'توليد chunks مسبقاً',on:true},{id:'nolagg',name:'NoLagg',cat:'performance',desc:'إزالة entities الزائدة',on:true},{id:'farmcontrol',name:'FarmControl',cat:'performance',desc:'تحكم بحجم المزارع',on:true},{id:'entityclearer',name:'EntityClearer',cat:'performance',desc:'تنظيف entities تلقائي',on:true},{id:'tpsmonitor',name:'TPSMonitor',cat:'performance',desc:'مراقبة TPS مع تنبيهات',on:true},{id:'performanceplus',name:'PerformancePlus',cat:'performance',desc:'تحسين عام',on:false},{id:'fawe',name:'FastAsyncWorldEdit',cat:'performance',desc:'نسخة أسرع من WE',on:false},{id:'optimizedgenerators',name:'OptimizedGens',cat:'performance',desc:'تحسين المولدات',on:false},{id:'pufferfish',name:'Pufferfish',cat:'performance',desc:'تحسينات Paper',on:false},{id:'purpur',name:'Purpur',cat:'performance',desc:'تحسينات Paper+',on:false},{id:'aikarflags',name:'Aikar Flags',cat:'performance',desc:'تحسينات JVM',on:false},{id:'lithium',name:'Lithium',cat:'performance',desc:'تحسينات عامة',on:false},{id:'phosphor',name:'Phosphor',cat:'performance',desc:'تحسين الإضاءة',on:false},{id:'starlight',name:'Starlight',cat:'performance',desc:'محرك إضاءة سريع',on:false},{id:'asyncworld',name:'AsyncWorld',cat:'performance',desc:'تحميل العوالم غير المتزامن',on:false},{id:'mobfan',name:'MobFan',cat:'performance',desc:'تقليل عدد المخلوقات',on:false},{id:'slaboptimizer',name:'SlabOptimizer',cat:'performance',desc:'تحسين الألواح',on:false},{id:'redstonelag',name:'RedstoneLag',cat:'performance',desc:'تقليل lag الريدستون',on:false},{id:'itemhider',name:'ItemHider',cat:'performance',desc:'إخفاء الأغراض الملقاة',on:false},{id:'limitentities',name:'LimitEntities',cat:'performance',desc:'تحديد عدد entities',on:false},{id:'entitytracker',name:'EntityTracker',cat:'performance',desc:'تتبع entities',on:false},{id:'cacheprotocol',name:'CacheProtocol',cat:'performance',desc:'تخزين مؤقت للبروتوكول',on:false},{id:'packetlimiter',name:'PacketLimiter',cat:'performance',desc:'تحديد الحزم',on:false},{id:'timings',name:'Timings',cat:'performance',desc:'قياس أداء مفصل',on:false},{id:'gccontrol',name:'GCControl',cat:'performance',desc:'تحكم في garbage collector',on:false},{id:'heapdump',name:'HeapDump',cat:'performance',desc:'تصدير ذاكرة',on:false},{id:'memmonitor',name:'MemMonitor',cat:'performance',desc:'مراقبة الذاكرة',on:false},{id:'cpumonitor',name:'CPUMonitor',cat:'performance',desc:'مراقبة المعالج',on:false},{id:'diskmonitor',name:'DiskMonitor',cat:'performance',desc:'مراقبة القرص',on:false},{id:'netmonitor',name:'NetMonitor',cat:'performance',desc:'مراقبة الشبكة',on:false},{id:'threadwatch',name:'ThreadWatch',cat:'performance',desc:'مراقبة الخيوط',on:false},{id:'tickmonitor',name:'TickMonitor',cat:'performance',desc:'مراقبة الـ ticks',on:false},{id:'chunkoptim',name:'ChunkOptim',cat:'performance',desc:'تحسين chunks',on:false},{id:'lightoptim',name:'LightOptim',cat:'performance',desc:'تحسين الإضاءة',on:false},{id:'pathoptim',name:'PathOptim',cat:'performance',desc:'تحسين المسارات',on:false},{id:'aioptim',name:'AIOptim',cat:'performance',desc:'تحسين AI المخلوقات',on:false},{id:'redstoneoptim',name:'RedstoneOptim',cat:'performance',desc:'تحسين الريدستون',on:false},{id:'wateroptim',name:'WaterOptim',cat:'performance',desc:'تحسين تدفق الماء',on:false},{id:'fireoptim',name:'FireOptim',cat:'performance',desc:'تحسين انتشار النار',on:false},{id:'expopt',name:'ExpOptim',cat:'performance',desc:'تحسين خبرة XP',on:false},{id:'itemoptim',name:'ItemOptim',cat:'performance',desc:'تحسين الأغراض',on:false},{id:'moboptim',name:'MobOptim',cat:'performance',desc:'تحسين المخلوقات',on:false},{id:'nbtcompress',name:'NBTCompress',cat:'performance',desc:'ضغط البيانات NBT',on:false},{id:'chunkcache',name:'ChunkCache',cat:'performance',desc:'تخزين chunks مؤقت',on:false},{id:'packetcompress',name:'PacketCompress',cat:'performance',desc:'ضغط الحزم',on:false},{id:'networkoptim',name:'NetworkOptim',cat:'performance',desc:'تحسين الشبكة',on:false},{id:'iooptim',name:'IOOptim',cat:'performance',desc:'تحسين الإدخال/الإخراج',on:false},
{id:'essentials_eco',name:'EssentialsX Economy',cat:'economy',desc:'نظام اقتصاد أساسي',on:true},{id:'shopguiplus',name:'ShopGUI+',cat:'economy',desc:'متجر GUI',on:true},{id:'auctionhouse',name:'AuctionHouse',cat:'economy',desc:'نظام مزادات',on:false},{id:'jobs',name:'Jobs',cat:'economy',desc:'نظام وظائف',on:false},{id:'crates',name:'Crates',cat:'economy',desc:'صناديق عشوائية',on:false},{id:'mcmmo',name:'mcMMO',cat:'economy',desc:'مهارات RPG',on:false},{id:'skills',name:'AureliumSkills',cat:'economy',desc:'مهارات متقدمة',on:false},{id:'tokenmanager',name:'TokenManager',cat:'economy',desc:'نظام توكنات',on:false},{id:'votifier',name:'Votifier',cat:'economy',desc:'مكافآت التصويت',on:false},{id:'luckyblocks',name:'LuckyBlocks',cat:'economy',desc:'صناديق حظ',on:false},{id:'bankplus',name:'BankPlus',cat:'economy',desc:'نظام بنك متقدم',on:false},{id:'coinflip',name:'CoinFlip',cat:'economy',desc:'رمي عملة',on:false},{id:'bounty',name:'Bounty',cat:'economy',desc:'مكافآت على القتل',on:false},{id:'robbery',name:'Robbery',cat:'economy',desc:'نظام سرقة',on:false},{id:'lottery',name:'Lottery',cat:'economy',desc:'نظام يانصيب',on:false},{id:'withdraw',name:'Withdraw',cat:'economy',desc:'سحب عملات',on:false},{id:'deposity',name:'Deposity',cat:'economy',desc:'إيداع عملات',on:false},{id:'transfer',name:'Transfer',cat:'economy',desc:'تحويل عملات',on:false},{id:'salary',name:'Salary',cat:'economy',desc:'رواتب يومية',on:false},{id:'taxes',name:'Taxes',cat:'economy',desc:'نظام ضرائب',on:false},{id:'market',name:'Market',cat:'economy',desc:'سوق للاعبين',on:false},{id:'trading',name:'Trading',cat:'economy',desc:'تبادل أغراض',on:false},{id:'auctionplus',name:'AuctionPlus',cat:'economy',desc:'مزادات إضافية',on:false},{id:'mining',name:'MiningRewards',cat:'economy',desc:'مكافآت الحفر',on:false},{id:'farming',name:'FarmingRewards',cat:'economy',desc:'مكافآت الزراعة',on:false},{id:'fishing',name:'FishingRewards',cat:'economy',desc:'مكافآت الصيد',on:false},{id:'woodcutting',name:'WoodCutting',cat:'economy',desc:'مكافآت قطع الأشجار',on:false},{id:'smelting',name:'SmeltingRewards',cat:'economy',desc:'مكافآت الصهر',on:false},{id:'breeding',name:'BreedingRewards',cat:'economy',desc:'مكافآت التكاثر',on:false},{id:'enchanting',name:'EnchantRewards',cat:'economy',desc:'مكافآت التسحيم',on:false},{id:'brewing',name:'BrewingRewards',cat:'economy',desc:'مكافآت التخمير',on:false},{id:'tradingpost',name:'TradingPost',cat:'economy',desc:'نقاط تبادل',on:false},{id:'playershops',name:'PlayerShops',cat:'economy',desc:'متاجر لاعبين',on:false},{id:'baltop',name:'BalTop',cat:'economy',desc:'أغنى اللاعبين',on:false},{id:'paymulti',name:'PayMulti',cat:'economy',desc:'مضاعفة الدفع',on:false},{id:'dailyreward',name:'DailyReward',cat:'economy',desc:'مكافأة يومية',on:false},{id:'weeklyreward',name:'WeeklyReward',cat:'economy',desc:'مكافأة أسبوعية',on:false},{id:'vipshop',name:'VIPShop',cat:'economy',desc:'متجر VIP',on:false},{id:'blackmarket',name:'BlackMarket',cat:'economy',desc:'السوق السوداء',on:false},{id:'itemshop',name:'ItemShop',cat:'economy',desc:'متجر أغراض',on:false},
{id:'essentials_cmds',name:'EssentialsX Commands',cat:'player',desc:'أوامر أساسية: /tpa, /home',on:true},{id:'luckperms',name:'LuckPerms',cat:'admin',desc:'إدارة الصلاحيات',on:true},{id:'tab',name:'TAB',cat:'player',desc:'تخصيص قائمة اللاعبين',on:true},{id:'placeholderapi',name:'PlaceholderAPI',cat:'player',desc:'API للـ placeholders',on:true},{id:'skinsrestorer',name:'SkinsRestorer',cat:'player',desc:'استعادة الـ skins',on:true},{id:'chatmanager',name:'ChatManager',cat:'player',desc:'إدارة الشات',on:true},{id:'afkplus',name:'AntiAFK+',cat:'player',desc:'منع طرد AFK',on:true},{id:'discordsrv',name:'DiscordSRV',cat:'admin',desc:'ربط Discord',on:true},{id:'backpacks',name:'Backpacks',cat:'player',desc:'حقائب ظهر',on:false},{id:'nicknames',name:'Nicknames',cat:'player',desc:'تغيير الأسماء',on:false},{id:'heads',name:'HeadsDatabase',cat:'player',desc:'رؤوس لاعبين',on:false},{id:'silktouch',name:'SilkSpawners',cat:'player',desc:'نقل مولدات',on:false},{id:'homesystem',name:'HomeSystem',cat:'player',desc:'نظام بيوت متقدم',on:false},{id:'warpsystem',name:'WarpSystem',cat:'player',desc:'نظام نقاط انتقال',on:false},{id:'tpamulti',name:'TPAMulti',cat:'player',desc:'طلب انتقال متعدد',on:false},{id:'tpcoords',name:'TPCoords',cat:'player',desc:'انتقال بالإحداثيات',on:false},{id:'msgreply',name:'MsgReply',cat:'player',desc:'رد سريع على الرسائل',on:false},{id:'socialspy',name:'SocialSpy',cat:'player',desc:'متابعة المحادثات',on:false},{id:'flyzone',name:'FlyZone',cat:'player',desc:'مناطق طيران',on:false},{id:'speedmine',name:'SpeedMine',cat:'player',desc:'حفر سريع',on:false},{id:'doublejump',name:'DoubleJump',cat:'player',desc:'قفزة مزدوجة',on:false},{id:'jetpack',name:'JetPack',cat:'player',desc:'حقيبة نارية',on:false},{id:'godmode',name:'GodMode',cat:'player',desc:'وضع الإله',on:false},{id:'fly',name:'Fly',cat:'player',desc:'الطيران',on:false},{id:'vanish',name:'Vanish',cat:'player',desc:'الاختفاء',on:false},{id:'spectator',name:'Spectator',cat:'player',desc:'المشاهدة',on:false},{id:'heal',name:'Heal',cat:'player',desc:'العلاج',on:false},{id:'feed',name:'Feed',cat:'player',desc:'التغذية',on:false},{id:'kit',name:'Kit',cat:'player',desc:'أدوات جاهزة',on:false},{id:'spawn',name:'Spawn',cat:'player',desc:'العودة للـ spawn',on:false},{id:'back',name:'Back',cat:'player',desc:'العودة للمكان السابق',on:false},{id:'hat',name:'Hat',cat:'player',desc:'ارتداء القبعة',on:false},{id:'enderchest',name:'EnderChest',cat:'player',desc:'فتح صندوق Ender',on:false},{id:'craft',name:'Craft',cat:'player',desc:'صناعة في أي مكان',on:false},{id:'anvil',name:'Anvil',cat:'player',desc:'مسمار في أي مكان',on:false},{id:'enchant',name:'Enchant',cat:'player',desc:'تسحيم في أي مكان',on:false},{id:'repair',name:'Repair',cat:'player',desc:'إصلاح في أي مكان',on:false},{id:'trash',name:'Trash',cat:'player',desc:'سلة مهملات',on:false},{id:'report',name:'Report',cat:'player',desc:'الإبلاغ عن لاعب',on:false},{id:'warn',name:'Warn',cat:'player',desc:'تحذير لاعب',on:false},
{id:'multiverse',name:'Multiverse-Core',cat:'world',desc:'إدارة عوالم متعددة',on:true},{id:'dynmap',name:'Dynmap',cat:'world',desc:'خريطة ديناميكية',on:true},{id:'bluemap',name:'BlueMap',cat:'world',desc:'خريطة ثلاثية الأبعاد',on:false},{id:'mv_inventories',name:'MV-Inventories',cat:'world',desc:'مخزونات منفصلة',on:false},{id:'plotme',name:'PlotMe',cat:'world',desc:'نظام مساحات بناء',on:false},{id:'myworlds',name:'MyWorlds',cat:'world',desc:'إدارة عوالم',on:false},{id:'voidgen',name:'VoidGen',cat:'world',desc:'توليد عوالم فارغة',on:false},{id:'worldborder',name:'WorldBorder',cat:'world',desc:'حدود عالم',on:false},{id:'netherportals',name:'NetherPortals',cat:'world',desc:'تخصيص بوابات',on:false},{id:'timecontrol',name:'TimeControl',cat:'world',desc:'تحكم بالوقت',on:false},{id:'weathercontrol',name:'WeatherControl',cat:'world',desc:'تحكم بالطقس',on:false},{id:'terraincontrol',name:'TerrainControl',cat:'world',desc:'تحكم بالطبوغرافيا',on:false},{id:'worldgen',name:'WorldGen',cat:'world',desc:'توليد عوالم',on:false},{id:'biomectl',name:'BiomeControl',cat:'world',desc:'تحكم بالبيئات',on:false},{id:'oregen',name:'OreGen',cat:'world',desc:'توليد الخامات',on:false},{id:'treegen',name:'TreeGen',cat:'world',desc:'توليد الأشجار',on:false},{id:'structuregen',name:'StructureGen',cat:'world',desc:'توليد الهياكل',on:false},{id:'dungeongen',name:'DungeonGen',cat:'world',desc:'توليد الزنزانات',on:false},{id:'villagegen',name:'VillageGen',cat:'world',desc:'توليد القرى',on:false},{id:'citygen',name:'CityGen',cat:'world',desc:'توليد المدن',on:false},{id:'islandgen',name:'IslandGen',cat:'world',desc:'توليد الجزر',on:false},{id:'flatworld',name:'FlatWorld',cat:'world',desc:'عوالم مسطحة',on:false},{id:'amplified',name:'Amplified',cat:'world',desc:'عوالم مكبرة',on:false},{id:'superflat',name:'SuperFlat',cat:'world',desc:'عوالم مسطحة خارقة',on:false},{id:'skyworld',name:'SkyWorld',cat:'world',desc:'عالم سماوي',on:false},{id:'netherworld',name:'NetherWorld',cat:'world',desc:'عالم Nether',on:false},{id:'endworld',name:'EndWorld',cat:'world',desc:'عالم End',on:false},{id:'pocketworld',name:'PocketWorld',cat:'world',desc:'عوالم جيبية',on:false},{id:'minworld',name:'MiniWorld',cat:'world',desc:'عوالم صغيرة',on:false},{id:'megaworld',name:'MegaWorld',cat:'world',desc:'عوالم ضخمة',on:false},
{id:'bedwars',name:'BedWars',cat:'fun',desc:'لعبة BedWars',on:false},{id:'skyblock',name:'ASkyBlock',cat:'fun',desc:'نظام SkyBlock',on:false},{id:'parkour',name:'Parkour',cat:'fun',desc:'مسارات Parkour',on:false},{id:'duels',name:'Duels',cat:'fun',desc:'قتال 1v1',on:false},{id:'arenapvp',name:'ArenaPvP',cat:'fun',desc:'منطقة PvP',on:false},{id:'treasurereward',name:'TreasureReward',cat:'fun',desc:'مكافآت يومية',on:false},{id:'deathmessages',name:'DeathMessages',cat:'fun',desc:'رسائل وفاة',on:false},{id:'mobarena',name:'MobArena',cat:'fun',desc:'arena مخلوقات',on:false},{id:'minigames',name:'Minigames',cat:'fun',desc:'ميني غيمز',on:false},{id:'trivia',name:'Trivia',cat:'fun',desc:'أسئلة معلومات',on:false},{id:'sitanywhere',name:'SitAnywhere',cat:'fun',desc:'الجلوس في أي مكان',on:false},{id:'cosmetics',name:'CosmeticsPlus',cat:'fun',desc:'تزيينات',on:false},{id:'marriage',name:'Marriage',cat:'fun',desc:'نظام زواج',on:false},{id:'pets',name:'PetMaster',cat:'fun',desc:'حيوانات أليفة',on:false},{id:'headhunting',name:'HeadHunting',cat:'fun',desc:'صيد رؤوس',on:false},{id:'treecapitator',name:'Treecapitator',cat:'fun',desc:'قطع الأشجار',on:false},{id:'veinminer',name:'VeinMiner',cat:'fun',desc:'حفر الأوردة',on:false},{id:'durabilityping',name:'DurabilityPing',cat:'fun',desc:'تنبيه التلف',on:false},{id:'nightmare',name:'Nightmare',cat:'fun',desc:'مخلوقات مرعبة',on:false},{id:'armorstandtools',name:'ArmorStandTools',cat:'fun',desc:'تخصيص دروع الخشب',on:false},{id:'dropparty',name:'DropParty',cat:'fun',desc:'حزب إسقاط',on:false},{id:'lottery_fun',name:'Lottery Fun',cat:'fun',desc:'يانصيب ترفيهي',on:false},{id:'wheeloffortune',name:'WheelOfFortune',cat:'fun',desc:'عجلة الحظ',on:false},{id:'dailylogin',name:'DailyLogin',cat:'fun',desc:'تسجيل دخول يومي',on:false},{id:'streak',name:'Streak',cat:'fun',desc:'أيام متتالية',on:false},{id:'achievements',name:'Achievements',cat:'fun',desc:'إنجازات',on:false},{id:'leaderboard',name:'Leaderboard',cat:'fun',desc:'لوحة صدارة',on:false},{id:'rankup',name:'RankUp',cat:'fun',desc:'ترقيات',on:false},{id:'title',name:'Titles',cat:'fun',desc:'ألقاب',on:false},{id:'particle',name:'Particles',cat:'fun',desc:'جسيمات',on:false},{id:'hologram',name:'Hologram',cat:'fun',desc:'هولوغرام',on:false},{id:'disguise',name:'Disguise',cat:'fun',desc:'تنكر',on:false},{id:'morph',name:'Morph',cat:'fun',desc:'تحول',on:false},{id:'furniture',name:'Furniture',cat:'fun',desc:'أثاث',on:false},{id:'player_heads',name:'PlayerHeads',cat:'fun',desc:'رؤوس لاعبين ترفيهية',on:false},{id:'skulls',name:'Skulls',cat:'fun',desc:'جماجم',on:false},{id:'paintings',name:'Paintings',cat:'fun',desc:'لوحات',on:false},{id:'books',name:'Books',cat:'fun',desc:'كتب',on:false},{id:'music',name:'Music',cat:'fun',desc:'موسيقى',on:false},{id:'fireworks',name:'Fireworks',cat:'fun',desc:'ألعاب نارية',on:false},
{id:'lp_groups',name:'LuckPerms Groups',cat:'admin',desc:'إدارة المجموعات',on:true},{id:'bansystem',name:'BanSystem',cat:'admin',desc:'نظام حظر و طرد',on:true},{id:'admin_tools',name:'AdminTools',cat:'admin',desc:'أدوات الإدارة المتقدمة',on:true},{id:'essentials_admin',name:'EssentialsX Admin',cat:'admin',desc:'أوامر الإدارة المتقدمة',on:true},{id:'vault_admin',name:'Vault',cat:'admin',desc:'API الأمان والصلاحيات',on:true},{id:'server_logs',name:'ServerLogs',cat:'admin',desc:'سجلات السيرفر',on:true},{id:'permission_manager',name:'PermissionManager',cat:'admin',desc:'مدير الصلاحيات',on:true},{id:'console_logger',name:'ConsoleLogger',cat:'admin',desc:'تسجيل وحدة التحكم',on:true},{id:'server_monitor',name:'ServerMonitor',cat:'admin',desc:'مراقبة السيرفر',on:true},{id:'luckyperms',name:'LuckPerms Editor',cat:'admin',desc:'محرر الصلاحيات',on:false},{id:'commandspy',name:'CommandSpy',cat:'admin',desc:'متابعة الأوامر',on:false},{id:'alert',name:'Alert',cat:'admin',desc:'تنبيهات إدارية',on:false},{id:'freeze',name:'Freeze',cat:'admin',desc:'تجميد لاعب',on:false},{id:'jail',name:'Jail',cat:'admin',desc:'سجن لاعب',on:false},{id:'mute',name:'Mute',cat:'admin',desc:'كتم لاعب',on:false},{id:'kick',name:'Kick',cat:'admin',desc:'طرد لاعب',on:false},{id:'ban',name:'Ban',cat:'admin',desc:'حظر لاعب',on:false},{id:'tempban',name:'TempBan',cat:'admin',desc:'حظر مؤقت',on:false},{id:'ipban',name:'IPBan',cat:'admin',desc:'حظر IP',on:false},{id:'unban',name:'UnBan',cat:'admin',desc:'رفع الحظر',on:false},{id:'pardon',name:'Pardon',cat:'admin',desc:'عفو',on:false},{id:'broadcast',name:'Broadcast',cat:'admin',desc:'بث عام',on:false},{id:'announce',name:'Announce',cat:'admin',desc:'إعلان',on:false},{id:'broadcasttitle',name:'BroadcastTitle',cat:'admin',desc:'بث بعنوان',on:false},{id:'serverlist',name:'ServerList',cat:'admin',desc:'قائمة السيرفر',on:false},{id:'serverinfo',name:'ServerInfo',cat:'admin',desc:'معلومات السيرفر',on:false},{id:'serverreload',name:'ServerReload',cat:'admin',desc:'إعادة تحميل',on:false},{id:'serverbackup',name:'ServerBackup',cat:'admin',desc:'نسخ احتياطي',on:false},{id:'serverrestart',name:'ServerRestart',cat:'admin',desc:'إعادة تشغيل',on:false},
{id:'humanbehavior',name:'HumanBehavior',cat:'bots',desc:'سلوك بشري واقعي',on:true},{id:'aibehavior',name:'AI Engine',cat:'bots',desc:'محرك ذكاء اصطناعي',on:true},{id:'pathfinding',name:'PathFinding',cat:'bots',desc:'إيجاد مسارات',on:true},{id:'chatresponse',name:'ChatResponse',cat:'bots',desc:'ردود المحادثة',on:true},{id:'followplayer',name:'FollowPlayer',cat:'bots',desc:'متابعة اللاعبين',on:true},{id:'buildskill',name:'BuildSkill',cat:'bots',desc:'مهارة البناء',on:true},{id:'mineskill',name:'MineSkill',cat:'bots',desc:'مهارة الحفر',on:true},{id:'farmskill',name:'FarmSkill',cat:'bots',desc:'مهارة الزراعة',on:true},{id:'fightskill',name:'FightSkill',cat:'bots',desc:'مهارة القتال',on:true},{id:'craftskill',name:'CraftSkill',cat:'bots',desc:'مهارة الصناعة',on:true},{id:'fishskill',name:'FishSkill',cat:'bots',desc:'مهارة الصيد',on:true},{id:'sleepcycle',name:'SleepCycle',cat:'bots',desc:'دورة النوم',on:true},{id:'survivalinstinct',name:'SurvivalInstinct',cat:'bots',desc:'بقاء واقعي',on:true},{id:'weatherreact',name:'WeatherReact',cat:'bots',desc:'رد على الطقس',on:false},{id:'daynight',name:'DayNight',cat:'bots',desc:'دورة الليل والنهار',on:false},{id:'sociallearning',name:'SocialLearning',cat:'bots',desc:'تعلم اجتماعي',on:false},{id:'memorysystem',name:'MemorySystem',cat:'bots',desc:'نظام ذاكرة',on:false},{id:'goalsetting',name:'GoalSetting',cat:'bots',desc:'تحديد أهداف',on:false},{id:'threatassess',name:'ThreatAssess',cat:'bots',desc:'تقييم التهديدات',on:false},{id:'multiserver',name:'MultiServer',cat:'bots',desc:'إدارة سيرفرات متعددة',on:false}
];
let currentFilter='all';
let features={};
try{const s=localStorage.getItem('sb_features');if(s)features=JSON.parse(s);}catch(_){}
ALL_FEATURES.forEach(f=>{if(features[f.id]===undefined)features[f.id]=f.on;});
// render filter tabs
(function(){
var h='<div class="filter-tab active" data-cat="all" onclick="setFilter(\'all\')">الكل</div>';
CATS.forEach(function(c){h+='<div class="filter-tab" data-cat="'+c.id+'" onclick="setFilter(\''+c.id+'\')" style="--c:'+c.color+'">'+c.icon+' '+c.name+'</div>';});
document.getElementById('filterTabs').innerHTML=h;
})();
function render(){
var q=(document.getElementById('searchBox').value||'').toLowerCase();
var filtered=ALL_FEATURES.filter(function(f){
if(currentFilter!=='all'&&f.cat!==currentFilter)return false;
if(q&&f.name.toLowerCase().indexOf(q)<0&&f.desc.toLowerCase().indexOf(q)<0)return false;
return true;
});
var enabled=ALL_FEATURES.filter(function(f){return features[f.id];}).length;
document.getElementById('statsBar').innerHTML='<div class="stat-pill" style="border-color:rgba(63,185,80,.3);color:var(--green)">✅ المفعلة: <span class="num">'+enabled+'</span></div><div class="stat-pill" style="border-color:rgba(248,81,73,.3);color:var(--red)">❌ المعطّلة: <span class="num">'+(ALL_FEATURES.length-enabled)+'</span></div><div class="stat-pill" style="border-color:rgba(88,166,255,.3);color:var(--blue)">📊 الإجمالي: <span class="num">'+ALL_FEATURES.length+'</span></div>';
var grouped={};
filtered.forEach(function(f){if(!grouped[f.cat])grouped[f.cat]=[];grouped[f.cat].push(f);});
var html='';
CATS.forEach(function(c){
var feats=grouped[c.id];
if(!feats||!feats.length)return;
var catEnabled=feats.filter(function(f){return features[f.id];}).length;
html+='<div class="cat-section" data-cat="'+c.id+'">';
html+='<div class="cat-header"><span class="cat-icon">'+c.icon+'</span><span class="cat-name" style="color:'+c.color+'">'+c.name+'</span><span class="cat-count">'+catEnabled+'/'+feats.length+'</span><button class="cat-toggle" data-cid="'+c.id+'" onclick="toggleCat(this.dataset.cid)">تشغيل الكل / إيقاف الكل</button></div>';
html+='<div class="features-grid">';
feats.forEach(function(f){
html+='<div class="'+(features[f.id]?'feature-card':'feature-card disabled')+'" id="fc-'+f.id+'">';
html+='<label class="toggle"><input type="checkbox" '+(features[f.id]?'checked':'')+' data-fid="'+f.id+'" onchange="toggleFeature(this.dataset.fid,this.checked)"><span class="toggle-slider"></span></label>';
html+='<div class="feature-info"><div class="feature-name">'+f.name+'</div><div class="feature-desc">'+f.desc+'</div></div></div>';
});
html+='</div></div>';
});
if(!filtered.length)html='<div class="empty">لا توجد ميزات مطابقة للبحث</div>';
document.getElementById('featuresContainer').innerHTML=html;
}
function toggleFeature(id,val){
features[id]=val;
var card=document.getElementById('fc-'+id);
if(card)card.classList.toggle('disabled',!val);
localStorage.setItem('sb_features',JSON.stringify(features));
updateStats();
}
function toggleCat(catId){
var feats=ALL_FEATURES.filter(function(f){return f.cat===catId;});
var allOn=feats.every(function(f){return features[f.id];});
feats.forEach(function(f){features[f.id]=!allOn;});
localStorage.setItem('sb_features',JSON.stringify(features));
render();
}
function setFilter(cat){
currentFilter=cat;
document.querySelectorAll('.filter-tab').forEach(function(t){t.classList.toggle('active',t.dataset.cat===cat);});
render();
}
function filterFeatures(){render();}
function updateStats(){
var enabled=ALL_FEATURES.filter(function(f){return features[f.id];}).length;
document.getElementById('statsBar').innerHTML='<div class="stat-pill" style="border-color:rgba(63,185,80,.3);color:var(--green)">✅ المفعلة: <span class="num">'+enabled+'</span></div><div class="stat-pill" style="border-color:rgba(248,81,73,.3);color:var(--red)">❌ المعطّلة: <span class="num">'+(ALL_FEATURES.length-enabled)+'</span></div><div class="stat-pill" style="border-color:rgba(88,166,255,.3);color:var(--blue)">📊 الإجمالي: <span class="num">'+ALL_FEATURES.length+'</span></div>';
}
async function saveAll(){
try{
await fetch('/api/features/save',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({features})});
showToast('✅ تم حفظ جميع التغييرات','ok');
}catch(e){showToast('❌ فشل الحفظ','err');}
}
function exportFeatures(){
var data=JSON.stringify({features,exportedAt:new Date().toISOString()},null,2);
var blob=new Blob([data],{type:'application/json'});
var a=document.createElement('a');a.href=URL.createObjectURL(blob);a.download='features-config.json';a.click();
showToast('✅ تم التصدير','ok');
}
function importFeatures(e){
var file=e.target.files[0];if(!file)return;
var reader=new FileReader();
reader.onload=function(ev){
try{
var data=JSON.parse(ev.target.result);
if(data.features){Object.assign(features,data.features);localStorage.setItem('sb_features',JSON.stringify(features));render();showToast('✅ تم الاستيراد','ok');}
else showToast('❌ ملف غير صالح','err');
}catch(_){showToast('❌ ملف غير صالح','err');}
};
reader.readAsText(file);
}
function showToast(msg,type){
var t=document.getElementById('toast');t.textContent=msg;t.className='toast show '+type;
clearTimeout(showToast._t);showToast._t=setTimeout(function(){t.className='toast';},3000);
}
render();
</script>
</body>
</html>