This commit is contained in:
2025-07-28 20:52:54 +02:00
commit fa1f4190ca
27 changed files with 599 additions and 0 deletions

104
README.md Normal file
View File

@@ -0,0 +1,104 @@
# 🗺️ Regions Lightweight Region Library for Bukkit
**Regions** is a lightweight and simple **Java library** for Bukkit/Spigot plugins. It helps you define 3D rectangular regions and automatically detects when players **enter or leave** them.
Use it as a dependency in your own plugins to easily add region logic.
---
## ✨ Features
- ✅ Define rectangular cuboid regions with two `Location`s
- 🚶 Detect when a player **enters** or **exits** a region
- 🧰 Easy API to add, remove, and query regions
- 🔄 Registerable event listeners
- 🧩 Built for plugin developers plug and play
---
## 🔧 Getting Started
### 1. Create a Region
First, create two `Location` points and then create a region between them:
```java
Location loc1 = new Location(Bukkit.getWorld("<World Name>"), x1, y1, z1);
Location loc2 = new Location(Bukkit.getWorld("<World Name>"), x2, y2, z2);
RegionData region = new RegionData("<Region Name>", loc1, loc2);
Regions.addRegion(region);
```
### 2. Register the Event Listener
Call this once (e.g. in your plugin's `onEnable`) to enable automatic region tracking:
```java
public void onEnable() {
Regions.registerListener(this); // 'this' is your plugin instance
}
```
---
## 📡 Region Events
These are custom events that you can listen for:
```java
@EventHandler
public void onRegionEnter(PlayerEnterRegionEvent event) {
Player player = event.getPlayer();
RegionData region = event.getRegion();
player.sendMessage("Entered region: " + region.getName());
}
@EventHandler
public void onRegionExit(PlayerExitRegionEvent event) {
Player player = event.getPlayer();
RegionData region = event.getRegion();
player.sendMessage("Left region: " + region.getName());
}
```
---
## 🧪 API Reference
```java
Regions.addRegion(RegionData region); // Add a region
Regions.deleteRegion(RegionData region); // Remove a region
Regions.getRegions(); // Get all regions
Regions.getRegionsByName("Spawn"); // Get regions by name
Regions.getRegionInLocation(Location loc); // First region that contains loc
Regions.getRegionsInLocation(Location loc); // All regions that contain loc
```
---
## 📦 Integration in Your Plugin
Simply include the compiled `Regions-1.0.jar` as a library in your plugin project. Then:
1. Register the movement listener:
```java
Regions.registerListener(this);
```
2. Add or query regions as needed.
3. Listen for `PlayerEnterRegionEvent` and `PlayerExitRegionEvent`.
---
## 🧑‍💻 Author
Created by **Jernej T.**
Pull requests and contributions are welcome!
---
## 📄 License
MIT do whatever you want, just give credit.