11 Commits

Author SHA1 Message Date
D.L.
3cb145e1d6 Update preview-release.yml 2025-10-14 17:55:34 +02:00
D.L.
cdf73058e6 Create release-on-merge.yml 2025-10-14 17:50:47 +02:00
D.L.
eb5ec93be5 Create preview-release.yml 2025-10-14 17:50:23 +02:00
D.L.
e90fa7fc44 Delete .github/workflows/gradle-publish.yml 2025-10-14 17:50:06 +02:00
D.L.
f19def6dc6 Update LICENSE 2025-09-01 13:37:43 +02:00
D.L.
427d71e2b8 Add files via upload 2025-09-01 08:00:16 +02:00
D.L.
feeae861ea Update index.html 2025-09-01 07:59:51 +02:00
D.L.
8c23b627c8 Update index.html 2025-09-01 07:56:28 +02:00
D.L.
54dc959395 Update index.html 2025-09-01 07:54:15 +02:00
D.L.
843d42b0d6 Create static.yml 2025-09-01 07:50:17 +02:00
D.L.
5b06b106da Create index.html 2025-09-01 07:48:45 +02:00
7 changed files with 664 additions and 45 deletions

View File

@@ -1,44 +0,0 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
# This workflow will build a package using Gradle and then publish it to GitHub packages when a release is created
# For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#Publishing-using-gradle
name: Gradle Package
on:
release:
types: [created]
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
server-id: github # Value of the distributionManagement/repository/id field of the pom.xml
settings-path: ${{ github.workspace }} # location for the settings.xml file
- name: Setup Gradle
uses: gradle/actions/setup-gradle@af1da67850ed9a4cedd57bfd976089dd991e2582 # v4.0.0
- name: Build with Gradle
run: ./gradlew build
# The USERNAME and TOKEN need to correspond to the credentials environment variables used in
# the publishing section of your build.gradle
- name: Publish to GitHub Packages
run: ./gradlew publish
env:
USERNAME: ${{ github.actor }}
TOKEN: ${{ secrets.GITHUB_TOKEN }}

46
.github/workflows/preview-release.yml vendored Normal file
View File

