eatenbread.com

🗺️

生存指南

⚔️

面包武道馆

⚙️

红石实验室

📮 玩家建议箱

// 👇 你的所有数据 100% 原样不动 const contentData = { survival: { title: "板块一:生存指南", items: [{name:"1. 基础准备", subItems:["1.1 基础工具", "1.2 建筑材料"]}, "2. 饥饿值&血量", "3. 村民贸易", "4. 合理的“外挂”", "5. 下界&末地“通行证”", "6. 高级追求", "7. 全成就"] }, pvp: { title: "板块二:面包武道馆", items: ["1. 合成配方", "2. 基础身法", "3. 武器博弈", "4. 防御保命", "5. 高级进阶", "6. 药水酿造"] }, redstone: { title: "板块三:红石实验室", items: [ { name: "1. 能量起源", subItems: ["1.1 能量源头", "1.2 红石基础"] }, { name: "2. 自动工厂", subItems: ["2.1 隐藏物品器", "2.2 半自动农场", "2.3 全自动甘蔗机"] }, { name: "3. 红石大脑", subItems: ["3.1 2x2活塞门", "3.2 自动酿造台", "3.3 盾构机"] }, { name: "4. 熟练于心", subItems: ["4.1 3x3螺旋门", "4.2 垂直飞行器", "4.3 自动刷石机"] }, { name: "5. 扬帆起航", subItems: ["5.1 16色羊毛厂", "5.2 循环活塞库", "5.3 试炼密室刷怪塔"] }, { name: "💀 最终挑战", subItems: ["世吞 (World Eater)", "天基屠龙炮"] } ] } }; const tacticalData = { "1. 合成配方": { category: "Weapon Crafting", title: "核心武器库:合成与进阶", steps: [ { img: "img/sword.png", text: "剑 (Sword):
基础:2*矿物 + 1*木棍。
面包批注: 配合“锋利V”和“横扫之刃”,它是清理僵尸围城的终极神器。" }, { img: "img/axe.png", text: "斧 (Axe):
基础:3*矿物 + 2*木棍。
面包批注: 1.21 版本中,斧头是唯一能有效破除对方盾牌防守的重型武器。" }, { img: "img/bow.png", text: "弓 (Bow):
配方:3*木棍 + 3*线。
面包批注: 别忘了给它打上“无限”或者“经验修补”。" }, { img: "img/crossbow.png", text: "弩 (Crossbow):
配方:3*木棍 + 2*线 + 1*铁锭 + 1*钩子。
进阶: 配合“多重射击”和“烟花火箭”,能打出范围爆炸伤害。" }, { img: "img/mace.png", text: "重锤 (Mace):
配方:1*沉重核心 + 1*旋风棒。
核心机制: 1.21 新贵。从高处落下攻击,高度越高伤害越高,且能抵消掉落伤害!" }, { img: "img/spear.png", text: "长矛 (Spear):
配方:1*矿物 + 2*木棍。
面包批注: 攻击距离非常远,可以达到原先近战武器无法达到的攻击距离。" }, { img: "img/trident.png", text: "三叉戟 (Trident):
获取:溺尸掉落(不可合成)。
面包批注: 附魔“激流”后,在雨天你就是会飞的超人。" } ] }, "1.1 能量源头": { category: "Redstone Power", title: "核心能源合成清单", steps: [ { img: "img/redstone_torch.png", text: "红石火把: 信号反转的核心(非门)。能向上方块传导强信号。" }, { img: "img/redstone_block.png", text: "红石块: 永恒的 15 级强信号源。" }, { img: "img/observer.png", text: "侦测器: 监视方块更新。只要面前有变化,就发出一帧脉冲。" }, { img: "img/target.png", text: "标靶: 只要被射中就会传输红石信号,远程武器练习的好帮手。" }, { img: "img/comparator.png", text: "红石比较器: 监视方块更新。只要两个信号强度不一致就会发出信号。" }, { img: "img/repeater.png", text: "红石中继器: 在红石信号即将消失的时候,使用中继器连接即可恢复至15级!" }, { img: "img/daylight_detector.png", text: "阳光探测器: 监视时间变化,发出对应的红石强度。" } ] }, "1.2 红石基础": { category: "Redstone Theory", title: "红石能量基础知识", steps: [ { img: "img/redstone_decay.png", text: "1. 15格衰减律: 信号随距离逐格递减。" }, { img: "img/redstone_invert.png", text: "2. 逻辑反转: 逻辑门的基础。" }, { img: "img/redstone_freq.png", text: "3. 高频红石: 利用侦测器的特性让两个侦测器互相发出信号达到此效果。" }, { img: "img/redstone_signal.png", text: "4. 单一性: 红石粉连接红石方块时,只有直接连接会传递红石信号。" } ] }, "2.1 隐藏物品器": { category: "Level 2: Factory", title: "方块置换式隐藏装置", color: "#4ade80", steps: [{ img: "img/hide-item.png", text: `

