From 5a03fb54e3ceb2febb79818e6167c668147bbb7d Mon Sep 17 00:00:00 2001
From: pingguomc <141195321+pingguomc@users.noreply.github.com>
Date: Thu, 27 Aug 2026 21:30:55 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E8=B5=9E=E5=8A=A9=E8=80=85=E5=88=97?=
=?UTF-8?q?=E8=A1=A8=20perf:=20=E5=85=B3=E4=BA=8E=E6=88=91=E4=BB=AC?=
=?UTF-8?q?=E9=A1=B5=E9=9D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 1 +
docs/sponsor.md | 34 +++++++
src/components/SponsorList/SponsorList.jsx | 107 +++++++++++++++++++++
src/pages/about.md | 61 +++++-------
4 files changed, 167 insertions(+), 36 deletions(-)
create mode 100644 docs/sponsor.md
create mode 100644 src/components/SponsorList/SponsorList.jsx
diff --git a/.gitignore b/.gitignore
index 840dcfec..76de2d20 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
# Dependencies
/node_modules
+package-lock.json
# Production
/build
diff --git a/docs/sponsor.md b/docs/sponsor.md
new file mode 100644
index 00000000..9674d1d8
--- /dev/null
+++ b/docs/sponsor.md
@@ -0,0 +1,34 @@
+---
+sidebar_position: 8
+hide_table_of_contents: true
+---
+
+# 赞助社区
+
+感谢赞助了社区的玩家。
+
+***
+
+## 赞助玩家名单
+
+import SponsorList from '@site/src/components/SponsorList/SponsorList';
+
+
+
+## 社区赞助规定
+
+1. 赞助社区为玩家自愿行为,赞助前请确认您的赞助完全出于自愿且未受奖励性诱导;
+2. 本社区为公益,赞助行为不会获得任何特权、道具、称号或特殊权限,社区保障所有玩家的游戏体验完全一致;
+3. 赞助统一使用人民币核算;
+4. 为了方便管理组统计和联络,赞助满 15 元的可以在页面留言;
+5. 赞助满 50 元的,如果赞助方有需要,可以跟管理组商量约定这笔钱是用于某个特定活动、或者在某个时间内用完。如果时间到了或活动搞完了还有剩余,自动转为无限制赞助,用于社区其他运营开支;
+6. 提供实物作为赞助的,以赞助时确定的价格为准。
+
+请联系管理员进行赞助。
\ No newline at end of file
diff --git a/src/components/SponsorList/SponsorList.jsx b/src/components/SponsorList/SponsorList.jsx
new file mode 100644
index 00000000..ce63ef49
--- /dev/null
+++ b/src/components/SponsorList/SponsorList.jsx
@@ -0,0 +1,107 @@
+import React, { useEffect, useRef, useState } from 'react';
+
+const SponsorList = ({ sponsors = [] }) => {
+ const [visible, setVisible] = useState([]);
+ const cardRefs = useRef([]);
+
+ useEffect(() => {
+ if (!('IntersectionObserver' in window)) {
+ setVisible(sponsors.map(() => true));
+ return;
+ }
+ const observer = new IntersectionObserver(
+ (entries) => {
+ entries.forEach((entry) => {
+ const index = Number(entry.target.dataset.index);
+ if (entry.isIntersecting) {
+ setVisible((prev) => {
+ const next = [...prev];
+ next[index] = true;
+ return next;
+ });
+ observer.unobserve(entry.target);
+ }
+ });
+ },
+ { threshold: 0.15, rootMargin: '0px 0px -20px 0px' }
+ );
+ cardRefs.current.forEach((el) => el && observer.observe(el));
+ return () => observer.disconnect();
+ }, [sponsors]);
+
+ useEffect(() => {
+ setVisible(sponsors.map(() => false));
+ const timer = setTimeout(() => {
+ if (cardRefs.current.length && 'IntersectionObserver' in window) {
+ const observer = new IntersectionObserver(
+ (entries) => {
+ entries.forEach((entry) => {
+ const index = Number(entry.target.dataset.index);
+ if (entry.isIntersecting) {
+ setVisible((prev) => {
+ const next = [...prev];
+ next[index] = true;
+ return next;
+ });
+ observer.unobserve(entry.target);
+ }
+ });
+ },
+ { threshold: 0.15, rootMargin: '0px 0px -20px 0px' }
+ );
+ cardRefs.current.forEach((el) => el && observer.observe(el));
+ return () => observer.disconnect();
+ }
+ }, 100);
+ return () => clearTimeout(timer);
+ }, [sponsors]);
+
+ return (
+
+ {sponsors.map((sponsor, index) => {
+ const isVisible = visible[index] || false;
+ const delay = (index % 6) * 60;
+
+ return (
+
(cardRefs.current[index] = el)}
+ data-index={index}
+ className='bg-white dark:bg-[#1f262b] rounded-2xl p-5 text-center border border-gray-200 dark:border-[#354048] shadow-sm transition-all duration-300 ease-out hover:-translate-y-1.5 hover:shadow-lg hover:border-[#f08a7f]"}'
+ style={{ transitionDelay: isVisible ? `${delay}ms` : '0ms' }}
+ >
+ {/* 名称:强制单行,不换行,且留足空间 */}
+
+ {sponsor.name || '匿名赞助者'}
+
+
+ {/* 金额 + 日期 */}
+ {(sponsor.amount || sponsor.date) && (
+
+ {sponsor.amount && (
+
+ {sponsor.amount}
+
+ )}
+ {sponsor.date && (
+
+ {sponsor.date}
+
+ )}
+
+ )}
+
+ {/* 留言 */}
+ {sponsor.message && (
+
+ “{sponsor.message}”
+
+ )}
+
+ );
+ })}
+
+ );
+};
+
+export default SponsorList;
\ No newline at end of file
diff --git a/src/pages/about.md b/src/pages/about.md
index c254cf72..4dafa95d 100644
--- a/src/pages/about.md
+++ b/src/pages/about.md
@@ -8,7 +8,7 @@ hide_table_of_contents: true
## 简介
-我们 ( 即 RedStarMC社区 / RedStarMCCommunity / 红星我的世界社区 ) 目前正依托单一服务器,开展核心社区运营工作。
+我们 ( 即 RedStarMC社区 / RedStarMCCommunity / 红星我的世界社区 ) 目前正依托 Minecraft 服务器,开展核心社区运营工作。
但我们的发展愿景不止于此,我们不仅希望能为玩家提供优质的生存游戏体验,还计划拓展多元化游戏玩法,包括各类小游戏、模组生存、创造服务器等。
同时,我们希望能组建由玩家组成的建筑玩家社区、开发玩家社区、动画制作玩家社区等各类玩家玩家社区,为各位玩家提供一个快乐游玩、共同创造的平台。
@@ -16,18 +16,9 @@ hide_table_of_contents: true
我们郑重承诺,社区将始终保持公益性质,不在游戏内设置任何收费项目及氪金内容,保障每一位玩家的公平游戏权益。
-我们致力于打造一个和谐友爱的社区环境,坚决杜绝各类不良行为,包括但不限于低俗言论、不良图片传播、不雅行为及网络暴力等,共同守护健康、积极的社区氛围。
+我们致力于打造一个和谐友爱的社区环境,坚决杜绝各类不良行为,包括但不限于发表低俗言论、传播不良图片、制作不雅建筑及网络暴力等,共同守护健康、积极的社区氛围。
-我们以 Minecraft 游戏服务器作为构成社区的组成部分,社区的组成部分同时还包括
-
-* 维基
-* QQ 群/频道
-* Github 组织
-* 外置登陆身份系统 (未开发完毕,未投入使用)
-
-我们目前致力于为 Minecraft:Java Edition 多人游戏服务器的创作。
-
-对于我们的 Minecraft 游戏服务器 通常被称为 “红星服务器”。
+我们目前致力于为 Minecraft:Java Edition 多人游戏服务器的创作,通常称为 “红星服务器”。
:::info 我们的宗旨
@@ -41,55 +32,53 @@ hide_table_of_contents: true
### 组成部分
-社区下辖以下部分:
+社区由以下部分组成:
* 管理组
* Minecraft 服务器
-* 官网、维基
+* 官网
+* 维基
* 社区所管辖的 QQ 群/频道
* RedStarMC Github 组织
* 外置登陆身份系统 (未开发完毕,未投入使用)
-除第一项 `管理组` 外,均为实际存在的社区公共场所。
+:::note 社区所有权
-:::note 社区所有权
+社区归全体玩家所有,社区利益即为全体玩家利益。社区由管理组领导,管理组实行民主集中制。
-社区归全体玩家所有,社区利益即为全体玩家利益。
+`管理组` 是社区的管理机构,管理其他各部分,对社区和玩家负责,受玩家监督,保证社区正常运转。管理组以全体玩家利益为自己的利益。
:::
-:::tip
+### 玩家
-`管理组` 是社区的管理机构,管理其他各部分,对社区和玩家负责,受玩家监督,保证社区正常运转。
+所有正式加入社区且未被封禁的成员均为玩家,担任社区职务或加入管理组的前提是一名玩家。
-`管理组` 是从玩家中而来,`管理组` 成员均为社区玩家。
+### 社区职务
-:::
+社区职务包括以下职务:
-### 社区人员
-
-除因其他原因留在社区管辖范围内的其他社区代表,社区内所有人均为 `玩家`。
-
-### 社区职务
-
-社区职务包括下列内容
-
-* `腐竹` 社区的主要管理者,负责社区各个方面。
-* `运行维护`(简称 `运维` ) 社区的主要管理者,主要负责运营,社区管理,保障社区各项服务正常运转。
+* `腐竹` 社区的主要管理者,负责统筹社区全面工作。
+* `运行维护`(简称 `运维` ) 社区的主要管理者,主要负责运营,社区维护,保障社区各项服务正常运转。
* `管理` 社区的主要管理者,协助 `腐竹` 和 `运维` ,主要负责社区管理和运营。
* `协管` 主要负责社区管理,协助 `腐竹` 和 `运维`。
* `建筑师` 主要负责社区内 Minecraft 服务器的建筑等内容创作。
-* `核心玩家` 社区的主要监督者,监督其他职务,和许多玩家深入交流,确保管理组能准确执行全体玩家的意愿。
-* `开发 / 技术人员` 社区负责其他方面的人员。
+* `核心玩家` 社区的主要监督者,监督其他职务,和玩家深入交流,确保管理组能准确执行全体玩家的意愿。
+* `开发 / 技术人员` 社区负责其他方面的人员,单独列出。
+
+除 `腐竹` 和 `运行维护` 外,其他职位正式担任前均可设置一段实习期。实习期的长度、是否实行、是否转正由管理组决定。实习期职务在原职务名前加 `实习` 或 `见习` 。
+`协管`、`建筑师`、`开发 / 技术人员` 直接由社区玩家自行申请担任。
-### 管理组
+### 管理组 {#Management-Committee}
-管理组由以下人员组成
+管理组由以下人员组成:
* 组长
* 副组长若干人
* 组员若干人
-* 核心玩家若干
+
+管理组实行集体领导、民主集中、个别酝酿、会议决定。
+管理组的职权包括:任免 `腐竹`、`运行维护`、`管理`,制定社区规则,决定是否封禁玩家,决定其他社区重大事项。
## 其他