7 Commits
1.0.9 ... 1.1.0

Author SHA1 Message Date
3f3d1c7d37 readme.md aktualisiert 2026-01-11 21:36:30 +00:00
4e2e831a1a readme.md aktualisiert 2026-01-11 21:35:16 +00:00
fec84fd8d7 src/main/java/de/viper/survivalplus/listeners/ToolUpgradeListener.java aktualisiert 2025-09-28 09:00:05 +00:00
39cf666bf4 readme.md aktualisiert 2025-08-27 18:58:51 +00:00
24c551fb5c readme.md aktualisiert 2025-08-27 18:48:33 +00:00
790980a5ac readme.md aktualisiert 2025-08-27 18:24:02 +00:00
779f031fdc readme.md aktualisiert 2025-08-27 18:18:29 +00:00
2 changed files with 154 additions and 80 deletions

192
readme.md
View File

@@ -1,87 +1,149 @@
# SurvivalPlus
![Minecraft Plugin](https://img.shields.io/badge/Minecraft-Plugin-green)
![Version](https://img.shields.io/badge/version-1.0.5-blue)
![Version](https://img.shields.io/badge/version-1.0.9-blue)
![Author](https://img.shields.io/badge/author-M_Viper-yellow)
**SurvivalPlus** ist ein Minecraft-Plugin zur Verbesserung des Survival-Erlebnisses.
Es bietet Homes, Teleportation, Inventarverwaltung, Freundeslisten, Shops, Loot-Kisten und weitere Komfortbefehle.
Es bietet Homes, Teleports, Inventar-/Enderchest-Verwaltung, Claims (Anti-Grief), Freundeslisten, Shop-System, Loot-Kisten, Tablist-Anpassungen und viele Komfort-Utilities.
---
## ⚡ Features
## ⚡ Highlights / Features
- **Homes & Warps** Homepunkte setzen, löschen, Teleportation, persönliche Warps
- **Teleportation & Spielerinteraktion** `/tp`, `/tphere`, `/tpa`, `/back`, `/spawn`
- **Inventar & Endertruhe** Öffnen eigener und fremder Inventare/Endertruhen
- **Spielmodus & Zeit** `/gm`, `/day`, `/night`
- **Freundes- und Kommunikationssystem** `/friend`, `/block`, `/blocklist`
- **Koordinaten teilen** `/sp share`, `/sp shareconfirm`, `/sp sharecancel`
- **Items & Werkzeuge** `/ir`, `/workbench`, `/anvil`, `/kit`
- **Server-Management** `/clearchat`, `/clearitems`, `/closedoors`, `/lock`, `/shop`
- **Statistiken & Reporting** `/stats`, `/report`, `/showreport`, `/clearreport`
- **Fun & Challenges** `/sit`, `/startchallenge`, `/trade`, `/lootchests`
- Homes & Warps (persönliche Warps, Home-Management)
- Teleportation & Anfrage-System (`/tpa`, `/tpaccept`, `/tpdeny`)
- Claim-System zur Land-Sicherung (trust/untrust, create/delete, info, list)
- Inventar- & Enderchest-Verwaltung (öffnen von Fremd-Inventaren, Admin-Tools)
- Shop-System & Lootchests (Verwaltung, Teleport zu Lootchests)
- CommandBlocker & Server-Utilities (clearchat, clearitems, closedoors, lock)
- Debug-Logging (optionale `debug-logging` in config, Debug/debug.log & Debug/console.log)
- Tablist (animiert / konfigurierbar über `tablist.yml`)
- bStats Unterstützung (Statistiken)
---
## 🛠 Commands Übersicht
## 🛠 Komplette Befehlsübersicht
> Hinweis: In `plugin.yml` sind alle Commands definiert — hier die Übersicht gruppiert nach Kategorie.
### Allgemein / Haupt
| Befehl | Nutzung | Permission |
|---|---:|:---|
| `/sp` | Hauptbefehl (CommandBlocker, reload, info, share, help u.v.m.) | `survivalplus.sp` |
| `/help` (alias über `/sp help`) | Hilfe / Übersicht | `survivalplus.sp` |
### Item & Utility
| Befehl | Usage | Permission |
|---|---:|:---|
| `/ir <neuer_name>` | Item umbenennen (Item in Hand) | `survivalplus.itemrename` |
| `/workbench` | Öffnet Werkbank-GUI | `survivalplus.workbench` |
| `/anvil` | Öffnet Amboss-GUI | `survivalplus.anvil` |
| `/trash` | Öffnet Mülleimer | `survivalplus.trash` |
| `/showarmorstands` | Alle (debug) ArmorStands sichtbar machen | `survivalplus.showarmorstands` |
| `/cleardebugarmorstands` | Entfernt Debug-ArmorStands | `survivalplus.cleardebugarmorstands` |
| `/leashcount` | Anzahl geleinter Tiere anzeigen | `survivalplus.leashcount` |
| `/nick <Name>` | Nickname ändern (Farben/Hex möglich) | `survivalplus.nick` |
| `/nick off` | Entfernt den Nickname wieder (Zurücksetzen zum echten Namen). | `survivalplus.nick` |
| `/nick reset` | Alias für /nick off | `survivalplus.nick` |
| `/nick remove` | Alias für /nick off | `survivalplus.nick` |
### Teleportation
| Befehl | Nutzung | Permission |
|--------|---------|------------|
| `/tp` | Teleport zu Spieler | `survivalplus.tp` |
| `/tphere` | Spieler zu dir teleportieren | `survivalplus.tphere` |
| `/tpa` | Teleportanfrage senden | `survivalplus.tpa` |
| Befehl | Usage | Permission |
|---|---:|:---|
| `/tp <Spieler>` | Teleport zu Spieler | `survivalplus.tp` |
| `/tphere <Spieler>` | Teleportiert Spieler zu dir | `survivalplus.tphere` |
| `/tpa <Spieler>` | Teleportanfrage senden | `survivalplus.tpa` |
| `/tpaccept` | Teleportanfrage annehmen | `survivalplus.tpaccept` |
| `/tpdeny` | Teleportanfrage ablehnen | `survivalplus.tpdeny` |
| `/back` | Zum letzten Todespunkt | `survivalplus.back` |
| `/spawn` | Weltspawn teleport | `survivalplus.spawn` |
| `/back` | Zum letzten Todespunkt teleportieren | `survivalplus.back` |
| `/spawn` | Teleport zum Weltspawn | `survivalplus.spawn` |
| `/setspawn` | Setzt Server-Spawn | `survivalplus.setspawn` |
| `/setworldspawn` | Setzt Weltspawn (aktuelle Welt) | `survivalplus.setworldspawn` |
### Homes & Warps
| Befehl | Nutzung | Permission |
|--------|---------|------------|
| `/sethome <name>` | Home setzen | `survivalplus.homes.set` |
| `/delhome <name>` | Home löschen | `survivalplus.homes.delete` |
| Befehl | Usage | Permission |
|---|---:|:---|
| `/sethome <name>` | Setzt Home | `survivalplus.homes.set` |
| `/delhome <name>` | Löscht Home | `survivalplus.homes.delete` |
| `/home <name>` | Teleport zu Home | `survivalplus.homes` |
| `/homelist` | Liste aller Homes | `survivalplus.homes.list` |
| `/setwarp <name>` | Persönlichen Warp setzen | `survivalplus.setwarp` |
| `/homelist` | GUI mit Homes öffnen | `survivalplus.homes.list` |
| `/setwarp <name>` | Persönlichen Warp setzen (Item in Hand) | `survivalplus.setwarp` |
| `/delwarp <name>` | Persönlichen Warp löschen | `survivalplus.delwarp` |
| `/warps` | GUI aller Warps öffnen | `survivalplus.warps` |
### Spieler & Kommunikation
| Befehl | Nutzung | Permission |
|--------|---------|------------|
| `/friend` | Freundesliste verwalten | `survivalplus.friend` |
| `/block` | Spieler blockieren | `survivalplus.block` |
| `/unblock` | Blockierung aufheben | `survivalplus.unlock` |
| `/blocklist` | Liste blockierter Spieler | `survivalplus.blocklist` |
### Claim (Anti-Grief)
| Befehl | Usage | Permission |
|---|---:|:---|
| `/claim [unclaim / trust <player> / untrust <player>]` | Claim-Management (Trust/Untrust/Unclaim) | `survivalplus.claim.use` |
| `/claim create <name>` (falls implementiert) | Neues Claim anlegen | `survivalplus.claim.use` |
| `/claim delete <name>` (falls implementiert) | Claim löschen | `survivalplus.claim.use` |
| `/claim addmember <player>` | Spieler zum Claim hinzufügen | `survivalplus.claim.trust` |
| `/claim removemember <player>` | Spieler entfernen | `survivalplus.claim.trust` |
| `/claim info` | Claim-Informationen anzeigen | `survivalplus.claim.use` |
| `/claim list` | Eigene Claims auflisten | `survivalplus.claim.use` |
### Items & Werkzeuge
| Befehl | Nutzung | Permission |
|--------|---------|------------|
| `/ir <neuer_name>` | Item umbenennen | `survivalplus.itemrename` |
| `/workbench` | Werkbank GUI öffnen | `survivalplus.workbench` |
| `/anvil` | Amboss GUI öffnen | `survivalplus.anvil` |
| `/kit` | Starterkit erhalten | `survivalplus.kit` |
| `/leashcount` | Anzahl geleinter Tiere | `survivalplus.leashcount` |
| `/nick <Name>` | Nickname ändern | `survivalplus.nick` |
### Server-Management
| Befehl | Nutzung | Permission |
|--------|---------|------------|
### CommandBlocker / Server-Management
| Befehl | Usage | Permission |
|---|---:|:---|
| `/sp cb add <cmd>` | Befehl zur Blockliste hinzufügen | `survivalplus.commandblocker.add` |
| `/sp cb remove <cmd>` | Befehl entfernen | `survivalplus.commandblocker.remove` |
| `/sp cb list` | Blockierte Befehle anzeigen | `survivalplus.commandblocker.list` |
| `/clearchat` | Chat löschen | `survivalplus.clearchat` |
| `/clearitems` | Items entfernen | `survivalplus.clearitems` |
| `/closedoors <radius>` | Türen schließen | `survivalplus.closedoors` |
| `/lock` | Container schützen | `survivalplus.lock` |
| `/shop add <item> <preis> <bestand>` | Server-Shop verwalten | `survivalplus.shop` |
| `/clearitems` | Items aufsammeln/entfernen | `survivalplus.clearitems` |
| `/closedoors <radius>` | Türen in Radius schließen | `survivalplus.closedoors` |
| `/splock lock /unlock/friendadd/friendremove [player]` | Kisten/Türen sperren / freigeben | `survivalplus.lock` |
### Statistiken & Reporting
| Befehl | Nutzung | Permission |
|--------|---------|------------|
| `/stats` | Spielerstatistiken | `survivalplus.stats` |
| `/report <spieler> [grund]` | Spieler melden | `survivalplus.report` |
| `/showreport <spieler>` | Reports anzeigen | `survivalplus.report.show` |
| `/clearreport <spieler>` | Reports löschen | `survivalplus.report.clear` |
### Shop, Loot & Trade
| Befehl | Usage | Permission |
|---|---:|:---|
| `/shop add <item> <basispreis> <lagerbestand>` | Shop verwalten | `survivalplus.shop` |
| `/lootchests` | Listet Loot-Kisten auf (Admins teleportieren) | `survivalplus.lootchests` |
| `/tploot <welt> <x> <y> <z>` | Teleportiere zu Loot-Kiste (Admin) | `survivalplus.lootchests` |
| `/trade <Spieler>` | Startet Handel | `survivalplus.trade` |
| `/tradeaccept <Spieler>` | Akzeptiert Handel | `survivalplus.tradeaccept` |
### Zeit, Gamemode & Admin
| Befehl | Usage | Permission |
|---|---:|:---|
| `/day` | Setzt Zeit auf Tag | `survivalplus.day` |
| `/night` | Setzt Zeit auf Nacht | `survivalplus.night` |
| `/gm <modus> [spieler]` (alias `gamemode`) | Spielmodus ändern | `survivalplus.gamemode` |
| `/heal [spieler]` | Heilt Spieler (oder andere) | `survivalplus.heal`, `survivalplus.heal.others` |
### Freundes-, Block- & Report-System
| Befehl | Usage | Permission |
|---|---:|:---|
| `/friend [add/accept/deny/list/del/tp] [Spieler]` | Freundschaften verwalten | `survivalplus.friend` |
| `/block <Spieler>` | Spieler blockieren | `survivalplus.block` |
| `/unblock <Spieler>` | Unblock | `survivalplus.unblock` |
| `/blocklist` | Blockierte Spieler anzeigen | `survivalplus.blocklist` |
| `/report <Spieler> [Grund]` | Spieler melden | `survivalplus.report` |
| `/showreport <Spieler>` | Reports anzeigen | `survivalplus.report.show` |
| `/clearreport <Spieler>` | Reports löschen | `survivalplus.report.clear` |
### Sonstiges
| Befehl | Usage | Permission |
|---|---:|:---|
| `/stats` | Spielerstatistiken anzeigen | `survivalplus.stats` |
| `/kit` | Starterkit erhalten | `survivalplus.kit` |
| `/startchallenge <name>` | Fun-Challenge starten | `survivalplus.startchallenge` |
| `/lootchests` | Übersicht über Lootkisten | `survivalplus.lootchests` |
---
## 🔐 Permissions (Kurzüberblick)
Vollständige Permission-Deklaration findest du in `plugin.yml`.
Wichtige Permissions:
- `survivalplus.*` — Vollzugriff (OP)
- `survivalplus.sp` — Zugriff auf `/sp` (Hauptbefehl)
- `survivalplus.homes.*` — Homes verwalten
- `survivalplus.claim.use` / `survivalplus.claim.trust` — Claim-Management & Trust
- `survivalplus.shop` — Shopverwaltung
- `survivalplus.lootchests` — Lootchest-Adminrechte
- `survivalplus.notify` — Admin-Benachrichtigung bei Besitz von Command/Structure-Blocks
- uvm. — siehe `plugin.yml` für die vollständige Liste
---
@@ -94,13 +156,17 @@ Es bietet Homes, Teleportation, Inventarverwaltung, Freundeslisten, Shops, Loot-
---
## 🔐 Permissions
## 🐞 Debug & Fehlerberichte
- **Vollzugriff:** `survivalplus.*` (OP)
- Alle Befehle können über LuckPerms angepasst werden.
- Aktiviere in `config.yml` `debug-logging: true` wenn du Probleme hast.
- `Debug/debug.log` — enthält Plugin-Fehler/Stacktraces (nur wenn aktiviert).
- `Debug/console.log` — dupliziert den Konsolenoutput (komplette Ausgabe), damit du diesen als Datei an Entwickler schicken kannst.
---
## 📜 Lizenz & Kontakt
Dieses Projekt ist frei für den privaten Gebrauch. Für Fragen, Bug-Reports oder Feature-Wünsche: **M_Viper** (Repo-Owner / Gitea).
---
## 📜 Lizenz
Dieses Projekt ist frei für den privaten Gebrauch. Kontakt: **M_Viper**

View File

@@ -56,19 +56,12 @@ public class ToolUpgradeListener implements Listener {
if (!(event.getInventory() instanceof CraftingInventory)) return;
CraftingInventory inv = (CraftingInventory) event.getInventory();
ItemStack[] matrix = inv.getMatrix();
if (matrix.length < 9) {
inv.setResult(null);
return;
}
if (matrix.length < 9) return; // Kein 3x3-Crafting-Tisch
ItemStack center = matrix[4];
if (center == null || center.getType() == Material.AIR) {
inv.setResult(null);
return;
}
if (!isUpgradeableTool(center.getType()) || isWoodTool(center.getType())) {
inv.setResult(null);
return;
// Nur eingreifen, wenn ein Werkzeug in der Mitte liegt
if (center == null || center.getType() == Material.AIR || !isUpgradeableTool(center.getType()) || isWoodTool(center.getType())) {
return; // Standard-Rezepte nicht beeinflussen
}
int currentLevel = getToolLevel(center);
@@ -83,7 +76,7 @@ public class ToolUpgradeListener implements Listener {
return;
}
// Prüfen ob alle Slots (außer Mitte) mind. 2 Stück vom richtigen Material haben
// Prüfen, ob alle Slots (außer Mitte) mind. 2 Stück vom richtigen Material haben
for (int i = 0; i < matrix.length; i++) {
if (i == 4) continue;
if (matrix[i] == null || matrix[i].getType() != requiredMat || matrix[i].getAmount() < REQUIRED_AMOUNT) {
@@ -106,20 +99,33 @@ public class ToolUpgradeListener implements Listener {
ItemStack[] matrix = inv.getMatrix();
ItemStack center = matrix[4];
if (center == null || !isUpgradeableTool(center.getType()) || isWoodTool(center.getType())) return;
if (center == null || !isUpgradeableTool(center.getType()) || isWoodTool(center.getType())) {
plugin.getLogger().fine("Kein Upgrade-Werkzeug in der Mitte: " + (center != null ? center.getType() : "null"));
return;
}
int currentLevel = getToolLevel(center);
if (currentLevel >= maxLevel || currentLevel >= getMaxAllowedLevel(center.getType())) return;
if (currentLevel >= maxLevel || currentLevel >= getMaxAllowedLevel(center.getType())) {
plugin.getLogger().fine("Maximales Level erreicht für Werkzeug: " + center.getType());
return;
}
Material requiredMat = levelMaterials.get(currentLevel + 1);
if (requiredMat == null) return;
if (requiredMat == null) {
plugin.getLogger().fine("Kein Material für Level " + (currentLevel + 1));
return;
}
for (int i = 0; i < matrix.length; i++) {
if (i == 4) continue;
if (matrix[i] == null || matrix[i].getType() != requiredMat || matrix[i].getAmount() < REQUIRED_AMOUNT) return;
if (matrix[i] == null || matrix[i].getType() != requiredMat || matrix[i].getAmount() < REQUIRED_AMOUNT) {
plugin.getLogger().fine("Ungültiges Material in Slot " + i + ": " + (matrix[i] != null ? matrix[i].getType() : "null"));
return;
}
}
// Gültig: Event abbrechen, Upgrade geben, Items verbrauchen
plugin.getLogger().info("Werkzeug-Upgrade für " + player.getName() + ": " + center.getType() + " auf Level " + (currentLevel + 1));
event.setCancelled(true);
ItemStack result = createUpgradedTool(center, currentLevel + 1);
@@ -215,7 +221,9 @@ public class ToolUpgradeListener implements Listener {
n.endsWith("_SWORD");
}
private boolean isWoodTool(Material mat) { return mat.name().startsWith("WOODEN"); }
private boolean isWoodTool(Material mat) {
return mat.name().startsWith("WOODEN");
}
private int getMaxAllowedLevel(Material mat) {
String s = mat.name();