Skip to content

Commit b07d593

Browse files
committed
Update README.
1 parent 7f44d9a commit b07d593

File tree

1 file changed

+43
-10
lines changed

1 file changed

+43
-10
lines changed

README.md

Lines changed: 43 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,38 @@ A search aggregator for finding Minecraft: Java Edition server plugins on [Spigo
44

55
### Live Application: [https://mcpluginfinder.com](https://mcpluginfinder.com)
66

7+
## Elevator Pitch
8+
9+
As a Minecraft server owner, have you ever been annoyed when trying to find a plugin? Do I have to search for it on Spigot? Or maybe it's on Modrinth? Or Hangar? And on top of all that, the plugin developer might have only posted their latest version on some platforms but not others. What a mess.
10+
11+
MC Plugin Finder seeks to solve this problem by being the one-stop shop for searching all three of these platforms simultaneously, thanks to their public APIs. You can filter and sort your search results as desired, and you can compare versions of the same plugin on each platform to ensure that you are getting the latest version.
12+
713
## How it Works
814

9-
MC Plugin Finder has two main components: The **ingest** tool and the **web** app.
15+
MC Plugin Finder has two main components: The **ingest tool** and the **web app**.
16+
17+
The **ingest tool** is a CLI application that retrieves plugin project data from the [Spiget API](https://spiget.org/) (for Spigot), [Modrinth API](https://docs.modrinth.com/), and [Hangar API](https://hangar.papermc.io/api-docs). The tool runs daily to update the database with the latest plugin information. It also considers projects from different plugin repositories to be the same if they **share the same source code repository URL**.
1018

11-
The **ingest** tool is a CLI application that retrieves plugin project data from the [Spiget API](https://spiget.org/) (for Spigot), [Modrinth API](https://docs.modrinth.com/), and [Hangar API](https://hangar.papermc.io/api-docs). The tool runs once per day to update the database with the latest projects, and then creates a common database view for those projects, merging some projects together if they **share the same source code repository URL**.
19+
For example, suppose there was a project named "Foo" on Spigot and another project named "Bar" on Modrinth, and both projects have `https://github.com/example/asdf` as their source code repository URL. Both projects would be considered the same on MC Plugin Finder, even though their project names are different.
1220

13-
For example, suppose there was a project named "Foo" on Spigot and another project named "Bar" on Modrinth, and both projects have `https://github.com/username/repo` as their source code repository URL. Both projects would be considered the same on MC Plugin Finder, even though their project names are different.
21+
On the other hand, if there were two projects named "Baz" on Spigot and Modrinth each, but the plugin developer forgot to add a source code URL to one of these plugin repositories, then these projects would **not** be considered be the same on MC Plugin Finder, even though their project names match.
1422

15-
MC Plugin Finder will only recognize URLs from these source code repositories:
23+
MC Plugin Finder will only recognize URLs from these source code repository hosts:
1624
- [github.com](https://github.com)
1725
- [gitlab.com](https://gitlab.com)
1826
- [bitbucket.org](https://bitbucket.org)
1927
- [codeberg.org](https://codeberg.org)
2028

21-
The **web** app allows users to search the projects in the common database view.
29+
The **web app** allows users to search the database for plugins.
30+
31+
The MC Plugin Finder hosted infrastructure runs an instance of [imageproxy](https://github.com/willnorris/imageproxy) to cache plugin project icons from Modrinth and Hangar. This reduces the load on the Modrinth and Hangar CDNs, and provides improved image loading performance. Icon data for Spigot-hosted plugins are provided directly by the Spiget API and stored in the database, so no proxy or caching is needed in that case.
2232

2333
## Development Setup
2434

35+
### Rust
36+
37+
Install [rustup](https://www.rust-lang.org/tools/install) and the latest version of Rust.
38+
2539
Add the wasm32 target:
2640
- `rustup target add wasm32-unknown-unknown`
2741

@@ -30,11 +44,14 @@ Install Cargo extensions:
3044
- `cargo install cargo-nextest`
3145
- `cargo install cargo-leptos`
3246

33-
### Cornucopia
47+
Build the workspace:
48+
- `cargo build --workspace`
49+
50+
### PostgreSQL
3451

3552
Ensure that you have Docker or Podman installed on your system. For more details, see the [Cornucopia installation instructions](https://cornucopia-rs.netlify.app/book/introduction/installation).
3653

37-
Setup the initial schema on your database by running [schema.sql](https://github.com/Frumple/mc-plugin-finder/blob/main/schema.sql) on it.
54+
Setup the initial schema on your PostgreSQL database by running [schema.sql](https://github.com/Frumple/mc-plugin-finder/blob/main/schema.sql) on it.
3855

3956
Set the database settings in the .env file as desired:
4057
```
@@ -45,10 +62,24 @@ MCPF_DB_PORT=5432
4562
MCPF_DB_NAME=mc_plugin_finder
4663
```
4764

48-
Regenerate the cornucopia.rs file after making any changes to queries:
49-
- `cornucopia -d src/database/cornucopia.rs schema schema.sql`
65+
Run the ingest tool to populate the database, starting with these commands:
66+
- `ingest populate spigot authors`
67+
- `ingest populate spigot resources`
68+
- `ingest populate modrinth projects`
69+
- `ingest populate hangar projects`
70+
71+
Optionally, you may populate plugin versions as well (However, note that populating Spigot versions takes several hours):
72+
- `ingest populate spigot versions`
73+
- `ingest populate modrinth verisons`
74+
- `ingest populate hangar verisons`
75+
76+
Run the ingest tool again to refresh the common database view:
77+
- `ingest refresh`
5078

51-
### Run Commands
79+
### Commands
80+
81+
After making any changes to queries, regenerate your cornucopia.rs file:
82+
- `cornucopia -d src/database/cornucopia.rs schema schema.sql`
5283

5384
Run tests:
5485
- `cargo nextest run --workspace`
@@ -66,6 +97,8 @@ Run the web server:
6697

6798
## License
6899

100+
Copyright © 2025 Frumple
101+
69102
MC Plugin Finder is provided under the [GNU Affero General Public License 3.0](https://github.com/Frumple/mc-plugin-finder/blob/main/LICENSE).
70103

71104
MC Plugin Finder is not an official Minecraft service, and is not approved or associated with Mojang, Microsoft, SpigotMC, Modrinth, or PaperMC.

0 commit comments

Comments
 (0)