@@ -0,0 +1,46 @@
name: Preview Release
on:
push:
branches:
- dev
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
- run: chmod +x gradlew
- run: ./gradlew clean build -x test
# Tag erstellen, bevor Release angelegt wird
- name: Create Preview Tag
run: |
git config user.name "github-actions"
git config user.email "github-actions@users.noreply.github.com"
git tag preview-${{ github.run_number }}
git push origin preview-${{ github.run_number }}
- name: Create Preview Release
uses: softprops/action-gh-release@v2
with:
tag_name: preview-${{ github.run_number }}
name: "Preview Build #${{ github.run_number }}"
prerelease: true
files: build/libs/*.jar
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Cleanup old Preview Releases
run: |
gh release list --limit 100 --repo $GITHUB_REPOSITORY \
| grep preview \
| sort -rk2 \
| awk 'NR>10 {print $1}' \
| xargs -I {} gh release delete {} --repo $GITHUB_REPOSITORY --yes
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

56
.github/workflows/release-on-merge.yml vendored Normal file
View File

@@ -0,0 +1,56 @@
name: Release on Merge to Master
on:
push:
branches:
- master # oder "main", je nach Repo
paths-ignore:
- '**.md' # ignoriert reine Dokumentationsänderungen
- '.github/**' # ignoriert Änderungen an Actions selbst
jobs:
build-and-release:
runs-on: ubuntu-latest
steps:
# 🧾 Schritt 1: Repository auschecken
- name: Checkout code
uses: actions/checkout@v4
# ☕ Schritt 2: Java einrichten
- name: Set up Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '21'
# 🛠️ Schritt 3: Gradle Wrapper Berechtigungen setzen (unter Linux erforderlich)
- name: Grant execute permission for Gradle Wrapper
run: chmod +x gradlew
# 🧱 Schritt 4: Plugin bauen
- name: Build with Gradle
run: ./gradlew clean build -x test
# 🏷️ Schritt 5: Version aus Gradle ermitteln
- name: Get version
id: get_version
run: |
VERSION=$(./gradlew properties -q | grep "^version:" | awk '{print $2}')
echo "version=$VERSION" >> $GITHUB_OUTPUT
# 🚀 Schritt 6: GitHub Release erstellen
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.get_version.outputs.version }}
name: "Release v${{ steps.get_version.outputs.version }}"
body: |
**v${{ steps.get_version.outputs.version }}**
- Commit: ${{ github.sha }}
- Branch: ${{ github.ref_name }}
- Version: v${{ steps.get_version.outputs.version }}
files: |
build/libs/*.jar
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

43
.github/workflows/static.yml vendored Normal file
View File

@@ -0,0 +1,43 @@
# Simple workflow for deploying static content to GitHub Pages
name: Deploy static content to Pages
on:
# Runs on pushes targeting the default branch
push:
branches: ["master"]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
# Single deploy job since we're just deploying
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
# Upload entire repository
path: './web'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4

View File

@@ -1,6 +1,6 @@
MIT License
Copyright (c) 2025 Deutschich/User404
Copyright (c) 2025 Deutschich aka User404
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

BIN
web/icon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

518
web/index.html Normal file
View File

@@ -0,0 +1,518 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" href=icon.ico>
<title>InfiniteHomes - Minecraft Plugin</title>
<style>
:root {
--primary-color: #4CAF50;
--secondary-color: #2E7D32;
--accent-color: #8BC34A;
--dark-color: #1B5E20;
--light-color: #F1F8E9;
--text-dark: #212121;
--text-light: #757575;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
body {
background-color: #f5f5f5;
color: var(--text-dark);
line-height: 1.6;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 0 20px;
}
header {
background: linear-gradient(135deg, var(--primary-color), var(--dark-color));
color: white;
padding: 1rem 0;
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}
nav {
display: flex;
justify-content: space-between;
align-items: center;
}
.logo {
font-size: 1.8rem;
font-weight: bold;
}
.nav-links {
display: flex;
list-style: none;
}
.nav-links li {
margin-left: 1.5rem;
}
.nav-links a {
color: white;
text-decoration: none;
transition: opacity 0.3s;
}
.nav-links a:hover {
opacity: 0.8;
}
.hero {
background: url('https://via.placeholder.com/1500x500') no-repeat center center/cover;
color: white;
padding: 4rem 0;
text-align: center;
}
.hero-content {
max-width: 800px;
margin: 0 auto;
}
.hero h1 {
font-size: 3rem;
margin-bottom: 1rem;
text-shadow: 2px 2px 4px rgba(0,0,0,0.5);
}
.hero p {
font-size: 1.2rem;
margin-bottom: 2rem;
text-shadow: 1px 1px 2px rgba(0,0,0,0.5);
}
.btn {
display: inline-block;
background: var(--accent-color);
color: white;
padding: 0.8rem 1.5rem;
border: none;
border-radius: 4px;
text-decoration: none;
font-size: 1rem;
cursor: pointer;
transition: background 0.3s;
}
.btn:hover {
background: var(--secondary-color);
}
section {
padding: 4rem 0;
}
.section-title {
text-align: center;
margin-bottom: 3rem;
color: var(--dark-color);
}
.features {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
margin-bottom: 3rem;
}
.feature-card {
background: white;
border-radius: 8px;
padding: 1.5rem;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
transition: transform 0.3s;
}
.feature-card:hover {
transform: translateY(-5px);
}
.feature-card h3 {
color: var(--primary-color);
margin-bottom: 1rem;
}
.commands {
background-color: var(--light-color);
}
.command-list {
background: white;
border-radius: 8px;
padding: 2rem;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
}
.command-item {
margin-bottom: 1.5rem;
padding-bottom: 1.5rem;
border-bottom: 1px solid #eee;
}
.command-item:last-child {
border-bottom: none;
margin-bottom: 0;
padding-bottom: 0;
}
.command-name {
font-weight: bold;
color: var(--secondary-color);
}
.command-desc {
margin-top: 0.5rem;
color: var(--text-light);
}
.download-platforms {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 2rem;
margin-top: 2rem;
}
.platform-card {
background: white;
border-radius: 8px;
padding: 1.5rem;
text-align: center;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
transition: transform 0.3s;
}
.platform-card:hover {
transform: translateY(-5px);
}
.platform-logo {
font-size: 2rem;
margin-bottom: 1rem;
color: var(--primary-color);
}
.screenshot-gallery {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 1.5rem;
}
.screenshot-item {
border-radius: 8px;
overflow: hidden;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
}
.screenshot-item img {
width: 100%;
height: 200px;
object-fit: cover;
transition: transform 0.3s;
}
.screenshot-item:hover img {
transform: scale(1.05);
}
.faq-item {
margin-bottom: 1.5rem;
background: white;
border-radius: 8px;
padding: 1.5rem;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
}
.faq-question {
font-weight: bold;
color: var(--primary-color);
margin-bottom: 0.5rem;
}
footer {
background: var(--dark-color);
color: white;
padding: 2rem 0;
text-align: center;
}
.footer-content {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 2rem;
text-align: left;
}
.footer-links {
list-style: none;
}
.footer-links li {
margin-bottom: 0.5rem;
}
.footer-links a {
color: var(--light-color);
text-decoration: none;
transition: color 0.3s;
}
.footer-links a:hover {
color: var(--accent-color);
}
.copyright {
margin-top: 2rem;
padding-top: 1rem;
border-top: 1px solid rgba(255,255,255,0.1);
}
@media (max-width: 768px) {
.nav-links {
flex-direction: column;
align-items: flex-end;
}
.nav-links li {
margin: 0.5rem 0;
}
.hero h1 {
font-size: 2rem;
}
}
</style>
</head>
<body>
<header>
<div class="container">
<nav>
<div class="logo">InfiniteHomes</div>
<ul class="nav-links">
<li><a href="#features">Features</a></li>
<li><a href="#commands">Commands</a></li>
<li><a href="#download">Download</a></li>
<li><a href="#screenshots">Screenshots</a></li>
<li><a href="#faq">FAQ</a></li>
</ul>
</nav>
</div>
</header>
<section class="hero">
<div class="container">
<div class="hero-content">
<h1>InfiniteHomes Minecraft Plugin</h1>
<p>Unbegrenzte oder kontrollierbare Homes für deine Spieler! Leichtgewichtig, einfach zu bedienen und perfekt für jeden Survival- oder Freebuild-Server.</p>
<a href="#download" class="btn">Jetzt herunterladen</a>
</div>
</div>
</section>
<section id="features">
<div class="container">
<h2 class="section-title">Plugin-Features</h2>
<div class="features">
<div class="feature-card">
<h3>Unbegrenzte Homes</h3>
<p>Spieler können standardmäßig so viele Homes setzen, wie sie möchten - oder du als Serverbetreiber legst fest, wie viele Homes erlaubt sind.</p>
</div>
<div class="feature-card">
<h3>Einfache Konfiguration</h3>
<p>Keine Datenbank erforderlich! Einfach installieren und loslegen. Perfekt für kleine und große Server.</p>
</div>
<div class="feature-card">
<h3>Multilingual Support</h3>
<p>Unterstützung für mehrere Sprachen durch benutzerdefinierte Textdateien. Einfache Anpassung aller Plugin-Nachrichten.</p>
</div>
<div class="feature-card">
<h3>Cooldown-System</h3>
<p>Konfigurierbare Cooldowns zwischen Teleportationen, um Missbrauch zu verhindern.</p>
</div>
<div class="feature-card">
<h3>Leistungsoptimiert</h3>
<p>Leichtgewichtiges Plugin, das keine Serverressourcen überlastet und selbst auf großen Servern reibungslos läuft.</p>
</div>
<div class="feature-card">
<h3>Permissions</h3>
<p>Vollständige Integration mit Permission-Systemen, um differentierte Zugriffsrechte zu verwalten.</p>
</div>
</div>
</div>
</section>
<section id="commands" class="commands">
<div class="container">
<h2 class="section-title">Befehle</h2>
<div class="command-list">
<div class="command-item">
<div class="command-name">/sethome &lt;name&gt;</div>
<div class="command-desc">Setzt ein Home mit einem benutzerdefinierten Namen</div>
</div>
<div class="command-item">
<div class="command-name">/home &lt;name&gt;</div>
<div class="command-desc">Teleportiert dich zu deinem Home</div>
</div>
<div class="command-item">
<div class="command-name">/delhome &lt;name&gt;</div>
<div class="command-desc">Löscht ein Home</div>
</div>
<div class="command-item">
<div class="command-name">/homes</div>
<div class="command-desc">Listet alle Homes des aktuellen Benutzers auf</div>
</div>
<div class="command-item">
<div class="command-name">/homecooldown &lt;number/-1&gt;</div>
<div class="command-desc">Setzt den Cooldown zwischen Teleports (OP only, -1 = kein Cooldown)</div>
</div>
<div class="command-item">
<div class="command-name">/homecount &lt;number/-1&gt;</div>
<div class="command-desc">Setzt die maximale Anzahl von Homes (OP only, -1 = unbegrenzt)</div>
</div>
</div>
</div>
</section>
<section id="download">
<div class="container">
<h2 class="section-title">Download & Links</h2>
<p style="text-align: center; margin-bottom: 2rem;">Lade das InfiniteHomes Plugin von diesen Plattformen herunter:</p>
<div class="download-platforms">
<div class="platform-card">
<div class="platform-logo">🔗</div>
<h3>SpigotMC</h3>
<p>Download für Spigot und Bukkit Server</p>
<a href="https://www.spigotmc.org/resources/infinitehomes-unlimited-or-configurable-homes-system.128492/" class="btn">Zum Download</a>
</div>
<div class="platform-card">
<div class="platform-logo">🔗</div>
<h3>Modrinth</h3>
<p>Download auf Modrinth</p>
<a href="https://modrinth.com/plugin/infinitehomes" class="btn">Zum Download</a>
</div>
<div class="platform-card">
<div class="platform-logo">🔗</div>
<h3>GitHub</h3>
<p>Quellcode auf GitHub</p>
<a href="https://github.com/deutschich/InfiniteHomes" class="btn">Zum Repository</a>
</div>
<div class="platform-card">
<div class="platform-logo">🔗</div>
<h3>PaperMC Hangar</h3>
<p>Download auf PaperMC Hangar</p>
<a href="https://hangar.papermc.io/user404/InfiniteHomes" class="btn">Zum Download</a>
</div>
</div>
<div style="margin-top: 3rem; background: white; padding: 2rem; border-radius: 8px; box-shadow: 0 4px 6px rgba(0,0,0,0.1);">
<h3 style="color: var(--primary-color); margin-bottom: 1rem;">Installationsanleitung</h3>
<ol style="padding-left: 1.5rem;">
<li style="margin-bottom: 0.5rem;">Lade die neueste Version des Plugins von einer der Plattformen herunter</li>
<li style="margin-bottom: 0.5rem;">Füge die JAR-Datei in den Plugins-Ordner deines Minecraft-Servers ein</li>
<li style="margin-bottom: 0.5rem;">Starte den Server neu, um das Plugin zu laden</li>
<li style="margin-bottom: 0.5rem;">Passe die Konfiguration in der generierten Config-Datei nach Bedarf an</li>
<li>Füge benutzerdefinierte Übersetzungen im /plugins/Infinitehomes/translations/ Ordner hinzu</li>
</ol>
</div>
</div>
</section>
<section id="screenshots">
<div class="container">
<h2 class="section-title">Screenshots</h2>
<p style="text-align: center; margin-bottom: 2rem;"></p>
<div class="screenshot-gallery">
<div class="screenshot-item">
<img src="https://cdn.modrinth.com/data/XMQtfIwI/images/27341dc3d536c51f337d813445954fce1c953119.png" alt="InfiniteHomes Screenshot 1">
</div>
<div class="screenshot-item">
<img src="https://cdn.modrinth.com/data/XMQtfIwI/images/01d647600635f6ab25004a8e8d400634552945ef.png" alt="InfiniteHomes Screenshot 2">
</div>
<div class="screenshot-item">
<img src="https://cdn.modrinth.com/data/XMQtfIwI/images/b04c4ac935befe93bf8d4f5cc15d903764976ddf.png" alt="InfiniteHomes Screenshot 3">
</div>
</div>
</div>
</section>
<section id="faq" class="commands">
<div class="container">
<h2 class="section-title">Häufig gestellte Fragen</h2>
<div class="faq-item">
<div class="faq-question">Wie installiere ich das InfiniteHomes Plugin?</div>
<div class="faq-answer">Lade die JAR-Datei herunter, lege sie in den Plugins-Ordner deines Servers und starte den Server neu. Das Plugin generiert automatisch eine Config-Datei, die du nach deinen Wünschen anpassen kannst.</div>
</div>
<div class="faq-item">
<div class="faq-question">Unterstützt das Plugin mehrere Sprachen?</div>
<div class="faq-answer">Ja, das Plugin unterstützt mehrere Sprachen. Du kannst benutzerdefinierte Übersetzungen im /plugins/Infinitehomes/translations/ Ordner hinzufügen, z.B. texts_de.yml für Deutsch.</div>
</div>
<div class="faq-item">
<div class="faq-question">Kann ich die maximale Anzahl von Homes pro Spieler begrenzen?</div>
<div class="faq-answer">Ja, als Serveroperator kannst du mit /homecount &lt;number&gt; die maximale Anzahl von Homes festlegen. Verwende -1 für unbegrenzte Homes.</div>
</div>
<div class="faq-item">
<div class="faq-question">Ist eine Datenbank für dieses Plugin erforderlich?</div>
<div class="faq-answer">Nein, das Plugin ist leichtgewichtig und benötigt keine Datenbank. Alle Daten werden in lokalen Dateien gespeichert.</div>
</div>
<div class="faq-item">
<div class="faq-question">Kann ich Cooldowns für Teleports festlegen?</div>
<div class="faq-answer">Ja, du kannst mit /homecooldown &lt;seconds&gt; einen Cooldown zwischen Teleportationen festlegen. Verwende -1, um Cooldowns zu deaktivieren.</div>
</div>
</div>
</section>
<footer>
<div class="container">
<div class="footer-content">
<div>
<h3>InfiniteHomes</h3>
<p>Ein leistungsstarkes Home-Plugin für Minecraft-Server.</p>
</div>
<div>
<h3>Links</h3>
<ul class="footer-links">
<li><a href="#features">Features</a></li>
<li><a href="#commands">Commands</a></li>
<li><a href="#download">Download</a></li>
<li><a href="#screenshots">Screenshots</a></li>
<li><a href="#faq">FAQ</a></li>
</ul>
</div>
<div>
<h3>Externe Links</h3>
<ul class="footer-links">
<li><a href="https://www.spigotmc.org/resources/infinitehomes-unlimited-or-configurable-homes-system.128492/">SpigotMC</a></li>
<li><a href="https://modrinth.com/plugin/infinitehomes">Modrinth</a></li>
<li><a href="https://github.com/deutschich/InfiniteHomes">GitHub</a></li>
<li><a href="https://hangar.papermc.io/user404/InfiniteHomes">PaperMC Hangar</a></li>
</ul>
</div>
</div>
<div class="copyright">
<p>&copy; 2025 InfiniteHomes Plugin. Alle Rechte vorbehalten.</p>
</div>
</div>
</footer>
</body>
</html>