diff --git a/.github/actions/checkout-submodules/action.yml b/.github/actions/checkout-submodules/action.yml deleted file mode 100644 index 0b7f83d..0000000 --- a/.github/actions/checkout-submodules/action.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: 'Checkout with Private Submodules' -description: 'Reusable checkout for org repos' -inputs: - token: - description: 'GitHub token' - required: true -runs: - using: composite - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - fetch-depth: 0 - token: ${{ inputs.token }} - - run: git submodule status - shell: bash \ No newline at end of file diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d597c8c..861ce31 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,7 +1,7 @@ -name: Build on Main Branch +name: Build and Publish on: pull_request: - types: [ closed ] + types: [opened, synchronize, closed] branches: - master - main @@ -10,19 +10,20 @@ on: - master - main workflow_dispatch: + +permissions: + contents: write + jobs: build: - if: | - github.event_name == 'push' - || (github.event_name == 'pull_request' && github.event.pull_request.merged == true) - || github.event_name == 'workflow_dispatch' runs-on: ubuntu-latest + env: + RELEASE_BUILD: ${{ ((github.event_name == 'pull_request' && github.event.pull_request.merged == true) || github.event_name == 'workflow_dispatch') && 'true' || '' }} steps: - name: Checkout repository uses: actions/checkout@v4 - - uses: ./.github/actions/checkout-submodules with: - token: ${{ secrets.SUBMODULE_PAT }} + fetch-depth: 0 - name: Setup JDK 25 uses: actions/setup-java@v4 with: @@ -36,6 +37,28 @@ jobs: run: | chmod +x gradlew ./gradlew build --no-daemon --build-cache + - name: Publish to Maven (Release) + if: ${{ (github.event_name == 'pull_request' && github.event.pull_request.merged == true) || github.event_name == 'workflow_dispatch' }} + run: | + ./gradlew publish --no-daemon + env: + ORG_GRADLE_PROJECT_ptcrysUsername: ${{ secrets.PTCRYS_USERNAME }} + ORG_GRADLE_PROJECT_ptcrysPassword: ${{ secrets.PTCRYS_PASSWORD }} + - name: Get version + id: version + if: ${{ (github.event_name == 'pull_request' && github.event.pull_request.merged == true) || github.event_name == 'workflow_dispatch' }} + run: | + VERSION=$(./gradlew -q properties --no-daemon 2>/dev/null | grep '^version:' | awk '{print $2}') + echo "value=$VERSION" >> "$GITHUB_OUTPUT" + - name: Create GitHub Release + if: ${{ (github.event_name == 'pull_request' && github.event.pull_request.merged == true) || github.event_name == 'workflow_dispatch' }} + uses: softprops/action-gh-release@v2 + with: + tag_name: v${{ steps.version.outputs.value }} + name: v${{ steps.version.outputs.value }} + generate_release_notes: true + files: | + build/libs/*.jar - name: Upload artifacts uses: actions/upload-artifact@v4 with: diff --git a/.github/workflows/code-spoless.yml b/.github/workflows/code-spoless.yml index 4050609..d28df07 100644 --- a/.github/workflows/code-spoless.yml +++ b/.github/workflows/code-spoless.yml @@ -1,11 +1,8 @@ name: Spotless Code Format Check on: - pull_request: push: - branches: [ main, master ] + workflow_dispatch: permissions: - pull-requests: write - issues: write contents: read jobs: spotless: @@ -13,9 +10,6 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 - - uses: ./.github/actions/checkout-submodules - with: - token: ${{ secrets.SUBMODULE_PAT }} - name: Setup JDK 25 uses: actions/setup-java@v4 with: @@ -29,14 +23,7 @@ jobs: run: | chmod +x gradlew ./gradlew spotlessCheck --no-daemon - - name: Comment on PR if failed - if: github.event_name == 'pull_request' && failure() - uses: actions/github-script@v7 - with: - script: | - github.rest.issues.createComment({ - issue_number: context.issue.number, - owner: context.repo.owner, - repo: context.repo.repo, - body: `❌ **代码格式化检查未通过**\n\n请运行 \`./gradlew spotlessApply\` 修复格式化后重新推送。\n\n[查看详情](https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId})` - }); \ No newline at end of file + - name: Format failure summary + if: failure() + run: | + echo "::error::Spotless 格式化检查失败,请运行 ./gradlew spotlessApply 修复后重新推送" \ No newline at end of file diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml index 58165f5..10a2f1e 100644 --- a/.github/workflows/deploy-docs.yml +++ b/.github/workflows/deploy-docs.yml @@ -72,6 +72,7 @@ jobs: publish: runs-on: ubuntu-latest + if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master' needs: build steps: - name: Checkout source diff --git a/build.gradle b/build.gradle index a68d939..0a56ab3 100644 --- a/build.gradle +++ b/build.gradle @@ -10,13 +10,14 @@ plugins { } allprojects { - group = 'net.phasetranscrystal' + group = 'net.ptcrys' } def buildDate = new Date() def dynamicVersion = "${String.format('%ty', buildDate)}.${buildDate.month + 1}.${buildDate.date}" -ext.mod_version = dynamicVersion -version = dynamicVersion +def isRelease = System.getenv('RELEASE_BUILD') == 'true' +version = isRelease ? dynamicVersion : "${dynamicVersion}-SNAPSHOT" +ext.mod_version = version group = mod_group_id tasks.named('wrapper', Wrapper).configure { @@ -73,22 +74,28 @@ publishing { } } repositories { - maven { - name = "reposilite" - // 根据版本类型选择 URL - def releasesRepoUrl = 'https://maven.nilarea.cn/releases' - def snapshotsRepoUrl = 'https://maven.nilarea.cn/snapshots' - url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl - // 认证信息在此配置 - credentials { - username = project.findProperty('reposiliteUsername') - password = project.findProperty('reposilitePassword') + if (isRelease) { + maven { + name = "PtcrysReleases" + url = uri("https://maven.ptcrys.net/releases") + credentials { + username = project.findProperty('ptcrysUsername') + password = project.findProperty('ptcrysPassword') + } + } + } else { + maven { + name = "PtcrysSnapshots" + url = uri("https://maven.ptcrys.net/snapshots") + credentials { + username = project.findProperty('ptcrysUsername') + password = project.findProperty('ptcrysPassword') + } } } } } -// IDEA不再自动下载依赖项的源码/javadoc jar,因此需要显式启用此行为。 idea { module { downloadSources = true diff --git a/dependencies.gradle b/dependencies.gradle index 37fb132..63e2b40 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -1,36 +1,26 @@ dependencies { implementation "net.neoforged:neoforge:${neo_version}" - // Kt依赖 + implementation('org.jetbrains.kotlin:kotlin-stdlib:2.3.0') implementation("org.jetbrains.kotlin:kotlin-reflect:2.3.0") - // Jar内嵌 - if (findProperty('devBuild') == "true") { - implementation("net.phasetranscrystal:brealib:${brealib_version}-debug") - implementation("net.phasetranscrystal:RegistryLib:${registry_lib_version}") - implementation("com.lowdragmc.ldlib2:ldlib2-neoforge-26.1:${ldlib2_version}") - } else { - jarJar(api("net.phasetranscrystal:brealib:${brealib_version}")) - jarJar(api("net.phasetranscrystal:RegistryLib:${registry_lib_version}")) - jarJar(api("com.lowdragmc.ldlib2:ldlib2-neoforge-26.1:${ldlib2_version}")) - } - // 编译时 + + jarJar(api("net.ptcrys:RegistryLib:${registry_lib_version}")) + jarJar(api("com.lowdragmc.ldlib2:ldlib2-neoforge-26.1:${ldlib2_version}")) + compileOnly("dev.vfyjxf:taffy:1.1.4")// Source: https://mvnrepository.com/artifact/dev.vfyjxf/taffy compileOnly("org.appliedenergistics:appliedenergistics2:${ae2_version}:api") compileOnly("top.theillusivec4.curios:curios-neoforge:${curios_version}+26.1.2:api") compileOnly("mezz.jei:jei-26.1.2-neoforge-api:${jei_version}") - // - implementation("curse.maven:jade-324717:8068368") + implementation("curse.maven:jade-324717:8326300") implementation("dev.toma.configuration:configuration-neoforge:${configuration_version}+26.1.2") - // 运行时 + runtimeOnly("org.appliedenergistics:guideme:${guideme_version}") runtimeOnly("org.appliedenergistics:appliedenergistics2:${ae2_version}") runtimeOnly("top.theillusivec4.curios:curios-neoforge:${curios_version}+26.1.2") runtimeOnly("mezz.jei:jei-26.1.2-neoforge:${jei_version}") - // runtimeOnly("icyllis.modernui:ModernUI-NeoForge:26.1.2-${modern_ui_version}") - // JUnit 5 - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.0' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.0' - testRuntimeOnly 'org.junit.platform:junit-platform-launcher:1.10.0' - testImplementation 'org.junit.jupiter:junit-jupiter-params:5.10.0' + testImplementation("org.junit.jupiter:junit-jupiter:6.0.1") + testImplementation("com.google.guava:guava:33.5.0-jre") + testImplementation("it.unimi.dsi:fastutil:8.5.18") + testRuntimeOnly("org.junit.platform:junit-platform-launcher") } diff --git a/docs/quick-start.md b/docs/1-quick-start.md similarity index 66% rename from docs/quick-start.md rename to docs/1-quick-start.md index dd1e011..a6c02b8 100644 --- a/docs/quick-start.md +++ b/docs/1-quick-start.md @@ -1,5 +1,5 @@ --- -sidebar_position: 2 +sidebar_position: 1 --- # 快速开始 @@ -8,12 +8,12 @@ sidebar_position: 2 ## 环境要求 -| 工具 | 版本 | -|-----------|--------------| -| JDK | Java 25 | -| Gradle | 8.x(Wrapper) | -| Minecraft | 26.1 | -| Mod 平台 | NeoForge | +| 工具 | 版本 | +|-----------|------------------| +| JDK | Java 25 | +| Gradle | 9.6.1(Wrapper) | +| Minecraft | 26.1.2 | +| Mod 平台 | NeoForge | ## 添加依赖 @@ -21,11 +21,14 @@ sidebar_position: 2 ```groovy repositories { - maven { url = 'https://maven.nilarea.cn/releases' } + maven { + name = "Ptcrys Releases" + url = uri("https://maven.ptcrys.net/releases") + } } - +// build.gradle dependencies { - implementation("net.phasetranscrystal:BreakdownKernal:0.1.0") + implementation("net.ptcrys:BreakdownKernal:26.7.27") } ``` @@ -35,9 +38,9 @@ dependencies { ``` YourDLC/ -├── src/main/java/com/yourname/dlc/ +├── src/main/java/net/ptcrys/dlcname/ ├── src/main/resources/ -│ └── data/yourdlc/ # 数据包(配方、结构等) +│ └── data/dlcname/ ├── build.gradle └── settings.gradle ``` @@ -47,7 +50,6 @@ YourDLC/ ``` Your DLC └── BreakdownKernel(公开 API) - └── BreaLib(内置,闭源,通过 BreakdownKernel API 间接使用) ``` DLC **只需依赖 BreakdownKernel**,不能直接依赖 BreaLib。所有底层能力通过 BreakdownKernel 的公开 API 访问。 @@ -82,5 +84,5 @@ public class YourDLC implements IBreaAddon { ## 下一步 - [通用材料系统](material/index.md) — 定义你的材料 -- [机器系统](multiblock.md) — 创建自定义机器 -- [API 参考](api-reference.md) — 完整接口速查 +- [机器系统](machine/multiblock/index.md) — 创建自定义机器 +- [API 参考](2-api-reference.md) — 完整接口速查 diff --git a/docs/2-api-reference.md b/docs/2-api-reference.md new file mode 100644 index 0000000..b83a106 --- /dev/null +++ b/docs/2-api-reference.md @@ -0,0 +1,62 @@ +--- +sidebar_position: 2 +--- + +# API 参考 + +BreakdownKernel 为 DLC 模组提供稳定的核心 API。以下为各模块公开接口速查。 + +## 模块总览 + +| 模块 | 包路径 | 用途 | +|-----------|-------------------------------|----------------------------------| +| 材料系统 | `breakdown.api.material` | 材料定义、元素、属性、变体 | +| 机器系统 | `breakdown.api.machine` | 机器定义、MetaMachine、特性 | +| DLC 扩展 | `breakdown.api.addon` | @BreaAddon 注解、IBreaAddon 接口 | +| 注册系统 | `breakdown.api.registry` | BreaRegistry、Registrate 扩展 | +| Perk 系统 | `breakdown.api.perk` | 实体加成、属性修改器 | +| 事件分发 | `breakdown.api.eventdispatch` | 实体事件分发器 | +| 能量系统 | `breakdown.api.energy` | 相变能量(规划中) | +| 世界生成 | `breakdown.api.worldgen` | 矿石/结构生成(规划中) | + +## 核心常量 + +定义在 `BreaApi` 中: + +| 常量 | 值 | 说明 | +|------|-----------|--------------------------| +| `M` | 3,628,800 | 一单位材料的标准物质量 | +| `L` | 144 | 每材料单位的流体量(mB) | + +## DLC 入口 + +```java + +@BreaAddon("your_mod_id") +public class YourDLC implements IBreaAddon { + // getRegistrate() / initComplete() / addElement() / addMaterial() / addMaterialVariant() +} +``` + +## 材料 API + +参见 [通用材料系统](material/index.md)。 + +核心类:`Material`、`Element`、`MaterialAttribute`、`MaterialVariant`、`RegisterCondition`、`RegisterAction`。 + +## 机器 API + +参见 [机器与多方块系统](machine/multiblock/index.md)。 + +核心类:`MachineDefinition`、`MetaMachine`、`MachineTrait`、`IMachineFeature`。 + +## 数据附件 + +通过 `IMachineBlockEntity` 的 `MultiManagedStorage` 实现方块实体的自定义数据同步,支持 `@DescSynced`(客户端同步)和 +`@Persisted`(持久化)注解。 + +## 相关页面 + +- [快速开始](1-quick-start.md) +- [通用材料系统](material/index.md) +- [机器与多方块系统](machine/multiblock/index.md) diff --git a/docs/world-gen.md b/docs/3-world-gen.md similarity index 78% rename from docs/world-gen.md rename to docs/3-world-gen.md index d87bb17..feda9b9 100644 --- a/docs/world-gen.md +++ b/docs/3-world-gen.md @@ -1,5 +1,5 @@ --- -sidebar_position: 5 +sidebar_position: 3 --- # 世界生成 @@ -20,5 +20,5 @@ BreakdownKernel 的世界生成系统负责矿石放置、结构生成和生物 ## 相关页面 -- [机器与多方块系统](multiblock.md) — 多方块结构 -- [API 参考](api-reference.md) — 世界生成 API +- [机器与多方块系统](machine/multiblock/index.md) — 多方块结构 +- [API 参考](2-api-reference.md) — 世界生成 API diff --git a/docs/api-reference.md b/docs/api-reference.md deleted file mode 100644 index 732b86d..0000000 --- a/docs/api-reference.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -sidebar_position: 6 ---- - -# API 参考 - -BreakdownKernel 为 DLC 模组提供稳定的核心 API。以下为各模块公开接口速查。 - -## 模块总览 - -| 模块 | 包路径 | 用途 | -|---------|------------------------------|-----------------------------| -| 材料系统 | `breacore.api.material` | 材料定义、元素、属性、变体 | -| 机器系统 | `breacore.api.machine` | 机器定义、MetaMachine、特性 | -| DLC 扩展 | `breacore.api.addon` | @BreaAddon 注解、IBreaAddon 接口 | -| 注册系统 | `breacore.api.registry` | BreaRegistry、Registrate 扩展 | -| Perk 系统 | `breacore.api.perk` | 实体加成、属性修改器 | -| 事件分发 | `breacore.api.eventdispatch` | 实体事件分发器 | -| 能量系统 | `breacore.api.energy` | 相变能量(规划中) | -| 世界生成 | `breacore.api.worldgen` | 矿石/结构生成(规划中) | - -## 核心常量 - -定义在 `BreaApi` 中: - -| 常量 | 值 | 说明 | -|-----|-----------|---------------| -| `M` | 3,628,800 | 一单位材料的标准物质量 | -| `L` | 144 | 每材料单位的流体量(mB) | - -## DLC 入口 - -```java - -@BreaAddon("your_mod_id") -public class YourDLC implements IBreaAddon { - // getRegistrate() / initComplete() / addElement() / addMaterial() / addMaterialVariant() -} -``` - -## 材料 API - -参见 [通用材料系统](material/index.md)。 - -核心类:`Material`、`Element`、`MaterialAttribute`、`MaterialVariant`、`RegisterCondition`、`RegisterAction`。 - -## 机器 API - -参见 [机器与多方块系统](multiblock.md)。 - -核心类:`MachineDefinition`、`MetaMachine`、`MachineTrait`、`IMachineFeature`。 - -## 数据附件 - -通过 `IMachineBlockEntity` 的 `MultiManagedStorage` 实现方块实体的自定义数据同步,支持 `@DescSynced`(客户端同步)和 -`@Persisted`(持久化)注解。 - -## 相关页面 - -- [快速开始](quick-start.md) -- [通用材料系统](material/index.md) -- [机器与多方块系统](multiblock.md) diff --git a/docs/index.md b/docs/index.md index 257afda..3196149 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,15 +1,17 @@ --- -sidebar_position: 1 +slug: / +sidebar_position: 0 +title: BreakdownKernel(瓦解核心) --- # BreakdownKernel(瓦解核心) -面向 Minecraft 26.1.2 的大型系列 Mod 基础框架。通过**通用材料系统**统一管理材料定义,自动生成对应的物品、方块、流体等游戏内容,大幅减少样板代码。 +面向 Minecraft 26.1.2 的大型系列 Mod 基础框架。通过 **通用材料系统**统一管理材料定义,自动生成对应的物品、方块、流体等游戏内容,大幅减少样板代码。 ## 核心特性 - **通用材料系统** — 一次定义材料,自动生成锭、粒、粉、块、流体等全部变体 -- **元素系统** — 内置 116+ 化学元素,含半衰期等物理属性 +- **元素系统** — 内置 118+ 化学元素,含半衰期等物理属性 - **Addon 扩展机制** — `@BreaAddon` 注解自动发现子 Mod - **数据生成** — 自动生成配方、标签、战利品表 - **灵活注册** — `RegisterCondition` / `RegisterAction` 解耦变体与注册逻辑 @@ -18,11 +20,14 @@ sidebar_position: 1 ```groovy repositories { - maven { url = 'https://maven.nilarea.cn/releases' } + maven { + name = "Ptcrys Releases" + url = uri("https://maven.ptcrys.net/releases") + } } // build.gradle dependencies { - implementation("net.phasetranscrystal:BreakdownKernal:0.1.0") + implementation("net.ptcrys:BreakdownKernal:26.7.27") } ``` @@ -44,28 +49,28 @@ Material aluminium = new Material.Builder("aluminium") ## 模块 -| 模块 | 说明 | -|-----------------------------|-------------------------------------------------------| -| [通用材料系统](material/index.md) | Material / MaterialAttribute / MaterialVariant 核心 API | -| [机器与多方块系统](multiblock.md) | MachineDefinition / MetaMachine / MachineTrait | -| [相变能量系统](phase-energy.md) | 统一能量单位 PE,能量网络与传输 | -| [世界生成](world-gen.md) | 异步矿石/结构生成与 Biome Modifier | -| BreaLib | 日志、环境检测、线程安全等基础工具库 | +| 模块 | 说明 | +|-------------------------------------------------|---------------------------------------------------------| +| [通用材料系统](material/index.md) | Material / MaterialAttribute / MaterialVariant 核心 API | +| [机器与多方块系统](machine/multiblock/index.md) | MachineDefinition / MetaMachine / MachineTrait | +| [相变能量系统](machine/1-phase-energy.md) | 统一能量单位 PE,能量网络与传输 | +| [世界生成](3-world-gen.md) | 异步矿石/结构生成与 Biome Modifier | +| BreaLib | 日志、环境检测、线程安全等基础工具库 | ## 进行中任务 - [x] [通用材料系统](material/index.md) -- [x] [机器系统](multiblock.md) +- [x] [机器系统](machine/multiblock/index.md) - [ ] 配方系统 -- [ ] [能量系统](phase-energy.md) -- [ ] [世界生成](world-gen.md) +- [ ] [能量系统](machine/1-phase-energy.md) +- [ ] [世界生成](3-world-gen.md) - [ ] 多方块结构 ## 文档导航 -- [快速开始](quick-start.md) — DLC 开发环境搭建与入门 +- [快速开始](1-quick-start.md) — DLC 开发环境搭建与入门 - [通用材料系统](material/index.md) — 材料定义与自动生成 -- [机器与多方块系统](multiblock.md) — 机器定义与特性 -- [相变能量系统](phase-energy.md) — 能量 API 设计 -- [世界生成](world-gen.md) — 矿石与结构生成 -- [API 参考](api-reference.md) — 接口速查 +- [机器与多方块系统](machine/multiblock/index.md) — 机器定义与特性 +- [相变能量系统](machine/1-phase-energy.md) — 能量 API 设计 +- [世界生成](3-world-gen.md) — 矿石与结构生成 +- [API 参考](2-api-reference.md) — 接口速查 diff --git a/docs/phase-energy.md b/docs/machine/1-phase-energy.md similarity index 72% rename from docs/phase-energy.md rename to docs/machine/1-phase-energy.md index 7331d61..2297d92 100644 --- a/docs/phase-energy.md +++ b/docs/machine/1-phase-energy.md @@ -1,5 +1,5 @@ --- -sidebar_position: 4 +sidebar_position: 21 --- # 相变能量系统 @@ -16,11 +16,11 @@ sidebar_position: 4 ## 三种角色 -| 角色 | 职责 | -|---------|-------------------| -| **生产者** | 产出能量(如发电机、太阳能板) | -| **消费者** | 消耗能量(如机器、工具充电站) | -| **存储** | 同时生产和消费(如电池、能量核心) | +| 角色 | 职责 | +|------------|------------------------------------| +| **生产者** | 产出能量(如发电机、太阳能板) | +| **消费者** | 消耗能量(如机器、工具充电站) | +| **存储** | 同时生产和消费(如电池、能量核心) | ## 能量网络 @@ -30,5 +30,5 @@ sidebar_position: 4 ## 相关页面 -- [机器与多方块系统](multiblock.md) — 机器能量管理 -- [API 参考](api-reference.md) — 接口文档 +- [机器与多方块系统](multiblock/index.md) — 机器能量管理 +- [API 参考](../2-api-reference.md) — 接口文档 diff --git a/docs/machine/index.md b/docs/machine/index.md new file mode 100644 index 0000000..00ada63 --- /dev/null +++ b/docs/machine/index.md @@ -0,0 +1,80 @@ +--- +sidebar_position: 20 +--- + +# 通用机器系统 + +BreakdownKernel 的机器系统基于 `MachineDefinition` 统一管理机器的方块、方块实体、渲染和 Tick 行为,通过 `MachineTrait` +组合模式实现功能复用。 + +## 架构总览 + +``` +MachineDefinition(机器定义) + ├─ IMachineBlock(机器方块) + ├─ IMachineBlockEntity(机器方块实体) + ├─ MetaMachine(机器逻辑基类) + ├─ MachineTrait(机器特性) + └─ IMachineFeature(机器功能接口) +``` + +```mermaid +flowchart TD + MD[MachineDefinition] -->|create| IMB[IMachineBlock] + MD -->|create| IMBE[IMachineBlockEntity] + IMBE -->|holds| MM[MetaMachine] + MM -->|has many| MT[MachineTrait] + MM -->|implements| IMF[IMachineFeature] +``` + +## 核心概念 + +### MachineDefinition + +机器的核心定义,包含方块属性、方块实体类型、GUI 工厂、渲染器等。通过 Builder 模式创建: + +```java +MachineDefinition simpleMachine = new MachineDefinition.Builder<>("simple_machine") + .blockProperties(BlockBehaviour.Properties.of().strength(3.0f)) + .machineFactory(SimpleMachine::new) + .buildAndRegister(); +``` + +### MetaMachine + +所有机器的逻辑基类,承载 MachineTrait 列表和生命周期管理: + +| 生命周期方法 | 触发时机 | +|-----------------------|--------------| +| `onFirstTick()` | 首个 tick | +| `onMachineTick()` | 每 tick | +| `onMachineRemoved()` | 机器被移除 | +| `onNeighborChanged()` | 相邻方块变化 | + +### MachineTrait + +通过组合模式为机器添加功能。内置常用 Trait: + +| Trait | 功能 | +|--------------------|------------------| +| `EnergyTrait` | 能量存储与传输 | +| `FluidTankTrait` | 流体存储 | +| `ItemHandlerTrait` | 物品输入输出 | +| `RecipeLogicTrait` | 配方处理 | +| `ProgressTrait` | 进度条与工作状态 | +| `CoverableTrait` | 覆盖板支持 | + +### IMachineFeature + +功能标记接口,用于类型安全地访问机器能力: + +```java +if (machine instanceof IEnergyMachine energyMachine) { + energyMachine.getEnergyStorage().receiveEnergy(100, false); +} +``` + +## 子模块 + +- **[相变能量系统](machine/phase-energy)** — 统一的能量 API,支持有线和无线传输 +- **[多方块机器系统](machine/multiblock)** — 多方块结构定义、成型检测与渲染 diff --git a/docs/multiblock.md b/docs/machine/multiblock/index.md similarity index 66% rename from docs/multiblock.md rename to docs/machine/multiblock/index.md index 2a171b0..ca12888 100644 --- a/docs/multiblock.md +++ b/docs/machine/multiblock/index.md @@ -1,5 +1,5 @@ --- -sidebar_position: 3 +sidebar_position: 200 --- # 机器与多方块系统 @@ -33,20 +33,24 @@ flowchart TD ```java MachineDefinition def = MachineDefinition.createDefinition( - Identifier.of("your_mod", "your_machine") + Identifier.of("your_mod", "your_machine") ); -def.setMachineSupplier(YourMachine::new); -def.setRenderer(yourRenderer); +def. + +setMachineSupplier(YourMachine::new); +def. + +setRenderer(yourRenderer); ``` -| 配置项 | 说明 | -|--------------------------|------------------| -| `setBlockSupplier` | 自定义方块提供者 | -| `setItemSupplier` | 自定义物品提供者 | +| 配置项 | 说明 | +|--------------------------|----------------------| +| `setBlockSupplier` | 自定义方块提供者 | +| `setItemSupplier` | 自定义物品提供者 | | `setMachineSupplier` | MetaMachine 工厂方法 | -| `setRenderer` | 自定义渲染器 | -| `setShape` | 碰撞箱形状 | -| `setAllowExtendedFacing` | 是否允许向上放置 | +| `setRenderer` | 自定义渲染器 | +| `setShape` | 碰撞箱形状 | +| `setAllowExtendedFacing` | 是否允许向上放置 | ### MetaMachine @@ -83,13 +87,13 @@ public class EnergyTrait extends MachineTrait { 机器功能的接口标记,所有 feature 均继承此接口: -| Feature 接口 | 用途 | -|--------------------------|------------| +| Feature 接口 | 用途 | +|--------------------------|----------------------| | `IDropSaveMachine` | 破坏时保存数据到物品 | -| `IMachineLife` | 机器生命周期回调 | -| `IMachineModifyDrops` | 自定义掉落物 | -| `IRedstoneSignalMachine` | 红石信号交互 | -| `IUIMachine` | UI 界面支持 | +| `IMachineLife` | 机器生命周期回调 | +| `IMachineModifyDrops` | 自定义掉落物 | +| `IRedstoneSignalMachine` | 红石信号交互 | +| `IUIMachine` | UI 界面支持 | ## 多方块结构 @@ -97,6 +101,6 @@ public class EnergyTrait extends MachineTrait { ## 相关页面 -- [通用材料系统](material/index.md) — 材料定义 -- [相变能量系统](phase-energy.md) — 能量 API -- [API 参考](api-reference.md) — 完整接口 +- [通用材料系统](../../material/index.md) — 材料定义 +- [相变能量系统](../1-phase-energy.md) — 能量 API +- [API 参考](../../2-api-reference.md) — 完整接口 diff --git a/docs/material/element.md b/docs/material/element.md new file mode 100644 index 0000000..f8f400d --- /dev/null +++ b/docs/material/element.md @@ -0,0 +1,72 @@ +--- +sidebar_position: 11 +--- + +# 元素系统 + +BreakdownKernel 内置了完整的化学元素系统,包含 116+ 种元素及其物理属性。元素通过 `Element` 枚举定义,可与材料绑定以自动生成化学式等元数据。 + +## 元素属性 + +每个 `Element` 包含以下属性: + +| 属性 | 类型 | 说明 | +|-------------|--------|---------------------------| +| `protons` | long | 质子数(原子序数) | +| `neutrons` | long | 中子数 | +| `electrons` | long | 电子数 | +| `halflife` | long | 半衰期(秒),-1 表示稳定 | +| `mass` | long | 相对原子质量(*1000) | +| `name` | String | 元素英文名 | +| `symbol` | String | 元素符号 | + +## 使用方式 + +### 绑定到材料 + +```java +Material aluminium = new Material.Builder("aluminium") + .element(Element.AL) + .formula("Al") + .build(); + +Material water = new Material.Builder("water") + .element(Element.H) + .element(Element.O) + .formula("H2O") + .build(); +``` + +### 查询元素信息 + +```java +Element iron = Element.FE; +long atomicNumber = iron.protons(); // 26 +long mass = iron.mass(); // 55845 (55.845 * 1000) +long halflife = iron.halflife(); // -1 (稳定同位素 Fe-56) +``` + +### 同位素支持 + +元素系统支持指定同位素: + +```java +Material uranium235 = new Material.Builder("uranium_235") + .element(Element.U.withNeutrons(143)) + .formula("U-235") + .build(); +``` + +## 常用元素速查 + +| 符号 | 名称 | 原子序数 | 质量 | +|------|-----------|----------|---------| +| H | Hydrogen | 1 | 1.008 | +| C | Carbon | 6 | 12.011 | +| O | Oxygen | 8 | 15.999 | +| Al | Aluminium | 13 | 26.982 | +| Fe | Iron | 26 | 55.845 | +| Cu | Copper | 29 | 63.546 | +| Ag | Silver | 47 | 107.868 | +| Au | Gold | 79 | 196.967 | +| U | Uranium | 92 | 238.029 | diff --git a/docs/material/index.md b/docs/material/index.md index 7f4c4d8..86c24d9 100644 --- a/docs/material/index.md +++ b/docs/material/index.md @@ -1,10 +1,10 @@ --- -sidebar_position: 1 +sidebar_position: 10 --- # 通用材料系统 -通用材料系统由多个相互解耦的模块组成,核心思想是**一次定义材料,自动生成全部变体**。对材料的任意操作会影响该种类下的所有物品。 +通用材料系统由多个相互解耦的模块组成,核心思想是 **一次定义材料,自动生成全部变体**。对材料的任意操作会影响该种类下的所有物品。 ## 架构总览 @@ -41,26 +41,26 @@ Material aluminium = new Material.Builder("aluminium") .build(); ``` -| Builder 方法 | 说明 | -|-----------------------------|-----------| -| `.ingot()` | 标记为金属锭材料 | -| `.gem()` | 标记为宝石材料 | +| Builder 方法 | 说明 | +|-----------------------------|--------------------| +| `.ingot()` | 标记为金属锭材料 | +| `.gem()` | 标记为宝石材料 | | `.fluid()` | 标记为可流体化材料 | -| `.color(int)` | 设置材料颜色 | -| `.element(Element)` | 绑定化学元素 | -| `.formula(String)` | 设置化学式 | -| `.components(Material... )` | 设置组分材料 | +| `.color(int)` | 设置材料颜色 | +| `.element(Element)` | 绑定化学元素 | +| `.formula(String)` | 设置化学式 | +| `.components(Material... )` | 设置组分材料 | ### MaterialAttribute 材料属性的定义接口,决定材料「能做什么」。 -| 属性类型 | 接口 | 说明 | -|-----------|--------------------|---------------------| +| 属性类型 | 接口 | 说明 | +|-----------|--------------------|-------------------------------------| | `GENERAL` | `GeneralAttribute` | 通用属性:挖掘等级(0-3)、燃烧时间 | -| `INGOT` | `IngotAttribute` | 金属锭属性 | -| `GEM` | `GemAttribute` | 宝石属性 | -| `FLUID` | `FluidAttribute` | 流体属性(可带桶、可流动) | +| `INGOT` | `IngotAttribute` | 金属锭属性 | +| `GEM` | `GemAttribute` | 宝石属性 | +| `FLUID` | `FluidAttribute` | 流体属性(可带桶、可流动) | 可重写方法进行可加性验证和格式化生成前置属性。 @@ -68,14 +68,14 @@ Material aluminium = new Material.Builder("aluminium") 材料变体的定义。每个变体对应一系列材料实例(流体、方块、物品、桶等)。 -| 变体 | 物量 | 需求属性 | -|----------|-----|-------------| -| `ingot` | M | INGOT | -| `nugget` | M/9 | INGOT | -| `dust` | M | GENERAL | -| `block` | 9M | INGOT 或 GEM | -| `liquid` | M | FLUID | -| `melt` | M | FLUID | +| 变体 | 物量 | 需求属性 | +|----------|------|--------------| +| `ingot` | M | INGOT | +| `nugget` | M/9 | INGOT | +| `dust` | M | GENERAL | +| `block` | 9M | INGOT 或 GEM | +| `liquid` | M | FLUID | +| `melt` | M | FLUID | > **M** = 3,628,800(高可整除值,便于配方计算) @@ -89,7 +89,7 @@ RegisterCondition generateIngot = (Material m) -> m.hasAttribute(AttributeType.INGOT); ``` -多个条件同时设置时,**全部满足**才执行注册。 +多个条件同时设置时, **全部满足**才执行注册。 ### RegisterAction @@ -121,12 +121,12 @@ public static final AttributeType FLUID = ## 材料分类 -| 类别 | 说明 | -|-----------------------------|-------------------| -| ElementMaterials | 116+ 周期表元素 | +| 类别 | 说明 | +|-----------------------------|------------------------------------| +| ElementMaterials | 118+ 周期表元素 | | FirstDegreeMaterials | 氧化物、硫化物、氯化物等一级化合物 | -| SecondDegreeMaterials | 常见二级化合物 | -| HigherDegreeMaterials | 复杂高级化合物 | -| OrganicChemistryMaterials | 有机化合物 | -| UnknownCompositionMaterials | 未知成分占位材料 | -| MarkerMaterials | 内部引用标记材料 | +| SecondDegreeMaterials | 常见二级化合物 | +| HigherDegreeMaterials | 复杂高级化合物 | +| OrganicChemistryMaterials | 有机化合物 | +| UnknownCompositionMaterials | 未知成分占位材料 | +| MarkerMaterials | 内部引用标记材料 | diff --git a/gradle.properties b/gradle.properties index 5b66f23..ecf8635 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,27 +14,26 @@ minecraft_version=26.1.2 # as they do not follow standard versioning conventions. minecraft_version_range=[26.1, 27) # https://files.neoforged.neoforge.net/net/neoforged.neoforge/forge/ -neo_version=26.1.2.54-beta -neo_version_range=[26.1.0.8-beta,) +neo_version=26.1.2.71 +neo_version_range=[26.1.0.71,) loader_version_range=[4,) ## Mod Properties -mod_id=breacore -mod_name=BreakdownCore +mod_id=breakdown +mod_name=BreakdownKernal mod_license=LGPLv3 -mod_group_id=net.phasetranscrystal +mod_group_id=net.ptcrys mod_authors=MonLandis, LeeQianXi, HehCrashes mod_description= -mod_url=https://github.com/PhasetransCrystal/BreakdownCore +mod_url=https://github.com/PhasetransCrystal/BreakdownKernal # Dependency Properties -brealib_version=26.7.11 guideme_version=26.1.12-beta -ae2_version=26.1.9-alpha +ae2_version=26.1.10-beta curios_version=15.0.0-beta.2 -ldlib2_version=26.1.2.19 -registry_lib_version=8.0.14 -jei_version=29.6.2.31 +ldlib2_version=26.1.2.28 +registry_lib_version=26.7.27 +jei_version=29.16.0.46 jade_version=15 configuration_version=4.1.2 -modern_ui_version=3.13.0.4 \ No newline at end of file +modern_ui_version=3.13.0.5 \ No newline at end of file diff --git a/gradle/scripts/repositories.gradle b/gradle/scripts/repositories.gradle index e7bbc1f..e44b3e3 100644 --- a/gradle/scripts/repositories.gradle +++ b/gradle/scripts/repositories.gradle @@ -5,15 +5,19 @@ repositories { } mavenCentral() maven { - name = "reposilite" - url = 'https://maven.nilarea.cn/releases' + name = "Ptcrys Releases" + url = uri("https://maven.ptcrys.net/releases") } maven { - name = "reposilite" - url = 'https://maven.nilarea.cn/private' + name = "Ptcrys Snapshots" + url = uri("https://maven.ptcrys.net/snapshots") + } + maven { + name = "Ptcrys Private" + url = uri("https://maven.ptcrys.net/private") credentials { - username = project.findProperty('reposiliteUsername') - password = project.findProperty('reposilitePassword') + username = project.findProperty('ptcrysUsername') + password = project.findProperty('ptcrysPassword') } } diff --git a/gradle/scripts/resources.gradle b/gradle/scripts/resources.gradle index 5d9e0e9..4c08500 100644 --- a/gradle/scripts/resources.gradle +++ b/gradle/scripts/resources.gradle @@ -17,7 +17,8 @@ var generateModMetadata = tasks.register("generateModMetadata", ProcessResources curios_version : curios_version, jei_version : jei_version, jade_version : jade_version, - guideme_version : guideme_version] + guideme_version : guideme_version, + ] inputs.properties replaceProperties expand replaceProperties from "src/main/templates" diff --git a/gradle/spotless/spotless.importorder b/gradle/spotless/spotless.importorder index 9ca0a38..5ec2599 100644 --- a/gradle/spotless/spotless.importorder +++ b/gradle/spotless/spotless.importorder @@ -1,8 +1,6 @@ #Organize Import Order #Sat May 27 02:13:47 CDT 2023 -0=net.phasetranscrystal.brealib -0=net.phasetranscrystal.registrylib -1=net.phasetranscrystal +1=net.ptcrys 1=net 2= 3=java diff --git a/gradle/spotless/spotless.ktlint b/gradle/spotless/spotless.ktlint index 413bf9c..e4fac49 100644 --- a/gradle/spotless/spotless.ktlint +++ b/gradle/spotless/spotless.ktlint @@ -3,8 +3,8 @@ ktlint_code_style = intellij_idea insert_final_newline = true max_line_length = 10000000 -ij_kotlin_imports_layout = net.phasetranscrystal.**,|,net.**,|,*,|,java.**,javax.**,kotlin.**,|,^ -ij_kotlin_packages_to_use_import_on_demand = java.util.*,net.phasetranscrystal.** +ij_kotlin_imports_layout = net.ptcrys.**,|,net.**,|,*,|,java.**,javax.**,kotlin.**,|,^ +ij_kotlin_packages_to_use_import_on_demand = java.util.*,net.ptcrys.** ktlint_standard_class-naming = disabled ktlint_standard_function-naming = disabled ktlint_standard_property-naming = disabled diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 8bdaf60..b1b8ef5 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 2a84e18..a9db115 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,9 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.0.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip networkTimeout=10000 +retries=0 +retryBackOffMs=500 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index ef07e01..249efbb 100755 --- a/gradlew +++ b/gradlew @@ -20,7 +20,7 @@ ############################################################################## # -# Gradle start up script for POSIX generated by Gradle. +# gradlew start up script for POSIX generated by Gradle. # # Important for running: # @@ -29,7 +29,7 @@ # bash, then to run this script, type that shell name before the whole # command line, like: # -# ksh Gradle +# ksh gradlew # # Busybox and similar reduced shells will NOT work, because this script # requires all of these POSIX shell features: @@ -57,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/3d91ce3b8caaf77ad09f381f43615b715b53f72c/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -114,7 +114,6 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH="\\\"\\\"" # Determine the Java command to use to start the JVM. @@ -172,7 +171,6 @@ fi # For Cygwin or MSYS, switch paths to Windows format before running java if "$cygwin" || "$msys" ; then APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) JAVACMD=$( cygpath --unix "$JAVACMD" ) @@ -212,7 +210,6 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" diff --git a/gradlew.bat b/gradlew.bat index db3a6ac..a51ec4f 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -19,12 +19,12 @@ @if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem -@rem Gradle startup script for Windows +@rem gradlew startup script for Windows @rem @rem ########################################################################## -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal +@rem Set local scope for the variables, and ensure extensions are enabled +setlocal EnableExtensions set DIRNAME=%~dp0 if "%DIRNAME%"=="" set DIRNAME=. @@ -51,7 +51,7 @@ echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% @@ -65,30 +65,18 @@ echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :execute @rem Setup the command line -set CLASSPATH= -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* +@rem Execute gradlew +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% diff --git a/src/main/java/net/phasetranscrystal/breacore/BreakdownCore.java b/src/main/java/net/phasetranscrystal/breacore/BreakdownCore.java deleted file mode 100644 index acdae3a..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/BreakdownCore.java +++ /dev/null @@ -1,31 +0,0 @@ -package net.phasetranscrystal.breacore; - -import net.phasetranscrystal.brealib.BreaLib; -import net.phasetranscrystal.brealib.util.DistExecutor; - -import net.phasetranscrystal.breacore.client.ClientProxy; -import net.phasetranscrystal.breacore.common.CommonProxy; - -import net.neoforged.bus.api.IEventBus; -import net.neoforged.fml.ModContainer; -import net.neoforged.fml.common.Mod; - -import lombok.Getter; -import org.apache.logging.log4j.Logger; - -@Mod(BreakdownCore.MOD_ID) -public class BreakdownCore { - - public static final String MOD_ID = BreaLib.Core_ID; - public static final Logger LOGGER = BreaLib.getLogger("Core"); - @Getter - private static ModContainer modContainer; - @Getter - private static IEventBus modEventBus; - - public BreakdownCore(ModContainer modContainer, IEventBus modEventBus) { - BreakdownCore.modContainer = modContainer; - BreakdownCore.modEventBus = modEventBus; - DistExecutor.safeRunForDist(() -> ClientProxy::new, () -> CommonProxy::new); - } -} diff --git a/src/main/java/net/phasetranscrystal/breacore/api/annotation/NewDataAttributes.java b/src/main/java/net/phasetranscrystal/breacore/api/annotation/NewDataAttributes.java deleted file mode 100644 index 323d524..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/api/annotation/NewDataAttributes.java +++ /dev/null @@ -1,11 +0,0 @@ -package net.phasetranscrystal.breacore.api.annotation; - -public final class NewDataAttributes { - - public static final String PREFIX = "breacore.lang"; - public static final String PREFIX_TEMPLATE = "breacore.lang.template"; - - public NewDataAttributes() { - throw new UnsatisfiedLinkError("Not Impl"); - } -} diff --git a/src/main/java/net/phasetranscrystal/breacore/api/annotation/TranslationKeyProvider.java b/src/main/java/net/phasetranscrystal/breacore/api/annotation/TranslationKeyProvider.java deleted file mode 100644 index 2194587..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/api/annotation/TranslationKeyProvider.java +++ /dev/null @@ -1,12 +0,0 @@ -package net.phasetranscrystal.breacore.api.annotation; - -public final class TranslationKeyProvider { - - public TranslationKeyProvider() { - throw new UnsatisfiedLinkError("Not Impl"); - } - - public static native String getTranslationKey(String var0, String var1); - - public static native String getTranslationKey(String var0, String var1, String var2); -} diff --git a/src/main/java/net/phasetranscrystal/breacore/api/capability/IToolable.java b/src/main/java/net/phasetranscrystal/breacore/api/capability/IToolable.java deleted file mode 100644 index b2d69f6..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/api/capability/IToolable.java +++ /dev/null @@ -1,5 +0,0 @@ -package net.phasetranscrystal.breacore.api.capability; - -public interface IToolable { - -} diff --git a/src/main/java/net/phasetranscrystal/breacore/api/fluid/attribute/FluidAttributes.java b/src/main/java/net/phasetranscrystal/breacore/api/fluid/attribute/FluidAttributes.java deleted file mode 100644 index df7dcf4..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/api/fluid/attribute/FluidAttributes.java +++ /dev/null @@ -1,17 +0,0 @@ -package net.phasetranscrystal.breacore.api.fluid.attribute; - -import net.phasetranscrystal.brealib.BreaLib; - -import net.minecraft.network.chat.Component; - -public final class FluidAttributes { - - /** - * Attribute for acidic fluids. - */ - public static final FluidAttribute ACID = new FluidAttribute(BreaLib.id("acid"), - list -> list.accept(Component.translatable("breacore.fluid.type_acid.tooltip")), - list -> list.accept(Component.translatable("breacore.fluid_pipe.acid_proof"))); - - private FluidAttributes() {} -} diff --git a/src/main/java/net/phasetranscrystal/breacore/api/gui/EditableMachineUI.java b/src/main/java/net/phasetranscrystal/breacore/api/gui/EditableMachineUI.java deleted file mode 100644 index ba86f9e..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/api/gui/EditableMachineUI.java +++ /dev/null @@ -1,3 +0,0 @@ -package net.phasetranscrystal.breacore.api.gui; - -public class EditableMachineUI {} diff --git a/src/main/java/net/phasetranscrystal/breacore/api/item/ComponentItem.java b/src/main/java/net/phasetranscrystal/breacore/api/item/ComponentItem.java deleted file mode 100644 index 68a6fea..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/api/item/ComponentItem.java +++ /dev/null @@ -1,44 +0,0 @@ -package net.phasetranscrystal.breacore.api.item; - -import net.phasetranscrystal.breacore.api.item.component.IItemComponent; - -import net.minecraft.world.item.Item; - -import lombok.Getter; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -public class ComponentItem extends Item implements IComponentItem { - - protected int burnTime = -1; - - @Getter - protected List components; - - public ComponentItem(Properties properties) { - super(properties); - components = new ArrayList<>(); - } - - public void attachComponents(IItemComponent component) { - this.components.add(component); - component.onAttached(this); - } - - public void attachComponents(IItemComponent... components) { - this.components.addAll(Arrays.asList(components)); - for (IItemComponent component : components) { - component.onAttached(this); - } - } - - public int getBurnTime() { - return burnTime; - } - - public void burnTime(int burnTime) { - this.burnTime = burnTime; - } -} diff --git a/src/main/java/net/phasetranscrystal/breacore/api/item/IComponentItem.java b/src/main/java/net/phasetranscrystal/breacore/api/item/IComponentItem.java deleted file mode 100644 index e01106c..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/api/item/IComponentItem.java +++ /dev/null @@ -1,29 +0,0 @@ -package net.phasetranscrystal.breacore.api.item; - -import net.phasetranscrystal.breacore.api.item.component.IComponentCapability; -import net.phasetranscrystal.breacore.api.item.component.IItemComponent; - -import net.minecraft.core.NonNullList; -import net.minecraft.world.item.CreativeModeTab; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.ItemLike; -import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent; - -import java.util.List; - -public interface IComponentItem extends ItemLike { - - List getComponents(); - - void attachComponents(IItemComponent... components); - - default void attachCapabilities(RegisterCapabilitiesEvent event) { - for (IItemComponent component : getComponents()) { - if (component instanceof IComponentCapability componentCapability) { - componentCapability.attachCapabilities(event, this.asItem()); - } - } - } - - default void fillItemCategory(CreativeModeTab category, NonNullList items) {} -} diff --git a/src/main/java/net/phasetranscrystal/breacore/api/item/component/IComponentCapability.java b/src/main/java/net/phasetranscrystal/breacore/api/item/component/IComponentCapability.java deleted file mode 100644 index 942d020..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/api/item/component/IComponentCapability.java +++ /dev/null @@ -1,9 +0,0 @@ -package net.phasetranscrystal.breacore.api.item.component; - -import net.minecraft.world.item.Item; -import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent; - -public interface IComponentCapability { - - void attachCapabilities(RegisterCapabilitiesEvent event, Item item); -} diff --git a/src/main/java/net/phasetranscrystal/breacore/api/item/component/IItemComponent.java b/src/main/java/net/phasetranscrystal/breacore/api/item/component/IItemComponent.java deleted file mode 100644 index 3e64ceb..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/api/item/component/IItemComponent.java +++ /dev/null @@ -1,14 +0,0 @@ -package net.phasetranscrystal.breacore.api.item.component; - -import net.phasetranscrystal.breacore.api.item.IComponentItem; - -import net.minecraft.world.item.Item; - -/** - * 描述可附加到{@link IComponentItem}的通用组件 - * 一个项目可以连接多个组件 - */ -public interface IItemComponent { - - default void onAttached(Item item) {} -} diff --git a/src/main/java/net/phasetranscrystal/breacore/api/item/tool/IToolGridHighLight.java b/src/main/java/net/phasetranscrystal/breacore/api/item/tool/IToolGridHighLight.java deleted file mode 100644 index 7ddade1..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/api/item/tool/IToolGridHighLight.java +++ /dev/null @@ -1,5 +0,0 @@ -package net.phasetranscrystal.breacore.api.item.tool; - -public interface IToolGridHighLight { - -} diff --git a/src/main/java/net/phasetranscrystal/breacore/api/machine/feature/IMachineFeature.java b/src/main/java/net/phasetranscrystal/breacore/api/machine/feature/IMachineFeature.java deleted file mode 100644 index 11dc1a5..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/api/machine/feature/IMachineFeature.java +++ /dev/null @@ -1,10 +0,0 @@ -package net.phasetranscrystal.breacore.api.machine.feature; - -import net.phasetranscrystal.breacore.api.machine.MetaMachine; - -public interface IMachineFeature { - - default MetaMachine self() { - return (MetaMachine) this; - } -} diff --git a/src/main/java/net/phasetranscrystal/breacore/api/material/ItemMaterialData.java b/src/main/java/net/phasetranscrystal/breacore/api/material/ItemMaterialData.java deleted file mode 100644 index 62f3d2d..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/api/material/ItemMaterialData.java +++ /dev/null @@ -1,3 +0,0 @@ -package net.phasetranscrystal.breacore.api.material; - -public class ItemMaterialData {} diff --git a/src/main/java/net/phasetranscrystal/breacore/api/material/register/RegisterAction.java b/src/main/java/net/phasetranscrystal/breacore/api/material/register/RegisterAction.java deleted file mode 100644 index 7b83dab..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/api/material/register/RegisterAction.java +++ /dev/null @@ -1,11 +0,0 @@ -package net.phasetranscrystal.breacore.api.material.register; - -import net.phasetranscrystal.registrylib.RegistryCore; - -import net.phasetranscrystal.breacore.api.material.Material; - -@FunctionalInterface -public interface RegisterAction { - - void register(RegistryCore registrate, MaterialVariant variant, Material material); -} diff --git a/src/main/java/net/phasetranscrystal/breacore/api/material/register/RegisterCondition.java b/src/main/java/net/phasetranscrystal/breacore/api/material/register/RegisterCondition.java deleted file mode 100644 index 222af28..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/api/material/register/RegisterCondition.java +++ /dev/null @@ -1,9 +0,0 @@ -package net.phasetranscrystal.breacore.api.material.register; - -import net.phasetranscrystal.breacore.api.material.Material; - -@FunctionalInterface -public interface RegisterCondition { - - boolean validate(Material material); -} diff --git a/src/main/java/net/phasetranscrystal/breacore/api/perk/IPerkProvider.java b/src/main/java/net/phasetranscrystal/breacore/api/perk/IPerkProvider.java deleted file mode 100644 index badc640..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/api/perk/IPerkProvider.java +++ /dev/null @@ -1,13 +0,0 @@ -package net.phasetranscrystal.breacore.api.perk; - -import net.phasetranscrystal.breacore.api.item.component.IItemComponent; - -import net.minecraft.world.entity.EquipmentSlotGroup; - -import java.util.List; -import java.util.Map; - -public interface IPerkProvider extends IItemComponent { - - Map> getPerkStacks(); -} diff --git a/src/main/java/net/phasetranscrystal/breacore/client/ClientProxy.java b/src/main/java/net/phasetranscrystal/breacore/client/ClientProxy.java deleted file mode 100644 index 254c2f2..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/client/ClientProxy.java +++ /dev/null @@ -1,10 +0,0 @@ -package net.phasetranscrystal.breacore.client; - -import net.phasetranscrystal.breacore.common.CommonProxy; - -public class ClientProxy extends CommonProxy { - - public ClientProxy() { - super(); - } -} diff --git a/src/main/java/net/phasetranscrystal/breacore/common/BreaRegistration.java b/src/main/java/net/phasetranscrystal/breacore/common/BreaRegistration.java deleted file mode 100644 index 35b815f..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/common/BreaRegistration.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.phasetranscrystal.breacore.common; - -import net.phasetranscrystal.breacore.BreakdownCore; -import net.phasetranscrystal.breacore.api.registry.registrate.BreaGroup; -import net.phasetranscrystal.breacore.api.registry.registrate.BreaRegistryCore; -import net.phasetranscrystal.breacore.common.data.BreaTags; - -import net.minecraft.world.item.CreativeModeTabs; - -public class BreaRegistration { - - /** - * 共享的注册核心。 使用 {@link BreaRegistryCore} 而非普通 {@link - * net.phasetranscrystal.registrylib.RegistryCore}, 使得每个 builder 链上可直接调用 {@code .langCn("中文名")}。 - */ - public static final BreaRegistryCore REGISTRATE = BreaRegistryCore.create(BreakdownCore.MOD_ID); - public static final BreaGroup DEBUG_REGISTRATE = (BreaGroup) REGISTRATE.group("debug") - .addItemTag(BreaTags.DEBUG_ITEM) - .tab(CreativeModeTabs.OP_BLOCKS) - .build(); -} diff --git a/src/main/java/net/phasetranscrystal/breacore/common/data/BreaBlockEntities.java b/src/main/java/net/phasetranscrystal/breacore/common/data/BreaBlockEntities.java deleted file mode 100644 index 280cf14..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/common/data/BreaBlockEntities.java +++ /dev/null @@ -1,16 +0,0 @@ -package net.phasetranscrystal.breacore.common.data; - -import net.phasetranscrystal.registrylib.util.entry.BlockEntityTypeEntry; - -import net.phasetranscrystal.breacore.common.blockentity.debug.FluidFurnaceBlockEntity; - -import static net.phasetranscrystal.breacore.common.BreaRegistration.REGISTRATE; - -public class BreaBlockEntities { - - public static BlockEntityTypeEntry FurnaceBlockEntity = REGISTRATE.blockEntity("fluid_furnace", FluidFurnaceBlockEntity::new) - .validBlock(BreaBlocks.FluidFurnaceBlock) - .register(); - - public static void init() {} -} diff --git a/src/main/java/net/phasetranscrystal/breacore/common/data/BreaBlocks.java b/src/main/java/net/phasetranscrystal/breacore/common/data/BreaBlocks.java deleted file mode 100644 index dcf13c1..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/common/data/BreaBlocks.java +++ /dev/null @@ -1,28 +0,0 @@ -package net.phasetranscrystal.breacore.common.data; - -import net.phasetranscrystal.registrylib.util.entry.BlockEntry; - -import net.phasetranscrystal.breacore.api.registry.registrate.BreaRegistryCore; -import net.phasetranscrystal.breacore.common.block.debug.CheckMatBlock; -import net.phasetranscrystal.breacore.common.block.debug.FluidFurnaceBlock; -import net.phasetranscrystal.breacore.data.blocks.DebugBlocks; - -import static net.phasetranscrystal.breacore.common.BreaRegistration.REGISTRATE; - -public class BreaBlocks { - - static { - REGISTRATE.defaultCreativeTab(BreaCreativeModeTabs.GENERAL_BLOCK.getKey()); - } - - public static BlockEntry MatCheckBlock; - public static BlockEntry FluidFurnaceBlock = REGISTRATE.block("fluid_furnace", FluidFurnaceBlock::new) - .simpleItem() - .lang("Fluid Furnace") - .lang(BreaRegistryCore.LANG_ZH_CN, "流体熔炉") - .register(); - - public static void init() { - DebugBlocks.init(); - } -} diff --git a/src/main/java/net/phasetranscrystal/breacore/common/data/BreaItems.java b/src/main/java/net/phasetranscrystal/breacore/common/data/BreaItems.java deleted file mode 100644 index c90a3ec..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/common/data/BreaItems.java +++ /dev/null @@ -1,12 +0,0 @@ -package net.phasetranscrystal.breacore.common.data; - -import net.phasetranscrystal.breacore.api.misc.AutoInitializeImpl; -import net.phasetranscrystal.breacore.data.items.DebugItems; - -public class BreaItems { - - public static void init() { - AutoInitializeImpl.INSTANCE.originInit(); - DebugItems.init(); - } -} diff --git a/src/main/java/net/phasetranscrystal/breacore/common/data/BreaMachines.java b/src/main/java/net/phasetranscrystal/breacore/common/data/BreaMachines.java deleted file mode 100644 index 39db593..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/common/data/BreaMachines.java +++ /dev/null @@ -1,33 +0,0 @@ -package net.phasetranscrystal.breacore.common.data; - -import net.phasetranscrystal.registrylib.tooltip.SubNode; - -import net.phasetranscrystal.breacore.api.machine.MachineDefinition; -import net.phasetranscrystal.breacore.common.machine.EmptyMachine; -import net.phasetranscrystal.breacore.data.machine.DebugMachines; - -import net.minecraft.network.chat.Component; - -import static net.phasetranscrystal.breacore.common.BreaRegistration.REGISTRATE; -import static net.phasetranscrystal.breacore.common.data.BreaCreativeModeTabs.MACHINE; - -public class BreaMachines { - - static { - REGISTRATE.defaultCreativeTab(MACHINE.getKey()); - } - - public static MachineDefinition TestMachine = REGISTRATE.machine("test_machine", EmptyMachine::new) - .langValue("Test Machine") - .itemBuilder(b -> b.addTag(BreaTags.DEBUG_ITEM)) - .blockBuilder(b -> b.addTag(BreaTags.DEBUG_BLOCK)) - .tooltips((collector, i) -> { - collector.node(new SubNode.Basic(Component.literal("§aTier 1"), 0), true, false); - collector.node(new SubNode.Basic(Component.literal("§7Tick interval: 20"), 10)); - }) - .register(); - - public static void init() { - DebugMachines.init(); - } -} diff --git a/src/main/java/net/phasetranscrystal/breacore/common/data/BreaTags.java b/src/main/java/net/phasetranscrystal/breacore/common/data/BreaTags.java deleted file mode 100644 index ffcab90..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/common/data/BreaTags.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.phasetranscrystal.breacore.common.data; - -import net.phasetranscrystal.breacore.data.tags.BreaBlockTags; -import net.phasetranscrystal.breacore.data.tags.BreaItemTags; - -import net.minecraft.tags.TagKey; -import net.minecraft.world.item.Item; -import net.minecraft.world.level.block.Block; - -public class BreaTags { - - public static TagKey DEBUG_ITEM; - - public static TagKey DEBUG_BLOCK; - public static TagKey MACHINE_BLOCK; - - public static void init() { - BreaItemTags.init(); - BreaBlockTags.init(); - } -} diff --git a/src/main/java/net/phasetranscrystal/breacore/common/data/BreaTooltips.java b/src/main/java/net/phasetranscrystal/breacore/common/data/BreaTooltips.java deleted file mode 100644 index 23b7d83..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/common/data/BreaTooltips.java +++ /dev/null @@ -1,8 +0,0 @@ -package net.phasetranscrystal.breacore.common.data; - -import net.minecraft.network.chat.Component; - -public class BreaTooltips { - - public static Component DebugItem = Component.literal("§eDebug"); -} diff --git a/src/main/java/net/phasetranscrystal/breacore/common/data/translation/MachineSlang.kt b/src/main/java/net/phasetranscrystal/breacore/common/data/translation/MachineSlang.kt deleted file mode 100644 index d71a8f7..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/common/data/translation/MachineSlang.kt +++ /dev/null @@ -1,5 +0,0 @@ -package net.phasetranscrystal.breacore.common.data.translation - -import net.phasetranscrystal.breacore.api.misc.AutoInitialize - -object MachineSlang : AutoInitialize() diff --git a/src/main/java/net/phasetranscrystal/breacore/data/blocks/DebugBlocks.java b/src/main/java/net/phasetranscrystal/breacore/data/blocks/DebugBlocks.java deleted file mode 100644 index b1589d6..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/data/blocks/DebugBlocks.java +++ /dev/null @@ -1,26 +0,0 @@ -package net.phasetranscrystal.breacore.data.blocks; - -import net.phasetranscrystal.breacore.api.registry.registrate.BreaRegistryCore; -import net.phasetranscrystal.breacore.common.block.debug.CheckMatBlock; -import net.phasetranscrystal.breacore.common.data.BreaCreativeModeTabs; -import net.phasetranscrystal.breacore.common.data.BreaTooltips; - -import static net.phasetranscrystal.breacore.common.BreaRegistration.DEBUG_REGISTRATE; -import static net.phasetranscrystal.breacore.common.BreaRegistration.REGISTRATE; -import static net.phasetranscrystal.breacore.common.data.BreaBlocks.MatCheckBlock; - -public class DebugBlocks { - - static { - REGISTRATE.defaultCreativeTab(BreaCreativeModeTabs.DEBUG_ITEMS.getKey()); - } - - public static void init() { - MatCheckBlock = DEBUG_REGISTRATE.block("mat_check", CheckMatBlock::new) - .item((builder) -> builder - .addTooltip(BreaTooltips.DebugItem)) - .lang("Material Check Block") - .lang(BreaRegistryCore.LANG_ZH_CN, "材料检测方块") - .register(); - } -} diff --git a/src/main/java/net/phasetranscrystal/breacore/data/items/DebugItems.java b/src/main/java/net/phasetranscrystal/breacore/data/items/DebugItems.java deleted file mode 100644 index ead73b0..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/data/items/DebugItems.java +++ /dev/null @@ -1,40 +0,0 @@ -package net.phasetranscrystal.breacore.data.items; - -import net.phasetranscrystal.brealib.BreaLib; - -import net.phasetranscrystal.registrylib.tooltip.SubNode; -import net.phasetranscrystal.registrylib.tooltip.TooltipRegistry; -import net.phasetranscrystal.registrylib.util.entry.ItemEntry; - -import net.phasetranscrystal.breacore.BreakdownCore; -import net.phasetranscrystal.breacore.common.data.BreaCreativeModeTabs; - -import net.minecraft.network.chat.Component; -import net.minecraft.world.item.Item; - -import static net.phasetranscrystal.breacore.common.BreaRegistration.REGISTRATE; - -public class DebugItems { - - static { - REGISTRATE.defaultCreativeTab(BreaCreativeModeTabs.DEBUG_ITEMS.getKey()); - } - static { - REGISTRATE.defaultCreativeTab(BreaCreativeModeTabs.ITEM.getKey()); - } - - public static ItemEntry TestItem = REGISTRATE.item("test_item") - .addTooltip((collector, stack) -> { - var box1 = TooltipRegistry.rootNode(BreaLib.id("test_item").toString(), 1, true); - collector.node(box1, new SubNode.Basic(Component.literal("§bDetailed Information"), 0)); - var box2 = TooltipRegistry.rootNode(BreakdownCore.MOD_ID + ":detail_box2", 1, true); - collector.node(box2, new SubNode.Basic(Component.literal("§7Fire resistant"), 10)); - var box3 = TooltipRegistry.rootNode(BreakdownCore.MOD_ID + ":detail_box3", 9, true); - for (int i = 1; i <= 28; i++) { - collector.node(box3, new SubNode.Basic(Component.literal("§7Arcane calibration line §f" + i), 10 + i)); - } - }) - .register(); - - public static void init() {} -} diff --git a/src/main/java/net/phasetranscrystal/breacore/data/machine/DebugMachines.java b/src/main/java/net/phasetranscrystal/breacore/data/machine/DebugMachines.java deleted file mode 100644 index 2e19759..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/data/machine/DebugMachines.java +++ /dev/null @@ -1,6 +0,0 @@ -package net.phasetranscrystal.breacore.data.machine; - -public class DebugMachines { - - public static void init() {} -} diff --git a/src/main/java/net/phasetranscrystal/breacore/data/tags/BreaBlockTags.java b/src/main/java/net/phasetranscrystal/breacore/data/tags/BreaBlockTags.java deleted file mode 100644 index 724a417..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/data/tags/BreaBlockTags.java +++ /dev/null @@ -1,17 +0,0 @@ -package net.phasetranscrystal.breacore.data.tags; - -import net.phasetranscrystal.brealib.BreaLib; - -import net.minecraft.tags.BlockTags; - -import static net.phasetranscrystal.breacore.common.data.BreaTags.*; - -public class BreaBlockTags { - - static { - DEBUG_BLOCK = BlockTags.create(BreaLib.id("debug")); - MACHINE_BLOCK = BlockTags.create(BreaLib.id("machine")); - } - - public static void init() {} -} diff --git a/src/main/java/net/phasetranscrystal/breacore/data/tags/BreaItemTags.java b/src/main/java/net/phasetranscrystal/breacore/data/tags/BreaItemTags.java deleted file mode 100644 index 332bd5a..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/data/tags/BreaItemTags.java +++ /dev/null @@ -1,16 +0,0 @@ -package net.phasetranscrystal.breacore.data.tags; - -import net.phasetranscrystal.brealib.BreaLib; - -import net.minecraft.tags.ItemTags; - -import static net.phasetranscrystal.breacore.common.data.BreaTags.*; - -public class BreaItemTags { - - static { - DEBUG_ITEM = ItemTags.create(BreaLib.id("debug")); - } - - public static void init() {} -} diff --git a/src/main/java/net/phasetranscrystal/breacore/utils/StringUtils.java b/src/main/java/net/phasetranscrystal/breacore/utils/StringUtils.java deleted file mode 100644 index c453a66..0000000 --- a/src/main/java/net/phasetranscrystal/breacore/utils/StringUtils.java +++ /dev/null @@ -1,36 +0,0 @@ -package net.phasetranscrystal.breacore.utils; - -import net.minecraft.ChatFormatting; - -public final class StringUtils { - - public static final String EMPTY = ""; - - private StringUtils() { - throw new UnsatisfiedLinkError("Not Impl"); - } - - public static native String numberToChinese(int var0); - - public static native String[] decompose(String var0); - - private static native String[] ㅤࣨࣳࣻ(char var0, String var1); - - public static native String[] lastDecompose(char var0, String var1); - - public static native boolean containsWithWildcard(String[] var0, String var1); - - public static native String full_color(String var0); - - public static native String dark_purplish_red(String var0); - - public static native String white_blue(String var0); - - public static native String purplish_red(String var0); - - public static native String golden(String var0); - - public static native String dark_green(String var0); - - private static native String ㅤࣨࣳࣻ(String var0, ChatFormatting[] var1, double var2); -} diff --git a/src/main/java/net/phasetranscrystal/breacore/BreaLdlibPlugin.java b/src/main/java/net/ptcrys/breakdown/BreaLdlibPlugin.java similarity index 70% rename from src/main/java/net/phasetranscrystal/breacore/BreaLdlibPlugin.java rename to src/main/java/net/ptcrys/breakdown/BreaLdlibPlugin.java index 1c978a9..a759e27 100644 --- a/src/main/java/net/phasetranscrystal/breacore/BreaLdlibPlugin.java +++ b/src/main/java/net/ptcrys/breakdown/BreaLdlibPlugin.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore; +package net.ptcrys.breakdown; import com.lowdragmc.lowdraglib2.plugin.ILDLibPlugin; import com.lowdragmc.lowdraglib2.plugin.LDLibPlugin; @@ -8,6 +8,6 @@ public class BreaLdlibPlugin implements ILDLibPlugin { @Override public void onLoad() { - BreakdownCore.LOGGER.info("LDLib2 initialized"); + BreaLib.LOGGER.info("LDLib2 initialized"); } } diff --git a/src/main/java/net/ptcrys/breakdown/BreaLib.java b/src/main/java/net/ptcrys/breakdown/BreaLib.java new file mode 100644 index 0000000..1dca4bc --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/BreaLib.java @@ -0,0 +1,121 @@ +package net.ptcrys.breakdown; + +import net.ptcrys.breakdown.utils.FormattingUtil; + +import net.minecraft.client.Minecraft; +import net.minecraft.resources.Identifier; +import net.minecraft.server.MinecraftServer; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.fml.ModContainer; +import net.neoforged.fml.ModList; +import net.neoforged.fml.loading.FMLEnvironment; +import net.neoforged.fml.loading.FMLLoader; +import net.neoforged.neoforge.data.loading.DatagenModLoader; +import net.neoforged.neoforge.server.ServerLifecycleHooks; + +import lombok.Getter; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.util.Strings; +import org.jetbrains.annotations.Nullable; + +import java.nio.file.Path; + +public class BreaLib { + + public static final String Core_ID = "breakdown"; + public static final String NAME = "瓦解"; + public static final Logger LOGGER = BreaLib.getLogger("Kernal"); + @Getter + static ModContainer modContainer; + @Getter + static IEventBus modEventBus; + private static final Identifier TEMPLATE_LOCATION = Identifier.fromNamespaceAndPath(BreaLib.Core_ID, ""); + + public static Logger getLogger(String subModule) { + return getLogger(subModule, null); + } + + public static Logger getLogger(String subModule, @Nullable String suffix) { + return LogManager.getLogger("Breakdown." + subModule + (suffix == null ? "" : ":" + suffix)); + } + + public static Identifier id(String path) { + if (Strings.isBlank(path)) { + return TEMPLATE_LOCATION; + } + return TEMPLATE_LOCATION.withPath(FormattingUtil.toLowerCaseUnder(path)); + } + + public static String appendIdString(String id) { + return id.indexOf(':') == -1 ? (BreaLib.Core_ID + ":" + id) : id; + } + + public static Identifier appendId(String id) { + String[] strings = new String[] { BreaLib.Core_ID, id }; + int i = id.indexOf(':'); + if (i >= 0) { + strings[1] = id.substring(i + 1); + if (i >= 1) { + strings[0] = id.substring(0, i); + } + } + return Identifier.fromNamespaceAndPath(strings[0], strings[1]); + } + + public static boolean isProd() { + return FMLEnvironment.isProduction(); + } + + public static boolean isDev() { + return !isProd(); + } + + public static boolean isDataGen() { + return DatagenModLoader.isRunningDataGen(); + } + + public static boolean isModLoaded(String modId) { + return ModList.get().isLoaded(modId); + } + + public static boolean isClientSide() { + return FMLEnvironment.getDist().isClient(); + } + + public static boolean isClientThread() { + return isClientSide() && Minecraft.getInstance().isSameThread(); + } + + public static boolean canGetServerLevel() { + if (isClientSide()) { + return Minecraft.getInstance().level != null; + } + var server = getMinecraftServer(); + return server != null && + !(server.isStopped() || server.isShutdown() || !server.isRunning() || server.isCurrentlySaving()); + } + + public static MinecraftServer getMinecraftServer() { + return ServerLifecycleHooks.getCurrentServer(); + } + + public static String platformName() { + return "NeoForge"; + } + + public static boolean isForge() { + return true; + } + + public static Path getGamePath() { + return FMLLoader.getCurrent().getGameDir(); + } + + public static boolean isRemote() { + if (isClientSide()) { + return Minecraft.getInstance().isSameThread(); + } + return false; + } +} diff --git a/src/main/java/net/phasetranscrystal/breacore/BreakdownAddon.java b/src/main/java/net/ptcrys/breakdown/BreakdownAddon.java similarity index 64% rename from src/main/java/net/phasetranscrystal/breacore/BreakdownAddon.java rename to src/main/java/net/ptcrys/breakdown/BreakdownAddon.java index 031dd35..1813dca 100644 --- a/src/main/java/net/phasetranscrystal/breacore/BreakdownAddon.java +++ b/src/main/java/net/ptcrys/breakdown/BreakdownAddon.java @@ -1,14 +1,14 @@ -package net.phasetranscrystal.breacore; +package net.ptcrys.breakdown; -import net.phasetranscrystal.breacore.api.addon.BreaAddon; -import net.phasetranscrystal.breacore.api.addon.IBreaAddon; -import net.phasetranscrystal.breacore.api.registry.registrate.BreaRegistryCore; -import net.phasetranscrystal.breacore.common.BreaRegistration; +import net.ptcrys.breakdown.api.addon.BreaAddon; +import net.ptcrys.breakdown.api.addon.IBreaAddon; +import net.ptcrys.breakdown.api.registry.registrate.BreaRegistryCore; +import net.ptcrys.breakdown.common.BreaRegistration; import lombok.extern.log4j.Log4j2; @Log4j2 -@BreaAddon(BreakdownCore.MOD_ID) +@BreaAddon(BreaLib.Core_ID) public class BreakdownAddon implements IBreaAddon { @Override diff --git a/src/main/java/net/ptcrys/breakdown/BreakdownKernal.java b/src/main/java/net/ptcrys/breakdown/BreakdownKernal.java new file mode 100644 index 0000000..86ba377 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/BreakdownKernal.java @@ -0,0 +1,19 @@ +package net.ptcrys.breakdown; + +import net.ptcrys.breakdown.client.ClientProxy; +import net.ptcrys.breakdown.common.CommonProxy; +import net.ptcrys.registrylib.util.DistExecutor; + +import net.neoforged.bus.api.IEventBus; +import net.neoforged.fml.ModContainer; +import net.neoforged.fml.common.Mod; + +@Mod(BreaLib.Core_ID) +public class BreakdownKernal { + + public BreakdownKernal(ModContainer modContainer, IEventBus modEventBus) { + BreaLib.modContainer = modContainer; + BreaLib.modEventBus = modEventBus; + DistExecutor.safeRunForDist(() -> ClientProxy::new, () -> CommonProxy::new); + } +} diff --git a/src/main/java/net/phasetranscrystal/breacore/api/BreaApi.java b/src/main/java/net/ptcrys/breakdown/api/BreaApi.java similarity index 85% rename from src/main/java/net/phasetranscrystal/breacore/api/BreaApi.java rename to src/main/java/net/ptcrys/breakdown/api/BreaApi.java index 7ceb6cc..beec890 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/BreaApi.java +++ b/src/main/java/net/ptcrys/breakdown/api/BreaApi.java @@ -1,8 +1,8 @@ -package net.phasetranscrystal.breacore.api; +package net.ptcrys.breakdown.api; -import net.phasetranscrystal.breacore.api.material.registry.IMaterialRegistry; -import net.phasetranscrystal.breacore.api.registry.BreaRegistry; -import net.phasetranscrystal.breacore.mixins.RegisterEventAccessor; +import net.ptcrys.breakdown.api.material.registry.IMaterialRegistry; +import net.ptcrys.breakdown.api.registry.BreaRegistry; +import net.ptcrys.breakdown.mixins.RegisterEventAccessor; import net.minecraft.util.RandomSource; import net.neoforged.fml.ModLoader; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/addon/AddonFinder.java b/src/main/java/net/ptcrys/breakdown/api/addon/AddonFinder.java similarity index 97% rename from src/main/java/net/phasetranscrystal/breacore/api/addon/AddonFinder.java rename to src/main/java/net/ptcrys/breakdown/api/addon/AddonFinder.java index 45a6dc4..7f5dcc5 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/addon/AddonFinder.java +++ b/src/main/java/net/ptcrys/breakdown/api/addon/AddonFinder.java @@ -1,6 +1,6 @@ -package net.phasetranscrystal.breacore.api.addon; +package net.ptcrys.breakdown.api.addon; -import net.phasetranscrystal.brealib.BreaLib; +import net.ptcrys.breakdown.BreaLib; import net.neoforged.fml.ModList; import net.neoforged.neoforgespi.language.IModInfo; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/addon/BreaAddon.java b/src/main/java/net/ptcrys/breakdown/api/addon/BreaAddon.java similarity index 87% rename from src/main/java/net/phasetranscrystal/breacore/api/addon/BreaAddon.java rename to src/main/java/net/ptcrys/breakdown/api/addon/BreaAddon.java index 6fe0244..d9d096d 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/addon/BreaAddon.java +++ b/src/main/java/net/ptcrys/breakdown/api/addon/BreaAddon.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.addon; +package net.ptcrys.breakdown.api.addon; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -6,7 +6,7 @@ import java.lang.annotation.Target; /** - * This defines an Addon to BreakdownCore. + * This defines an Addon to BreakdownKernal. *

* Any class found with this annotation applied will be loaded * as an addon entrypoint for the mod with the given {@linkplain #value() ID}. diff --git a/src/main/java/net/phasetranscrystal/breacore/api/addon/IBreaAddon.java b/src/main/java/net/ptcrys/breakdown/api/addon/IBreaAddon.java similarity index 61% rename from src/main/java/net/phasetranscrystal/breacore/api/addon/IBreaAddon.java rename to src/main/java/net/ptcrys/breakdown/api/addon/IBreaAddon.java index c39a8c5..db25905 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/addon/IBreaAddon.java +++ b/src/main/java/net/ptcrys/breakdown/api/addon/IBreaAddon.java @@ -1,6 +1,6 @@ -package net.phasetranscrystal.breacore.api.addon; +package net.ptcrys.breakdown.api.addon; -import net.phasetranscrystal.breacore.api.registry.registrate.BreaRegistryCore; +import net.ptcrys.breakdown.api.registry.registrate.BreaRegistryCore; @SuppressWarnings("unused") public interface IBreaAddon { diff --git a/src/main/java/net/phasetranscrystal/breacore/api/annotation/DataGeneratorScanned.java b/src/main/java/net/ptcrys/breakdown/api/annotation/DataGeneratorScanned.java similarity index 76% rename from src/main/java/net/phasetranscrystal/breacore/api/annotation/DataGeneratorScanned.java rename to src/main/java/net/ptcrys/breakdown/api/annotation/DataGeneratorScanned.java index e5bc518..4e3ed8f 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/annotation/DataGeneratorScanned.java +++ b/src/main/java/net/ptcrys/breakdown/api/annotation/DataGeneratorScanned.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.annotation; +package net.ptcrys.breakdown.api.annotation; import kotlin.annotation.AnnotationTarget; import kotlin.annotation.Target; diff --git a/src/main/java/net/ptcrys/breakdown/api/annotation/NewDataAttributes.java b/src/main/java/net/ptcrys/breakdown/api/annotation/NewDataAttributes.java new file mode 100644 index 0000000..b2badf5 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/api/annotation/NewDataAttributes.java @@ -0,0 +1,11 @@ +package net.ptcrys.breakdown.api.annotation; + +public final class NewDataAttributes { + + public static final String PREFIX = "breakdown.lang"; + public static final String PREFIX_TEMPLATE = "breakdown.lang.template"; + + public NewDataAttributes() { + throw new UnsatisfiedLinkError("Not Impl"); + } +} diff --git a/src/main/java/net/phasetranscrystal/breacore/api/annotation/RegisterLanguage.java b/src/main/java/net/ptcrys/breakdown/api/annotation/RegisterLanguage.java similarity index 88% rename from src/main/java/net/phasetranscrystal/breacore/api/annotation/RegisterLanguage.java rename to src/main/java/net/ptcrys/breakdown/api/annotation/RegisterLanguage.java index 87869a4..22726a5 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/annotation/RegisterLanguage.java +++ b/src/main/java/net/ptcrys/breakdown/api/annotation/RegisterLanguage.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.annotation; +package net.ptcrys.breakdown.api.annotation; import kotlin.annotation.AnnotationTarget; import kotlin.annotation.Target; diff --git a/src/main/java/net/ptcrys/breakdown/api/annotation/Scanned.java b/src/main/java/net/ptcrys/breakdown/api/annotation/Scanned.java new file mode 100644 index 0000000..b419cec --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/api/annotation/Scanned.java @@ -0,0 +1,8 @@ +package net.ptcrys.breakdown.api.annotation; + +import kotlin.annotation.AnnotationTarget; +import kotlin.annotation.Target; + +@Target( + allowedTargets = { AnnotationTarget.CLASS }) +public @interface Scanned {} diff --git a/src/main/java/net/ptcrys/breakdown/api/annotation/TranslationKeyProvider.java b/src/main/java/net/ptcrys/breakdown/api/annotation/TranslationKeyProvider.java new file mode 100644 index 0000000..a8e2194 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/api/annotation/TranslationKeyProvider.java @@ -0,0 +1,25 @@ +package net.ptcrys.breakdown.api.annotation; + +import net.ptcrys.breakdown.BreaLib; +import net.ptcrys.breakdown.api.lang.CNEN; + +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; + +public final class TranslationKeyProvider { + + public static final Object2ObjectOpenHashMap LANG = BreaLib.isDataGen() ? new Object2ObjectOpenHashMap<>() : null; + + public static String getTranslationKey(String cn, String en) { + return getTranslationKey(cn, en, "breakdown.lang"); + } + + public static String getTranslationKey(String cn, String en, String prefix) { + String var3 = (prefix != null ? prefix : "") + "." + en.hashCode(); + var3 = var3.replace("..", "."); + if (LANG != null) { + LANG.put(var3, new CNEN(cn, en)); + } + + return var3; + } +} diff --git a/src/main/java/net/phasetranscrystal/breacore/api/block/ActiveBlock.java b/src/main/java/net/ptcrys/breakdown/api/block/ActiveBlock.java similarity index 96% rename from src/main/java/net/phasetranscrystal/breacore/api/block/ActiveBlock.java rename to src/main/java/net/ptcrys/breakdown/api/block/ActiveBlock.java index 40b7d24..1769200 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/block/ActiveBlock.java +++ b/src/main/java/net/ptcrys/breakdown/api/block/ActiveBlock.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.block; +package net.ptcrys.breakdown.api.block; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/block/AppearanceBlock.java b/src/main/java/net/ptcrys/breakdown/api/block/AppearanceBlock.java similarity index 94% rename from src/main/java/net/phasetranscrystal/breacore/api/block/AppearanceBlock.java rename to src/main/java/net/ptcrys/breakdown/api/block/AppearanceBlock.java index 0f34e54..009b58d 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/block/AppearanceBlock.java +++ b/src/main/java/net/ptcrys/breakdown/api/block/AppearanceBlock.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.block; +package net.ptcrys.breakdown.api.block; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/block/BlockProperties.java b/src/main/java/net/ptcrys/breakdown/api/block/BlockProperties.java similarity index 80% rename from src/main/java/net/phasetranscrystal/breacore/api/block/BlockProperties.java rename to src/main/java/net/ptcrys/breakdown/api/block/BlockProperties.java index 091c7f4..7c33849 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/block/BlockProperties.java +++ b/src/main/java/net/ptcrys/breakdown/api/block/BlockProperties.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.block; +package net.ptcrys.breakdown.api.block; import net.minecraft.world.level.block.state.properties.BooleanProperty; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/block/IAppearance.java b/src/main/java/net/ptcrys/breakdown/api/block/IAppearance.java similarity index 93% rename from src/main/java/net/phasetranscrystal/breacore/api/block/IAppearance.java rename to src/main/java/net/ptcrys/breakdown/api/block/IAppearance.java index e467b50..e1e3cde 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/block/IAppearance.java +++ b/src/main/java/net/ptcrys/breakdown/api/block/IAppearance.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.block; +package net.ptcrys.breakdown.api.block; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/block/IMachineBlock.java b/src/main/java/net/ptcrys/breakdown/api/block/IMachineBlock.java similarity index 90% rename from src/main/java/net/phasetranscrystal/breacore/api/block/IMachineBlock.java rename to src/main/java/net/ptcrys/breakdown/api/block/IMachineBlock.java index b3ad6d9..8e3538c 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/block/IMachineBlock.java +++ b/src/main/java/net/ptcrys/breakdown/api/block/IMachineBlock.java @@ -1,9 +1,8 @@ -package net.phasetranscrystal.breacore.api.block; +package net.ptcrys.breakdown.api.block; -import net.phasetranscrystal.brealib.util.RotationState; - -import net.phasetranscrystal.breacore.api.blockentity.IMachineBlockEntity; -import net.phasetranscrystal.breacore.api.machine.MachineDefinition; +import net.ptcrys.breakdown.api.blockentity.IMachineBlockEntity; +import net.ptcrys.breakdown.api.machine.MachineDefinition; +import net.ptcrys.breakdown.utils.enums.RotationState; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/block/MaterialBlock.java b/src/main/java/net/ptcrys/breakdown/api/block/MaterialBlock.java similarity index 68% rename from src/main/java/net/phasetranscrystal/breacore/api/block/MaterialBlock.java rename to src/main/java/net/ptcrys/breakdown/api/block/MaterialBlock.java index 7c30339..cc66b69 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/block/MaterialBlock.java +++ b/src/main/java/net/ptcrys/breakdown/api/block/MaterialBlock.java @@ -1,7 +1,7 @@ -package net.phasetranscrystal.breacore.api.block; +package net.ptcrys.breakdown.api.block; -import net.phasetranscrystal.breacore.api.material.Material; -import net.phasetranscrystal.breacore.api.material.register.MaterialVariant; +import net.ptcrys.breakdown.api.material.Material; +import net.ptcrys.breakdown.api.material.register.MaterialVariant; import net.minecraft.world.level.block.Block; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/block/MetaMachineBlock.java b/src/main/java/net/ptcrys/breakdown/api/block/MetaMachineBlock.java similarity index 94% rename from src/main/java/net/phasetranscrystal/breacore/api/block/MetaMachineBlock.java rename to src/main/java/net/ptcrys/breakdown/api/block/MetaMachineBlock.java index 361e1ed..5e9af39 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/block/MetaMachineBlock.java +++ b/src/main/java/net/ptcrys/breakdown/api/block/MetaMachineBlock.java @@ -1,13 +1,12 @@ -package net.phasetranscrystal.breacore.api.block; - -import net.phasetranscrystal.brealib.util.RotationState; - -import net.phasetranscrystal.breacore.api.blockentity.IMachineBlockEntity; -import net.phasetranscrystal.breacore.api.machine.MachineDefinition; -import net.phasetranscrystal.breacore.api.machine.MetaMachine; -import net.phasetranscrystal.breacore.api.machine.feature.IDropSaveMachine; -import net.phasetranscrystal.breacore.api.machine.feature.IMachineLife; -import net.phasetranscrystal.breacore.api.machine.feature.IMachineModifyDrops; +package net.ptcrys.breakdown.api.block; + +import net.ptcrys.breakdown.api.blockentity.IMachineBlockEntity; +import net.ptcrys.breakdown.api.machine.MachineDefinition; +import net.ptcrys.breakdown.api.machine.MetaMachine; +import net.ptcrys.breakdown.api.machine.feature.IDropSaveMachine; +import net.ptcrys.breakdown.api.machine.feature.IMachineLife; +import net.ptcrys.breakdown.api.machine.feature.IMachineModifyDrops; +import net.ptcrys.breakdown.utils.enums.RotationState; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/blockentity/IMachineBlockEntity.java b/src/main/java/net/ptcrys/breakdown/api/blockentity/IMachineBlockEntity.java similarity index 90% rename from src/main/java/net/phasetranscrystal/breacore/api/blockentity/IMachineBlockEntity.java rename to src/main/java/net/ptcrys/breakdown/api/blockentity/IMachineBlockEntity.java index 268fc04..01252a6 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/blockentity/IMachineBlockEntity.java +++ b/src/main/java/net/ptcrys/breakdown/api/blockentity/IMachineBlockEntity.java @@ -1,9 +1,9 @@ -package net.phasetranscrystal.breacore.api.blockentity; +package net.ptcrys.breakdown.api.blockentity; -import net.phasetranscrystal.breacore.api.BreaApi; -import net.phasetranscrystal.breacore.api.block.IMachineBlock; -import net.phasetranscrystal.breacore.api.machine.MachineDefinition; -import net.phasetranscrystal.breacore.api.machine.MetaMachine; +import net.ptcrys.breakdown.api.BreaApi; +import net.ptcrys.breakdown.api.block.IMachineBlock; +import net.ptcrys.breakdown.api.machine.MachineDefinition; +import net.ptcrys.breakdown.api.machine.MetaMachine; import net.minecraft.core.BlockPos; import net.minecraft.world.level.Level; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/blockentity/IPaintable.java b/src/main/java/net/ptcrys/breakdown/api/blockentity/IPaintable.java similarity index 93% rename from src/main/java/net/phasetranscrystal/breacore/api/blockentity/IPaintable.java rename to src/main/java/net/ptcrys/breakdown/api/blockentity/IPaintable.java index 0570c15..f0e54a0 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/blockentity/IPaintable.java +++ b/src/main/java/net/ptcrys/breakdown/api/blockentity/IPaintable.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.blockentity; +package net.ptcrys.breakdown.api.blockentity; /** * @author screret diff --git a/src/main/java/net/phasetranscrystal/breacore/api/blockentity/ITickSubscription.java b/src/main/java/net/ptcrys/breakdown/api/blockentity/ITickSubscription.java similarity index 85% rename from src/main/java/net/phasetranscrystal/breacore/api/blockentity/ITickSubscription.java rename to src/main/java/net/ptcrys/breakdown/api/blockentity/ITickSubscription.java index 4ecbf01..b43ccba 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/blockentity/ITickSubscription.java +++ b/src/main/java/net/ptcrys/breakdown/api/blockentity/ITickSubscription.java @@ -1,6 +1,6 @@ -package net.phasetranscrystal.breacore.api.blockentity; +package net.ptcrys.breakdown.api.blockentity; -import net.phasetranscrystal.brealib.util.TickableSubscription; +import net.ptcrys.breakdown.utils.TickableSubscription; import net.minecraft.world.level.block.entity.BlockEntity; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/blockentity/MetaMachineBlockEntity.java b/src/main/java/net/ptcrys/breakdown/api/blockentity/MetaMachineBlockEntity.java similarity index 95% rename from src/main/java/net/phasetranscrystal/breacore/api/blockentity/MetaMachineBlockEntity.java rename to src/main/java/net/ptcrys/breakdown/api/blockentity/MetaMachineBlockEntity.java index 0745e21..1b62e34 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/blockentity/MetaMachineBlockEntity.java +++ b/src/main/java/net/ptcrys/breakdown/api/blockentity/MetaMachineBlockEntity.java @@ -1,7 +1,7 @@ -package net.phasetranscrystal.breacore.api.blockentity; +package net.ptcrys.breakdown.api.blockentity; -import net.phasetranscrystal.breacore.api.BreaApi; -import net.phasetranscrystal.breacore.api.machine.MetaMachine; +import net.ptcrys.breakdown.api.BreaApi; +import net.ptcrys.breakdown.api.machine.MetaMachine; import net.minecraft.core.BlockPos; import net.minecraft.core.component.DataComponentGetter; diff --git a/src/main/java/net/ptcrys/breakdown/api/capability/IToolable.java b/src/main/java/net/ptcrys/breakdown/api/capability/IToolable.java new file mode 100644 index 0000000..755ee3f --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/api/capability/IToolable.java @@ -0,0 +1,5 @@ +package net.ptcrys.breakdown.api.capability; + +public interface IToolable { + +} diff --git a/src/main/java/net/phasetranscrystal/breacore/api/event/EntityAttackEvent.java b/src/main/java/net/ptcrys/breakdown/api/event/EntityAttackEvent.java similarity index 98% rename from src/main/java/net/phasetranscrystal/breacore/api/event/EntityAttackEvent.java rename to src/main/java/net/ptcrys/breakdown/api/event/EntityAttackEvent.java index b373c1e..f68c164 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/event/EntityAttackEvent.java +++ b/src/main/java/net/ptcrys/breakdown/api/event/EntityAttackEvent.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.event; +package net.ptcrys.breakdown.api.event; import net.minecraft.world.entity.Entity; import net.neoforged.neoforge.event.entity.EntityEvent; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/event/EntityKillEvent.java b/src/main/java/net/ptcrys/breakdown/api/event/EntityKillEvent.java similarity index 98% rename from src/main/java/net/phasetranscrystal/breacore/api/event/EntityKillEvent.java rename to src/main/java/net/ptcrys/breakdown/api/event/EntityKillEvent.java index 3ea36a9..ccd62af 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/event/EntityKillEvent.java +++ b/src/main/java/net/ptcrys/breakdown/api/event/EntityKillEvent.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.event; +package net.ptcrys.breakdown.api.event; import net.minecraft.world.entity.Entity; import net.neoforged.neoforge.event.entity.EntityEvent; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/event/GatherEntityDistributeEvent.java b/src/main/java/net/ptcrys/breakdown/api/event/GatherEntityDistributeEvent.java similarity index 94% rename from src/main/java/net/phasetranscrystal/breacore/api/event/GatherEntityDistributeEvent.java rename to src/main/java/net/ptcrys/breakdown/api/event/GatherEntityDistributeEvent.java index 729ed90..623e76b 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/event/GatherEntityDistributeEvent.java +++ b/src/main/java/net/ptcrys/breakdown/api/event/GatherEntityDistributeEvent.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.event; +package net.ptcrys.breakdown.api.event; import net.minecraft.world.entity.Entity; import net.neoforged.neoforge.event.entity.EntityEvent; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/eventdispatch/EventConsumer.java b/src/main/java/net/ptcrys/breakdown/api/eventdispatch/EventConsumer.java similarity index 98% rename from src/main/java/net/phasetranscrystal/breacore/api/eventdispatch/EventConsumer.java rename to src/main/java/net/ptcrys/breakdown/api/eventdispatch/EventConsumer.java index 369c3a0..025eaff 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/eventdispatch/EventConsumer.java +++ b/src/main/java/net/ptcrys/breakdown/api/eventdispatch/EventConsumer.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.eventdispatch; +package net.ptcrys.breakdown.api.eventdispatch; import net.minecraft.resources.Identifier; import net.minecraft.world.entity.Entity; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/eventdispatch/EventDispatcher.java b/src/main/java/net/ptcrys/breakdown/api/eventdispatch/EventDispatcher.java similarity index 98% rename from src/main/java/net/phasetranscrystal/breacore/api/eventdispatch/EventDispatcher.java rename to src/main/java/net/ptcrys/breakdown/api/eventdispatch/EventDispatcher.java index 50dfe6c..97753fe 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/eventdispatch/EventDispatcher.java +++ b/src/main/java/net/ptcrys/breakdown/api/eventdispatch/EventDispatcher.java @@ -1,6 +1,6 @@ -package net.phasetranscrystal.breacore.api.eventdispatch; +package net.ptcrys.breakdown.api.eventdispatch; -import net.phasetranscrystal.breacore.common.data.BreaAttachmentTypes; +import net.ptcrys.breakdown.common.data.BreaAttachmentTypes; import net.minecraft.resources.Identifier; import net.minecraft.world.entity.Entity; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/eventdispatch/EventDistributor.java b/src/main/java/net/ptcrys/breakdown/api/eventdispatch/EventDistributor.java similarity index 99% rename from src/main/java/net/phasetranscrystal/breacore/api/eventdispatch/EventDistributor.java rename to src/main/java/net/ptcrys/breakdown/api/eventdispatch/EventDistributor.java index ea7934b..8bf4c8a 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/eventdispatch/EventDistributor.java +++ b/src/main/java/net/ptcrys/breakdown/api/eventdispatch/EventDistributor.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.eventdispatch; +package net.ptcrys.breakdown.api.eventdispatch; import net.minecraft.resources.Identifier; import net.neoforged.bus.api.Event; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/eventdispatch/EventTree.java b/src/main/java/net/ptcrys/breakdown/api/eventdispatch/EventTree.java similarity index 99% rename from src/main/java/net/phasetranscrystal/breacore/api/eventdispatch/EventTree.java rename to src/main/java/net/ptcrys/breakdown/api/eventdispatch/EventTree.java index 8155f71..9d81b54 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/eventdispatch/EventTree.java +++ b/src/main/java/net/ptcrys/breakdown/api/eventdispatch/EventTree.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.eventdispatch; +package net.ptcrys.breakdown.api.eventdispatch; import net.minecraft.resources.Identifier; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/eventdispatch/IEntityAboutEvent.java b/src/main/java/net/ptcrys/breakdown/api/eventdispatch/IEntityAboutEvent.java similarity index 70% rename from src/main/java/net/phasetranscrystal/breacore/api/eventdispatch/IEntityAboutEvent.java rename to src/main/java/net/ptcrys/breakdown/api/eventdispatch/IEntityAboutEvent.java index 86e0c9f..65a0083 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/eventdispatch/IEntityAboutEvent.java +++ b/src/main/java/net/ptcrys/breakdown/api/eventdispatch/IEntityAboutEvent.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.eventdispatch; +package net.ptcrys.breakdown.api.eventdispatch; import net.minecraft.world.entity.Entity; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/eventdispatch/README.md b/src/main/java/net/ptcrys/breakdown/api/eventdispatch/README.md similarity index 91% rename from src/main/java/net/phasetranscrystal/breacore/api/eventdispatch/README.md rename to src/main/java/net/ptcrys/breakdown/api/eventdispatch/README.md index c9b74b5..74d9e23 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/eventdispatch/README.md +++ b/src/main/java/net/ptcrys/breakdown/api/eventdispatch/README.md @@ -69,33 +69,45 @@ consumer.removeFrom(entity); ### 带路径的添加 ```java -import net.phasetranscrystal.breacore.api.eventdispatch.EventDispatcher;Identifier[] path = { - Identifier.fromNamespaceAndPath("mymod", "combat"), - Identifier.fromNamespaceAndPath("mymod", "damage") + + +Identifier[] path = { + Identifier.fromNamespaceAndPath("mymod", "combat"), + Identifier.fromNamespaceAndPath("mymod", "damage") }; EventConsumer consumer = EventConsumer.of( - LivingDamageEvent.Post.class, - path, - false, - (event, self) -> { /* ... */ } + LivingDamageEvent.Post.class, + path, + false, + (event, self) -> { /* ... */ } ); EventDistributor distributor = entity.getData(AttachmentTypeRegistry.EVENT_DISTRIBUTOR.get()); -distributor.attachConsumer(consumer); +distributor. + +attachConsumer(consumer); // 或使用便捷方法 EventDistributor distributor = entity.getData(AttachmentTypeRegistry.EVENT_DISTRIBUTOR.get()); -distributor.attachConsumer( - LivingDamageEvent.Post.class, +distributor. + +attachConsumer( + LivingDamageEvent.Post .class, false, - (event, self) -> { /* ... */ }, - Identifier.fromNamespaceAndPath("mymod", "combat"), - Identifier.fromNamespaceAndPath("mymod", "damage") + (event, self) ->{ /* ... */ }, + Identifier. + +fromNamespaceAndPath("mymod","combat"), + Identifier. + +fromNamespaceAndPath("mymod","damage") ); //另外,EventDispatcher内也提供合并写法: -EventDispatcher.attach(entity,consumer); + EventDispatcher. + +attach(entity, consumer); //其余同理,EventDispatcher均存有简便写法 ``` diff --git a/src/main/java/net/phasetranscrystal/breacore/api/fluid/FluidConstants.java b/src/main/java/net/ptcrys/breakdown/api/fluid/FluidConstants.java similarity index 96% rename from src/main/java/net/phasetranscrystal/breacore/api/fluid/FluidConstants.java rename to src/main/java/net/ptcrys/breakdown/api/fluid/FluidConstants.java index fefe0ef..8be59e1 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/fluid/FluidConstants.java +++ b/src/main/java/net/ptcrys/breakdown/api/fluid/FluidConstants.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.fluid; +package net.ptcrys.breakdown.api.fluid; public class FluidConstants { diff --git a/src/main/java/net/phasetranscrystal/breacore/api/fluid/MaterialFluid.java b/src/main/java/net/ptcrys/breakdown/api/fluid/MaterialFluid.java similarity index 93% rename from src/main/java/net/phasetranscrystal/breacore/api/fluid/MaterialFluid.java rename to src/main/java/net/ptcrys/breakdown/api/fluid/MaterialFluid.java index 2576c24..861b3c2 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/fluid/MaterialFluid.java +++ b/src/main/java/net/ptcrys/breakdown/api/fluid/MaterialFluid.java @@ -1,7 +1,7 @@ -package net.phasetranscrystal.breacore.api.fluid; +package net.ptcrys.breakdown.api.fluid; -import net.phasetranscrystal.breacore.api.material.Material; -import net.phasetranscrystal.breacore.api.material.register.MaterialVariant; +import net.ptcrys.breakdown.api.material.Material; +import net.ptcrys.breakdown.api.material.register.MaterialVariant; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/fluid/attribute/FluidAttribute.java b/src/main/java/net/ptcrys/breakdown/api/fluid/attribute/FluidAttribute.java similarity index 96% rename from src/main/java/net/phasetranscrystal/breacore/api/fluid/attribute/FluidAttribute.java rename to src/main/java/net/ptcrys/breakdown/api/fluid/attribute/FluidAttribute.java index 58e6e71..7d11863 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/fluid/attribute/FluidAttribute.java +++ b/src/main/java/net/ptcrys/breakdown/api/fluid/attribute/FluidAttribute.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.fluid.attribute; +package net.ptcrys.breakdown.api.fluid.attribute; import net.minecraft.network.chat.Component; import net.minecraft.resources.Identifier; diff --git a/src/main/java/net/ptcrys/breakdown/api/fluid/attribute/FluidAttributes.java b/src/main/java/net/ptcrys/breakdown/api/fluid/attribute/FluidAttributes.java new file mode 100644 index 0000000..6407d9c --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/api/fluid/attribute/FluidAttributes.java @@ -0,0 +1,17 @@ +package net.ptcrys.breakdown.api.fluid.attribute; + +import net.ptcrys.breakdown.BreaLib; + +import net.minecraft.network.chat.Component; + +public final class FluidAttributes { + + /** + * Attribute for acidic fluids. + */ + public static final FluidAttribute ACID = new FluidAttribute(BreaLib.id("acid"), + list -> list.accept(Component.translatable("breakdown.fluid.type_acid.tooltip")), + list -> list.accept(Component.translatable("breakdown.fluid_pipe.acid_proof"))); + + private FluidAttributes() {} +} diff --git a/src/main/java/net/ptcrys/breakdown/api/gui/EditableMachineUI.java b/src/main/java/net/ptcrys/breakdown/api/gui/EditableMachineUI.java new file mode 100644 index 0000000..91670d9 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/api/gui/EditableMachineUI.java @@ -0,0 +1,3 @@ +package net.ptcrys.breakdown.api.gui; + +public class EditableMachineUI {} diff --git a/src/main/java/net/phasetranscrystal/breacore/api/item/MaterialBlockItem.java b/src/main/java/net/ptcrys/breakdown/api/item/MaterialBlockItem.java similarity index 73% rename from src/main/java/net/phasetranscrystal/breacore/api/item/MaterialBlockItem.java rename to src/main/java/net/ptcrys/breakdown/api/item/MaterialBlockItem.java index 32b400a..1981ec3 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/item/MaterialBlockItem.java +++ b/src/main/java/net/ptcrys/breakdown/api/item/MaterialBlockItem.java @@ -1,7 +1,7 @@ -package net.phasetranscrystal.breacore.api.item; +package net.ptcrys.breakdown.api.item; -import net.phasetranscrystal.breacore.api.material.Material; -import net.phasetranscrystal.breacore.api.material.register.MaterialVariant; +import net.ptcrys.breakdown.api.material.Material; +import net.ptcrys.breakdown.api.material.register.MaterialVariant; import net.minecraft.world.item.BlockItem; import net.minecraft.world.level.block.Block; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/item/MaterialItem.java b/src/main/java/net/ptcrys/breakdown/api/item/MaterialItem.java similarity index 56% rename from src/main/java/net/phasetranscrystal/breacore/api/item/MaterialItem.java rename to src/main/java/net/ptcrys/breakdown/api/item/MaterialItem.java index 7830893..99d9674 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/item/MaterialItem.java +++ b/src/main/java/net/ptcrys/breakdown/api/item/MaterialItem.java @@ -1,13 +1,12 @@ -package net.phasetranscrystal.breacore.api.item; +package net.ptcrys.breakdown.api.item; -import net.phasetranscrystal.breacore.api.material.Material; -import net.phasetranscrystal.breacore.api.material.register.MaterialVariant; - -import net.minecraft.world.item.Item; +import net.ptcrys.breakdown.api.material.Material; +import net.ptcrys.breakdown.api.material.register.MaterialVariant; +import net.ptcrys.registrylib.composite.ComponentItem; import lombok.Getter; -public class MaterialItem extends Item { +public class MaterialItem extends ComponentItem { @Getter private final MaterialVariant variant; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/item/MetaMachineItem.java b/src/main/java/net/ptcrys/breakdown/api/item/MetaMachineItem.java similarity index 60% rename from src/main/java/net/phasetranscrystal/breacore/api/item/MetaMachineItem.java rename to src/main/java/net/ptcrys/breakdown/api/item/MetaMachineItem.java index 9b39a76..2f4b9b8 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/item/MetaMachineItem.java +++ b/src/main/java/net/ptcrys/breakdown/api/item/MetaMachineItem.java @@ -1,12 +1,10 @@ -package net.phasetranscrystal.breacore.api.item; +package net.ptcrys.breakdown.api.item; -import net.phasetranscrystal.breacore.api.block.IMachineBlock; -import net.phasetranscrystal.breacore.api.machine.MachineDefinition; +import net.ptcrys.breakdown.api.block.IMachineBlock; +import net.ptcrys.breakdown.api.machine.MachineDefinition; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.block.state.BlockState; import com.lowdragmc.lowdraglib2.client.renderer.IItemRendererProvider; import com.lowdragmc.lowdraglib2.client.renderer.IRenderer; @@ -27,10 +25,4 @@ public MachineDefinition getDefinition() { public IRenderer getRenderer(ItemStack stack) { return ((IMachineBlock) getBlock()).getDefinition().getRenderer(); } - - @Override - @SuppressWarnings({ "rawtypes", "unchecked" }) - protected boolean placeBlock(BlockPlaceContext context, BlockState state) { - return super.placeBlock(context, state); - } } diff --git a/src/main/java/net/ptcrys/breakdown/api/item/tool/IToolGridHighLight.java b/src/main/java/net/ptcrys/breakdown/api/item/tool/IToolGridHighLight.java new file mode 100644 index 0000000..39a7f61 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/api/item/tool/IToolGridHighLight.java @@ -0,0 +1,5 @@ +package net.ptcrys.breakdown.api.item.tool; + +public interface IToolGridHighLight { + +} diff --git a/src/main/java/net/phasetranscrystal/breacore/api/lang/CNEN.java b/src/main/java/net/ptcrys/breakdown/api/lang/CNEN.java similarity index 52% rename from src/main/java/net/phasetranscrystal/breacore/api/lang/CNEN.java rename to src/main/java/net/ptcrys/breakdown/api/lang/CNEN.java index cd63349..037e47f 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/lang/CNEN.java +++ b/src/main/java/net/ptcrys/breakdown/api/lang/CNEN.java @@ -1,7 +1,7 @@ -package net.phasetranscrystal.breacore.api.lang; +package net.ptcrys.breakdown.api.lang; -import net.phasetranscrystal.breacore.api.annotation.DataGeneratorScanned; -import net.phasetranscrystal.breacore.api.annotation.RegisterLanguage; +import net.ptcrys.breakdown.api.annotation.DataGeneratorScanned; +import net.ptcrys.breakdown.api.annotation.RegisterLanguage; @DataGeneratorScanned public record CNEN(String cn, String en) { @@ -9,29 +9,29 @@ public record CNEN(String cn, String en) { @RegisterLanguage( cn = "拆除模式", en = "Demolition Mode") - public static final String DEMOLITION = "breacore.auto_build.demolition_mode"; + public static final String DEMOLITION = "breakdown.auto_build.demolition_mode"; @RegisterLanguage( cn = "模块搭建", en = "Module Build") - public static final String MODULE = "breacore.auto_build.module"; + public static final String MODULE = "breakdown.auto_build.module"; @RegisterLanguage( cn = "镜像搭建", en = "Mirror Build") - public static final String FLIP = "breacore.auto_build.flip"; + public static final String FLIP = "breakdown.auto_build.flip"; @RegisterLanguage( cn = "替换模式", en = "Replace Mode") - public static final String REPLACE = "breacore.auto_build.replace"; + public static final String REPLACE = "breakdown.auto_build.replace"; @RegisterLanguage( cn = "替换等级方块为设置的等级方块", en = "Replace Tier Block with the set block") - public static final String REPLACE_A = "breacore.auto_build.replace.a"; + public static final String REPLACE_A = "breakdown.auto_build.replace.a"; @RegisterLanguage( cn = "等级方块", en = "Tiered Block") - public static final String TIER = "breacore.auto_build.tier"; + public static final String TIER = "breakdown.auto_build.tier"; - public static CNEN create(String var0, String var1) { - return new CNEN(var0, var1); + public static CNEN create(String cn, String en) { + return new CNEN(cn, en); } } diff --git a/src/main/java/net/phasetranscrystal/breacore/api/lang/ComponentUtils.kt b/src/main/java/net/ptcrys/breakdown/api/lang/ComponentUtils.kt similarity index 96% rename from src/main/java/net/phasetranscrystal/breacore/api/lang/ComponentUtils.kt rename to src/main/java/net/ptcrys/breakdown/api/lang/ComponentUtils.kt index fc52247..fd85e8d 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/lang/ComponentUtils.kt +++ b/src/main/java/net/ptcrys/breakdown/api/lang/ComponentUtils.kt @@ -1,9 +1,9 @@ -package net.phasetranscrystal.breacore.api.lang +package net.ptcrys.breakdown.api.lang -import net.phasetranscrystal.breacore.api.annotation.NewDataAttributes -import net.phasetranscrystal.breacore.api.annotation.TranslationKeyProvider -import net.phasetranscrystal.breacore.utils.StringUtils -import net.phasetranscrystal.breacore.utils.TooltipHelper +import net.ptcrys.breakdown.api.annotation.NewDataAttributes +import net.ptcrys.breakdown.api.annotation.TranslationKeyProvider +import net.ptcrys.breakdown.utils.StringUtils +import net.ptcrys.breakdown.utils.TooltipHelper import net.minecraft.ChatFormatting import net.minecraft.network.chat.Component @@ -12,7 +12,6 @@ import net.minecraft.network.chat.MutableComponent import com.google.common.base.Supplier import kotlin.also -import kotlin.apply import kotlin.collections.forEach import kotlin.collections.indices import kotlin.collections.map diff --git a/src/main/java/net/phasetranscrystal/breacore/api/machine/MachineDefinition.java b/src/main/java/net/ptcrys/breakdown/api/machine/MachineDefinition.java similarity index 92% rename from src/main/java/net/phasetranscrystal/breacore/api/machine/MachineDefinition.java rename to src/main/java/net/ptcrys/breakdown/api/machine/MachineDefinition.java index f5e21d6..0eb6e88 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/machine/MachineDefinition.java +++ b/src/main/java/net/ptcrys/breakdown/api/machine/MachineDefinition.java @@ -1,9 +1,9 @@ -package net.phasetranscrystal.breacore.api.machine; +package net.ptcrys.breakdown.api.machine; -import net.phasetranscrystal.breacore.api.block.IMachineBlock; -import net.phasetranscrystal.breacore.api.blockentity.IMachineBlockEntity; -import net.phasetranscrystal.breacore.api.gui.EditableMachineUI; -import net.phasetranscrystal.breacore.api.item.MetaMachineItem; +import net.ptcrys.breakdown.api.block.IMachineBlock; +import net.ptcrys.breakdown.api.blockentity.IMachineBlockEntity; +import net.ptcrys.breakdown.api.gui.EditableMachineUI; +import net.ptcrys.breakdown.api.item.MetaMachineItem; import net.minecraft.core.Direction; import net.minecraft.resources.Identifier; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/machine/MetaMachine.java b/src/main/java/net/ptcrys/breakdown/api/machine/MetaMachine.java similarity index 91% rename from src/main/java/net/phasetranscrystal/breacore/api/machine/MetaMachine.java rename to src/main/java/net/ptcrys/breakdown/api/machine/MetaMachine.java index 1737d00..473c055 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/machine/MetaMachine.java +++ b/src/main/java/net/ptcrys/breakdown/api/machine/MetaMachine.java @@ -1,24 +1,23 @@ -package net.phasetranscrystal.breacore.api.machine; - -import net.phasetranscrystal.brealib.BreaLib; -import net.phasetranscrystal.brealib.util.RelativeDirection; -import net.phasetranscrystal.brealib.util.RotationState; -import net.phasetranscrystal.brealib.util.TickableSubscription; - -import net.phasetranscrystal.breacore.api.block.BlockProperties; -import net.phasetranscrystal.breacore.api.block.IAppearance; -import net.phasetranscrystal.breacore.api.block.IMachineBlock; -import net.phasetranscrystal.breacore.api.block.MetaMachineBlock; -import net.phasetranscrystal.breacore.api.blockentity.IMachineBlockEntity; -import net.phasetranscrystal.breacore.api.blockentity.IPaintable; -import net.phasetranscrystal.breacore.api.blockentity.ITickSubscription; -import net.phasetranscrystal.breacore.api.blockentity.MetaMachineBlockEntity; -import net.phasetranscrystal.breacore.api.capability.IToolable; -import net.phasetranscrystal.breacore.api.item.tool.IToolGridHighLight; -import net.phasetranscrystal.breacore.api.machine.feature.IRedstoneSignalMachine; -import net.phasetranscrystal.breacore.api.machine.trait.MachineTrait; -import net.phasetranscrystal.breacore.common.machine.owner.MachineOwner; -import net.phasetranscrystal.breacore.common.machine.owner.PlayerOwner; +package net.ptcrys.breakdown.api.machine; + +import net.ptcrys.breakdown.BreaLib; +import net.ptcrys.breakdown.api.block.BlockProperties; +import net.ptcrys.breakdown.api.block.IAppearance; +import net.ptcrys.breakdown.api.block.IMachineBlock; +import net.ptcrys.breakdown.api.block.MetaMachineBlock; +import net.ptcrys.breakdown.api.blockentity.IMachineBlockEntity; +import net.ptcrys.breakdown.api.blockentity.IPaintable; +import net.ptcrys.breakdown.api.blockentity.ITickSubscription; +import net.ptcrys.breakdown.api.blockentity.MetaMachineBlockEntity; +import net.ptcrys.breakdown.api.capability.IToolable; +import net.ptcrys.breakdown.api.item.tool.IToolGridHighLight; +import net.ptcrys.breakdown.api.machine.feature.IRedstoneSignalMachine; +import net.ptcrys.breakdown.api.machine.trait.MachineTrait; +import net.ptcrys.breakdown.common.machine.owner.MachineOwner; +import net.ptcrys.breakdown.common.machine.owner.PlayerOwner; +import net.ptcrys.breakdown.utils.TickableSubscription; +import net.ptcrys.breakdown.utils.enums.RelativeDirection; +import net.ptcrys.breakdown.utils.enums.RotationState; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/machine/builder/MachineBuilder.java b/src/main/java/net/ptcrys/breakdown/api/machine/builder/MachineBuilder.java similarity index 76% rename from src/main/java/net/phasetranscrystal/breacore/api/machine/builder/MachineBuilder.java rename to src/main/java/net/ptcrys/breakdown/api/machine/builder/MachineBuilder.java index 5ecb2e3..5d5b667 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/machine/builder/MachineBuilder.java +++ b/src/main/java/net/ptcrys/breakdown/api/machine/builder/MachineBuilder.java @@ -1,23 +1,24 @@ -package net.phasetranscrystal.breacore.api.machine.builder; - -import net.phasetranscrystal.brealib.util.RotationState; - -import net.phasetranscrystal.registrylib.RegistryCore; -import net.phasetranscrystal.registrylib.builders.BlockBuilder; -import net.phasetranscrystal.registrylib.builders.ItemBuilder; -import net.phasetranscrystal.registrylib.tooltip.TooltipNodeCollector; -import net.phasetranscrystal.registrylib.util.entry.BlockEntry; - -import net.phasetranscrystal.breacore.api.block.IMachineBlock; -import net.phasetranscrystal.breacore.api.blockentity.IMachineBlockEntity; -import net.phasetranscrystal.breacore.api.blockentity.MetaMachineBlockEntity; -import net.phasetranscrystal.breacore.api.gui.EditableMachineUI; -import net.phasetranscrystal.breacore.api.item.MetaMachineItem; -import net.phasetranscrystal.breacore.api.machine.MachineDefinition; -import net.phasetranscrystal.breacore.api.machine.MetaMachine; -import net.phasetranscrystal.breacore.api.registry.BreaRegistries; -import net.phasetranscrystal.breacore.common.data.BreaTags; -import net.phasetranscrystal.breacore.config.ConfigHolder; +package net.ptcrys.breakdown.api.machine.builder; + +import net.ptcrys.breakdown.api.block.IMachineBlock; +import net.ptcrys.breakdown.api.blockentity.IMachineBlockEntity; +import net.ptcrys.breakdown.api.blockentity.MetaMachineBlockEntity; +import net.ptcrys.breakdown.api.gui.EditableMachineUI; +import net.ptcrys.breakdown.api.item.MetaMachineItem; +import net.ptcrys.breakdown.api.machine.MachineDefinition; +import net.ptcrys.breakdown.api.machine.MetaMachine; +import net.ptcrys.breakdown.api.registry.BreaRegistries; +import net.ptcrys.breakdown.common.data.BreaTags; +import net.ptcrys.breakdown.config.ConfigHolder; +import net.ptcrys.breakdown.utils.enums.RotationState; +import net.ptcrys.registrylib.RegistryCore; +import net.ptcrys.registrylib.annotations.StandardAPI; +import net.ptcrys.registrylib.annotations.SyntaxSugar; +import net.ptcrys.registrylib.builders.BlockBuilder; +import net.ptcrys.registrylib.builders.ItemBuilder; +import net.ptcrys.registrylib.tooltip.SubNode; +import net.ptcrys.registrylib.tooltip.TooltipNodeCollector; +import net.ptcrys.registrylib.util.entry.BlockEntry; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; @@ -41,7 +42,6 @@ import org.jetbrains.annotations.Nullable; import java.util.ArrayList; -import java.util.List; import java.util.function.*; @Accessors(chain = true, fluent = true) @@ -89,7 +89,7 @@ public class MachineBuilder { @Setter private BiFunction itemColor = ((itemStack, tintIndex) -> tintIndex == 1 ? paintingColor : -1); // private PartAbility[] abilities = new PartAbility[0]; - private final List tooltips = new ArrayList<>(); + private @Nullable ArrayList tooltipConfigs; @Setter @Nullable private BiConsumer> tooltipBuilder; @@ -137,8 +137,19 @@ public MachineBuilder multiblockPreviewRenderer(boolean multiBlockWo return this; } - public MachineBuilder tooltips(TooltipNodeCollector.TooltipConfig... configs) { - this.tooltips.addAll(List.of(configs)); + @StandardAPI + public MachineBuilder addTooltip(TooltipNodeCollector.@NotNull TooltipConfig config) { + if (this.tooltipConfigs == null) { + this.tooltipConfigs = new ArrayList<>(); + } + + this.tooltipConfigs.add(config); + return this; + } + + @SyntaxSugar("addTooltip((collector, stack) -> collector.node(new SubNode.Basic(component, 0)))") + public MachineBuilder addTooltip(@NotNull Component component) { + this.addTooltip((TooltipNodeCollector.TooltipConfig) ((collector, stack) -> collector.node(new SubNode.Basic(component, 0)))); return this; } @@ -197,12 +208,11 @@ protected DEFINITION createDefinition() { static class BlockBuilderWrapper { @SuppressWarnings("removal") - public static BlockBuilder> makeBlockBuilder(MachineBuilder builder, - D definition) { - return builder.registrate.block(builder, builder.name, properties -> { - RotationState.set(builder.rotationState); + public static BlockBuilder> makeBlockBuilder(MachineBuilder owner, D definition) { + return owner.registrate.block(owner, owner.name, properties -> { + RotationState.set(owner.rotationState); MachineDefinition.setBuilt(definition); - var b = builder.blockFactory.apply(properties, definition); + var b = owner.blockFactory.apply(properties, definition); RotationState.clear(); MachineDefinition.clearBuilt(); return b.self(); @@ -210,18 +220,20 @@ public static BlockBuilder Blocks.DISPENSER) .addTag(BreaTags.MACHINE_BLOCK) .properties(BlockBehaviour.Properties::noLootTable) - .properties(builder.blockProp); + .properties(owner.blockProp); } } static class ItemBuilderWrapper { - public static ItemBuilder> makeItemBuilder(MachineBuilder builder, + public static ItemBuilder> makeItemBuilder(MachineBuilder owner, BlockEntry block) { - var ibuilder = builder.registrate.item(builder, builder.name, properties -> builder.itemFactory.apply((IMachineBlock) block.get(), properties), false) - .properties(builder.itemProp); - builder.tooltips.forEach(ibuilder::addTooltip); - return ibuilder; + var builder = owner.registrate.item(owner, owner.name, properties -> owner.itemFactory.apply((IMachineBlock) block.get(), properties), false) + .properties(owner.itemProp); + if (owner.tooltipConfigs != null) { + owner.tooltipConfigs.forEach(builder::addTooltip); + } + return builder; } } } diff --git a/src/main/java/net/phasetranscrystal/breacore/api/machine/feature/IDropSaveMachine.java b/src/main/java/net/ptcrys/breakdown/api/machine/feature/IDropSaveMachine.java similarity index 94% rename from src/main/java/net/phasetranscrystal/breacore/api/machine/feature/IDropSaveMachine.java rename to src/main/java/net/ptcrys/breakdown/api/machine/feature/IDropSaveMachine.java index 775c1ca..2dab9ba 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/machine/feature/IDropSaveMachine.java +++ b/src/main/java/net/ptcrys/breakdown/api/machine/feature/IDropSaveMachine.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.machine.feature; +package net.ptcrys.breakdown.api.machine.feature; import net.minecraft.world.level.storage.ValueInput; import net.minecraft.world.level.storage.ValueOutput; diff --git a/src/main/java/net/ptcrys/breakdown/api/machine/feature/IMachineFeature.java b/src/main/java/net/ptcrys/breakdown/api/machine/feature/IMachineFeature.java new file mode 100644 index 0000000..beed860 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/api/machine/feature/IMachineFeature.java @@ -0,0 +1,10 @@ +package net.ptcrys.breakdown.api.machine.feature; + +import net.ptcrys.breakdown.api.machine.MetaMachine; + +public interface IMachineFeature { + + default MetaMachine self() { + return (MetaMachine) this; + } +} diff --git a/src/main/java/net/phasetranscrystal/breacore/api/machine/feature/IMachineLife.java b/src/main/java/net/ptcrys/breakdown/api/machine/feature/IMachineLife.java similarity index 87% rename from src/main/java/net/phasetranscrystal/breacore/api/machine/feature/IMachineLife.java rename to src/main/java/net/ptcrys/breakdown/api/machine/feature/IMachineLife.java index bcdbd71..312f8de 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/machine/feature/IMachineLife.java +++ b/src/main/java/net/ptcrys/breakdown/api/machine/feature/IMachineLife.java @@ -1,6 +1,6 @@ -package net.phasetranscrystal.breacore.api.machine.feature; +package net.ptcrys.breakdown.api.machine.feature; -import net.phasetranscrystal.breacore.api.block.MetaMachineBlock; +import net.ptcrys.breakdown.api.block.MetaMachineBlock; import net.minecraft.core.BlockPos; import net.minecraft.world.entity.LivingEntity; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/machine/feature/IMachineModifyDrops.java b/src/main/java/net/ptcrys/breakdown/api/machine/feature/IMachineModifyDrops.java similarity index 81% rename from src/main/java/net/phasetranscrystal/breacore/api/machine/feature/IMachineModifyDrops.java rename to src/main/java/net/ptcrys/breakdown/api/machine/feature/IMachineModifyDrops.java index bb01501..74ba31c 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/machine/feature/IMachineModifyDrops.java +++ b/src/main/java/net/ptcrys/breakdown/api/machine/feature/IMachineModifyDrops.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.machine.feature; +package net.ptcrys.breakdown.api.machine.feature; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/machine/feature/IRedstoneSignalMachine.java b/src/main/java/net/ptcrys/breakdown/api/machine/feature/IRedstoneSignalMachine.java similarity index 93% rename from src/main/java/net/phasetranscrystal/breacore/api/machine/feature/IRedstoneSignalMachine.java rename to src/main/java/net/ptcrys/breakdown/api/machine/feature/IRedstoneSignalMachine.java index 401cbbc..abc346c 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/machine/feature/IRedstoneSignalMachine.java +++ b/src/main/java/net/ptcrys/breakdown/api/machine/feature/IRedstoneSignalMachine.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.machine.feature; +package net.ptcrys.breakdown.api.machine.feature; import net.minecraft.core.Direction; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/machine/feature/IUIMachine.java b/src/main/java/net/ptcrys/breakdown/api/machine/feature/IUIMachine.java similarity index 93% rename from src/main/java/net/phasetranscrystal/breacore/api/machine/feature/IUIMachine.java rename to src/main/java/net/ptcrys/breakdown/api/machine/feature/IUIMachine.java index d274d6a..2d3719e 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/machine/feature/IUIMachine.java +++ b/src/main/java/net/ptcrys/breakdown/api/machine/feature/IUIMachine.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.machine.feature; +package net.ptcrys.breakdown.api.machine.feature; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/machine/trait/MachineTrait.java b/src/main/java/net/ptcrys/breakdown/api/machine/trait/MachineTrait.java similarity index 93% rename from src/main/java/net/phasetranscrystal/breacore/api/machine/trait/MachineTrait.java rename to src/main/java/net/ptcrys/breakdown/api/machine/trait/MachineTrait.java index b22c3c8..3b47777 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/machine/trait/MachineTrait.java +++ b/src/main/java/net/ptcrys/breakdown/api/machine/trait/MachineTrait.java @@ -1,6 +1,6 @@ -package net.phasetranscrystal.breacore.api.machine.trait; +package net.ptcrys.breakdown.api.machine.trait; -import net.phasetranscrystal.breacore.api.machine.MetaMachine; +import net.ptcrys.breakdown.api.machine.MetaMachine; import net.minecraft.core.Direction; import net.minecraft.world.level.storage.ValueInput; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/material/Element.java b/src/main/java/net/ptcrys/breakdown/api/material/Element.java similarity index 96% rename from src/main/java/net/phasetranscrystal/breacore/api/material/Element.java rename to src/main/java/net/ptcrys/breakdown/api/material/Element.java index cf0a005..89cb6a7 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/material/Element.java +++ b/src/main/java/net/ptcrys/breakdown/api/material/Element.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.material; +package net.ptcrys.breakdown.api.material; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/material/IMaterialExtension.java b/src/main/java/net/ptcrys/breakdown/api/material/IMaterialExtension.java similarity index 83% rename from src/main/java/net/phasetranscrystal/breacore/api/material/IMaterialExtension.java rename to src/main/java/net/ptcrys/breakdown/api/material/IMaterialExtension.java index 6d92874..65a62dd 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/material/IMaterialExtension.java +++ b/src/main/java/net/ptcrys/breakdown/api/material/IMaterialExtension.java @@ -1,6 +1,6 @@ -package net.phasetranscrystal.breacore.api.material; +package net.ptcrys.breakdown.api.material; -import net.phasetranscrystal.breacore.api.material.attributes.AttributeType; +import net.ptcrys.breakdown.api.material.attributes.AttributeType; public interface IMaterialExtension { diff --git a/src/main/java/net/ptcrys/breakdown/api/material/ItemMaterialData.java b/src/main/java/net/ptcrys/breakdown/api/material/ItemMaterialData.java new file mode 100644 index 0000000..597a551 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/api/material/ItemMaterialData.java @@ -0,0 +1,3 @@ +package net.ptcrys.breakdown.api.material; + +public class ItemMaterialData {} diff --git a/src/main/java/net/phasetranscrystal/breacore/api/material/MarkerMaterial.java b/src/main/java/net/ptcrys/breakdown/api/material/MarkerMaterial.java similarity index 80% rename from src/main/java/net/phasetranscrystal/breacore/api/material/MarkerMaterial.java rename to src/main/java/net/ptcrys/breakdown/api/material/MarkerMaterial.java index ae2293e..6fef482 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/material/MarkerMaterial.java +++ b/src/main/java/net/ptcrys/breakdown/api/material/MarkerMaterial.java @@ -1,6 +1,6 @@ -package net.phasetranscrystal.breacore.api.material; +package net.ptcrys.breakdown.api.material; -import net.phasetranscrystal.brealib.BreaLib; +import net.ptcrys.breakdown.BreaLib; import net.minecraft.resources.Identifier; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/material/Material.java b/src/main/java/net/ptcrys/breakdown/api/material/Material.java similarity index 92% rename from src/main/java/net/phasetranscrystal/breacore/api/material/Material.java rename to src/main/java/net/ptcrys/breakdown/api/material/Material.java index 87596aa..15319db 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/material/Material.java +++ b/src/main/java/net/ptcrys/breakdown/api/material/Material.java @@ -1,20 +1,19 @@ -package net.phasetranscrystal.breacore.api.material; - -import net.phasetranscrystal.brealib.util.BreaMath; -import net.phasetranscrystal.brealib.util.FormattingUtil; - -import net.phasetranscrystal.breacore.api.BreaApi; -import net.phasetranscrystal.breacore.api.material.attributes.AttributeType; -import net.phasetranscrystal.breacore.api.material.attributes.MaterialAttribute; -import net.phasetranscrystal.breacore.api.material.attributes.MaterialAttributeSet; -import net.phasetranscrystal.breacore.api.material.info.MaterialIconLayer; -import net.phasetranscrystal.breacore.api.material.info.MaterialIconSet; -import net.phasetranscrystal.breacore.api.material.register.MaterialVariant; -import net.phasetranscrystal.breacore.api.material.registry.IMaterialBuilderExtension; -import net.phasetranscrystal.breacore.api.material.stack.MaterialResource; -import net.phasetranscrystal.breacore.api.material.stack.MaterialStack; -import net.phasetranscrystal.breacore.api.registry.BreaRegistries; -import net.phasetranscrystal.breacore.common.data.BreaMaterials; +package net.ptcrys.breakdown.api.material; + +import net.ptcrys.breakdown.api.BreaApi; +import net.ptcrys.breakdown.api.material.attributes.AttributeType; +import net.ptcrys.breakdown.api.material.attributes.MaterialAttribute; +import net.ptcrys.breakdown.api.material.attributes.MaterialAttributeSet; +import net.ptcrys.breakdown.api.material.info.MaterialIconLayer; +import net.ptcrys.breakdown.api.material.info.MaterialIconSet; +import net.ptcrys.breakdown.api.material.register.MaterialVariant; +import net.ptcrys.breakdown.api.material.registry.IMaterialBuilderExtension; +import net.ptcrys.breakdown.api.material.stack.MaterialResource; +import net.ptcrys.breakdown.api.material.stack.MaterialStack; +import net.ptcrys.breakdown.api.registry.BreaRegistries; +import net.ptcrys.breakdown.common.data.BreaMaterials; +import net.ptcrys.breakdown.utils.FormattingUtil; +import net.ptcrys.breakdown.utils.MathUtil; import net.minecraft.core.Holder; import net.minecraft.network.chat.Component; @@ -280,7 +279,7 @@ public void verifyInfo(MaterialAttributeSet attributeSet, boolean averageRGB) { colorTemp += stack.getMaterial().getMaterialARBG() * stack.amount(); divisor += stack.amount(); } - colors.put(MaterialIconLayer.BaseLayer, BreaMath.saturatedCast(colorTemp / divisor)); + colors.put(MaterialIconLayer.BaseLayer, MathUtil.saturatedCast(colorTemp / divisor)); } } } diff --git a/src/main/java/net/phasetranscrystal/breacore/api/material/MaterialHelper.java b/src/main/java/net/ptcrys/breakdown/api/material/MaterialHelper.java similarity index 99% rename from src/main/java/net/phasetranscrystal/breacore/api/material/MaterialHelper.java rename to src/main/java/net/ptcrys/breakdown/api/material/MaterialHelper.java index 780894a..cad9edc 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/material/MaterialHelper.java +++ b/src/main/java/net/ptcrys/breakdown/api/material/MaterialHelper.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.material; +package net.ptcrys.breakdown.api.material; public class MaterialHelper { /** diff --git a/src/main/java/net/phasetranscrystal/breacore/api/material/attributes/AttributeType.java b/src/main/java/net/ptcrys/breakdown/api/material/attributes/AttributeType.java similarity index 97% rename from src/main/java/net/phasetranscrystal/breacore/api/material/attributes/AttributeType.java rename to src/main/java/net/ptcrys/breakdown/api/material/attributes/AttributeType.java index 305b4a7..c19b20e 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/material/attributes/AttributeType.java +++ b/src/main/java/net/ptcrys/breakdown/api/material/attributes/AttributeType.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.material.attributes; +package net.ptcrys.breakdown.api.material.attributes; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/material/attributes/FluidAttribute.java b/src/main/java/net/ptcrys/breakdown/api/material/attributes/FluidAttribute.java similarity index 91% rename from src/main/java/net/phasetranscrystal/breacore/api/material/attributes/FluidAttribute.java rename to src/main/java/net/ptcrys/breakdown/api/material/attributes/FluidAttribute.java index 647c946..2776361 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/material/attributes/FluidAttribute.java +++ b/src/main/java/net/ptcrys/breakdown/api/material/attributes/FluidAttribute.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.material.attributes; +package net.ptcrys.breakdown.api.material.attributes; import lombok.Getter; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/material/attributes/GemAttribute.java b/src/main/java/net/ptcrys/breakdown/api/material/attributes/GemAttribute.java similarity index 84% rename from src/main/java/net/phasetranscrystal/breacore/api/material/attributes/GemAttribute.java rename to src/main/java/net/ptcrys/breakdown/api/material/attributes/GemAttribute.java index cac259f..ef3048c 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/material/attributes/GemAttribute.java +++ b/src/main/java/net/ptcrys/breakdown/api/material/attributes/GemAttribute.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.material.attributes; +package net.ptcrys.breakdown.api.material.attributes; import java.util.Set; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/material/attributes/GeneralAttribute.java b/src/main/java/net/ptcrys/breakdown/api/material/attributes/GeneralAttribute.java similarity index 95% rename from src/main/java/net/phasetranscrystal/breacore/api/material/attributes/GeneralAttribute.java rename to src/main/java/net/ptcrys/breakdown/api/material/attributes/GeneralAttribute.java index 4c1b2c6..686f8b0 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/material/attributes/GeneralAttribute.java +++ b/src/main/java/net/ptcrys/breakdown/api/material/attributes/GeneralAttribute.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.material.attributes; +package net.ptcrys.breakdown.api.material.attributes; import lombok.Getter; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/material/attributes/IngotAttribute.java b/src/main/java/net/ptcrys/breakdown/api/material/attributes/IngotAttribute.java similarity index 84% rename from src/main/java/net/phasetranscrystal/breacore/api/material/attributes/IngotAttribute.java rename to src/main/java/net/ptcrys/breakdown/api/material/attributes/IngotAttribute.java index 6a16866..cf04784 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/material/attributes/IngotAttribute.java +++ b/src/main/java/net/ptcrys/breakdown/api/material/attributes/IngotAttribute.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.material.attributes; +package net.ptcrys.breakdown.api.material.attributes; import java.util.Set; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/material/attributes/MaterialAttribute.java b/src/main/java/net/ptcrys/breakdown/api/material/attributes/MaterialAttribute.java similarity index 76% rename from src/main/java/net/phasetranscrystal/breacore/api/material/attributes/MaterialAttribute.java rename to src/main/java/net/ptcrys/breakdown/api/material/attributes/MaterialAttribute.java index b28065d..1958f73 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/material/attributes/MaterialAttribute.java +++ b/src/main/java/net/ptcrys/breakdown/api/material/attributes/MaterialAttribute.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.material.attributes; +package net.ptcrys.breakdown.api.material.attributes; import java.util.Set; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/material/attributes/MaterialAttributeSet.java b/src/main/java/net/ptcrys/breakdown/api/material/attributes/MaterialAttributeSet.java similarity index 89% rename from src/main/java/net/phasetranscrystal/breacore/api/material/attributes/MaterialAttributeSet.java rename to src/main/java/net/ptcrys/breakdown/api/material/attributes/MaterialAttributeSet.java index df9a0c4..86a0327 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/material/attributes/MaterialAttributeSet.java +++ b/src/main/java/net/ptcrys/breakdown/api/material/attributes/MaterialAttributeSet.java @@ -1,9 +1,7 @@ -package net.phasetranscrystal.breacore.api.material.attributes; +package net.ptcrys.breakdown.api.material.attributes; -import net.phasetranscrystal.brealib.BreaLib; - -import net.phasetranscrystal.breacore.BreakdownCore; -import net.phasetranscrystal.breacore.api.material.Material; +import net.ptcrys.breakdown.BreaLib; +import net.ptcrys.breakdown.api.material.Material; import lombok.Getter; import lombok.Setter; @@ -60,7 +58,7 @@ private void setAttributeInternal(AttributeType var dep = depType.constructDefault(); if (dep.isEmpty()) { if (BreaLib.isProd()) { - BreakdownCore.LOGGER.warn("Empty dependency found for {}", key.getKey()); + BreaLib.LOGGER.warn("Empty dependency found for {}", key.getKey()); return; } throw new IllegalStateException("Empty dependency found for " + key.getKey()); diff --git a/src/main/java/net/phasetranscrystal/breacore/api/material/event/PostMaterialEvent.java b/src/main/java/net/ptcrys/breakdown/api/material/event/PostMaterialEvent.java similarity index 86% rename from src/main/java/net/phasetranscrystal/breacore/api/material/event/PostMaterialEvent.java rename to src/main/java/net/ptcrys/breakdown/api/material/event/PostMaterialEvent.java index d036861..ed25e7a 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/material/event/PostMaterialEvent.java +++ b/src/main/java/net/ptcrys/breakdown/api/material/event/PostMaterialEvent.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.material.event; +package net.ptcrys.breakdown.api.material.event; import net.neoforged.bus.api.Event; import net.neoforged.fml.event.IModBusEvent; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/material/info/MaterialIconLayer.java b/src/main/java/net/ptcrys/breakdown/api/material/info/MaterialIconLayer.java similarity index 90% rename from src/main/java/net/phasetranscrystal/breacore/api/material/info/MaterialIconLayer.java rename to src/main/java/net/ptcrys/breakdown/api/material/info/MaterialIconLayer.java index 9fc950b..8c0dab8 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/material/info/MaterialIconLayer.java +++ b/src/main/java/net/ptcrys/breakdown/api/material/info/MaterialIconLayer.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.material.info; +package net.ptcrys.breakdown.api.material.info; import net.minecraft.client.resources.model.sprite.Material; import net.minecraft.resources.Identifier; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/material/info/MaterialIconSet.java b/src/main/java/net/ptcrys/breakdown/api/material/info/MaterialIconSet.java similarity index 96% rename from src/main/java/net/phasetranscrystal/breacore/api/material/info/MaterialIconSet.java rename to src/main/java/net/ptcrys/breakdown/api/material/info/MaterialIconSet.java index b533948..1bae747 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/material/info/MaterialIconSet.java +++ b/src/main/java/net/ptcrys/breakdown/api/material/info/MaterialIconSet.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.material.info; +package net.ptcrys.breakdown.api.material.info; import com.google.common.base.Preconditions; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/material/register/MaterialVariant.java b/src/main/java/net/ptcrys/breakdown/api/material/register/MaterialVariant.java similarity index 89% rename from src/main/java/net/phasetranscrystal/breacore/api/material/register/MaterialVariant.java rename to src/main/java/net/ptcrys/breakdown/api/material/register/MaterialVariant.java index e64851e..2c418a8 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/material/register/MaterialVariant.java +++ b/src/main/java/net/ptcrys/breakdown/api/material/register/MaterialVariant.java @@ -1,13 +1,11 @@ -package net.phasetranscrystal.breacore.api.material.register; +package net.ptcrys.breakdown.api.material.register; -import net.phasetranscrystal.brealib.util.FormattingUtil; - -import net.phasetranscrystal.registrylib.util.entry.RegistryEntry; - -import net.phasetranscrystal.breacore.api.BreaApi; -import net.phasetranscrystal.breacore.api.material.Material; -import net.phasetranscrystal.breacore.api.registry.registrate.BreaRegistryCore; -import net.phasetranscrystal.breacore.api.tag.BreaTag; +import net.ptcrys.breakdown.api.BreaApi; +import net.ptcrys.breakdown.api.material.Material; +import net.ptcrys.breakdown.api.registry.registrate.BreaGroup; +import net.ptcrys.breakdown.api.tag.BreaTag; +import net.ptcrys.breakdown.utils.FormattingUtil; +import net.ptcrys.registrylib.util.entry.RegistryEntry; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; @@ -120,14 +118,12 @@ public MaterialVariant removeAction(RegisterAction... registerAction) { return this; } - public void register(BreaRegistryCore registrate, Material material) throws IllegalArgumentException { + public void register(BreaGroup registrate, Material material) throws IllegalArgumentException { if (!registerConditionList.isEmpty()) { for (RegisterCondition condition : registerConditionList) { if (!condition.validate(material)) return; } } - if (itemCreativeTab.get() != null) - registrate.defaultCreativeTab(itemCreativeTab.get().getKey()); for (RegisterAction action : registerActionList) { action.register(registrate, this, material); } diff --git a/src/main/java/net/ptcrys/breakdown/api/material/register/RegisterAction.java b/src/main/java/net/ptcrys/breakdown/api/material/register/RegisterAction.java new file mode 100644 index 0000000..68c0af5 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/api/material/register/RegisterAction.java @@ -0,0 +1,10 @@ +package net.ptcrys.breakdown.api.material.register; + +import net.ptcrys.breakdown.api.material.Material; +import net.ptcrys.registrylib.Group; + +@FunctionalInterface +public interface RegisterAction { + + void register(Group registrate, MaterialVariant variant, Material material); +} diff --git a/src/main/java/net/phasetranscrystal/breacore/api/material/register/RegisterActions.java b/src/main/java/net/ptcrys/breakdown/api/material/register/RegisterActions.java similarity index 58% rename from src/main/java/net/phasetranscrystal/breacore/api/material/register/RegisterActions.java rename to src/main/java/net/ptcrys/breakdown/api/material/register/RegisterActions.java index 29c4fe0..506b5ce 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/material/register/RegisterActions.java +++ b/src/main/java/net/ptcrys/breakdown/api/material/register/RegisterActions.java @@ -1,22 +1,27 @@ -package net.phasetranscrystal.breacore.api.material.register; +package net.ptcrys.breakdown.api.material.register; -import net.phasetranscrystal.brealib.api.registry.registrate.BreaFluidTypeExtensions; +import net.ptcrys.breakdown.api.block.MaterialBlock; +import net.ptcrys.breakdown.api.item.MaterialBlockItem; +import net.ptcrys.breakdown.api.item.MaterialItem; +import net.ptcrys.breakdown.api.material.attributes.AttributeType; -import net.phasetranscrystal.breacore.api.block.MaterialBlock; -import net.phasetranscrystal.breacore.api.item.MaterialBlockItem; -import net.phasetranscrystal.breacore.api.item.MaterialItem; -import net.phasetranscrystal.breacore.api.material.attributes.AttributeType; +import net.minecraft.resources.Identifier; public class RegisterActions { + private static final Identifier FLUID_STILL = Identifier.fromNamespaceAndPath("registrylib", "block/fluid/liquid_still"); + private static final Identifier FLUID_FLOW = Identifier.fromNamespaceAndPath("registrylib", "block/fluid/liquid_flow"); + public static RegisterAction GeneralItem = (registrate, variant, material) -> { var attr = material.getAttribute(AttributeType.GENERAL); - var builder = registrate.item(variant.idPattern().formatted(material.getName()), prop -> new MaterialItem(variant, material, prop)); + registrate.getRegistryLib().defaultCreativeTab(variant.itemCreativeTab().get().getKey()); + var builder = registrate.item(variant.idPattern().formatted(material.getName()), prop -> new MaterialItem(variant, material, prop), true); builder.properties(prop -> prop.enchantable(attr.getHarvestLevel())); builder.register(); }; public static RegisterAction GeneralBlock = (registrate, variant, material) -> { var attr = material.getAttribute(AttributeType.GENERAL); + registrate.getRegistryLib().defaultCreativeTab(variant.itemCreativeTab().get().getKey()); var builder = registrate.block(variant.idPattern().formatted(material.getName()), prop -> new MaterialBlock(variant, material, prop)); builder.item((block, prop) -> new MaterialBlockItem(variant, material, block, prop), itemBuilder -> itemBuilder .properties(prop -> prop.enchantable(attr.getHarvestLevel()))); @@ -24,7 +29,8 @@ public class RegisterActions { }; public static RegisterAction GeneralFluid = (registrate, variant, material) -> { var attr = material.getAttribute(AttributeType.FLUID); - var builder = registrate.fluid(variant.idPattern().formatted(material.getName()), BreaFluidTypeExtensions.FLUID_LIQUID_STILL, BreaFluidTypeExtensions.FLUID_LIQUID_FLOWING); + registrate.getRegistryLib().defaultCreativeTab(variant.itemCreativeTab().get().getKey()); + var builder = registrate.fluid(variant.idPattern().formatted(material.getName()), FLUID_STILL, FLUID_FLOW); if (!attr.isWithFlowing()) builder.noBlock(); if (!attr.isWithBucket()) builder.noBucket(); builder.register(); diff --git a/src/main/java/net/ptcrys/breakdown/api/material/register/RegisterCondition.java b/src/main/java/net/ptcrys/breakdown/api/material/register/RegisterCondition.java new file mode 100644 index 0000000..2f241f4 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/api/material/register/RegisterCondition.java @@ -0,0 +1,9 @@ +package net.ptcrys.breakdown.api.material.register; + +import net.ptcrys.breakdown.api.material.Material; + +@FunctionalInterface +public interface RegisterCondition { + + boolean validate(Material material); +} diff --git a/src/main/java/net/phasetranscrystal/breacore/api/material/register/RegisterConditions.java b/src/main/java/net/ptcrys/breakdown/api/material/register/RegisterConditions.java similarity index 71% rename from src/main/java/net/phasetranscrystal/breacore/api/material/register/RegisterConditions.java rename to src/main/java/net/ptcrys/breakdown/api/material/register/RegisterConditions.java index 4e4d56b..20ca035 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/material/register/RegisterConditions.java +++ b/src/main/java/net/ptcrys/breakdown/api/material/register/RegisterConditions.java @@ -1,7 +1,7 @@ -package net.phasetranscrystal.breacore.api.material.register; +package net.ptcrys.breakdown.api.material.register; -import net.phasetranscrystal.breacore.api.material.Material; -import net.phasetranscrystal.breacore.api.material.attributes.AttributeType; +import net.ptcrys.breakdown.api.material.Material; +import net.ptcrys.breakdown.api.material.attributes.AttributeType; public class RegisterConditions { diff --git a/src/main/java/net/phasetranscrystal/breacore/api/material/registry/IMaterialBuilderExtension.java b/src/main/java/net/ptcrys/breakdown/api/material/registry/IMaterialBuilderExtension.java similarity index 86% rename from src/main/java/net/phasetranscrystal/breacore/api/material/registry/IMaterialBuilderExtension.java rename to src/main/java/net/ptcrys/breakdown/api/material/registry/IMaterialBuilderExtension.java index c6a080e..4964be2 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/material/registry/IMaterialBuilderExtension.java +++ b/src/main/java/net/ptcrys/breakdown/api/material/registry/IMaterialBuilderExtension.java @@ -1,8 +1,8 @@ -package net.phasetranscrystal.breacore.api.material.registry; +package net.ptcrys.breakdown.api.material.registry; -import net.phasetranscrystal.breacore.api.material.Material; -import net.phasetranscrystal.breacore.api.material.attributes.AttributeType; -import net.phasetranscrystal.breacore.api.material.attributes.GeneralAttribute; +import net.ptcrys.breakdown.api.material.Material; +import net.ptcrys.breakdown.api.material.attributes.AttributeType; +import net.ptcrys.breakdown.api.material.attributes.GeneralAttribute; public interface IMaterialBuilderExtension { diff --git a/src/main/java/net/phasetranscrystal/breacore/api/material/registry/IMaterialRegistry.java b/src/main/java/net/ptcrys/breakdown/api/material/registry/IMaterialRegistry.java similarity index 90% rename from src/main/java/net/phasetranscrystal/breacore/api/material/registry/IMaterialRegistry.java rename to src/main/java/net/ptcrys/breakdown/api/material/registry/IMaterialRegistry.java index bd26869..bc201a8 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/material/registry/IMaterialRegistry.java +++ b/src/main/java/net/ptcrys/breakdown/api/material/registry/IMaterialRegistry.java @@ -1,6 +1,6 @@ -package net.phasetranscrystal.breacore.api.material.registry; +package net.ptcrys.breakdown.api.material.registry; -import net.phasetranscrystal.breacore.api.material.Material; +import net.ptcrys.breakdown.api.material.Material; import net.minecraft.core.Holder; import net.minecraft.resources.Identifier; @@ -9,7 +9,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.UnmodifiableView; -import java.lang.ref.Reference; import java.util.Collection; import java.util.Optional; import java.util.stream.Stream; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/material/registry/MaterialRegistry.java b/src/main/java/net/ptcrys/breakdown/api/material/registry/MaterialRegistry.java similarity index 88% rename from src/main/java/net/phasetranscrystal/breacore/api/material/registry/MaterialRegistry.java rename to src/main/java/net/ptcrys/breakdown/api/material/registry/MaterialRegistry.java index 13b7ebd..7a23252 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/material/registry/MaterialRegistry.java +++ b/src/main/java/net/ptcrys/breakdown/api/material/registry/MaterialRegistry.java @@ -1,9 +1,9 @@ -package net.phasetranscrystal.breacore.api.material.registry; +package net.ptcrys.breakdown.api.material.registry; -import net.phasetranscrystal.breacore.BreakdownCore; -import net.phasetranscrystal.breacore.api.material.MarkerMaterial; -import net.phasetranscrystal.breacore.api.material.Material; -import net.phasetranscrystal.breacore.api.registry.BreaRegistry; +import net.ptcrys.breakdown.BreaLib; +import net.ptcrys.breakdown.api.material.MarkerMaterial; +import net.ptcrys.breakdown.api.material.Material; +import net.ptcrys.breakdown.api.registry.BreaRegistry; import net.minecraft.core.Holder; import net.minecraft.core.RegistrationInfo; @@ -84,7 +84,7 @@ public Material getFallbackMaterial(@NotNull String modId) { @NotNull public Material getDefaultFallback() { - return fallbackMaterials.get(BreakdownCore.MOD_ID); + return fallbackMaterials.get(BreaLib.Core_ID); } @NotNull diff --git a/src/main/java/net/phasetranscrystal/breacore/api/material/stack/MaterialEntry.java b/src/main/java/net/ptcrys/breakdown/api/material/stack/MaterialEntry.java similarity index 86% rename from src/main/java/net/phasetranscrystal/breacore/api/material/stack/MaterialEntry.java rename to src/main/java/net/ptcrys/breakdown/api/material/stack/MaterialEntry.java index 4c64ad5..0e3a684 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/material/stack/MaterialEntry.java +++ b/src/main/java/net/ptcrys/breakdown/api/material/stack/MaterialEntry.java @@ -1,9 +1,9 @@ -package net.phasetranscrystal.breacore.api.material.stack; +package net.ptcrys.breakdown.api.material.stack; -import net.phasetranscrystal.breacore.api.material.MarkerMaterial; -import net.phasetranscrystal.breacore.api.material.Material; -import net.phasetranscrystal.breacore.api.material.register.MaterialVariant; -import net.phasetranscrystal.breacore.common.data.BreaMaterials; +import net.ptcrys.breakdown.api.material.MarkerMaterial; +import net.ptcrys.breakdown.api.material.Material; +import net.ptcrys.breakdown.api.material.register.MaterialVariant; +import net.ptcrys.breakdown.common.data.BreaMaterials; import com.google.common.base.Preconditions; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/material/stack/MaterialInstance.java b/src/main/java/net/ptcrys/breakdown/api/material/stack/MaterialInstance.java similarity index 80% rename from src/main/java/net/phasetranscrystal/breacore/api/material/stack/MaterialInstance.java rename to src/main/java/net/ptcrys/breakdown/api/material/stack/MaterialInstance.java index 212ad35..64fb6e9 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/material/stack/MaterialInstance.java +++ b/src/main/java/net/ptcrys/breakdown/api/material/stack/MaterialInstance.java @@ -1,8 +1,8 @@ -package net.phasetranscrystal.breacore.api.material.stack; +package net.ptcrys.breakdown.api.material.stack; -import net.phasetranscrystal.breacore.api.material.MarkerMaterial; -import net.phasetranscrystal.breacore.api.material.Material; -import net.phasetranscrystal.breacore.api.registry.BreaRegistries; +import net.ptcrys.breakdown.api.material.MarkerMaterial; +import net.ptcrys.breakdown.api.material.Material; +import net.ptcrys.breakdown.api.registry.BreaRegistries; import net.minecraft.core.Holder; import net.minecraft.core.TypedInstance; @@ -22,7 +22,7 @@ public interface MaterialInstance extends TypedInstance, DataComponent Codec> MATERIAL_HOLDER_CODEC = BreaRegistries.MATERIALS .holderByNameCodec() - .validate(material -> material.is(MarkerMaterial.NULL.builtInRegistryHolder()) ? DataResult.error(() -> "Material must not be breacore:null") : DataResult.success(material)); + .validate(material -> material.is(MarkerMaterial.NULL.builtInRegistryHolder()) ? DataResult.error(() -> "Material must not be breakdown:null") : DataResult.success(material)); StreamCodec> MATERIAL_HOLDER_STREAM_CODEC = ByteBufCodecs.holderRegistry(BreaRegistries.MATERIAL_KEY); diff --git a/src/main/java/net/phasetranscrystal/breacore/api/material/stack/MaterialResource.java b/src/main/java/net/ptcrys/breakdown/api/material/stack/MaterialResource.java similarity index 96% rename from src/main/java/net/phasetranscrystal/breacore/api/material/stack/MaterialResource.java rename to src/main/java/net/ptcrys/breakdown/api/material/stack/MaterialResource.java index 7167120..8551520 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/material/stack/MaterialResource.java +++ b/src/main/java/net/ptcrys/breakdown/api/material/stack/MaterialResource.java @@ -1,7 +1,7 @@ -package net.phasetranscrystal.breacore.api.material.stack; +package net.ptcrys.breakdown.api.material.stack; -import net.phasetranscrystal.breacore.api.material.MarkerMaterial; -import net.phasetranscrystal.breacore.api.material.Material; +import net.ptcrys.breakdown.api.material.MarkerMaterial; +import net.ptcrys.breakdown.api.material.Material; import net.minecraft.core.Holder; import net.minecraft.core.component.DataComponentMap; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/material/stack/MaterialStack.java b/src/main/java/net/ptcrys/breakdown/api/material/stack/MaterialStack.java similarity index 98% rename from src/main/java/net/phasetranscrystal/breacore/api/material/stack/MaterialStack.java rename to src/main/java/net/ptcrys/breakdown/api/material/stack/MaterialStack.java index 25c8d0f..3705dee 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/material/stack/MaterialStack.java +++ b/src/main/java/net/ptcrys/breakdown/api/material/stack/MaterialStack.java @@ -1,7 +1,7 @@ -package net.phasetranscrystal.breacore.api.material.stack; +package net.ptcrys.breakdown.api.material.stack; -import net.phasetranscrystal.breacore.api.material.MarkerMaterial; -import net.phasetranscrystal.breacore.api.material.Material; +import net.ptcrys.breakdown.api.material.MarkerMaterial; +import net.ptcrys.breakdown.api.material.Material; import net.minecraft.core.Holder; import net.minecraft.core.component.*; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/material/stack/MaterialStackTemplate.java b/src/main/java/net/ptcrys/breakdown/api/material/stack/MaterialStackTemplate.java similarity index 95% rename from src/main/java/net/phasetranscrystal/breacore/api/material/stack/MaterialStackTemplate.java rename to src/main/java/net/ptcrys/breakdown/api/material/stack/MaterialStackTemplate.java index db374b4..54cb541 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/material/stack/MaterialStackTemplate.java +++ b/src/main/java/net/ptcrys/breakdown/api/material/stack/MaterialStackTemplate.java @@ -1,7 +1,7 @@ -package net.phasetranscrystal.breacore.api.material.stack; +package net.ptcrys.breakdown.api.material.stack; -import net.phasetranscrystal.breacore.api.material.MarkerMaterial; -import net.phasetranscrystal.breacore.api.material.Material; +import net.ptcrys.breakdown.api.material.MarkerMaterial; +import net.ptcrys.breakdown.api.material.Material; import net.minecraft.core.Holder; import net.minecraft.core.component.DataComponentPatch; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/material/stack/MaterialStacksResourceHandler.java b/src/main/java/net/ptcrys/breakdown/api/material/stack/MaterialStacksResourceHandler.java similarity index 95% rename from src/main/java/net/phasetranscrystal/breacore/api/material/stack/MaterialStacksResourceHandler.java rename to src/main/java/net/ptcrys/breakdown/api/material/stack/MaterialStacksResourceHandler.java index 92d4406..9de20d7 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/material/stack/MaterialStacksResourceHandler.java +++ b/src/main/java/net/ptcrys/breakdown/api/material/stack/MaterialStacksResourceHandler.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.material.stack; +package net.ptcrys.breakdown.api.material.stack; import net.minecraft.core.NonNullList; import net.neoforged.neoforge.transfer.StacksResourceHandler; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/misc/AutoInitialize.kt b/src/main/java/net/ptcrys/breakdown/api/misc/AutoInitialize.kt similarity index 69% rename from src/main/java/net/phasetranscrystal/breacore/api/misc/AutoInitialize.kt rename to src/main/java/net/ptcrys/breakdown/api/misc/AutoInitialize.kt index 5841a48..de4e3f5 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/misc/AutoInitialize.kt +++ b/src/main/java/net/ptcrys/breakdown/api/misc/AutoInitialize.kt @@ -1,14 +1,14 @@ -package net.phasetranscrystal.breacore.api.misc +package net.ptcrys.breakdown.api.misc -import net.phasetranscrystal.breacore.common.data.translation.ComponentSlang -import net.phasetranscrystal.breacore.common.data.translation.MachineSlang +import net.ptcrys.breakdown.common.data.translation.ComponentSlang +import net.ptcrys.breakdown.common.data.translation.MachineSlang import kotlin.reflect.KProperty1 open class AutoInitialize { fun originInit() { - // ComponentSlang.init() - // MachineSlang.init() + ComponentSlang.init() + MachineSlang.init() } open fun init() {} init { diff --git a/src/main/java/net/ptcrys/breakdown/api/perk/IPerkProvider.java b/src/main/java/net/ptcrys/breakdown/api/perk/IPerkProvider.java new file mode 100644 index 0000000..851b051 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/api/perk/IPerkProvider.java @@ -0,0 +1,13 @@ +package net.ptcrys.breakdown.api.perk; + +import net.ptcrys.registrylib.composite.IComponentItem; + +import net.minecraft.world.entity.EquipmentSlotGroup; + +import java.util.List; +import java.util.Map; + +public interface IPerkProvider> extends IComponentItem { + + Map> getPerkStacks(); +} diff --git a/src/main/java/net/phasetranscrystal/breacore/api/perk/Perk.java b/src/main/java/net/ptcrys/breakdown/api/perk/Perk.java similarity index 95% rename from src/main/java/net/phasetranscrystal/breacore/api/perk/Perk.java rename to src/main/java/net/ptcrys/breakdown/api/perk/Perk.java index e8cadbb..1340a7b 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/perk/Perk.java +++ b/src/main/java/net/ptcrys/breakdown/api/perk/Perk.java @@ -1,6 +1,6 @@ -package net.phasetranscrystal.breacore.api.perk; +package net.ptcrys.breakdown.api.perk; -import net.phasetranscrystal.brealib.BreaLib; +import net.ptcrys.breakdown.BreaLib; import net.minecraft.resources.Identifier; import net.minecraft.world.entity.LivingEntity; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/perk/PerkAttachment.java b/src/main/java/net/ptcrys/breakdown/api/perk/PerkAttachment.java similarity index 96% rename from src/main/java/net/phasetranscrystal/breacore/api/perk/PerkAttachment.java rename to src/main/java/net/ptcrys/breakdown/api/perk/PerkAttachment.java index 735326e..018ec1d 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/perk/PerkAttachment.java +++ b/src/main/java/net/ptcrys/breakdown/api/perk/PerkAttachment.java @@ -1,11 +1,10 @@ -package net.phasetranscrystal.breacore.api.perk; +package net.ptcrys.breakdown.api.perk; -import net.phasetranscrystal.brealib.BreaLib; - -import net.phasetranscrystal.breacore.api.eventdispatch.EventConsumer; -import net.phasetranscrystal.breacore.api.eventdispatch.EventDispatcher; -import net.phasetranscrystal.breacore.api.perk.event.PerkChangeEvent; -import net.phasetranscrystal.breacore.common.data.BreaAttachmentTypes; +import net.ptcrys.breakdown.BreaLib; +import net.ptcrys.breakdown.api.eventdispatch.EventConsumer; +import net.ptcrys.breakdown.api.eventdispatch.EventDispatcher; +import net.ptcrys.breakdown.api.perk.event.PerkChangeEvent; +import net.ptcrys.breakdown.common.data.BreaAttachmentTypes; import net.minecraft.core.Holder; import net.minecraft.resources.Identifier; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/perk/PerkAttributeModifier.java b/src/main/java/net/ptcrys/breakdown/api/perk/PerkAttributeModifier.java similarity index 91% rename from src/main/java/net/phasetranscrystal/breacore/api/perk/PerkAttributeModifier.java rename to src/main/java/net/ptcrys/breakdown/api/perk/PerkAttributeModifier.java index 26725ed..25f3900 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/perk/PerkAttributeModifier.java +++ b/src/main/java/net/ptcrys/breakdown/api/perk/PerkAttributeModifier.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.perk; +package net.ptcrys.breakdown.api.perk; import net.minecraft.core.Holder; import net.minecraft.world.entity.ai.attributes.Attribute; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/perk/PerkChangeType.java b/src/main/java/net/ptcrys/breakdown/api/perk/PerkChangeType.java similarity index 56% rename from src/main/java/net/phasetranscrystal/breacore/api/perk/PerkChangeType.java rename to src/main/java/net/ptcrys/breakdown/api/perk/PerkChangeType.java index a887680..6965ea6 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/perk/PerkChangeType.java +++ b/src/main/java/net/ptcrys/breakdown/api/perk/PerkChangeType.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.perk; +package net.ptcrys.breakdown.api.perk; public enum PerkChangeType { ADD, diff --git a/src/main/java/net/phasetranscrystal/breacore/api/perk/PerkConsumer.java b/src/main/java/net/ptcrys/breakdown/api/perk/PerkConsumer.java similarity index 75% rename from src/main/java/net/phasetranscrystal/breacore/api/perk/PerkConsumer.java rename to src/main/java/net/ptcrys/breakdown/api/perk/PerkConsumer.java index 98681c0..a160247 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/perk/PerkConsumer.java +++ b/src/main/java/net/ptcrys/breakdown/api/perk/PerkConsumer.java @@ -1,6 +1,6 @@ -package net.phasetranscrystal.breacore.api.perk; +package net.ptcrys.breakdown.api.perk; -import net.phasetranscrystal.breacore.api.eventdispatch.EventConsumer; +import net.ptcrys.breakdown.api.eventdispatch.EventConsumer; import net.neoforged.bus.api.Event; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/perk/PerkInfo.java b/src/main/java/net/ptcrys/breakdown/api/perk/PerkInfo.java similarity index 88% rename from src/main/java/net/phasetranscrystal/breacore/api/perk/PerkInfo.java rename to src/main/java/net/ptcrys/breakdown/api/perk/PerkInfo.java index 2b51298..eec58c0 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/perk/PerkInfo.java +++ b/src/main/java/net/ptcrys/breakdown/api/perk/PerkInfo.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.perk; +package net.ptcrys.breakdown.api.perk; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/perk/PerkStack.java b/src/main/java/net/ptcrys/breakdown/api/perk/PerkStack.java similarity index 75% rename from src/main/java/net/phasetranscrystal/breacore/api/perk/PerkStack.java rename to src/main/java/net/ptcrys/breakdown/api/perk/PerkStack.java index ec63904..6652f94 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/perk/PerkStack.java +++ b/src/main/java/net/ptcrys/breakdown/api/perk/PerkStack.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.perk; +package net.ptcrys.breakdown.api.perk; public record PerkStack(Perk perk, float level) { diff --git a/src/main/java/net/phasetranscrystal/breacore/api/perk/PerkStackingType.java b/src/main/java/net/ptcrys/breakdown/api/perk/PerkStackingType.java similarity index 59% rename from src/main/java/net/phasetranscrystal/breacore/api/perk/PerkStackingType.java rename to src/main/java/net/ptcrys/breakdown/api/perk/PerkStackingType.java index 53171ef..9d21bfa 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/perk/PerkStackingType.java +++ b/src/main/java/net/ptcrys/breakdown/api/perk/PerkStackingType.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.perk; +package net.ptcrys.breakdown.api.perk; public enum PerkStackingType { MAX, diff --git a/src/main/java/net/phasetranscrystal/breacore/api/perk/README.md b/src/main/java/net/ptcrys/breakdown/api/perk/README.md similarity index 100% rename from src/main/java/net/phasetranscrystal/breacore/api/perk/README.md rename to src/main/java/net/ptcrys/breakdown/api/perk/README.md diff --git a/src/main/java/net/phasetranscrystal/breacore/api/perk/event/PerkChangeEvent.java b/src/main/java/net/ptcrys/breakdown/api/perk/event/PerkChangeEvent.java similarity index 75% rename from src/main/java/net/phasetranscrystal/breacore/api/perk/event/PerkChangeEvent.java rename to src/main/java/net/ptcrys/breakdown/api/perk/event/PerkChangeEvent.java index 2f5b5f0..eff75c6 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/perk/event/PerkChangeEvent.java +++ b/src/main/java/net/ptcrys/breakdown/api/perk/event/PerkChangeEvent.java @@ -1,8 +1,8 @@ -package net.phasetranscrystal.breacore.api.perk.event; +package net.ptcrys.breakdown.api.perk.event; -import net.phasetranscrystal.breacore.api.perk.Perk; -import net.phasetranscrystal.breacore.api.perk.PerkChangeType; -import net.phasetranscrystal.breacore.api.perk.PerkInfo; +import net.ptcrys.breakdown.api.perk.Perk; +import net.ptcrys.breakdown.api.perk.PerkChangeType; +import net.ptcrys.breakdown.api.perk.PerkInfo; import net.minecraft.world.entity.Entity; import net.neoforged.bus.api.Event; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/perk/event/StackPerkProviderComponentChangeEvent.java b/src/main/java/net/ptcrys/breakdown/api/perk/event/StackPerkProviderComponentChangeEvent.java similarity index 92% rename from src/main/java/net/phasetranscrystal/breacore/api/perk/event/StackPerkProviderComponentChangeEvent.java rename to src/main/java/net/ptcrys/breakdown/api/perk/event/StackPerkProviderComponentChangeEvent.java index ea8cbe8..4fc26a5 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/perk/event/StackPerkProviderComponentChangeEvent.java +++ b/src/main/java/net/ptcrys/breakdown/api/perk/event/StackPerkProviderComponentChangeEvent.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.perk.event; +package net.ptcrys.breakdown.api.perk.event; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/registry/BreaRegistries.java b/src/main/java/net/ptcrys/breakdown/api/registry/BreaRegistries.java similarity index 88% rename from src/main/java/net/phasetranscrystal/breacore/api/registry/BreaRegistries.java rename to src/main/java/net/ptcrys/breakdown/api/registry/BreaRegistries.java index 7314928..8c55cf5 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/registry/BreaRegistries.java +++ b/src/main/java/net/ptcrys/breakdown/api/registry/BreaRegistries.java @@ -1,12 +1,11 @@ -package net.phasetranscrystal.breacore.api.registry; +package net.ptcrys.breakdown.api.registry; -import net.phasetranscrystal.brealib.BreaLib; - -import net.phasetranscrystal.breacore.api.machine.MachineDefinition; -import net.phasetranscrystal.breacore.api.material.Element; -import net.phasetranscrystal.breacore.api.material.Material; -import net.phasetranscrystal.breacore.api.material.registry.MaterialRegistry; -import net.phasetranscrystal.breacore.api.sound.SoundEntry; +import net.ptcrys.breakdown.BreaLib; +import net.ptcrys.breakdown.api.machine.MachineDefinition; +import net.ptcrys.breakdown.api.material.Element; +import net.ptcrys.breakdown.api.material.Material; +import net.ptcrys.breakdown.api.material.registry.MaterialRegistry; +import net.ptcrys.breakdown.api.sound.SoundEntry; import net.minecraft.client.Minecraft; import net.minecraft.core.Registry; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/registry/BreaRegistry.java b/src/main/java/net/ptcrys/breakdown/api/registry/BreaRegistry.java similarity index 95% rename from src/main/java/net/phasetranscrystal/breacore/api/registry/BreaRegistry.java rename to src/main/java/net/ptcrys/breakdown/api/registry/BreaRegistry.java index dfd3de9..dfd0de2 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/registry/BreaRegistry.java +++ b/src/main/java/net/ptcrys/breakdown/api/registry/BreaRegistry.java @@ -1,9 +1,8 @@ -package net.phasetranscrystal.breacore.api.registry; +package net.ptcrys.breakdown.api.registry; -import net.phasetranscrystal.brealib.BreaLib; - -import net.phasetranscrystal.breacore.mixins.MappedRegistryAccess; -import net.phasetranscrystal.breacore.mixins.ResourceKeyAccessor; +import net.ptcrys.breakdown.BreaLib; +import net.ptcrys.breakdown.mixins.MappedRegistryAccess; +import net.ptcrys.breakdown.mixins.ResourceKeyAccessor; import net.minecraft.core.Holder; import net.minecraft.core.MappedRegistry; @@ -62,7 +61,7 @@ public void unfreeze(boolean clearTags) { private boolean checkActiveModContainerIsOwner() { ModContainer container = ModLoadingContext.get().getActiveContainer(); return container != null && (container.getModId().equals(this.key().identifier().getNamespace()) || - container.getModId().equals(BreaLib.MOD_ID) || + container.getModId().equals(BreaLib.Core_ID) || container.getModId().equals("minecraft")); // check for minecraft in case of datagen or a mishap } diff --git a/src/main/java/net/ptcrys/breakdown/api/registry/ScanningClass.java b/src/main/java/net/ptcrys/breakdown/api/registry/ScanningClass.java new file mode 100644 index 0000000..be070d2 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/api/registry/ScanningClass.java @@ -0,0 +1,65 @@ +package net.ptcrys.breakdown.api.registry; + +import net.ptcrys.breakdown.BreaLib; +import net.ptcrys.breakdown.api.annotation.DataGeneratorScanned; +import net.ptcrys.breakdown.api.annotation.RegisterLanguage; +import net.ptcrys.breakdown.api.annotation.Scanned; +import net.ptcrys.breakdown.api.lang.CNEN; + +import net.neoforged.fml.ModList; + +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; +import org.objectweb.asm.Type; + +import java.util.Map; +import java.util.Objects; + +public final class ScanningClass { + + public static final Map LANG = BreaLib.isDataGen() ? new Object2ObjectOpenHashMap<>() : null; + static { + long millis = System.currentTimeMillis(); + var scannedType = Type.getType(Scanned.class); + var dataGeneratorScannedType = LANG == null ? null : Type.getType(DataGeneratorScanned.class); + + for (var modFileScanData : ModList.get().getAllScanData()) { + for (var annotationData : modFileScanData.getAnnotations()) { + var annotationType = annotationData.annotationType(); + if (Objects.equals(annotationType, scannedType) || dataGeneratorScannedType != null && Objects.equals(annotationType, dataGeneratorScannedType)) { + try { + var forName = Class.forName(annotationData.memberName()); + for (var field : forName.getDeclaredFields()) { + if (LANG != null && field.isAnnotationPresent(RegisterLanguage.class)) { + var registerLanguage = field.getAnnotation(RegisterLanguage.class); + try { + assert registerLanguage != null; + var key = registerLanguage.key(); + if (key.isEmpty()) { + var prefix = registerLanguage.namePrefix(); + if (!prefix.isEmpty()) { + key = prefix + "." + field.getName(); + } else { + field.setAccessible(true); + key = (String) field.get((Object) null); + var valuePrefix = registerLanguage.valuePrefix(); + if (!valuePrefix.isEmpty()) { + key = valuePrefix + "." + key; + } + } + } + + LANG.put(key, new CNEN(registerLanguage.cn(), registerLanguage.en())); + } catch (IllegalAccessException e) { + throw new RuntimeException(e); + } + } + } + } catch (NoClassDefFoundError | ClassNotFoundException _) {} + } + } + } + BreaLib.LOGGER.info("ScanningClass init time: {}ms", System.currentTimeMillis() - millis); + } + + public static void init() {} +} diff --git a/src/main/java/net/phasetranscrystal/breacore/api/registry/registrate/BreaGroup.java b/src/main/java/net/ptcrys/breakdown/api/registry/registrate/BreaGroup.java similarity index 92% rename from src/main/java/net/phasetranscrystal/breacore/api/registry/registrate/BreaGroup.java rename to src/main/java/net/ptcrys/breakdown/api/registry/registrate/BreaGroup.java index 67f2ee5..3b766dd 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/registry/registrate/BreaGroup.java +++ b/src/main/java/net/ptcrys/breakdown/api/registry/registrate/BreaGroup.java @@ -1,7 +1,7 @@ -package net.phasetranscrystal.breacore.api.registry.registrate; +package net.ptcrys.breakdown.api.registry.registrate; -import net.phasetranscrystal.registrylib.Group; -import net.phasetranscrystal.registrylib.RegistryCore; +import net.ptcrys.registrylib.Group; +import net.ptcrys.registrylib.RegistryCore; import net.minecraft.resources.ResourceKey; import net.minecraft.world.item.CreativeModeTab; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/registry/registrate/BreaRegistryCore.java b/src/main/java/net/ptcrys/breakdown/api/registry/registrate/BreaRegistryCore.java similarity index 77% rename from src/main/java/net/phasetranscrystal/breacore/api/registry/registrate/BreaRegistryCore.java rename to src/main/java/net/ptcrys/breakdown/api/registry/registrate/BreaRegistryCore.java index 451e349..d5a5001 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/registry/registrate/BreaRegistryCore.java +++ b/src/main/java/net/ptcrys/breakdown/api/registry/registrate/BreaRegistryCore.java @@ -1,17 +1,16 @@ -package net.phasetranscrystal.breacore.api.registry.registrate; +package net.ptcrys.breakdown.api.registry.registrate; -import net.phasetranscrystal.registrylib.RegistryCore; -import net.phasetranscrystal.registrylib.datagen.ProviderType; -import net.phasetranscrystal.registrylib.datagen.provider.RegistryLibLangProvider; - -import net.phasetranscrystal.breacore.api.block.IMachineBlock; -import net.phasetranscrystal.breacore.api.block.MetaMachineBlock; -import net.phasetranscrystal.breacore.api.blockentity.IMachineBlockEntity; -import net.phasetranscrystal.breacore.api.blockentity.MetaMachineBlockEntity; -import net.phasetranscrystal.breacore.api.item.MetaMachineItem; -import net.phasetranscrystal.breacore.api.machine.MachineDefinition; -import net.phasetranscrystal.breacore.api.machine.MetaMachine; -import net.phasetranscrystal.breacore.api.machine.builder.MachineBuilder; +import net.ptcrys.breakdown.api.block.IMachineBlock; +import net.ptcrys.breakdown.api.block.MetaMachineBlock; +import net.ptcrys.breakdown.api.blockentity.IMachineBlockEntity; +import net.ptcrys.breakdown.api.blockentity.MetaMachineBlockEntity; +import net.ptcrys.breakdown.api.item.MetaMachineItem; +import net.ptcrys.breakdown.api.machine.MachineDefinition; +import net.ptcrys.breakdown.api.machine.MetaMachine; +import net.ptcrys.breakdown.api.machine.builder.MachineBuilder; +import net.ptcrys.registrylib.RegistryCore; +import net.ptcrys.registrylib.datagen.ProviderType; +import net.ptcrys.registrylib.datagen.provider.RegistryLibLangProvider; import net.minecraft.core.BlockPos; import net.minecraft.resources.Identifier; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/registry/registrate/SoundEntryBuilder.java b/src/main/java/net/ptcrys/breakdown/api/registry/registrate/SoundEntryBuilder.java similarity index 88% rename from src/main/java/net/phasetranscrystal/breacore/api/registry/registrate/SoundEntryBuilder.java rename to src/main/java/net/ptcrys/breakdown/api/registry/registrate/SoundEntryBuilder.java index 88e1368..8b5a717 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/registry/registrate/SoundEntryBuilder.java +++ b/src/main/java/net/ptcrys/breakdown/api/registry/registrate/SoundEntryBuilder.java @@ -1,12 +1,11 @@ -package net.phasetranscrystal.breacore.api.registry.registrate; - -import net.phasetranscrystal.brealib.BreaLib; - -import net.phasetranscrystal.breacore.api.registry.BreaRegistries; -import net.phasetranscrystal.breacore.api.sound.ConfiguredSoundEvent; -import net.phasetranscrystal.breacore.api.sound.CustomSoundEntry; -import net.phasetranscrystal.breacore.api.sound.SoundEntry; -import net.phasetranscrystal.breacore.api.sound.WrappedSoundEntry; +package net.ptcrys.breakdown.api.registry.registrate; + +import net.ptcrys.breakdown.BreaLib; +import net.ptcrys.breakdown.api.registry.BreaRegistries; +import net.ptcrys.breakdown.api.sound.ConfiguredSoundEvent; +import net.ptcrys.breakdown.api.sound.CustomSoundEntry; +import net.ptcrys.breakdown.api.sound.SoundEntry; +import net.ptcrys.breakdown.api.sound.WrappedSoundEntry; import net.minecraft.data.CachedOutput; import net.minecraft.data.DataProvider; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/registry/registrate/ZhCnLangProvider.java b/src/main/java/net/ptcrys/breakdown/api/registry/registrate/ZhCnLangProvider.java similarity index 72% rename from src/main/java/net/phasetranscrystal/breacore/api/registry/registrate/ZhCnLangProvider.java rename to src/main/java/net/ptcrys/breakdown/api/registry/registrate/ZhCnLangProvider.java index 044dfb8..91c5331 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/registry/registrate/ZhCnLangProvider.java +++ b/src/main/java/net/ptcrys/breakdown/api/registry/registrate/ZhCnLangProvider.java @@ -1,8 +1,8 @@ -package net.phasetranscrystal.breacore.api.registry.registrate; +package net.ptcrys.breakdown.api.registry.registrate; -import net.phasetranscrystal.registrylib.RegistryCore; -import net.phasetranscrystal.registrylib.datagen.ProviderType; -import net.phasetranscrystal.registrylib.datagen.provider.RegistryLibLangProvider; +import net.ptcrys.registrylib.RegistryCore; +import net.ptcrys.registrylib.datagen.ProviderType; +import net.ptcrys.registrylib.datagen.provider.RegistryLibLangProvider; import net.minecraft.data.PackOutput; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/sound/AutoReleasedSound.java b/src/main/java/net/ptcrys/breakdown/api/sound/AutoReleasedSound.java similarity index 95% rename from src/main/java/net/phasetranscrystal/breacore/api/sound/AutoReleasedSound.java rename to src/main/java/net/ptcrys/breakdown/api/sound/AutoReleasedSound.java index 6695104..629bf48 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/sound/AutoReleasedSound.java +++ b/src/main/java/net/ptcrys/breakdown/api/sound/AutoReleasedSound.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.sound; +package net.ptcrys.breakdown.api.sound; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.sounds.AbstractTickableSoundInstance; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/sound/ConfiguredSoundEvent.java b/src/main/java/net/ptcrys/breakdown/api/sound/ConfiguredSoundEvent.java similarity index 77% rename from src/main/java/net/phasetranscrystal/breacore/api/sound/ConfiguredSoundEvent.java rename to src/main/java/net/ptcrys/breakdown/api/sound/ConfiguredSoundEvent.java index b168a3b..8e7ab61 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/sound/ConfiguredSoundEvent.java +++ b/src/main/java/net/ptcrys/breakdown/api/sound/ConfiguredSoundEvent.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.sound; +package net.ptcrys.breakdown.api.sound; import net.minecraft.sounds.SoundEvent; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/sound/CustomSoundEntry.java b/src/main/java/net/ptcrys/breakdown/api/sound/CustomSoundEntry.java similarity index 97% rename from src/main/java/net/phasetranscrystal/breacore/api/sound/CustomSoundEntry.java rename to src/main/java/net/ptcrys/breakdown/api/sound/CustomSoundEntry.java index 127f37d..39c024b 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/sound/CustomSoundEntry.java +++ b/src/main/java/net/ptcrys/breakdown/api/sound/CustomSoundEntry.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.sound; +package net.ptcrys.breakdown.api.sound; import net.minecraft.resources.Identifier; import net.minecraft.sounds.SoundEvent; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/sound/SoundEntry.java b/src/main/java/net/ptcrys/breakdown/api/sound/SoundEntry.java similarity index 98% rename from src/main/java/net/phasetranscrystal/breacore/api/sound/SoundEntry.java rename to src/main/java/net/ptcrys/breakdown/api/sound/SoundEntry.java index 5fca07c..61c5013 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/sound/SoundEntry.java +++ b/src/main/java/net/ptcrys/breakdown/api/sound/SoundEntry.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.sound; +package net.ptcrys.breakdown.api.sound; import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/sound/WrappedSoundEntry.java b/src/main/java/net/ptcrys/breakdown/api/sound/WrappedSoundEntry.java similarity index 98% rename from src/main/java/net/phasetranscrystal/breacore/api/sound/WrappedSoundEntry.java rename to src/main/java/net/ptcrys/breakdown/api/sound/WrappedSoundEntry.java index 97340d1..8635b1f 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/sound/WrappedSoundEntry.java +++ b/src/main/java/net/ptcrys/breakdown/api/sound/WrappedSoundEntry.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.api.sound; +package net.ptcrys.breakdown.api.sound; import net.minecraft.resources.Identifier; import net.minecraft.sounds.SoundEvent; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/tag/BreaTag.java b/src/main/java/net/ptcrys/breakdown/api/tag/BreaTag.java similarity index 92% rename from src/main/java/net/phasetranscrystal/breacore/api/tag/BreaTag.java rename to src/main/java/net/ptcrys/breakdown/api/tag/BreaTag.java index 59019b9..daada90 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/tag/BreaTag.java +++ b/src/main/java/net/ptcrys/breakdown/api/tag/BreaTag.java @@ -1,9 +1,8 @@ -package net.phasetranscrystal.breacore.api.tag; +package net.ptcrys.breakdown.api.tag; -import net.phasetranscrystal.brealib.util.FormattingUtil; - -import net.phasetranscrystal.breacore.api.material.Material; -import net.phasetranscrystal.breacore.api.material.register.MaterialVariant; +import net.ptcrys.breakdown.api.material.Material; +import net.ptcrys.breakdown.api.material.register.MaterialVariant; +import net.ptcrys.breakdown.utils.FormattingUtil; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; diff --git a/src/main/java/net/phasetranscrystal/breacore/api/tag/TagUtil.java b/src/main/java/net/ptcrys/breakdown/api/tag/TagUtil.java similarity index 97% rename from src/main/java/net/phasetranscrystal/breacore/api/tag/TagUtil.java rename to src/main/java/net/ptcrys/breakdown/api/tag/TagUtil.java index a9b2534..06f45d7 100644 --- a/src/main/java/net/phasetranscrystal/breacore/api/tag/TagUtil.java +++ b/src/main/java/net/ptcrys/breakdown/api/tag/TagUtil.java @@ -1,6 +1,6 @@ -package net.phasetranscrystal.breacore.api.tag; +package net.ptcrys.breakdown.api.tag; -import net.phasetranscrystal.brealib.BreaLib; +import net.ptcrys.breakdown.BreaLib; import net.minecraft.core.Registry; import net.minecraft.core.registries.BuiltInRegistries; diff --git a/src/main/java/net/ptcrys/breakdown/client/ClientProxy.java b/src/main/java/net/ptcrys/breakdown/client/ClientProxy.java new file mode 100644 index 0000000..c922012 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/client/ClientProxy.java @@ -0,0 +1,10 @@ +package net.ptcrys.breakdown.client; + +import net.ptcrys.breakdown.common.CommonProxy; + +public class ClientProxy extends CommonProxy { + + public ClientProxy() { + super(); + } +} diff --git a/src/main/java/net/ptcrys/breakdown/common/BreaRegistration.java b/src/main/java/net/ptcrys/breakdown/common/BreaRegistration.java new file mode 100644 index 0000000..96249ae --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/common/BreaRegistration.java @@ -0,0 +1,29 @@ +package net.ptcrys.breakdown.common; + +import net.ptcrys.breakdown.BreaLib; +import net.ptcrys.breakdown.api.registry.registrate.BreaGroup; +import net.ptcrys.breakdown.api.registry.registrate.BreaRegistryCore; +import net.ptcrys.breakdown.common.data.BreaTags; + +import net.minecraft.world.item.CreativeModeTabs; +import net.minecraft.world.level.block.state.BlockBehaviour; + +public class BreaRegistration { + + /** + * 共享的注册核心。 使用 {@link BreaRegistryCore} 而非普通 {@link + * net.ptcrys.registrylib.RegistryCore}, 使得每个 builder 链上可直接调用 {@code .langCn("中文名")}。 + */ + public static final BreaRegistryCore REGISTRATE = BreaRegistryCore.create(BreaLib.Core_ID); + public static final BreaGroup DEBUG_REGISTRATE = (BreaGroup) REGISTRATE.group("debug") + .addItemTag(BreaTags.DEBUG_ITEM) + .addBlockTag(BreaTags.DEBUG_BLOCK) + .tab(CreativeModeTabs.OP_BLOCKS) + .build(); + public static final BreaGroup MATERIAL_REGISTRATE = (BreaGroup) REGISTRATE.group("material") + .addItemTag(BreaTags.MATERIAL_ITEM) + .addBlockTag(BreaTags.MATERIAL_BLOCK) + .addFluidTag(BreaTags.MATERIAL_FLUID) + .blockProperties(BlockBehaviour.Properties::requiresCorrectToolForDrops) + .build(); +} diff --git a/src/main/java/net/phasetranscrystal/breacore/common/CommonProxy.java b/src/main/java/net/ptcrys/breakdown/common/CommonProxy.java similarity index 63% rename from src/main/java/net/phasetranscrystal/breacore/common/CommonProxy.java rename to src/main/java/net/ptcrys/breakdown/common/CommonProxy.java index ee129b5..e3f5162 100644 --- a/src/main/java/net/phasetranscrystal/breacore/common/CommonProxy.java +++ b/src/main/java/net/ptcrys/breakdown/common/CommonProxy.java @@ -1,39 +1,48 @@ -package net.phasetranscrystal.breacore.common; - -import net.phasetranscrystal.breacore.BreakdownCore; -import net.phasetranscrystal.breacore.api.BreaApi; -import net.phasetranscrystal.breacore.api.addon.AddonFinder; -import net.phasetranscrystal.breacore.api.addon.IBreaAddon; -import net.phasetranscrystal.breacore.api.material.event.PostMaterialEvent; -import net.phasetranscrystal.breacore.api.material.register.MaterialVariant; -import net.phasetranscrystal.breacore.api.material.registry.MaterialRegistry; -import net.phasetranscrystal.breacore.api.registry.BreaRegistries; -import net.phasetranscrystal.breacore.common.data.*; -import net.phasetranscrystal.breacore.config.ConfigHolder; +package net.ptcrys.breakdown.common; + +import net.ptcrys.breakdown.BreaLib; +import net.ptcrys.breakdown.api.BreaApi; +import net.ptcrys.breakdown.api.addon.AddonFinder; +import net.ptcrys.breakdown.api.addon.IBreaAddon; +import net.ptcrys.breakdown.api.material.event.PostMaterialEvent; +import net.ptcrys.breakdown.api.material.register.MaterialVariant; +import net.ptcrys.breakdown.api.material.registry.MaterialRegistry; +import net.ptcrys.breakdown.api.misc.AutoInitializeImpl; +import net.ptcrys.breakdown.api.registry.BreaRegistries; +import net.ptcrys.breakdown.api.registry.ScanningClass; +import net.ptcrys.breakdown.common.data.*; +import net.ptcrys.breakdown.config.ConfigHolder; +import net.ptcrys.breakdown.data.Datagen; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.ModLoader; import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent; +import net.neoforged.fml.event.lifecycle.FMLConstructModEvent; import net.neoforged.fml.event.lifecycle.FMLLoadCompleteEvent; import net.neoforged.neoforge.event.AddPackFindersEvent; import net.neoforged.neoforge.event.BlockEntityTypeAddBlocksEvent; import net.neoforged.neoforge.registries.DataPackRegistryEvent; -import static net.phasetranscrystal.breacore.common.BreaRegistration.REGISTRATE; +import static net.ptcrys.breakdown.common.BreaRegistration.MATERIAL_REGISTRATE; +import static net.ptcrys.breakdown.common.BreaRegistration.REGISTRATE; public class CommonProxy { public CommonProxy() { - var modBus = BreakdownCore.getModEventBus(); + var modBus = BreaLib.getModEventBus(); BreaApi.materialManager = BreaRegistries.MATERIALS; ConfigHolder.init(); + ScanningClass.init(); modBus.register(CommonProxy.class); init(); BreaRegistries.init(modBus); + modBus.addListener(CommonProxy::modConstruct); } public static void init() { + BreaTooltips.init(); + AutoInitializeImpl.INSTANCE.originInit(); BreaTags.init(); BreaCreativeModeTabs.init(); @@ -56,10 +65,10 @@ private static void initMaterials() { BreaElements.init(); MaterialRegistry managerInternal = (MaterialRegistry) BreaApi.materialManager; managerInternal.unfreezeRegistries(); - BreakdownCore.LOGGER.info("Registering Materials"); + BreaLib.LOGGER.info("Registering Materials"); BreaMaterials.init(); - managerInternal.setFallbackMaterial(BreakdownCore.MOD_ID, BreaMaterials.Actinium); - BreakdownCore.LOGGER.info("Registering addon Materials"); + managerInternal.setFallbackMaterial(BreaLib.Core_ID, BreaMaterials.Actinium); + BreaLib.LOGGER.info("Registering addon Materials"); BreaApi.postRegisterEvent(BreaRegistries.MATERIALS); // Fire Post-Material event, intended for when Materials need to be iterated over in-full before freezing // Block entirely new Materials from being added in the Post event @@ -73,11 +82,15 @@ private static void initMaterials() { REGISTRATE.defaultCreativeTab(BreaCreativeModeTabs.MATERIAL_ITEM.getKey()); for (var material : managerInternal) { for (var variant : MaterialVariant.values()) { - variant.register(REGISTRATE, material); + variant.register(MATERIAL_REGISTRATE, material); } } } + private static void modConstruct(FMLConstructModEvent event) { + Datagen.init(); + } + @SubscribeEvent public static void commonSetup(FMLCommonSetupEvent event) {} diff --git a/src/main/java/net/phasetranscrystal/breacore/common/block/StoneBlockType.java b/src/main/java/net/ptcrys/breakdown/common/block/StoneBlockType.java similarity index 95% rename from src/main/java/net/phasetranscrystal/breacore/common/block/StoneBlockType.java rename to src/main/java/net/ptcrys/breakdown/common/block/StoneBlockType.java index 52236c3..812b66a 100644 --- a/src/main/java/net/phasetranscrystal/breacore/common/block/StoneBlockType.java +++ b/src/main/java/net/ptcrys/breakdown/common/block/StoneBlockType.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.common.block; +package net.ptcrys.breakdown.common.block; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/net/phasetranscrystal/breacore/common/block/debug/CheckMatBlock.java b/src/main/java/net/ptcrys/breakdown/common/block/debug/CheckMatBlock.java similarity index 91% rename from src/main/java/net/phasetranscrystal/breacore/common/block/debug/CheckMatBlock.java rename to src/main/java/net/ptcrys/breakdown/common/block/debug/CheckMatBlock.java index 3907d66..cd98924 100644 --- a/src/main/java/net/phasetranscrystal/breacore/common/block/debug/CheckMatBlock.java +++ b/src/main/java/net/ptcrys/breakdown/common/block/debug/CheckMatBlock.java @@ -1,6 +1,6 @@ -package net.phasetranscrystal.breacore.common.block.debug; +package net.ptcrys.breakdown.common.block.debug; -import net.phasetranscrystal.breacore.api.material.Material; +import net.ptcrys.breakdown.api.material.Material; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; diff --git a/src/main/java/net/phasetranscrystal/breacore/common/block/debug/FluidFurnaceBlock.java b/src/main/java/net/ptcrys/breakdown/common/block/debug/FluidFurnaceBlock.java similarity index 91% rename from src/main/java/net/phasetranscrystal/breacore/common/block/debug/FluidFurnaceBlock.java rename to src/main/java/net/ptcrys/breakdown/common/block/debug/FluidFurnaceBlock.java index 49f33e7..d3fab61 100644 --- a/src/main/java/net/phasetranscrystal/breacore/common/block/debug/FluidFurnaceBlock.java +++ b/src/main/java/net/ptcrys/breakdown/common/block/debug/FluidFurnaceBlock.java @@ -1,7 +1,7 @@ -package net.phasetranscrystal.breacore.common.block.debug; +package net.ptcrys.breakdown.common.block.debug; -import net.phasetranscrystal.breacore.common.blockentity.debug.FluidFurnaceBlockEntity; -import net.phasetranscrystal.breacore.common.data.BreaBlockEntities; +import net.ptcrys.breakdown.common.blockentity.debug.FluidFurnaceBlockEntity; +import net.ptcrys.breakdown.common.data.BreaBlockEntities; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerPlayer; diff --git a/src/main/java/net/phasetranscrystal/breacore/common/blockentity/debug/FluidFurnaceBlockEntity.java b/src/main/java/net/ptcrys/breakdown/common/blockentity/debug/FluidFurnaceBlockEntity.java similarity index 99% rename from src/main/java/net/phasetranscrystal/breacore/common/blockentity/debug/FluidFurnaceBlockEntity.java rename to src/main/java/net/ptcrys/breakdown/common/blockentity/debug/FluidFurnaceBlockEntity.java index dea7db9..5a00157 100644 --- a/src/main/java/net/phasetranscrystal/breacore/common/blockentity/debug/FluidFurnaceBlockEntity.java +++ b/src/main/java/net/ptcrys/breakdown/common/blockentity/debug/FluidFurnaceBlockEntity.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.common.blockentity.debug; +package net.ptcrys.breakdown.common.blockentity.debug; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; diff --git a/src/main/java/net/phasetranscrystal/breacore/common/data/BreaAttachmentTypes.java b/src/main/java/net/ptcrys/breakdown/common/data/BreaAttachmentTypes.java similarity index 56% rename from src/main/java/net/phasetranscrystal/breacore/common/data/BreaAttachmentTypes.java rename to src/main/java/net/ptcrys/breakdown/common/data/BreaAttachmentTypes.java index 9f3d226..f39c92c 100644 --- a/src/main/java/net/phasetranscrystal/breacore/common/data/BreaAttachmentTypes.java +++ b/src/main/java/net/ptcrys/breakdown/common/data/BreaAttachmentTypes.java @@ -1,10 +1,9 @@ -package net.phasetranscrystal.breacore.common.data; +package net.ptcrys.breakdown.common.data; -import net.phasetranscrystal.registrylib.util.entry.AttachmentTypeEntry; - -import net.phasetranscrystal.breacore.api.eventdispatch.EventDistributor; -import net.phasetranscrystal.breacore.api.perk.PerkAttachment; -import net.phasetranscrystal.breacore.common.BreaRegistration; +import net.ptcrys.breakdown.api.eventdispatch.EventDistributor; +import net.ptcrys.breakdown.api.perk.PerkAttachment; +import net.ptcrys.breakdown.common.BreaRegistration; +import net.ptcrys.registrylib.util.entry.AttachmentTypeEntry; public class BreaAttachmentTypes { diff --git a/src/main/java/net/ptcrys/breakdown/common/data/BreaBlockEntities.java b/src/main/java/net/ptcrys/breakdown/common/data/BreaBlockEntities.java new file mode 100644 index 0000000..b39eccb --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/common/data/BreaBlockEntities.java @@ -0,0 +1,14 @@ +package net.ptcrys.breakdown.common.data; + +import net.ptcrys.breakdown.common.blockentity.debug.FluidFurnaceBlockEntity; +import net.ptcrys.breakdown.data.blockEntities.GeneralBlockEntities; +import net.ptcrys.registrylib.util.entry.BlockEntityTypeEntry; + +public class BreaBlockEntities { + + public static BlockEntityTypeEntry FurnaceBlockEntity; + + public static void init() { + GeneralBlockEntities.init(); + } +} diff --git a/src/main/java/net/ptcrys/breakdown/common/data/BreaBlocks.java b/src/main/java/net/ptcrys/breakdown/common/data/BreaBlocks.java new file mode 100644 index 0000000..bc6d01d --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/common/data/BreaBlocks.java @@ -0,0 +1,24 @@ +package net.ptcrys.breakdown.common.data; + +import net.ptcrys.breakdown.common.block.debug.CheckMatBlock; +import net.ptcrys.breakdown.common.block.debug.FluidFurnaceBlock; +import net.ptcrys.breakdown.data.blocks.DebugBlocks; +import net.ptcrys.breakdown.data.blocks.GeneralBlocks; +import net.ptcrys.registrylib.util.entry.BlockEntry; + +import static net.ptcrys.breakdown.common.BreaRegistration.REGISTRATE; + +public class BreaBlocks { + + static { + REGISTRATE.defaultCreativeTab(BreaCreativeModeTabs.GENERAL_BLOCK.getKey()); + } + + public static BlockEntry MatCheckBlock; + public static BlockEntry FluidFurnaceBlock; + + public static void init() { + DebugBlocks.init(); + GeneralBlocks.init(); + } +} diff --git a/src/main/java/net/phasetranscrystal/breacore/common/data/BreaCreativeModeTabs.java b/src/main/java/net/ptcrys/breakdown/common/data/BreaCreativeModeTabs.java similarity index 53% rename from src/main/java/net/phasetranscrystal/breacore/common/data/BreaCreativeModeTabs.java rename to src/main/java/net/ptcrys/breakdown/common/data/BreaCreativeModeTabs.java index 56336f4..e636289 100644 --- a/src/main/java/net/phasetranscrystal/breacore/common/data/BreaCreativeModeTabs.java +++ b/src/main/java/net/ptcrys/breakdown/common/data/BreaCreativeModeTabs.java @@ -1,12 +1,13 @@ -package net.phasetranscrystal.breacore.common.data; +package net.ptcrys.breakdown.common.data; -import net.phasetranscrystal.registrylib.util.entry.RegistryEntry; +import net.ptcrys.registrylib.util.entry.RegistryEntry; import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.Items; import java.util.Map; -import static net.phasetranscrystal.breacore.common.BreaRegistration.REGISTRATE; +import static net.ptcrys.breakdown.common.BreaRegistration.REGISTRATE; public class BreaCreativeModeTabs { @@ -25,15 +26,24 @@ public class BreaCreativeModeTabs { public static RegistryEntry GENERAL_BLOCK; static { - DEBUG_ITEMS = REGISTRATE.creativeTab("debug_items", "Brea | Debug", Map.of("zh_cn", "瓦解 | Debug")); - CREATIVE_MODE_ITEMS = REGISTRATE.creativeTab("creative_mode_items", "Brea | Creative Mode", Map.of("zh_cn", "瓦解 | 创造")); - MATERIAL_FLUID = REGISTRATE.creativeTab("material_fluid", "Brea | Fluid", Map.of("zh_cn", "瓦解 | 流体")); - MATERIAL_ITEM = REGISTRATE.creativeTab("material_item", "Brea | Items", Map.of("zh_cn", "瓦解 | 材料")); - GENERAL_BLOCK = REGISTRATE.creativeTab("material_block", "Brea | Blocks", Map.of("zh_cn", "瓦解 | 功能方块")); - DECORATION = REGISTRATE.creativeTab("decoration", "Brea | Decoration", Map.of("zh_cn", "瓦解 | 美化")); - TOOL = REGISTRATE.creativeTab("tool", "Brea | Tools", Map.of("zh_cn", "瓦解 | 工具")); - MACHINE = REGISTRATE.creativeTab("machine", "Brea | Machines", Map.of("zh_cn", "瓦解 | 机器")); - ITEM = REGISTRATE.creativeTab("item", "Brea | Items", Map.of("zh_cn", "瓦解 | 杂项")); + DEBUG_ITEMS = REGISTRATE.creativeTab("debug_items", "Brea | Debug", Map.of("zh_cn", "瓦解 | Debug"), builder -> builder + .icon(Items.COMMAND_BLOCK::getDefaultInstance)); + CREATIVE_MODE_ITEMS = REGISTRATE.creativeTab("creative_mode_items", "Brea | Creative Mode", Map.of("zh_cn", "瓦解 | 创造"), builder -> builder + .icon(Items.COMMAND_BLOCK::getDefaultInstance)); + MATERIAL_FLUID = REGISTRATE.creativeTab("material_fluid", "Brea | Fluid", Map.of("zh_cn", "瓦解 | 流体"), builder -> builder + .icon(Items.COMMAND_BLOCK::getDefaultInstance)); + MATERIAL_ITEM = REGISTRATE.creativeTab("material_item", "Brea | Items", Map.of("zh_cn", "瓦解 | 材料"), builder -> builder + .icon(Items.COMMAND_BLOCK::getDefaultInstance)); + GENERAL_BLOCK = REGISTRATE.creativeTab("material_block", "Brea | Blocks", Map.of("zh_cn", "瓦解 | 功能方块"), builder -> builder + .icon(Items.COMMAND_BLOCK::getDefaultInstance)); + DECORATION = REGISTRATE.creativeTab("decoration", "Brea | Decoration", Map.of("zh_cn", "瓦解 | 美化"), builder -> builder + .icon(Items.COMMAND_BLOCK::getDefaultInstance)); + TOOL = REGISTRATE.creativeTab("tool", "Brea | Tools", Map.of("zh_cn", "瓦解 | 工具"), builder -> builder + .icon(Items.COMMAND_BLOCK::getDefaultInstance)); + MACHINE = REGISTRATE.creativeTab("machine", "Brea | Machines", Map.of("zh_cn", "瓦解 | 机器"), builder -> builder + .icon(Items.COMMAND_BLOCK::getDefaultInstance)); + ITEM = REGISTRATE.creativeTab("item", "Brea | Items", Map.of("zh_cn", "瓦解 | 杂项"), builder -> builder + .icon(Items.COMMAND_BLOCK::getDefaultInstance)); } public static void init() {} diff --git a/src/main/java/net/phasetranscrystal/breacore/common/data/BreaElements.java b/src/main/java/net/ptcrys/breakdown/common/data/BreaElements.java similarity index 96% rename from src/main/java/net/phasetranscrystal/breacore/common/data/BreaElements.java rename to src/main/java/net/ptcrys/breakdown/common/data/BreaElements.java index 36e3b43..3e86b36 100644 --- a/src/main/java/net/phasetranscrystal/breacore/common/data/BreaElements.java +++ b/src/main/java/net/ptcrys/breakdown/common/data/BreaElements.java @@ -1,17 +1,16 @@ -package net.phasetranscrystal.breacore.common.data; +package net.ptcrys.breakdown.common.data; -import net.phasetranscrystal.brealib.BreaLib; - -import net.phasetranscrystal.breacore.api.BreaApi; -import net.phasetranscrystal.breacore.api.addon.AddonFinder; -import net.phasetranscrystal.breacore.api.addon.IBreaAddon; -import net.phasetranscrystal.breacore.api.material.Element; +import net.ptcrys.breakdown.BreaLib; +import net.ptcrys.breakdown.api.BreaApi; +import net.ptcrys.breakdown.api.addon.AddonFinder; +import net.ptcrys.breakdown.api.addon.IBreaAddon; +import net.ptcrys.breakdown.api.material.Element; import net.minecraft.core.Holder; import java.util.Optional; -import static net.phasetranscrystal.breacore.api.registry.BreaRegistries.ELEMENTS; +import static net.ptcrys.breakdown.api.registry.BreaRegistries.ELEMENTS; public class BreaElements { diff --git a/src/main/java/net/phasetranscrystal/breacore/common/data/BreaEntityTypes.java b/src/main/java/net/ptcrys/breakdown/common/data/BreaEntityTypes.java similarity index 56% rename from src/main/java/net/phasetranscrystal/breacore/common/data/BreaEntityTypes.java rename to src/main/java/net/ptcrys/breakdown/common/data/BreaEntityTypes.java index 225ee66..3143f78 100644 --- a/src/main/java/net/phasetranscrystal/breacore/common/data/BreaEntityTypes.java +++ b/src/main/java/net/ptcrys/breakdown/common/data/BreaEntityTypes.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.common.data; +package net.ptcrys.breakdown.common.data; public class BreaEntityTypes { diff --git a/src/main/java/net/phasetranscrystal/breacore/common/data/BreaFluids.java b/src/main/java/net/ptcrys/breakdown/common/data/BreaFluids.java similarity index 54% rename from src/main/java/net/phasetranscrystal/breacore/common/data/BreaFluids.java rename to src/main/java/net/ptcrys/breakdown/common/data/BreaFluids.java index c5222cb..cc58329 100644 --- a/src/main/java/net/phasetranscrystal/breacore/common/data/BreaFluids.java +++ b/src/main/java/net/ptcrys/breakdown/common/data/BreaFluids.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.common.data; +package net.ptcrys.breakdown.common.data; public class BreaFluids { diff --git a/src/main/java/net/ptcrys/breakdown/common/data/BreaItems.java b/src/main/java/net/ptcrys/breakdown/common/data/BreaItems.java new file mode 100644 index 0000000..23d4913 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/common/data/BreaItems.java @@ -0,0 +1,19 @@ +package net.ptcrys.breakdown.common.data; + +import net.ptcrys.breakdown.data.items.DebugItems; +import net.ptcrys.registrylib.composite.ComponentItem; +import net.ptcrys.registrylib.util.entry.ItemEntry; + +import static net.ptcrys.breakdown.common.BreaRegistration.REGISTRATE; + +public class BreaItems { + + static { + REGISTRATE.defaultCreativeTab(BreaCreativeModeTabs.ITEM.getKey()); + } + public static ItemEntry TestItem; + + public static void init() { + DebugItems.init(); + } +} diff --git a/src/main/java/net/ptcrys/breakdown/common/data/BreaMachines.java b/src/main/java/net/ptcrys/breakdown/common/data/BreaMachines.java new file mode 100644 index 0000000..b544b55 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/common/data/BreaMachines.java @@ -0,0 +1,20 @@ +package net.ptcrys.breakdown.common.data; + +import net.ptcrys.breakdown.api.machine.MachineDefinition; +import net.ptcrys.breakdown.data.machine.DebugMachines; + +import static net.ptcrys.breakdown.common.BreaRegistration.REGISTRATE; +import static net.ptcrys.breakdown.common.data.BreaCreativeModeTabs.MACHINE; + +public class BreaMachines { + + static { + REGISTRATE.defaultCreativeTab(MACHINE.getKey()); + } + + public static MachineDefinition TestMachine; + + public static void init() { + DebugMachines.init(); + } +} diff --git a/src/main/java/net/phasetranscrystal/breacore/common/data/BreaMaterials.java b/src/main/java/net/ptcrys/breakdown/common/data/BreaMaterials.java similarity index 94% rename from src/main/java/net/phasetranscrystal/breacore/common/data/BreaMaterials.java rename to src/main/java/net/ptcrys/breakdown/common/data/BreaMaterials.java index 91c1398..88b117c 100644 --- a/src/main/java/net/phasetranscrystal/breacore/common/data/BreaMaterials.java +++ b/src/main/java/net/ptcrys/breakdown/common/data/BreaMaterials.java @@ -1,12 +1,12 @@ -package net.phasetranscrystal.breacore.common.data; +package net.ptcrys.breakdown.common.data; -import net.phasetranscrystal.breacore.BreakdownCore; -import net.phasetranscrystal.breacore.api.BreaApi; -import net.phasetranscrystal.breacore.api.addon.AddonFinder; -import net.phasetranscrystal.breacore.api.addon.IBreaAddon; -import net.phasetranscrystal.breacore.api.material.MarkerMaterial; -import net.phasetranscrystal.breacore.api.material.Material; -import net.phasetranscrystal.breacore.data.materials.*; +import net.ptcrys.breakdown.BreaLib; +import net.ptcrys.breakdown.api.BreaApi; +import net.ptcrys.breakdown.api.addon.AddonFinder; +import net.ptcrys.breakdown.api.addon.IBreaAddon; +import net.ptcrys.breakdown.api.material.MarkerMaterial; +import net.ptcrys.breakdown.api.material.Material; +import net.ptcrys.breakdown.data.materials.*; import net.minecraft.resources.Identifier; @@ -295,7 +295,7 @@ public static Material get(String name) { var mat = BreaApi.materialManager.getMaterial(Identifier.parse(name)); // mat could be null here due to the registrate grabbing a oldmaterial that isn't in the map if (mat == null) { - BreakdownCore.LOGGER.warn("{} is not a known Material", name); + BreaLib.LOGGER.warn("{} is not a known Material", name); return MarkerMaterial.NULL; } return mat; diff --git a/src/main/java/net/phasetranscrystal/breacore/common/data/BreaRegistrateDatagen.java b/src/main/java/net/ptcrys/breakdown/common/data/BreaRegistrateDatagen.java similarity index 58% rename from src/main/java/net/phasetranscrystal/breacore/common/data/BreaRegistrateDatagen.java rename to src/main/java/net/ptcrys/breakdown/common/data/BreaRegistrateDatagen.java index ec958e6..58bcdba 100644 --- a/src/main/java/net/phasetranscrystal/breacore/common/data/BreaRegistrateDatagen.java +++ b/src/main/java/net/ptcrys/breakdown/common/data/BreaRegistrateDatagen.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.common.data; +package net.ptcrys.breakdown.common.data; public class BreaRegistrateDatagen { diff --git a/src/main/java/net/ptcrys/breakdown/common/data/BreaTags.java b/src/main/java/net/ptcrys/breakdown/common/data/BreaTags.java new file mode 100644 index 0000000..8f48563 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/common/data/BreaTags.java @@ -0,0 +1,28 @@ +package net.ptcrys.breakdown.common.data; + +import net.ptcrys.breakdown.data.tags.BreaBlockTags; +import net.ptcrys.breakdown.data.tags.BreaFluidTags; +import net.ptcrys.breakdown.data.tags.BreaItemTags; + +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.material.Fluid; + +public class BreaTags { + + public static TagKey DEBUG_ITEM; + public static TagKey DEBUG_BLOCK; + + public static TagKey MATERIAL_ITEM; + public static TagKey MATERIAL_BLOCK; + public static TagKey MATERIAL_FLUID; + + public static TagKey MACHINE_BLOCK; + + public static void init() { + BreaItemTags.init(); + BreaBlockTags.init(); + BreaFluidTags.init(); + } +} diff --git a/src/main/java/net/ptcrys/breakdown/common/data/BreaTooltips.java b/src/main/java/net/ptcrys/breakdown/common/data/BreaTooltips.java new file mode 100644 index 0000000..cd620d7 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/common/data/BreaTooltips.java @@ -0,0 +1,24 @@ +package net.ptcrys.breakdown.common.data; + +import net.ptcrys.breakdown.api.annotation.DataGeneratorScanned; +import net.ptcrys.breakdown.api.annotation.RegisterLanguage; +import net.ptcrys.registrylib.tooltip.SubNode; + +import net.minecraft.network.chat.Component; + +@DataGeneratorScanned +public class BreaTooltips { + + @RegisterLanguage(cn = "开发物品", en = "Debug") + public static String Debug = "breakdown.tooltip.debug"; + + public static void init() {} + + public static SubNode basic(String key) { + return new SubNode.Basic(Component.translatable(key)); + } + + public static SubNode basic(String key, int priority) { + return new SubNode.Basic(Component.translatable(key), priority); + } +} diff --git a/src/main/java/net/phasetranscrystal/breacore/common/data/MaterialFlagAddition.java b/src/main/java/net/ptcrys/breakdown/common/data/MaterialFlagAddition.java similarity index 59% rename from src/main/java/net/phasetranscrystal/breacore/common/data/MaterialFlagAddition.java rename to src/main/java/net/ptcrys/breakdown/common/data/MaterialFlagAddition.java index 6490271..1480f92 100644 --- a/src/main/java/net/phasetranscrystal/breacore/common/data/MaterialFlagAddition.java +++ b/src/main/java/net/ptcrys/breakdown/common/data/MaterialFlagAddition.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.common.data; +package net.ptcrys.breakdown.common.data; public class MaterialFlagAddition { diff --git a/src/main/java/net/phasetranscrystal/breacore/common/data/MaterialVariants.java b/src/main/java/net/ptcrys/breakdown/common/data/MaterialVariants.java similarity index 80% rename from src/main/java/net/phasetranscrystal/breacore/common/data/MaterialVariants.java rename to src/main/java/net/ptcrys/breakdown/common/data/MaterialVariants.java index 3e36084..981a383 100644 --- a/src/main/java/net/phasetranscrystal/breacore/common/data/MaterialVariants.java +++ b/src/main/java/net/ptcrys/breakdown/common/data/MaterialVariants.java @@ -1,13 +1,13 @@ -package net.phasetranscrystal.breacore.common.data; +package net.ptcrys.breakdown.common.data; -import net.phasetranscrystal.breacore.api.BreaApi; -import net.phasetranscrystal.breacore.api.addon.AddonFinder; -import net.phasetranscrystal.breacore.api.addon.IBreaAddon; -import net.phasetranscrystal.breacore.api.material.register.MaterialVariant; +import net.ptcrys.breakdown.api.BreaApi; +import net.ptcrys.breakdown.api.addon.AddonFinder; +import net.ptcrys.breakdown.api.addon.IBreaAddon; +import net.ptcrys.breakdown.api.material.register.MaterialVariant; -import static net.phasetranscrystal.breacore.api.material.register.RegisterActions.*; -import static net.phasetranscrystal.breacore.api.material.register.RegisterConditions.*; -import static net.phasetranscrystal.breacore.common.data.BreaCreativeModeTabs.*; +import static net.ptcrys.breakdown.api.material.register.RegisterActions.*; +import static net.ptcrys.breakdown.api.material.register.RegisterConditions.*; +import static net.ptcrys.breakdown.common.data.BreaCreativeModeTabs.*; public class MaterialVariants { diff --git a/src/main/java/net/phasetranscrystal/breacore/common/data/translation/ComponentSlang.kt b/src/main/java/net/ptcrys/breakdown/common/data/translation/ComponentSlang.kt similarity index 86% rename from src/main/java/net/phasetranscrystal/breacore/common/data/translation/ComponentSlang.kt rename to src/main/java/net/ptcrys/breakdown/common/data/translation/ComponentSlang.kt index 4d444fa..b2ab1bb 100644 --- a/src/main/java/net/phasetranscrystal/breacore/common/data/translation/ComponentSlang.kt +++ b/src/main/java/net/ptcrys/breakdown/common/data/translation/ComponentSlang.kt @@ -1,10 +1,10 @@ -package net.phasetranscrystal.breacore.common.data.translation +package net.ptcrys.breakdown.common.data.translation -import net.phasetranscrystal.breacore.api.lang.ComponentSupplier -import net.phasetranscrystal.breacore.api.lang.initialize -import net.phasetranscrystal.breacore.api.lang.toLiteralSupplier -import net.phasetranscrystal.breacore.api.lang.translatedTo -import net.phasetranscrystal.breacore.api.misc.AutoInitialize +import net.ptcrys.breakdown.api.lang.ComponentSupplier +import net.ptcrys.breakdown.api.lang.initialize +import net.ptcrys.breakdown.api.lang.toLiteralSupplier +import net.ptcrys.breakdown.api.lang.translatedTo +import net.ptcrys.breakdown.api.misc.AutoInitialize object ComponentSlang : AutoInitialize() { // ****** 量词 ****** // diff --git a/src/main/java/net/ptcrys/breakdown/common/data/translation/MachineSlang.kt b/src/main/java/net/ptcrys/breakdown/common/data/translation/MachineSlang.kt new file mode 100644 index 0000000..a0972e6 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/common/data/translation/MachineSlang.kt @@ -0,0 +1,12 @@ +package net.ptcrys.breakdown.common.data.translation + +import net.ptcrys.breakdown.api.lang.initialize +import net.ptcrys.breakdown.api.lang.toLiteralSupplier +import net.ptcrys.breakdown.api.lang.translatedTo +import net.ptcrys.breakdown.api.misc.AutoInitialize + +object MachineSlang : AutoInitialize() { + val Tier = { tier: String -> + ("等级: " translatedTo "Tier: ") + (tier.toLiteralSupplier()).green().bold() + }.initialize() +} diff --git a/src/main/java/net/phasetranscrystal/breacore/common/data/translation/TooltipsStyles.kt b/src/main/java/net/ptcrys/breakdown/common/data/translation/TooltipsStyles.kt similarity index 84% rename from src/main/java/net/phasetranscrystal/breacore/common/data/translation/TooltipsStyles.kt rename to src/main/java/net/ptcrys/breakdown/common/data/translation/TooltipsStyles.kt index cc992ed..603e5bd 100644 --- a/src/main/java/net/phasetranscrystal/breacore/common/data/translation/TooltipsStyles.kt +++ b/src/main/java/net/ptcrys/breakdown/common/data/translation/TooltipsStyles.kt @@ -1,7 +1,7 @@ -package net.phasetranscrystal.breacore.common.data.translation +package net.ptcrys.breakdown.common.data.translation -import net.phasetranscrystal.breacore.api.lang.ComponentListSupplier -import net.phasetranscrystal.breacore.api.lang.ComponentSupplier +import net.ptcrys.breakdown.api.lang.ComponentListSupplier +import net.ptcrys.breakdown.api.lang.ComponentSupplier fun ComponentListSupplier.highlight(info: ComponentSupplier, style: ComponentSupplier.() -> ComponentSupplier = { gold() }) { add(ComponentSlang.Star(1) + info, style) @@ -27,8 +27,8 @@ fun ComponentListSupplier.ok(info: ComponentSupplier) { content(info, { green() }, ComponentSlang.Right(2)) } -fun ComponentListSupplier.error(info: ComponentSupplier) { - content(info, { red() }, ComponentSlang.Wrong(2)) +fun ComponentListSupplier.error(info: ComponentSupplier, tab: Int = 2) { + content(info, { red() }, ComponentSlang.Wrong(tab)) } fun ComponentListSupplier.command(info: ComponentSupplier) { diff --git a/src/main/java/net/phasetranscrystal/breacore/common/event/EntityEventPublisher.java b/src/main/java/net/ptcrys/breakdown/common/event/EntityEventPublisher.java similarity index 94% rename from src/main/java/net/phasetranscrystal/breacore/common/event/EntityEventPublisher.java rename to src/main/java/net/ptcrys/breakdown/common/event/EntityEventPublisher.java index 5a900c0..8309d3b 100644 --- a/src/main/java/net/phasetranscrystal/breacore/common/event/EntityEventPublisher.java +++ b/src/main/java/net/ptcrys/breakdown/common/event/EntityEventPublisher.java @@ -1,11 +1,11 @@ -package net.phasetranscrystal.breacore.common.event; +package net.ptcrys.breakdown.common.event; -import net.phasetranscrystal.breacore.BreakdownCore; -import net.phasetranscrystal.breacore.api.event.EntityAttackEvent; -import net.phasetranscrystal.breacore.api.event.EntityKillEvent; -import net.phasetranscrystal.breacore.api.event.GatherEntityDistributeEvent; -import net.phasetranscrystal.breacore.api.eventdispatch.EventDispatcher; -import net.phasetranscrystal.breacore.api.eventdispatch.IEntityAboutEvent; +import net.ptcrys.breakdown.BreaLib; +import net.ptcrys.breakdown.api.event.EntityAttackEvent; +import net.ptcrys.breakdown.api.event.EntityKillEvent; +import net.ptcrys.breakdown.api.event.GatherEntityDistributeEvent; +import net.ptcrys.breakdown.api.eventdispatch.EventDispatcher; +import net.ptcrys.breakdown.api.eventdispatch.IEntityAboutEvent; import net.minecraft.world.entity.Entity; import net.neoforged.bus.api.Event; @@ -28,7 +28,7 @@ * 实体事件发布器。 * *