原理深度解析: 本装置利用粘性活塞的复合推拉逻辑。通过红石信号同时激活垂直与水平方向的活塞组,实现地面方块与下方隐藏容器的瞬间位置交换。当信号切断时,活塞回弹,地表恢复平整,从而达到完美隐藏物资的效果。

面包批注: 1. 这是最基础的隐藏逻辑,适用于任何平整的地表或墙面。
2. 注意点: 确保活塞推拉的方块属于可移动属性,且电路布线不要干扰到周围的装饰方块。上方的泥土方块可以替换为任意可推动的方块。
(图片仅展示结构逻辑,具体样子玩家可自行修改。如有不符,以文字为准)
💾 下载 Litematic 图纸
` }] }, "2.2 半自动农场": { category: "Level 2: Factory", title: "大规模水流式半自动农场", color: "#4ade80", steps: [{ img: "img/wheat_farm.png", text: `

原理深度解析: 本系统利用发射器(Dispenser)内置水桶,在接收到红石脉冲后瞬间释放水流。水流通过流体更新算法,将成熟作物从耕地上“震落”变为掉落物实体。随后,利用水流的推进力将散落的资源统一冲刷至底部的收集槽(漏斗链),实现一键收割。

面包批注: 1. 这是生存初期的“财富密码”,建议配合简单的时钟电路(Clock Circuit)实现收割后自动关水。
2. 避坑指南: 务必在水流路径上方覆盖玻璃或其他透明方块,防止作物在冲刷过程中因物理碰撞飞溅到耕地之外,造成资源浪费。
(图片仅展示结构逻辑,具体样子玩家可自行修改。如有不符,以文字为准)
💾 下载 Litematic 图纸
` }] }, "2.3 全自动甘蔗机": { category: "Level 2: Factory", title: "观察者式全自动甘蔗收割机", color: "#4ade80", steps: [{ img: "img/sugarcane_machine.png", text: `

原理深度解析: 本装置基于“非接触式高度监测”逻辑。当甘蔗生长至三格高度时,位于顶层的侦测器会瞬间识别到方块更新。信号穿过支撑方块激活中间层的普通活塞,将甘蔗的第二层及以上部分推断。由于甘蔗底座未被破坏,它会继续循环生长。

面包批注: 1. 这是火箭燃料(纸)的核心来源,建议采取“多模块并联”排布。
2. 进阶技巧: 在甘蔗根部下方使用“漏斗矿车”进行全局收集,效率远高于普通漏斗。
(图片仅展示结构逻辑,具体样子玩家可自行修改。如有不符,以文字为准)
💾 下载 Litematic 图纸
` }] }, "3.1 2x2活塞门": { category: "Level 3: Intermediate", title: "2x2 标准内吸式隐藏门", color: "#FFD700", steps: [{ img: "img/piston_door.png", text: `

原理深度解析: 经典的“内吸式(Jeb Door)”结构。它通过两组粘性活塞的复合联动实现:第一组活塞负责将门面方块向内拉动,第二组活塞则负责将门面整体向两侧侧移。利用中继器调节延时实现完美平齐。

面包批注: 1. 红石美学的入门之作。不仅可以装在基地入口,还可以藏在图书馆的书架后面做暗室。
2. 技术重点: 注意布线的对称性。如果两侧开启时间不统一,视觉上会非常别扭。
(图片仅展示结构逻辑,具体样子玩家可自行修改。如有不符,以文字为准)
💾 下载 Litematic 图纸
` }] }, "3.3 盾构机": { category: "Level 3: Intermediate", title: "音符盒受控式盾构机", color: "#FFD700", steps: [{ img: "img/dungouji.png", text: `

