Setup
Prerequisites
- A web server with PHP 8.4 is used for current development verification.
- Required extensions: PDO, plus PDO-SQLITE or PDO-MYSQL for the selected database type.
- A CoreProtect database used by CoreProtect v23.2 or above.
- If using SQLite in real-time, the web server must be on the same machine as the Minecraft server.
CoreProtect v23.2 Database Support
The v23.2 lookup path expects these CoreProtect tables for full functionality:
- `co_block`
- `co_container`
- `co_item`
- `co_sign`
- `co_chat`
- `co_command`
- `co_session`
- `co_username_log`
- `co_user`
- `co_world`
- `co_material_map`
- `co_entity_map`
- optional `co_blockdata_map`
The table prefix is configurable in `config.php`; `co_` is the default.
The web interface detects schema capabilities per request and returns them in `lookup.php` JSON metadata. If a database lacks a new v23 table required by a selected action, the request returns a clear unsupported-schema error instead of a raw SQL failure.
Detected optional columns and tables include:
- `co_item`
- `co_sign`
- `co_blockdata_map`
- `co_block.meta`
- `co_block.blockdata`
- `co_container.metadata`
- `co_item.data`
- chat/command coordinate columns
Minimum MySQL/MariaDB permissions for lookup-only use:
```
sql
GRANT SELECT ON coreprotect_database.* TO 'lookup_user'@'web_host';
```
Use a least-privilege database user for production. The web interface does not need write permissions for lookups.
Download
- Option 1:`git clone`
- Option 2: Download
Configuration
Edit all the necessary configuration from `config.php`. All fields are
documented in the configuration file.
Example MySQL database entry:
```
php
'server' => [
'type' => 'mysql',
'host' => 'localhost:3306',
'database' => 'minecraft',
'username' => 'lookup_user',
'password' => 'password',
'flags' => '',
'prefix' => 'co_',
'preBlockName'=> true,
'mapLink' => '',
],
```
Important form safety settings:
```
php
'form' => [
'count' => 30, // default lookup limit
'moreCount' => 10, // default "load more" limit
'max' => 300, // maximum accepted query limit
'maxCoordinateVolume' => 5000000, // maximum x/y/z selection volume; 0 disables
'timeoutSeconds' => 20, // PHP and DB statement timeout hint; 0 disables
],
```
Oversized lookups return JSON errors such as `Query too large` or
`Query timed out`; they should not produce HTML PHP warning output in AJAX responses.
Security / Access Control
This CommunityCraft rework does not include built-in login/authentication.
Run it behind external protection when exposing it outside trusted networks.
Recommended options:
- reverse-proxy authentication
- VPN or private network only
- web-server IP allowlists
- latform-level SSO/access control
Use a read-only database account. Lookup-only access only needs `SELECT`.
Example SQLite database entry:
```
php
'server' => [
'type' => 'sqlite',
'path' => '/path/to/database.db',
'prefix' => 'co_',
'preBlockName'=> true,
'mapLink' => '',
],
```
Local PHP 8.4 Run
If PHP is available on your PATH, start the local development server with:
```
sh
php -v
php -S 127.0.0.1:18080
```
Open `
http://127.0.0.1:18080/index.php`.
If `pdo_mysql` is not loaded, enable it in your PHP configuration before using
MySQL/MariaDB. You can confirm loaded modules with:
```
sh
php -m
```