- * 负责监听全局事件总线并将其转发到相关实体的 {@link net.phasetranscrystal.breacore.api.eventdispatch.EventDistributor}。 + * 负责监听全局事件总线并将其转发到相关实体的 {@link net.ptcrys.breakdown.api.eventdispatch.EventDistributor}。 * *

* 转发类型: @@ -38,7 +38,7 @@ *

  • 自定义事件转发:创建适配事件并转发到多个实体(如攻击、击杀事件)
  • * */ -@EventBusSubscriber(modid = BreakdownCore.MOD_ID) +@EventBusSubscriber(modid = BreaLib.Core_ID) public final class EntityEventPublisher { private static final Consumer DISTRIBUTE_CONSUMER = EventDispatcher::dispatchSelf; diff --git a/src/main/java/net/phasetranscrystal/breacore/common/event/LivingEquipmentChangeEventDispatcher.java b/src/main/java/net/ptcrys/breakdown/common/event/LivingEquipmentChangeEventDispatcher.java similarity index 87% rename from src/main/java/net/phasetranscrystal/breacore/common/event/LivingEquipmentChangeEventDispatcher.java rename to src/main/java/net/ptcrys/breakdown/common/event/LivingEquipmentChangeEventDispatcher.java index d8eb54c..6c56934 100644 --- a/src/main/java/net/phasetranscrystal/breacore/common/event/LivingEquipmentChangeEventDispatcher.java +++ b/src/main/java/net/ptcrys/breakdown/common/event/LivingEquipmentChangeEventDispatcher.java @@ -1,13 +1,13 @@ -package net.phasetranscrystal.breacore.common.event; +package net.ptcrys.breakdown.common.event; -import net.phasetranscrystal.breacore.BreakdownCore; -import net.phasetranscrystal.breacore.api.perk.event.StackPerkProviderComponentChangeEvent; +import net.ptcrys.breakdown.BreaLib; +import net.ptcrys.breakdown.api.perk.event.StackPerkProviderComponentChangeEvent; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.neoforge.event.entity.living.LivingEquipmentChangeEvent; -@EventBusSubscriber(modid = BreakdownCore.MOD_ID) +@EventBusSubscriber(modid = BreaLib.Core_ID) public class LivingEquipmentChangeEventDispatcher { @SubscribeEvent diff --git a/src/main/java/net/phasetranscrystal/breacore/common/machine/EmptyMachine.java b/src/main/java/net/ptcrys/breakdown/common/machine/EmptyMachine.java similarity index 59% rename from src/main/java/net/phasetranscrystal/breacore/common/machine/EmptyMachine.java rename to src/main/java/net/ptcrys/breakdown/common/machine/EmptyMachine.java index 4014021..744188f 100644 --- a/src/main/java/net/phasetranscrystal/breacore/common/machine/EmptyMachine.java +++ b/src/main/java/net/ptcrys/breakdown/common/machine/EmptyMachine.java @@ -1,8 +1,8 @@ -package net.phasetranscrystal.breacore.common.machine; +package net.ptcrys.breakdown.common.machine; -import net.phasetranscrystal.breacore.api.blockentity.IMachineBlockEntity; -import net.phasetranscrystal.breacore.api.machine.MetaMachine; -import net.phasetranscrystal.breacore.api.machine.feature.IUIMachine; +import net.ptcrys.breakdown.api.blockentity.IMachineBlockEntity; +import net.ptcrys.breakdown.api.machine.MetaMachine; +import net.ptcrys.breakdown.api.machine.feature.IUIMachine; import com.lowdragmc.lowdraglib2.gui.factory.BlockUIMenuType; import com.lowdragmc.lowdraglib2.gui.ui.ModularUI; diff --git a/src/main/java/net/phasetranscrystal/breacore/common/machine/owner/MachineOwner.java b/src/main/java/net/ptcrys/breakdown/common/machine/owner/MachineOwner.java similarity index 95% rename from src/main/java/net/phasetranscrystal/breacore/common/machine/owner/MachineOwner.java rename to src/main/java/net/ptcrys/breakdown/common/machine/owner/MachineOwner.java index 1bc021d..baaa262 100644 --- a/src/main/java/net/phasetranscrystal/breacore/common/machine/owner/MachineOwner.java +++ b/src/main/java/net/ptcrys/breakdown/common/machine/owner/MachineOwner.java @@ -1,9 +1,8 @@ -package net.phasetranscrystal.breacore.common.machine.owner; +package net.ptcrys.breakdown.common.machine.owner; -import net.phasetranscrystal.brealib.BreaLib; - -import net.phasetranscrystal.breacore.api.machine.MetaMachine; -import net.phasetranscrystal.breacore.config.ConfigHolder; +import net.ptcrys.breakdown.BreaLib; +import net.ptcrys.breakdown.api.machine.MetaMachine; +import net.ptcrys.breakdown.config.ConfigHolder; import net.minecraft.client.Minecraft; import net.minecraft.network.chat.Component; diff --git a/src/main/java/net/phasetranscrystal/breacore/common/machine/owner/PlayerOwner.java b/src/main/java/net/ptcrys/breakdown/common/machine/owner/PlayerOwner.java similarity index 96% rename from src/main/java/net/phasetranscrystal/breacore/common/machine/owner/PlayerOwner.java rename to src/main/java/net/ptcrys/breakdown/common/machine/owner/PlayerOwner.java index 1c3cc03..284a1e0 100644 --- a/src/main/java/net/phasetranscrystal/breacore/common/machine/owner/PlayerOwner.java +++ b/src/main/java/net/ptcrys/breakdown/common/machine/owner/PlayerOwner.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.common.machine.owner; +package net.ptcrys.breakdown.common.machine.owner; import net.minecraft.network.chat.Component; import net.neoforged.neoforge.common.UsernameCache; diff --git a/src/main/java/net/phasetranscrystal/breacore/common/machine/owner/RegisterOwnerTypeEvent.java b/src/main/java/net/ptcrys/breakdown/common/machine/owner/RegisterOwnerTypeEvent.java similarity index 94% rename from src/main/java/net/phasetranscrystal/breacore/common/machine/owner/RegisterOwnerTypeEvent.java rename to src/main/java/net/ptcrys/breakdown/common/machine/owner/RegisterOwnerTypeEvent.java index c47d8b1..12dd762 100644 --- a/src/main/java/net/phasetranscrystal/breacore/common/machine/owner/RegisterOwnerTypeEvent.java +++ b/src/main/java/net/ptcrys/breakdown/common/machine/owner/RegisterOwnerTypeEvent.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.common.machine.owner; +package net.ptcrys.breakdown.common.machine.owner; import net.neoforged.bus.api.Event; import net.neoforged.fml.event.IModBusEvent; diff --git a/src/main/java/net/phasetranscrystal/breacore/config/ConfigHolder.java b/src/main/java/net/ptcrys/breakdown/config/ConfigHolder.java similarity index 93% rename from src/main/java/net/phasetranscrystal/breacore/config/ConfigHolder.java rename to src/main/java/net/ptcrys/breakdown/config/ConfigHolder.java index 8c41d93..77e8058 100644 --- a/src/main/java/net/phasetranscrystal/breacore/config/ConfigHolder.java +++ b/src/main/java/net/ptcrys/breakdown/config/ConfigHolder.java @@ -1,6 +1,6 @@ -package net.phasetranscrystal.breacore.config; +package net.ptcrys.breakdown.config; -import net.phasetranscrystal.breacore.BreakdownCore; +import net.ptcrys.breakdown.BreaLib; import dev.toma.configuration.Configuration; import dev.toma.configuration.config.Config; @@ -8,7 +8,7 @@ import dev.toma.configuration.config.format.ConfigFormats; import org.jetbrains.annotations.ApiStatus; -@Config(id = BreakdownCore.MOD_ID) +@Config(id = BreaLib.Core_ID) public class ConfigHolder { public static ConfigHolder INSTANCE; diff --git a/src/main/java/net/ptcrys/breakdown/data/Datagen.java b/src/main/java/net/ptcrys/breakdown/data/Datagen.java new file mode 100644 index 0000000..45d9660 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/data/Datagen.java @@ -0,0 +1,18 @@ +package net.ptcrys.breakdown.data; + +import net.ptcrys.breakdown.BreaLib; +import net.ptcrys.breakdown.api.registry.registrate.BreaRegistryCore; +import net.ptcrys.breakdown.data.lang.LangHandler; +import net.ptcrys.registrylib.datagen.ProviderType; + +import static net.ptcrys.breakdown.common.BreaRegistration.REGISTRATE; + +public class Datagen { + + public static void init() { + if (BreaLib.isDataGen()) { + REGISTRATE.addDataGenerator(ProviderType.LANG, LangHandler::enInitialize); + REGISTRATE.addDataGenerator(BreaRegistryCore.LANG_ZH_CN, LangHandler::cnInitialize); + } + } +} diff --git a/src/main/java/net/ptcrys/breakdown/data/blockEntities/GeneralBlockEntities.java b/src/main/java/net/ptcrys/breakdown/data/blockEntities/GeneralBlockEntities.java new file mode 100644 index 0000000..7c92364 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/data/blockEntities/GeneralBlockEntities.java @@ -0,0 +1,16 @@ +package net.ptcrys.breakdown.data.blockEntities; + +import net.ptcrys.breakdown.common.blockentity.debug.FluidFurnaceBlockEntity; +import net.ptcrys.breakdown.common.data.BreaBlocks; + +import static net.ptcrys.breakdown.common.BreaRegistration.*; +import static net.ptcrys.breakdown.common.data.BreaBlockEntities.*; + +public class GeneralBlockEntities { + + public static void init() { + FurnaceBlockEntity = REGISTRATE.blockEntity("fluid_furnace", FluidFurnaceBlockEntity::new) + .validBlock(BreaBlocks.FluidFurnaceBlock) + .register(); + } +} diff --git a/src/main/java/net/ptcrys/breakdown/data/blocks/DebugBlocks.java b/src/main/java/net/ptcrys/breakdown/data/blocks/DebugBlocks.java new file mode 100644 index 0000000..488e5a4 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/data/blocks/DebugBlocks.java @@ -0,0 +1,24 @@ +package net.ptcrys.breakdown.data.blocks; + +import net.ptcrys.breakdown.api.registry.registrate.BreaRegistryCore; +import net.ptcrys.breakdown.common.block.debug.CheckMatBlock; +import net.ptcrys.breakdown.common.data.BreaTooltips; + +import net.minecraft.network.chat.Component; + +import static net.ptcrys.breakdown.common.BreaRegistration.*; +import static net.ptcrys.breakdown.common.data.BreaBlocks.*; +import static net.ptcrys.breakdown.common.data.BreaCreativeModeTabs.*; + +public class DebugBlocks { + + public static void init() { + REGISTRATE.defaultCreativeTab(DEBUG_ITEMS.getKey()); + MatCheckBlock = DEBUG_REGISTRATE.block("mat_check", CheckMatBlock::new) + .item((builder) -> builder + .addTooltip(Component.translatable(BreaTooltips.Debug))) + .lang("Material Check Block") + .lang(BreaRegistryCore.LANG_ZH_CN, "材料检测方块") + .register(); + } +} diff --git a/src/main/java/net/ptcrys/breakdown/data/blocks/GeneralBlocks.java b/src/main/java/net/ptcrys/breakdown/data/blocks/GeneralBlocks.java new file mode 100644 index 0000000..88ffc38 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/data/blocks/GeneralBlocks.java @@ -0,0 +1,22 @@ +package net.ptcrys.breakdown.data.blocks; + +import net.ptcrys.breakdown.api.registry.registrate.BreaRegistryCore; +import net.ptcrys.breakdown.common.block.debug.FluidFurnaceBlock; +import net.ptcrys.breakdown.common.data.translation.ComponentSlang; + +import static net.ptcrys.breakdown.common.BreaRegistration.*; +import static net.ptcrys.breakdown.common.data.BreaBlocks.*; +import static net.ptcrys.breakdown.common.data.BreaCreativeModeTabs.*; + +public class GeneralBlocks { + + public static void init() { + REGISTRATE.defaultCreativeTab(GENERAL_BLOCK.getKey()); + FluidFurnaceBlock = REGISTRATE.block("fluid_furnace", FluidFurnaceBlock::new) + .item(builder -> builder + .addTooltip(ComponentSlang.INSTANCE.getCapacity().invoke("10 B").get())) + .lang("Fluid Furnace") + .lang(BreaRegistryCore.LANG_ZH_CN, "流体熔炉") + .register(); + } +} diff --git a/src/main/java/net/ptcrys/breakdown/data/items/DebugItems.java b/src/main/java/net/ptcrys/breakdown/data/items/DebugItems.java new file mode 100644 index 0000000..392a18e --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/data/items/DebugItems.java @@ -0,0 +1,22 @@ +package net.ptcrys.breakdown.data.items; + +import net.ptcrys.breakdown.api.registry.registrate.BreaRegistryCore; +import net.ptcrys.breakdown.common.data.BreaTooltips; + +import net.minecraft.network.chat.Component; + +import static net.ptcrys.breakdown.common.BreaRegistration.*; +import static net.ptcrys.breakdown.common.data.BreaCreativeModeTabs.*; +import static net.ptcrys.breakdown.common.data.BreaItems.*; + +public class DebugItems { + + public static void init() { + REGISTRATE.defaultCreativeTab(DEBUG_ITEMS.getKey()); + TestItem = REGISTRATE.componentItem("test_item") + .addTooltip(Component.translatable(BreaTooltips.Debug)) + .lang("Test Item") + .lang(BreaRegistryCore.LANG_ZH_CN, "测试用物品") + .register(); + } +} diff --git a/src/main/java/net/ptcrys/breakdown/data/lang/BlockLang.java b/src/main/java/net/ptcrys/breakdown/data/lang/BlockLang.java new file mode 100644 index 0000000..e4641f7 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/data/lang/BlockLang.java @@ -0,0 +1,6 @@ +package net.ptcrys.breakdown.data.lang; + +public class BlockLang { + + public static void init() {} +} diff --git a/src/main/java/net/ptcrys/breakdown/data/lang/ItemLang.java b/src/main/java/net/ptcrys/breakdown/data/lang/ItemLang.java new file mode 100644 index 0000000..54d1495 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/data/lang/ItemLang.java @@ -0,0 +1,10 @@ +package net.ptcrys.breakdown.data.lang; + +import static net.ptcrys.breakdown.data.lang.LangHandler.addCNEN; + +public class ItemLang { + + public static void init() { + addCNEN("breakdown.item.deprecated", "该物品已弃用", "This item has been deprecated"); + } +} diff --git a/src/main/java/net/ptcrys/breakdown/data/lang/LangHandler.java b/src/main/java/net/ptcrys/breakdown/data/lang/LangHandler.java new file mode 100644 index 0000000..80b1a98 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/data/lang/LangHandler.java @@ -0,0 +1,54 @@ +package net.ptcrys.breakdown.data.lang; + +import net.ptcrys.breakdown.api.annotation.TranslationKeyProvider; +import net.ptcrys.breakdown.api.lang.CNEN; +import net.ptcrys.breakdown.api.registry.ScanningClass; +import net.ptcrys.registrylib.datagen.provider.RegistryLibLangProvider; + +import net.neoforged.neoforge.common.data.LanguageProvider; + +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; + +import java.util.Map; + +public class LangHandler { + + private static final Map LANGS = new Object2ObjectOpenHashMap<>(); + + private static void addCNEN(String key, CNEN CNEN) { + if (LANGS.containsKey(key)) throw new IllegalArgumentException("Duplicate key: " + key); + LANGS.put(key, CNEN); + } + + public static void addCNEN(String key, String cn, String en) { + addCNEN(key, new CNEN(cn, en)); + } + + public static void addCN(String key, String cn) { + addCNEN(key, cn, null); + } + + public static void init() { + TranslationKeyProvider.LANG.forEach(LangHandler::addCNEN); + ScanningClass.LANG.forEach(LangHandler::addCNEN); + addCNEN("key.breakdown.nightvision", "夜视开关", "Night Vision Toggle"); + } + + public static void enInitialize(LanguageProvider provider) { + init(); + MachineLang.init(); + BlockLang.init(); + ItemLang.init(); + LANGS.forEach((k, v) -> { + if (v.en() == null) return; + provider.add(k, v.en()); + }); + } + + public static void cnInitialize(RegistryLibLangProvider provider) { + LANGS.forEach((k, v) -> { + if (v.cn() == null) return; + provider.add(k, v.cn()); + }); + } +} diff --git a/src/main/java/net/ptcrys/breakdown/data/lang/MachineLang.java b/src/main/java/net/ptcrys/breakdown/data/lang/MachineLang.java new file mode 100644 index 0000000..6b656f0 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/data/lang/MachineLang.java @@ -0,0 +1,11 @@ +package net.ptcrys.breakdown.data.lang; + +import static net.ptcrys.breakdown.data.lang.LangHandler.addCNEN; + +public class MachineLang { + + public static void init() { + addCNEN("gui.tooltips.redstone_mode.enabled", "启用红石模式,机器接收红石信号", "Enable redstone mode, the machine will receive redstone signals"); + addCNEN("gui.tooltips.redstone_mode.disabled", "禁用红石模式,机器无视红石信号", "Disable redstone mode, the machine will ignore redstone signals"); + } +} diff --git a/src/main/java/net/ptcrys/breakdown/data/machine/DebugMachines.java b/src/main/java/net/ptcrys/breakdown/data/machine/DebugMachines.java new file mode 100644 index 0000000..0054f5a --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/data/machine/DebugMachines.java @@ -0,0 +1,24 @@ +package net.ptcrys.breakdown.data.machine; + +import net.ptcrys.breakdown.common.data.BreaTags; +import net.ptcrys.breakdown.common.data.BreaTooltips; +import net.ptcrys.breakdown.common.machine.EmptyMachine; + +import net.minecraft.network.chat.Component; + +import static net.ptcrys.breakdown.common.BreaRegistration.*; +import static net.ptcrys.breakdown.common.data.BreaCreativeModeTabs.*; +import static net.ptcrys.breakdown.common.data.BreaMachines.*; + +public class DebugMachines { + + public static void init() { + REGISTRATE.defaultCreativeTab(DEBUG_ITEMS.getKey()); + TestMachine = REGISTRATE.machine("test_machine", EmptyMachine::new) + .langValue("Test Machine") + .itemBuilder(b -> b.addTag(BreaTags.DEBUG_ITEM)) + .blockBuilder(b -> b.addTag(BreaTags.DEBUG_BLOCK)) + .addTooltip(Component.translatable(BreaTooltips.Debug)) + .register(); + } +} diff --git a/src/main/java/net/phasetranscrystal/breacore/data/materials/ElementMaterials.java b/src/main/java/net/ptcrys/breakdown/data/materials/ElementMaterials.java similarity index 97% rename from src/main/java/net/phasetranscrystal/breacore/data/materials/ElementMaterials.java rename to src/main/java/net/ptcrys/breakdown/data/materials/ElementMaterials.java index 10672d1..5464232 100644 --- a/src/main/java/net/phasetranscrystal/breacore/data/materials/ElementMaterials.java +++ b/src/main/java/net/ptcrys/breakdown/data/materials/ElementMaterials.java @@ -1,16 +1,15 @@ -package net.phasetranscrystal.breacore.data.materials; +package net.ptcrys.breakdown.data.materials; -import net.phasetranscrystal.brealib.BreaLib; +import net.ptcrys.breakdown.BreaLib; +import net.ptcrys.breakdown.api.material.Material; +import net.ptcrys.breakdown.api.material.attributes.AttributeType; +import net.ptcrys.breakdown.api.material.attributes.FluidAttribute; -import net.phasetranscrystal.breacore.api.material.Material; -import net.phasetranscrystal.breacore.api.material.attributes.AttributeType; -import net.phasetranscrystal.breacore.api.material.attributes.FluidAttribute; - -import static net.phasetranscrystal.breacore.api.material.info.MaterialIconSet.DEFAULT; -import static net.phasetranscrystal.breacore.common.data.BreaElements.Ac; -import static net.phasetranscrystal.breacore.common.data.BreaElements.Al; -import static net.phasetranscrystal.breacore.common.data.BreaMaterials.Actinium; -import static net.phasetranscrystal.breacore.common.data.BreaMaterials.Aluminium; +import static net.ptcrys.breakdown.api.material.info.MaterialIconSet.DEFAULT; +import static net.ptcrys.breakdown.common.data.BreaElements.Ac; +import static net.ptcrys.breakdown.common.data.BreaElements.Al; +import static net.ptcrys.breakdown.common.data.BreaMaterials.Actinium; +import static net.ptcrys.breakdown.common.data.BreaMaterials.Aluminium; public class ElementMaterials { diff --git a/src/main/java/net/phasetranscrystal/breacore/data/materials/FirstDegreeMaterials.java b/src/main/java/net/ptcrys/breakdown/data/materials/FirstDegreeMaterials.java similarity index 98% rename from src/main/java/net/phasetranscrystal/breacore/data/materials/FirstDegreeMaterials.java rename to src/main/java/net/ptcrys/breakdown/data/materials/FirstDegreeMaterials.java index 8bb4601..1790163 100644 --- a/src/main/java/net/phasetranscrystal/breacore/data/materials/FirstDegreeMaterials.java +++ b/src/main/java/net/ptcrys/breakdown/data/materials/FirstDegreeMaterials.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.data.materials; +package net.ptcrys.breakdown.data.materials; public class FirstDegreeMaterials { diff --git a/src/main/java/net/phasetranscrystal/breacore/data/materials/HigherDegreeMaterials.java b/src/main/java/net/ptcrys/breakdown/data/materials/HigherDegreeMaterials.java similarity index 96% rename from src/main/java/net/phasetranscrystal/breacore/data/materials/HigherDegreeMaterials.java rename to src/main/java/net/ptcrys/breakdown/data/materials/HigherDegreeMaterials.java index d206e77..f65fe9d 100644 --- a/src/main/java/net/phasetranscrystal/breacore/data/materials/HigherDegreeMaterials.java +++ b/src/main/java/net/ptcrys/breakdown/data/materials/HigherDegreeMaterials.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.data.materials; +package net.ptcrys.breakdown.data.materials; public class HigherDegreeMaterials { diff --git a/src/main/java/net/phasetranscrystal/breacore/data/materials/MarkerMaterials.java b/src/main/java/net/ptcrys/breakdown/data/materials/MarkerMaterials.java similarity index 95% rename from src/main/java/net/phasetranscrystal/breacore/data/materials/MarkerMaterials.java rename to src/main/java/net/ptcrys/breakdown/data/materials/MarkerMaterials.java index 7682738..7232e01 100644 --- a/src/main/java/net/phasetranscrystal/breacore/data/materials/MarkerMaterials.java +++ b/src/main/java/net/ptcrys/breakdown/data/materials/MarkerMaterials.java @@ -1,8 +1,7 @@ -package net.phasetranscrystal.breacore.data.materials; +package net.ptcrys.breakdown.data.materials; -import net.phasetranscrystal.brealib.BreaLib; - -import net.phasetranscrystal.breacore.api.material.MarkerMaterial; +import net.ptcrys.breakdown.BreaLib; +import net.ptcrys.breakdown.api.material.MarkerMaterial; import net.minecraft.world.item.DyeColor; diff --git a/src/main/java/net/phasetranscrystal/breacore/data/materials/OrganicChemistryMaterials.java b/src/main/java/net/ptcrys/breakdown/data/materials/OrganicChemistryMaterials.java similarity index 87% rename from src/main/java/net/phasetranscrystal/breacore/data/materials/OrganicChemistryMaterials.java rename to src/main/java/net/ptcrys/breakdown/data/materials/OrganicChemistryMaterials.java index 8bf1faa..bd7b25f 100644 --- a/src/main/java/net/phasetranscrystal/breacore/data/materials/OrganicChemistryMaterials.java +++ b/src/main/java/net/ptcrys/breakdown/data/materials/OrganicChemistryMaterials.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.data.materials; +package net.ptcrys.breakdown.data.materials; public class OrganicChemistryMaterials { diff --git a/src/main/java/net/phasetranscrystal/breacore/data/materials/SecondDegreeMaterials.java b/src/main/java/net/ptcrys/breakdown/data/materials/SecondDegreeMaterials.java similarity index 98% rename from src/main/java/net/phasetranscrystal/breacore/data/materials/SecondDegreeMaterials.java rename to src/main/java/net/ptcrys/breakdown/data/materials/SecondDegreeMaterials.java index a887596..8b8ec15 100644 --- a/src/main/java/net/phasetranscrystal/breacore/data/materials/SecondDegreeMaterials.java +++ b/src/main/java/net/ptcrys/breakdown/data/materials/SecondDegreeMaterials.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.data.materials; +package net.ptcrys.breakdown.data.materials; public class SecondDegreeMaterials { diff --git a/src/main/java/net/phasetranscrystal/breacore/data/materials/UnknownCompositionMaterials.java b/src/main/java/net/ptcrys/breakdown/data/materials/UnknownCompositionMaterials.java similarity index 99% rename from src/main/java/net/phasetranscrystal/breacore/data/materials/UnknownCompositionMaterials.java rename to src/main/java/net/ptcrys/breakdown/data/materials/UnknownCompositionMaterials.java index 79bc5ea..06c1a31 100644 --- a/src/main/java/net/phasetranscrystal/breacore/data/materials/UnknownCompositionMaterials.java +++ b/src/main/java/net/ptcrys/breakdown/data/materials/UnknownCompositionMaterials.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.data.materials; +package net.ptcrys.breakdown.data.materials; public class UnknownCompositionMaterials { diff --git a/src/main/java/net/phasetranscrystal/breacore/data/recipes/BreaRecipes.java b/src/main/java/net/ptcrys/breakdown/data/recipes/BreaRecipes.java similarity index 54% rename from src/main/java/net/phasetranscrystal/breacore/data/recipes/BreaRecipes.java rename to src/main/java/net/ptcrys/breakdown/data/recipes/BreaRecipes.java index 2c6e112..69d80b1 100644 --- a/src/main/java/net/phasetranscrystal/breacore/data/recipes/BreaRecipes.java +++ b/src/main/java/net/ptcrys/breakdown/data/recipes/BreaRecipes.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.data.recipes; +package net.ptcrys.breakdown.data.recipes; public class BreaRecipes { diff --git a/src/main/java/net/ptcrys/breakdown/data/tags/BreaBlockTags.java b/src/main/java/net/ptcrys/breakdown/data/tags/BreaBlockTags.java new file mode 100644 index 0000000..e60c5da --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/data/tags/BreaBlockTags.java @@ -0,0 +1,24 @@ +package net.ptcrys.breakdown.data.tags; + +import net.ptcrys.breakdown.BreaLib; + +import net.minecraft.tags.BlockTags; +import net.minecraft.tags.TagKey; +import net.minecraft.world.level.block.Block; + +import static net.ptcrys.breakdown.common.data.BreaTags.*; + +public class BreaBlockTags { + + static { + DEBUG_BLOCK = createTag("debug"); + MATERIAL_BLOCK = createTag("material"); + MACHINE_BLOCK = createTag("machine"); + } + + public static void init() {} + + private static TagKey createTag(String key) { + return BlockTags.create(BreaLib.id(key)); + } +} diff --git a/src/main/java/net/ptcrys/breakdown/data/tags/BreaFluidTags.java b/src/main/java/net/ptcrys/breakdown/data/tags/BreaFluidTags.java new file mode 100644 index 0000000..19581c7 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/data/tags/BreaFluidTags.java @@ -0,0 +1,22 @@ +package net.ptcrys.breakdown.data.tags; + +import net.ptcrys.breakdown.BreaLib; + +import net.minecraft.tags.FluidTags; +import net.minecraft.tags.TagKey; +import net.minecraft.world.level.material.Fluid; + +import static net.ptcrys.breakdown.common.data.BreaTags.*; + +public class BreaFluidTags { + + static { + MATERIAL_FLUID = createTag("material"); + } + + public static void init() {} + + private static TagKey createTag(String key) { + return FluidTags.create(BreaLib.id(key)); + } +} diff --git a/src/main/java/net/ptcrys/breakdown/data/tags/BreaItemTags.java b/src/main/java/net/ptcrys/breakdown/data/tags/BreaItemTags.java new file mode 100644 index 0000000..616ad14 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/data/tags/BreaItemTags.java @@ -0,0 +1,23 @@ +package net.ptcrys.breakdown.data.tags; + +import net.ptcrys.breakdown.BreaLib; + +import net.minecraft.tags.ItemTags; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; + +import static net.ptcrys.breakdown.common.data.BreaTags.*; + +public class BreaItemTags { + + static { + DEBUG_ITEM = createTag("debug"); + MATERIAL_ITEM = createTag("material"); + } + + public static void init() {} + + private static TagKey createTag(String key) { + return ItemTags.create(BreaLib.id(key)); + } +} diff --git a/src/main/java/net/ptcrys/breakdown/mixins/AttributeRangeMixin.java b/src/main/java/net/ptcrys/breakdown/mixins/AttributeRangeMixin.java new file mode 100644 index 0000000..9b32736 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/mixins/AttributeRangeMixin.java @@ -0,0 +1,71 @@ +package net.ptcrys.breakdown.mixins; + +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.RangedAttribute; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(Attributes.class) +public class AttributeRangeMixin { + + // @Redirect( + // method = "", + // at = @At( + // value = "NEW", + // target = "(Ljava/lang/String;DDD)Lnet/minecraft/world/entity/ai/attributes/RangedAttribute;" + // ) + // ) + // private static RangedAttribute redirectMaxHealthAttribute(String descriptionId, double defaultValue, double + // minValue, double maxValue) { + // return switch (descriptionId) { + // case "attribute.name.max_health", + // "attribute.name.armor", + // "attribute.name.armor_toughness", + // "attribute.name.attack_damage" -> + // new RangedAttribute(descriptionId, defaultValue, minValue, Float.MAX_VALUE); + // default -> new RangedAttribute(descriptionId, defaultValue, minValue, maxValue); + // }; + // } + + @Redirect( + method = "", + at = @At( + value = "NEW", + target = "(Ljava/lang/String;DDD)Lnet/minecraft/world/entity/ai/attributes/RangedAttribute;", + ordinal = 0)) + private static RangedAttribute redirectArmorAttribute(String descriptionId, double defaultValue, double minValue, double maxValue) { + return new RangedAttribute(descriptionId, defaultValue, minValue, Float.MAX_VALUE); + } + + @Redirect( + method = "", + at = @At( + value = "NEW", + target = "(Ljava/lang/String;DDD)Lnet/minecraft/world/entity/ai/attributes/RangedAttribute;", + ordinal = 1)) + private static RangedAttribute redirectArmorToughnessAttribute(String descriptionId, double defaultValue, double minValue, double maxValue) { + return new RangedAttribute(descriptionId, defaultValue, minValue, Float.MAX_VALUE); + } + + @Redirect( + method = "", + at = @At( + value = "NEW", + target = "(Ljava/lang/String;DDD)Lnet/minecraft/world/entity/ai/attributes/RangedAttribute;", + ordinal = 2)) + private static RangedAttribute redirectRangeDamageAttribute(String descriptionId, double defaultValue, double minValue, double maxValue) { + return new RangedAttribute(descriptionId, defaultValue, minValue, Float.MAX_VALUE); + } + + @Redirect( + method = "", + at = @At( + value = "NEW", + target = "(Ljava/lang/String;DDD)Lnet/minecraft/world/entity/ai/attributes/RangedAttribute;", + ordinal = 18)) + private static RangedAttribute redirectMaxHealthAttribute(String descriptionId, double defaultValue, double minValue, double maxValue) { + return new RangedAttribute(descriptionId, defaultValue, minValue, Float.MAX_VALUE); + } +} diff --git a/src/main/java/net/phasetranscrystal/breacore/mixins/BlockPropertiesAccessor.java b/src/main/java/net/ptcrys/breakdown/mixins/BlockPropertiesAccessor.java similarity index 98% rename from src/main/java/net/phasetranscrystal/breacore/mixins/BlockPropertiesAccessor.java rename to src/main/java/net/ptcrys/breakdown/mixins/BlockPropertiesAccessor.java index 304f83d..c462914 100644 --- a/src/main/java/net/phasetranscrystal/breacore/mixins/BlockPropertiesAccessor.java +++ b/src/main/java/net/ptcrys/breakdown/mixins/BlockPropertiesAccessor.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.mixins; +package net.ptcrys.breakdown.mixins; import net.minecraft.world.flag.FeatureFlagSet; import net.minecraft.world.level.block.SoundType; diff --git a/src/main/java/net/phasetranscrystal/breacore/mixins/BreaMixinPlugin.java b/src/main/java/net/ptcrys/breakdown/mixins/BreaMixinPlugin.java similarity index 95% rename from src/main/java/net/phasetranscrystal/breacore/mixins/BreaMixinPlugin.java rename to src/main/java/net/ptcrys/breakdown/mixins/BreaMixinPlugin.java index 15f9102..23f92e9 100644 --- a/src/main/java/net/phasetranscrystal/breacore/mixins/BreaMixinPlugin.java +++ b/src/main/java/net/ptcrys/breakdown/mixins/BreaMixinPlugin.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.mixins; +package net.ptcrys.breakdown.mixins; import org.objectweb.asm.tree.ClassNode; import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; diff --git a/src/main/java/net/phasetranscrystal/breacore/mixins/MappedRegistryAccess.java b/src/main/java/net/ptcrys/breakdown/mixins/MappedRegistryAccess.java similarity index 95% rename from src/main/java/net/phasetranscrystal/breacore/mixins/MappedRegistryAccess.java rename to src/main/java/net/ptcrys/breakdown/mixins/MappedRegistryAccess.java index a7cff5f..9c292c6 100644 --- a/src/main/java/net/phasetranscrystal/breacore/mixins/MappedRegistryAccess.java +++ b/src/main/java/net/ptcrys/breakdown/mixins/MappedRegistryAccess.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.mixins; +package net.ptcrys.breakdown.mixins; import net.minecraft.core.Holder; import net.minecraft.core.MappedRegistry; diff --git a/src/main/java/net/phasetranscrystal/breacore/mixins/RegisterEventAccessor.java b/src/main/java/net/ptcrys/breakdown/mixins/RegisterEventAccessor.java similarity index 92% rename from src/main/java/net/phasetranscrystal/breacore/mixins/RegisterEventAccessor.java rename to src/main/java/net/ptcrys/breakdown/mixins/RegisterEventAccessor.java index 6a02efa..ba5728e 100644 --- a/src/main/java/net/phasetranscrystal/breacore/mixins/RegisterEventAccessor.java +++ b/src/main/java/net/ptcrys/breakdown/mixins/RegisterEventAccessor.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.mixins; +package net.ptcrys.breakdown.mixins; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceKey; diff --git a/src/main/java/net/phasetranscrystal/breacore/mixins/ResourceKeyAccessor.java b/src/main/java/net/ptcrys/breakdown/mixins/ResourceKeyAccessor.java similarity index 89% rename from src/main/java/net/phasetranscrystal/breacore/mixins/ResourceKeyAccessor.java rename to src/main/java/net/ptcrys/breakdown/mixins/ResourceKeyAccessor.java index 2f931be..a39b5d5 100644 --- a/src/main/java/net/phasetranscrystal/breacore/mixins/ResourceKeyAccessor.java +++ b/src/main/java/net/ptcrys/breakdown/mixins/ResourceKeyAccessor.java @@ -1,4 +1,4 @@ -package net.phasetranscrystal.breacore.mixins; +package net.ptcrys.breakdown.mixins; import net.minecraft.resources.Identifier; import net.minecraft.resources.ResourceKey; diff --git a/src/main/java/net/ptcrys/breakdown/utils/ColorUtil.java b/src/main/java/net/ptcrys/breakdown/utils/ColorUtil.java new file mode 100644 index 0000000..90cc29b --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/utils/ColorUtil.java @@ -0,0 +1,170 @@ +package net.ptcrys.breakdown.utils; + +import net.minecraft.util.ARGB; + +import it.unimi.dsi.fastutil.ints.IntIntPair; + +public class ColorUtil { + + public static int convertRGBtoARGB(int colorValue) { + return convertRGBtoARGB(colorValue, 0xFF); + } + + public static int convertRGBtoARGB(int colorValue, int opacity) { + // preserve existing opacity if present + if (((colorValue >> 24) & 0xFF) != 0) return colorValue; + return opacity << 24 | colorValue; + } + + public static int argbToAbgr(int argb) { + int r = argb >> 16 & 255; + int b = argb & 255; + return argb & -16711936 | b << 16 | r; + } + + public static int argbToRgba(int argb) { + return argb << 8 | argb >>> 24; + } + + public static float[] getRGB(int color) { + float r = (float) (color >> 16 & 255) / 255.0F; + float g = (float) (color >> 8 & 255) / 255.0F; + float b = (float) (color >> 0 & 255) / 255.0F; + return new float[] { r, g, b }; + } + + public static int multiplyBlendWithAlpha(int c1, int c2) { + int x1 = c1 & 255; + int y1 = (c1 & '\uff00') >> 8; + int z1 = (c1 & 16711680) >> 16; + int w1 = (c1 & -16777216) >> 24; + int x2 = c2 & 255; + int y2 = (c2 & '\uff00') >> 8; + int z2 = (c2 & 16711680) >> 16; + int w2 = (c2 & -16777216) >> 24; + int x = x1 * x2 / 255; + int y = y1 * y2 / 255; + int z = z1 * z2 / 255; + int w = w1 * w2 / 255; + if (w1 == -1 && w2 == -1) { + w = 255; + } + + return w << 24 | z << 16 | y << 8 | x; + } + + public static int blend(int c1, int c2, float ratio) { + if (ratio > 1.0F) { + ratio = 1.0F; + } else if (ratio < 0.0F) { + ratio = 0.0F; + } + + float iRatio = 1.0F - ratio; + int a1 = c1 >> 24 & 255; + int r1 = (c1 & 16711680) >> 16; + int g1 = (c1 & '\uff00') >> 8; + int b1 = c1 & 255; + int a2 = c2 >> 24 & 255; + int r2 = (c2 & 16711680) >> 16; + int g2 = (c2 & '\uff00') >> 8; + int b2 = c2 & 255; + int a = (int) ((float) a1 * iRatio + (float) a2 * ratio); + int r = (int) ((float) r1 * iRatio + (float) r2 * ratio); + int g = (int) ((float) g1 * iRatio + (float) g2 * ratio); + int b = (int) ((float) b1 * iRatio + (float) b2 * ratio); + return a << 24 | r << 16 | g << 8 | b; + } + + public static IntIntPair getGradient(int rgb, int luminanceDifference) { + float[] hsl = RGBtoHSL(rgb); + float[] upshade = new float[3]; + float[] downshade = new float[3]; + System.arraycopy(hsl, 0, upshade, 0, 3); + System.arraycopy(hsl, 0, downshade, 0, 3); + upshade[2] += (float) luminanceDifference; + if (upshade[2] > 100.0F) { + upshade[2] = 100.0F; + } + + downshade[2] -= (float) luminanceDifference; + if (downshade[2] < 0.0F) { + downshade[2] = 0.0F; + } + + int upshadeRgb = toRGB(upshade); + int downshadeRgb = toRGB(downshade); + return IntIntPair.of(downshadeRgb, upshadeRgb); + } + + public static float[] RGBtoHSL(int rgbColor) { + float r = (float) (rgbColor >> 16 & 255) / 255.0F; + float g = (float) (rgbColor >> 8 & 255) / 255.0F; + float b = (float) (rgbColor >> 0 & 255) / 255.0F; + float min = Math.min(r, Math.min(g, b)); + float max = Math.max(r, Math.max(g, b)); + float h = 0.0F; + if (max == min) { + h = 0.0F; + } else if (max == r) { + h = (60.0F * (g - b) / (max - min) + 360.0F) % 360.0F; + } else if (max == g) { + h = 60.0F * (b - r) / (max - min) + 120.0F; + } else if (max == b) { + h = 60.0F * (r - g) / (max - min) + 240.0F; + } + + float l = (max + min) / 2.0F; + float s; + if (max == min) { + s = 0.0F; + } else if (l <= 0.5F) { + s = (max - min) / (max + min); + } else { + s = (max - min) / (2.0F - max - min); + } + + return new float[] { h, s * 100.0F, l * 100.0F }; + } + + public static int toRGB(float[] hsv) { + return toRGB(hsv[0], hsv[1], hsv[2]); + } + + public static int toRGB(float h, float s, float l) { + h %= 360.0F; + h /= 360.0F; + s /= 100.0F; + l /= 100.0F; + float q; + if (l < 0.5F) { + q = l * (1.0F + s); + } else { + q = l + s - s * l; + } + + float p = 2.0F * l - q; + int r = (int) (Math.max(0.0F, hueToRGB(p, q, h + 0.33333334F)) * 255.0F); + int g = (int) (Math.max(0.0F, hueToRGB(p, q, h)) * 255.0F); + int b = (int) (Math.max(0.0F, hueToRGB(p, q, h - 0.33333334F)) * 255.0F); + return ARGB.color(255, r, g, b); + } + + private static float hueToRGB(float p, float q, float h) { + if (h < 0.0F) { + ++h; + } + + if (h > 1.0F) { + --h; + } + + if (6.0F * h < 1.0F) { + return p + (q - p) * 6.0F * h; + } else if (2.0F * h < 1.0F) { + return q; + } else { + return 3.0F * h < 2.0F ? p + (q - p) * 6.0F * (0.6666667F - h) : p; + } + } +} diff --git a/src/main/java/net/ptcrys/breakdown/utils/FormattingUtil.java b/src/main/java/net/ptcrys/breakdown/utils/FormattingUtil.java new file mode 100644 index 0000000..e83c3ce --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/utils/FormattingUtil.java @@ -0,0 +1,230 @@ +package net.ptcrys.breakdown.utils; + +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; + +import org.apache.commons.lang3.StringUtils; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.math.BigInteger; +import java.text.DecimalFormat; +import java.text.NumberFormat; +import java.util.Arrays; +import java.util.Locale; +import java.util.stream.Collectors; + +public class FormattingUtil { + + public static final DecimalFormat DECIMAL_FORMAT_0F; + public static final DecimalFormat DECIMAL_FORMAT_1F; + public static final DecimalFormat DECIMAL_FORMAT_2F; + public static final DecimalFormat DECIMAL_FORMAT_SIC; + public static final DecimalFormat DECIMAL_FORMAT_SIC_2F; + private static final NumberFormat NUMBER_FORMAT; + private static final int SMALL_DOWN_NUMBER_BASE = 8320; + private static final int SMALL_UP_NUMBER_BASE = 8304; + private static final int SMALL_UP_NUMBER_ONE = 185; + private static final int SMALL_UP_NUMBER_TWO = 178; + private static final int SMALL_UP_NUMBER_THREE = 179; + private static final int NUMBER_BASE = 48; + + static { + NUMBER_FORMAT = NumberFormat.getInstance(Locale.ROOT); + DECIMAL_FORMAT_0F = new DecimalFormat(",###"); + DECIMAL_FORMAT_1F = new DecimalFormat("#,##0.#"); + DECIMAL_FORMAT_2F = new DecimalFormat("#,##0.##"); + DECIMAL_FORMAT_SIC = new DecimalFormat("0E00"); + DECIMAL_FORMAT_SIC_2F = new DecimalFormat("0.00E00"); + } + + public static String toSmallUpNumbers(String string) { + return checkNumbers(string, 8304); + } + + public static String toSmallDownNumbers(String string) { + return checkNumbers(string, 8320); + } + + private static @NotNull String checkNumbers(String string, int startIndex) { + char[] charArray = string.toCharArray(); + + for (int i = 0; i < charArray.length; ++i) { + int relativeIndex = charArray[i] - 48; + if (relativeIndex >= 0 && relativeIndex <= 9) { + if (startIndex == 8304) { + if (relativeIndex == 1) { + charArray[i] = 185; + continue; + } + + if (relativeIndex == 2) { + charArray[i] = 178; + continue; + } + + if (relativeIndex == 3) { + charArray[i] = 179; + continue; + } + } + + int newChar = startIndex + relativeIndex; + charArray[i] = (char) newChar; + } + } + + return new String(charArray); + } + + public static String toLowerCaseUnderscore(String string) { + StringBuilder result = new StringBuilder(); + + for (int i = 0; i < string.length(); ++i) { + char curChar = string.charAt(i); + result.append(Character.toLowerCase(curChar)); + if (i == string.length() - 1) { + break; + } + + char nextChar = string.charAt(i + 1); + if (curChar != '_' && nextChar != '_') { + boolean nextIsUpper = Character.isUpperCase(nextChar); + if ((!Character.isUpperCase(curChar) || !nextIsUpper) && (nextIsUpper || Character.isDigit(curChar) ^ Character.isDigit(nextChar))) { + result.append('_'); + } + } + } + + return result.toString(); + } + + public static String toLowerCaseUnder(String string) { + return toLowerCaseUnderscore(string); + } + + public static boolean hasUpperCase(String string) { + for (int i = 0; i < string.length(); ++i) { + char ch = string.charAt(i); + if (Character.isUpperCase(ch)) { + return true; + } + } + + return false; + } + + public static String toEnglishName(Object internalName) { + return Arrays.stream(internalName.toString().toLowerCase(Locale.ROOT).split("_")).map(StringUtils::capitalize).collect(Collectors.joining(" ")); + } + + public static String toRomanNumeral(int number) { + return "I".repeat(number).replace("IIIII", "V").replace("IIII", "IV").replace("VV", "X").replace("VIV", "IX").replace("XXXXX", "L").replace("XXXX", "XL").replace("LL", "C").replace("LXL", "XC").replace("CCCCC", "D").replace("CCCC", "CD").replace("DD", "M").replace("DCD", "CM"); + } + + public static String lowerUnderscoreToUpperCamel(String string) { + StringBuilder result = new StringBuilder(); + + for (int i = 0; i < string.length(); ++i) { + if (string.charAt(i) != '_') { + if (i != 0 && string.charAt(i - 1) != '_') { + result.append(string.charAt(i)); + } else { + result.append(Character.toUpperCase(string.charAt(i))); + } + } + } + + return result.toString(); + } + + public static String formatPercent(double number) { + return String.format("%,.2f", number); + } + + public static String formatNumbers(int number) { + return NUMBER_FORMAT.format(number); + } + + public static String formatNumbers(long number) { + return NUMBER_FORMAT.format(number); + } + + public static String formatNumbers(double number) { + return NUMBER_FORMAT.format(number); + } + + public static String formatNumbers(Object number) { + return NUMBER_FORMAT.format(number); + } + + public static String formatNumberReadable(long number) { + return formatNumberReadable(number, false); + } + + public static String formatNumberReadable(long number, boolean milli) { + return formatNumberReadable((double) number, milli, DECIMAL_FORMAT_1F, null); + } + + public static String formatNumberReadable2F(double number, boolean milli) { + return formatNumberReadable(number, milli, DECIMAL_FORMAT_2F, null); + } + + public static String formatNumberReadable(double number, boolean milli, NumberFormat fmt, @Nullable String unit) { + StringBuilder sb = new StringBuilder(); + if (number < (double) 0.0F) { + number = -number; + sb.append('-'); + } + + if (milli && number >= (double) 1000.0F) { + milli = false; + number /= 1000.0F; + } + + int exp = 0; + if (number >= (double) 1000.0F) { + exp = (int) Math.log10(number) / 3; + if (exp > 7) { + exp = 7; + } + + if (exp > 0) { + number /= Math.pow(1000.0F, exp); + } + } + + sb.append(fmt.format(number)); + if (exp > 0) { + sb.append("kMGTPEZ".charAt(exp - 1)); + } else if (milli && number != (double) 0.0F) { + sb.append('m'); + } + + if (unit != null) { + sb.append(unit); + } + + return sb.toString(); + } + + public static String formatNumberOrSic(BigInteger number, BigInteger threshold) { + return number.compareTo(threshold) > 0 ? DECIMAL_FORMAT_SIC_2F.format(number) : formatNumbers(number); + } + + public static String formatBuckets(long mB) { + return formatNumberReadable((double) mB, true, DECIMAL_FORMAT_2F, "B"); + } + + public static @NotNull String formatNumber2Places(float number) { + return DECIMAL_FORMAT_2F.format(number); + } + + public static @NotNull String formatNumber2Places(double number) { + return DECIMAL_FORMAT_2F.format(number); + } + + public static Component formatPercentage2Places(String langKey, float percentage) { + return Component.translatable(langKey, formatNumber2Places(percentage)).withStyle(ChatFormatting.YELLOW); + } +} diff --git a/src/main/java/net/ptcrys/breakdown/utils/ItemStackHashStrategy.java b/src/main/java/net/ptcrys/breakdown/utils/ItemStackHashStrategy.java new file mode 100644 index 0000000..c6eb163 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/utils/ItemStackHashStrategy.java @@ -0,0 +1,118 @@ +package net.ptcrys.breakdown.utils; + +import net.minecraft.world.item.ItemStack; + +import it.unimi.dsi.fastutil.Hash; +import org.jetbrains.annotations.Nullable; + +import java.util.Objects; + +/** + * A configurable generator of hashing strategies, allowing for consideration of select properties of ItemStacks when + * considering equality. + */ +public interface ItemStackHashStrategy extends Hash.Strategy { + + /** + * @return a builder object for producing a custom ItemStackHashStrategy. + */ + static ItemStackHashStrategyBuilder builder() { + return new ItemStackHashStrategyBuilder(); + } + + /** + * Generates an ItemStackHash configured to compare every aspect of ItemStacks. + * + * @return the ItemStackHashStrategy as described above. + */ + static ItemStackHashStrategy comparingAll() { + return builder().compareItem(true) + .compareCount(true) + .compareComponents(true) + .build(); + } + + /** + * Generates an ItemStackHash configured to compare every aspect of ItemStacks except the number + * of items in the stack. + * + * @return the ItemStackHashStrategy as described above. + */ + static ItemStackHashStrategy comparingAllButCount() { + return builder().compareItem(true) + .compareComponents(true) + .build(); + } + + static ItemStackHashStrategy comparingItem() { + return builder().compareItem(true) + .build(); + } + + /** + * Builder pattern class for generating customized ItemStackHashStrategy + */ + class ItemStackHashStrategyBuilder { + + private boolean item, count, components; + + /** + * Defines whether the Item type should be considered for equality. + * + * @param choice {@code true} to consider this property, {@code false} to ignore it. + * @return {@code this} + */ + public ItemStackHashStrategyBuilder compareItem(boolean choice) { + item = choice; + return this; + } + + /** + * Defines whether stack size should be considered for equality. + * + * @param choice {@code true} to consider this property, {@code false} to ignore it. + * @return {@code this} + */ + public ItemStackHashStrategyBuilder compareCount(boolean choice) { + count = choice; + return this; + } + + /** + * Defines whether Data Components should be considered for equality. + * + * @param choice {@code true} to consider this property, {@code false} to ignore it. + * @return {@code this} + */ + public ItemStackHashStrategyBuilder compareComponents(boolean choice) { + components = choice; + return this; + } + + /** + * @return the ItemStackHashStrategy as configured by "compare" methods. + */ + public ItemStackHashStrategy build() { + return new ItemStackHashStrategy() { + + @Override + public int hashCode(@Nullable ItemStack o) { + return o == null || o.isEmpty() ? 0 : Objects.hash( + item ? o.getItem() : null, + count ? o.getCount() : null, + components ? o.getComponents() : null); + } + + @Override + public boolean equals(@Nullable ItemStack a, @Nullable ItemStack b) { + if (a == null || a.isEmpty()) return b == null || b.isEmpty(); + if (b == null || b.isEmpty()) return false; + + return (!item || a.getItem() == b.getItem()) && + (!count || a.getCount() == b.getCount()) && + (!components || Objects.equals(a.getComponents(), b.getComponents())); + } + }; + } + } +} diff --git a/src/main/java/net/ptcrys/breakdown/utils/MathUtil.java b/src/main/java/net/ptcrys/breakdown/utils/MathUtil.java new file mode 100644 index 0000000..4bc84ad --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/utils/MathUtil.java @@ -0,0 +1,40 @@ +package net.ptcrys.breakdown.utils; + +import net.minecraft.world.item.ItemStack; + +import it.unimi.dsi.fastutil.ints.IntArrayList; +import it.unimi.dsi.fastutil.objects.ObjectArrayList; + +import java.util.Collections; +import java.util.List; + +public class MathUtil { + + public static List splitStacks(ItemStack stack, long amount) { + int count = saturatedCast(amount); + int fullStacks = count / 64; + int rem = count % 64; + List stacks = new ObjectArrayList<>(fullStacks + 1); + if (fullStacks > 0) stacks.addAll(Collections.nCopies(fullStacks, stack.copyWithCount(64))); + if (rem > 0) stacks.add(stack.copyWithCount(rem)); + return stacks; + } + + public static int[] split(long value) { + IntArrayList result = new IntArrayList(); + while (value > 0) { + int intValue = (int) Math.min(value, Integer.MAX_VALUE); + result.add(intValue); + value -= intValue; + } + return result.toIntArray(); + } + + public static int saturatedCast(long value) { + if (value > 2147483647L) { + return Integer.MAX_VALUE; + } else { + return value < -2147483648L ? Integer.MIN_VALUE : (int) value; + } + } +} diff --git a/src/main/java/net/ptcrys/breakdown/utils/RedstoneUtil.java b/src/main/java/net/ptcrys/breakdown/utils/RedstoneUtil.java new file mode 100644 index 0000000..aa29867 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/utils/RedstoneUtil.java @@ -0,0 +1,69 @@ +package net.ptcrys.breakdown.utils; + +public class RedstoneUtil { + + /** + * Compares a value against a min and max, with an option to invert the logic + * + * @param value value to be compared + * @param maxValue the max that the value can be + * @param minValue the min that the value can be + * @param isInverted whether to invert the logic of this method + * @return an int from 0 (value <= min) to 15 (value >= max) normally, with a ratio when the value is between min + * and max + */ + public static int computeRedstoneBetweenValues(long value, float maxValue, float minValue, boolean isInverted) { + if (value >= maxValue) { + return isInverted ? 0 : 15; // value above maxValue should normally be 15, otherwise 0 + } else if (value <= minValue) { + return isInverted ? 15 : 0; // value below minValue should normally be 0, otherwise 15 + } + + float ratio; + if (!isInverted) { + ratio = 15 * (value - minValue) / (maxValue - minValue); // value closer to max results in higher output + } else { + ratio = 15 * (maxValue - value) / (maxValue - minValue); // value closer to min results in higher output + } + + return Math.round(ratio); + } + + /** + * Compares a value against a min and max, with an option to invert the logic. Has latching functionality. + * + * @param value value to be compared + * @param maxValue the max that the value can be + * @param minValue the min that the value can be + * @param output the output value the function modifies + * @return returns the modified output value + */ + public static int computeLatchedRedstoneBetweenValues(float value, float maxValue, float minValue, + boolean isInverted, int output) { + if (value >= maxValue) { + output = !isInverted ? 0 : 15; // value above maxValue should normally be 0, otherwise 15 + } else if (value <= minValue) { + output = !isInverted ? 15 : 0; // value below minValue should normally be 15, otherwise 0 + } + return output; + } + + /** + * Compares a current against max, with an option to invert the logic. + * + * @param current value to be compared + * @param max the max that value can be + * @param isInverted whether to invert the logic of this method + * @return value 0 to 15; A value of at least 1 is returned if current > 0 + * @throws ArithmeticException when max is 0 + */ + public static int computeRedstoneValue(long current, long max, boolean isInverted) throws ArithmeticException { + int outputAmount = (int) (14f * current / max) + (current > 0 ? 1 : 0); + + if (isInverted) { + outputAmount = 15 - outputAmount; + } + + return outputAmount; + } +} diff --git a/src/main/java/net/ptcrys/breakdown/utils/ShapeUtil.java b/src/main/java/net/ptcrys/breakdown/utils/ShapeUtil.java new file mode 100644 index 0000000..6711b47 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/utils/ShapeUtil.java @@ -0,0 +1,51 @@ +package net.ptcrys.breakdown.utils; + +import net.minecraft.core.Direction; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.shapes.Shapes; +import net.minecraft.world.phys.shapes.VoxelShape; + +import org.joml.Vector3f; + +public class ShapeUtil { + + public static AABB rotate(AABB AABB, Direction facing) { + switch (facing) { + case SOUTH -> { + return rotate(AABB, new Vector3f(0, 1, 0), 180); + } + case EAST -> { + return rotate(AABB, new Vector3f(0, 1, 0), -90); + } + case WEST -> { + return rotate(AABB, new Vector3f(0, 1, 0), 90); + } + case UP -> { + return rotate(AABB, new Vector3f(1, 0, 0), 90); + } + case DOWN -> { + return rotate(AABB, new Vector3f(1, 0, 0), -90); + } + } + return AABB; + } + + public static AABB rotate(AABB AABB, Vector3f axis, double degree) { + Vector3f min = new Vector3f((float) AABB.minX, (float) AABB.minY, (float) AABB.minZ).sub(0.5f, 0.5f, 0.5f); + Vector3f max = new Vector3f((float) AABB.maxX, (float) AABB.maxY, (float) AABB.maxZ).sub(0.5f, 0.5f, 0.5f); + float radians = (float) Math.toRadians(degree); + min.rotateAxis(radians, axis.x, axis.y, axis.z); + max.rotateAxis(radians, axis.x, axis.y, axis.z); + min.add(0.5f, 0.5f, 0.5f); + max.add(0.5f, 0.5f, 0.5f); + return new AABB(min.x, min.y, min.z, max.x, max.y, max.z); + } + + public static VoxelShape rotate(VoxelShape shape, Direction facing) { + return shape.toAabbs().stream().map(AABB -> Shapes.create(rotate(AABB, facing))).reduce(Shapes.empty(), Shapes::or); + } + + public static VoxelShape rotate(VoxelShape shape, Vector3f axis, double degree) { + return shape.toAabbs().stream().map(AABB -> Shapes.create(rotate(AABB, axis, degree))).reduce(Shapes.empty(), Shapes::or); + } +} diff --git a/src/main/java/net/ptcrys/breakdown/utils/StringUtils.java b/src/main/java/net/ptcrys/breakdown/utils/StringUtils.java new file mode 100644 index 0000000..2d4ae73 --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/utils/StringUtils.java @@ -0,0 +1,100 @@ +package net.ptcrys.breakdown.utils; + +import net.minecraft.ChatFormatting; + +import java.util.regex.Pattern; + +public final class StringUtils { + + public static final String EMPTY = ""; + private static final String[] ChineseNumbers = new String[] { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九" }; + + private StringUtils() {} + + public static String numberToChinese(int value) { + if (value >= 0 && value <= 9) { + return ChineseNumbers[value]; + } else { + throw new IllegalArgumentException("Number must be between 0 and 9"); + } + } + + public static String[] decompose(String var0) { + return internalDecompose(':', var0); + } + + private static String[] internalDecompose(char var0, String var1) { + String[] var2 = new String[] { var1, "" }; + int var3 = var1.indexOf(var0); + if (var3 >= 0) { + var2[1] = var1.substring(var3 + 1); + if (var3 >= 1) { + var2[0] = var1.substring(0, var3); + } + } + + return var2; + } + + public static String[] lastDecompose(char var0, String var1) { + String[] var2 = new String[] { var1, "" }; + int var3 = var1.lastIndexOf(var0); + if (var3 >= 0) { + var2[1] = var1.substring(var3 + 1); + var2[0] = var1.substring(0, var3); + } + + return var2; + } + + public static boolean containsWithWildcard(String[] var0, String var1) { + for (String var5 : var0) { + if (Pattern.matches(var5, var1)) { + return true; + } + } + + return false; + } + + public static String full_color(String var0) { + return internalDecompose(var0, new ChatFormatting[] { ChatFormatting.RED, ChatFormatting.GOLD, ChatFormatting.YELLOW, ChatFormatting.GREEN, ChatFormatting.AQUA, ChatFormatting.BLUE, ChatFormatting.LIGHT_PURPLE }, (double) 80.0F); + } + + public static String dark_purplish_red(String var0) { + return internalDecompose(var0, new ChatFormatting[] { ChatFormatting.DARK_PURPLE, ChatFormatting.DARK_RED }, (double) 160.0F); + } + + public static String white_blue(String var0) { + return internalDecompose(var0, new ChatFormatting[] { ChatFormatting.BLUE, ChatFormatting.BLUE, ChatFormatting.BLUE, ChatFormatting.BLUE, ChatFormatting.WHITE, ChatFormatting.BLUE, ChatFormatting.WHITE, ChatFormatting.WHITE, ChatFormatting.BLUE, ChatFormatting.WHITE, ChatFormatting.WHITE, ChatFormatting.BLUE, ChatFormatting.RED, ChatFormatting.WHITE }, (double) 80.0F); + } + + public static String purplish_red(String var0) { + return internalDecompose(var0, new ChatFormatting[] { ChatFormatting.LIGHT_PURPLE, ChatFormatting.DARK_PURPLE }, (double) 160.0F); + } + + public static String golden(String var0) { + return internalDecompose(var0, new ChatFormatting[] { ChatFormatting.YELLOW, ChatFormatting.GOLD }, (double) 160.0F); + } + + public static String dark_green(String var0) { + return internalDecompose(var0, new ChatFormatting[] { ChatFormatting.GREEN, ChatFormatting.DARK_GREEN }, (double) 160.0F); + } + + private static String internalDecompose(String var0, ChatFormatting[] var1, double var2) { + StringBuilder var4 = new StringBuilder(var0.length() * 3); + if (var2 <= (double) 0.0F) { + var2 = 0.001; + } + + int var5 = (int) Math.floor((double) (System.currentTimeMillis() & 16383L) / var2) % var1.length; + + for (int var6 = 0; var6 < var0.length(); ++var6) { + char var7 = var0.charAt(var6); + var4.append(var1[(var1.length + var6 - var5) % var1.length].toString()); + var4.append(var7); + } + + return var4.toString(); + } +} diff --git a/src/main/java/net/ptcrys/breakdown/utils/TickableSubscription.java b/src/main/java/net/ptcrys/breakdown/utils/TickableSubscription.java new file mode 100644 index 0000000..d89cccd --- /dev/null +++ b/src/main/java/net/ptcrys/breakdown/utils/TickableSubscription.java @@ -0,0 +1,25 @@ +package net.ptcrys.breakdown.utils; + +import lombok.Getter; + +public class TickableSubscription { + + private final Runnable runnable; + @Getter + private boolean stillSubscribed; + + public TickableSubscription(Runnable runnable) { + this.runnable = runnable; + this.stillSubscribed = true; + } + + public void run() { + if (stillSubscribed) { + runnable.run(); + } + } + + public void unsubscribe() { + stillSubscribed = false; + } +} diff --git a/src/main/java/net/phasetranscrystal/breacore/utils/TooltipHelper.java b/src/main/java/net/ptcrys/breakdown/utils/TooltipHelper.java similarity index 64% rename from src/main/java/net/phasetranscrystal/breacore/utils/TooltipHelper.java rename to src/main/java/net/ptcrys/breakdown/utils/TooltipHelper.java index 344db68..f6ccd7f 100644 --- a/src/main/java/net/phasetranscrystal/breacore/utils/TooltipHelper.java +++ b/src/main/java/net/ptcrys/breakdown/utils/TooltipHelper.java @@ -1,9 +1,7 @@ -package net.phasetranscrystal.breacore.utils; +package net.ptcrys.breakdown.utils; -import net.phasetranscrystal.brealib.util.GradientUtil; - -import net.phasetranscrystal.breacore.BreakdownCore; -import net.phasetranscrystal.breacore.api.BreaApi; +import net.ptcrys.breakdown.BreaLib; +import net.ptcrys.breakdown.api.BreaApi; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Style; @@ -19,36 +17,36 @@ public class TooltipHelper { public static final UnaryOperator