原理深度解析: 利用音符盒更新触发侦测器,立即激活推进活塞组。通过活塞间的逻辑时序,带动前端的TNT复制机构进行水平位移,实现精准的手动步进效果。

面包批注: 1. 受控式更适合处理复杂地层。遇到水坑或黑曜石时,能立刻收手避免机器损毁。
2. 致命提醒: 启动前必须观察前方是否有流水,防止 TNT 在水中引爆导致回弹炸毁机器。
(图片仅展示结构逻辑,具体样子玩家可自行修改。如有不符,以文字为准)
💾 下载 Litematic 图纸
` }] }, "4.1 3x3螺旋门": { category: "Level 4: Advanced", title: "3x3 螺旋开启式机械门", color: "#00D4FF", steps: [{ img: "img/Spiral_Door.png", text: `

原理深度解析: 需利用底部的“二级递归(Double Piston Extender)”结构。通过及其精确的中继器刻数控制,在门开启时收回中心方块。四周方块则按照螺旋顺序依次收回。

面包批注: 1. 这种门的结构复杂且极其吃时序。稍微调错一个中继器档位,整个门就会因为方块没收回而卡死。
2. 建议: 初次搭建一定要开着 Litematic 的投影模式对照逻辑电路部分。
(图片仅展示结构逻辑,具体样子玩家可自行修改。如有不符,以文字为准)
💾 下载 Litematic 图纸
` }] }, "4.2 垂直飞行器": { category: "Level 4: Advanced", title: "单向垂直升降引擎", color: "#00D4FF", steps: [{ img: "img/vertical_flyer.png", text: `

原理分析: 利用观察者面朝下捕捉更新。当底部更新时,观察者激活顶部的粘性活塞,将整个机身(含粘性块)向上拉动。随后下方活塞跟进,完成单向循环。

面包批注: 1. 非常适合做全自动电梯或顶层轰炸机的上升部分。
2. 注意: 顶端一定要有“不可移动方块”挡住,否则它会一直飞到高度上限。
(图片仅展示结构逻辑,具体样子玩家可自行修改。如有不符,以文字为准)
💾 下载 Litematic 图纸
` }] }, "4.3 自动刷石机": { category: "Level 4: Advanced", title: "高频防损式全自动炸石机", color: "#00D4FF", steps: [{ img: "img/stone_generator.png", text: `

原理深度解析: 该装置利用水与岩浆接触生成圆石。通过高频红石时钟控制顶部的 TNT 复制机构,在特定高度引爆瞬间将圆石转化为掉落物,并由底部的漏斗阵列回收。

面包批注: 1. 安全核心: 水坑的设计不仅是为了刷石,更是为了吸收 TNT 的爆炸冲击波,防止机器炸膛。使用红石火把塔传输信号确保逻辑通畅。
2. 效率调优: 调整中继器延迟,让 TNT 落下频率刚好匹配圆石生成速度。避免了同时出现2个TNT互相爆炸的情况。
(图片仅展示结构逻辑,具体样子玩家可自行修改。如有不符,以文字为准)
💾 下载 Litematic 图纸
` }] }, "天基屠龙炮": { category: "Level 4: Advanced", title: "天基屠龙炮", color: "#ff4444", steps: [{ img: "img/tulong.png", text: `

原理深度解析: 天基屠龙炮是基于矢量加速与时序控制的末影龙斩杀装置。核心原理为:通过 TNT 复制矩阵在炮膛内同步生成大量 TNT,利用其爆炸产生的冲击波,将箭矢沿预设弹道加速至超高速;同时通过红石中继器与比较器组成的精密时序网络,控制 TNT 引爆时机与箭矢发射窗口,使箭矢在末影龙刷新瞬间精准命中其判定点,实现一击必杀。

面包批注: 1. 末地终局利器:专为高效斩杀末影龙设计,可集成于末地平台或移动平台,大幅缩短终局战斗流程。
2. 技术重点: 需严格保证 TNT 复制与引爆的同步性,箭矢校准模块需精准对齐龙池刷新坐标;时序偏差会导致威力衰减或炸膛,布线对称性是稳定运行的关键。
(图片仅展示结构逻辑,具体外观可自定义。如有不符,以文字为准)
💾 下载 Litematic 图纸
` }] } }; // 👇 最稳定、最简单的 JS,保证能点 function show(id) { document.getElementById(id).classList.remove('hidden'); } function hide(id) { document.getElementById(id).classList.add('hidden'); } function openPage(category, subItems, customTitle) { const home = document.getElementById('home-page'); const detail = document.getElementById('detail-page'); const container = document.getElementById('sub-blocks-container'); let data = subItems ? { title: customTitle, items: subItems } : contentData[category]; document.getElementById('detail-title').innerText = data.title; container.innerHTML = ''; data.items.forEach(item => { const block = document.createElement('div'); block.className = 'glass-card p-6 rounded-2xl text-center font-bold text-stone-700 cursor-pointer'; const name = typeof item === 'object' ? item.name : item; block.innerText = name; block.onclick = () => { if (typeof item === 'object' && item.subItems) { openPage(null, item.subItems, item.name); } else if (tacticalData[name]) { showTactical(tacticalData[name]); } else { alert("【" + name + "】正在努力烤制中..."); } }; container.appendChild(block); }); hide('home-page'); show('detail-page'); } function showTactical(data) { document.getElementById('article-category').innerText = data.category; document.getElementById('article-category').style.color = data.color || "#f97316"; document.getElementById('article-title').innerText = data.title; document.getElementById('article-content').innerHTML = data.steps.map(s => `
${s.text}
`).join(''); show('article-overlay'); } function closeArticle() { hide('article-overlay'); } function backToHome() { hide('detail-page'); show('home-page'); } // ======================= 🔐 后台管理系统 ======================= // 初始化存储 if (!localStorage.getItem('admin_password')) { localStorage.setItem('admin_password', 'admin123'); } if (!localStorage.getItem('feedbacks')) { localStorage.setItem('feedbacks', JSON.stringify([])); } // 等待DOM加载完成再绑定事件 document.addEventListener('DOMContentLoaded', function() { // 后台入口按钮 const adminTrigger = document.getElementById('secret-admin-trigger'); if (adminTrigger) { adminTrigger.addEventListener('click', function() { const modal = document.getElementById('password-modal'); if (modal) modal.classList.remove('hidden'); const pwdInput = document.getElementById('admin-password-input'); if (pwdInput) pwdInput.value = ''; const errorDiv = document.getElementById('password-error'); if (errorDiv) errorDiv.classList.add('hidden'); }); } // 密码提交 const submitBtn = document.getElementById('password-submit-btn'); if (submitBtn) { submitBtn.addEventListener('click', function() { const inputPwd = document.getElementById('admin-password-input').value; const correctPwd = localStorage.getItem('admin_password'); if (inputPwd === correctPwd) { const modal = document.getElementById('password-modal'); if (modal) modal.classList.add('hidden'); renderAdminPanel(); const dashboard = document.getElementById('admin-dashboard'); const home = document.getElementById('home-page'); if (dashboard) dashboard.classList.remove('hidden'); if (home) home.classList.add('hidden'); } else { const errorDiv = document.getElementById('password-error'); if (errorDiv) errorDiv.classList.remove('hidden'); } }); } // 取消按钮 const cancelBtn = document.getElementById('password-cancel-btn'); if (cancelBtn) { cancelBtn.addEventListener('click', function() { const modal = document.getElementById('password-modal'); if (modal) modal.classList.add('hidden'); }); } // 回车提交 const pwdInput = document.getElementById('admin-password-input'); if (pwdInput) { pwdInput.addEventListener('keypress', function(e) { if (e.key === 'Enter') { const btn = document.getElementById('password-submit-btn'); if (btn) btn.click(); } }); } // 关闭后台 const closeBtn = document.getElementById('close-admin-btn'); if (closeBtn) { closeBtn.addEventListener('click', function() { const dashboard = document.getElementById('admin-dashboard'); const home = document.getElementById('home-page'); if (dashboard) dashboard.classList.add('hidden'); if (home) home.classList.remove('hidden'); }); } // 清空全部 const clearBtn = document.getElementById('clear-all-feedback-btn'); if (clearBtn) { clearBtn.addEventListener('click', function() { if (confirm('⚠️ 确定要清空所有反馈吗?')) { localStorage.setItem('feedbacks', JSON.stringify([])); renderAdminPanel(); alert('✅ 已清空'); } }); } // 刷新 const refreshBtn = document.getElementById('refresh-admin-btn'); if (refreshBtn) { refreshBtn.addEventListener('click', function() { renderAdminPanel(); }); } // 修改密码 const changePwdBtn = document.getElementById('change-password-btn'); if (changePwdBtn) { changePwdBtn.addEventListener('click', function() { const oldPwd = prompt('请输入当前密码:'); const currentPwd = localStorage.getItem('admin_password'); if (oldPwd !== currentPwd) { alert('❌ 当前密码错误!'); return; } const newPwd = prompt('请输入新密码(至少4位):'); if (newPwd && newPwd.length >= 4) { localStorage.setItem('admin_password', newPwd); alert('✅ 密码修改成功!新密码:' + newPwd); } else if (newPwd) { alert('❌ 密码长度至少4位'); } }); } // 建议箱提交 const form = document.getElementById('suggestion-form'); if (form) { form.addEventListener('submit', function(e) { e.preventDefault(); const text = document.getElementById('suggestion-text').value.trim(); if(text) { const feedbacks = JSON.parse(localStorage.getItem('feedbacks') || '[]'); const now = new Date(); const timeStr = `${now.getFullYear()}-${now.getMonth()+1}-${now.getDate()} ${now.getHours().toString().padStart(2,'0')}:${now.getMinutes().toString().padStart(2,'0')}:${now.getSeconds().toString().padStart(2,'0')}`; feedbacks.push({ content: text, time: timeStr }); localStorage.setItem('feedbacks', JSON.stringify(feedbacks)); alert("✅ 收到建议!"); // 面包特效 const btnRect = e.target.querySelector('button').getBoundingClientRect(); const fakeEvent = { clientX: btnRect.left + btnRect.width / 2, clientY: btnRect.top + btnRect.height / 2 }; for(let i=0; i<3; i++) { setTimeout(() => { document.dispatchEvent(new MouseEvent('mousedown', fakeEvent)); }, i * 100); } document.getElementById('suggestion-text').value = ''; } }); } }); // 渲染反馈列表 function renderAdminPanel() { const feedbacks = JSON.parse(localStorage.getItem('feedbacks') || '[]'); const container = document.getElementById('admin-feedback-list'); const totalSpan = document.getElementById('total-feedback-count'); if (totalSpan) totalSpan.innerText = feedbacks.length; if (!container) return; if (feedbacks.length === 0) { container.innerHTML = '
✨ 暂无反馈 ✨
'; return; } container.innerHTML = feedbacks.slice().reverse().map((fb, idx) => `
📝 ${escapeHtml(fb.time)}
${escapeHtml(fb.content)}
`).join(''); } // 删除单条 window.deleteFeedback = function(index) { let feedbacks = JSON.parse(localStorage.getItem('feedbacks') || '[]'); feedbacks.splice(index, 1); localStorage.setItem('feedbacks', JSON.stringify(feedbacks)); renderAdminPanel(); }; // HTML转义 function escapeHtml(str) { return str.replace(/[&<>]/g, function(m) { if (m === '&') return '&'; if (m === '<') return '<'; if (m === '>') return '>'; return m; }); } // 🥖 面包喷泉特效(单独保留,不和后台冲突) (function() { const bt = ['🍞','🥐','🥖','🥨','🥯','🧸']; document.addEventListener('mousedown', function(e) { for(let i=0; i<8; i++){ const el = document.createElement('div'); el.className = 'bread-emoji'; el.textContent = bt[Math.floor(Math.random() * bt.length)]; el.style.fontSize = (Math.random() * 20 + 30) + 'px'; document.body.appendChild(el); let x = e.clientX, y = e.clientY; let vx = (Math.random() - 0.5) * 10; let vy = (Math.random() - 0.5) * 10; let o = 1; let rotation = 0; let rv = (Math.random() - 0.5) * 5; (function animate() { x += vx; y += vy + 0.15; rotation += rv; o -= 0.02; el.style.left = x + 'px'; el.style.top = y + 'px'; el.style.opacity = o; el.style.transform = `translate(-50%, -50%) rotate(${rotation}deg)`; if (o > 0) { requestAnimationFrame(animate); } else { el.remove(); } })(); } }); })();